:root{color:#263548;background:#f0f2f5;font-family:Helvetica Neue,PingFang SC,Microsoft YaHei,Arial,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility;--ink: #263548;--ink-soft: #607083;--line: #d9dee5;--panel: #f9fafb;--blue: #409eff;--blue-deep: #1976d2;--red: #e74c3c;--green: #67b82a;--orange: #e89b26;--purple: #8b68cc;--shadow: 0 8px 24px rgb(33 47 65 / 10%)}*{box-sizing:border-box}html{min-width:320px;min-height:100%;background:#f0f2f5}body{min-width:320px;min-height:100vh;margin:0;padding:20px 10px;background:linear-gradient(135deg,rgb(255 255 255 / 58%) 0 1px,transparent 1px 18px),#f0f2f5;background-size:18px 18px}button,input{font:inherit}button{-webkit-tap-highlight-color:transparent}button:focus-visible,input:focus-visible,[tabindex]:focus-visible{outline:3px solid rgb(64 158 255 / 32%);outline-offset:2px}button:disabled{cursor:not-allowed}#app{width:100%}.app-shell{width:min(100%,1220px);min-height:calc(100vh - 40px);margin:0 auto;padding:22px 24px 18px;overflow:hidden;border:1px solid rgb(213 219 227 / 85%);border-radius:12px;background:#fff;box-shadow:var(--shadow)}.app-header{position:relative;padding:5px 4px 18px;border-bottom:1px solid #e5e8ec}.app-header:after{position:absolute;right:0;bottom:-1px;width:112px;height:3px;background:linear-gradient(90deg,transparent,var(--blue));content:""}.app-header h1{margin:0;color:#2c3e50;font-size:clamp(1.55rem,3vw,2.15rem);font-weight:760;letter-spacing:.015em;line-height:1.25}.panel-section{margin-top:18px;padding:15px 17px;border:1px solid var(--line);border-radius:12px;background:var(--panel);box-shadow:0 3px 9px #2635480a}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:14px}.section-heading>div{display:flex;align-items:baseline;gap:10px}.section-heading h2{margin:0;color:#34495e;font-size:1.08rem;line-height:1.2}.section-heading__index{color:var(--blue);font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:.72rem;font-weight:800;letter-spacing:.08em}.section-heading__meta{color:#8a96a5;font-size:.7rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.size-control__form{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.board-settings__content{display:flex;gap:18px;align-items:center;justify-content:space-between}.setting-switch{position:relative;display:flex;min-width:min(100%,250px);gap:14px;align-items:center;justify-content:flex-end;padding:9px 11px 9px 14px;border:1px solid #d7dde4;border-radius:10px;background:#fff;cursor:pointer;transition:border-color .16s ease,background-color .16s ease,box-shadow .16s ease}.setting-switch:hover{border-color:#9bcaf1;background:#f8fbff;box-shadow:0 3px 10px #2f7fc114}.setting-switch__copy{display:flex;min-width:0;flex:1;align-items:center;line-height:1.35}.setting-switch__copy strong{color:#34495e;font-size:.82rem}.setting-switch input{position:absolute;width:1px;height:1px;opacity:0}.setting-switch__track{position:relative;width:42px;height:24px;flex:0 0 42px;border:1px solid #c3ccd5;border-radius:999px;background:#dfe4e9;box-shadow:inset 0 1px 3px #2635481f;transition:border-color .18s ease,background-color .18s ease}.setting-switch__thumb{position:absolute;top:3px;left:3px;width:16px;height:16px;border-radius:50%;background:#fff;box-shadow:0 2px 5px #26354840;transition:transform .18s cubic-bezier(.2,.8,.2,1)}.setting-switch input:checked+.setting-switch__track{border-color:#2787d9;background:linear-gradient(135deg,#57b4ff,#2586d8)}.setting-switch input:checked+.setting-switch__track .setting-switch__thumb{transform:translate(18px)}.setting-switch input:focus-visible+.setting-switch__track{outline:3px solid rgb(64 158 255 / 32%);outline-offset:2px}.size-control__form>label{color:#34495e;font-size:.9rem;font-weight:700}.size-control__field{display:flex;align-items:center;gap:8px;color:#8b96a3}.size-control__field input,.size-control__field output{width:72px;height:38px;border:1.8px solid #cbd2da;border-radius:8px;background:#fff;color:#2c3e50;font-weight:700;text-align:center}.size-control__field input{padding:5px 8px;transition:border-color .18s ease,box-shadow .18s ease}.size-control__field input:focus{border-color:var(--blue);box-shadow:0 0 0 3px #409eff1f;outline:0}.size-control__field input[aria-invalid=true]{border-color:var(--red)}.size-control__submit{min-width:92px}.size-control__field output{display:grid;place-items:center;background:#edf1f5;color:#667486}.field-message{margin:9px 0 0;color:#7b8796;font-size:.78rem;line-height:1.45}.field-message--error{color:#c74034;font-weight:650}.workspace{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(420px,.8fr);gap:20px;align-items:stretch;margin-top:20px}.board-panel,.inventory-panel{min-width:0;border:1.5px solid var(--line);border-radius:12px;background:var(--panel);box-shadow:0 4px 10px #2635480d}.board-panel{display:flex;flex-direction:column;padding:16px}.section-heading--board{margin-bottom:14px}.board-size-badge{padding:4px 9px;border:1px solid #ccd5df;border-radius:999px;background:#fff;color:#627185;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:.72rem;font-weight:700}.board-scroll{width:100%;flex:1;padding:12px;overflow:auto;border:1px solid #d9dee4;border-radius:12px;background:linear-gradient(90deg,rgb(64 158 255 / 3%) 1px,transparent 1px),linear-gradient(rgb(64 158 255 / 3%) 1px,transparent 1px),#f4f6f8;background-size:16px 16px;box-shadow:inset 0 0 6px #4c5a6c1a;scrollbar-color:#bcc6d2 transparent;scrollbar-width:thin}.board-grid{--cell-size: 52px;display:grid;grid-template-columns:repeat(var(--board-size),var(--cell-size));grid-auto-rows:var(--cell-size);gap:3px;width:max-content;margin:0 auto;padding:3px;border-radius:10px;background:#d8dde4;box-shadow:0 2px 8px #303d4d1a;-webkit-user-select:none;user-select:none;touch-action:manipulation}.board-cell{position:relative;display:grid;place-items:center;width:var(--cell-size);height:var(--cell-size);padding:0;overflow:hidden;border:1px solid #e1e5ea;border-radius:7px;background:#fff;color:#8793a1;cursor:pointer;transition:transform .1s ease,border-color .18s ease,background-color .18s ease,box-shadow .18s ease}.board-cell:hover{z-index:2;border-color:#72b7ff;box-shadow:0 0 0 2px #409eff24;transform:translateY(-1px)}.board-cell:active{transform:translateY(0) scale(.96)}.board-cell--center:before{position:absolute;top:4px;left:4px;width:4px;height:4px;border-radius:50%;background:#9ca8b5;content:""}.board-cell--mount{overflow:visible;border-color:transparent;border-radius:0;background:transparent;box-shadow:none}.board-cell--mount:hover,.board-cell--mount:focus-visible{border-color:transparent;background:transparent;box-shadow:none}.board-cell__coordinate{color:#b7bec7;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:.56rem;opacity:0;transition:opacity .15s ease}.board-cell:hover .board-cell__coordinate,.board-cell:focus-visible .board-cell__coordinate{opacity:1}.board-token-enter-active{transition:opacity .15s ease-out,transform .15s cubic-bezier(.2,.8,.2,1)}.board-token-leave-active{transition:opacity .1s ease-in,transform .1s ease-in}.board-token-enter-from{opacity:0;transform:scale(.84)}.board-token-leave-to{opacity:0;transform:scale(.9)}.mount-marker{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;pointer-events:none}.mount-point-glyph{--mount-plate: #42494d;--mount-depth: #293237;--mount-line: #f7f9fa;position:relative;display:block;width:50px;height:44px;flex:0 0 50px;filter:drop-shadow(0 1px 1px rgb(30 39 44 / 45%)) drop-shadow(0 0 1px rgb(80 92 100 / 55%));pointer-events:none;transition:filter .16s ease,transform .16s ease}.mount-point-glyph__drawing{display:block;width:100%;height:100%;overflow:visible}.mount-point-glyph__depth{fill:var(--mount-depth);stroke:#68747a;stroke-width:2;transform:translate(2px,3px)}.mount-point-glyph__outer-line{fill:none;stroke:var(--mount-line);stroke-linejoin:miter;stroke-width:3.2}.mount-point-glyph__plate{fill:var(--mount-plate);stroke:#6c787f;stroke-linejoin:miter;stroke-width:1.8}.mount-point-glyph__grid-line{fill:none;opacity:.28;stroke:#8d989e;stroke-width:1}.mount-point-glyph__edge-detail{fill:none;stroke:#cad0d3;stroke-linecap:square;stroke-width:2}.mount-point-glyph__target circle:first-child{fill:none;stroke:#ffef59;stroke-width:4}.mount-point-glyph__target circle:last-child{fill:none;stroke:#fff9a8;stroke-width:1.5}.mount-point-glyph--2{--mount-plate: #353c40;--mount-depth: #222a2f}.mount-point-glyph--3{--mount-plate: #242b2f;--mount-depth: #171e22}.mount-point-glyph__badge rect{fill:#ffef59;stroke:#4a4f48;stroke-width:1.5}.mount-point-glyph__badge text{fill:#343b40;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:13px;font-weight:900;text-anchor:middle}.board-cell:hover .mount-point-glyph,.board-cell:focus-visible .mount-point-glyph{filter:drop-shadow(0 2px 2px rgb(24 33 39 / 34%)) drop-shadow(0 0 4px rgb(255 224 42 / 32%));transform:translateY(-1px)}.mount-marker .mount-point-glyph{transform:translate(-.5px,-1px)}.board-cell:hover .mount-marker .mount-point-glyph,.board-cell:focus-visible .mount-marker .mount-point-glyph{transform:translate(-.5px,-2px)}.recovery-balloon-icon{--icon-size: 62px;--balloon-ring-edge: #4f565a;--balloon-ring-outer: #c7ccd0;--balloon-ring-middle: #8e9498;--balloon-ring-inner: #62686c;--balloon-face: #f5f6f7;--balloon-outline: #6b7073;--balloon-ring-line: #e3e7e9;--balloon-middle-line: #90979a;--balloon-inner-line: #737a7e;--balloon-face-outline: #d9dddf;--balloon-seam: #edf0f1;--balloon-ink: #3b4247;--balloon-glow: rgb(73 83 89 / 20%);position:relative;display:inline-block;width:var(--icon-size);height:var(--icon-size);flex:0 0 var(--icon-size);filter:drop-shadow(0 1.5px 1.2px rgb(35 45 52 / 24%));pointer-events:none;transition:filter .18s ease,transform .18s ease}.recovery-balloon-icon--inventory{--icon-size: 62px}.recovery-balloon-icon--board{--icon-size: 56px}.recovery-balloon-icon--legend{--icon-size: 30px;filter:drop-shadow(0 1px 1px rgb(35 45 52 / 22%))}.recovery-balloon-icon__drawing{display:block;width:100%;height:100%;overflow:visible}.recovery-balloon-icon__ring{stroke-linejoin:round;stroke-width:1.35}.recovery-balloon-icon__ring--edge{fill:var(--balloon-ring-edge);stroke:var(--balloon-outline)}.recovery-balloon-icon__ring--outer{fill:var(--balloon-ring-outer);stroke:var(--balloon-ring-line)}.recovery-balloon-icon__ring--middle{fill:var(--balloon-ring-middle);stroke:var(--balloon-middle-line)}.recovery-balloon-icon__ring--inner{fill:var(--balloon-ring-inner);stroke:var(--balloon-inner-line)}.recovery-balloon-icon__seam{fill:none;opacity:.78;stroke:var(--balloon-seam);stroke-dasharray:1.5 2.4;stroke-linecap:round;stroke-width:1.25}.recovery-balloon-icon__face{fill:var(--balloon-face);stroke:var(--balloon-face-outline);stroke-width:1.4}.recovery-balloon-icon__hatching{fill:none;opacity:.68;stroke:var(--balloon-ink);stroke-linecap:square;stroke-width:2.7}.recovery-balloon-icon__micro-mark{fill:none;opacity:.52;stroke:var(--balloon-ink);stroke-linecap:square;stroke-width:1.1}.recovery-balloon-icon__number{fill:var(--balloon-ink);font-family:Arial Black,Impact,sans-serif;font-size:42px;font-style:italic;font-weight:900;letter-spacing:-.08em}.recovery-balloon-icon__arrow{fill:var(--balloon-ink)}.recovery-balloon-icon--1{--balloon-ring-edge: #d0d0d0;--balloon-ring-outer: #aeaeae;--balloon-ring-middle: #707070;--balloon-ring-inner: #585858;--balloon-face: #ffffff;--balloon-outline: #858585;--balloon-ring-line: #d7d7d7;--balloon-middle-line: #969696;--balloon-inner-line: #696969;--balloon-face-outline: #d7d7d7;--balloon-seam: #a6a6a6;--balloon-ink: #494949;--balloon-glow: rgb(45 48 50 / 18%)}.recovery-balloon-icon--2{--balloon-ring-edge: #cec47a;--balloon-ring-outer: #aea56a;--balloon-ring-middle: #706841;--balloon-ring-inner: #554f31;--balloon-face: #fff8ba;--balloon-outline: #6e673d;--balloon-ring-line: #d2c77d;--balloon-middle-line: #89814f;--balloon-inner-line: #675f3b;--balloon-face-outline: #d2c77d;--balloon-seam: #b4ad78;--balloon-ink: #4b472f;--balloon-glow: rgb(45 48 50 / 18%)}.recovery-balloon-icon--3{--balloon-ring-edge: #eee64e;--balloon-ring-outer: #e4da4e;--balloon-ring-middle: #aaa24d;--balloon-ring-inner: #99914c;--balloon-face: #fffd4c;--balloon-outline: #9b9448;--balloon-ring-line: #f2ea63;--balloon-middle-line: #c6bd54;--balloon-inner-line: #aaa24d;--balloon-face-outline: #efe85d;--balloon-seam: #c9c15f;--balloon-ink: #90894c;--balloon-glow: rgb(45 48 50 / 18%)}.recovery-balloon-icon--4{--balloon-ring-edge: #d48606;--balloon-ring-outer: #b17008;--balloon-ring-middle: #704704;--balloon-ring-inner: #533701;--balloon-face: #ffb801;--balloon-outline: #754900;--balloon-ring-line: #dc8a08;--balloon-middle-line: #925b05;--balloon-inner-line: #704704;--balloon-face-outline: #d88a06;--balloon-seam: #9a620a;--balloon-ink: #483000;--balloon-glow: rgb(45 48 50 / 18%)}.board-cell--assigned{z-index:3;overflow:visible}.board-cell--assigned:hover,.board-cell--assigned:focus-visible{z-index:5}.deployed-balloon{position:absolute;z-index:2;top:0;right:0;bottom:0;left:0;pointer-events:none}.deployed-balloon .recovery-balloon-icon{position:absolute;z-index:1;top:50%;left:50%;transform:translate(-50%,-50%) translateY(-1px)}.board-cell--assigned:hover .recovery-balloon-icon,.board-cell--assigned:focus-visible .recovery-balloon-icon{filter:drop-shadow(0 4px 4px rgb(35 45 52 / 28%)) drop-shadow(0 0 5px var(--balloon-glow));transform:translate(-50%,-50%) translateY(-1px) scale(1.03)}.level-legend{display:flex;gap:8px;justify-content:center;margin-top:12px;flex-wrap:wrap}.level-legend__item{display:inline-flex;align-items:center;gap:6px;padding:5px 9px;border:1px solid #d5dbe0;border-radius:999px;background:#fff;color:#536171;font-size:.72rem;font-weight:750}.level-legend__item--1{border-color:#bec5c9}.level-legend__item--mount{border-color:#9ca6ac}.level-legend__item--mount .mount-point-glyph{width:30px;height:26px;flex-basis:30px;filter:drop-shadow(0 1px 1px rgb(30 39 44 / 26%))}.mount-options{--mount-options-arrow-left: 50%;position:fixed;z-index:900;display:grid;width:min(248px,calc(100vw - 20px));gap:5px;padding:9px;border:1px solid #d6dde5;border-radius:12px;background:#fffffffa;box-shadow:0 14px 34px #26354833,0 3px 8px #26354817;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.mount-options:before{position:absolute;z-index:0;left:var(--mount-options-arrow-left);width:12px;height:12px;background:#fff;content:"";transform:translate(-50%) rotate(45deg)}.mount-options--below:before{top:-7px;border-top:1px solid #d6dde5;border-left:1px solid #d6dde5}.mount-options--above:before{bottom:-7px;border-right:1px solid #d6dde5;border-bottom:1px solid #d6dde5}.mount-options__item{position:relative;z-index:1;display:flex;min-height:52px;gap:10px;align-items:center;padding:5px 8px;border:1px solid transparent;border-radius:9px;background:transparent;color:#34495e;cursor:pointer;text-align:left;transition:border-color .15s ease,background-color .15s ease,transform .12s ease}.mount-options__item--current{border-color:#8ac5f2;background:#f0f8ff;box-shadow:inset 3px 0 #409eff}.mount-options__item:hover,.mount-options__item:focus-visible{border-color:#9dcef4;background:#edf6ff}.mount-options__item:active{transform:scale(.985)}.mount-options__item .mount-point-glyph{width:42px;height:37px;flex-basis:42px;filter:drop-shadow(0 1px 1px rgb(30 39 44 / 26%))}.mount-options__blank-cell{width:42px;height:42px;flex:0 0 42px;border:1px solid #e1e5ea;border-radius:7px;background:#fff;box-shadow:0 1px 3px #26354814}.mount-options__copy{display:flex;min-width:0;flex-direction:column}.mount-options__copy small{color:#7a8797;font-size:.68rem;line-height:1.3}.mount-options-enter-active,.mount-options-leave-active{transition:opacity .14s ease,transform .16s cubic-bezier(.2,.8,.2,1);transform-origin:var(--mount-options-arrow-left) top}.mount-options--above.mount-options-enter-active,.mount-options--above.mount-options-leave-active{transform-origin:var(--mount-options-arrow-left) bottom}.mount-options-enter-from,.mount-options-leave-to{opacity:0;transform:translateY(-4px) scale(.96)}.mount-options--above.mount-options-enter-from,.mount-options--above.mount-options-leave-to{transform:translateY(4px) scale(.96)}.level-legend__item--2{border-color:#b7aa69}.level-legend__item--3{border-color:#d7ca28}.level-legend__item--4{border-color:#df951e}@media(prefers-reduced-motion:reduce){.mount-options-enter-active,.mount-options-leave-active,.board-token-enter-from,.board-token-leave-to{transition-duration:1ms;transform:none}}.inventory-panel{position:sticky;top:12px;padding:16px}.inventory-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.inventory-item{--inventory-accent: #8f989e;position:relative;min-width:0;overflow:hidden;padding:12px;border:1px solid #e0e4e9;border-left-width:4px;border-radius:9px;background:linear-gradient(145deg,#ffffffeb,#f7f9fac7),#fff}.inventory-item:after{position:absolute;top:0;right:0;width:36px;height:3px;background:linear-gradient(90deg,transparent,var(--inventory-accent));content:""}.inventory-item--1{--inventory-accent: #8f999f;border-left-color:var(--inventory-accent)}.inventory-item--2{--inventory-accent: #9b8d4e;border-left-color:var(--inventory-accent)}.inventory-item--3{--inventory-accent: #cbbb00;border-left-color:var(--inventory-accent)}.inventory-item--4{--inventory-accent: #d47b05;border-left-color:var(--inventory-accent)}.inventory-item__identity{position:relative;z-index:1;display:flex;align-items:center;gap:11px;margin-bottom:10px}.inventory-item__copy{display:flex;min-width:0;flex-direction:column}.inventory-item__identity strong{overflow:hidden;color:#34495e;font-size:.86rem;text-overflow:ellipsis;white-space:nowrap}.inventory-item__lift{margin-top:3px;color:#8490a0;font-size:.68rem;font-weight:650;line-height:1.3}.inventory-item__balloon-icon{margin:1px 0}.stepper{position:relative;z-index:1;display:grid;grid-template-columns:35px minmax(48px,1fr) 35px;gap:6px}.stepper button,.stepper input{height:34px;border:1.5px solid #cbd2da;border-radius:7px;background:#fff;color:#34495e;text-align:center}.stepper button{padding:0;color:#4f6c88;cursor:pointer;font-size:1.08rem;font-weight:700;transition:border-color .16s ease,background-color .16s ease}.stepper button:hover:not(:disabled){border-color:var(--blue);background:#edf6ff}.stepper button:disabled{border-color:#e2e6eb;background:#f4f5f7;color:#b6bec7}.stepper input{min-width:0;padding:4px;font-weight:750}.stepper input:focus{border-color:var(--blue);outline:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{margin:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}input[type=number]{-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.inventory-totals{display:grid;grid-template-columns:1fr auto 1fr;gap:10px;align-items:center;margin-top:14px;padding:12px;border-radius:9px;background:#eef1f4}.inventory-totals>div{display:flex;flex-direction:column;text-align:center}.inventory-totals span{color:#7d8997;font-size:.68rem}.inventory-totals strong{margin-top:2px;color:#30475f;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:1.15rem}.inventory-totals__divider{color:#b0b8c1!important;font-size:1.2rem!important}.inventory-summary{display:flex;align-items:flex-start;gap:7px;margin:10px 0 0;padding:8px 9px;border-radius:7px;background:#fff3f1;color:#a14a41;font-size:.75rem;font-weight:650;line-height:1.45}.inventory-summary__indicator{width:7px;height:7px;margin-top:3px;flex:0 0 auto;border-radius:50%;background:var(--red)}.action-bar{display:grid;width:min(100%,430px);grid-template-columns:minmax(190px,1fr) minmax(108px,.58fr);gap:8px;margin:22px auto 0;padding:8px;border:1px solid #dce3ea;border-radius:15px;background:linear-gradient(180deg,#fffffff0,#f2f6f9f5),#f5f7f9;box-shadow:0 10px 26px #26354814,inset 0 1px #fff}.button{position:relative;display:inline-flex;min-height:42px;align-items:center;justify-content:center;gap:8px;padding:9px 20px;border:1px solid transparent;border-radius:10px;cursor:pointer;font-size:.9rem;font-weight:760;letter-spacing:.035em;line-height:1;-webkit-user-select:none;user-select:none;transition:border-color .16s ease,background .16s ease,color .16s ease,box-shadow .16s ease,transform .12s ease}.button:hover:not(:disabled){transform:translateY(-2px)}.button:active:not(:disabled){transform:translateY(0) scale(.985)}.button__icon{display:grid;width:18px;height:18px;flex:0 0 18px;place-items:center}.button__icon svg{display:block;width:100%;height:100%;fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.8}.button--primary{min-height:46px;border-color:#2384dc;background:linear-gradient(135deg,#49acff,#2f91e8 52%,#1976d2);color:#fff;box-shadow:0 7px 16px #1976d240,inset 0 1px #ffffff59}.button--primary .button__icon svg{fill:currentColor;stroke:none}.button--primary:hover:not(:disabled){border-color:#1574c7;background:linear-gradient(135deg,#5bb6ff,#3499ee 52%,#1d7ed9);box-shadow:0 10px 21px #1976d24a,inset 0 1px #ffffff6b}.button--primary:disabled:not(.button--busy){border-color:#d5dde5;background:linear-gradient(180deg,#e5eaf0,#dce3e9);box-shadow:none;color:#97a4b1}.button--primary.button--busy:disabled{border-color:#3a8dd3;background:linear-gradient(135deg,#67ace3,#3e8dcc);color:#fff;box-shadow:0 7px 16px #286da833,inset 0 1px #ffffff3d;cursor:wait}.button--confirm{min-height:38px;padding:7px 16px;border-color:#b8d7f3;background:linear-gradient(180deg,#fff,#eaf5ff);color:#176db4;box-shadow:0 3px 9px #297ec41f,inset 0 1px #fff}.button--confirm:hover:not(:disabled){border-color:#75b8ed;background:linear-gradient(180deg,#fff,#dceeff);color:#0f5f9f;box-shadow:0 6px 13px #297ec42b,inset 0 1px #fff}.button--reset{min-height:46px;border-color:#ced7e0;background:linear-gradient(180deg,#fff,#f0f3f6);color:#536579;box-shadow:0 3px 9px #26354817,inset 0 1px #fff}.button--reset:hover:not(:disabled){border-color:#dfaaa4;background:linear-gradient(180deg,#fffdfd,#fff1ef);color:#a84940;box-shadow:0 7px 15px #a849401f,inset 0 1px #fff}.button--reset:disabled{border-color:#dfe4e9;background:#f4f6f8;color:#a4adb7;box-shadow:none}.button--ghost{border:1px solid #ccd3db;background:#fff;color:#667487}.button--ghost:hover:not(:disabled){background:#edf1f5}.button--ghost:disabled{border-color:#e0e4e8;background:#f5f6f7;color:#aeb6bf}.button--danger{border-color:#d93d31;background:var(--red);color:#fff;box-shadow:0 4px 11px #d33a2f33}.button--danger:hover:not(:disabled){border-color:#e24b3f;background:#f1584b;box-shadow:0 7px 15px #d33a2f3d}.button-spinner{display:inline-block;width:14px;height:14px;flex:0 0 14px;border:2px solid rgb(255 255 255 / 45%);border-top-color:#fff;border-radius:50%;animation:spin .75s linear infinite}.status-message{display:flex;max-width:720px;gap:12px;align-items:flex-start;margin:16px auto 0;padding:13px 16px;border:1px solid #d5dce4;border-left-width:4px;border-radius:10px;background:#f6f8fa}.status-message__icon{width:13px;height:13px;margin-top:3px;flex:0 0 auto;border:3px solid currentColor;border-radius:50%}.status-message strong{color:#34495e;font-size:.83rem}.status-message p{margin:3px 0 0;color:#627084;font-size:.82rem;line-height:1.5}.status-message--calculating{border-left-color:var(--blue);color:var(--blue)}.status-message--calculating .status-message__icon{border-right-color:transparent;animation:spin .75s linear infinite}.status-message--solved{border-left-color:var(--green);background:#f1f8ed;color:var(--green)}.status-message--unsatisfiable,.status-message--error{border-left-color:var(--red);background:#fff5f4;color:var(--red)}.app-footer{display:flex;justify-content:flex-end;gap:16px;margin-top:24px;padding:13px 4px 0;border-top:1px solid #e4e8ec;color:#8c97a5;font-size:.64rem;font-weight:700;letter-spacing:.09em}.modal-overlay{position:fixed;z-index:1000;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;padding:20px;background:#121c277a;animation:fade-in .18s ease}.confirm-dialog{width:min(100%,420px);padding:25px;border:1px solid #e3e6ea;border-radius:16px;background:#fff;box-shadow:0 18px 55px #0f1b2840;text-align:center;animation:dialog-in .22s ease}.confirm-dialog__mark{display:grid;width:43px;height:43px;margin:0 auto 13px;place-items:center;border:2px solid var(--red);border-radius:50%;color:var(--red);font-size:1.25rem;font-weight:800}.confirm-dialog h2{margin:0;color:#2c3e50;font-size:1.2rem}.confirm-dialog p{margin:11px 0 20px;color:#6c7888;font-size:.86rem;line-height:1.6}.confirm-dialog__actions{display:flex;justify-content:center;gap:10px}.visually-hidden{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;border:0!important;white-space:nowrap!important}@keyframes spin{to{transform:rotate(360deg)}}@keyframes fade-in{0%{opacity:0}}@keyframes dialog-in{0%{opacity:0;transform:translateY(15px) scale(.97)}}@media(max-width:920px){body{padding:0;background:#fff}.app-shell{min-height:100vh;padding:18px 14px 15px;border:0;border-radius:0;box-shadow:none}.workspace{grid-template-columns:1fr}.inventory-panel{position:static}.inventory-list{grid-template-columns:repeat(2,minmax(0,1fr))}.inventory-item{min-width:0}.inventory-item__identity{align-items:flex-start}.inventory-item__identity strong{white-space:normal}.stepper{grid-template-columns:32px minmax(36px,1fr) 32px;gap:3px}.board-grid{--cell-size: 46px}}@media(max-width:560px){.app-header p{font-size:.84rem}.size-control__form{align-items:flex-end}.board-settings__content{align-items:stretch;flex-direction:column}.setting-switch{width:100%;min-width:0}.size-control__form>label{width:100%}.workspace{gap:14px;margin-top:14px}.board-panel,.inventory-panel,.panel-section{padding:13px}.board-scroll{padding:8px}.board-grid{--cell-size: 43px}.inventory-list{grid-template-columns:1fr}.inventory-item{display:grid;grid-template-columns:minmax(0,1fr) minmax(130px,.8fr);gap:8px;align-items:center}.inventory-item__identity{margin-bottom:0}.action-bar{width:100%;grid-template-columns:minmax(0,1fr) 106px;gap:7px;padding:7px;border-radius:14px}.action-bar__solve{width:100%;min-width:0}.action-bar__reset{width:100%;padding-inline:12px}.size-control__submit{min-height:44px}.button{padding-inline:14px}.app-footer{flex-direction:column;gap:5px;text-align:center}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:1ms!important;animation-iteration-count:1!important;transition-duration:1ms!important}}
