@font-face{font-family:Fraunces;src:url(./fraunces-var-CNE4GwkW.woff2)format("woff2");font-weight:100 900;font-style:normal;font-display:swap}@font-face{font-family:Caveat;src:url(./caveat-600-CVQZ7gYO.woff2)format("woff2");font-weight:600;font-style:normal;font-display:swap}@font-face{font-family:Atkinson Hyperlegible;src:url(./atkinson-400-BKTgBNmI.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Atkinson Hyperlegible;src:url(./atkinson-700-BriLmxM2.woff2)format("woff2");font-weight:700;font-style:normal;font-display:swap}:root{--ink:#2b2433;--muted:#5e5568;--paper:#fff8e9;--paper-2:#f6ebd6;--table:#e8d9bf;--table-shade:#d2be9b;--lamp:#fff1cf;--shadow:#2b243347;--brass:#c9b07a;--brass-dark:#8e7840;--stitch:#b89b6a;--ok:#1f7a47;--warn:#b3261e;--bonus:#5b34a8;--focus:#7a3fd1;--ok-solid:#2a8553;--bad-solid:#c93c32;--case-shell:#2a7480;--case-rim:#1b4f58;--case-hi:#5aa6ad;--lining:#f3e3c3;--lining-line:#785a3233;--chaos:#6a2aa8;--chaos-ink:#4a1d78;--hand:"Caveat", "Bradley Hand", "Segoe Print", cursive;--display:"Fraunces", "Iowan Old Style", Georgia, serif;--ui:"Atkinson Hyperlegible", system-ui, -apple-system, "Segoe UI", sans-serif;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--tabletop:radial-gradient(ellipse 75% 65% at 28% 18%, #fff1cff2, #fff1cf00 70%), radial-gradient(ellipse 120% 100% at 50% 45%, #0000 55%, #6e50284d 100%), url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='6' height='6'%3E%3Cpath d='M0 .5h6M.5 0v6' stroke='%237a5a30' stroke-opacity='.07'/%3E%3Cpath d='M0 3.5h6M3.5 0v6' stroke='%23fff' stroke-opacity='.18'/%3E%3C/svg%3E"), var(--table)}*{box-sizing:border-box}html{background:var(--table)}body{min-height:100vh;color:var(--ink);font-family:var(--ui);-webkit-tap-highlight-color:transparent;font-variant-numeric:lining-nums tabular-nums;margin:0}body:before{content:"";z-index:-1;background:var(--tabletop);position:fixed;inset:0}button{font:inherit;color:inherit}h1,h2{font-family:var(--display)}.level{--cell:56px;position:relative}.level[data-level="02"]{--case-shell:#bf5530;--case-rim:#8a3a1e;--case-hi:#e58a5e;--lining:#f7e2b0;--lining-line:#825a1e38}.level[data-level="03"]{--case-shell:#6b3f6e;--case-rim:#472a4b;--case-hi:#9a6b9c;--lining:#e6e0ee;--lining-line:#503c7833}.app{-webkit-user-select:none;user-select:none;max-width:1560px;margin:0 auto;padding:8px 24px 20px;position:relative}.masthead{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px 24px;min-height:56px;padding:6px 4px 8px;display:flex}.brand{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.brand-mark{filter:drop-shadow(1px 2px #2b243340);flex:none;transform:rotate(-4deg)}h1{letter-spacing:.01em;text-shadow:1px 2px #fff8e9e6,2px 3px #2b243329;margin:0;font-size:1.9rem;font-weight:800;line-height:1}.wm-it{color:var(--paper);background:var(--ink);text-shadow:none;border-radius:.14em;margin:0 .04em;padding:0 .12em;display:inline-block;transform:rotate(-3deg)}.tagline{color:var(--muted);font-family:var(--display);margin:0;font-size:.95rem;font-style:italic;font-weight:500}.masthead-tools{align-items:center;gap:10px;display:flex}.sound-toggle{border:2px solid var(--ink);background:var(--paper);width:40px;height:40px;color:var(--ink);cursor:pointer;border-radius:10px;flex:none;place-items:center;padding:0;display:grid;box-shadow:1px 2px #2b24334d}.sound-toggle[aria-pressed=false]{color:var(--muted)}.sound-toggle:hover{transform:translateY(-1px)}.sound-toggle:focus-visible{outline:3px solid var(--focus);outline-offset:3px}.levels{gap:10px;display:flex}.level-tab{border:2px solid var(--ink);background:var(--paper);cursor:pointer;min-height:40px;font-family:var(--ui);letter-spacing:.02em;border-radius:8px 16px 16px 8px;padding:0 16px 0 30px;font-weight:700;transition:transform .12s ease-out;position:relative;box-shadow:2px 3px #2b243338}.level-tab:before{content:"";background:var(--table);border:2px solid var(--ink);border-radius:50%;width:11px;height:11px;margin-top:-5.5px;position:absolute;top:50%;left:9px;box-shadow:inset 1px 1px #2b243359}.level-tab:hover:not([aria-disabled=true]):not(.current){transform:translateY(-2px)rotate(-1deg)}.level-tab.current{background:var(--ink);color:var(--paper)}.level-tab.current:before{background:var(--table-shade);border-color:var(--paper)}.level-tab[aria-disabled=true]{opacity:.5;cursor:not-allowed;box-shadow:none}.masthead{position:relative}.lock-note{z-index:30;border:2px solid var(--ink);background:var(--paper);max-width:min(360px,94vw);font:600 .88rem var(--ui);border-radius:8px;margin:6px 0 0;padding:8px 12px;position:absolute;top:100%;right:0;transform:rotate(-.8deg);box-shadow:2px 3px #2b24334d}.level-tab:focus-visible{outline:3px solid var(--focus);outline-offset:3px}.level-tab:after,.sound-toggle:after,.note-replay:after{content:"";position:absolute;inset:-4px 0}.sound-toggle:after{inset:-4px}.sound-toggle,.note-replay{position:relative}.note-replay:after{inset:-11px -7px}.help summary{align-items:center;min-height:44px;display:flex}.stage{justify-content:center;align-items:flex-start;gap:20px 44px;display:flex}.case-wrap{width:max(calc(var(--cell) * var(--cols) + 76px), 440px);flex:none}.suitcase{margin-inline:auto}.objective{border:2px solid var(--ink);background:var(--paper);box-shadow:3px 5px 0 #2b243333, 0 12px 18px -10px var(--shadow);border-radius:8px 20px 20px 8px;margin:0 0 34px;padding:10px 16px 8px 46px;position:relative}.objective:before{content:"";border:2px solid var(--ink);background:var(--table);border-radius:50%;width:16px;height:16px;position:absolute;top:16px;left:14px;box-shadow:inset 2px 2px #2b24334d}.objective:after{content:"";background:repeating-linear-gradient(180deg, var(--stitch) 0 3px, transparent 3px 5px);opacity:.7;width:3px;height:14px;position:absolute;top:28px;left:20px}.level-title{font-family:var(--display);color:var(--ink);letter-spacing:.005em;justify-content:space-between;align-items:baseline;gap:10px;margin:0 0 3px;font-size:1.12rem;font-weight:700;line-height:1.2;display:flex}.goal-line{min-height:2.6em;color:var(--muted);margin:0 0 6px;font-size:.95rem;line-height:1.3;display:grid}.goal-line>*{grid-area:1/1}.goal-size{visibility:hidden}.goal-size:after{content:attr(data-text)}.objective.solved .goal-line b{color:var(--ok)}.pills{flex-wrap:wrap;align-items:center;gap:6px;min-height:36px;display:flex}.pill{border:2px solid var(--ink);background:var(--paper-2);white-space:nowrap;border-radius:6px 12px 12px 6px;align-items:baseline;gap:6px;padding:2px 9px 2px 8px;font-size:.9rem;display:inline-flex}.pill b{font-family:var(--display);font-size:1.05rem;font-weight:700;line-height:1.2}.pill-label{color:var(--muted);text-transform:uppercase;letter-spacing:.07em;font-size:.68rem;font-weight:700}.pill.ok{border-color:var(--ok)}.pill.ok b,.pill.ok>span:last-child{color:var(--ok)}.pill.weight{align-items:center}@container (width<=14em){.pill{flex-wrap:wrap;row-gap:2px;max-width:100%}.pills>.pill{flex:100%}.pill .pill-label,.pill .of,.pill .chaos-bar{flex-basis:100%}.pill b{white-space:nowrap}}.pill.weight.over{border-color:var(--warn);background:#fdecea}.pill.weight.over b{color:var(--warn)}.mini-bar{background:repeating-linear-gradient(90deg,#2b24332e 0 1px,#0000 1px 5px),#2b24331a;border-radius:2px;align-self:center;width:28px;height:9px;position:relative;overflow:hidden;box-shadow:inset 0 1px 2px #2b243359}.mini-bar>span{background:var(--ok);height:100%;display:block}.pill.over .mini-bar>span{background:var(--warn)}.sub{color:var(--muted);font-size:.85em}.over-note{white-space:nowrap;text-overflow:ellipsis;height:1.3em;color:var(--warn);margin:4px 0 0;font-size:.9rem;font-weight:700;overflow:hidden}.over-note.missing{color:var(--muted);font-style:italic;font-weight:400}.suitcase{background:linear-gradient(112deg, #ffffff38 0, #fff0 24%), repeating-linear-gradient(90deg, #00000012 0 2px, #ffffff0d 2px 4px, transparent 4px 34px), linear-gradient(160deg, var(--case-shell), var(--case-rim));width:fit-content;box-shadow:inset 0 2px 0 #ffffff47, inset 0 -6px 0 #0003, inset 0 0 0 3px #00000024, 0 3px 0 var(--case-rim), 0 30px 34px -16px #2b24338c, 10px 18px 0 -8px #2b243329;border-radius:34px;padding:34px 34px 44px;position:relative}.suitcase:before{content:"";border:3px solid var(--case-rim);box-shadow:0 2px 0 var(--case-hi), inset 0 2px 5px #0000004d;pointer-events:none;background:linear-gradient(135deg,#ffffff29,#00000024);border-radius:24px;position:absolute;inset:14px}.suitcase>*{position:relative}.handle{z-index:0;background:linear-gradient(#a8683a,#7a4623);border:3px solid #4a2e1c;border-bottom:0;border-radius:14px 14px 0 0;width:132px;height:26px;top:-22px;left:50%;transform:translate(-50%);box-shadow:inset 0 3px #ffffff38,0 -2px 4px #2b243340;position:absolute!important}.handle:before,.handle:after{content:"";background:radial-gradient(circle at 35% 30%, #f1e2b0, var(--brass-dark));border-radius:50%;width:12px;height:12px;position:absolute;bottom:2px;box-shadow:0 1px 2px #0006}.handle:before{left:8px}.handle:after{right:8px}.hw{z-index:2;pointer-events:none;background:linear-gradient(135deg, #e6d49e, var(--brass) 55%, var(--brass-dark));border:2px solid #5b4a22;box-shadow:inset 0 1px #ffffff80,1px 2px 3px #00000059;position:absolute!important}.hw.corner{width:34px;height:34px}.hw.corner:after{content:"";background:radial-gradient(circle at 35% 30%,#fff6d8,#7c6a34);border-radius:50%;width:7px;height:7px;position:absolute}.hw.tl{border-radius:26px 4px 4px;top:6px;left:6px}.hw.tr{border-radius:4px 26px 4px 4px;top:6px;right:6px}.hw.bl{border-radius:4px 4px 4px 26px;bottom:6px;left:6px}.hw.br{border-radius:4px 4px 26px;bottom:6px;right:6px}.hw.tl:after{top:7px;left:7px}.hw.tr:after{top:7px;right:7px}.hw.bl:after{bottom:7px;left:7px}.hw.br:after{bottom:7px;right:7px}.hw.latch{border-radius:6px 6px 10px 10px;width:50px;height:24px;bottom:-7px}.hw.latch:after{content:"";background:#4a3a12;border-radius:3px;width:22px;height:6px;margin-left:-11px;position:absolute;top:8px;left:50%;box-shadow:inset 0 1px 2px #0009}.hw.latch.l{left:22%}.hw.latch.r{right:22%}.suitcase.strain:before{border-color:#7d1f19}.suitcase.strain .board:after{border-color:#c93c32}.board{z-index:1;width:calc(var(--cell) * var(--cols));height:calc(var(--cell) * var(--rows));background-color:var(--lining);background-image:linear-gradient(to right, var(--lining-line) 1.5px, transparent 1.5px), linear-gradient(to bottom, var(--lining-line) 1.5px, transparent 1.5px), var(--lining-pattern,none);background-size:var(--cell) var(--cell), var(--cell) var(--cell), var(--lining-tile,8px) var(--lining-tile,8px);box-shadow:0 0 0 14px var(--lining), 0 0 0 16px #785a3259, 0 0 0 17px #00000038;touch-action:none;border-radius:6px;outline:none;position:relative}.level[data-level="01"] .board{--lining-pattern:repeating-linear-gradient(90deg, #785a3212 0 1px, transparent 1px 7px);--lining-tile:auto}.level[data-level="02"] .board{--lining-pattern:radial-gradient(circle, #965a1e1f 0 2px, transparent 2.5px);--lining-tile:18px}.level[data-level="03"] .board{--lining-pattern:radial-gradient(circle, transparent 0 10px, #503c7812 10.5px 11.5px, transparent 12px);--lining-tile:46px}.board:before{content:"";pointer-events:none;z-index:0;border-radius:6px;position:absolute;inset:0;box-shadow:inset 7px 9px 16px #3c28144d,inset -2px -3px 8px #3c28141f}.board:after{content:"";border:2px dashed var(--stitch);pointer-events:none;opacity:.85;z-index:0;border-radius:12px;position:absolute;inset:-9px}.board.keyboard-active{box-shadow:0 0 0 14px var(--lining), 0 0 0 16px #785a3259, 0 0 0 20px var(--focus)}.cells{grid-template-columns:repeat(var(--cols), var(--cell));grid-auto-rows:var(--cell);pointer-events:none;z-index:3;display:grid;position:absolute;inset:0}.cell.valid{background:#2a855366;box-shadow:inset 0 0 0 2px #2a8553f2}.cell.invalid{background:repeating-linear-gradient(45deg,#c93c3275 0 3px,#c93c3229 3px 8px);box-shadow:inset 0 0 0 2px #c93c32f2}.piece{width:calc(var(--cell) * var(--cw));height:calc(var(--cell) * var(--ch));cursor:grab;touch-action:none;filter:drop-shadow(1px 3px 2px #2b243361);background:0 0;border:0;border-radius:8px;margin:0;padding:0;display:block}.piece:active{cursor:grabbing}.piece:focus-visible{outline:3px solid var(--focus);outline-offset:2px}.piece.selected{outline:3px dashed var(--focus);outline-offset:3px}.piece.on-board{left:calc(var(--cell) * var(--x));top:calc(var(--cell) * var(--y));z-index:1;position:absolute}.piece.lifted,.slot.lifted .piece{visibility:hidden}.carried{z-index:40;pointer-events:none;will-change:transform;filter:drop-shadow(0 12px 10px #2b243366);position:fixed;top:0;left:0}.carried.snapped{filter:drop-shadow(0 6px 6px #2b243359);transition:transform 70ms ease-out}.carried.snapped.good{filter:drop-shadow(0 0 2px var(--ok-solid)) drop-shadow(0 0 2px var(--ok-solid)) drop-shadow(0 6px 6px #2b243359)}.carried.snapped.bad{filter:drop-shadow(0 0 2px var(--bad-solid)) drop-shadow(0 0 2px var(--bad-solid)) drop-shadow(0 6px 6px #2b243359)}.side{width:calc(var(--cell) * var(--tcols) + 44px);max-width:100%}.tray{background:#fff8e957;border:2px solid #0000;border-radius:24px;padding:12px 20px 16px;position:relative;box-shadow:inset 0 6px 18px #785a3224,0 1px #ffffff80}.tray:before{content:"";pointer-events:none;border:2px dashed #2b243333;border-radius:19px;position:absolute;inset:6px}.tray.drop-remove{border-color:var(--focus);background:#f3ebffb3}.tray-head{justify-content:space-between;align-items:baseline;gap:8px;min-height:1.8em;margin-bottom:8px;display:flex;position:relative}.tray h2{letter-spacing:.14em;text-transform:uppercase;color:var(--paper);background:var(--ink);border-radius:4px 10px 10px 4px;margin:0;padding:2px 12px;font-size:.8rem;font-weight:700;transform:rotate(-1.5deg)}.tray-note{color:var(--muted);font-family:var(--display);text-align:right;font-size:.88rem;font-style:italic}.tray-items{grid-template-columns:repeat(var(--tcols), var(--cell));grid-template-rows:repeat(var(--trows), var(--cell));display:grid;position:relative}.ghost{pointer-events:none;background:#2b24330a;border:2px dashed #2b243338;border-radius:7px;margin:1px}.tray-empty{color:var(--muted);font-family:var(--display);pointer-events:none;background:#fff8e9d9;border:2px solid #2b243359;border-radius:6px;grid-area:1/1/-1/-1;place-self:center;margin:0;padding:4px 14px;font-size:1rem;font-style:italic;transform:rotate(-2deg)}.slot{pointer-events:none;justify-content:flex-start;align-items:flex-start;display:flex}.slot .piece{pointer-events:auto}.piece{position:relative}.piece.on-board{position:absolute}.chip-w{left:max(calc(var(--cell) * var(--chip-x) - 3px), calc(80px - var(--chip-room,80px)));top:calc(var(--cell) * var(--chip-y) - 3px);background:var(--ink);min-width:24px;color:var(--paper);font:700 max(11px, min(.9rem, calc(var(--cell) * .26))) / 20px var(--ui);white-space:nowrap;text-align:center;pointer-events:none;border-radius:999px;padding:0 5px;position:absolute;transform:translate(-100%,-100%);box-shadow:0 1px 2px #0000004d}.item-info{white-space:nowrap;border:2px solid var(--ink);background:var(--paper);border-radius:6px 14px 14px 6px;justify-content:center;align-items:center;gap:10px;width:min(100%,440px);height:34px;margin:14px auto 0;padding:0 14px;font-size:.92rem;display:flex;overflow:hidden;box-shadow:2px 3px #2b243333}.item-info b{font-family:var(--display);text-overflow:ellipsis;font-size:1rem;overflow:hidden}.item-info .req,.item-info .opt{letter-spacing:.06em;text-transform:uppercase;border-radius:999px;padding:1px 8px;font-size:.74rem;font-weight:700}.item-info .req{background:var(--ink);color:var(--paper)}.item-info .opt{color:var(--bonus);background:#e7dcf7}.level:is([data-arrange=stack],[data-arrange=wing]) .item-info{gap:6px;margin-top:10px;padding:0 9px;font-size:.82rem}.level:is([data-arrange=stack],[data-arrange=wing]) .item-info b{font-size:.88rem}.level:is([data-arrange=stack],[data-arrange=wing]) .item-info .req,.level:is([data-arrange=stack],[data-arrange=wing]) .item-info .opt{letter-spacing:.03em;padding:1px 6px;font-size:.62rem}.item-info.idle{color:var(--muted);box-shadow:none;background:#fff8e973;border-style:dashed;border-color:#2b24334d;font-style:italic}.toolbar{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:14px 0 8px;display:grid}.toolbar button{border:2px solid var(--ink);background:var(--paper);cursor:pointer;min-height:42px;font-family:var(--ui);letter-spacing:.06em;text-transform:uppercase;border-radius:6px;font-size:.82rem;font-weight:700;transition:transform 90ms ease-out,box-shadow 90ms ease-out;box-shadow:2px 3px #2b24333d}.toolbar button:hover:not(:disabled){background:var(--ink);color:var(--paper)}.toolbar button:active:not(:disabled){box-shadow:none;transform:translate(2px,3px)}.toolbar button:disabled{opacity:.45;cursor:default;box-shadow:none}.toolbar button:focus-visible{outline:3px solid var(--focus);outline-offset:2px}.toolbar{container-type:inline-size}.toolbar button{font-size:min(.82rem,4cqw)}.toolbar.has-next button{letter-spacing:.01em;padding-inline:2px;font-size:min(.7rem,3.3cqw)}@media (pointer:coarse),(width<=1100px){.toolbar button{min-height:44px}}.toolbar.has-next{grid-template-columns:repeat(4,minmax(0,1fr)) minmax(0,1.7fr)}.toolbar button.next{background:var(--ok);border-color:var(--ok);color:#fff}.toolbar button.next:hover:not(:disabled){background:var(--ink);border-color:var(--ink)}.status{min-height:1.4em;font-family:var(--display);margin:0 0 4px;font-size:.92rem;font-style:italic}.help{color:var(--muted);font-size:.88rem}.help summary{cursor:pointer;width:max-content;padding:2px 0}.help summary:focus-visible{outline:3px solid var(--focus);outline-offset:2px}.help p{margin:6px 0 0;line-height:1.5}kbd{background:var(--paper);border:1px solid #00000040;border-bottom-width:2px;border-radius:4px;padding:0 4px;font-size:.8em}.props{z-index:0;pointer-events:none;position:fixed;inset:0;overflow:hidden}.prop{position:absolute}.prop-list{opacity:.9;filter:drop-shadow(3px 6px 4px #2b243340);bottom:30px;left:-6px}.prop-pencil{filter:drop-shadow(3px 5px 3px #2b243347);bottom:54px;right:18px}.prop-ring{bottom:6px;right:250px}.stage,.masthead{z-index:1;position:relative}@media (width<=1240px){.prop-ring,.prop-list{display:none}}@media (width<=1000px){.props{display:none}}.backdrop{z-index:60;background:#2b243380;place-items:center;padding:16px;animation:.2s ease-out fade;display:grid;position:fixed;inset:0}.dialog{background:var(--paper);border:3px solid var(--ink);text-align:center;-webkit-user-select:text;user-select:text;border-radius:16px;width:min(440px,100%);min-width:0;max-height:calc(100dvh - 32px);animation:.26s ease-out pop;display:flex;position:relative;box-shadow:6px 8px #2b243359,0 30px 60px -12px #1e140a80}.dialog-scroll{border-radius:13px;flex:1;min-width:0;min-height:0;padding:24px 30px 22px;overflow:hidden auto}.dialog:before,.dialog:after{content:"";background:#2b243380;border-radius:50%;width:22px;height:22px;position:absolute;top:56%;box-shadow:inset 0 2px 3px #00000059}.dialog:before{left:-14px}.dialog:after{right:-14px}.dialog-band{background:var(--case-rim);color:var(--paper);letter-spacing:.22em;text-transform:uppercase;border-radius:13px 13px 0 0;justify-content:space-between;margin:-24px -30px 16px;padding:7px 30px;font-size:.72rem;font-weight:700;display:flex}.barcode{opacity:.75;background:repeating-linear-gradient(90deg, var(--ink) 0 2px, transparent 2px 4px, var(--ink) 4px 5px, transparent 5px 8px, var(--ink) 8px 11px, transparent 11px 13px);width:62%;height:24px;margin:6px auto 0}.dialog-kicker{color:var(--muted);letter-spacing:.14em;text-transform:uppercase;margin:0;font-size:.78rem;font-weight:700}.dialog h2{border:4px double var(--ok);box-sizing:border-box;max-width:100%;color:var(--ok);border-radius:8px;margin:8px 0 14px;padding:2px 16px;font-size:clamp(1.6rem,8vw,2.2rem);font-weight:800;display:inline-block;transform:rotate(-3deg)}.results{text-align:left;margin:0 0 14px;border-bottom:2px dashed #2b243347;gap:8px;width:max-content;max-width:100%;margin-inline:auto;padding:0 0 14px;font-size:1.05rem;list-style:none;display:grid}.results .ok{color:var(--ok);font-weight:700}.bonus-result,.bonus-result .ok{color:var(--bonus)}.bonus-result.max,.bonus-result.max .ok{color:var(--ok)}.dialog-actions{flex-wrap:wrap;justify-content:center;gap:10px;margin-top:16px;display:flex}.dialog-actions button{border:2px solid var(--ink);background:var(--paper);cursor:pointer;border-radius:8px;min-height:48px;padding:0 20px;font-weight:700;box-shadow:2px 3px #2b243340}.dialog-actions .primary{background:var(--ok);border-color:var(--ok);color:#fff}.dialog-actions button:focus-visible{outline:3px solid var(--focus);outline-offset:2px}.dialog-actions button,.note-foot button:not(.note-skip){transition:transform 90ms ease-out,box-shadow 90ms ease-out}.dialog-actions button:active,.note-foot button:not(.note-skip):active{box-shadow:none;transform:translate(2px,3px)}@keyframes pop{0%{opacity:0;transform:scale(.94)}}@keyframes fade{0%{opacity:0}}.level[data-arrange=wing] .stage{grid-template-columns:auto minmax(0,1fr);justify-content:stretch;align-items:start;column-gap:16px;display:grid}.level[data-arrange=wing] .case-wrap{display:contents}.level[data-arrange=wing] .case-stick{grid-area:1/1/span 3;padding:4px 0 8px;position:sticky;top:0}.level[data-arrange=wing] .objective{grid-area:1/2;margin-bottom:10px}.level[data-arrange=wing] .side{width:calc(var(--cell) * var(--tcols) + 36px);grid-area:2/2}.level[data-arrange=wing] .case-strip{color:var(--muted);justify-content:center;gap:12px;margin:0 0 10px;font-size:.8rem;font-weight:700;display:flex}.level[data-arrange=wing] .toolbar{z-index:8;background:var(--tabletop);background-attachment:fixed;margin:6px 0 4px;padding:8px 0 4px;position:sticky;bottom:0}@media (height<=480px){.masthead{min-height:0;padding:2px 4px 4px}h1{font-size:1.35rem}.brand-mark{width:32px;height:29px}.tagline{display:none}.level-tab{min-height:32px}}.level[data-arrange=stack] .stage{flex-direction:column;align-items:center;gap:4px}.case-strip{display:none}.level[data-arrange=stack] .case-wrap{display:contents}.level[data-arrange=stack] .objective{width:100%;max-width:calc(var(--cell) * var(--cols) + 56px)}.level[data-arrange=stack] .case-stick{z-index:8;background:var(--tabletop);background-attachment:fixed;width:100%;padding:6px 0 14px;position:sticky;top:0;box-shadow:0 12px 12px -10px #2b24334d}.level:is([data-arrange=stack],[data-arrange=wing]) .case-strip{color:var(--muted);justify-content:center;gap:14px;margin:0 0 12px;font-size:.82rem;font-weight:700;display:flex}.level:is([data-arrange=stack],[data-arrange=wing]) .case-strip .over{color:var(--warn)}.level:is([data-arrange=stack],[data-arrange=wing]) .objective{border-radius:6px 14px 14px 6px;margin-bottom:10px;padding:8px 12px 6px 38px}.level:is([data-arrange=stack],[data-arrange=wing]) .objective:before{width:14px;height:14px;top:10px;left:10px}.level:is([data-arrange=stack],[data-arrange=wing]) .objective:after{display:none}.level:is([data-arrange=stack],[data-arrange=wing]) .level-title{font-size:.88rem}.level:is([data-arrange=stack],[data-arrange=wing]) .mini-bar{display:none}.level:is([data-arrange=stack],[data-arrange=wing]) .pill-label{letter-spacing:.03em;font-size:.58rem}.level:is([data-arrange=stack],[data-arrange=wing]) .pill{gap:4px;padding:1px 7px}.level:is([data-arrange=stack],[data-arrange=wing]) .chaos-bar,.level:is([data-arrange=stack],[data-arrange=wing]) .pill.weight .mini-bar{display:none}.level:is([data-arrange=stack],[data-arrange=wing]) .pill.chaos b{font-size:1.1rem}.level:is([data-arrange=stack],[data-arrange=wing]) .pill .of{font-size:.74rem}.level:is([data-arrange=stack],[data-arrange=wing]) .pill b{font-size:1rem}.level:is([data-arrange=stack],[data-arrange=wing]) .goal-line{height:34px;margin-bottom:6px;font-size:.82rem;line-height:17px;overflow:hidden}.level:is([data-arrange=stack],[data-arrange=wing]) .pills{gap:6px;min-height:0}.level:is([data-arrange=stack],[data-arrange=wing]) .pill{padding:1px 8px;font-size:.88rem}.level:is([data-arrange=stack],[data-arrange=wing]) .over-note{min-height:0;margin-top:4px}.level:is([data-arrange=stack],[data-arrange=wing]) .suitcase{border-radius:24px;padding:16px 16px 20px}.level:is([data-arrange=stack],[data-arrange=wing]) .suitcase:before{border-width:2px;border-radius:19px;inset:6px}.level:is([data-arrange=stack],[data-arrange=wing]) .handle{border-width:2px;width:84px;height:16px;top:-14px}.level:is([data-arrange=stack],[data-arrange=wing]) .handle:before,.level:is([data-arrange=stack],[data-arrange=wing]) .handle:after{display:none}.level:is([data-arrange=stack],[data-arrange=wing]) .hw.corner{width:20px;height:20px}.level:is([data-arrange=stack],[data-arrange=wing]) .hw.corner:after,.level:is([data-arrange=stack],[data-arrange=wing]) .hw.latch{display:none}.level:is([data-arrange=stack],[data-arrange=wing]) .board{box-shadow:0 0 0 7px var(--lining), 0 0 0 8px #785a3259, 0 0 0 9px #00000038}.level:is([data-arrange=stack],[data-arrange=wing]) .board:after{border-width:1.5px;inset:-4px}.level:is([data-arrange=stack],[data-arrange=wing]) .board.keyboard-active{box-shadow:0 0 0 7px var(--lining), 0 0 0 8px #785a3259, 0 0 0 11px var(--focus)}.level[data-arrange=stack] .piece{scroll-margin-top:calc(var(--cell) * var(--rows) + 120px);scroll-margin-bottom:84px}.level[data-arrange=stack] .side{width:min(100%, calc(var(--cell) * var(--tcols) + 36px));margin-inline:auto}.level:is([data-arrange=stack],[data-arrange=wing]) .tray{padding:8px 16px 12px}.level[data-arrange=stack] .toolbar{z-index:8;background:var(--tabletop);background-attachment:fixed;margin:6px 0 4px;padding:10px 0 6px;position:sticky;bottom:0;box-shadow:0 -10px 12px -10px #2b24334d}@media (width<=760px){.app{padding:4px 10px 12px}.masthead{text-align:center;justify-content:center;min-height:0;padding:4px 0 6px}.brand{justify-content:center;gap:8px}h1{font-size:1.5rem}.brand-mark{width:34px;height:31px}.tagline{display:none}.sound-toggle{position:absolute;top:4px;right:0}.levels{gap:6px}.level-tab{white-space:nowrap;min-height:40px;padding:0 8px 0 22px}.level-tab:before{left:7px}.toolbar button{min-height:44px}}.masthead{container-type:inline-size}@container (width<=19.5em){.levels{flex-wrap:wrap;justify-content:center}}@media (width<=340px){.levels{gap:4px}.level-tab{padding:0 5px 0 18px;font-size:.82rem}.level-tab:before{width:9px;height:9px;margin-top:-4.5px;left:5px}}@media (prefers-reduced-motion:reduce){.carried.snapped,.level-tab,.toolbar button,.dialog-actions button,.note-foot button:not(.note-skip){transition:none}.backdrop,.dialog{animation:none}}@media (forced-colors:active){.piece:focus-visible,.piece.selected{outline:3px solid highlight}.cell.valid{outline:2px solid highlight}.cell.invalid{outline:2px dashed canvastext}}.level[data-cell=xs] .lod1,.level[data-cell=xs] .lod2,.level[data-cell=sm] .lod2{display:none}.wlabel{left:calc(var(--cell) * var(--zx));top:calc(var(--cell) * var(--zy));z-index:1;pointer-events:none;white-space:nowrap;font:800 max(11px, calc(var(--cell) * .2)) / 1 var(--ui);letter-spacing:.01em;position:absolute;transform:translate(-50%,-50%)}.wl-dark{color:#2b2433}.wl-light{color:#fff6e6;text-shadow:0 1px #0006}.level[data-cell=xs] .wlabel .unit,.level[data-cell=sm] .wlabel .unit{display:none}.chaos-badge{left:calc(var(--cell) * var(--bx));top:calc(var(--cell) * var(--by));transform:translate(-50%, -50%) rotate(var(--tilt,-5deg));z-index:2;width:max(22px, calc(var(--cell) * .42));height:max(22px, calc(var(--cell) * .42));color:var(--chaos-ink);box-shadow:0 0 0 1.5px var(--chaos-ink), inset 0 0 0 2px #fff4d6, inset 0 0 0 3px var(--chaos), 0 1px 3px #2b243380;font:700 max(12px, calc(var(--cell) * .27)) / 1 var(--display);pointer-events:none;background:#fff4d6;border-radius:50%;place-items:center;display:grid;position:absolute}.chaos-badge:not(.must){box-shadow:none;background:0 0}.chaos-badge svg{width:100%;height:100%;display:block;overflow:visible}.dot-shadow{fill:#2b243361}.dot-paper{fill:#fff4d6;stroke:#d9c79a;stroke-width:.8px}.dot-ring{fill:none;stroke:var(--chaos-ink);stroke-width:1.8px;stroke-linecap:round;opacity:.92;mix-blend-mode:multiply}.dot-ring.thin{stroke-width:.9px;opacity:.7;stroke-dasharray:2.2 1.4}.dot-num{fill:var(--chaos-ink);stroke:var(--chaos-ink);stroke-width:.9px;stroke-opacity:.45;paint-order:stroke;font:700 21px var(--display)}.chaos-badge.must{width:auto;height:max(17px, calc(var(--cell) * .3));color:var(--ink);font:800 max(9px, calc(var(--cell) * .19)) / 1 var(--ui);letter-spacing:.1em;box-shadow:0 0 0 1.5px var(--ink), inset 0 0 0 1.5px #fff4d6, inset 0 0 0 2.5px var(--ink), 0 1px 3px #2b243380;border-radius:3px;padding:0 6px}.pill .of{color:var(--muted);white-space:nowrap;font-size:.78rem}.pill.chaos{border-color:var(--chaos);flex-wrap:wrap;flex:100%;align-items:center;row-gap:2px}.pill.chaos .pill-label{color:var(--chaos)}.pill.chaos b{font-size:1.25rem}.pill.chaos.plain{flex:none}.pill.chaos.ok{border-color:var(--ok);background:#eaf6ec}.pill.chaos.ok .pill-label,.pill.chaos.ok b{color:var(--ok)}.pill.chaos.max{background:#fff3c7;border-color:#c9981f}.chaos-bar{background:repeating-linear-gradient(90deg,#2b243338 0 1px,#0000 1px 8px),#2b24331a;border-radius:3px;flex:80px;min-width:70px;height:12px;position:relative;box-shadow:inset 0 1px 2px #2b243359}.chaos-bar .fill{background:repeating-linear-gradient(135deg, #ffffff2e 0 3px, transparent 3px 6px), var(--chaos);border-radius:3px;height:100%;transition:width .12s ease-out;display:block}.pill.chaos.ok .chaos-bar .fill{background:repeating-linear-gradient(135deg, #fff3 0 3px, transparent 3px 6px), var(--ok)}.pill.chaos.max .chaos-bar .fill{background:linear-gradient(#ffe9a0,#d9a93e 45%,#a8760f);box-shadow:0 0 0 1px #8a6416}.pill.chaos.max .chaos-bar{box-shadow:inset 0 1px 2px #2b243359,0 0 0 2px #d9a93e66}.pill.chaos.max .of.perfect{color:#7a5200;font-weight:800}.chaos-bar .sheen{pointer-events:none;border-radius:3px;display:none;position:absolute;inset:0;overflow:hidden}.pill.chaos.spark .chaos-bar .sheen{display:block}.chaos-bar .sheen:after{content:"";background:linear-gradient(100deg,#0000,#ffffffd9,#0000);width:34%;animation:.55s ease-out both sheen;position:absolute;top:-2px;bottom:-2px;left:-40%}@keyframes sheen{to{left:110%}}.chaos-bar .tick{background:var(--ink);border-radius:2px;width:3px;margin-left:-1px;position:absolute;top:-4px;bottom:-4px}.note-replay{min-height:28px;color:var(--muted);font:700 .74rem var(--ui);letter-spacing:.04em;cursor:pointer;background:0 0;border:2px solid #2b243380;border-radius:999px;flex:none;padding:0 10px}.note-replay:hover{background:var(--ink);color:var(--paper)}.note-replay:focus-visible{outline:3px solid var(--focus);outline-offset:2px}.intro-note{z-index:25;color:#2b2433;width:min(330px,100% - 12px);max-height:min(70vh,300px);font-family:var(--hand);background:linear-gradient(90deg,#0000 31px,#c93c3273 31px 33px,#0000 33px),repeating-linear-gradient(#0000 0 29px,#426eb447 29px 30px),#fffdf5;border:1px solid #2b243366;padding:18px 16px 10px 36px;animation:.32s cubic-bezier(.2,.9,.3,1) both note-in;position:absolute;top:6px;left:6px;overflow:auto;transform:rotate(-1.2deg);box-shadow:3px 6px #2b243333,0 18px 30px -10px #1e140a80}.note-tape{background:#eedc96cc;border:1px dashed #78642866;width:64px;height:22px;position:absolute;top:-12px}.note-tape.left{left:18px;transform:rotate(-6deg)}.note-tape.right{right:18px;transform:rotate(5deg)}.note-kicker{color:#6b5f7a;font:700 .72rem var(--ui);letter-spacing:.12em;text-transform:uppercase;margin:0 0 2px;display:none}.note-page{min-height:70px;animation:.26s ease-out both page-in;position:relative}.note-page h2{font-family:var(--hand);color:#3a2a6a;text-underline-offset:6px;margin:0 0 2px;font-size:1.55rem;font-weight:600;line-height:1;-webkit-text-decoration:underline wavy #6a2aa880;text-decoration:underline wavy #6a2aa880;text-decoration-thickness:2px}.note-page ul{margin:4px 0 0;padding:0;font-size:1.1rem;line-height:24px;list-style:none}.note-page li:before{content:"– ";color:var(--chaos)}.note-foot{font-family:var(--ui);align-items:center;gap:8px;margin-top:4px;display:flex}.note-dots{gap:5px;margin-right:auto;display:flex}.note-dots i{border:2px solid #2b243380;border-radius:50%;width:9px;height:9px}.note-dots i.on{background:var(--chaos);border-color:var(--chaos)}.note-foot .note-next{margin-left:auto}.note-foot button{border:2px solid var(--ink);min-height:38px;font:700 .9rem var(--ui);cursor:pointer;background:#fffdf5;border-radius:8px;padding:0 14px;box-shadow:2px 3px #2b243340}.note-foot .note-skip{box-shadow:none;color:var(--muted);background:0 0;border-color:#0000;text-decoration:underline}.note-foot .note-next{background:var(--ink);color:var(--paper)}.note-foot button:focus-visible{outline:3px solid var(--focus);outline-offset:2px}@keyframes note-in{0%{opacity:0;transform:translateY(18px)rotate(3deg)}}@keyframes page-in{0%{opacity:0;transform:translate(14px)rotate(-1.5deg)}}@media (prefers-reduced-motion:reduce){.intro-note,.note-page{animation:none}.chaos-bar .fill{transition:none}}.dialog.perfect{border-color:#8a6416}.dialog.perfect .dialog-band{color:#fff8e0;background:linear-gradient(90deg,#8a6416,#d8a93e 50%,#8a6416)}.dialog.perfect h2{color:#7a5200;background:#fff3c7;border-color:#c9981f}.dialog.perfect .bonus-result.max{color:#7a5200}.note-replay-short,.level:is([data-arrange=stack],[data-arrange=wing]) .note-replay-long{display:none}.level:is([data-arrange=stack],[data-arrange=wing]) .note-replay-short{display:inline}.level:is([data-arrange=stack],[data-arrange=wing]) .note-replay{align-self:center;min-width:34px;min-height:26px;margin:-4px 0;padding:0 8px;line-height:1}.suitcase{position:relative}.flourish{pointer-events:none;z-index:6;position:absolute;inset:0}.flourish-ring{opacity:0;border:3px dashed #d9a93e;border-radius:26px;animation:.32s ease-out both ring-in,.5s ease-in 1.2s forwards ring-out;position:absolute;inset:-9px;box-shadow:0 0 0 3px #d9a93e38}.twinkle{fill:#f4d36b;stroke:#8a6416;stroke-width:1.2px;stroke-linejoin:round;animation:.6s ease-out both twinkle;position:absolute;transform:translate(-50%,-50%)scale(0)}@keyframes ring-in{0%{opacity:0;transform:scale(1.05)}to{opacity:1;transform:scale(1)}}@keyframes ring-out{to{opacity:0}}@keyframes twinkle{0%{transform:translate(-50%,-50%)scale(0)rotate(0)}55%{transform:translate(-50%,-50%)scale(1.15)rotate(45deg)}to{opacity:.9;transform:translate(-50%,-50%)scale(.85)rotate(60deg)}}.perfect-seal{z-index:2;filter:drop-shadow(0 2px 2px #2b243366);pointer-events:none;width:88px;height:88px;animation:.45s cubic-bezier(.2,1.4,.4,1) .2s both seal-stamp;position:absolute;bottom:-26px;right:-22px;transform:rotate(14deg)}@keyframes seal-stamp{0%{opacity:0;transform:rotate(-8deg)scale(1.8)}to{opacity:1;transform:rotate(14deg)scale(1)}}@media (width<=480px){.perfect-seal{width:66px;height:66px;bottom:-20px;right:-10px}}@media (prefers-reduced-motion:reduce){.flourish-ring{opacity:.6;animation:none;transform:none}.twinkle{animation:none;transform:translate(-50%,-50%)scale(.85)rotate(45deg)}.chaos-bar .sheen:after{animation:none;display:none}.perfect-seal{animation:none}}.pills{container-type:inline-size}@container (width<=400px){.pill.weight .mini-bar{display:none}}.opening-layer{display:none}.app.opening .opening-layer{z-index:40;padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right);flex-direction:column;justify-content:flex-start;align-items:center;display:flex;position:fixed;inset:0}.opening-stack{left:0;right:0;top:var(--tag-top,55%);flex-direction:column;align-items:center;gap:16px;display:flex;position:absolute}.opening-tag{border:2px solid var(--ink);background:var(--paper);max-width:calc(100vw - 32px);color:var(--ink);font:italic 600 1.1rem / 1.25 var(--display);text-align:center;border-radius:6px 16px 16px 6px;margin:0;padding:7px 18px 8px 34px;position:relative;box-shadow:2px 3px #2b243347}.opening-tag:before{content:"";background:var(--table);border:2px solid var(--ink);border-radius:50%;width:11px;height:11px;margin-top:-5.5px;position:absolute;top:50%;left:11px;box-shadow:inset 1px 1px #2b243359}.opening-play{border:2px solid var(--ink);background:var(--ink);min-height:48px;color:var(--paper);cursor:pointer;font:700 .95rem var(--ui);letter-spacing:.16em;text-transform:uppercase;-webkit-tap-highlight-color:transparent;touch-action:manipulation;border-radius:8px;padding:0 34px;transition:transform .15s cubic-bezier(.2,.8,.3,1),box-shadow .15s ease-out,background-color .15s ease-out,color .15s ease-out,outline-offset .15s ease-out;box-shadow:2px 3px #2b24334d}@media (hover:hover){.opening-play:hover:not(:active){background:var(--paper);color:var(--ink);transform:translateY(-2px);box-shadow:3px 5px #2b24334d}}.opening-play:active{background:var(--paper);color:var(--ink);transition-duration:70ms;transform:translateY(1px)scale(.97);box-shadow:1px 1px #2b24334d}.brand-lockup{transform-origin:0 0;align-items:center;gap:12px;display:flex}.app.opening:not(.go) .brand-lockup,.app.opening:not(.go) .opening-stack,.app.opening>:not(.masthead):not(.opening-layer),.app.opening .masthead-tools,.app.opening .tagline{opacity:0}.app.opening.go .brand-slot{width:var(--lw);height:var(--lh);position:relative}.app.opening.go .brand-lockup{white-space:nowrap;zoom:var(--os);transform-origin:0 0;width:max-content;transform:translate(calc(var(--ox,0px) / var(--os,1)), calc(var(--oy,0px) / var(--os,1)));animation:.5s ease-out both op-in;position:absolute;top:0;left:0}.app.opening.go .wm-it{animation:.46s cubic-bezier(.3,1.5,.45,1) .45s both op-stamp}.app.opening.go .opening-tag{animation:.42s ease-out .9s both op-up}.app.opening.go .opening-play{animation:.38s ease-out 1.1s backwards op-up}.app.opening.leaving .brand-lockup{animation:.5s ease-out both op-in,.8s cubic-bezier(.45,0,.25,1) both op-travel}.app.opening.leaving .opening-tag{pointer-events:none;animation:.2s ease-in forwards op-out}.app.opening.leaving .opening-play{pointer-events:none;animation:.34s ease-out forwards op-release}.app.opening.leaving>:not(.masthead):not(.opening-layer),.app.opening.leaving .masthead-tools,.app.opening.leaving .tagline{animation:.42s ease-out .43s both op-reveal}@keyframes op-in{0%{opacity:0}}@keyframes op-travel{0%{transform:translate(calc(var(--ox,0px) / var(--os,1)), calc(var(--oy,0px) / var(--os,1))) scale(1)}to{transform:translate(0, 0) scale(var(--is,1))}}@keyframes op-stamp{0%{opacity:0;transform:rotate(-3deg)translateY(-.45em)scale(1.45)}to{opacity:1;transform:rotate(-3deg)}}@keyframes op-up{0%{opacity:0;transform:translateY(10px)}}@keyframes op-out{to{opacity:0}}@keyframes op-release{0%{opacity:1;transform:translateY(1px)scale(.97)}35%{opacity:1;transform:translateY(-1px)scale(1.02)}to{opacity:0;transform:translateY(3px)scale(.98)}}@keyframes op-reveal{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}.opening-play:focus-visible{outline:3px solid var(--ink);outline-offset:3px}@media (prefers-reduced-motion:reduce){.app.opening *,.app.opening :after{transition:none!important;animation:none!important}.opening-play:active,.opening-play:hover:not(:active){transform:none}}
