@font-face{font-family:ShiluDaoli;src:url('./fonts/AlimamaDaoLiTi-Regular.woff2') format('woff2');font-weight:400;font-style:normal;font-display:swap}
:root{--art-world:url('./assets/world.png');--art-battle:url('./assets/battle.png');--art-spring:url('./assets/mountains-spring.jpg');--art-river:url('./assets/river-mountains.jpg');--gold:#c0a06a;--serif:"ShiluDaoli","LiSu","隶书","SimSun",serif;--reading:"SimSun","Songti SC",serif;--paper:#e9dfc4;--surface:#f4ebd3;--ink:#253f35;--muted:#8f865f;--line:#b9a477;--green:#254f45;--red:#a2432d}
body{background:#102f2c;color:#ede0ba;background-image:linear-gradient(180deg,#0b282ad9,#153830e8),var(--art-world);background-size:cover;background-attachment:fixed}.sidebar{backdrop-filter:none!important}body:has(.view-game[data-theme=heroic]){background-image:linear-gradient(180deg,#0b282ad9,#153830e8),var(--art-battle)}.theme-love .theme-painting{object-position:15% 48%}.game-main,.game-rail{min-width:0}.hand-panel{min-width:0;max-width:100%;overflow:hidden}.hand-pool-scroll{width:100%;max-width:100%;min-width:0}
.app-shell{display:block}.sidebar{position:relative;top:auto;bottom:auto;height:88px;width:100%;display:flex;flex-direction:row;align-items:center;justify-content:space-between;padding:0 max(30px,calc((100vw - 1400px)/2));border:0;border-bottom:1px solid #b5955755;background:linear-gradient(180deg,#0b2724f5,#153932f0);box-shadow:0 6px 20px #051c1b66}
.sidebar .brand{color:#e6d5a6}.brand-name{font-size:26px;letter-spacing:.18em}.brand-sub{color:#b49d6d;font-size:8px;letter-spacing:.35em}.seal{background:#973e2a;box-shadow:0 0 0 1px #d4b97e,0 0 14px #0004}.sidebar .nav{display:flex;gap:15px}.nav button{color:#b9bc9a;font:17px var(--serif);border-radius:0;padding:11px 14px;border-bottom:2px solid transparent}.nav button.active{color:#f1d99c;background:linear-gradient(180deg,transparent,#9d7c3626);border-bottom-color:#d3b46f}.nav button:not(.active):hover{background:#b09a4b12;color:#f2dc9e}.side-label,.side-rule,.side-verse,.side-bottom{display:none}
.main{max-width:1440px;padding:0 38px 48px}.topbar{height:58px;color:#b4b698;border-color:#c1a36c40}.topbar .mobile-brand{display:none}.topbar .avatar{color:#dfcc98;border-color:#a28d594d}.topbar-right span svg{color:#c4aa6b}.topbar-date{font:12px var(--serif);letter-spacing:.22em}.page-title h1,.section-heading h2{color:#ead7a3}.page-title p,.section-heading p,.subtle,.library-count{color:#b1b397}.eyebrow{color:#ccb679}.text-btn{color:#d0b977}.filter-chip{background:#133d34b0;border-color:#a78b575c;color:#c7c8a5}.filter-chip.active,.selected-theme{background:#d5c28d!important;color:#263f31!important;border-color:#d8bd77!important}
.hero{min-height:495px;margin:12px -8px 0;border:1px solid #bea369;border-radius:2px;box-shadow:0 14px 50px #031d1d88,inset 0 0 0 7px #ba945137;background:#a98f5d;overflow:visible}.hero:after{content:"";position:absolute;inset:8px;border:1px solid #6f582c55;pointer-events:none;z-index:4}.hero-art{inset:0;width:100%;height:100%;opacity:1;mask-image:none;object-fit:cover;object-position:50% 48%;z-index:-2;border-radius:2px}.hero:before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,#e8d39de8 0%,#e8d39dc7 26%,#d4bc821a 56%,transparent);z-index:-1}.hero-copy{padding:43px 48px;max-width:590px;color:#213e34;z-index:2}.hero .eyebrow{color:#85542e;font-size:12px}.hero h1{font:58px/1.35 var(--serif);letter-spacing:.1em;color:#193f36;margin:22px 0;text-shadow:0 1px #e8d49c}.hero h1 span{font-size:55px}.hero p{font:16px/1.9 var(--serif);color:#42533b;max-width:340px}.hero .text-btn{color:#344f39;font-size:15px}.hero-actions{margin-top:31px;gap:26px}.btn{border-radius:1px;font-family:var(--serif);font-size:16px;box-shadow:inset 0 0 0 1px #c1a36655;letter-spacing:.1em}.btn.primary,.deal-btn{background:linear-gradient(135deg,#244f43,#153c34);border:1px solid #9d814b;color:#f2deb0}.btn.primary:hover,.deal-btn:hover{background:#2c6050}.hero .btn.primary{padding:13px 27px}.hero-note{right:29px;top:32px;color:#293e30;font:15px/2 var(--serif);writing-mode:vertical-rl}.hero-foreground{position:absolute;right:-18px;bottom:-26px;width:45%;height:auto;pointer-events:none;z-index:3;filter:drop-shadow(0 8px 9px #18291e66)}
.overview-strip{padding:30px 0 5px}.metric{border-color:#b59b5e33}.metric strong{font-size:34px;color:#d7bb7b}.metric span{color:#b7baa0}.theme-grid{gap:20px}.theme-card{height:300px;padding:26px 25px 20px;isolation:isolate;background:#244638;border:1px solid #b39455;border-radius:2px;box-shadow:0 6px 20px #001c1c66;color:#f0deb2;display:flex;flex-direction:column;justify-content:flex-end}.theme-card:before{content:"";position:absolute;inset:7px;border:1px solid #d0b67d6b;z-index:2;pointer-events:none}.theme-card:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,#0b221b00 28%,#0c2a23aa 53%,#09271ff7);z-index:-1}.theme-painting{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:-2;transition:transform .5s}.theme-card:hover .theme-painting{transform:scale(1.055)}.theme-card:hover{transform:translateY(-4px);border-color:#e4c789}.theme-home .theme-painting{filter:brightness(.72) saturate(.7) hue-rotate(14deg)}.theme-love .theme-painting{object-position:5% 78%;filter:sepia(.18)}.theme-seasons .theme-painting{object-position:10% 50%}.theme-heroic .theme-painting{object-position:72% 40%}.theme-xin .theme-painting{object-position:50% 20%}.chapter-corner{position:absolute;left:23px;top:20px;color:#fae4b3;border:1px solid #d4bd8c77;background:#173d30ba;font:13px var(--serif);writing-mode:vertical-rl;padding:9px 6px;letter-spacing:.3em}.theme-card-top{color:#ddc58c}.theme-icon{display:none}.theme-card-top small{color:#e4cf9a;font:12px var(--serif);letter-spacing:.2em}.theme-card h3{font-size:31px;margin:4px 0;color:#f2e0b7;text-shadow:0 2px 4px #0008}.theme-card .subtitle{color:#d9d3b7;font:13px/1.9 var(--serif);max-width:90%}.theme-card-bottom{color:#d6c190;margin-top:16px}.mini-track i{background:#bdbb9266}.mini-track i.done{background:#d7b777}.bottom-note{border-color:#a58c5c4d}.bottom-note strong{color:#d0bb88}
.chapter-hero{min-height:250px;overflow:hidden;isolation:isolate;border:1px solid #c0a46b;border-radius:1px;background:#183e32;color:#f5e2b8}.chapter-painting{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 40%;z-index:-2}.chapter-hero:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,#092d28e8 0%,#0c3428ab 48%,transparent);z-index:-1}.chapter-hero h2{font-size:39px;color:#f1d99a}.chapter-hero p,.chapter-hero small{color:#d5c9a0}.chapter-symbol{color:#d3b67555;font-size:100px}.theme-xin .chapter-painting{object-position:right 22%;width:70%;left:auto}.theme-heroic .chapter-painting{object-position:70% 40%}.level-row,.poem-card{background:linear-gradient(110deg,#f0e5c9,#ddcc9f);border-color:#af925f;color:#264237;border-radius:1px;box-shadow:inset 0 0 0 4px #ebddba,0 4px 12px #071d1d4d}.level-row p,.poem-card p{color:#857852}.level-num{color:#aa8045}.side-panel{color:#d3c7a1;border-color:#9d885854}.rule-item strong,.side-panel h3{color:#e7d5a8}.tip-box{background:#173e32;color:#bdc3a1;border-color:#a88e54}
.game-top{color:#c6bb93}.game-breadcrumb button{color:#dec78d}.mode-tag{border-color:#a9976744;background:#25473c;color:#cdc7a6}.game-layout{grid-template-columns:minmax(0,1fr) 255px;gap:22px}.battle-ribbon{display:flex;justify-content:space-between;align-items:center;padding:10px 20px;margin-bottom:12px;border:1px solid #a98b4f8c;background:linear-gradient(90deg,#0a302ce6,#284f3fe6);color:#bdbd93;font:14px var(--serif)}.battle-ribbon b{color:#f1d595;margin-left:7px}.ink-hearts{display:flex;align-items:center;gap:8px}.ink-hearts i{color:#d9b66a;font-style:normal;font-size:18px;text-shadow:0 0 10px #d7b55544}.ink-hearts i.spent{color:#566458;text-shadow:none}.game-board-wrap{border:1px solid #a98b52;border-radius:2px;background:linear-gradient(90deg,#dfcfaa,#f5ebcf 15%,#e5d6af 80%,#cbb98a);color:#284236;box-shadow:0 10px 30px #031e1b88,inset 5px 0 #9d753b55,inset -5px 0 #9d753b55;overflow:hidden}.board-heading{background:#e0d1ab;border-bottom:1px solid #a28b5777;padding:14px 22px}.board-heading h2{font-size:24px}.board-progress{color:#756e4d}.board-tools{display:flex;justify-content:space-between;align-items:center;padding:8px 20px;font-size:11px;color:#8c7950;border-bottom:1px solid #b9a47444}.board-tools button{padding:4px 12px;margin-left:5px;border:1px solid #a38b59;font:13px var(--serif)}.board-tools button.on{background:#315446;color:#f4e6bb}.board-scroll{padding:25px 22px;max-height:650px;min-height:370px;display:flex;align-items:flex-start;justify-content:flex-start;overflow:auto;container-type:inline-size;scrollbar-color:#9a8156 #dfd1ad;scrollbar-width:thin;background-image:linear-gradient(#eee4cbd9,#e8ddc1e8),var(--art-spring);background-size:cover}.board-grid{--cell:clamp(14px,min(calc((100cqw - (var(--board-width) - 1)*4px)/var(--board-width)),calc((570px - (var(--board-height) - 1)*4px)/var(--board-height))),38px);gap:4px;margin:auto;flex-shrink:0}.zoom-near .board-grid{--cell:38px}.cell{font-family:var(--serif);font-size:calc(var(--cell)*.68);border-radius:1px;box-shadow:0 1px 2px #4f3a1e33;border-color:#b6a075;color:#284f41}.cell.empty{background:#f8f0da;box-shadow:inset 0 0 0 2px #e9ddbb,0 1px 2px #8465353d}.cell.given{background:#d6d2ad;color:#354c36}.cell.active-line{background:#e8d293;border-color:#b88e3d}.cell.selected{background:#f5d58c;outline:2px solid #a34028;outline-offset:1px;box-shadow:0 0 12px #a86a2533}.cell.filled,.cell.completed{background:#c6d6ab;color:#1f5a3b}.cell .number{font-size:max(6px,calc(var(--cell)*.2));color:#9e7d42}.board-caption{color:#7e704c;padding:9px 14px 12px;background:#ded1acb8;font-family:var(--serif)}
.hand-panel{background:linear-gradient(120deg,#294d40f5,#0f342df5);color:#eadbb1;border:1px solid #b19252;border-radius:2px;padding:17px 20px;box-shadow:0 6px 23px #001a1966,inset 0 0 0 5px #c3a26810}.hand-header h3{color:#e7c98d;font-size:23px}.hand-count{color:#c4bd96}.hand-count strong{color:#e6ca8f}.hand-pool-scroll{overflow-x:auto;scrollbar-width:thin;scrollbar-color:#ad955e #153c31;padding:3px 2px 8px}.hand-slots{display:grid;grid-template-columns:repeat(var(--slots),minmax(31px,1fr));min-width:calc(var(--slots)*35px);gap:4px}.tile,.empty-slot{height:45px;aspect-ratio:auto;max-height:none;font:24px var(--serif);border-radius:1px}.tile{background:linear-gradient(135deg,#fff3ce,#d9c18d);color:#284532;border:1px solid #b79350;box-shadow:inset 0 0 0 2px #f7e9c4,0 3px 0 #877243;transition:.12s}.tile:hover{background:#fff4cd;transform:translateY(-3px);box-shadow:0 0 0 1px #efd18e,0 5px 7px #001b1d99}.tile.chosen{background:#dec27e;border-color:#993a26}.tile .key{font-size:7px;color:#988452}.empty-slot{background:#102e27aa;border:1px solid #a58e4a33;color:#9f9a6f44}.hand-footer{margin-top:14px}.hand-panel .btn.outline{border:1px solid #9e8a55;color:#e3d0a0;background:#7f7e3320}.hand-panel .btn[aria-pressed=true]{background:#aa6b36;color:#fff0cc}.deal-btn{background:linear-gradient(135deg,#9f3e29,#713122);border:1px solid #d2a45f;color:#fff1c8;box-shadow:inset 0 0 0 3px #b56f3b4a;min-width:155px;font-size:18px}.deal-btn.risky{background:#a43125;box-shadow:0 0 15px #c53e2c66}.hand-note,.hand-panel .subtle{color:#b5bb94}.danger-text,.hand-count.danger{color:#efb28b}.game-status{color:#d1bd8d;font-family:var(--serif);font-size:17px}.rail-panel{border:1px solid #b09a6280;border-radius:1px;background:linear-gradient(130deg,#e8dcba,#cebb8f);color:#304b3b;box-shadow:inset 0 0 0 4px #f2e8cd66}.rail-panel h3{color:#36513c}.rail-panel .rail-help,.rail-help{color:#9b9875}.rail-panel .rail-help{color:#7b7251}.clue-pattern{color:#284a3d;font-family:var(--serif)}.clue-number{color:#927742}.clue-toggle{color:#6f582d}.line-selects button{border-color:#b59e67;color:#6d6847;background:#e6d9b3}.line-selects button.active{background:#335341;color:#f4e6be}.rail-panel .text-btn{color:#8d442c}.line-selects{gap:6px}.line-selects button{min-width:31px}.ability-chip{background:#2a4e3d;color:#e7d6aa;border-color:#b79f62}
.journey-intro{position:relative;isolation:isolate;overflow:hidden;min-height:310px;border:1px solid #b99d61;border-radius:1px;background:#234b3c;color:#e9d8ac}.journey-painting{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:80% 40%;z-index:-2}.journey-intro:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,#082d29ee 10%,#113c2ea8 55%,transparent);z-index:-1}.journey-intro p{color:#c5c4a2}.journey-intro h2{font-size:33px;color:#eed7a2}.journey-diagram{visibility:hidden}.hero-picker{gap:18px}.hero-option{position:relative;isolation:isolate;overflow:hidden;min-height:230px;border:1px solid #9f8c57;background:#204838;color:#eadbb4;border-radius:1px;padding:30px 24px}.hero-option:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,#133a31fc,#123c30e0 36%,#173d3077 65%,transparent);z-index:-1}.hero-portrait{position:absolute;right:0;top:0;height:100%;width:62%;object-fit:cover;object-position:50% 18%;z-index:-2}.hero-option p{max-width:60%;color:#c6c4a0;font-size:12px}.hero-option h3{color:#f3dcaa;font-size:28px}.hero-option .hero-letter{display:none}.hero-option small{color:#d2b974}.hero-option.active{border:2px solid #ddbd70;padding:29px 23px;background:#1b4132;box-shadow:0 0 22px #e3b86522}.run-summary,.run-over-card{border-color:#b2975c;background:#1b4136;color:#e0d0a3}.node{position:relative;isolation:isolate;overflow:hidden;border-color:#b19457;background:#234535!important;border-radius:1px;min-height:155px;color:#ead4a1!important}.node:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,#153d33ef,#143a31a6);z-index:-1}.node-painting{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:-2}.node h3{font-size:24px}.node p,.node small,.route-step.future .node p,.route-step.future .node small{color:#c5c2a0}.route-step.future{opacity:.6}.route-step.current .node{border-color:#dcc07a}.route-step-dot{background:#294b3c;border-color:#c0a566;color:#ddc792}.route-step-label{color:#c5bd93}.route-step{border-color:#a18c5577}.poet-face{float:right;width:130px;height:170px;object-fit:cover;object-position:50% 20%;margin:15px 0 12px 20px;border:4px solid #d0ba87;outline:1px solid #9b7c47}.modal{background:linear-gradient(130deg,#f1e6c9,#dccc9f);border:1px solid #ad8b4b;border-radius:1px;box-shadow:inset 0 0 0 6px #ae8c4440,0 25px 90px #001817bb;color:#294534}.modal h2{font-family:var(--serif);font-size:30px}.modal .modal-sub{color:#847551}.poem-reading{color:#35533c}.modal .btn.outline,.modal .btn.outline.small{color:#2f4a3a;border:1px solid #8a7340;background:#fff7e4;box-shadow:none}
.modal .text-btn{color:#7a3a28;font-size:15px;font-weight:500;text-decoration:underline;text-underline-offset:3px}
.modal .extra-rules summary{color:#35503c;font-weight:500}
.modal .answer-pagination button{color:#3a4f3c;background:#fff8e6;border:1px solid #9a8150;min-height:36px;padding:6px 14px}
.modal .line-selects button{min-height:36px;min-width:36px;font-size:12px}.modal-backdrop{background:#031c1bd9}.reward{background:#eadcb9;border-color:#ae925a;border-radius:1px}.reward:hover{background:#f4e5bb}.collection-banner{background:#244c3d;border-color:#b0985c;color:#e8d6a5}.collection-banner p{color:#c7c2a0}
@media(max-width:1050px){.sidebar{padding:0 24px;height:80px}.sidebar .nav{gap:1px}.nav button{padding:10px 8px;font-size:15px}.brand-name{font-size:22px}.main{padding:0 24px 40px}.hero{min-height:450px}.hero h1{font-size:48px}.hero h1 span{font-size:47px}.hero-copy{padding:36px}.hero-foreground{width:48%}.game-layout{grid-template-columns:1fr}.game-rail{grid-template-columns:1fr 1fr}.theme-card{height:270px;padding:22px 19px}.theme-card h3{font-size:28px}.hero-picker{grid-template-columns:repeat(3,1fr)}.hero-option{padding:24px 15px}.hero-option.active{padding:23px 14px}.hero-option p{max-width:76%;font-size:11px}}
@media(max-width:700px){.sidebar{height:72px;padding:0 16px}.sidebar .brand{display:flex}.sidebar .brand-name{font-size:22px}.sidebar .nav{position:fixed;bottom:0;left:0;right:0;background:#0e302af7;border-top:1px solid #b59a5c;padding:7px 6px calc(7px + env(safe-area-inset-bottom));z-index:100;justify-content:space-around}.nav button{font-size:11px;padding:5px;flex-direction:column;gap:4px;flex:1}.nav button svg{width:21px;height:21px}.nav button.active{background:#b1974b15}.main{padding:0 15px 100px}.topbar{height:40px;font-size:9px}.topbar-right span:first-child{display:flex}.hero{margin:9px 0 0;min-height:425px;overflow:hidden}.hero-art{width:100%;right:0;object-position:61% 50%}.hero:before{background:linear-gradient(90deg,#ead6a2e0,#e2ca8c65 65%,transparent)}.hero-copy{padding:28px 22px 100px}.hero h1{font-size:40px;letter-spacing:.06em;margin:22px 0 16px}.hero h1 span{font-size:38px}.hero p{font-size:14px;max-width:250px}.hero .eyebrow{font-size:9px}.hero-actions{margin-top:24px;gap:18px}.hero .btn.primary{padding:11px 18px;font-size:15px}.hero .text-btn{font-size:13px}.hero-foreground{width:78%;right:-22px;bottom:-20px}.hero-note{display:none}.overview-strip{padding:24px 0 0}.metric{gap:7px;padding:0 7px}.metric strong{font-size:27px}.metric span{font-size:9px}.theme-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.theme-card{height:260px;padding:17px 13px}.theme-card h3{font-size:25px}.theme-card .subtitle{font-size:11px;line-height:1.8}.chapter-corner{left:15px;top:14px;font-size:10px;padding:7px 4px}.theme-card-top small{font-size:9px;letter-spacing:.08em}.theme-card:before{inset:5px}.theme-card-bottom{font-size:9px;gap:4px}.mini-track i{width:12px}.theme-card .subtitle{min-height:40px}.section-heading h2{font-size:26px}.section-heading p{font-size:11px}.bottom-note{display:block}.bottom-note .text-btn{margin-top:9px}.chapter-hero{min-height:210px;padding:24px 18px;gap:14px}.chapter-symbol{font-size:64px}.chapter-hero h2{font-size:31px}.chapter-hero p{font-size:15px}.chapter-hero small{font-size:10px}.theme-xin .chapter-painting{width:100%;opacity:.75}.page-title h1{font-size:30px}.page-title p{font-size:11px}.board-heading{padding:12px 14px}.board-heading h2{font-size:20px}.battle-ribbon{padding:9px 12px;font-size:12px}.ink-hearts{gap:5px}.ink-hearts i{font-size:15px}.board-scroll{padding:20px 12px;min-height:300px;max-height:560px}.board-grid{--cell:clamp(12px,min(calc((100cqw - (var(--board-width) - 1)*3px)/var(--board-width)),calc((480px - (var(--board-height) - 1)*3px)/var(--board-height))),31px);gap:3px}.zoom-near .board-grid{--cell:36px}.cell{font-size:calc(var(--cell)*.7)}.board-tools{font-size:10px;padding:8px 12px}.board-tools button{font-size:11px;padding:3px 8px}.board-caption{font-size:10px}.hand-panel{padding:14px 12px}.hand-header h3{font-size:21px}.hand-count{font-size:10px}.hand-count strong{font-size:21px}.hand-slots{min-width:calc(var(--slots)*34px);gap:4px}.tile,.empty-slot{height:43px;font-size:24px}.tile .key{display:none}.hand-footer .btn{font-size:13px;min-width:0;padding:9px 12px}.hand-footer .deal-btn{font-size:17px;padding:11px 18px}.hand-note{font-size:10px;max-width:230px}.hand-pool-scroll:after{content:""}.game-rail{display:grid;grid-template-columns:1fr}.game-rail .rail-panel:first-child{grid-column:1/-1}.rail-panel{padding:18px}.rail-panel .rail-help{font-size:12px}.game-status{font-size:15px}.hero-picker{grid-template-columns:1fr;gap:14px}.hero-option{min-height:200px;padding:28px 24px}.hero-option.active{padding:27px 23px}.hero-option p{max-width:55%;font-size:12px}.hero-portrait{width:55%}.hero-option h3{font-size:30px}.journey-intro{padding:28px 22px;min-height:300px}.journey-intro h2{font-size:28px}.journey-intro p{font-size:12px}.node{min-height:145px;padding:13px 9px}.node h3{font-size:18px}.node p{font-size:10px}.node small{font-size:8px}.route-step{padding-left:18px}.poet-face{width:95px;height:135px}.modal h2{font-size:27px}.modal-backdrop{padding:12px}.reward{padding:15px 10px}.reward p{font-size:11px}.poem-card h3{font-size:18px}}

/* Display face © Alimama. Official font used without modification. */
h1,h2,h3,.cell,.tile,.brand-name{font-synthesis:none;font-weight:400}.poem-reading,.modal-sub,.rail-help,.page-title p,.hero p{font-family:var(--reading)}.font-credit{padding:20px 0 4px;font:10px var(--reading);color:#c1b18a;letter-spacing:.05em}.zoom-near .board-grid{--cell:44px}.zoom-near .cell{font-size:30px}

/* The playing surface owns the viewport; instructions live in the poetry drawer. */
body:has(.view-game){overflow:hidden}
.view-game{position:fixed!important;inset:0;display:block!important;height:100dvh;overflow:hidden}
.view-game .sidebar,.view-game .topbar{display:none!important}
.view-game .main{width:100%;max-width:none;height:100%;padding:8px 20px 12px!important;display:grid;grid-template-rows:32px minmax(0,1fr);gap:6px;overflow:hidden}
.view-game .game-top{margin:0;min-width:0;gap:8px}.game-top-actions{display:flex;gap:8px;flex-shrink:0}.game-top-actions button{font-size:12px;color:#d9c291;border:1px solid #b4965f66;padding:3px 12px;background:#142f2cd9;border-radius:3px}
.view-game .game-layout{display:block;min-height:0}.view-game .game-main{height:100%;display:grid;grid-template-rows:minmax(0,1fr) auto;gap:8px}
.view-game .game-board-wrap{display:grid;grid-template-rows:36px minmax(0,1fr) 28px;min-height:0;max-height:none}
.view-game .board-heading{padding:3px 16px;min-height:0;gap:8px}.view-game .board-heading h2{font-size:22px;white-space:nowrap}
.view-game .battle-ribbon{padding:0;margin:0;display:flex;gap:18px;border:0;background:none;min-height:0;font-size:11px;box-shadow:none}.view-game .battle-ribbon span{white-space:nowrap}
.view-game .board-scroll{container-type:size;min-height:0;max-height:none;height:auto;padding:4px;overflow:hidden;display:grid;place-items:center}
.view-game .board-grid{--gap:3px;--cell:min(48px,calc((100cqw - (var(--board-width) - 1)*var(--gap))/var(--board-width)),calc((100cqh - (var(--board-height) - 1)*var(--gap))/var(--board-height)));position:relative;gap:var(--gap);margin:0;flex-shrink:1}
.view-game .cell{font-size:calc(var(--cell)*.69);border-radius:2px;min-width:0;min-height:0;padding:0}.view-game .cell .number{font-size:clamp(5px,calc(var(--cell)*.22),8px);top:1px;left:1px;line-height:1}.read-order{position:absolute;right:1px;bottom:0;font:clamp(5px,calc(var(--cell)*.21),8px)/1.1 var(--sans);color:#a47428}.shared-cell{box-shadow:inset 0 0 0 1px #ae945655}
.reading-path{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:visible}.reading-path polyline{fill:none;stroke:#b88935;stroke-width:.1;stroke-linejoin:round;stroke-linecap:round}
.view-game .board-caption{padding:2px 8px;display:flex;justify-content:center;align-items:center;overflow:hidden}.board-caption button{font:clamp(11px,1.35vw,17px) var(--serif);color:#7a632f;white-space:nowrap}.view-game .board-caption .blank{color:#af9f7c}
.view-game .hand-panel{padding:7px 14px 8px;margin:0;max-width:1600px;width:100%;justify-self:center}.view-game .hand-header{margin:0 0 5px;height:24px}.view-game .hand-header h3{font-size:19px}.deck-count{font-size:10px;color:#887451}.view-game .hand-count{font-size:11px}.view-game .hand-count strong{font-size:18px}
.view-game .hand-pool-scroll{overflow:hidden;width:100%}.view-game .hand-slots{min-width:0;width:100%;grid-template-columns:repeat(var(--slots),minmax(0,1fr));gap:4px}.view-game .tile,.view-game .empty-slot{aspect-ratio:auto;width:100%;height:clamp(23px,4.2vh,40px);max-height:none;min-width:0;font-size:clamp(14px,2.2vw,28px);padding:0;line-height:1}.view-game .tile:hover{transform:none}.view-game .tile.chosen{transform:none;outline-offset:-2px}.view-game .tile .key{font-size:7px;right:2px;bottom:1px}
.view-game .hand-footer{margin-top:6px;gap:8px}.view-game .hand-footer .btn{padding:5px 12px;min-height:30px;font-size:13px}.view-game .deal-btn{min-width:120px}.view-game .game-status{margin:0;padding:0;min-height:0;font-size:12px;line-height:1.2;flex:1;text-align:center}.view-game .game-breadcrumb{overflow:hidden;white-space:nowrap}.view-game .game-breadcrumb>span{overflow:hidden;text-overflow:ellipsis}
@media(max-width:700px){.view-game .main{padding:4px 6px 6px!important;grid-template-rows:28px minmax(0,1fr);gap:4px}.view-game .game-main{gap:4px}.view-game .game-top-actions{gap:3px}.game-top-actions button{font-size:10px;padding:3px 6px}.view-game .game-breadcrumb{font-size:10px;gap:4px}.view-game .board-heading{padding:2px 7px}.view-game .board-heading h2{font-size:16px}.view-game .battle-ribbon{gap:7px;font-size:9px}.view-game .battle-ribbon>span:nth-child(3){display:none}.view-game .board-grid{--gap:2px}.view-game .board-scroll{padding:2px}.view-game .hand-panel{padding:5px 6px}.view-game .hand-slots{gap:2px}.view-game .hand-count{font-size:10px}.view-game .hand-header h3{font-size:16px}.view-game .tile .key{display:none}.view-game .hand-footer .btn{padding:4px 7px;font-size:11px}.view-game .deal-btn{min-width:85px}.view-game .game-status{font-size:10px;max-width:45%;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.view-game .board-caption button{font-size:11px}.view-game .ink-hearts{gap:2px}.view-game .hand-count strong{font-size:15px}}
@media(max-height:550px){.view-game .hand-panel{padding:3px 10px}.view-game .hand-header{height:19px;margin-bottom:3px}.view-game .tile,.view-game .empty-slot{height:22px;font-size:18px}.view-game .game-board-wrap{grid-template-rows:28px minmax(0,1fr) 22px}.view-game .hand-footer{margin-top:3px}.view-game .hand-footer .btn{min-height:23px;padding:2px 10px}}

.view-game .board-scroll{justify-content:center}.view-game .battle-ribbon,.view-game .battle-ribbon b{color:#665432}.view-game .ink-hearts i{color:#956b31}.view-game .ink-hearts i.spent{color:#bdb299}

.revision-label{font:10px var(--reading);color:#d0b67b;align-self:center;padding:0 2px}@media(max-width:420px){.revision-label{font-size:8px}}

/* End-of-match answers are a presentation layer; they never become player moves. */
.view-game .cell.answer-missed{color:#ad302e!important;background:#fff0dc!important;border:1px solid #b85a42!important;font-weight:400;text-shadow:0 0 1px #a33a2a;box-shadow:inset 0 0 0 1px #bb604522}
.view-game .cell.answer-missed:after{display:none}.view-game .cell.answer-missed .read-order{color:#984333}.answer-missed-text{color:#b52f2d!important;font-style:normal;text-decoration:underline;text-decoration-color:#b52f2d55;text-underline-offset:4px}.outcome-lost .reading-path polyline{stroke:#ab4131}.outcome-won{box-shadow:0 0 28px #d6b66b50}
.modal:has(.outcome-summary){max-width:760px;padding:20px 30px;scrollbar-width:none}.modal:has(.outcome-summary)::-webkit-scrollbar{display:none}.outcome-summary .result-seal{width:58px;height:58px;font-size:32px;margin:0 auto 8px}.outcome-summary .eyebrow{justify-content:center}.outcome-summary h2{font-size:27px;margin:6px 0;padding:0}.outcome-summary .result-stats{margin:13px 0 15px;gap:40px}.outcome-summary .result-stats strong{font-size:24px}.victory .result-seal{color:#a07a28;border-color:#ac8437;box-shadow:0 0 0 5px #b38b3712,0 0 30px #ddbd7144}.defeat .result-seal{color:#9b3931;border-color:#9b3931}.outcome-enter .result-seal{animation:seal-arrive .65s cubic-bezier(.2,.8,.3,1) both}.outcome-enter.victory h2{animation:title-glow 2.2s ease-out both}
.answer-review{border-top:1px solid #a3874c66;padding-top:10px}.answer-review-heading{display:flex;justify-content:space-between;gap:8px;align-items:center;margin-bottom:6px;color:#5d5136;font-size:12px}.answer-review-heading>span{font-size:11px;color:#81765e}.answer-row{padding:8px 3px;border-bottom:1px solid #8d794126}.answer-verse{font:23px/1.45 var(--serif);color:#345c49;display:flex;align-items:baseline;flex-wrap:wrap;gap:1px}.answer-number{font:10px var(--reading);color:#8c7949;width:25px;align-self:center}.answer-row small{display:block;font:10px/1.4 var(--reading);color:#7c725d;margin-left:26px;margin-top:3px}.answer-pagination{display:flex;align-items:center;justify-content:center;gap:22px;margin-top:11px;font-size:11px;color:#7c6c43}.answer-pagination button{border:1px solid #aa914b88;padding:3px 12px;border-radius:3px}.answer-pagination button:disabled{opacity:.28}.result-actions{margin-top:14px}.result-actions .btn{font-size:13px;padding:9px 16px}
.outcome-fx{position:fixed;inset:0;pointer-events:none;z-index:160;overflow:hidden;animation:fx-disappear 3.4s both}.outcome-fx i{position:absolute;left:var(--x);top:-22px;width:8px;height:15px;opacity:0;animation:gold-fall 2.8s var(--delay) ease-in both;background:#d6b357;border-radius:75% 5% 65% 10%;box-shadow:0 0 7px #edd38e66}.win-fx i:nth-child(3n){background:#b0573e;width:5px;height:12px}.win-fx i:nth-child(4n){background:#f6df9e;width:4px;height:7px}.outcome-halo{position:absolute;left:50%;top:40%;width:min(80vw,700px);aspect-ratio:1;border-radius:50%;transform:translate(-50%,-50%);background:radial-gradient(circle,transparent 32%,#ecc77155 33%,transparent 34%,transparent 42%,#e2b75b55 43%,transparent 44%);animation:halo-expand 1.7s ease-out both}.loss-fx{animation:fx-disappear 1.9s both;background:radial-gradient(ellipse at center,transparent 30%,#4a1a19bb);}.loss-fx .outcome-halo{background:radial-gradient(circle,transparent 35%,#782d2a55 36%,transparent 37%);animation:ink-collapse 1.3s ease-in both}.loss-fx i{width:6px;height:29px;background:#492c25;border-radius:80% 10% 70% 15%;animation:ink-fall 1.5s var(--delay) ease-in both;box-shadow:none}.loss-fx i:nth-child(3n){background:#ab4935}
@keyframes seal-arrive{from{transform:scale(1.8) rotate(-20deg);opacity:0}65%{transform:scale(.94) rotate(-7deg);opacity:1}to{transform:scale(1) rotate(-9deg);opacity:1}}@keyframes title-glow{from{color:#c29b3d;text-shadow:0 0 20px #eac776}to{color:#466244;text-shadow:none}}@keyframes gold-fall{0%{opacity:0;transform:translateY(-5vh) rotate(0)}12%{opacity:.95}80%{opacity:.85}100%{opacity:0;transform:translate(var(--drift),105vh) rotate(var(--turn))}}@keyframes ink-fall{0%{opacity:0;transform:translateY(20vh) scaleY(.2) rotate(-20deg)}20%{opacity:.8}100%{opacity:0;transform:translate(var(--drift),90vh) scaleY(1.5) rotate(60deg)}}@keyframes halo-expand{from{opacity:1;scale:.2}to{opacity:0;scale:1.6}}@keyframes ink-collapse{from{opacity:.8;scale:1.5}to{opacity:0;scale:.15}}@keyframes fx-disappear{0%,70%{opacity:1}100%{opacity:0;visibility:hidden}}
@media(max-width:600px){.modal:has(.outcome-summary){padding:17px 14px}.outcome-summary h2{font-size:23px}.outcome-summary .result-seal{width:45px;height:45px;font-size:27px;margin-bottom:5px}.outcome-summary .result-stats{margin:10px 0;gap:24px}.outcome-summary .modal-sub{font-size:11px}.answer-verse{font-size:20px}.answer-row{padding:6px 1px}.answer-row small{font-size:9px}.answer-review-heading{font-size:11px}.answer-review-heading>span{font-size:9px}.result-actions .btn{font-size:11px;padding:8px 12px}.result-actions{gap:7px}.answer-pagination{margin-top:7px}}
@media(prefers-reduced-motion:reduce){.outcome-fx{display:none}.outcome-enter .result-seal,.outcome-enter.victory h2{animation:none}}

.modal:has(.outcome-summary){max-height:calc(100dvh - 24px)}@media(max-height:600px){.outcome-summary .result-seal{display:none}.outcome-summary h2{font-size:21px}.outcome-summary .result-stats{margin:7px 0}.outcome-summary .result-stats strong{font-size:20px}.answer-verse{font-size:20px}.answer-row{padding:5px 2px}.result-actions{margin-top:8px}.modal:has(.outcome-summary){padding:12px 20px}.answer-review{padding-top:6px}}

.view-game .ink-hearts{display:inline-flex;align-items:center;gap:4px}.ink-hearts .ink-heart{position:relative;display:inline-block;width:14px;height:18px;font:16px/18px var(--serif);font-style:normal}.ink-heart>span{color:#b4ad9877}.ink-heart>b{position:absolute;inset:0;color:#9e7633;font-weight:400}.ink-hearts small{font:10px var(--reading);margin-left:2px;color:#745328}@media(max-width:700px){.ink-hearts .ink-heart{width:11px;font-size:13px}.view-game .ink-hearts{gap:2px}.ink-hearts small{font-size:9px}}

.stage-badge{font:11px var(--reading);color:#897042;margin-left:14px;letter-spacing:.04em}@media(max-width:900px){.stage-badge{display:none}}

.view-game .ink-hearts .ink-heart{width:14px;height:14px;background:#b4ad9877;clip-path:polygon(50% 0,100% 50%,50% 100%,0 50%);font-size:0;overflow:hidden}.view-game .ink-hearts .ink-heart>span{display:none}.view-game .ink-hearts .ink-heart>b{display:block;position:absolute;inset:0;margin:0!important;padding:0;width:100%;height:100%;font-size:0;line-height:0;background:#a98238}@media(max-width:700px){.view-game .ink-hearts .ink-heart{width:11px;height:11px}}

@media(max-width:700px){.view-game .dense-grid .number,.view-game .dense-grid .read-order{display:none}}
.view-game .board-stage{position:relative;min-height:0;overflow:hidden}
/* Leave a bottom strip for zoom controls so they never cover the last row of cells. */
.view-game .board-stage .board-scroll{position:absolute;top:0;left:0;right:0;bottom:38px;display:block;overflow:hidden;touch-action:none;overscroll-behavior:none;user-select:none}
.view-game .board-stage .board-grid{position:absolute;left:50%;top:50%;transform-origin:center;will-change:auto}
.board-scroll.is-zoomed{cursor:grab}.board-scroll.is-zoomed:active{cursor:grabbing}
.board-camera-controls{position:absolute;left:8px;right:auto;bottom:3px;z-index:4;display:flex;align-items:center;gap:2px;padding:3px;border:1px solid #b39958;background:#f0e2c4ed;box-shadow:0 2px 9px #45381b24;border-radius:4px;color:#60481f}
.board-camera-controls button{font:14px var(--reading);padding:5px 9px;border:0;background:transparent;color:inherit;cursor:pointer;min-height:30px}.board-camera-controls button:hover{background:#b99b5233}.board-camera-controls button:disabled{opacity:.35;cursor:default}.board-camera-controls output{font:11px var(--reading);min-width:38px;text-align:center}
.view-game .ink-hearts{position:relative}.view-game .ink-hearts svg.ink-heart{width:18px;height:18px;background:none;clip-path:none;overflow:visible;flex:none}
.ink-heart polygon{stroke:#e8d8ad;stroke-width:.65;stroke-linejoin:round}.ink-heart .heart-lit{fill:#a77c2f}.ink-heart .heart-empty{fill:#b5aa8a65}
.heart-heal svg{animation:ink-heal .85s ease-out}.heart-damage svg{animation:ink-damage .55s ease-out}
.health-change{position:absolute;right:12px;top:100%;z-index:8;pointer-events:none;font:bold 18px var(--reading);white-space:nowrap;animation:health-rise 1.1s ease-out forwards;text-shadow:0 1px 3px #fff6dd}.health-change.heal{color:#9b6d13}.health-change.damage{color:#a3332d}
@keyframes ink-heal{25%{filter:drop-shadow(0 0 6px #d5a126);transform:scale(1.22)}100%{filter:none;transform:scale(1)}}
@keyframes ink-damage{15%,50%{transform:translateX(-3px);filter:sepia(1) saturate(8) hue-rotate(310deg)}30%,65%{transform:translateX(3px)}100%{transform:none;filter:none}}
@keyframes health-rise{0%{opacity:0;transform:translateY(5px)}20%{opacity:1}100%{opacity:0;transform:translateY(-26px)}}
@media(max-width:700px){.view-game .board-stage .board-scroll{bottom:50px}.board-camera-controls{left:4px;right:auto;bottom:2px;padding:2px}.board-camera-controls button{font-size:12px;padding:4px 7px}.view-game .ink-hearts svg.ink-heart{width:14px;height:14px}}
@media(prefers-reduced-motion:reduce){.heart-heal svg,.heart-damage svg{animation:none}.health-change{animation:none;opacity:1}}

/* Zoom changes native glyph and grid dimensions; no bitmap scaling layer. */
.view-game .board-stage .board-grid{--fit-gap:3px;--fit-cell:min(48px,calc((100cqw - (var(--board-width) - 1)*var(--fit-gap))/var(--board-width)),calc((100cqh - (var(--board-height) - 1)*var(--fit-gap))/var(--board-height)));--cell:calc(var(--fit-cell)*var(--camera-scale,1));--gap:calc(var(--fit-gap)*var(--camera-scale,1));transform:none;will-change:auto}
@media(max-width:700px){.view-game .board-stage .board-grid{--fit-gap:2px}.view-game .board-stage .is-zoomed .dense-grid .number,.view-game .board-stage .is-zoomed .dense-grid .read-order{display:block}}

/* First visit: concrete instructions and one clear starting action. */
.welcome-hero .hero-copy{max-width:670px}.welcome-hero h1{font-size:55px}.welcome-explain{font:18px/1.9 var(--reading)!important;max-width:none!important}.welcome-hero .welcome-note{font-size:12px;margin:18px 0 12px}.welcome-hero .hero-actions{gap:14px}.welcome-hero .hero-actions .btn{min-height:48px}.welcome-hero .btn.outline{color:#36533d;border-color:#8f7c4c}.welcome-hero .hero-note{font-size:18px}
.how-to-start{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;padding:26px 0}.how-to-start>div{display:grid;grid-template-columns:36px 1fr;gap:5px 9px}.how-to-start b{grid-row:span 2;font:26px var(--serif);color:#bd9f61}.how-to-start strong{font:19px var(--serif);color:#e2cf9b}.how-to-start span{font:13px/1.6 var(--reading);color:#b9bda1}.home-shortcuts{display:flex;gap:22px;justify-content:space-between;margin-bottom:23px}.theme-picker>summary,.advanced-entry>summary{cursor:pointer;font:20px var(--serif);color:#e6d09a;padding:16px 0;border-top:1px solid #b49a5c55;min-height:52px}.theme-picker .theme-grid{padding:12px 0 24px}.advanced-entry p{font:14px/1.8 var(--reading);color:#c3c2a4}.advanced-entry .btn{font-size:14px;min-height:44px;margin-bottom:10px}.simple-rules p{font:16px/1.9 var(--reading);color:#42533a;margin:18px 0}.simple-rules b{display:block;font:22px var(--serif);color:#284d3b}.extra-rules{font:14px/1.8 var(--reading);color:#6e6348;border-top:1px solid #a58c4a66;padding-top:14px}.extra-rules summary{min-height:44px;cursor:pointer}.extra-rules p{margin:10px 0}.modal .modal-actions .btn{min-height:44px}
.feedback-label{display:block;font:16px var(--reading);color:#3b523b}.feedback-label textarea{display:block;width:100%;min-height:155px;max-height:35dvh;resize:vertical;border:1px solid #ab925b;background:#fff9e8;color:#2f4438;padding:12px;margin-top:10px;font:16px/1.65 var(--reading);border-radius:3px}.feedback-context{font:12px/1.8 var(--reading);color:#817250}
/* The lesson is a safe, separate two-sentence exercise, not a real game save. */
.view-tutorial .sidebar,.view-tutorial .topbar{display:none}.view-tutorial .main{max-width:960px;padding:16px 24px 30px}.lesson-top{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:44px}.lesson-top>span{font:12px var(--reading);color:#b9b998}.lesson-top button{min-height:44px}.lesson-title{text-align:center;margin:12px 0}.lesson-title .eyebrow{justify-content:center}.lesson-title h1{font:34px var(--serif);color:#e8d4a2;margin:12px 0}.lesson-title p{font:17px/1.65 var(--reading);color:#c8cbb1;margin:10px auto;max-width:660px;min-height:28px}.lesson-progress{display:flex;justify-content:center;gap:10px;margin:14px 0;font:12px var(--reading);color:#a4a991}.lesson-progress span{padding:7px;border-bottom:2px solid #587265}.lesson-progress .done{color:#f0d78c;border-color:#cba64e}.lesson-paper{background:linear-gradient(125deg,#f2e5bf,#ddcca0);border:1px solid #c0a36c;padding:18px;border-radius:3px;box-shadow:0 6px 25px #001b1b55}.lesson-board{display:grid;grid-template-columns:repeat(5,52px);gap:5px;justify-content:center}.lesson-cell{width:52px;height:52px;border:1px solid #bba46d;background:#f9edce;color:#31523f;font:33px var(--serif);border-radius:2px;cursor:pointer}.lesson-cell.blank{background:#fff8e6}.lesson-cell.selected{outline:3px solid #b97f2c;outline-offset:1px;background:#f4d890}.lesson-cell.given{background:#d8d7af}.lesson-paper>p{text-align:center;color:#7c6c43;font:13px/1.6 var(--reading);margin:12px 0 0}.lesson-pool{padding:16px;margin-top:12px;background:#1d493e;border:1px solid #9b844f;border-radius:3px}.lesson-pool>strong{font:17px var(--serif);color:#dfce9d}.lesson-tiles{display:grid;grid-template-columns:repeat(6,minmax(44px,1fr));gap:8px;margin:12px 0}.lesson-tiles .tile{height:54px;width:100%;font:32px var(--serif);min-width:44px;padding:0}.lesson-bottom{display:flex;align-items:center;gap:16px;justify-content:space-between}.lesson-bottom>span{font:14px/1.6 var(--reading);color:#b8c7ad}.lesson-bottom .btn{min-height:48px;white-space:nowrap}.lesson-finish{padding:14px 5px;color:#d8d3af;font:15px/1.7 var(--reading)}.lesson-finish b{font:20px var(--serif)}.lesson-finish p{margin:8px 0}.lesson-target{animation:lesson-pulse 1.5s ease-in-out infinite}@keyframes lesson-pulse{50%{box-shadow:0 0 0 4px #d8b34e77,0 0 15px #dec46b44}}
@media(prefers-reduced-motion:reduce){.lesson-target{animation:none;outline:3px solid #b98b2d}}
@media(max-width:700px){.newcomer .nav button:nth-child(3),.newcomer .nav button:nth-child(5){display:none}.sidebar .nav button{min-height:44px}.welcome-hero{min-height:420px}.welcome-hero .hero-copy{padding:30px 23px 35px}.welcome-hero h1{font-size:36px;letter-spacing:.04em}.welcome-explain{font-size:16px!important}.welcome-hero .hero-actions{flex-wrap:wrap;margin-top:20px}.welcome-hero .hero-actions .btn{font-size:15px;padding:11px 16px}.welcome-hero .hero-foreground{display:none}.welcome-hero .hero-note{display:none}.welcome-hero .welcome-note{font-size:11px}.how-to-start{grid-template-columns:1fr;padding:20px 0;gap:15px}.how-to-start>div{grid-template-columns:35px 1fr}.how-to-start strong{font-size:18px}.how-to-start span{font-size:13px}.home-shortcuts{gap:12px;flex-wrap:wrap}.home-shortcuts .text-btn{min-height:44px;font-size:14px}.simple-rules p{font-size:15px;line-height:1.8}.simple-rules b{font-size:20px}.feedback-entry{display:none}.view-tutorial .main{padding:8px 12px calc(16px + env(safe-area-inset-bottom))}.lesson-top{gap:5px}.lesson-top>span{font-size:10px}.lesson-top button{font-size:12px}.lesson-title h1{font-size:26px;margin:6px 0}.lesson-title p{font-size:15px;min-height:45px;margin:8px 0}.lesson-title .eyebrow{font-size:10px}.lesson-progress{gap:3px;font-size:10px;margin:8px 0}.lesson-progress span{padding:5px 3px}.lesson-paper{padding:12px 8px}.lesson-board{grid-template-columns:repeat(5,44px);gap:4px}.lesson-cell{width:44px;height:44px;font-size:29px}.lesson-paper>p{font-size:11px;margin-top:8px}.lesson-pool{padding:12px;margin-top:8px}.lesson-pool>strong{font-size:16px}.lesson-tiles{grid-template-columns:repeat(auto-fit,minmax(44px,1fr));gap:6px;margin:10px 0}.lesson-tiles .tile{height:48px;font-size:29px}.lesson-bottom{gap:8px;align-items:center}.lesson-bottom>span{font-size:12px}.lesson-bottom .btn{min-height:46px;font-size:14px;padding:9px 11px}.lesson-finish{font-size:13px}.lesson-finish b{font-size:18px}}
@media(max-width:700px) and (max-height:740px){.lesson-title .eyebrow,.lesson-progress{display:none}.lesson-title h1{font-size:23px}.lesson-title p{font-size:14px;margin:6px 0;min-height:42px}.lesson-title{margin:5px 0}.lesson-paper{padding:8px}.lesson-top{min-height:40px}.lesson-top button{min-height:40px}}
/* Touch-sized, paged letters: all pool cards remain present in the game state. */
@media(max-width:700px),(max-height:500px) and (max-width:1000px){.view-game .main{padding:4px 6px calc(6px + env(safe-area-inset-bottom))!important;grid-template-rows:44px minmax(0,1fr)}.view-game .game-top{min-height:44px}.view-game .game-top-actions{gap:4px}.view-game .game-top-actions button{min-height:44px;padding:6px 9px;font-size:13px}.view-game .game-top-actions button[data-action=fullscreen],.view-game .revision-label{display:none}.view-game .game-breadcrumb{font-size:12px;gap:6px}.view-game .game-breadcrumb>button{min-height:44px;min-width:48px}.view-game .game-breadcrumb>span{max-width:30vw}.view-game .game-board-wrap{grid-template-rows:32px minmax(0,1fr) 38px}.view-game .board-heading{padding:3px 8px}.view-game .board-caption{padding:4px}.view-game .board-caption button{font-size:16px;min-height:30px}.view-game .hand-panel{padding:8px}.view-game .hand-header{height:24px;margin-bottom:6px;gap:6px}.view-game .hand-header h3{font-size:17px}.view-game .hand-count{font-size:11px}.view-game .hand-count strong{font-size:18px}.view-game .deck-count{font-size:10px}.view-game .hand-slots.touch-hand{grid-template-columns:repeat(var(--slots),minmax(44px,1fr));gap:6px}.view-game .touch-hand .tile,.view-game .touch-hand .empty-slot{width:100%;min-width:44px;height:48px;min-height:48px;font-size:29px}.hand-pagination{display:flex;align-items:center;justify-content:space-between;gap:5px;margin-top:5px}.hand-pagination button{min-height:44px;min-width:65px;font:14px var(--reading);color:#e3d2a7;border:1px solid #bca15b77;border-radius:3px;padding:6px 8px}.hand-pagination button:disabled{opacity:.3}.hand-pagination span{font:12px var(--reading);color:#c2c7a9;text-align:center}.view-game .hand-footer{display:grid;grid-template-columns:1fr auto;gap:5px 8px;margin-top:5px}.view-game .hand-footer>.flex{gap:6px}.view-game .hand-footer .btn{min-height:44px;min-width:68px;font-size:14px;padding:7px 10px}.view-game .hand-footer .deal-btn{min-width:108px;font-size:17px}.view-game .game-status{grid-row:2;grid-column:1/-1;max-width:none;min-height:34px;width:100%;font:13px/1.5 var(--reading);-webkit-line-clamp:2;text-align:left;display:block;color:#d4d4b8}.view-game .board-stage .board-scroll{bottom:52px}.view-game .board-camera-controls{max-width:calc(100% - 8px);left:4px;right:auto;bottom:2px;padding:1px;gap:0}.board-camera-controls button{min-width:40px;min-height:44px;font-size:13px;padding:4px}.board-camera-controls output{min-width:34px;font-size:10px}.view-game .battle-ribbon{font-size:10px;gap:8px}.view-game .battle-ribbon>span:nth-child(2),.view-game .battle-ribbon>span:nth-child(3){display:none}}
@media(max-height:500px) and (min-width:650px) and (max-width:1000px){.view-game .game-main{grid-template-columns:minmax(0,1fr) minmax(270px,38%);grid-template-rows:minmax(0,1fr);gap:6px}.view-game .hand-panel{height:100%;max-height:100%;display:flex;flex-direction:column;justify-content:center}.view-game .board-heading h2{font-size:16px}.view-game .game-breadcrumb>span{max-width:45vw}.view-game .game-status{font-size:12px}.view-game .hand-footer{margin-top:5px}.view-game .game-board-wrap{grid-template-rows:28px minmax(0,1fr) 32px}.view-game .board-caption button{font-size:13px}}
@media(max-width:700px),(max-height:500px) and (max-width:1000px){.touch-hand .key{display:none}.board-camera-controls button{min-width:44px}}

/* Parchment modals need dark ink buttons; page chrome uses light gold text on dark green. */
@media(max-width:700px){
  .modal{padding-bottom:calc(18px + env(safe-area-inset-bottom))}
  .modal .modal-actions{gap:10px;flex-direction:column;align-items:stretch;margin-top:18px}
  .modal .modal-actions .btn,
  .modal .modal-actions .text-btn{
    width:100%;
    justify-content:center;
    min-height:48px;
    padding:12px 16px;
    font-size:15px;
    box-sizing:border-box;
  }
  .modal .modal-actions .btn.outline,
  .modal .modal-actions .btn.outline.small{
    color:#243f34;
    border:1px solid #7d6638;
    background:#fff9e8;
  }
  .modal .modal-actions .text-btn{
    color:#6d3224;
    background:#f3e4bc;
    border:1px solid #9a7d45;
    border-radius:3px;
    text-decoration:none;
  }
  .modal .text-btn{
    color:#6d3224;
    min-height:44px;
    padding:8px 4px;
  }
  .modal .line-selects{gap:8px}
  .modal .line-selects button{
    min-height:40px;
    min-width:40px;
    font-size:13px;
    color:#2f4a3a;
    border:1px solid #9a8150;
    background:#fff8e4;
  }
  .modal .line-selects button.active{background:#335341;color:#f4e6be;border-color:#335341}
  .modal .answer-pagination{gap:12px;flex-wrap:wrap}
  .modal .answer-pagination button{min-height:44px;min-width:72px;font-size:13px}
  .modal .result-actions{flex-direction:column;align-items:stretch}
  .modal .result-actions .btn{width:100%;justify-content:center;min-height:48px}
  .modal .extra-rules summary{font-size:15px;padding:8px 0}
  .modal .reward{min-height:44px}
}
