/* Paperoom — a print room for paper games.
   Neutral: copier paper with a faint cool cast (optical brighteners), never cream.
   Accents: risograph spot inks, used flat; offset shadows mimic misregistered second-colour passes. */
@font-face{font-family:'Bricolage Grotesque';src:url('/assets/fonts/bricolage-latin.woff2') format('woff2');font-weight:200 800;font-display:swap;unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Bricolage Grotesque';src:url('/assets/fonts/bricolage-latin-ext.woff2') format('woff2');font-weight:200 800;font-display:swap;unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:'Atkinson Hyperlegible Next';src:url('/assets/fonts/atkinson-latin.woff2') format('woff2');font-weight:200 800;font-display:swap;unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Atkinson Hyperlegible Next';src:url('/assets/fonts/atkinson-latin-ext.woff2') format('woff2');font-weight:200 800;font-display:swap;unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}
:root{
 --paper:#f4f6f5;--card:#fff;--ink:#16181d;--ink-2:#2a2e38;--muted:#4f5668;--rule:#d6dbd9;--rule-2:#aeb5ba;
 --blue:#0078bf;--pink:#ff48b0;--sun:#ffb511;--yellow:#ffe800;--teal:#00838a;--green:#00a95c;--red:#f15060;--orange:#ff6c2f;--federal:#3d5588;
 --blue-tint:#cfe6f4;--pink-tint:#ffd9ee;--sun-tint:#ffecb8;--teal-tint:#cbe7e8;--green-tint:#ccefdc;--red-tint:#fdd5d9;--orange-tint:#ffdccc;--federal-tint:#d7deeb;
 --mat:#0e5c5f;--radius:14px;--radius-s:8px;
 --display:'Bricolage Grotesque','Noto Sans Arabic','Noto Sans SC',system-ui,sans-serif;
 --body:'Atkinson Hyperlegible Next','Noto Sans Arabic','Noto Sans SC',system-ui,sans-serif;
 --sheet-font:'Atkinson Hyperlegible Next','Noto Sans Arabic','Noto Sans SC',sans-serif;--sans:var(--sheet-font);
 --gutter:clamp(16px,4vw,40px);--accent:var(--blue);--accent-tint:var(--blue-tint);
 --dots:radial-gradient(circle at 1px 1px,#16181d1f 1px,transparent 1.3px);
}
.ink-blue{--accent:var(--blue);--accent-tint:var(--blue-tint)}.ink-pink{--accent:var(--pink);--accent-tint:var(--pink-tint)}.ink-sun{--accent:var(--sun);--accent-tint:var(--sun-tint)}.ink-teal{--accent:var(--teal);--accent-tint:var(--teal-tint)}.ink-green{--accent:var(--green);--accent-tint:var(--green-tint)}.ink-red{--accent:var(--red);--accent-tint:var(--red-tint)}.ink-orange{--accent:var(--orange);--accent-tint:var(--orange-tint)}.ink-federal{--accent:var(--federal);--accent-tint:var(--federal-tint)}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-padding-top:84px}
@media screen{html{overflow-x:clip}}
body{margin:0;color:var(--ink);background:var(--paper);font:17px/1.6 var(--body);font-feature-settings:'kern';text-rendering:optimizeLegibility}
[hidden]{display:none!important}
img,svg{max-width:100%}
h1,h2,h3,h4,p,figure,ol,ul{margin:0}
ul,ol{padding:0}
h1,h2,h3,h4{font-family:var(--display);font-weight:780;line-height:1.08;letter-spacing:-.02em;font-optical-sizing:auto;text-wrap:balance}
h1{font-size:clamp(40px,6.2vw,84px);letter-spacing:-.035em}
h2{font-size:clamp(28px,3.6vw,46px)}
h3{font-size:22px;letter-spacing:-.01em}
p{max-width:68ch;text-wrap:pretty}
a{color:inherit;text-decoration-thickness:1.5px;text-underline-offset:4px}
a:hover{text-decoration-color:var(--pink)}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer}
button:disabled{cursor:not-allowed;opacity:.45}
:focus-visible{outline:3px solid var(--blue);outline-offset:3px;border-radius:4px}
.wrap{max-width:1280px;margin-inline:auto;padding-inline:var(--gutter)}
.skip{position:fixed;top:8px;inset-inline-start:8px;z-index:100;transform:translateY(-160%);background:var(--ink);color:#fff;padding:12px 16px;border-radius:8px}
.skip:focus{transform:none}
.kicker{font:700 15px/1.3 var(--body);color:var(--muted);letter-spacing:.01em}
.kicker a{text-decoration:none}
.kicker a:hover{text-decoration:underline}
.lede{font-size:clamp(18px,1.6vw,21px);line-height:1.55;color:var(--ink-2);max-width:60ch}
.text-link{font-weight:700;text-decoration:none;border-bottom:2px solid var(--pink);padding-bottom:1px}
.text-link:hover{border-color:var(--blue)}
.chip{display:inline-flex;align-items:center;min-height:28px;padding:2px 10px;border-radius:99px;background:#fff;border:1px solid var(--rule);font-size:13px;font-weight:650;line-height:1.3;white-space:nowrap}
.chips{display:flex;flex-wrap:wrap;gap:6px}
/* Buttons print a second colour slightly off register. */
.button{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:48px;padding:10px 20px;border:2px solid var(--ink);border-radius:10px;background:var(--ink);color:#fff;font-weight:750;font-size:16px;line-height:1.2;text-decoration:none;box-shadow:3px 3px 0 var(--pink);transition:transform .15s,box-shadow .15s,background .15s}
.button:hover{transform:translate(-1px,-1px);box-shadow:5px 5px 0 var(--pink);text-decoration:none}
.button:active{transform:translate(2px,2px);box-shadow:1px 1px 0 var(--pink)}
.button.secondary{background:#fff;color:var(--ink);box-shadow:3px 3px 0 var(--sun)}
.button.secondary:hover{box-shadow:5px 5px 0 var(--sun)}
.button:disabled{transform:none;box-shadow:none}
.button-row{display:flex;flex-wrap:wrap;gap:12px}
.quiet{background:none;border:0;padding:10px 0;min-height:44px;color:var(--muted);text-decoration:underline}
/* Header */
.site-head{position:sticky;top:0;z-index:30;background:color-mix(in srgb,var(--paper) 90%,transparent);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-bottom:1px solid var(--rule)}
.head-row{display:flex;align-items:center;gap:28px;min-height:70px}
.brand{display:inline-flex;align-items:center;gap:10px;font:800 27px/1 'Bricolage Grotesque',system-ui,sans-serif;letter-spacing:-.04em;text-decoration:none;color:var(--ink)}
.brand .logo{width:34px;height:34px;flex-shrink:0;color:var(--ink)}
.brand:hover .logo rect:nth-of-type(2){transform:translate(.6px,-.6px)}
.primary-nav{display:flex;gap:4px;margin-inline-start:auto}
.primary-nav a{display:flex;align-items:center;min-height:44px;padding:0 12px;border-radius:8px;font-weight:700;font-size:15.5px;text-decoration:none}
.primary-nav a:hover{background:#fff}
.primary-nav a[aria-current]{background:var(--ink);color:#fff}
.head-actions{display:flex;align-items:center;gap:8px}
.site-head details{position:relative}
.site-head summary{display:flex;align-items:center;gap:8px;min-height:44px;padding:0 12px;border-radius:8px;cursor:pointer;list-style:none;font-weight:700;font-size:15px;user-select:none}
.site-head summary::-webkit-details-marker{display:none}
.site-head summary:hover,.site-head details[open] summary{background:#fff}
.site-head summary svg{width:12px;height:12px;transition:transform .2s}
.lang-short{display:none;font-variant-caps:all-small-caps;letter-spacing:.04em}
.language-menu[open] summary svg{transform:rotate(180deg)}
.language-menu ul{position:absolute;inset-inline-end:0;top:calc(100% + 8px);list-style:none;margin:0;padding:8px;min-width:200px;background:#fff;border:2px solid var(--ink);border-radius:var(--radius);box-shadow:5px 5px 0 var(--sun);z-index:40}
.language-menu a{display:flex;align-items:center;min-height:44px;padding:0 12px;border-radius:8px;text-decoration:none;font-weight:650}
.language-menu a:hover{background:var(--paper)}
.language-menu a[aria-current]{background:var(--sun-tint)}
.menu-bars{display:inline-grid;gap:3.5px;width:18px}
.menu-bars i{display:block;height:2px;background:currentColor;border-radius:2px;transition:transform .2s,opacity .2s}
.site-menu[open] .menu-bars i:nth-child(1){transform:translateY(5.5px) rotate(45deg)}
.site-menu[open] .menu-bars i:nth-child(2){opacity:0}
.site-menu[open] .menu-bars i:nth-child(3){transform:translateY(-5.5px) rotate(-45deg)}
.menu-panel{position:absolute;inset-inline-end:0;top:calc(100% + 8px);display:grid;grid-template-columns:1fr 1fr;gap:8px 28px;width:min(560px,calc(100vw - 2 * var(--gutter)));padding:22px;background:#fff;border:2px solid var(--ink);border-radius:var(--radius);box-shadow:6px 6px 0 var(--blue);z-index:40}
.menu-panel nav{display:grid;align-content:start}
.menu-panel a{display:flex;align-items:center;min-height:42px;font-weight:650;text-decoration:none;border-bottom:1px solid var(--rule)}
.menu-panel a:hover{color:var(--blue)}
.menu-title{font-size:13px;font-weight:800;color:var(--muted);margin-bottom:6px}
@media(prefers-reduced-motion:no-preference){.menu-panel,.language-menu ul{animation:drop-in .18s ease-out}}
@keyframes drop-in{from{opacity:0;transform:translateY(-6px)}}
/* Breadcrumbs and page heads */
.crumbs{padding-top:18px}
.crumbs ol{display:flex;flex-wrap:wrap;gap:6px;list-style:none;font-size:14px;color:var(--muted)}
.crumbs li+li::before{content:'/';margin-inline-end:6px;color:var(--rule-2)}
.crumbs a{text-decoration:none}
.crumbs a:hover{text-decoration:underline}
.page-head{padding-top:28px;padding-bottom:36px}
.page-head h1{margin:6px 0 16px;max-width:18ch}
.section-head{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:24px 48px;align-items:end;margin-bottom:28px}
.section-head p{color:var(--muted);font-size:18px}
/* Home hero with the printer */
.hero{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);gap:40px;align-items:center;padding-top:clamp(36px,6vw,80px);padding-bottom:clamp(40px,6vw,88px)}
.hero h1{margin:14px 0 22px;max-width:11ch}
.hero .lede{margin-bottom:30px}
.hero-actions{display:flex;flex-wrap:wrap;gap:14px;margin-bottom:22px}
.spec{font-size:14.5px;color:var(--muted);font-variant-numeric:tabular-nums;border-top:1px dashed var(--rule-2);padding-top:14px;max-width:none}
.printer{position:relative;height:clamp(380px,46vw,560px);isolation:isolate}
.printer::before{content:'';position:absolute;inset:16% 2% 0 8%;background:var(--dots) 0 0/9px 9px,var(--sun-tint);border-radius:28px;transform:rotate(-2.5deg);z-index:-2}
.printer::after{content:'';position:absolute;inset:22% 10% 4% 0;background:var(--pink);opacity:.18;border-radius:28px;transform:rotate(3deg);z-index:-3;mix-blend-mode:multiply}
.printer-body{position:absolute;top:0;left:50%;width:min(78%,420px);height:84px;transform:translateX(-50%);background:var(--ink);border-radius:18px 18px 10px 10px;box-shadow:0 10px 0 -4px #0005;z-index:3}
.printer-body::before{content:'';position:absolute;inset:14px 18px auto auto;width:78px;height:10px;border-radius:5px;background:var(--ink-2)}
.printer-light{position:absolute;top:14px;left:18px;width:10px;height:10px;border-radius:50%;background:var(--green);box-shadow:0 0 0 3px #00a95c33}
.printer-slot{position:absolute;bottom:14px;left:8%;right:8%;height:8px;border-radius:4px;background:#000}
.feed{position:absolute;top:70px;left:50%;width:min(62%,330px);height:calc(100% - 92px);transform:translateX(-50%);overflow:hidden;z-index:2;padding-top:4px}
.feed-sheet{position:absolute;top:0;left:0;right:0;margin:0;aspect-ratio:210/297;background:#fff;border-radius:3px;box-shadow:0 1px 0 #0001,0 14px 30px -14px #16181d55;opacity:0;--r:calc((var(--i) - 2.5) * 1.6deg)}
.feed-sheet img{display:block;width:100%;height:100%;object-fit:cover;border-radius:3px}
.feed-sheet figcaption{position:absolute;inset-inline-start:10px;bottom:10px;padding:4px 10px;background:var(--ink);color:#fff;font-weight:700;font-size:13px;border-radius:6px}
.printing{position:absolute;bottom:0;inset-inline-start:6%;display:flex;gap:8px;align-items:baseline;padding:8px 14px;background:#fff;border:2px solid var(--ink);border-radius:10px;box-shadow:3px 3px 0 var(--blue);font-size:14px;z-index:4;max-width:none}
.printing span{color:var(--muted)}
.printing b{font-weight:800;min-width:9ch}
@media(prefers-reduced-motion:no-preference){
 .feed-sheet{animation:feed 14.4s cubic-bezier(.3,.7,.3,1) infinite;animation-delay:calc(var(--i) * 2.4s)}
 .printer-light{animation:blink 2.4s steps(2) infinite}
}
@keyframes feed{
 0%{opacity:1;transform:translateY(-100%);z-index:3}
 9%{transform:translateY(0) rotate(0)}
 13%{transform:translateY(2%) rotate(var(--r));z-index:3}
 30%{opacity:1;transform:translateY(2%) rotate(var(--r));z-index:2}
 38%{opacity:0;transform:translateY(9%) rotate(calc(var(--r) * 2));z-index:1}
 100%{opacity:0;transform:translateY(9%);z-index:1}
}
@keyframes blink{50%{background:#7be3ad}}
@keyframes rise{from{opacity:0;transform:translateY(22px)}}
@media(prefers-reduced-motion:reduce){.feed-sheet{opacity:1;transform:translateY(calc(var(--i) * 3%)) rotate(var(--r))}.feed-sheet:nth-child(n+4){display:none}.printing{display:none}}
/* Shelves of games by type */
.shelves{padding-block:clamp(48px,6vw,80px);background:#fff;border-block:1px solid var(--rule)}
.shelf{padding-block:26px;border-top:2px solid var(--ink)}
.shelf:first-of-type{border-top:0}
.shelf-head{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.4fr) auto;gap:8px 32px;align-items:baseline;margin-bottom:18px}
.shelf-head h3{font-size:26px}
.shelf-head p{color:var(--muted);font-size:16px}
.shelf-row{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px}
/* Game tiles: the real first page of each generator on an ink-tinted block */
.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:20px}
.card-grid.compact{grid-template-columns:repeat(auto-fill,minmax(220px,1fr))}
.tile{display:grid;grid-template-rows:auto 1fr;background:#fff;border:1px solid var(--rule);border-radius:var(--radius);text-decoration:none;color:var(--ink);overflow:hidden;transition:transform .2s,box-shadow .2s,border-color .2s}
.tile:hover{transform:translateY(-4px);border-color:var(--ink);box-shadow:5px 5px 0 var(--accent)}
.tile .thumb{position:relative;display:grid;place-items:center;padding:22px 18px 0;background:var(--dots) 0 0/8px 8px,var(--accent-tint);height:200px;overflow:hidden}
.tile .thumb img{width:68%;max-width:170px;height:auto;aspect-ratio:210/297;background:#fff;border-radius:2px;box-shadow:0 1px 0 #0002,0 12px 24px -12px #16181d66;transform:translateY(8px) rotate(-1.5deg);transition:transform .3s}
.tile:nth-child(even) .thumb img{transform:translateY(8px) rotate(1.5deg)}
.tile:hover .thumb img{transform:translateY(-2px) rotate(0)}
.card-body{display:grid;gap:6px;align-content:start;padding:16px 18px 18px}
.card-kicker{font-size:13px;font-weight:700;color:var(--muted)}
.card-title{font-size:22px;line-height:1.15}
.card-short{font-size:15px;color:var(--ink-2);line-height:1.45}
.card-body .chips{margin-top:6px}
.card-body .chip{min-height:24px;font-size:12px;background:var(--paper);border:0}
/* Catalog filters */
.filters{display:grid;gap:14px;margin-bottom:26px;position:sticky;top:70px;z-index:5;background:color-mix(in srgb,var(--paper) 94%,transparent);backdrop-filter:blur(8px);padding-block:12px}
.type-filter{display:flex;gap:8px;overflow-x:auto;scrollbar-width:none;padding-bottom:2px}
.filter{flex-shrink:0;display:inline-flex;gap:8px;align-items:center;min-height:42px;padding:6px 14px;border:2px solid var(--ink);border-radius:99px;background:#fff;font-weight:700;font-size:15px}
.filter span{font-size:12px;font-variant-numeric:tabular-nums;color:var(--muted)}
.filter.on{background:var(--ink);color:#fff}
.filter.on span{color:#fff}
.filter-row{display:flex;flex-wrap:wrap;gap:12px;align-items:end}
.search,.region-select{display:grid;gap:4px;font-size:14px;font-weight:700}
.search input,.region-select select{min-height:46px;border:2px solid var(--ink);border-radius:10px;background:#fff;padding:8px 12px;font-size:16px;min-width:min(320px,100%)}
.result-count{font-size:14px;color:var(--muted)}
.no-results{padding:40px 0;font-size:18px}
.ad-slot{display:grid}
/* Regions, tools, packs, posts */
.world-strip{background:var(--federal);color:#fff;padding-block:clamp(48px,6vw,84px);margin-block:56px}
.world-strip .section-head p{color:#dfe6f3}
.region-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:14px}
.region-card{display:grid;gap:6px;align-content:start;padding:20px;border-radius:var(--radius);background:#fff;color:var(--ink);text-decoration:none;border:2px solid var(--ink);transition:transform .2s,box-shadow .2s;min-height:150px}
.region-card:hover{transform:translate(-2px,-2px);box-shadow:5px 5px 0 var(--sun)}
.region-name{font:780 23px/1.1 var(--display);letter-spacing:-.01em}
.region-count{font-size:13px;font-weight:700;color:var(--muted)}
.region-desc{font-size:15px;line-height:1.45;color:var(--ink-2)}
.region-east-asia{border-top:10px solid var(--red)}.region-south-asia{border-top:10px solid var(--orange)}.region-middle-east{border-top:10px solid var(--teal)}.region-africa{border-top:10px solid var(--sun)}.region-europe{border-top:10px solid var(--blue)}.region-latin-america{border-top:10px solid var(--pink)}.region-north-america{border-top:10px solid var(--green)}
.tools-strip,.packs-strip,.ideas-strip{padding-block:clamp(40px,5vw,72px)}
.tool-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:14px}
.tool-grid.big{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));padding-bottom:48px}
.tool-card{display:grid;gap:6px;align-content:start;padding:20px;min-height:140px;border-radius:var(--radius);background:#fff;border:1px solid var(--rule);text-decoration:none;color:var(--ink);transition:transform .2s,box-shadow .2s,border-color .2s;background-image:var(--dots);background-size:9px 9px;background-position:100% 0;background-repeat:no-repeat}
.tool-card:hover{border-color:var(--ink);transform:translateY(-3px);box-shadow:5px 5px 0 var(--teal)}
.tool-name{font:780 22px/1.15 var(--display)}
.tool-short{font-size:15px;color:var(--ink-2);line-height:1.45}
.pack-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:20px}
.pack-grid.big{padding-bottom:40px}
.pack-card{display:grid;gap:10px;align-content:start;padding:20px;border-radius:var(--radius);background:#fff;border:2px solid var(--ink);box-shadow:5px 5px 0 var(--sun)}
.pack-card h3{font-size:24px}
.pack-card p{font-size:15.5px;color:var(--ink-2)}
.pack-card .button{justify-self:start;margin-top:4px}
.pack-meta{font-size:13.5px!important;color:var(--muted)!important;font-variant-numeric:tabular-nums}
.pack-art{position:relative;height:150px;background:var(--dots) 0 0/8px 8px,var(--teal-tint);border-radius:10px;overflow:hidden}
.pack-art span{position:absolute;top:18px;width:82px;inset-inline-start:calc(14% + var(--i) * 17%);transform:rotate(calc((var(--i) - 1.5) * 5deg));transition:transform .3s}
.pack-card:hover .pack-art span{transform:rotate(calc((var(--i) - 1.5) * 9deg)) translateY(-6px)}
.pack-art img{display:block;width:100%;height:auto;aspect-ratio:210/297;background:#fff;box-shadow:0 8px 16px -8px #0006}
.post-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px}
.post-grid.big{padding-bottom:40px}
.post-link{display:grid;gap:6px;align-content:start;padding:20px 20px 22px;background:#fff;border:1px solid var(--rule);border-top:4px solid var(--ink);border-radius:4px 4px var(--radius) var(--radius);text-decoration:none;color:var(--ink);transition:border-color .2s,transform .2s}
.post-link:hover{border-top-color:var(--pink);transform:translateY(-2px)}
.post-kind{font-size:13px;font-weight:700;color:var(--muted)}
.post-title{font:760 21px/1.2 var(--display)}
.post-desc{font-size:15px;color:var(--ink-2);line-height:1.5}
.more-links{display:flex;gap:24px;margin-top:22px}
.how{display:grid;grid-template-columns:1.3fr 1fr;gap:56px;padding-block:clamp(40px,5vw,80px)}
.how h2{margin-bottom:24px}
.how ol{list-style:none;counter-reset:step;display:grid;gap:14px}
.how li{counter-increment:step;display:grid;grid-template-columns:52px 1fr;gap:4px 16px;padding:18px;background:#fff;border:1px solid var(--rule);border-radius:var(--radius)}
.how li::before{content:counter(step);grid-row:span 2;display:grid;place-items:center;width:44px;height:44px;border-radius:50%;background:var(--blue);color:#fff;font:800 20px var(--display);box-shadow:3px 3px 0 var(--pink)}
.how li h3{font-size:20px}
.how li p{color:var(--ink-2);font-size:16px}
.privacy-note{align-self:start;padding:28px;background:var(--ink);color:#f4f6f5;border-radius:var(--radius);box-shadow:6px 6px 0 var(--teal)}
.privacy-note h2{font-size:30px;margin-bottom:14px}
.privacy-note p{color:#d9dde6;margin-bottom:16px}
/* Game pages */
.game-hero{padding-top:20px;padding-bottom:28px}
.game-hero h1{margin:6px 0 14px;font-size:clamp(36px,5vw,64px);max-width:20ch}
.game-hero .lede{margin-bottom:16px}
.game-hero .chips .chip:nth-child(n+4){background:var(--accent-tint);border-color:transparent}
.mode-tabs{display:none}
.workbench{display:grid;grid-template-columns:350px minmax(0,1fr);gap:28px;align-items:start;padding-bottom:40px}
.controls{position:sticky;top:84px;max-height:calc(100vh - 100px);overflow:auto;padding:22px;background:#fff;border:2px solid var(--ink);border-radius:var(--radius);box-shadow:5px 5px 0 var(--accent);scrollbar-width:thin}
.controls h2,.game-form>h2{font-size:22px;margin-bottom:18px}
.field{margin-bottom:16px;min-width:0}
.field>label{display:block;font-weight:750;font-size:15px;margin-bottom:6px}
.field small,.setup-details p{display:block;font-size:13px;color:var(--muted);line-height:1.5;margin-top:6px}
input:not([type=checkbox],[type=file],[type=radio]),select,textarea{width:100%;min-height:46px;padding:9px 12px;border:1.5px solid var(--rule-2);border-radius:9px;background:#fbfcfc;font-size:16px;line-height:1.45}
input:focus,select:focus,textarea:focus{border-color:var(--ink);outline:none;box-shadow:0 0 0 3px var(--blue-tint)}
textarea{resize:vertical;min-height:150px;max-height:520px}
.field-pair{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.check{display:flex;gap:10px;align-items:center;min-height:44px;font-size:15px;font-weight:650;line-height:1.35}
.check input{width:20px;height:20px;accent-color:var(--ink);flex-shrink:0}
fieldset{border:0;border-top:1px dashed var(--rule-2);margin:18px 0;padding:16px 0 0}
legend{font-weight:800;font-size:15px;padding:0}
.controls button[type=submit]{width:100%;margin-top:10px}
.preset-row .button{min-height:40px;font-size:14px;margin-bottom:14px}
.errors{padding:12px 14px;border-inline-start:4px solid var(--red);background:var(--red-tint);color:#6d1020;font-size:15px;margin:12px 0;border-radius:6px}
.setup-details{border-top:1px dashed var(--rule-2);margin-top:18px;padding-top:12px;font-size:15px}
.setup-details summary{cursor:pointer;min-height:40px;display:flex;align-items:center;font-weight:700}
.setup-details .button{min-height:40px;font-size:14px;padding:8px 14px}
.preview-toolbar{position:sticky;top:70px;z-index:6;display:flex;flex-wrap:wrap;gap:12px 20px;justify-content:space-between;align-items:center;padding:14px 16px;margin-bottom:12px;background:#fff;border:1px solid var(--rule);border-radius:var(--radius)}
.preview-toolbar h2{font-size:18px}
.preview-toolbar p{font-size:14px;color:var(--muted);margin-top:2px}
.preview-toolbar .button{min-height:44px;font-size:15px;padding:8px 16px}
.print-hint{font-size:13.5px;color:var(--muted);margin:0 0 12px;max-width:none}
/* The preview sits on a cutting mat: real paper on a real work surface. */
.paper-window{container-type:inline-size;position:relative;padding:clamp(12px,3cqw,28px);border-radius:var(--radius);background:linear-gradient(#ffffff12 1px,transparent 1px) 0 0/24px 24px,linear-gradient(90deg,#ffffff12 1px,transparent 1px) 0 0/24px 24px,linear-gradient(#ffffff26 1px,transparent 1px) 0 0/120px 120px,linear-gradient(90deg,#ffffff26 1px,transparent 1px) 0 0/120px 120px,var(--mat);max-height:1100px;overflow:auto;border:0}
.scene-sheet{width:100%;max-width:calc(var(--w) * 1mm);margin:0 auto 22px;aspect-ratio:calc(var(--w) / var(--h))}
.scene-sheet:last-child{margin-bottom:0}
.scene-sheet svg{display:block;width:100%;height:auto;background:#fff;border-radius:2px;box-shadow:0 1px 0 #0003,0 18px 38px -18px #000c;font-family:var(--sheet-font)}
@media(prefers-reduced-motion:no-preference){.scene-sheet{animation:sheet-in .45s cubic-bezier(.2,.8,.3,1) both;animation-delay:calc(var(--n,0) * 70ms)}}
@keyframes sheet-in{from{opacity:0;transform:translateY(-18px) rotate(-.6deg)}}
.after-download{margin-top:18px}
.after-download-title{font-weight:800;font-size:18px;margin-bottom:10px}
.tool-after{padding-bottom:40px;display:grid;gap:18px}
.tool-after>p{font-size:15.5px;color:var(--muted);max-width:85ch}
.tool-after details{max-width:820px;padding:18px 20px;background:#fff;border:2px solid var(--ink);border-radius:var(--radius)}
.tool-after summary{cursor:pointer;font-weight:800;min-height:32px}
.tool-after details p{font-size:15px;color:var(--muted);margin:10px 0}
.caller-output{font:800 clamp(34px,5vw,56px)/1.2 var(--display);color:var(--blue);margin:18px 0;overflow-wrap:anywhere}
.game-content{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:48px;padding-block:24px 48px}
.game-article{display:grid;gap:36px;max-width:760px}
.game-article .intro{font-size:20px;line-height:1.6}
.game-article h2{font-size:clamp(26px,3vw,36px);margin-bottom:16px}
.rules{list-style:none;counter-reset:rule;display:grid;gap:12px}
.rules li{counter-increment:rule;position:relative;padding-inline-start:52px;min-height:38px;font-size:17.5px}
.rules li::before{content:counter(rule);position:absolute;inset-inline-start:0;top:-2px;display:grid;place-items:center;width:36px;height:36px;border-radius:50%;background:var(--accent-tint);border:2px solid var(--ink);font:800 16px var(--display)}
.tips{list-style:none;display:grid;gap:10px}
.tips li{position:relative;padding:12px 16px 12px 46px;background:#fff;border:1px solid var(--rule);border-radius:10px}
.tips li::before{content:'';position:absolute;inset-inline-start:16px;top:18px;width:14px;height:8px;border-inline-start:3px solid var(--green);border-bottom:3px solid var(--green);transform:rotate(-45deg)}
[dir=rtl] .tips li{padding:12px 46px 12px 16px}
[dir=rtl] .tips li::before{transform:rotate(45deg) scaleX(-1)}
.origin-links{margin-top:12px;font-size:15px}
.origin-links span{font-weight:700}
.qa{border-bottom:1px solid var(--rule)}
.qa summary{display:flex;justify-content:space-between;gap:16px;align-items:center;min-height:56px;padding:12px 0;cursor:pointer;font-weight:750;font-size:17.5px;list-style:none}
.qa summary::-webkit-details-marker{display:none}
.qa summary::after{content:'+';flex-shrink:0;display:grid;place-items:center;width:30px;height:30px;border-radius:50%;border:2px solid var(--ink);font-weight:800;transition:transform .2s}
.qa[open] summary::after{transform:rotate(45deg);background:var(--sun)}
.qa p{padding:0 0 18px;color:var(--ink-2)}
.game-aside{display:grid;gap:20px;align-content:start}
.aside-block{padding:18px;background:#fff;border:1px solid var(--rule);border-radius:var(--radius);display:grid;gap:10px}
.aside-block h2{font-size:20px}
.aside-block .post-link{padding:12px;border-top-width:3px}
.aside-block .post-title{font-size:17px}
.aside-block .post-desc{display:none}
.aside-link{display:flex;align-items:center;min-height:42px;font-weight:700;text-decoration:none;border-bottom:1px solid var(--rule)}
.aside-link:hover{color:var(--blue)}
.related{padding-block:24px 56px}
.related h2{font-size:clamp(26px,3vw,36px);margin-bottom:20px}
/* Tool (widget) pages */
.widget-stage{padding-bottom:28px}
.widget{min-height:340px}
.widget-failed::after{content:'⚠';font-size:40px}
/* Articles */
.article{padding-block:24px 64px}
.article-head{max-width:860px;padding-block:8px 28px;border-bottom:2px solid var(--ink);margin-bottom:32px}
.article-head h1{font-size:clamp(36px,5vw,64px);margin:8px 0 18px}
.byline{font-size:14.5px;color:var(--muted);margin-top:14px}
.article-layout{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:56px;align-items:start}
.prose{max-width:72ch;font-size:18.5px;line-height:1.72}
.prose>*+*{margin-top:1em}
.prose h2{font-size:clamp(26px,2.8vw,34px);margin-top:1.7em}
.prose h3{font-size:22px;margin-top:1.4em}
.prose ul,.prose ol{padding-inline-start:1.3em;display:grid;gap:.4em}
.prose li::marker{color:var(--pink);font-weight:800}
.prose blockquote{margin-inline:0;padding:6px 0 6px 20px;border-inline-start:5px solid var(--pink);font-size:20px;color:var(--ink-2)}
.prose a{color:var(--blue);text-decoration-thickness:2px}
.prose .ad a{color:var(--ink);text-decoration:none}
.prose .ad .ad-cta{color:#fff}
.prose code{font-size:.85em;background:#fff;border:1px solid var(--rule);padding:1px 6px;border-radius:5px;overflow-wrap:anywhere}
.prose pre{direction:ltr;text-align:left;overflow:auto;padding:18px;background:var(--ink);color:#f4f6f5;border-radius:12px;font-size:13.5px;line-height:1.6}
.prose pre code{background:none;border:0;padding:0;color:inherit}
.article-aside{position:sticky;top:90px;display:grid;gap:20px}
.aside-game{display:grid;grid-template-columns:54px 1fr;gap:12px;align-items:center;min-height:64px;text-decoration:none;font-weight:700;border-bottom:1px solid var(--rule);padding-block:6px}
.aside-game img{width:54px;height:auto;aspect-ratio:210/297;background:#fff;box-shadow:0 4px 10px -6px #0007}
.article-tools{display:flex;flex-wrap:wrap;gap:20px;padding-top:24px;border-top:1px solid var(--rule);font-weight:700}
.feed-link a{font-size:14px;font-weight:700}
.faq-groups{display:grid;gap:36px;padding-bottom:56px;max-width:900px}
.faq-group h2{font-size:clamp(24px,2.6vw,32px);margin-bottom:8px}
.faq-search{margin-top:20px;max-width:520px}
.one-click{padding-block:16px 56px}
.one-click h2{margin-bottom:10px}
.one-click>p{color:var(--muted);margin-bottom:18px}
.link-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:0 28px}
.missing h1{max-width:14ch}
/* Books page */
.book-list{display:grid;gap:24px;padding-bottom:64px}
.book-card{display:grid;grid-template-columns:220px minmax(0,1fr);gap:32px;align-items:center;padding:24px;background:#fff;border:2px solid var(--ink);border-radius:20px;box-shadow:6px 6px 0 var(--accent)}
.book-card .ad-ink-red,.book-card{--accent:var(--red)}
.book-card.ad-ink-blue{--accent:var(--blue)}.book-card.ad-ink-teal{--accent:var(--teal)}.book-card.ad-ink-sun{--accent:var(--sun)}.book-card.ad-ink-orange{--accent:var(--orange)}
.book-cover img{display:block;width:100%;height:auto;border-radius:6px;box-shadow:0 14px 30px -14px #000a}
.book-cover img.tall{width:76%;margin-inline:auto;transform:rotate(-2deg)}
.book-card h2{font-size:clamp(24px,2.6vw,32px);margin:6px 0 12px}
.book-card p{margin-bottom:12px}
.book-kind{font-size:14px;font-weight:800;color:var(--muted)}
.book-short{color:var(--muted);font-size:15.5px}
/* Ads for the maker's own books: labelled, linked, never in sheets or PDFs. */
.ad{--accent:var(--red);--accent-tint:var(--red-tint);margin-block:8px}
.ad-ink-blue{--accent:var(--blue);--accent-tint:var(--blue-tint)}.ad-ink-teal{--accent:var(--teal);--accent-tint:var(--teal-tint)}.ad-ink-sun{--accent:var(--sun);--accent-tint:var(--sun-tint)}.ad-ink-orange{--accent:var(--orange);--accent-tint:var(--orange-tint)}
.ad-link{position:relative;display:grid;text-decoration:none;color:var(--ink);background:var(--dots) 0 0/8px 8px,var(--accent-tint);border:2px solid var(--ink);border-radius:18px;overflow:hidden;transition:transform .2s,box-shadow .2s;box-shadow:5px 5px 0 var(--accent)}
.ad-link:hover{transform:translate(-2px,-2px);box-shadow:8px 8px 0 var(--accent);text-decoration:none}
.ad-meta{display:flex;gap:8px;align-items:center;font-size:12.5px;font-weight:700;color:var(--ink-2)}
.ad-label{padding:1px 7px;border-radius:4px;background:var(--ink);color:#fff;font-size:11.5px;letter-spacing:.04em}
.ad-art{position:relative;display:block;align-self:stretch;min-height:120px}
.ad-art svg{position:absolute;inset:10% 6%;width:88%;height:80%;opacity:.9}
.ad-cover{position:absolute;box-shadow:0 12px 24px -10px #000b;border-radius:4px;background:#fff;transition:transform .3s}
.ad-cover.tall{width:42%;height:auto;inset-inline-end:10%;bottom:8%;transform:rotate(4deg)}
.ad-cover.wide{width:66%;height:auto;inset-inline-end:6%;bottom:10%;transform:rotate(-3deg)}
.ad-link:hover .ad-cover{transform:rotate(0) translateY(-4px)}
.ad-copy{display:grid;gap:6px;align-content:center}
.ad-kicker{font-size:13px;font-weight:800;color:var(--ink-2)}
.ad-title{font:780 22px/1.15 var(--display);letter-spacing:-.01em}
.ad-pitch{font-size:15.5px;line-height:1.45;color:var(--ink-2)}
.ad-cta{justify-self:start;display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:8px 16px;border-radius:10px;background:var(--ink);color:#fff;font-weight:750;font-size:15px;white-space:nowrap}
.ad-note{display:block;font-size:12.5px;color:var(--muted);margin-top:8px;max-width:80ch}
.ad--leaderboard{margin-block:28px}
.ad--leaderboard .ad-link{grid-template-columns:minmax(200px,.8fr) minmax(0,2fr) auto;align-items:center;gap:8px 28px;padding:18px 24px 18px 0}
[dir=rtl] .ad--leaderboard .ad-link{padding:18px 0 18px 24px}
.ad--leaderboard .ad-meta{position:absolute;top:12px;inset-inline-end:16px}
.ad--leaderboard .ad-art{min-height:150px}
.ad--leaderboard .ad-cta{align-self:center}
.wrap-ad{max-width:1280px;margin-inline:auto;padding-inline:var(--gutter)}
.ad--rectangle .ad-link{grid-template-columns:180px minmax(0,1fr);gap:6px 20px;padding:16px 20px 18px 0;align-items:center}
[dir=rtl] .ad--rectangle .ad-link{padding:16px 0 18px 20px}
.ad--rectangle .ad-meta{grid-column:1/-1;padding-inline-start:18px}
.ad--rectangle .ad-art{min-height:150px}
.ad--rectangle .ad-copy{gap:8px}
.ad--rectangle .ad-cta{grid-column:2}
.ad--skyscraper .ad-link{grid-template-rows:auto 190px auto auto;gap:12px;padding:16px}
.ad--skyscraper .ad-art{min-height:190px;margin-inline:-16px}
.ad--skyscraper .ad-title{font-size:20px}
.ad--ticket{margin:0;height:100%}
.ad--ticket .ad-link{height:100%;grid-template-rows:auto 200px 1fr auto;gap:10px;padding:16px 18px 18px;border-style:dashed;border-radius:14px;background:var(--dots) 0 0/8px 8px,#fff;-webkit-mask:radial-gradient(circle 12px at 0 214px,#0000 98%,#000) 0 0/51% 100% no-repeat,radial-gradient(circle 12px at 100% 214px,#0000 98%,#000) 100% 0/51% 100% no-repeat;mask:radial-gradient(circle 12px at 0 214px,#0000 98%,#000) 0 0/51% 100% no-repeat,radial-gradient(circle 12px at 100% 214px,#0000 98%,#000) 100% 0/51% 100% no-repeat}
.ad--ticket .ad-art{margin-inline:-18px;background:var(--accent-tint)}
.ad--ticket .ad-title{font-size:19px}
.ad--ticket .ad-pitch{font-size:14.5px}
/* Footer */
.site-footer{position:relative;margin-top:40px;padding-block:56px 40px;background:var(--ink);color:#e9ecef}
.site-footer::before{content:'';position:absolute;inset:0 0 auto;height:8px;background:linear-gradient(90deg,var(--blue) 0 20%,var(--pink) 20% 40%,var(--sun) 40% 60%,var(--teal) 60% 80%,var(--orange) 80%)}
.footer-grid{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:36px}
.site-footer .brand{color:#fff}
.site-footer .brand .logo{color:#fff}
.site-footer p{font-size:15px;color:#c9ced8;margin-top:14px}
.site-footer nav{display:flex;flex-direction:column;align-items:flex-start;gap:2px}
.site-footer h2{font:800 15px var(--body);letter-spacing:0;color:#fff;margin-bottom:10px}
.site-footer nav a{display:inline-flex;align-items:center;min-height:36px;font-size:15px;text-decoration:none;color:#d9dde6}
.site-footer nav a:hover{color:#fff;text-decoration:underline}
.site-footer button{border:0;background:none;color:#d9dde6;text-decoration:underline;padding:6px 0;min-height:40px;font-size:15px;text-align:start}
.site-footer small{display:block;font-size:13px;color:#aeb4c0;margin-top:8px}
#offline-status{max-width:30ch}
dialog{max-width:560px;width:calc(100% - 32px);border:2px solid var(--ink);border-radius:18px;background:#fff;color:var(--ink);padding:0;box-shadow:8px 8px 0 var(--blue)}
dialog::backdrop{background:#16181d80}
.consent-body{padding:28px}
.consent-body h2{font-size:28px}
.consent-body p{font-size:16px;margin:14px 0}
.consent-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:20px}
.update-notice{position:fixed;inset-inline:16px;bottom:16px;max-width:620px;margin:auto;z-index:60;display:flex;gap:18px;align-items:center;padding:16px 18px;background:#fff;border:2px solid var(--ink);border-radius:16px;box-shadow:6px 6px 0 var(--sun);font-size:15px}
.update-notice p{flex:1}
.update-notice .button{flex-shrink:0}
/* Scroll-driven entrances where supported; elsewhere everything is simply visible. */
@media(prefers-reduced-motion:no-preference){
 @supports(animation-timeline:view()){
  .section-head,.shelf-head,.region-card,.tool-card,.pack-card,.post-link,.tile,.ad,.how li,.book-card,.rules li,.tips li{animation:rise linear both;animation-timeline:view();animation-range:entry 0% entry 70%}
 }
 @view-transition{navigation:auto}
 ::view-transition-old(root),::view-transition-new(root){animation-duration:.22s}
}
/* Responsive */
@media(max-width:1180px){
 .shelf-row{grid-template-columns:repeat(2,minmax(0,1fr))}
 .footer-grid{grid-template-columns:1fr 1fr}
 .footer-brand{grid-column:1/-1}
 .game-content,.article-layout{grid-template-columns:minmax(0,1fr)}
 .article-aside{position:static;grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}
 .ad--skyscraper .ad-link{grid-template-rows:auto 170px auto auto}
}
@media(max-width:960px){
 .primary-nav{display:none}
 .head-actions{margin-inline-start:auto}
 .hero{grid-template-columns:1fr}
 .printer{max-width:520px;width:100%;margin-inline:auto;height:440px}
 .section-head,.shelf-head{grid-template-columns:1fr}
 .how{grid-template-columns:1fr;gap:32px}
 .workbench{grid-template-columns:1fr}
 .controls{position:static;max-height:none}
 .mode-tabs{display:flex;position:sticky;top:70px;z-index:20;gap:6px;padding-block:8px;background:color-mix(in srgb,var(--paper) 94%,transparent);backdrop-filter:blur(8px)}
 .mode-tabs button{flex:1;min-height:46px;border:2px solid var(--ink);border-radius:10px;background:#fff;font-weight:800}
 .mode-tabs button[aria-pressed=true]{background:var(--ink);color:#fff}
 .js .workbench .controls{display:none}
 .js.show-settings .workbench .controls,.js body.show-settings .workbench .controls{display:block}
 .js body.show-settings .preview-section{display:none}
 .preview-toolbar{position:static}
 .ad--leaderboard .ad-link{grid-template-columns:150px minmax(0,1fr);padding:16px 18px 18px 0}
 .ad--leaderboard .ad-cta{grid-column:2}
 .ad--leaderboard .ad-meta{position:static;grid-column:1/-1;padding-inline-start:18px}
}
@media(max-width:640px){
 body{font-size:16.5px}
 .head-row{min-height:62px;gap:12px}
 .brand{font-size:24px}
 .brand .logo{width:30px;height:30px}
 .site-head summary{padding:0 10px}
 .lang-long{display:none}.lang-short{display:inline}
 .menu-panel{position:fixed;inset:62px 10px auto;width:auto;grid-template-columns:1fr;max-height:calc(100vh - 80px);overflow:auto}
 .hero h1{font-size:clamp(40px,12vw,56px)}
 .printer{height:380px}
 .shelf-row{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;gap:14px;margin-inline:calc(-1 * var(--gutter));padding-inline:var(--gutter);scrollbar-width:none}
 .shelf-row .tile{flex:0 0 76%;scroll-snap-align:start}
 .card-grid{grid-template-columns:1fr 1fr;gap:12px}
 .card-grid .tile .thumb{height:150px;padding:14px 10px 0}
 .card-grid .card-body{padding:12px}
 .card-grid .card-title{font-size:18px}
 .card-grid .card-short{display:none}
 .card-grid .chip{font-size:11px}
 .ad-slot{grid-column:1/-1}
 .ad--ticket .ad-link{grid-template-rows:auto 160px 1fr auto;-webkit-mask:none;mask:none}
 .filters{top:62px}
 .search input,.region-select select{min-width:0;width:100%}
 .filter-row{display:grid;grid-template-columns:1fr}
 .workbench{gap:18px}
 .mode-tabs{top:62px}
 .controls{padding:18px;box-shadow:3px 3px 0 var(--accent)}
 .field-pair{grid-template-columns:1fr}
 .preview-toolbar{padding:12px}
 .preview-toolbar .button-row{position:fixed;inset-inline:0;bottom:0;z-index:25;display:grid;grid-template-columns:1fr 1fr 1.3fr;gap:8px;padding:10px 12px calc(10px + env(safe-area-inset-bottom));background:#fff;border-top:2px solid var(--ink)}
 .js body.show-settings .preview-toolbar .button-row{display:none}
 .preview-toolbar .button{min-height:48px;padding:6px 8px;font-size:14px}
 .page-games .site-footer,.page-games main{padding-bottom:0}
 body:has(.preview-toolbar){padding-bottom:76px}
 .paper-window{padding:10px;max-height:none;margin-inline:calc(-1 * var(--gutter));border-radius:0}
 .ad--rectangle .ad-link,.ad--leaderboard .ad-link{grid-template-columns:1fr;padding:0 0 16px}
 .ad--rectangle .ad-art,.ad--leaderboard .ad-art{min-height:170px}
 .ad--rectangle .ad-copy,.ad--leaderboard .ad-copy,.ad--rectangle .ad-cta,.ad--leaderboard .ad-cta{margin-inline:16px;grid-column:auto}
 .ad--rectangle .ad-meta,.ad--leaderboard .ad-meta{padding:12px 16px 0}
 .book-card{grid-template-columns:1fr;gap:18px}
 .book-cover img.tall{width:56%}
 .footer-grid{grid-template-columns:1fr}
 .how li{grid-template-columns:44px 1fr;padding:14px}
 .update-notice{display:block}
 .update-notice .button{margin-top:10px}
}
@media(max-width:380px){.card-grid{grid-template-columns:1fr}.card-grid .card-short{display:block}}
@media(display-mode:standalone){.site-head{padding-top:env(safe-area-inset-top)}}
:lang(ar) h1,:lang(ar) h2,:lang(ar) h3,:lang(ar) h4,:lang(ar) .post-title,:lang(ar) .tool-name,:lang(ar) .region-name,:lang(ar) .ad-title,:lang(ar) .card-title{font-family:'Noto Sans Arabic',var(--display);letter-spacing:0;line-height:1.35}
:lang(ar) body{font-family:'Noto Sans Arabic',var(--body);line-height:1.75}
:lang(zh) h1,:lang(zh) h2,:lang(zh) h3,:lang(zh) h4,:lang(zh) .post-title,:lang(zh) .tool-name,:lang(zh) .region-name,:lang(zh) .card-title{font-family:'Noto Sans SC',var(--display);letter-spacing:0;line-height:1.3}
:lang(zh) body{font-family:var(--body),'Noto Sans SC';line-height:1.75}
:lang(ar) input[type=number]{direction:ltr;text-align:start}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

/* ---- Original four makers: HTML sheets for bingo, 90-ball, word search and prompt cards ---- */
.sheet{position:relative;background:white;color:#183d34;width:100%;max-width:190mm;aspect-ratio:190/277;padding:4%;margin:0 auto 24px;box-shadow:0 1px 0 #0003,0 18px 38px -18px #000c;font:clamp(9px,2cqw,14px)/1.4 var(--sans)}
.sheet:last-child{margin-bottom:0}
.sheet-inner{height:96%;min-height:0}
.sheet h2{font:700 clamp(11px,3cqw,21px)/1.2 var(--sans);letter-spacing:-.5px;overflow-wrap:anywhere}
.sheet h3{font:750 clamp(10px,2.3cqw,16px)/1.3 var(--sans);margin:3% 0 2%}
.sheet-footer{position:absolute;bottom:1.8%;left:4%;right:4%;display:flex;justify-content:space-between;gap:10px;color:#526258;font-size:clamp(7px,1.25cqw,9px)}
.sheet-footer>span:first-child{direction:ltr}
.sheet-grid{display:grid;height:100%;gap:4%}
.per-1{grid-template-columns:1fr;grid-template-rows:1fr}
.per-2{grid-template-columns:1fr;grid-template-rows:1fr 1fr}
.per-4{grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr}
.game-card{min-height:0;display:grid;grid-template-rows:auto minmax(0,1fr) auto;gap:2%}
.game-card header{display:flex;justify-content:space-between;gap:12px;align-items:start}
.game-card header>span{font-size:clamp(8px,1.8cqw,12px);white-space:nowrap}
.board{width:100%;height:100%;table-layout:fixed;border-collapse:collapse;text-align:center;border:1.5px solid currentColor}
.board td{border:1px solid #81978a;overflow-wrap:anywhere;font-size:clamp(9px,2.1cqw,15px);font-weight:650;line-height:1.25;padding:2%}
.board th{background:#e8ecdf;color:#183d34;font-size:clamp(11px,3cqw,22px);line-height:1.2;padding:1%}
.board .free{background:#edf0e7;font-size:clamp(8px,1.7cqw,12px)}
.board .empty{background:repeating-linear-gradient(45deg,#fff,#fff 4px,#f1f2ee 4px,#f1f2ee 5px)}
.board.numbers td,.tombala .board td{font-size:clamp(14px,3.8cqw,28px);font-weight:750}
.card-signature{font-size:clamp(7px,1.2cqw,9px);text-align:right;color:#526258}
.per-4 .board td{font-size:clamp(8px,1.5cqw,11px)}
.per-4 .board.numbers td{font-size:clamp(12px,2.6cqw,19px)}
.per-4 h2{font-size:clamp(10px,2.1cqw,15px)}
.per-4 header{display:block}
.tombala{max-height:80%;align-self:center}
.ticket-grid.per-1 .tombala{height:65%}
.ticket-grid.per-2 .tombala,.ticket-grid.per-4 .tombala{height:85%}
.ticket-grid.per-4{grid-template-columns:1fr;grid-template-rows:repeat(4,1fr);gap:3%}
.ticket-grid.per-4 .board td{font-size:clamp(11px,3cqw,22px)}
.compact-long.per-4 .board td{font-size:clamp(7px,1.25cqw,9px)}
.sheet-help{font-size:clamp(8px,1.7cqw,12px);line-height:1.5;margin:2% 0 4%;max-width:none}
.call-list{display:grid;grid-template-columns:1fr 1fr;gap:0 4%;font-size:clamp(9px,2cqw,14px)}
.call-list>div{display:flex;gap:10px;padding:1.3% 0;border-bottom:1px dashed #a5b1a8;align-items:center;overflow-wrap:anywhere;min-width:0}
.check-square{display:inline-block;width:.8em;height:.8em;border:1px solid currentColor;flex-shrink:0}
.puzzle-head{display:flex;justify-content:space-between;gap:12px;margin-bottom:5%}
.puzzle-head span{font-size:clamp(8px,1.8cqw,12px);white-space:nowrap}
.search-grid{border-collapse:collapse;width:82%;margin:0 auto;table-layout:fixed;text-align:center;border:1px solid #81978a;aspect-ratio:1}
.search-grid td{font-size:clamp(9px,2.6cqw,19px);font-weight:650;border:1px solid #d7dfd8;line-height:1.1;padding:.5% 0}
.search-grid .found{background:#e1ebd8;color:#173d32;font-weight:850;outline:1px solid #56735c;outline-offset:-1px}
.word-bank{display:grid;grid-template-columns:repeat(3,1fr);gap:5px 16px;list-style:none;padding:0;margin:0;font-size:clamp(9px,2cqw,14px)}
.word-bank li{overflow-wrap:anywhere}
.word-bank small{font-size:.8em;display:block}
.prompt-sheet .sheet-inner{display:flex;flex-direction:column}
.prompt-grid{display:grid;flex:1;min-height:0;grid-template-columns:1fr 1fr;grid-template-rows:repeat(3,1fr)}
.prompt-grid.per-9{grid-template-columns:repeat(3,1fr)}
.prompt-grid.per-12{grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(4,1fr)}
.prompt-card{display:flex;flex-direction:column;border:1px dashed #9ca99d;padding:8%;min-width:0;gap:12px}
.prompt-card small{font-size:clamp(7px,1.4cqw,10px);color:#526258}
.prompt-card p{font:650 clamp(10px,2.6cqw,18px)/1.4 var(--sans);overflow-wrap:anywhere;margin:auto 0}
.per-9 .prompt-card p,.per-12 .prompt-card p{font-size:clamp(9px,2cqw,14px)}
.large-print .board td{font-size:clamp(15px,3.6cqw,26px)}
.large-print .board.numbers td,.large-print .tombala td{font-size:clamp(21px,5cqw,36px)}
.large-print .word-bank,.large-print .call-list{font-size:clamp(12px,3cqw,22px)}
.large-print .search-grid td{font-size:clamp(11px,3cqw,22px)}
.large-print .prompt-card p{font-size:clamp(14px,3.6cqw,26px)}
.ink-only .sheet{color:black}
.ink-only .board td,.ink-only .board th,.ink-only .search-grid td{border-color:#666;color:black;background:none}
.ink-only .board .empty{background:#eee}
.ink-only .search-grid .found{background:#eee;outline-color:black;font-weight:850}
.letter .sheet{aspect-ratio:195.9/259.4;max-width:195.9mm}
:lang(ar) .sheet h2,:lang(ar) .sheet h3{letter-spacing:0;line-height:1.5}
@media print{
 :root{color-scheme:light}
 html,body{background:white!important;margin:0!important;padding:0!important}
 body{font:12pt/1.4 Arial,sans-serif;color:black!important}
 .site-head,.site-footer,.crumbs,.game-hero,.mode-tabs,.controls,.preview-toolbar,.print-hint,.tool-after,.game-content,.related,.after-download,.ad,dialog,.skip,noscript,.update-notice,.page-head,.article,.catalog{display:none!important}
 main,.workbench,.preview-section{display:block!important;max-width:none!important;width:auto!important;padding:0!important;margin:0!important}
 .paper-window{display:block!important;container-type:normal!important;overflow:visible!important;max-height:none!important;height:auto!important;padding:0!important;margin:0!important;border:0!important;background:none!important;border-radius:0!important}
 .scene-sheet{width:calc(var(--w) * 1mm)!important;height:calc(var(--h) * 1mm)!important;max-width:none!important;margin:0!important;break-after:page;page-break-after:always;animation:none!important}
 .scene-sheet:last-child{break-after:auto;page-break-after:auto}
 .scene-sheet svg{width:100%!important;height:100%!important;box-shadow:none!important;border-radius:0!important}
 .sheet{width:190mm!important;max-width:none!important;height:276mm!important;aspect-ratio:auto!important;margin:0!important;padding:5mm!important;box-shadow:none!important;break-after:page;break-inside:avoid;page-break-after:always;color:#183d34!important;font:11pt/1.35 Arial,sans-serif;print-color-adjust:exact;-webkit-print-color-adjust:exact}
 .letter .sheet{width:195.9mm!important;height:258.4mm!important}
 .sheet:last-child{break-after:auto;page-break-after:auto}
 .sheet-inner{height:98%!important}
 .sheet h2{font:700 16pt/1.2 Arial,sans-serif;letter-spacing:0}
 .sheet h3{font:700 13pt Arial,sans-serif}
 .sheet,.sheet h2,.sheet h3,.prompt-card p{font-family:var(--sans)!important}
 .sheet-footer{font-size:7pt;bottom:1mm;left:5mm;right:5mm}
 .game-card header>span{font-size:9pt}
 .board td{font-size:12pt;padding:1mm;line-height:1.1}
 .board .free{font-size:10pt}
 .board.numbers td,.tombala .board td{font-size:23pt}
 .board th{font-size:18pt}
 .card-signature{font-size:7pt}
 .per-4 .board td{font-size:9pt}
 .per-4 .board.numbers td{font-size:17pt}
 .per-4 h2{font-size:12pt}
 .ticket-grid.per-4 .board td{font-size:18pt}
 .compact-long.per-4 .board td{font-size:7pt}
 .sheet-help{font-size:10pt}
 .call-list{font-size:11pt}
 .search-grid{width:145mm;height:145mm;aspect-ratio:auto}
 .search-grid td{font-size:16pt;padding:0;line-height:1.1}
 .word-bank{font-size:11pt}
 .word-list-sheet .word-bank{margin-top:8mm}
 .puzzle-head span{font-size:10pt}
 .prompt-card small{font-size:8pt}
 .prompt-card p{font-size:16pt}
 .per-9 .prompt-card p,.per-12 .prompt-card p{font-size:12pt}
 .large-print .board td{font-size:18pt}
 .large-print .board.numbers td,.large-print .tombala .board td{font-size:28pt}
 .large-print .word-bank,.large-print .call-list{font-size:16pt}
 .large-print .search-grid td{font-size:18pt}
 .large-print .prompt-card p{font-size:18pt}
 .ink-only .sheet{color:black!important}
 .ink-only .board td,.ink-only .board th,.ink-only .search-grid td{color:black!important}
 .ink-only .sheet h2{color:black!important}
 :lang(ar) .sheet h2,:lang(ar) .sheet h3{line-height:1.5}
 :lang(ar) .board td{line-height:1.35}
}
