:root{color-scheme:light;--ink:#173e42;--ink-soft:#527074;--paper:#f5f0e5;--red:#a44334;--line:#d8d4c8;--serif:"Noto Serif SC","Source Han Serif SC","Songti SC",SimSun,serif;--sans:"PingFang SC","Microsoft YaHei",system-ui,sans-serif}*{box-sizing:border-box}body{margin:0;background:#173d41;color:var(--ink);font:16px/1.6 var(--sans);min-height:100dvh}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer}button:disabled{cursor:default;opacity:.38}button:focus-visible,a:focus-visible{outline:3px solid #bf7e39;outline-offset:4px}button{transition:background .18s,color .18s,transform .18s}button:active:not(:disabled){transform:translateY(1px)}[hidden]{display:none!important}.site-header{max-width:1300px;margin:auto;min-height:108px;display:flex;align-items:center;justify-content:space-between;padding:22px 40px;color:#f8f1df}.brand{display:flex;gap:17px;align-items:center;color:inherit;text-decoration:none;font-family:var(--serif);font-size:27px;letter-spacing:4px;line-height:1.5}.brand small{display:block;font:12px/1.8 var(--sans);letter-spacing:3px;color:#bccccc}.seal{display:flex;flex-direction:column;justify-content:center;width:42px;height:52px;text-align:center;background:var(--red);box-shadow:inset 0 0 0 3px #a44334,inset 0 0 0 4px #dab18c;font:18px/1.2 var(--serif);letter-spacing:0;transform:rotate(-3deg)}.catalog-button{display:flex;align-items:center;gap:15px;background:transparent;border:1px solid #658083;color:#f6efdf;border-radius:5px;padding:10px 17px;font-size:14px}.catalog-button:hover{background:#285056}.catalog-button>span:last-child{font-size:22px;line-height:1}.button-divider{height:15px;width:1px;background:#658083}.game-layout{max-width:1220px;margin:0 auto;display:grid;grid-template-columns:minmax(0,1fr) 290px;background:var(--paper);box-shadow:0 15px 60px #071d2440;border:1px solid #607574;min-height:690px}.play-section{min-width:0;padding:28px 28px 18px;border-right:1px solid var(--line);position:relative;background:radial-gradient(ellipse at 50% 20%,#fffaf0a0,transparent 65%),var(--paper)}.board-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 8px}.eyebrow{display:flex;align-items:center;gap:10px;font-size:12px;letter-spacing:2px;color:var(--ink-soft)}.heading-line{width:24px;height:1px;background:#adbbb5}.board-state{font-size:12px;color:var(--ink-soft);letter-spacing:1px}.board-wrap{position:relative;width:100%;max-width:760px;margin:auto}#board{width:100%;height:auto;display:block;touch-action:none;user-select:none;overflow:visible}.target-fill{fill:#e1e4da}.target-outline{fill:none;stroke:#9caea5;stroke-width:1.8;stroke-linejoin:round}.target-label{font-size:13px;fill:#82918a;letter-spacing:4px;text-anchor:middle;font-family:var(--sans)}.tray-rule{stroke:#d4d5c9;stroke-width:1;stroke-dasharray:3 7}.piece{cursor:grab;outline:none}.piece.dragging{cursor:grabbing}.piece polygon{stroke:#fcf6df;stroke-width:1.7;stroke-linejoin:round;filter:url(#pieceShadow);transition:filter .15s}.piece.selected polygon{stroke:#fffdf4;stroke-width:2.5;filter:url(#selectedShadow)}.piece:focus-visible polygon{stroke:#173e42;stroke-width:3.2}.piece.invalid polygon{stroke:#b52428;stroke-width:3.4}.piece.placed polygon{filter:none}.hint-shape{fill:#fefaf033;stroke:#a44334;stroke-width:2;stroke-dasharray:7 5;pointer-events:none}.piece-toolbar{display:flex;justify-content:space-between;align-items:center;gap:12px;min-height:60px;margin-top:-4px;padding:8px 12px;border:1px solid #dbd9cd;border-radius:5px;background:#fffaf077}.piece-toolbar>span{font-size:13px;color:var(--ink-soft)}.tool-buttons{display:flex;gap:7px}.tool-buttons button{border:1px solid #ccd1c6;border-radius:4px;color:var(--ink);background:#faf7ee;display:flex;gap:8px;align-items:center;padding:7px 13px;font-size:25px;line-height:1}.tool-buttons button span{font-size:14px}.tool-buttons button:hover:not(:disabled){background:#e3e9de}.side-panel{padding:36px 29px 24px;display:flex;flex-direction:column;align-items:stretch;background:#eeebdf77}.level-number{display:flex;gap:12px;align-items:baseline;color:#758882;margin-bottom:30px;font-size:12px;letter-spacing:2px}.level-number>span:first-child{font:italic 46px/1 Georgia,serif;color:#82938a}.chapter-kicker{font-size:12px;letter-spacing:4px;color:#71847c}h1{font:52px/1.5 var(--serif);letter-spacing:10px;margin:6px 0 8px}p{margin:0}.level-poem{font:16px/1.9 var(--serif);color:#5c746d;min-height:60px}.difficulty{display:flex;align-items:center;gap:16px;font-size:12px;color:#778b80;margin:22px 0}.difficulty>span:first-child{letter-spacing:5px;font-size:11px;color:#a97942}.rule-card{border-top:1px solid #cfd2c5;padding-top:21px;margin-bottom:24px}.small-label{font-size:12px;letter-spacing:2px;color:#7e8980}.rule-card p{margin-top:9px;font-size:14px;line-height:1.9;color:#48605b}.primary-button{width:100%;display:flex;justify-content:center;align-items:center;gap:9px;background:var(--ink);color:#faf2df;border:1px solid var(--ink);border-radius:4px;padding:12px 14px;font-size:14px;letter-spacing:1px}.primary-button:hover{background:#29575a}.primary-button>span:first-child{font-size:22px;line-height:1}.secondary-actions{display:flex;justify-content:space-between;gap:8px;margin:13px -5px 0}.secondary-actions button{border:0;background:transparent;padding:7px 5px;color:#657870;font-size:13px}.secondary-actions button:hover:not(:disabled){color:var(--red)}.hint-description{font-size:12px;line-height:1.8;color:#839085;margin-top:15px}.chapter-nav{margin-top:auto;padding-top:28px;display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:12px;color:#71867c}.chapter-nav button{border:1px solid #c8d0c2;background:transparent;border-radius:50%;width:37px;height:37px;font-size:20px;color:var(--ink)}.chapter-nav button:hover:not(:disabled){background:#dce3d6}footer{max-width:1220px;margin:17px auto 25px;display:flex;justify-content:space-between;gap:12px;color:#a5b9b6;font-size:12px;letter-spacing:1px}.footer-dot{margin:0 8px}.solved-banner{position:absolute;left:6%;right:6%;top:51%;display:flex;align-items:center;gap:15px;padding:17px 22px;border:1px solid #c2c9b7;background:#fff9ebf2;border-radius:5px;box-shadow:0 8px 25px #234e4920;animation:reveal .45s ease-out}.complete-seal{border:2px solid #a44334;color:#a44334;font:30px/1.3 var(--serif);padding:3px 6px;transform:rotate(-8deg)}.solved-banner strong{display:block;font:22px/1.6 var(--serif);letter-spacing:2px}.solved-banner div>span{font-size:12px;color:#64776b}.solved-banner button{margin-left:auto;background:var(--ink);color:#fff9e9;border:0;padding:10px 14px;border-radius:3px;white-space:nowrap;font-size:14px}dialog{border:1px solid #b7c5b9;background:var(--paper);color:var(--ink);border-radius:9px;padding:30px;max-width:780px;width:calc(100% - 32px);max-height:88dvh;box-shadow:0 25px 100px #041f4970}dialog::backdrop{background:#092b32b0;backdrop-filter:blur(5px)}.dialog-header{display:flex;justify-content:space-between;align-items:flex-start}.dialog-header h2{font:30px/1.5 var(--serif);letter-spacing:5px;margin:8px 0 0}.close-button{border:1px solid #c9d0c3;background:transparent;color:var(--ink);font-size:28px;line-height:1;width:40px;height:40px;border-radius:50%}.dialog-intro{font-size:14px;color:#6c8076;margin:12px 0 24px}.level-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:13px}.level-card{border:1px solid #cdd4c5;background:#eeeee1;position:relative;border-radius:5px;padding:11px;color:var(--ink);text-align:left}.level-card:hover{background:#e1e7da;border-color:#7b9886}.level-card.current{outline:2px solid #496e63;outline-offset:2px}.level-card svg{width:100%;height:85px;display:block;fill:#829589}.level-card.completed svg{fill:#486d60}.level-card .card-label{display:flex;align-items:center;gap:8px;font-size:15px}.card-label small{font-size:12px;color:#829083}.card-stamp{position:absolute;right:9px;top:9px;border:1px solid #a44334;color:#a44334;font:12px/1.5 var(--serif);padding:0 3px;transform:rotate(8deg)}.dialog-footnote{font-size:12px;color:#7c8c7f;text-align:center;margin:23px 0 0}.help-list{padding-left:22px;display:grid;gap:19px;margin:25px 0}.help-list li::marker{color:#a44334}.help-list strong{font-size:16px}.help-list p{font-size:14px;color:#5c756a;margin-top:5px}.keyboard-help{border-top:1px solid #d0d6c6;padding:18px 0;color:#6c8174;font-size:13px}.help-done{max-width:250px;margin-left:auto}.toast{position:fixed;left:50%;bottom:30px;transform:translateX(-50%);background:#143b3ef2;color:#fff8e8;border:1px solid #7e9890;border-radius:5px;padding:12px 22px;font-size:14px;max-width:90vw;z-index:10;box-shadow:0 6px 20px #052c3833;pointer-events:none}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@keyframes reveal{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
@media(min-width:1500px){.site-header{padding-top:32px;padding-bottom:30px}.game-layout{min-height:740px}.play-section{padding:30px 42px 23px}}
@media(max-width:1000px){.site-header{padding:22px 25px}.game-layout{margin:0 20px;grid-template-columns:minmax(0,1fr) 252px}.side-panel{padding:27px 22px}.play-section{padding:22px 17px 17px}footer{margin:17px 23px}.piece-toolbar{padding:8px}.tool-buttons button{padding:7px 9px}.piece-toolbar>span{font-size:12px}.level-number{margin-bottom:22px}.solved-banner{padding:12px;gap:10px}.solved-banner strong{font-size:18px}.solved-banner div>span{display:none}.eyebrow{font-size:12px;letter-spacing:1px}.heading-line{width:14px}}
@media(max-width:720px){.site-header{min-height:88px;padding:16px 18px}.brand{font-size:22px;gap:12px;letter-spacing:3px}.brand small{font-size:12px;letter-spacing:1px}.seal{width:34px;height:44px;font-size:16px}.catalog-button{padding:9px 10px;gap:9px;font-size:12px}.game-layout{margin:0 12px;display:flex;flex-direction:column;min-height:0;border-radius:6px;overflow:hidden}.play-section{padding:17px 10px 12px;border:0;order:1}.board-heading{padding:0 7px;gap:8px}.board-state{font-size:12px;letter-spacing:0}.board-wrap{max-width:570px}.piece-toolbar{margin-top:3px;min-height:54px;padding:7px 9px}.tool-buttons{gap:5px}.tool-buttons button{min-height:40px;padding:6px 10px;gap:5px;font-size:25px}.tool-buttons button span{font-size:13px}.side-panel{padding:18px 18px 16px;order:2;border-top:1px solid #d6d8c9;display:grid;grid-template-columns:1fr auto;column-gap:14px}.level-number{display:none}.chapter-kicker{grid-column:1;font-size:12px;letter-spacing:2px}.side-panel h1{grid-column:1;font-size:32px;letter-spacing:7px;margin:2px 0}.level-poem{grid-column:1;min-height:0;font-size:14px}.difficulty{grid-column:2;grid-row:1/3;align-self:center;margin:0;gap:8px}.difficulty>span:first-child{letter-spacing:2px}.rule-card{grid-column:1/-1;margin:15px 0 12px;padding-top:12px}.rule-card .small-label{display:none}.rule-card p{margin:0;font-size:14px}.actions{grid-column:1/-1;display:grid;grid-template-columns:1fr 1.15fr;gap:12px;align-items:center}.primary-button{padding:10px;font-size:13px;min-height:44px}.secondary-actions{margin:0;gap:3px}.secondary-actions button{font-size:13px;min-height:44px}.hint-description{grid-column:1/-1;margin-top:8px;font-size:12px}.chapter-nav{grid-column:1/-1;padding-top:15px}.chapter-nav button{width:34px;height:34px}footer{margin:16px 18px 25px;flex-wrap:wrap;font-size:12px;letter-spacing:0}.solved-banner{left:5%;right:5%;top:49%;padding:11px}.complete-seal{font-size:21px}.solved-banner strong{font-size:18px;letter-spacing:1px}.solved-banner button{font-size:13px;padding:9px 10px}dialog{padding:22px 18px}.level-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:11px}.level-card{padding:8px}.level-card svg{height:70px}.dialog-header h2{font-size:27px}.card-label{font-size:14px!important}.dialog-intro{font-size:13px}.help-done{max-width:none}.toast{bottom:20px;width:max-content;max-width:92vw;font-size:13px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}
kbd{font:11px/1.3 var(--sans);border:1px solid #c5cdbf;border-radius:3px;padding:1px 4px;margin-left:3px;color:#63776a}.piece-toolbar{position:sticky;bottom:12px;z-index:2;background:#faf7eef5}@media(max-width:720px){kbd{display:none}.piece-toolbar{bottom:7px}}
