
:root{--paper:#f5f0e5;--paper-light:#fffaf0;--ink:#282d27;--muted:#797b6b;--line:#dcd5c5;--accent:#a54129;--accent-dark:#80311f;--brass:#bb9557;--slate:#536359;--wood:#ddbf89;--piece-paper:#f5e9ce;--radius:10px;font-family:Arial,Helvetica,sans-serif;color:var(--ink);background:var(--paper);font-synthesis:none}
*{box-sizing:border-box}body{margin:0;background:radial-gradient(ellipse at 0 0,#e8e1cf55,transparent 70%),var(--paper);font-size:14px;line-height:1.5}button,input,select{font:inherit}button,a,input,select{-webkit-tap-highlight-color:transparent}button{cursor:pointer;color:inherit}button{border:0;background:none}button:disabled{cursor:not-allowed;opacity:.42}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid var(--accent);outline-offset:3px}button svg, .brand svg{width:20px;height:20px;vertical-align:middle}svg{display:inline-block}h1,h2,h3,p{margin:0}h1,h2,h3{font-family:Georgia,'Times New Roman',serif;letter-spacing:-.035em;line-height:1.12}a{color:inherit}.svg-library{position:absolute;width:0;height:0;overflow:hidden}button{touch-action:manipulation}.topbar{background:#252a24;color:var(--paper);min-height:88px;padding:18px max(32px,calc((100vw - 1260px)/2));display:flex;align-items:center;justify-content:space-between;gap:24px;border-bottom:3px solid #bd9559}.brand{text-decoration:none;display:flex;gap:12px;align-items:center;white-space:nowrap}.brand-seal{width:42px;height:42px;border:1px solid #c2a97a88;border-radius:50%;display:grid;place-items:center;color:#d2b480}.brand-seal svg{width:28px;height:28px}.brand strong{font-family:Georgia,serif;font-size:24px;font-weight:900;letter-spacing:.04em;line-height:1;display:block}.brand small{display:block;font-size:8px;letter-spacing:.13em;margin-top:8px;color:#c2b9a3}.nav-actions{display:flex;align-items:center;gap:12px}.edition{font-size:9px;letter-spacing:.12em;color:#bebaa8;margin-right:18px}.edition b{font-size:11px;border:1px solid #706f5e;padding:5px;margin-left:7px}.icon-btn{width:36px;height:38px;position:relative;border:1px solid #ffffff24;border-radius:5px}.sound-btn svg{width:18px;height:18px}.sound-slash{position:absolute;inset:5px 10px;font-size:23px;color:#d98c6c;text-shadow:1px 1px #252a24}.quiet-btn{display:inline-flex;align-items:center;gap:9px;padding:9px 11px;font-size:12px}.quiet-btn:hover{background:#ffffff0a;border-radius:5px}.primary,.secondary{display:inline-flex;justify-content:center;align-items:center;gap:24px;min-height:46px;padding:12px 20px;border-radius:5px;background:var(--accent);color:#fff7e5;border:1px solid var(--accent);font-weight:700;font-size:13px;transition:background .15s}.primary:hover{background:var(--accent-dark)}.secondary{background:var(--paper);color:var(--ink);border-color:var(--line)}.small{min-height:38px;padding:8px 14px;font-size:12px}.wide{width:100%;margin-top:20px;justify-content:space-between}.page{max-width:1260px;margin:auto;padding:30px 32px 0}.intro{display:flex;align-items:center;justify-content:space-between;gap:20px;margin:0 0 24px}.eyebrow{font-size:9px;font-weight:700;letter-spacing:.16em;color:var(--accent)}.intro h1{font-size:36px;font-weight:500;margin-top:9px}.intro p{font-size:12px;color:var(--muted);margin-top:7px}.intro-stamp{display:flex;align-items:center;gap:15px;color:#8b8877;font-size:9px;font-weight:bold;letter-spacing:.09em;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:13px 0}.intro-stamp svg{width:12px;height:12px}.game-layout{display:grid;grid-template-columns:minmax(0,1fr) 332px;gap:30px;align-items:start}.table-area{min-width:0;max-width:760px}.table-toolbar{display:flex;align-items:center;gap:14px;min-height:30px;margin-bottom:14px}.mode-pill{border:1px solid #c6bda6;border-radius:20px;font-size:9px;padding:4px 10px;letter-spacing:.09em;font-weight:bold}.turn-counter{font-size:9px;font-weight:bold;letter-spacing:.1em;color:var(--muted)}.tool-btn{display:flex;align-items:center;gap:6px;font-size:11px;color:#616656;margin-left:auto}.tool-btn svg{width:14px;height:14px}.player-line{display:flex;align-items:center;gap:10px;min-height:36px;padding:0 2px 7px;font-size:12px}.player-medal{display:grid;place-items:center;flex-shrink:0;width:28px;height:28px;border:1px solid var(--line);border-radius:50%;background:#d9c499;color:#5c4524}.player-medal.slate{background:#536359;color:var(--paper);border-color:#536359}.player-medal svg{width:17px;height:17px}.player-label{font-weight:bold}.player-label small{margin-left:8px;font-weight:400;color:var(--muted);font-size:10px}.player-turn{font-size:9px;color:var(--muted);margin-left:auto;letter-spacing:.06em}.turn-dot{width:6px;height:6px;display:inline-block;background:var(--accent);border-radius:100%;margin-right:6px}.hand-tray{border:1px solid #d2c8b0;background:linear-gradient(110deg,#e6ddca,#e9e1cf);padding:6px 10px;min-height:66px;border-radius:6px;display:flex;align-items:center;gap:6px;box-shadow:inset 0 1px 4px #5e4b2210}.hand-tray.active{border-color:#bba375}.hand-title{font-size:8px;line-height:1.8;letter-spacing:.11em;color:#736d5c;font-weight:bold;min-width:64px}.hand-title span{display:block;font-size:8px;font-weight:normal;letter-spacing:0}.hand-pieces{display:flex;gap:5px;align-items:center;min-height:50px;flex-wrap:wrap}.hand-empty{font-family:Georgia,serif;color:#918773;font-style:italic;font-size:12px}.reserve-piece{width:43px;height:47px;position:relative;padding:0;flex-shrink:0;border-radius:5px}.reserve-piece.selected{box-shadow:0 0 0 2px var(--accent);background:#b1462320}.reserve-count{position:absolute;right:-3px;top:-2px;z-index:2;background:var(--ink);color:#fff8e9;border:1px solid #e9e1cf;border-radius:10px;min-width:17px;height:17px;font-size:10px;font-weight:bold;line-height:15px}.reserve-piece .tile{width:35px;height:44px}.board-shell{background:linear-gradient(100deg,#be965d,#dfc495 18%,#caab71 88%,#ad844f);padding:7px 14px 14px 4px;border-radius:7px;box-shadow:0 5px 0 #82613a,0 12px 28px #4029121c;border:1px solid #a47a45;margin:13px 0 17px}.files{display:grid;grid-template-columns:repeat(9,1fr);padding:0 0 4px 21px;color:#785b32;font-size:9px;text-align:center;font-family:Georgia,serif;font-weight:bold;height:19px}.board-with-ranks{display:grid;grid-template-columns:21px 1fr}.ranks{display:grid;grid-template-rows:repeat(9,1fr);align-items:center;text-align:center;color:#785b32;font-size:9px;font-family:Georgia,serif;font-weight:bold}.board{display:grid;grid-template-columns:repeat(9,1fr);grid-template-rows:repeat(9,1fr);aspect-ratio:1 / 1;width:100%;border:1.5px solid #8e693c;background:repeating-linear-gradient(3deg,transparent 0,transparent 18px,#84572208 19px,transparent 20px),linear-gradient(110deg,#e6c99a,#e9d1a5 60%,#dcc093);position:relative}.square{position:relative;display:grid;place-items:center;border-right:1px solid #9c754846;border-bottom:1px solid #9c754846;padding:0;margin:0;border-radius:0;min-width:0;min-height:0;background:transparent}.square:nth-child(9n){border-right:0}.square:nth-last-child(-n+9){border-bottom:0}.square.zone{background:#8e623307}.square.frontier{border-top:1px dashed #8d612d88}.square.last{background:#a75c2923}.square.selected{background:#a43e303b;box-shadow:inset 0 0 0 2px #a34229}.square.hint{background:#45695342;box-shadow:inset 0 0 0 2px #496e54}.square.legal::after{content:'';position:absolute;width:17%;aspect-ratio:1;border-radius:100%;background:#487456b3;pointer-events:none;z-index:3}.square.legal.occupied::after{width:88%;height:90%;border:2px solid #944026;background:transparent;border-radius:4px;box-shadow:0 0 0 1px #fcf0d655}.square:focus-visible{z-index:5;outline:3px solid #314939;outline-offset:-3px}.square.check{background:#a5332840}.square.check::before{content:'!';z-index:4;position:absolute;right:3px;top:0;background:#a54129;color:#fff;padding:0 4px;border-radius:2px;font-size:10px}.tile{position:relative;width:80%;height:91%;display:block;filter:drop-shadow(0 2px 1px #63491f55);color:#342d23}.tile-shape{position:absolute;inset:0;clip-path:polygon(50% 0,88% 17%,99% 100%,1% 100%,12% 17%);background:#99713f}.tile-face{position:absolute;inset:1.5px;clip-path:polygon(50% 0,88% 17%,99% 100%,1% 100%,12% 17%);background:linear-gradient(112deg,#fdf2d9,#efe0b9);display:flex;flex-direction:column;align-items:center;justify-content:center;padding:15% 7% 3%}.tile .piece-icon{width:71%;height:65%;overflow:visible;flex:0 1 auto}.piece-letter{font-size:clamp(8px,.9vw,11px);font-family:Arial,sans-serif;line-height:1;margin-top:3px;font-weight:bold;letter-spacing:.08em;color:inherit;opacity:.82}.tile[data-side="1"] .tile-shape{background:#536359}.tile[data-side="1"] .tile-face{background:linear-gradient(112deg,#f6efdf,#e8e0c9);color:#3c4b42}.tile.enemy{transform:rotate(180deg)}.tile.enemy .tile-face{transform:rotate(180deg);padding:3% 7% 15%;clip-path:polygon(1% 0,99% 0,88% 83%,50% 100%,12% 83%)}.tile.promoted{color:#a54129}.tile.promoted .tile-shape{background:#b35535}.tile.promoted .tile-face{background:linear-gradient(115deg,#fff0dc,#f1d7b9);color:#a54129}.tile .promotion-star{position:absolute;top:8px;right:10%;font-size:9px}.bottom-player{padding-top:8px;padding-bottom:0}.table-footer{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:14px;color:#888273;font-size:9px}.tiny-diamond{color:var(--brass);font-size:8px;margin-right:5px}#saveStatus{color:#8b8576;font-size:8px;white-space:nowrap}.rail{display:flex;flex-direction:column;gap:17px;padding-top:0}.status-card{background:#2b3029;color:#f3eedf;border-radius:var(--radius);padding:22px 22px 0;box-shadow:0 5px 13px #2528230b;overflow:hidden}.status-card>.eyebrow{color:#c8b484;font-size:8px;letter-spacing:.17em}.status-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:12px}.status-heading h2{font-size:27px;font-weight:400;letter-spacing:-.04em;max-width:215px}.status-star{color:#c9b785;flex-shrink:0}.status-star svg{width:29px;height:29px}#statusText{font-size:12px;color:#cbcbbc;margin:12px 0 18px;line-height:1.65;min-height:39px}.status-meta{display:flex;justify-content:space-between;align-items:center;gap:6px;margin-bottom:19px}.mini-badge{display:inline-flex;align-items:center;gap:6px;font-size:8px;padding:3px 7px;border:1px solid #73725a;border-radius:3px;color:#d5c6a4;letter-spacing:.06em}#engineLabel{color:#a7ae9c;font-size:8px;letter-spacing:.07em}.play-actions{display:flex;margin:0 -22px;background:#22261f;border-top:1px solid #575a4944}.play-actions button{flex:1;display:flex;align-items:center;justify-content:center;gap:8px;font-size:11px;color:#e7e3d5;padding:15px 7px;min-height:46px}.play-actions button+button{border-left:1px solid #575a4966}.play-actions button:hover:not(:disabled){background:#384031}.play-actions svg{width:15px;height:15px}.status-card.danger{background:#733e2d}.status-card.finished{background:#3f5941}.claim-btn{display:block;margin:12px auto;color:#e0bf86;text-decoration:underline;font-size:11px}.piece-card{border:1px solid var(--line);border-radius:var(--radius);background:#fffbf170;overflow:hidden}.card-label{display:flex;justify-content:space-between;gap:10px;font-size:9px;letter-spacing:.09em;font-weight:bold;padding:13px 17px;border-bottom:1px solid var(--line)}.card-label span{font-size:8px;color:var(--muted);font-weight:normal;letter-spacing:.03em}.inspector-empty{padding:18px 20px;display:flex;gap:17px;align-items:center}.inspector-empty>svg{width:57px;height:57px;color:#c7b693;flex-shrink:0}.inspector-empty h3{font-size:20px;font-weight:400;margin-bottom:5px}.inspector-empty p{font-size:11px;color:var(--muted);line-height:1.6}.inspector-main{display:flex;align-items:center;gap:15px;padding:16px 18px 12px}.inspect-tile{width:52px;height:66px;flex-shrink:0;display:grid;place-items:center}.inspect-tile .tile{width:48px;height:61px}.inspect-heading h3{font-size:23px;font-weight:400}.inspect-heading p{font-size:10px;color:var(--muted);margin-top:4px}.inspect-detail{display:flex;align-items:center;gap:14px;padding:0 18px 17px}.movement-diagram{width:88px;height:88px;flex-shrink:0;color:var(--ink)}.inspect-detail p{font-size:11px;line-height:1.55;color:#646959}.inspect-subnote{font-size:9px;color:var(--accent);border-top:1px dashed var(--line);padding:9px 17px}.trail-card{display:flex;gap:13px;align-items:flex-start;border:1px solid #d9c9a7;border-radius:var(--radius);padding:17px;background:linear-gradient(120deg,#efe3c9,#f7ecd6)}.trail-mark{flex-shrink:0;color:#94703c;margin-top:5px}.trail-mark svg{width:27px;height:33px}.trail-card .eyebrow{font-size:8px;letter-spacing:.11em}.trail-card h3{font-size:19px;font-weight:400;letter-spacing:-.02em;margin-top:5px}.trail-card p{font-size:10px;color:#81745f;line-height:1.6;margin-top:6px}.text-link{padding:0;text-align:left;font-weight:bold;color:var(--accent);font-size:11px;margin-top:10px}.text-link span{margin-left:10px}.history-card{border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}.history{max-height:198px;overflow-y:auto;scrollbar-width:thin;scrollbar-color:#c2bda9 transparent}.history-empty{padding:13px 15px 19px;color:#918a78;font-family:Georgia,serif;font-style:italic;font-size:12px;text-align:center}.history-empty span{display:block;font-size:19px;margin-bottom:5px;color:#b2a98f}.move-entry{display:flex;align-items:center;gap:9px;padding:8px 14px;font-size:11px;border-bottom:1px solid #e3ddce9c}.move-entry:nth-child(even){background:#fff9ed66}.move-entry:last-child{background:#e8dfc855;border-bottom:0}.move-index{font-size:9px;color:#9b927d;width:17px}.move-side{font-size:9px;color:#9c7c40}.move-side.slate{color:#536359}.move-entry-name{font-weight:bold;color:#666b59;font-size:10px}.move-squares{margin-left:auto;white-space:nowrap;font-variant-numeric:tabular-nums;font-size:10px}.move-event{color:var(--accent);font-size:9px}.history-actions{display:flex;justify-content:space-between;padding:10px 13px;border-top:1px solid var(--line);background:#faf5e9aa}.history-actions button{font-size:10px;color:#7a7868;padding:4px}.history-actions button:hover{text-decoration:underline}.rail-footnote{font-size:9px;color:#8a8778;text-align:center;line-height:1.9}.rail-footnote button{text-decoration:underline;font-size:9px;padding:5px}.rail-footnote span{margin:0 4px}.page-footer{display:flex;justify-content:space-between;align-items:center;gap:20px;border-top:1px solid var(--line);padding:21px 0;margin-top:32px;font-size:8px;letter-spacing:.035em;color:#8b8472}.page-footer>span:first-child{font-weight:bold;font-size:9px;color:#81775d}.page-footer b{color:#c4b591;padding:0 3px}.page-footer>span:last-child{font-size:7px;letter-spacing:.1em}.toast{position:fixed;left:50%;bottom:24px;transform:translate(-50%,12px);max-width:min(520px,calc(100vw - 32px));background:#242b24;color:#f8f0de;font-size:12px;padding:13px 21px;border:1px solid #c6ab7455;border-radius:7px;box-shadow:0 5px 22px #0003;opacity:0;pointer-events:none;transition:opacity .2s,transform .2s;z-index:100;line-height:1.5}.toast.visible{opacity:1;transform:translate(-50%,0)}.mobile-status{display:none}dialog{border:1px solid #c4b18b;border-radius:11px;background:var(--paper-light);color:var(--ink);box-shadow:0 20px 90px #0005;width:calc(100% - 32px);max-width:500px;padding:32px;max-height:calc(100dvh - 40px);overflow:auto}dialog::backdrop{background:#161b15b8;backdrop-filter:blur(4px)}.close-dialog{position:absolute;right:15px;top:12px;font-size:26px;line-height:1;width:30px;height:30px;color:#887b60}.close-dialog:hover{background:#dfd3bb44;border-radius:50%}dialog h2{font-size:31px;font-weight:400;line-height:1.16;margin-top:10px;margin-bottom:11px}.modal-lead{font-size:12px;color:#7d7a69;line-height:1.65;margin-bottom:20px}fieldset{border:0;padding:0;margin:20px 0}legend{font-size:10px;text-transform:uppercase;font-weight:bold;letter-spacing:.08em;margin-bottom:9px}.choice{display:flex;align-items:center;gap:12px;border:1px solid var(--line);border-radius:6px;padding:12px;margin-bottom:8px;cursor:pointer}.choice:has(input:checked){border-color:#b49664;background:#eee4ce6b}.choice b{font-size:12px;display:block}.choice small{font-size:10px;color:var(--muted);display:block;margin-top:4px}.choice input,input[type=checkbox]{accent-color:var(--accent)}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:18px 0}.form-row label{font-size:10px;font-weight:bold;color:#75715f;line-height:2}.form-row select{display:block;border:1px solid var(--line);background:#fffaf0;border-radius:5px;width:100%;padding:8px;color:var(--ink);font-size:11px;margin-top:4px}.form-row.disabled{opacity:.45;pointer-events:none}.check-option{display:flex;align-items:center;gap:8px;font-size:11px;color:#6d715f;margin:12px 0}.modal-note{font-size:10px;line-height:1.7;color:#847b65;background:#ece2ce66;border-left:2px solid #ccb789;padding:10px 12px;margin-top:19px}.promotion-choices{display:grid;grid-template-columns:1fr 1fr;gap:12px}.promotion-option{border:1px solid var(--line);border-radius:8px;padding:20px 10px;display:flex;flex-direction:column;align-items:center;gap:10px;background:#f3ebda}.promotion-option.promote{border-color:#bc7150;background:#f1dfc9}.promotion-option:hover{box-shadow:0 0 0 2px #a5412955}.promotion-option .tile{width:64px;height:79px}.promotion-option b{font-size:13px}.promotion-option small{font-size:10px;color:var(--muted)}.guide-dialog{max-width:730px}.guide-tabs{display:flex;gap:0;border-bottom:1px solid var(--line);margin:20px 0}.guide-tabs button{font-size:11px;padding:10px 14px;color:var(--muted);border-bottom:2px solid transparent}.guide-tabs button.active{border-color:var(--accent);color:var(--accent);font-weight:bold}.guide-section{margin:20px 0}.guide-section h3{font-size:21px;font-weight:400;margin-bottom:8px}.guide-section p{font-size:12px;line-height:1.75;color:#666b5b;margin:8px 0}.guide-section strong{color:#494f40}.guide-mini{display:grid;grid-template-columns:1fr 1fr;gap:13px}.guide-piece{border:1px solid var(--line);border-radius:6px;padding:12px;display:grid;grid-template-columns:66px 1fr;gap:10px;align-items:center}.guide-piece .movement-diagram{width:66px;height:66px}.guide-piece h3{font-size:19px;font-weight:400}.guide-piece p{font-size:10px;line-height:1.6;color:#747460;margin-top:4px}.guide-piece small{font-family:Arial,sans-serif;color:var(--accent);font-size:9px;display:block;margin:2px 0 5px}.source-links{display:flex;flex-direction:column;gap:8px;font-size:11px;margin-top:15px}.source-links a{color:var(--accent)}.legend-box{background:#eadbc244;padding:11px 14px;border-radius:5px;font-size:11px;color:#7d725e;line-height:1.7;margin-bottom:15px}.modal-buttons{display:flex;gap:12px;justify-content:flex-end;margin-top:24px}.busy .status-star{animation:breathe 1.1s ease-in-out infinite}.busy .turn-dot{animation:breathe 1s ease-in-out infinite}@keyframes breathe{50%{opacity:.3}}.lesson-banner{padding:12px 0}.lesson-banner p{font-size:11px;color:#d9ceae;line-height:1.6;margin-bottom:10px}.lesson-banner button{font-size:11px;font-weight:bold;padding:8px 0;color:#e9cc91;display:block}.lesson-banner button.next-lesson{background:#d0b071;color:#2b3029;border-radius:5px;padding:9px 12px;margin-bottom:6px;width:100%}.noscript{position:fixed;inset:20px;background:#fff;padding:30px;z-index:1000}[hidden]{display:none!important}
@media(min-width:1400px){.page{padding-top:33px}.game-layout{gap:40px;grid-template-columns:minmax(0,1fr) 350px}.status-heading h2{font-size:28px;max-width:240px}.board-shell{margin-top:12px;margin-bottom:18px}.rail{gap:19px}}
@media(max-width:1100px){.edition{display:none}.game-layout{grid-template-columns:minmax(0,1fr) 295px;gap:23px}.page{padding:25px 25px 0}.topbar{padding:18px 25px}.status-card{padding:19px 18px 0}.status-heading h2{font-size:24px}.play-actions{margin:0 -18px}.intro h1{font-size:31px}.intro-stamp{font-size:8px;gap:10px}.card-label{padding:12px 14px}.hand-title{min-width:53px;font-size:7px}.hand-tray{padding:5px 7px;gap:4px}.hand-pieces{gap:3px}.reserve-piece{width:36px;height:44px}.reserve-piece .tile{width:32px;height:40px}.inspect-detail{padding-left:14px;padding-right:14px;gap:11px}.movement-diagram{width:80px;height:80px}.trail-card{padding:14px;gap:10px}.trail-card h3{font-size:18px}.player-label small{font-size:9px}.table-footer{font-size:8px}}
@media(max-width:800px){.game-layout{grid-template-columns:minmax(0,1fr) 264px;gap:18px}.page{padding:21px 18px 0}.topbar{padding:15px 18px;min-height:78px}.brand strong{font-size:21px}.brand small{font-size:7px}.brand-seal{width:35px;height:35px}.nav-actions{gap:5px}.quiet-btn{padding:7px}.intro-stamp{display:none}.intro h1{font-size:29px}.intro{margin-bottom:21px}.status-heading h2{font-size:23px}.status-star svg{width:21px}.status-card{padding:17px 15px 0}#statusText{font-size:11px}.play-actions{margin:0 -15px}.play-actions button{font-size:10px;gap:5px}.trail-mark{display:none}.inspect-detail{gap:10px}.inspect-detail p{font-size:10px}.inspect-heading h3{font-size:21px}.card-label{font-size:8px}.board-shell{padding-right:9px;padding-bottom:9px}.player-label small{display:none}.hand-empty{font-size:10px}.hand-title{min-width:42px;font-size:6px}.hand-title span{font-size:7px}.hand-tray{min-height:59px}.reserve-piece{width:29px;height:40px}.reserve-piece .tile{width:28px;height:37px}.hand-pieces{min-height:45px;gap:2px}.reserve-count{min-width:14px;height:14px;font-size:8px;line-height:12px}.table-footer{align-items:flex-start;gap:5px}#saveStatus{font-size:7px}.page-footer>span:last-child{display:none}.piece-letter{font-size:8px}}
@media(max-width:650px){.topbar{min-height:72px;padding:13px 16px;gap:10px}.brand{gap:8px}.brand strong{font-size:21px;letter-spacing:.02em}.brand small{font-size:6px;margin-top:6px;letter-spacing:.04em}.brand-seal{width:30px;height:30px}.brand-seal svg{width:20px;height:20px}.quiet-btn span{display:none}.quiet-btn{padding:8px 5px}.quiet-btn svg{width:18px;height:18px}.icon-btn{border:0;width:27px;height:33px}.sound-slash{inset:2px 5px}.nav-actions{gap:5px}.newBtn{font-size:10px}.nav-actions .primary{font-size:10px;padding:8px 10px;gap:8px;min-height:34px}.nav-actions .primary span{display:none}.page{padding:19px 15px 0}.intro{margin-bottom:17px}.intro h1{font-size:27px;letter-spacing:-.04em;margin-top:7px;max-width:340px}.intro p{font-size:10px;margin-top:6px}.intro .eyebrow{font-size:7px;letter-spacing:.16em}.game-layout{display:flex;flex-direction:column;gap:23px}.table-area{width:100%;max-width:580px;margin:auto}.table-toolbar{margin-bottom:11px;gap:9px;min-height:27px}.mode-pill{font-size:8px;padding:4px 8px}.turn-counter{font-size:8px}.tool-btn{font-size:10px}.board-shell{padding:5px 8px 9px 1px;margin-top:9px;margin-bottom:14px;border-radius:5px}.board-with-ranks{grid-template-columns:16px 1fr}.files{height:15px;padding-left:16px;font-size:8px;padding-bottom:3px}.ranks{font-size:8px}.board{border-width:1px}.tile{width:85%;height:91%;filter:drop-shadow(0 1.5px 1px #63491f55)}.tile-face{inset:1.2px}.tile .piece-icon{width:73%;height:65%}.piece-letter{font-size:8px;margin-top:2px}.tile .promotion-star{top:5px;font-size:7px;right:8%}.hand-tray{min-height:53px;padding:4px 8px;gap:7px}.hand-title{font-size:7px;min-width:45px}.hand-title span{font-size:7px}.hand-pieces{min-height:41px;gap:4px}.hand-empty{font-size:10px}.reserve-piece{width:32px;height:40px}.reserve-piece .tile{width:29px;height:37px}.reserve-count{min-width:15px;height:15px;font-size:9px;line-height:13px}.player-line{min-height:31px;font-size:11px;padding-bottom:5px;gap:7px}.player-label small{display:inline;font-size:8px;margin-left:5px}.player-medal{width:24px;height:24px}.player-medal svg{width:14px;height:14px}.player-turn{font-size:8px}.bottom-player{padding-top:7px;padding-bottom:0}.table-footer{font-size:8px;margin-top:10px;align-items:center}#saveStatus{font-size:7px}.rail{width:100%;display:grid;grid-template-columns:1fr 1fr;gap:13px;max-width:580px;margin:auto}.status-card{grid-column:1/-1;grid-row:1;padding:18px 18px 0}.status-heading h2{max-width:90%;font-size:25px}.status-heading{margin-top:8px}#statusText{margin:9px 0 11px;min-height:0;font-size:12px}.status-meta{margin-bottom:14px}.play-actions{margin:0 -18px}.play-actions button{font-size:11px;padding:12px;min-height:44px}.status-star svg{width:26px}.piece-card{grid-column:1/-1}.inspector-empty{padding:15px 18px}.inspector-empty>svg{width:42px;height:42px}.inspector-empty h3{font-size:19px}.inspector-main{padding:14px 18px 9px}.inspect-detail{padding:0 18px 15px;gap:18px}.inspect-detail p{font-size:12px}.movement-diagram{width:92px;height:92px}.inspect-heading h3{font-size:24px}.trail-card{grid-column:1/-1;padding:15px 18px;gap:15px}.trail-mark{display:block}.trail-card h3{font-size:21px}.trail-card p{font-size:11px}.text-link{font-size:12px}.history-card{grid-column:1/-1}.history{max-height:180px}.rail-footnote{grid-column:1/-1;font-size:9px}.card-label{font-size:9px}.page-footer{margin-top:25px;padding:20px 0;display:block;text-align:center}.page-footer>span{display:block;font-size:8px;line-height:2}.page-footer>span:last-child{display:none}.mobile-status{display:block;margin-top:12px;padding:10px 12px;border:1px solid #c4b496;background:#eee4cf;border-radius:5px;font-size:11px;line-height:1.6;min-height:38px}.mobile-status strong{color:var(--accent)}.mobile-status button{float:right;font-size:10px;font-weight:bold;color:var(--accent);text-decoration:underline;margin-left:9px;padding:2px 0}.toast{bottom:18px;font-size:12px;width:calc(100% - 34px);padding:12px 16px}dialog{padding:28px 22px;max-height:calc(100dvh - 28px);max-width:520px}dialog h2{font-size:29px}.form-row{grid-template-columns:1fr;gap:10px}.form-row select{font-size:13px;padding:10px}.modal-note{font-size:10px}.check-option{font-size:11px}.guide-dialog{max-width:calc(100vw - 20px)}.guide-mini{grid-template-columns:1fr}.guide-piece{grid-template-columns:70px 1fr;padding:13px}.guide-piece p{font-size:12px}.guide-piece h3{font-size:21px}.guide-tabs button{padding:9px 11px;font-size:10px}.guide-section p{font-size:12px}.history-actions button{padding:6px;font-size:11px}}
@media(max-width:370px){.page{padding-left:9px;padding-right:9px}.topbar{padding-left:11px;padding-right:11px}.brand-seal{display:none}.brand strong{font-size:20px}.intro h1{font-size:25px}.nav-actions{gap:2px}.hand-title{min-width:38px;font-size:6px}.hand-tray{gap:4px;padding:3px 6px}.hand-pieces{gap:2px}.reserve-piece{width:29px;height:38px}.player-label small{display:none}.piece-letter{font-size:7px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
/* Keep both reserves and all nine ranks visible on typical laptop displays. */
@media(min-width:651px){
 :root{--rail-width:332px;--play-width:clamp(320px,calc(100dvh - 395px),690px)}
 .topbar{min-height:72px;padding-top:12px;padding-bottom:12px}
 .page{max-width:calc(var(--play-width) + var(--rail-width) + 92px);padding-top:20px}
 .intro{margin-bottom:17px}.intro h1{font-size:29px;margin-top:7px}.intro p{font-size:11px;margin-top:5px}.intro .eyebrow{font-size:8px}
 .intro-stamp{font-size:7px;padding:10px 0;gap:9px}
 .game-layout{grid-template-columns:minmax(0,var(--play-width)) var(--rail-width);gap:28px}
 .table-area{width:100%;max-width:none}.table-toolbar{margin-bottom:8px;min-height:27px}
 .player-line{min-height:29px;padding-bottom:5px}.player-medal{width:23px;height:23px}.player-medal svg{width:14px;height:14px}
 .hand-tray{min-height:45px;padding:4px 7px}.hand-pieces{min-height:35px;gap:4px}.hand-empty{font-size:10px}.hand-title{min-width:45px;font-size:7px}.hand-title span{font-size:7px}
 .reserve-piece{width:32px;height:37px}.reserve-piece .tile{width:29px;height:36px}.reserve-count{min-width:14px;height:14px;line-height:12px;font-size:8px}
 .board-shell{padding:5px 10px 10px 2px;margin-top:9px;margin-bottom:13px}.board-with-ranks{grid-template-columns:17px 1fr}.files{padding-left:17px;height:16px;font-size:8px}.ranks{font-size:8px}
 .bottom-player{padding-top:7px;padding-bottom:0}.table-footer{margin-top:9px;font-size:8px}#saveStatus{font-size:7px}.player-label small{font-size:8px}
 .rail{gap:13px;max-height:calc(100dvh - 195px);overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#c8b99a transparent;padding-right:2px;padding-bottom:6px}
 .page-footer{margin-top:24px;padding:16px 0}.page-footer>span:last-child{display:none}
}
@media(min-width:651px) and (max-width:1100px){:root{--rail-width:295px}.page{max-width:calc(var(--play-width) + var(--rail-width) + 78px)}}
@media(min-width:651px) and (max-width:800px){:root{--rail-width:264px}.page{max-width:calc(var(--play-width) + var(--rail-width) + 64px)}.game-layout{gap:18px}.intro-stamp{display:none}.player-label small{display:none}}

/* FRONTIER PORCH / v1.1
   Real DOM pieces and a real 9x9 rules board, dressed with material crops from
   the approved reference. Decorative layers never receive pointer events. */
:root{
 --paper:#e9d1aa;--paper-light:#f0dfbd;--ink:#332319;--muted:#715639;
 --line:#a9875755;--accent:#793b29;--accent-dark:#5a281c;--brass:#c99a54;
 --slate:#763627;--piece-paper:#e5c697;--radius:2px;
 --reserve-width:214px;--rail-width:288px;
 --play-width:clamp(390px,min(calc(100vw - 602px),calc(100dvh - 250px)),730px);
 --grain:url('/assets/art/wood.104869a86802.webp');--frame-grain:url('/assets/art/frame.a6922b3390b1.webp');
 --crate-grain:url('/assets/art/crate.9b90ef4bf7de.webp');--maple:url('/assets/art/maple.799fe29f8ddb.webp');
 --parchment:url('/assets/art/paper.d30e946a7a2f.webp');--drawing:url('/assets/art/landscape.c198ebac4c9b.webp');
 font-family:Georgia,'Times New Roman',serif;background:#4f3625;color:var(--ink);
}
html{min-width:300px;min-height:100%;scrollbar-color:#aa875c #39271b;scroll-behavior:smooth}
body{min-width:300px;min-height:100dvh;font-family:Georgia,'Times New Roman',serif;font-size:14px;line-height:1.5;background:transparent;isolation:isolate;position:relative;padding-bottom:60px}
.frontier-scene{position:fixed;inset:0;z-index:-3;pointer-events:none;background:linear-gradient(180deg,#311c0605 0%,#35200b10 50%,#2b180d80 100%),url('/assets/art/frontier-town.46cb19b805c7.webp') center center/cover no-repeat}
body::before{content:'';position:fixed;inset:0;pointer-events:none;z-index:-2;background:radial-gradient(ellipse at 50% 48%,transparent 35%,#301d1040 100%)}
.foreground-props{position:fixed;left:0;right:0;bottom:0;height:112px;pointer-events:none;z-index:-1;background:url('/assets/art/tabletop.b5e530f1453b.webp') bottom center/cover no-repeat}
.prop-hat{position:absolute;bottom:6px;left:0;width:190px;height:178px;background:url('/assets/art/hat.609b564e5ac2.webp') left bottom/contain no-repeat}
.prop-lantern{position:absolute;bottom:66px;right:0;width:88px;height:335px;background:url('/assets/art/lantern.77781485e7e4.webp') right bottom/contain no-repeat;filter:drop-shadow(0 4px 8px #28110890)}
button,input,select{font-family:inherit}button{touch-action:manipulation}button:disabled{opacity:.52;filter:saturate(.65)}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #e2ba6b;outline-offset:3px}
h1,h2,h3{font-family:Georgia,'Times New Roman',serif;letter-spacing:-.035em;color:inherit}
.topbar{display:grid;grid-template-columns:320px 282px minmax(0,1fr);align-items:end;gap:0;max-width:calc(var(--play-width) + var(--reserve-width) + var(--rail-width) + 52px);width:calc(100% - 40px);min-height:0;height:178px;margin:0 auto 16px;padding:0 0 7px;background:none;color:#f2dfba;border:0;position:relative;z-index:2}
.brand{display:block;width:100%;height:auto;align-self:start;margin-top:9px;position:relative;z-index:3;white-space:normal;filter:drop-shadow(2px 7px 6px #21130970);transition:transform .18s}
.brand:hover{transform:rotate(-.35deg) translateY(-1px)}
.brand-art{display:block;width:100%;height:auto;max-height:168px;object-fit:contain}
.tagline-plank,.control-plank{background-color:#422b1a;background-image:linear-gradient(#492b0d20,#2216083d),var(--grain);background-size:auto,420px 44px;box-shadow:inset 0 1px 0 #e4c59588,inset 0 -3px 0 #241207b0,0 3px 0 #28190f,0 10px 13px #281b126b;border:2px solid #765336;border-radius:4px;position:relative}
.tagline-plank{margin:0 0 18px -4px;padding:20px 19px 14px;min-height:121px;transform:rotate(-.4deg)}
.tagline-plank h1{font-size:22px;line-height:1.18;text-transform:uppercase;font-weight:800;letter-spacing:.045em;color:#ecd5ae;text-shadow:0 2px 1px #201107;white-space:nowrap}
.tagline-plank p{font-size:9px;text-transform:uppercase;letter-spacing:.115em;margin-top:12px;border-top:1px solid #bd966040;padding-top:6px;color:#dfc6a0;white-space:nowrap}
.sign-nail{position:absolute;width:9px;height:9px;border:1px solid #171814;border-radius:50%;background:radial-gradient(circle at 35% 28%,#a3947b,#37342e 43%,#1c1e1a 68%);box-shadow:1px 2px 2px #160c08aa}
.nail-tl{top:6px;left:6px}.nail-br{bottom:6px;right:6px}
.control-plank{margin-left:-3px;padding:11px 10px 5px;min-height:80px;z-index:1}
.nav-actions{display:flex;align-items:stretch;justify-content:space-between;gap:6px;flex-wrap:nowrap}
.plank-proverb{text-align:right;color:#deccb0;font-size:10px;font-style:italic;line-height:1.4;padding:9px 4px 0;text-shadow:0 1px 2px #211209}
.primary,.secondary,.wood-button,.icon-btn{border:1px solid #a17a4c;border-radius:3px;background-color:#563b25;background-image:linear-gradient(#92613822,#2514075c),var(--frame-grain);background-size:auto,320px 40px;box-shadow:inset 0 1px 0 #e8c3915c,inset 0 -2px 0 #21130980,0 2px 3px #160e07b0;color:#f1dfbe;min-height:42px;font-size:11px;font-weight:700;letter-spacing:.015em;text-transform:uppercase;padding:10px 11px;gap:7px;transition:transform .12s,filter .12s,box-shadow .12s;white-space:nowrap}
.primary{background-image:linear-gradient(#833e2aea,#572215eb),var(--grain);border-color:#a26545;color:#fff0d2}
.primary:hover,.secondary:hover,.wood-button:hover:not(:disabled),.icon-btn:hover{filter:brightness(1.15);background-color:#694122;transform:translateY(-1px)}
.primary:active,.secondary:active,.wood-button:active:not(:disabled),.icon-btn:active{transform:translateY(1px);box-shadow:inset 0 2px 3px #1e100aa0}
.wood-button{display:inline-flex;justify-content:center;align-items:center}
.wood-button svg{width:15px;height:15px;flex-shrink:0}.icon-btn{width:35px;min-width:35px;height:42px;padding:9px 6px;display:grid;place-items:center}.icon-btn svg{width:18px;height:18px}
.sound-slash{font-family:Arial,sans-serif;inset:5px 7px;font-size:23px;color:#e8b18b;text-shadow:1px 1px #2a180c}
.page{width:calc(var(--play-width) + var(--reserve-width) + var(--rail-width) + 36px);max-width:calc(100% - 48px);margin:0 auto;padding:0;position:relative;z-index:1}
.game-layout{display:grid;grid-template-columns:minmax(0,1fr) var(--rail-width);align-items:start;gap:18px}
.table-area{display:grid;grid-template-columns:var(--reserve-width) minmax(0,1fr);gap:18px;width:100%;max-width:none;min-width:0;align-items:start}
.board-stage{min-width:0;width:100%;position:relative}
.table-toolbar{height:31px;min-height:31px;margin:0 2px 7px;padding:0 4px;display:flex;align-items:center;gap:11px;color:#f6e6c9;text-shadow:0 1px 3px #221108,0 0 5px #211407}
.mode-pill{background:#382516bd;border:1px solid #c39b6790;border-radius:2px;padding:4px 8px;color:#f2dab4;box-shadow:0 2px 5px #28170a35;font-size:9px;letter-spacing:.065em}
.turn-counter{font-size:10px;color:#f0ddba;letter-spacing:.04em;white-space:nowrap}
.tool-btn{color:#f9e7c6;padding:6px 0 6px 7px;font-size:11px;gap:5px;min-height:30px}.tool-btn svg{width:15px;height:15px}
.board-shell{position:relative;margin:0;padding:17px 21px 23px 7px;border:3px solid #5c3d24;border-radius:3px;background-color:#6b472a;background-image:linear-gradient(90deg,#3520150d,#25120810),var(--frame-grain);background-size:auto,620px 46px;box-shadow:inset 0 0 0 2px #c0976399,inset 0 0 0 6px #38211555,0 6px 0 #382316,0 11px 0 #20180fbb,0 20px 27px #20130980}
.files{height:26px;display:grid;grid-template-columns:repeat(9,1fr);padding:0 0 6px 25px;color:#f0d6ad;font-size:13px;line-height:20px;text-shadow:0 2px 1px #1f120a;font-weight:400}
.board-with-ranks{display:grid;grid-template-columns:25px 1fr}
.ranks{font-size:13px;line-height:1;font-weight:400;color:#f0d6ad;text-shadow:0 2px 1px #1f120a}
.board{aspect-ratio:1/1;isolation:isolate;background-color:#d2aa77;background-image:linear-gradient(115deg,#b4844030,#e9c08b10 50%,#9f6d3230),var(--maple);background-size:auto,86px 84px;border:2px solid #4d2d16;box-shadow:0 0 0 2px #bb8d556e,0 0 0 4px #2d180cbc,inset 0 0 15px #73401d55;overflow:hidden}
.board::before{content:'';position:absolute;inset:0;z-index:0;background:var(--drawing) center 57%/100% auto no-repeat;mix-blend-mode:multiply;opacity:.57;pointer-events:none}
.square{z-index:1;border-right:1px solid #633c2080;border-bottom:1px solid #633c2080;box-shadow:inset -1px -1px 0 #ffe4b320;background:transparent;transition:background .12s}
.square.zone{background:#82582b07}.square.frontier{border-top:1px dashed #693b2266}.square:nth-child(4n){background-color:#d7aa6d09}
.square.last{background:#81512d25}.square.selected{background:#aa713c45;box-shadow:inset 0 0 0 3px #593a21,inset 0 0 0 5px #f6d798b8}
.square:hover:not(.selected){background-color:#ffe7b92e}
.square.legal::after{width:19%;aspect-ratio:1;border-radius:100%;background:#634c25dc;box-shadow:0 0 0 2px #f9dfa9a0,0 1px 3px #41280a70;z-index:4}
.square.legal.occupied::after{width:89%;height:90%;border:3px solid #7b2e20;background:transparent;border-radius:4px;box-shadow:0 0 0 1px #f9deb9cf}
.square.hint{background:#9b823a45;box-shadow:inset 0 0 0 3px #5c622d,inset 0 0 0 5px #e7d8998a}
.square.check{background:#8c2d2866;box-shadow:inset 0 0 0 2px #75291d}.square.check::before{background:#762719;color:#fff2ce;top:2px;right:2px;padding:0 4px;box-shadow:0 1px 3px #28100975}
.square:focus-visible{outline:3px solid #6c3b1c;outline-offset:-3px;z-index:5}
.iron-corner{position:absolute;width:49px;height:48px;background:url('/assets/art/iron.925b8e979fa5.webp') center/100% 100% no-repeat;z-index:6;pointer-events:none;filter:drop-shadow(1px 2px 1px #1b12099f)}
.corner-tl{left:-4px;top:-4px}.corner-tr{right:-4px;top:-4px;transform:rotate(90deg)}.corner-bl{left:-4px;bottom:-4px;transform:rotate(-90deg)}.corner-br{right:-4px;bottom:-4px;transform:rotate(180deg)}
.tile{width:85%;height:91%;color:#29221b;filter:drop-shadow(1px 3px 1.5px #49280daf);transition:filter .12s;--tip:polygon(50% 0,96% 5%,99% 100%,1% 100%,4% 5%)}
.tile-shape{clip-path:var(--tip);background:linear-gradient(150deg,#f0d3a8,#bd8c52 33%,#714520 94%);box-shadow:inset 0 1px 1px #f8ddb0}
.tile-face{clip-path:var(--tip);inset:2px 2px 3px;background-color:#e3bd87;background-image:linear-gradient(118deg,#f2d7aaad,#d5a86945 60%,#ae733342),var(--maple);background-size:auto,66px 64px;color:#30231c;box-shadow:inset 0 0 3px #78552ca0;justify-content:center;padding:10% 8% 6%;border-radius:3px}
.tile.enemy{transform:rotate(180deg)}.tile.enemy .tile-face{transform:rotate(180deg);padding:6% 8% 10%;clip-path:polygon(1% 0,99% 0,96% 95%,50% 100%,4% 95%)}
.tile[data-side="1"] .tile-shape{background:linear-gradient(150deg,#e5bb89,#b9834b 33%,#5e3019 94%)}
.tile[data-side="1"] .tile-face{background-color:#ddae76;background-image:linear-gradient(118deg,#efd2a68f,#cf9f6b25 60%,#99592844),var(--maple);color:#672c1e}
.tile .piece-icon{width:74%;height:66%;max-height:42px;filter:drop-shadow(0 1px 0 #f6dca35e)}
.piece-letter{font-family:Georgia,'Times New Roman',serif;line-height:1;font-size:clamp(8px,.91vw,13px);font-weight:bold;letter-spacing:0;margin-top:2px;text-shadow:0 1px 0 #f2d4a16b}
.tile.promoted .tile-shape{background:#713818}.tile.promoted .tile-face{background-image:linear-gradient(110deg,#f9d69588,#c58c4199),var(--maple);color:#822b1b}
.tile.promoted .piece-letter{color:#782016;font-weight:900}.tile .promotion-star{top:5px;right:8%;font-size:10px}
.square.selected .tile{filter:drop-shadow(1px 4px 3px #482408a6)}
.posse-rail{display:flex;flex-direction:column;gap:19px;padding-top:38px;min-width:0;min-height:0;height:calc(var(--play-width) + 82px)}
.posse-group{display:flex;flex-direction:column;gap:12px;min-width:0;flex:1;min-height:0}
.player-line{position:relative;padding:12px 10px;min-height:88px;gap:10px;color:#eed9b8;border:3px solid #59402a;border-radius:2px;background-color:#4c331f;background-image:linear-gradient(#3a251640,#25170c60),var(--grain);background-size:auto,370px 40px;box-shadow:inset 0 0 0 1px #b49367a0,0 3px 2px #211309,0 7px 9px #29190955;text-shadow:0 1px 2px #1e1107}
.player-line::before,.player-line::after{content:'';position:absolute;width:5px;height:5px;border-radius:100%;background:radial-gradient(circle at 30% 25%,#b8ae96,#353732 45%,#101814 65%);box-shadow:0 1px 2px #130e05;top:5px;left:5px}
.player-line::after{top:auto;left:auto;bottom:5px;right:5px}
.player-medal{width:49px;height:58px;min-width:49px;border:2px solid #ae8351;border-radius:2px;color:#241e18;background:linear-gradient(130deg,#c29b6b,#876644);box-shadow:inset 0 0 0 2px #513b2680,inset 0 0 10px #20160966,0 2px 2px #21160d}
.player-medal.slate{background:linear-gradient(130deg,#9b4e35,#693721);color:#241b16;border-color:#ae8351}
.player-medal svg{width:37px;height:40px}
.player-label{font-family:Georgia,'Times New Roman',serif;font-size:14px;font-weight:700;letter-spacing:.055em;line-height:1.2;flex:1;min-width:0}
.player-label small{display:block;font-size:10px;letter-spacing:0;color:#d8bd95;margin:6px 0 0;font-weight:400}
.player-state{display:block;color:#e8d4b5;font-size:10px;font-weight:400;letter-spacing:0;line-height:1.4;margin-top:5px}
.player-turn{position:absolute;top:9px;right:6px;margin:0}.turn-dot{background:#e6c477;box-shadow:0 0 5px #eac67d75;width:5px;height:5px;margin:0}
.player-line.is-turn{border-color:#967044}
.hand-tray{border:7px solid #6b4a2e;border-image:var(--frame-grain) 9 stretch;background-color:#3b2718;background-image:linear-gradient(#21150b25,#120c0660),var(--crate-grain);background-size:auto,360px 70px;min-height:117px;flex:1;display:flex;flex-direction:column;align-items:stretch;gap:0;position:relative;padding:0;border-radius:1px;box-shadow:inset 0 0 0 1px #150e0877,inset 2px 4px 17px #140c08b0,0 3px 2px #1d130ad9,0 7px 10px #24140855}
.hand-tray.active{border-color:#ab8655;box-shadow:inset 0 0 0 1px #d1a66a80,inset 2px 4px 17px #140c08b0,0 3px 2px #1d130ad9,0 7px 10px #24140855}
.hand-title{font-family:Georgia,'Times New Roman',serif;display:flex;justify-content:space-between;align-items:center;gap:6px;min-width:0;font-size:11px;font-weight:700;letter-spacing:.085em;color:#f3d6a7;padding:6px 8px;background:linear-gradient(#21130b20,#20150bd9);border-bottom:2px solid #201408;box-shadow:0 1px 0 #b3895750;white-space:nowrap;text-shadow:0 1px 2px #160c05}
.hand-title span{display:inline;font-size:10px;font-weight:400;color:#dec198;letter-spacing:0}
.hand-pieces{flex:1;display:flex;align-content:flex-start;align-items:flex-start;gap:7px;min-height:0;padding:13px 9px;position:relative;flex-wrap:wrap}
.hand-pieces:has(.hand-empty){align-items:center;justify-content:center}
.hand-empty{display:block;text-align:center;font-family:Georgia,'Times New Roman',serif;color:#d1b18b;font-size:13px;font-style:normal;line-height:1.6;text-shadow:0 1px 3px #160c04}
.reserve-piece{width:44px;height:52px;min-width:44px;padding:0;display:grid;place-items:center;flex-shrink:0;border-radius:3px}
.reserve-piece .tile{width:39px;height:49px}.reserve-piece .piece-letter{font-size:10px}
.reserve-count{top:-3px;right:-3px;min-width:19px;height:19px;border:1px solid #cc9f63;background:#301d10;color:#f9e3b7;line-height:16px;font-size:11px;z-index:4;border-radius:50%;box-shadow:0 2px 3px #1b0c0499}
.reserve-piece.selected{box-shadow:0 0 0 2px #f3cc79;background:#c3945377}
.reserve-note{display:flex;flex:0 0 45px;align-items:center;justify-content:center;gap:9px;text-align:left;color:#eed8b6;text-shadow:0 1px 3px #1b1109;font-size:10px;font-style:italic;padding:4px 0}
.reserve-note svg{width:17px;height:17px;color:#d1aa6b}
.table-footer{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:21px 2px 0;padding:5px 1px;font-size:9px;color:#f2ddba;text-shadow:0 1px 3px #1f1308}.tiny-diamond{color:#f1c883}#saveStatus{font-size:8px;color:#f3dfbe;white-space:nowrap}
.rail{display:flex;flex-direction:column;gap:16px;max-height:none;overflow:visible;padding:38px 0 0;min-width:0;max-width:none;margin:0}
.notice-board,.trail-card{position:relative;border:11px solid transparent;border-image:url('/assets/art/paper-edge.e69e3bcfd0a6.webp') 12 stretch;background-color:#e8cfa7;background-image:radial-gradient(ellipse at 50% 20%,#f7e6c275,transparent 78%),var(--parchment);background-size:auto,230px 42px;background-clip:padding-box;box-shadow:0 4px 8px #29150980;filter:drop-shadow(0 2px 2px #21110788);border-radius:0}
.notice-board{padding:3px 6px 9px}
.notice-board::before,.trail-card::before{content:'';position:absolute;top:0;left:0;width:7px;height:7px;border-radius:50%;background:radial-gradient(circle at 33% 26%,#e9d3a2,#4c3a26 43%,#211a10 65%);box-shadow:1px 2px 2px #3b25126b;z-index:2}
.status-card{background:none;color:var(--ink);border-radius:0;padding:0;box-shadow:none;overflow:visible}
.status-card>.eyebrow{font-size:10px;color:#573b23;letter-spacing:.07em;font-weight:700;line-height:1.5}
.status-heading{margin-top:9px;gap:5px;align-items:flex-start}
.status-heading h2{font-size:27px;font-weight:700;line-height:1.14;letter-spacing:-.045em;max-width:none;flex:1}
.status-star{color:#7b5b32;display:block;padding-top:2px}.status-star svg{width:22px;height:22px}
#statusText{color:#49301d;font-size:13px;line-height:1.6;margin:10px 0 0;min-height:0}
.notice-landscape{height:55px;width:100%;background:var(--drawing) center 50%/cover no-repeat;mix-blend-mode:multiply;opacity:.49;mask-image:linear-gradient(transparent,black 23%,black 85%,transparent);margin:5px 0 2px}
.status-meta{margin:8px 0 11px;gap:7px;color:#634427}.mini-badge{color:#644524;border-color:#9970425c;border-radius:1px;font-size:8px;padding:3px 5px;letter-spacing:.035em}#engineLabel{font-size:8px;color:#725634;letter-spacing:.07em}
.status-card.danger{background:#94331c16}.status-card.danger h2{color:#7d271b}.status-card.finished{background:#5b5e2920}.status-card.finished h2{color:#454b25}
.piece-card{border:0;border-top:1px solid #82603c88;background:none;border-radius:0;overflow:visible;padding-top:9px}
.card-label{font-size:10px;letter-spacing:.075em;line-height:1.3;padding:0;gap:7px;color:#594025;border-bottom:0;display:flex;align-items:center;justify-content:space-between}
.piece-card .card-label{font-size:9px;flex-wrap:wrap;gap:4px}.card-label span{font-size:8px;letter-spacing:.01em;color:#7b5834}
.inspector-empty{padding:12px 0 13px;gap:12px;align-items:flex-start}.inspector-empty>svg{width:28px;height:31px;color:#6a482a;flex-shrink:0}.inspector-empty h3{font-size:18px}.inspector-empty p{color:#5c3e25;font-size:12px;line-height:1.65}
.paper-button{font-size:10px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;border:1px solid #926b4090;color:#55391f;padding:8px 12px;min-height:37px;background:linear-gradient(#f4ddb34d,#b1874c21);border-radius:2px;box-shadow:inset 0 1px 0 #fff0ca6b,0 1px 1px #52301425;display:flex;align-items:center;justify-content:space-between;gap:14px;width:100%}
.paper-button:hover{background:#ae81422b}
.inspector-main{padding:11px 0 6px;gap:12px}.inspect-tile{width:45px;height:58px}.inspect-tile .tile{width:43px;height:55px}.inspect-heading h3{font-size:23px;font-weight:600}.inspect-heading p{font-size:10px;color:#715133}
.inspect-detail{padding:0 0 8px;gap:10px}.inspect-detail .movement-diagram{width:76px;height:76px}.inspect-detail p{font-size:11px;color:#5c3d25;line-height:1.55}.inspect-subnote{padding:7px 0 10px;font-size:10px;line-height:1.5;color:#75432b;border-color:#98704465}
.trail-card{display:flex;padding:6px 5px 8px;gap:12px;align-items:flex-start;transform:rotate(.35deg)}
.trail-mark{display:block;color:#684628;margin-top:5px}.trail-mark svg{width:32px;height:35px}.trail-card .eyebrow{font-size:10px;color:#54351f;letter-spacing:.08em}.trail-card h3{display:none}.trail-card p{font-size:11px;color:#644627;margin-top:5px;line-height:1.6}
.text-link{color:#50341d;display:flex;justify-content:space-between;gap:10px;align-items:center;text-transform:uppercase;font-size:9px;font-weight:700;letter-spacing:.025em;margin-top:9px;border:1px solid #9d764880;padding:9px 8px;border-radius:2px;min-height:38px;box-shadow:0 1px 2px #633b171c;white-space:normal}.text-link:hover{background:#ad814329}.text-link span{margin:0;font-size:14px}
.history-card{border:7px solid #65472d;border-image:var(--frame-grain) 9 stretch;border-radius:0;background-color:#dfbf92;background-image:var(--maple);background-size:120px 115px;box-shadow:0 4px 0 #322013,0 7px 10px #1f140950;overflow:hidden}
.history-card>.card-label{padding:9px 8px;color:#ecd0a1;background-color:#47301d;background-image:linear-gradient(#21150a1c,#22150774),var(--grain);background-size:auto,390px 46px;border-bottom:2px solid #29190a;text-shadow:0 1px 2px #211005;font-size:10px}
.history-card .card-label span{color:#e0c497;font-size:9px;white-space:nowrap}
.history{max-height:164px;min-height:70px;overflow-y:auto;scrollbar-color:#9f784d #d4b482;scrollbar-width:thin}
.history-empty{color:#573b22;font-family:Georgia,serif;font-size:11px;font-style:normal;min-height:124px;display:flex;flex-direction:column;justify-content:flex-end;padding:79px 8px 12px;background:var(--drawing) center 12px/100% auto no-repeat;background-blend-mode:multiply}
.history-empty span{display:none}
.move-entry{padding:7px 8px;border-bottom:1px solid #9e714537;gap:6px;font-size:11px;background:#eed3a138}.move-entry:nth-child(even){background:#f1daba60}.move-entry:last-child{background:#a87e3c30}.move-index{color:#805a33}.move-side{color:#846032}.move-side.slate{color:#753123}.move-entry-name{color:#4c331f;font-size:10px}.move-squares{font-size:11px;color:#49301f}.move-event{color:#7b2e1c}
.history-actions{background:#a97b4026;border-top:1px solid #97683964;padding:4px 6px;gap:2px}.history-actions button{color:#53381f;min-height:32px;font-size:10px;padding:5px 4px;white-space:nowrap}
.rail-footnote{color:#f0d7b5;text-shadow:0 1px 3px #24160b;font-size:9px;line-height:1.7;text-align:center}.rail-footnote button{font-size:9px;min-height:26px}.rail-footnote span{margin:0 2px}
.page-footer{border:none;margin:26px 0 0;padding:7px 10px;display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:6px 20px;text-align:center;color:#f8e3bf;text-shadow:0 1px 3px #291b0d;font-size:10px;letter-spacing:.02em}.page-footer>span:first-child{color:#f6dbaf;font-size:12px;letter-spacing:.14em;font-weight:700}.page-footer>span:last-child{display:none}
.mobile-status{display:none}
/* The same parchment language continues into every actual game dialog. */
dialog{border:12px solid transparent;border-image:url('/assets/art/paper-edge.e69e3bcfd0a6.webp') 12 stretch;border-radius:0;background-color:#ead3ac;background-image:radial-gradient(#fff4d073,transparent 90%),var(--parchment);background-size:auto,230px 42px;background-clip:padding-box;color:#3b2818;box-shadow:0 25px 100px #170d0a9c;padding:22px 25px;width:calc(100% - 32px);max-width:510px;max-height:calc(100dvh - 36px)}
dialog::backdrop{background:#271b139c;backdrop-filter:blur(3px)}
dialog .eyebrow{font-size:10px;letter-spacing:.09em;color:#77442b}dialog h2{font-size:31px;font-weight:700;letter-spacing:-.035em}dialog .modal-lead{font-size:13px;color:#6a4b2e;line-height:1.65}
.close-dialog{right:5px;top:4px;min-width:38px;min-height:38px;color:#644426;background:#f3ddb14a;border:1px solid #b48a5555;border-radius:2px}
fieldset{margin:18px 0}.choice{background:#f9e8c53b;border-color:#a984526d;box-shadow:inset 0 1px 0 #ffedc966;border-radius:2px;padding:11px;min-height:60px}.choice:has(input:checked){background:#cbaa6b44;border-color:#875a2f}.choice b{font-size:13px}.choice small{font-size:11px;color:#6e4e30}
legend{font-size:11px;color:#654526}.form-row label{font-size:11px;color:#67472b}.form-row select{background:#f1dcb8;color:#46301b;border-color:#ad8351;border-radius:2px;min-height:40px;font-size:12px}.check-option{font-size:12px;color:#68492c;min-height:30px}.modal-note{color:#68492c;font-size:11px;border-color:#997141;background:#a77c3830}
.modal-buttons{gap:12px}.modal-buttons .primary,.modal-buttons .secondary{min-height:44px;padding:12px 16px}.wide{margin-top:20px;min-height:45px;font-size:12px}.promotion-option{background-image:var(--maple);background-size:100px 100px;border:2px solid #94704477;border-radius:3px;box-shadow:inset 0 0 12px #946d3450;padding:20px 10px}.promotion-option.promote{background-image:linear-gradient(#c5984b38,#c1854150),var(--maple);border-color:#9c612f}.promotion-option b{font-size:14px;color:#4f311b}.promotion-option small{font-size:11px;color:#735034}.promotion-option .piece-letter{font-size:15px}
.guide-dialog{max-width:730px}.guide-tabs{border-color:#9a75474a}.guide-tabs button{color:#7b5531;padding:11px 12px;font-size:12px;min-height:44px}.guide-tabs button.active{color:#7b3321;border-color:#7b3321}.guide-section p{color:#60432a;font-size:13px}.guide-section strong{color:#432b19}.guide-section h3{font-size:22px;font-weight:600}.guide-piece{background:#f5e1bb42;border-color:#aa7f494d;border-radius:2px}.guide-piece p{font-size:11px;color:#624429}.guide-piece h3{font-size:20px}.guide-piece small{color:#843d25}.legend-box{color:#68482a;border-radius:0;background:#b5864030;font-size:12px}.source-links a{color:#783920}.guide-mini{gap:12px}
.lesson-banner p{color:#644426}.lesson-banner button{color:#744324;min-height:37px}.lesson-banner .next-lesson{color:#f8e5bf;background:#77442a;border:1px solid #9d7545;border-radius:2px;padding:9px 11px}.claim-btn{color:#7b311d;font-size:11px;line-height:1.5}
.toast{background-color:#422a18;background-image:linear-gradient(#27170c50,#1f1008a0),var(--grain);background-size:auto,390px 45px;color:#f8e4c0;border:1px solid #b18a51;border-radius:3px;font-family:Georgia,serif;font-size:13px;box-shadow:0 5px 20px #2515087d;line-height:1.5;bottom:22px;z-index:100}
[hidden]{display:none!important}
@media(min-width:1021px) and (max-width:1240px){
 :root{--reserve-width:183px;--rail-width:260px;--play-width:clamp(360px,min(calc(100vw - 529px),calc(100dvh - 245px)),690px)}
 .topbar{grid-template-columns:285px 249px minmax(0,1fr);height:162px;margin-bottom:13px}.tagline-plank{padding:19px 13px 13px;min-height:110px;margin-bottom:15px}.tagline-plank h1{font-size:19px}.tagline-plank p{font-size:8px;letter-spacing:.065em}.control-plank{padding:9px 6px 5px}.nav-actions{gap:5px}.wood-button,.nav-actions .primary{font-size:10px;padding:8px;gap:5px}.wood-button svg{width:13px;height:13px}.icon-btn{min-width:30px;width:30px}.player-medal{min-width:40px;width:40px;height:50px}.player-medal svg{width:31px;height:34px}.player-line{padding:10px 8px;gap:8px}.player-label{font-size:12px}.player-label small{font-size:9px}.player-state{font-size:9px}.hand-title{font-size:10px;padding:6px}.hand-title span{font-size:9px}.hand-pieces{gap:6px;padding:10px 7px}.reserve-piece{min-width:40px;width:40px;height:48px}.reserve-piece .tile{width:35px;height:45px}.status-heading h2{font-size:25px}.status-star{display:none}.notice-board{padding-left:3px;padding-right:3px}#statusText{font-size:12px}.trail-card{gap:9px}.trail-mark svg{width:26px;height:30px}.trail-card .eyebrow{font-size:9px}.text-link{font-size:8px}.hand-empty{font-size:12px}.reserve-note{font-size:9px}.table-footer{font-size:8px}#saveStatus{font-size:7px}
}
@media(min-width:1021px) and (max-height:790px){
 .topbar{height:147px;grid-template-columns:285px 235px minmax(0,1fr);margin-bottom:9px}.brand-art{max-height:145px}.brand{margin-top:1px}.tagline-plank{padding:15px 13px 11px;min-height:102px;margin-bottom:10px}.tagline-plank h1{font-size:18px}.tagline-plank p{font-size:8px;letter-spacing:.06em;margin-top:8px}.nav-actions{gap:5px}.control-plank{padding:8px 7px 4px;min-height:75px}.wood-button,.nav-actions .primary{font-size:10px;padding:8px;gap:4px}.wood-button svg{width:13px;height:13px}.icon-btn{min-width:30px;width:30px}.plank-proverb{font-size:9px}.rail{gap:12px}.notice-landscape{height:37px}.status-heading h2{font-size:24px}#statusText{font-size:12px}.status-meta{margin:6px 0 8px}.inspector-empty{padding:9px 0;gap:9px}.inspector-empty p{font-size:11px}.trail-card{padding-top:2px;padding-bottom:4px}.history-empty{min-height:85px;padding-top:49px}.history{max-height:115px}.history-actions button{min-height:29px}.posse-rail{height:calc(var(--play-width) + 67px)}.reserve-note{flex-basis:31px}.page-footer{margin-top:18px}
}
/* Tablet: reserves travel with the board, not a squeezed third column. */
@media(max-width:1020px){
 :root{--rail-width:265px;--reserve-width:0px;--play-width:620px}
 body{padding-bottom:40px}.topbar{width:calc(100% - 32px);max-width:960px;height:auto;min-height:130px;grid-template-columns:235px minmax(0,1fr);gap:0 12px;padding:0;margin-bottom:14px}.brand{grid-column:1;grid-row:1/3;align-self:center;margin-top:7px}.brand-art{max-height:126px}.tagline-plank{grid-column:2;grid-row:1;margin:15px 0 0;padding:10px 15px;min-height:0;transform:none}.tagline-plank h1{font-size:17px;line-height:1.1}.tagline-plank h1 br{display:none}.tagline-plank p{font-size:8px;letter-spacing:.1em;margin-top:6px;padding-top:5px}.control-plank{grid-column:2;grid-row:2;margin:5px 0 0;min-height:0;padding:8px}.plank-proverb{display:none}.nav-actions{gap:6px;justify-content:space-between}.wood-button,.nav-actions .primary{font-size:10px;min-height:40px;padding:8px 10px}.icon-btn{height:40px;min-height:40px;width:33px;min-width:33px}.page{width:calc(100% - 36px);max-width:960px;padding:0}.game-layout{display:grid;grid-template-columns:minmax(0,1fr) var(--rail-width);gap:18px}.table-area{display:flex;flex-direction:column;gap:12px;max-width:none;margin:0}.posse-rail{display:contents}.posse-group{width:100%;flex:none;display:grid;grid-template-columns:142px minmax(0,1fr);gap:7px;min-height:75px}.home-posse{order:3}.opposing-posse{order:1}.board-stage{order:2}.reserve-note{display:none}.player-line{margin:0;padding:9px 7px;min-height:75px;gap:7px}.player-medal{width:33px;min-width:33px;height:43px}.player-medal svg{width:27px;height:31px}.player-label{font-size:10px;letter-spacing:.03em}.player-label small{display:block;font-size:9px;margin:5px 0 0}.player-state{font-size:8px;margin-top:4px}.player-turn{right:4px;top:5px}.turn-dot{width:4px;height:4px}.hand-tray{border-width:5px;min-height:75px;max-height:156px}.hand-title{font-size:9px;padding:3px 6px;letter-spacing:.03em}.hand-title span{font-size:8px}.hand-pieces{padding:5px 7px;gap:5px;overflow:auto;align-content:flex-start;min-height:43px}.hand-empty{font-size:10px;line-height:1.3}.hand-empty br{display:none}.reserve-piece{min-width:31px;width:31px;height:38px}.reserve-piece .tile{width:29px;height:36px}.reserve-piece .piece-letter{font-size:8px}.reserve-count{height:15px;min-width:15px;line-height:13px;font-size:9px;right:-2px;top:-2px}.table-toolbar{margin:0 0 7px;padding:0 3px;height:29px;min-height:29px}.board-shell{padding:12px 15px 17px 4px;margin:0}.files{height:20px;padding-left:21px;font-size:11px;line-height:15px}.board-with-ranks{grid-template-columns:21px 1fr}.ranks{font-size:11px}.iron-corner{width:37px;height:37px}.tile{width:86%;height:91%}.piece-letter{font-size:11px}.tile .piece-icon{max-height:43px}.table-footer{margin-top:16px;margin-bottom:0;font-size:8px;padding:1px 0}#saveStatus{font-size:7px}.rail{padding-top:0;max-height:none;overflow:visible;display:flex;gap:13px;width:100%;max-width:none}.status-heading h2{font-size:26px}.status-star{display:none}.card-label{font-size:10px}.notice-board{padding-left:4px;padding-right:4px}.trail-mark{display:block}.trail-card h3{display:none}.history{max-height:175px}.page-footer{display:flex;margin-top:20px;font-size:9px}.page-footer>span{font-size:9px}.prop-hat{width:135px;height:125px}.prop-lantern{width:60px;height:220px;bottom:65px}
}
/* Phone: full board first, real touch controls, no horizontal scrolling. */
@media(max-width:760px){
 :root{--rail-width:0px;--reserve-width:0px;--play-width:100%}
 body{padding-bottom:35px}.frontier-scene{background-position:48% center}.foreground-props{height:80px}.prop-hat,.prop-lantern{display:none}.topbar{width:calc(100% - 20px);height:auto;min-height:0;max-width:610px;grid-template-columns:1fr;gap:0;padding:0;margin-bottom:12px}.brand{grid-column:1;grid-row:1;width:223px;max-width:62%;margin:2px auto -3px;align-self:start;z-index:2}.brand-art{max-height:112px;width:100%;height:auto}.tagline-plank{display:none}.control-plank{grid-column:1;grid-row:2;margin:0;padding:7px;border-width:2px}.nav-actions{gap:5px;justify-content:space-between}.wood-button,.nav-actions .primary{font-size:10px;min-height:43px;padding:8px 9px;gap:5px}.wood-button svg{width:15px;height:15px}.icon-btn{width:35px;min-width:35px;height:43px;min-height:43px;padding:8px}.nav-actions #passPlayBtn{flex:1}.plank-proverb{display:none}.page{width:calc(100% - 20px);max-width:600px;padding:0}.game-layout{display:flex;flex-direction:column;gap:20px;width:100%}.table-area{width:100%;margin:0;gap:9px;display:flex;max-width:none}.posse-group{min-height:69px;grid-template-columns:138px minmax(0,1fr);gap:7px;width:100%}.player-line{min-height:70px;padding:7px 6px;gap:7px}.player-medal{width:31px;min-width:31px;height:42px}.player-medal svg{width:25px;height:29px}.player-label{font-size:10px;letter-spacing:.02em}.player-label small{font-size:9px}.player-state{font-size:8px;line-height:1.35}.hand-tray{min-height:70px;max-height:152px}.hand-title{padding:3px 5px;font-size:9px}.hand-title span{font-size:8px}.hand-pieces{padding:5px 6px;gap:4px;min-height:34px}.hand-empty{font-size:10px;line-height:1.35}.hand-empty br{display:block}.reserve-piece{width:32px;min-width:32px;height:38px}.reserve-piece .tile{width:29px;height:36px}.reserve-count{min-width:15px;height:15px;font-size:9px;line-height:13px}.table-toolbar{height:30px;min-height:30px;margin:0 0 6px;gap:9px;padding:0 2px}.mode-pill{font-size:8px;padding:3px 6px}.turn-counter{font-size:9px}.tool-btn{font-size:10px;min-height:30px;padding:4px 0 4px 6px}.tool-btn svg{width:14px;height:14px}.mobile-status{display:block;padding:8px 10px;margin:0 0 8px;background-color:#e7cda0;background-image:var(--parchment);background-size:230px 42px;color:#684427;border:1px solid #a57a45;box-shadow:0 2px 4px #2815093d;border-radius:1px;min-height:41px;font-size:11px;line-height:1.65}.mobile-status strong{color:#5f321e}.mobile-status button{font-size:10px;float:right;min-height:30px;margin-left:8px;max-width:102px;text-decoration:underline;color:#793b24;font-weight:700;padding:3px 0}.board-shell{border-width:2px;padding:9px 11px 14px 1px;margin:0;box-shadow:inset 0 0 0 2px #c0976399,inset 0 0 0 4px #38211555,0 4px 0 #382316,0 8px 0 #20180fbb,0 12px 20px #20130975}.files{height:18px;font-size:10px;line-height:13px;padding-left:19px;padding-bottom:5px}.board-with-ranks{grid-template-columns:19px 1fr}.ranks{font-size:10px}.board{border-width:1px}.iron-corner{width:28px;height:28px}.tile{width:87%;height:91%;filter:drop-shadow(.5px 2px .75px #49280d9f)}.tile-face{inset:1.1px 1.1px 2px;padding:8% 7% 5%}.tile.enemy .tile-face{padding:5% 7% 8%}.tile .piece-icon{width:75%;height:66%;max-height:44px}.piece-letter{font-size:9px;margin-top:1px}.tile .promotion-star{top:4px;right:6%;font-size:7px}.table-footer{font-size:8px;margin:13px 2px 2px;gap:6px;padding:0;line-height:1.5}#saveStatus{font-size:7px;white-space:normal;text-align:right;max-width:40%}.square.selected{box-shadow:inset 0 0 0 2px #593a21,inset 0 0 0 3px #f6d798b8}.square.legal::after{width:19%;box-shadow:0 0 0 1px #f9dfa9a0,0 1px 2px #41280a70}.square.legal.occupied::after{border-width:2px}.rail{display:grid;grid-template-columns:1fr;gap:16px;padding:0;max-height:none;overflow:visible;width:100%;max-width:none;margin:0}.notice-board{padding:8px 11px 11px}.status-heading h2{font-size:29px;max-width:none}.status-star{display:block}.status-star svg{width:23px;height:23px}#statusText{font-size:13px}.notice-landscape{height:62px;background-size:100% auto}.status-meta{margin:8px 0 12px}.mini-badge{font-size:9px}#engineLabel{font-size:9px}.piece-card .card-label{font-size:10px}.inspector-empty{padding:14px 0 15px;gap:14px}.inspector-empty>svg{width:33px;height:36px}.inspector-empty p{font-size:13px}.inspect-heading h3{font-size:26px}.inspect-detail{padding:3px 0 11px;gap:15px}.inspect-detail .movement-diagram{width:86px;height:86px}.inspect-detail p{font-size:12px}.inspect-subnote{font-size:11px}.paper-button{font-size:11px;min-height:42px}.trail-card{padding:12px 13px;gap:16px;transform:rotate(.2deg)}.trail-card .eyebrow{font-size:12px}.trail-card p{font-size:12px}.trail-mark{margin-top:5px}.trail-mark svg{width:38px;height:43px}.text-link{min-height:43px;font-size:10px;padding:10px 12px;gap:18px}.history-card>.card-label{font-size:11px;padding:10px}.history-card .card-label span{font-size:10px}.history{max-height:190px}.history-empty{font-size:13px;min-height:153px;padding-top:115px;padding-bottom:14px;background-size:100% auto}.history-actions{padding:4px 8px}.history-actions button{min-height:42px;font-size:12px}.move-entry{font-size:12px;padding:10px}.move-entry-name,.move-squares{font-size:12px}.rail-footnote{font-size:10px}.rail-footnote button{font-size:10px;min-height:38px}.page-footer{display:flex;margin-top:20px;padding:12px 0;gap:5px;font-size:9px;line-height:1.7}.page-footer>span{display:block;font-size:9px}.page-footer>span:first-child{font-size:11px;width:100%}.page-footer>span:last-child{display:none}
 dialog{padding:25px 18px;max-height:calc(100dvh - 24px);width:calc(100% - 22px);max-width:520px;border-width:9px}dialog h2{font-size:28px}dialog .eyebrow{font-size:9px}dialog .modal-lead{font-size:12px}.form-row{grid-template-columns:1fr;gap:10px}.form-row select{font-size:14px;min-height:44px}.choice{min-height:64px}.check-option{font-size:12px;min-height:33px}.guide-dialog{max-width:calc(100vw - 20px)}.guide-mini{grid-template-columns:1fr}.guide-piece p{font-size:12px}.guide-tabs button{font-size:11px;padding:10px}.guide-section p{font-size:13px}.promotion-option{padding:19px 9px}.promotion-option .tile{width:64px;height:80px}.promotion-option .piece-letter{font-size:14px}.toast{font-size:12px;width:calc(100% - 26px);bottom:15px;padding:12px 16px}
}
@media(max-width:410px){
 .topbar,.page{width:calc(100% - 16px)}.control-plank{padding:6px}.nav-actions{gap:4px}.nav-actions .primary{font-size:9px;padding:8px}.wood-button{padding:8px 7px;min-width:38px}.wood-button svg{width:15px;height:15px}#undoBtn span,#hintBtn span{display:none}#passPlayBtn{font-size:9px;gap:5px}.icon-btn{min-width:31px;width:31px}.posse-group{grid-template-columns:131px minmax(0,1fr)}.player-label{font-size:9px}.player-label small{font-size:8px}.player-state{font-size:8px}.hand-title{font-size:8px;letter-spacing:.01em}.hand-title span{font-size:8px}.hand-pieces{gap:4px;padding:5px}.reserve-piece{width:29px;min-width:29px;height:36px}.reserve-piece .tile{width:27px;height:34px}.reserve-piece .piece-letter{font-size:7px}.mobile-status{font-size:10px}.mobile-status button{font-size:9px}.table-footer{font-size:7px}#saveStatus{font-size:7px}.piece-letter{font-size:8px}.board-shell{padding-right:10px}.notice-board{padding:7px 8px 9px}
}
@media(max-width:340px){
 .brand{width:195px;max-width:64%}.nav-actions .primary{font-size:8px;padding:8px 6px}.nav-actions{gap:3px}.wood-button{min-width:33px;padding:8px 5px}.icon-btn{width:29px;min-width:29px}#passPlayBtn{font-size:8px;gap:4px}#passPlayBtn svg{width:13px}.posse-group{grid-template-columns:119px minmax(0,1fr);gap:5px}.player-line{gap:5px;padding:6px 5px}.player-medal{min-width:27px;width:27px;height:38px}.player-medal svg{width:23px;height:26px}.player-label{font-size:8px}.player-label small{font-size:8px}.player-state{font-size:7px}.hand-title{font-size:7px;padding:4px}.hand-title span{font-size:7px}.hand-empty{font-size:9px}.files{padding-left:16px;font-size:9px}.board-with-ranks{grid-template-columns:16px 1fr}.ranks{font-size:9px}.piece-letter{font-size:7px}.tile-face{inset:1px 1px 1.5px}.mobile-status{font-size:10px}.table-footer>span:first-child{max-width:62%}
}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
/* Visual QA refinements: clean paper, live text containment, centered reserves. */
.tagline-plank h1{white-space:normal}
.hand-pieces:has(.hand-empty){align-content:center}
.tile-face{border:1px solid #ba8f5859}
body{padding-bottom:25px}
@media(min-width:1241px) and (min-height:791px){.topbar{grid-template-columns:320px 330px minmax(0,1fr)}.tagline-plank h1{font-size:21px;letter-spacing:.035em}.tagline-plank{margin-bottom:18px}}
@media(max-width:760px){.foreground-props{opacity:.72}body{padding-bottom:24px}}
@media(max-width:480px){#undoBtn span,#hintBtn span{display:none}.nav-actions #undoBtn,.nav-actions #hintBtn{min-width:37px;padding-left:8px;padding-right:8px}}



/* Audio controls preserve the Frontier Porch timber / parchment material language. */
#musicBtn{position:relative;flex-shrink:0}
#musicBtn svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.7}
#musicBtn.score-playing{color:#f0ce85;box-shadow:inset 0 0 0 1px #c6a15d,0 1px 3px #100b07}
#musicBtn.score-playing:after{content:'';position:absolute;right:5px;top:5px;width:5px;height:5px;background:#edc574;border-radius:50%}
#scoreDialog{width:min(580px,calc(100vw - 28px));max-height:calc(100dvh - 36px);overflow:auto;padding:27px;background-color:#ead8b4;color:#302116;border:2px solid #755035;box-shadow:0 18px 70px #170d09aa}
#scoreDialog h2{font-size:clamp(24px,5vw,32px);margin:3px 24px 7px 0;line-height:1.1}
#scoreDialog .score-kicker{font-size:11px;font-weight:700;letter-spacing:.19em;margin:0;color:#745034}
#scoreDialog .score-intro{margin:7px 0 17px;font-size:14px;line-height:1.55;max-width:45ch}
#scoreDialog .score-now{padding:13px 15px;margin-bottom:17px;border:1px solid #97704b;background:#563921;color:#f2dfb8;box-shadow:inset 0 2px 8px #21160d55}
#scoreDialog .score-now small{display:block;color:#d6b585;font-size:10px;letter-spacing:.15em;font-weight:700;margin-bottom:5px}
#scoreNowPlaying{font-size:17px;line-height:1.35}
#scoreDialog .score-switch{display:flex;align-items:center;gap:10px;min-height:36px;line-height:1.4;cursor:pointer}
#scoreDialog input[type=checkbox]{width:18px;height:18px;accent-color:#6b422a;flex-shrink:0;margin:0}
#scoreDialog input[type=range]{width:100%;accent-color:#805131;min-height:30px;padding:0}
#scoreDialog .score-mixer{display:grid;grid-template-columns:1fr 1fr;gap:20px;padding-bottom:15px;margin-bottom:14px;border-bottom:1px solid #8b684566}
#scoreDialog .score-slider-label{display:flex;justify-content:space-between;font-size:12px;margin-top:5px;color:#624631}
#scoreDialog select{width:100%;min-height:42px;background:#f3e5ca;color:#302116;border:1px solid #96704a;margin:6px 0 10px;padding:8px;font:inherit;font-size:14px}
#scoreDialog .score-cues-label{font-size:12px;font-weight:bold;letter-spacing:.10em;margin:17px 0 8px}
#scoreCueList{display:grid;grid-template-columns:1fr 1fr;gap:8px}
#scoreCueList button{min-height:45px;text-align:left;background:#e2cba3;color:#352316;border:1px solid #99754f;font:inherit;font-size:13px;padding:9px 10px;box-shadow:inset 0 1px 0 #fff6}
#scoreCueList button:hover{background:#f0dfbf}
#scoreDialog .score-footnote{font-size:12px;line-height:1.5;color:#654b36;margin:15px 0 0}
#scoreDialog .score-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:12px}
#scoreDialog .score-actions button{min-height:34px;font-size:12px;padding:6px 10px}
#scoreError{font-size:13px;line-height:1.5;color:#712f23;padding:10px;border:1px solid #994b3c}
#scoreDialog :focus-visible{outline:3px solid #a75e25;outline-offset:3px}
@media(max-width:480px){#scoreDialog{padding:22px 17px}#scoreDialog .score-mixer{gap:13px}#scoreCueList{gap:6px}.top-actions{gap:5px}}
@media(max-width:420px){.nav-actions #passPlayBtn span{display:none}.nav-actions #passPlayBtn{min-width:35px;flex:1;justify-content:center}.nav-actions{gap:3px}}


/* Public-alpha shell: preserves the Frontier Porch game composition. */
.launch-screen{position:fixed;inset:0;z-index:20000;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;background:#3b281b;color:#ead7b4;text-align:center;padding:28px;font-family:Georgia,serif}.launch-screen[hidden]{display:none!important}.launch-screen img{object-fit:contain;max-width:80vw}.launch-caption{font-size:25px}.launch-screen #launchDetail{font-size:14px;max-width:420px;color:#d0ba96}.launch-screen button{margin-top:10px}.skip-to-board{position:fixed;top:-100px;left:16px;padding:12px 20px;z-index:20001;background:#f0dfc4;color:#302317;border:2px solid #8b6847}.skip-to-board:focus{top:12px}.alpha-tag{border:1px solid #887458;padding:5px 8px;border-radius:2px;letter-spacing:.08em}.page-footer{gap:16px;flex-wrap:wrap}.page-footer nav{display:flex;align-items:center;gap:16px}.page-footer nav a,.page-footer nav button{font:inherit;color:inherit;text-decoration:underline;text-underline-offset:3px;padding:6px 0}.noscript-note{margin:20px;padding:24px;background:#ead7b4;color:#3b281b;position:relative;z-index:21000}.info-page{max-width:820px;margin:60px auto;padding:40px;background:#eddec2;color:#302317;border:8px solid #61432d;box-shadow:0 20px 60px #0008;font-family:Georgia,serif;font-size:18px;line-height:1.65}.info-page h1{font-size:38px;line-height:1.15;margin:20px 0}.info-page h2{font-size:24px;margin:26px 0 12px}.info-page p{margin:12px 0}.info-page .eyebrow{font-size:12px}.info-page a{text-decoration:underline;text-underline-offset:3px}.info-page .back-link{display:inline-block;font:700 14px Arial,sans-serif;padding:10px 0}.info-page hr{border:0;border-top:1px solid #aa9571;margin:32px 0}@media(max-width:600px){.info-page{margin:16px 10px;padding:22px;border-width:5px;font-size:17px}.info-page h1{font-size:31px}.page-footer nav{justify-content:center;flex-wrap:wrap;gap:14px}.alpha-tag{font-size:10px}}
