@import url('https://fonts.googleapis.com/css2?family=Noto+Serif+SC:wght@600;700;900&family=Noto+Sans+SC:wght@400;500;700&display=swap');
.cell.artisan{background:linear-gradient(135deg,#bc9a48,#5e471e)!important;border-color:#f2d77a!important;box-shadow:inset 0 0 9px #fff7!important;cursor:not-allowed}.effects.compact{grid-template-columns:1fr 1fr;max-height:116px}.effects{max-height:180px}
.cell small{display:grid;place-items:center;height:100%;color:#fff9dd;font:700 13px 'Noto Serif SC';text-shadow:0 1px 2px #000}.activated{margin-top:14px;padding:12px;border:1px solid #635a46;background:#101817;color:#d8cbae}.activated>b{display:block;margin-bottom:8px;color:#f0d889;font:700 14px 'Noto Serif SC'}.activated div{display:flex;flex-wrap:wrap;gap:6px;color:#bdb39d;font-size:12px}.activated .prop{padding:3px 7px;background:#27332e;border-left:2px solid #c09b48;color:#efe3c2}.solution{display:grid;gap:7px;text-align:left;cursor:pointer}.solution-list{display:grid;gap:6px;color:#746852;font-size:11px}.placement{display:grid;grid-template-columns:38px 1fr;gap:7px;align-items:center;padding:6px;border-top:1px solid #d7c9aa}.placement-shape{display:grid;place-items:center;width:36px;height:36px;background:#17201f;border:1px solid #a98c49}.placement-shape svg{width:29px;height:29px}.placement b{display:block;color:#5d4923;font:700 12px 'Noto Serif SC'}.placement span,.placement small{display:block;margin-top:2px;color:#796f5d;font-size:10px}
.board{grid-template-columns:repeat(6,48px)}.cell{height:48px}.cell small{display:grid!important;grid-template-rows:1fr auto;align-content:center;line-height:1.05;font-size:14px}.cell small i{display:block;max-width:42px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#19211f;background:#fff8;padding:1px 2px;font:700 8px 'Noto Sans SC';text-shadow:none}.effect-element-group{padding:7px;border:1px solid #d6c8aa;background:#fbf8f0}.effect-element-group b{display:block;margin-bottom:4px;color:#5f4b23;font:700 12px 'Noto Serif SC'}.effect-element-group .effect{border:0;border-top:1px solid #e6dcc7;background:transparent}
.board{position:relative}.piece-layer{position:absolute;inset:0;pointer-events:none}.placed-piece{position:absolute;display:grid;gap:3px;filter:drop-shadow(0 3px 4px #0008)}.placed-piece .piece-cell{width:48px;height:48px;background:var(--tone);border:1px solid #fff9;box-shadow:inset 0 0 10px #fff4}.placed-piece.artisan .piece-cell{background:linear-gradient(135deg,#bc9a48,#5e471e)}.piece-name{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:3px;color:#fffbed;text-align:center;font:700 12px 'Noto Serif SC';line-height:1.15;text-shadow:0 1px 3px #000;letter-spacing:.5px;pointer-events:none}.piece-name span{max-width:100%;padding:2px 4px;background:#071111a8;border:1px solid #fff4}.placed-piece[data-wide="true"] .piece-name{font-size:13px}.board:has(.piece-layer) .cell.filled{background:#2a3c49!important;border-color:#4e7181!important;box-shadow:none!important}
.board-shell{position:relative;min-height:560px;background:radial-gradient(ellipse at 50% 48%,#27364c 0,#16202a 37%,#d6dfdb 70%,#eef1eb 100%)!important;overflow:hidden}.board-shell:before,.board-shell:after{content:'';position:absolute;left:50%;top:50%;width:620px;height:620px;border:2px solid #b89a58;border-radius:50%;transform:translate(-50%,-50%);opacity:.65}.board-shell:after{width:520px;height:520px;border-style:dashed;opacity:.38}.board{grid-template-columns:repeat(6,64px)!important;gap:3px!important;padding:0!important;background:#070d12!important;border:4px solid #151b1c!important;box-shadow:0 0 0 3px #a17a2e,0 12px 25px #0008!important;z-index:1}.cell{height:64px!important;background:radial-gradient(circle at 30% 30%,#1d2c38,#0b141b 72%)!important;border:1px solid #263a49!important;box-shadow:inset 0 0 12px #000!important}.cell.off{background:linear-gradient(145deg,#53575a,#343a3e)!important;border-color:#676c6d!important;opacity:1!important}.cell.void{visibility:hidden;pointer-events:none}.piece-layer{z-index:3}.placed-piece{gap:3px!important}.placed-piece .piece-cell{width:64px!important;height:64px!important;border:1px solid #fff8!important;box-shadow:inset 0 0 15px #fff4,0 0 5px #0006!important}.piece-name{font-size:14px!important}.piece-name span{padding:4px 7px!important;background:#05090adb!important;border:1px solid #e8d9a466!important}.board:has(.piece-layer) .cell.filled{background:radial-gradient(circle at 30% 30%,#1d2c38,#0b141b 72%)!important;border-color:#263a49!important}
.placed-piece{gap:0!important}.placed-piece .piece-cell{width:67px!important;height:67px!important;border:0!important;box-shadow:none!important}.piece-name{display:grid!important;place-items:center!important;padding:8px!important}.piece-name span{position:relative;display:grid;gap:3px;max-width:100%;padding:0!important;background:transparent!important;border:0!important;text-align:center}.piece-name .quality-mark{position:absolute;left:-5px;top:-7px;width:20px;height:20px;display:grid;place-items:center;border-radius:50%;background:#111b1d;border:1px solid #f0d889;color:#f6e1a4;font:700 12px 'Noto Serif SC'}.piece-name b{font:700 12px 'Noto Serif SC';white-space:nowrap}.piece-name em{font-style:normal;color:#f4f0df;background:#071011b8;padding:2px 4px;font:600 9px 'Noto Sans SC';white-space:nowrap}.placed-piece[data-thin="true"] .piece-name b{font-size:10px}.placed-piece[data-thin="true"] .piece-name em{display:none}
.placed-piece{filter:drop-shadow(0 0 0 2px #071012) drop-shadow(0 3px 5px #0009)!important}.piece-name{padding:7px!important}.piece-name span{gap:2px!important}.piece-name .quality-mark{left:-7px!important;top:-8px!important;width:21px!important;height:21px!important;background:#111b1d!important}.piece-name b{font-size:11px!important;line-height:1.2!important;white-space:normal!important}.piece-name em{font-size:8px!important;line-height:1.15!important;white-space:normal!important}.placed-piece[data-thin="true"] .piece-name b{font-size:9px!important}.placed-piece[data-thin="true"] .piece-name .quality-mark{left:0!important;top:-4px!important}
.stone-grid{grid-template-columns:repeat(4,minmax(0,1fr))!important;gap:7px!important}.stone{grid-template-columns:38px 1fr auto!important;gap:7px!important;min-height:72px!important;padding:8px!important}.shape{width:36px!important;height:36px!important}.shape svg{width:29px!important;height:29px!important}.stone h3{font-size:12px!important;line-height:1.2}.stone p{margin:2px 0!important;font-size:10px!important}.stone .tags{display:none!important}.stone .count{font-size:13px!important}.stone .edit{padding:0;font-size:10px}.stone .remove{right:4px!important;top:1px!important}.board-bottom{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.25fr);gap:12px;margin-top:14px}.board-bottom .activated{margin:0!important;height:100%}.solution-dock{padding:12px;border:1px solid #635a46;background:#101817;color:#d8cbae;min-width:0}.solution-dock>b{display:block;margin-bottom:8px;color:#f0d889;font:700 14px 'Noto Serif SC'}.solution-dock .solutions{max-height:210px;overflow:auto;margin:0}.active-groups{display:grid!important;gap:8px!important}.active-group{display:block!important;padding:7px;border-left:2px solid #c09b48;background:#1c2925}.active-group b{display:flex;justify-content:space-between;margin-bottom:5px;color:#f0d889;font:700 12px 'Noto Serif SC'}.active-group b small{font:500 10px 'Noto Sans SC';color:#b9ad93}.active-group div{display:flex;flex-wrap:wrap;gap:4px}.active-group span{padding:2px 5px;background:#31413a;color:#f0ead7;font-size:10px}
.board-bottom{grid-template-columns:minmax(250px,.8fr) minmax(0,2fr)!important}.solution-dock .solutions{max-height:330px!important}.piece-name{inset:auto!important;display:block!important;padding:4px!important;pointer-events:none}.piece-name span{display:block!important;text-align:center!important;white-space:nowrap!important}.piece-name .quality-mark{display:inline!important;position:static!important;margin-right:5px;color:#fff4ca!important;font-size:11px!important}.piece-name b{display:inline!important;font-size:11px!important;line-height:1.15!important}.piece-name em{display:block!important;margin-top:2px;color:#eef5ef!important;font-size:8px!important;line-height:1!important}.placed-piece[data-thin="true"] .piece-name em{display:none!important}
.board-bottom{grid-template-columns:1fr!important}.solution-nav{display:flex;align-items:center;justify-content:center;gap:12px;margin-top:12px;padding:10px;border:1px solid #635a46;background:#101817;color:#e7d8af}.solution-nav button{min-width:112px;padding:8px;border:1px solid #8e743b;background:#28332e;color:#f0ddb0;font:700 13px 'Noto Serif SC';cursor:pointer}.solution-nav button:disabled{opacity:.38;cursor:not-allowed}.solution-nav b{min-width:120px;text-align:center;font:700 14px 'Noto Serif SC'}.solution-nav small{display:block;color:#b6aa91;font:11px 'Noto Sans SC'}
.solution-nav small{display:none!important}
.placed-piece{display:block!important;filter:drop-shadow(0 0 0 2px #071012) drop-shadow(0 3px 5px #0009)!important}.placed-piece .piece-svg{display:block;width:100%;height:100%;overflow:visible}.piece-svg .piece-surface{fill:var(--tone);stroke:#071012;stroke-width:2}.piece-svg .piece-quality{fill:#fff3c4;font:700 13px 'Noto Serif SC';paint-order:stroke;stroke:#18201f;stroke-width:3}.piece-svg .piece-effect{fill:#fffefa;font:700 12px 'Noto Serif SC';paint-order:stroke;stroke:#162120;stroke-width:3}.piece-svg .piece-detail{fill:#edf4ea;font:600 9px 'Noto Sans SC';paint-order:stroke;stroke:#162120;stroke-width:3}.placed-piece[data-thin="true"] .piece-detail{display:none}.placed-piece[data-thin="true"] .piece-effect{font-size:10px}
.piece-svg .piece-outline{stroke:#102027;stroke-width:3;stroke-linecap:square;fill:none}.piece-svg .piece-quality{fill:#fff0bd;font-size:12px;stroke:#152227;stroke-width:2}.piece-svg .piece-effect{fill:#fffefa;font-size:11px;stroke:#152227;stroke-width:2}.piece-svg .piece-detail{fill:#eff4ed;font-size:8px;stroke:#152227;stroke-width:1.5}.placed-piece{filter:drop-shadow(0 2px 3px #000a)!important}
.piece-svg .piece-surface{stroke:none!important}
/* 顶部与周常看板对齐。 */
.veil{padding-left:42px;padding-right:42px}.unified-header{margin-left:-42px;margin-right:-42px;padding-left:42px;padding-right:42px}
.piece-name{padding:5px!important}.piece-name span{display:flex!important;flex-direction:column;align-items:center;justify-content:center;gap:3px!important;text-shadow:0 1px 2px #001!important}.piece-name .quality-mark{position:static!important;width:auto!important;height:auto!important;border:0!important;border-radius:0!important;background:transparent!important;color:#fff6d5!important;font:700 11px 'Noto Serif SC'!important;line-height:1!important}.piece-name b{color:#fffefa!important;font:700 12px 'Noto Serif SC'!important;line-height:1.1!important;white-space:normal!important}.piece-name em{display:block!important;padding:0!important;background:transparent!important;color:#eef5ef!important;font:600 9px 'Noto Sans SC'!important;line-height:1.1!important;white-space:normal!important}.placed-piece[data-thin="true"] .piece-name .quality-mark{font-size:9px!important}.placed-piece[data-thin="true"] .piece-name b{font-size:10px!important}.placed-piece[data-thin="true"] .piece-name em{display:none!important}
:root{--ink:#101413;--paper:#f5f1e6;--line:#c7b78e;--gold:#ad8435;--muted:#756d5d;--jade:#54816b}*{box-sizing:border-box}body{margin:0;min-width:1180px;color:#332f25;font:14px 'Noto Sans SC',sans-serif;background:#0c0f0f url('./assets/celestial-ink-landscape.png') center/cover fixed}.veil{min-height:100vh;padding:0 30px 40px;background:linear-gradient(90deg,#090c0dd8 0%,#111514b3 27%,#e9ede8c9 66%,#dfe5e1e0)}header{height:88px;margin:0 -30px;display:flex;align-items:center;padding:0 30px;border-bottom:1px solid #d7bc775c}.brand{font:900 30px 'Noto Serif SC';letter-spacing:5px;color:#f0dfad;margin-right:65px}nav{height:100%;display:flex;gap:42px}nav a{position:relative;display:flex;align-items:center;color:#d2cabc;text-decoration:none;font:600 16px 'Noto Serif SC'}nav a.active{color:#fff1bf}nav a.active:after{content:'';position:absolute;left:-10px;right:-10px;bottom:0;height:4px;background:linear-gradient(90deg,transparent,#f4d477,transparent)}main{max-width:1500px;margin:auto}.hero{display:flex;justify-content:space-between;align-items:end;padding:35px 4px 22px;color:#f7efd9}.eyebrow{margin:0 0 5px;color:#cba652;font:700 12px 'Noto Serif SC';letter-spacing:2px}.hero h1{margin:0;font:900 34px 'Noto Serif SC';letter-spacing:3px}.hero p:not(.eyebrow){margin:8px 0 0;color:#cdc5b4}.hero-note{display:grid;gap:5px;padding:13px 16px;border-left:3px solid #c5a457;background:#0f1513a8;color:#c8c0ae}.hero-note b{color:#f1db9d;font:700 14px 'Noto Serif SC'}.panel{background:#f4f2e9e8;border:1px solid var(--line);box-shadow:0 10px 26px #0004}.panel-head{display:flex;justify-content:space-between;align-items:center;padding-bottom:14px;border-bottom:1px solid #c2b38f}.panel-head h2,.board-head h2{margin:0;font:700 22px 'Noto Serif SC';color:#54431f}.panel-head p{margin:4px 0 0;color:var(--muted);font-size:12px}.library{padding:20px}.library-tools{display:flex;gap:8px;align-items:end}.library-tools label,.solution-count{display:grid;gap:4px;color:#695e49;font-size:11px}.library select,.library button,.solver button,dialog select,dialog input{font:inherit}.library select,dialog select,dialog input{height:34px;padding:0 8px;border:1px solid #bfb08e;background:#fffdf6;color:#40382b}.ghost{padding:8px 11px;border:1px solid #978867;background:#f8f4e8;color:#655832;cursor:pointer}.gold{padding:9px 14px;border:1px solid #7e6028;background:linear-gradient(135deg,#8f6b2e,#bb9547);color:#fff6da;font:700 13px 'Noto Serif SC';cursor:pointer}.library-body{display:grid;grid-template-columns:172px 1fr;gap:20px;padding-top:18px}.quality-rail{display:grid;align-content:start;gap:7px;padding-right:15px;border-right:1px solid #c8baa0}.quality-rail button{display:grid;grid-template-columns:1fr auto;gap:4px;text-align:left;padding:12px;border:1px solid transparent;background:transparent;color:#645a48;cursor:pointer}.quality-rail button b{font:700 16px 'Noto Serif SC'}.quality-rail button span{font-size:11px;color:#877d6b}.quality-rail button.active{border-color:#b3924a;background:linear-gradient(90deg,#ead9ac,#f6f0df);color:#62491c}.quality-rail button.locked{opacity:.48;cursor:not-allowed}.inventory-toolbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:13px}.inventory-toolbar b{font:700 18px 'Noto Serif SC';color:#5c4a23}.inventory-toolbar span{margin-left:10px;color:var(--muted);font-size:12px}.stone-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.stone{position:relative;display:grid;grid-template-columns:50px 1fr auto;gap:10px;align-items:center;min-height:98px;padding:12px;border:1px solid #c5b897;background:#fffdf6}.stone:hover{border-color:#a17d35;box-shadow:0 5px 13px #6d532015}.shape{display:grid;place-items:center;width:48px;height:48px;background:#161e1d;border:1px solid #a98c49}.shape svg{width:39px;height:39px}.stone h3{margin:0;color:#493a20;font:700 15px 'Noto Serif SC'}.stone p{margin:4px 0;color:#756d5d;font-size:11px}.stone .tags{display:flex;gap:4px;flex-wrap:wrap}.tag{padding:2px 5px;background:#ece5d3;color:#6a5b3b;font-size:10px}.stone .count{color:#8a6726;font:700 15px 'Noto Serif SC'}.edit,.remove{border:0;background:transparent;cursor:pointer}.edit{color:#806429}.remove{position:absolute;right:7px;top:5px;color:#aa6b5f;font-size:16px}.empty{grid-column:1/-1;padding:34px;text-align:center;border:1px dashed #b8aa8b;color:#7c7260}.workbench{display:grid;grid-template-columns:minmax(0,1fr) 310px;gap:18px;margin-top:20px}.board-panel{padding:20px;background:linear-gradient(145deg,#121a1b,#081011);border:1px solid #b69850;box-shadow:0 12px 28px #0007;color:#d9ceb2}.board-head{display:flex;justify-content:space-between;align-items:end;padding-bottom:13px;border-bottom:1px solid #705f39}.board-head h2{color:#f0d889}.board-head span{color:#a99f89;font-size:12px}.levels{display:flex;gap:5px}.levels button{width:30px;height:30px;border:1px solid #6d654f;background:#222a27;color:#c2b89d;cursor:pointer}.levels button.active{background:#bd963f;color:#fff;border-color:#f0d889}.board-shell{margin-top:16px;padding:26px;display:grid;place-items:center;background:linear-gradient(135deg,#0b1114,#1a2430);border:1px solid #405267}.board{display:grid;grid-template-columns:repeat(6,38px);gap:3px;padding:13px;background:#1a2430;border:2px solid #b28e43;box-shadow:0 0 0 5px #071014,0 0 30px #d7af5533}.cell{height:38px;background:#2a3c49;border:1px solid #4e7181;cursor:pointer}.cell.off{background:#101719;border-color:#28353a;opacity:.65}.cell.filled{background:var(--piece);box-shadow:inset 0 0 10px #fff8}.board-tip{margin-top:13px;color:#aaa18e;font-size:12px}.board-actions{display:flex;gap:7px;margin-top:12px}.board-actions button{padding:7px 10px;border:1px solid #786d55;background:#1b2522;color:#d9cbaa;cursor:pointer}.solver{padding:18px;height:max-content}.target-label{display:flex;justify-content:space-between;margin:15px 0 8px;color:#5c4b25;font:700 14px 'Noto Serif SC'}.link{border:0;background:transparent;color:#8d7136;cursor:pointer}.effects{display:grid;gap:5px;max-height:290px;overflow:auto}.effect{display:flex;gap:7px;align-items:center;padding:6px;border:1px solid #d2c5a9;background:#fffdf6;font-size:12px}.effect input{accent-color:#9d7831}.solution-count{margin-top:14px}.solution-count input{width:72px}.solve{width:100%;margin-top:14px}.solve-status{margin-top:12px;padding:10px;background:#191e1c;color:#c7bdab;font-size:12px}.solutions{display:grid;gap:6px;margin-top:10px}.solution{padding:8px;border-left:3px solid #af8b3c;background:#eee8d8;color:#665a43;font-size:12px}dialog{width:680px;border:1px solid #b9954b;background:#f7f3e9;box-shadow:0 20px 60px #0008;color:#3c3427}dialog::backdrop{background:#070b0bb8}.modal-head{display:flex;justify-content:space-between;border-bottom:1px solid #c8b990;padding-bottom:12px}.modal-head h2{margin:0;font:700 24px 'Noto Serif SC'}.close{border:0;background:transparent;font-size:24px;cursor:pointer}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:13px;padding:18px 0}.form-grid label{display:grid;gap:5px;color:#64583f;font:700 12px 'Noto Serif SC'}.shape-picker{display:flex;gap:6px}.shape-picker button{width:36px;height:36px;border:1px solid #9f8b61;background:#17201f;cursor:pointer}.shape-picker button.active{outline:2px solid #c89f46}.modal-foot{display:flex;align-items:center;justify-content:flex-end;gap:8px;border-top:1px solid #c8b990;padding-top:12px}.modal-foot span{margin-right:auto;color:#786e5d;font-size:11px}
