:root{color:#3e3029;font-synthesis:none;background:#f6eee3;font-family:ui-rounded,Avenir Next,Avenir,Segoe UI,sans-serif}*{box-sizing:border-box}button,select{font:inherit}button{color:inherit;cursor:pointer}button:disabled{opacity:.42;cursor:not-allowed}button:focus-visible,select:focus-visible,input:focus-visible{outline:3px solid var(--focus);outline-offset:3px}.app{--ink:#3e3029;--muted:#816e62;--paper:#fffaf3;--paper-soft:#f8ecdf;--line:#ddc9b8;--line-strong:#bd9c88;--blush:#d99091;--blush-deep:#a94f57;--sage:#8ca78d;--sage-deep:#486b56;--terracotta:#c76e52;--terracotta-deep:#873f31;--forest:#284b42;--wire:#2d7264;--wire-glow:#3b8b7757;--tile:#fff7ec;--tile-hover:#f6dfd0;--board:#365c52;--board-deep:#193a33;--focus:#b45a47;min-height:100vh;color:var(--ink);background:radial-gradient(circle at 12% 13%,#e0a49d4d,#0000 24rem),radial-gradient(circle at 88% 82%,#89a98d47,#0000 28rem),linear-gradient(135deg,#fdf7ee 0%,#f5e6d5 52%,#eee0cf 100%);padding:24px max(28px,50vw - 740px);overflow:hidden}.theme-dark{--ink:#f3e9da;--muted:#c9b8a9;--paper:#23352f;--paper-soft:#1b2a26;--line:#496257;--line-strong:#789287;--blush:#e7a2a1;--blush-deep:#f0b9b1;--sage:#a9c4a2;--sage-deep:#b8d4ac;--terracotta:#e39172;--terracotta-deep:#f0ad92;--forest:#d0e3c4;--wire:#c7e9b7;--wire-glow:#c0edb35c;--tile:#18322c;--tile-hover:#27443a;--board:#0d211e;--board-deep:#071412;--focus:#ffd174;background:radial-gradient(circle at 13% 10%,#b76a5f2e,#0000 26rem),radial-gradient(circle at 88% 86%,#739a782b,#0000 30rem),linear-gradient(135deg,#17231f 0%,#101a18 56%,#0b1211 100%)}.scale-large{font-size:1.1rem}header,.playbar,.gameArea,.dashboard{max-width:1420px;margin:auto}header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;height:72px;display:flex}.brand{letter-spacing:.15em;align-items:center;gap:11px;display:flex}.brand>span{color:var(--terracotta);text-shadow:0 0 17px #c76e5252;font-size:29px}.brand strong{font-size:17px;display:block}.brand small,small{color:var(--muted);letter-spacing:.12em;font:10px ui-monospace,SFMono-Regular,Menlo,monospace;display:block}.topActions{gap:8px;display:flex}button{border:1px solid var(--line-strong);background:color-mix(in srgb, var(--paper) 90%, var(--blush) 10%);box-shadow:0 2px 0 color-mix(in srgb, var(--line-strong) 38%, transparent);border-radius:10px;padding:9px 12px;font-size:13px;transition:transform .15s,border-color .15s,background .15s,box-shadow .15s}button:hover:not(:disabled){border-color:var(--terracotta);background:color-mix(in srgb, var(--paper) 78%, var(--blush) 22%);box-shadow:0 5px 12px color-mix(in srgb, var(--terracotta) 18%, transparent);transform:translateY(-1px)}.primary,.resume{background:var(--terracotta);border-color:var(--terracotta-deep);color:#fff9f1;box-shadow:0 4px 0 var(--terracotta-deep), 0 8px 18px #873f312e;font-weight:800}.primary:hover:not(:disabled),.resume:hover:not(:disabled){background:var(--blush-deep)}.dashboard{grid-template-columns:1.3fr .7fr;gap:28px;padding:clamp(48px,8vh,110px) 0;display:grid}.welcome{align-self:center;max-width:700px}.welcome h1{letter-spacing:-.05em;margin:12px 0 18px;font-family:Georgia,Times New Roman,serif;font-size:clamp(40px,5vw,74px);line-height:.98}.welcome p{max-width:560px;color:var(--muted);font-size:17px;line-height:1.55}.homeActions{gap:10px;margin-top:26px;display:flex}.homeActions button{padding:14px 18px}.profileCard,.difficultyPicker,.hintCard{background:color-mix(in srgb, var(--paper) 91%, var(--sage) 9%);border:1px solid var(--line);border-radius:16px;padding:24px;box-shadow:0 18px 50px #4e352721}.profileCard h2{margin:10px 0 20px;font-family:Georgia,Times New Roman,serif;font-size:31px}.statGrid{border-top:1px solid var(--line);border-left:1px solid var(--line);grid-template-columns:repeat(3,1fr);display:grid}.profileStat{border-right:1px solid var(--line);border-bottom:1px solid var(--line);padding:14px}.profileStat strong{color:var(--sage-deep);font-size:25px;display:block}.profileStat small{margin-top:3px}.subtle{color:var(--muted);font-size:13px}.difficultyPicker{grid-column:1/-1;grid-template-columns:240px 1fr;gap:28px;display:grid}.gamePicker{grid-column:1/-1;grid-template-columns:repeat(2,1fr);gap:18px;display:grid}.gameCard{border:1px solid var(--line);background:color-mix(in srgb, var(--paper) 88%, var(--sage) 12%);border-radius:16px;min-height:205px;padding:25px;box-shadow:0 15px 38px #4e35271a}.gameCard:nth-child(2){background:color-mix(in srgb, var(--paper) 87%, var(--blush) 13%)}.gameCard h2{margin:7px 0;font:32px Georgia,Times New Roman,serif}.gameCard p{max-width:390px;color:var(--muted);line-height:1.45}.difficultyPicker h2{margin:7px 0;font-family:Georgia,Times New Roman,serif}.difficultyList{grid-template-columns:repeat(4,1fr);gap:9px;display:grid}.difficultyList button{text-align:left;min-height:94px}.difficultyList button.selected{border-color:var(--terracotta);box-shadow:inset 0 0 0 1px var(--terracotta), 0 4px 12px #c76e5224}.difficultyList strong,.difficultyList span,.difficultyList em{display:block}.difficultyList span{color:var(--muted);margin:7px 0;font-size:12px}.difficultyList em{color:var(--sage-deep);font-size:11px;font-style:normal;font-weight:700}.playbar{grid-template-columns:1fr 1.4fr 1fr;align-items:center;padding:21px 0 18px;display:grid}.playbar strong{margin:4px 0;font-size:16px;display:block}.playbar em{color:var(--muted);font-size:12px;font-style:normal}.objective{text-align:center}.stats{color:var(--muted);justify-self:end;gap:14px;font:12px ui-monospace,SFMono-Regular,Menlo,monospace;display:flex}.stats b{color:var(--ink);font-size:18px}.gameArea{grid-template-columns:minmax(500px,1fr) 255px;align-items:center;gap:26px;display:grid}.boardShell{background:linear-gradient(135deg, color-mix(in srgb, var(--board) 84%, var(--paper) 16%), var(--board-deep));border:1px solid color-mix(in srgb, var(--line-strong) 65%, var(--board));border-radius:18px;place-items:center;min-height:calc(100vh - 184px);padding:clamp(18px,3vw,50px);display:grid;position:relative;box-shadow:0 28px 70px #2d261e3d}.board{aspect-ratio:1;background:var(--board-deep);border:1px solid color-mix(in srgb, var(--wire) 50%, var(--board-deep));width:min(77vh,100vw - 420px);max-width:790px;display:grid;box-shadow:inset 0 0 42px #00000052,0 16px 28px #0000002e}.untangleShell{overflow:hidden}.untangleBoard{aspect-ratio:1;border:1px solid color-mix(in srgb, var(--wire) 50%, var(--board-deep));background:radial-gradient(circle at 50% 42%, color-mix(in srgb, var(--board) 82%, var(--paper) 18%), var(--board-deep));touch-action:none;width:min(77vh,100vw - 420px);max-width:790px;box-shadow:inset 0 0 42px #00000052,0 16px 28px #0000002e}.untangleBoard line{stroke:#d7ebc9;stroke-width:1.35px;stroke-linecap:round;opacity:.9;transition:stroke .15s,stroke-width .15s}.untangleBoard line.crossingLine{stroke:#f5c66d;stroke-width:2.35px;filter:drop-shadow(0 0 2px #f5c66db3)}.untangleBoard circle{fill:#e28b76;stroke:#fff3df;stroke-width:1.15px;cursor:grab;transition:r .15s,fill .15s}.untangleBoard circle:hover,.untangleBoard circle:focus{fill:#f3c16e;r:4.15;outline:none}.untangleBoard circle.draggingNode{cursor:grabbing;fill:#f6d387;filter:drop-shadow(0 0 3px #f6d387cc)}.pathBoard{aspect-ratio:1;background:var(--board-deep);border:1px solid color-mix(in srgb, var(--wire) 50%, var(--board-deep));gap:2px;width:min(77vh,100vw - 420px);max-width:790px;padding:5px;display:grid;box-shadow:inset 0 0 42px #00000052,0 16px 28px #0000002e}.pathCell{border:1px solid color-mix(in srgb, var(--board) 60%, var(--board-deep));background:color-mix(in srgb, var(--tile) 88%, var(--sage) 12%);min-width:0;box-shadow:none;color:var(--forest);border-radius:4px;padding:0;font-weight:800}.pathCell:hover:not(:disabled){box-shadow:inset 0 0 0 2px var(--terracotta);transform:none}.pathCell.routed{background:var(--sage);color:#fffaf3;border-color:var(--sage-deep)}.pathCell.routeEnd{outline-offset:-5px;box-shadow:inset 0 0 0 3px var(--terracotta);outline:3px solid #fff8df}.pathCell.candidate{border:2px dashed var(--terracotta);background-image:radial-gradient(circle at center, color-mix(in srgb, var(--terracotta) 65%, transparent) 0 3px, transparent 4px)}.pathCell.candidate:hover{box-shadow:inset 0 0 0 3px var(--terracotta)}.pathCell.hinted{color:#71351f;background-color:#f2c976;box-shadow:inset 0 0 0 2px #8a4d20}.pathFeedback{border-left:4px solid var(--terracotta);background:color-mix(in srgb, var(--tile) 88%, var(--terracotta) 12%);width:min(77vh,100vw - 420px);max-width:790px;color:var(--ink);margin:10px 0 0;padding:9px 11px;font-size:.9rem}.mosaicPackingBoard{aspect-ratio:1;grid-template-columns:repeat(var(--cols), 1fr);grid-template-rows:repeat(var(--rows), 1fr);background:var(--board-deep);border:1px solid color-mix(in srgb, var(--wire) 50%, var(--board-deep));touch-action:none;width:min(70vh,100vw - 430px);max-width:720px;padding:8px;display:grid;position:relative;box-shadow:inset 0 0 42px #00000052,0 16px 28px #0000002e}.mosaicTarget{border:1px solid color-mix(in srgb, var(--sage) 38%, var(--board-deep));background:color-mix(in srgb, var(--board) 72%, var(--board-deep));border-radius:3px}.mosaicTarget.hinted{background:color-mix(in srgb, #f2c976 50%, var(--board));box-shadow:inset 0 0 0 2px #f2c976}.mosaicTray{background:color-mix(in srgb, var(--paper) 75%, var(--board) 25%);border:1px solid var(--line);border-radius:10px;flex-wrap:wrap;align-content:center;gap:15px;width:min(70vh,100vw - 430px);max-width:720px;min-height:106px;margin-top:16px;padding:16px;display:flex}.polyPiece{--unit-x:25px;--unit-y:25px;grid-template-columns:repeat(var(--piece-w), var(--unit-x));grid-template-rows:repeat(var(--piece-h), var(--unit-y));width:calc(var(--piece-w) * var(--unit-x));height:calc(var(--piece-h) * var(--unit-y));box-shadow:none;touch-action:none;cursor:grab;z-index:2;background:0 0;border:0;border-radius:0;padding:0;display:grid;position:relative}.mosaicPackingBoard .polyPiece{--unit-x:calc((min(70vh, calc(100vw - 430px)) - 16px) / var(--cols));--unit-y:calc((min(70vh, calc(100vw - 430px)) - 16px) / var(--rows));left:calc(8px + var(--piece-x) * (100% - 16px) / var(--cols));top:calc(8px + var(--piece-y) * (100% - 16px) / var(--rows));position:absolute}.polyPiece i{background:hsl(var(--piece-color) 58% 57%);border:1px solid hsl(var(--piece-color) 42% 33%);box-shadow:inset 0 1px hsl(var(--piece-color) 75% 72% / .6)}.polyPiece.selected i{outline-offset:-3px;outline:2px solid #f4cf74}.polyPiece.dragSource{opacity:.28;cursor:grabbing}.polyPiece:active{cursor:grabbing;transform:scale(1.04)}.mosaicGhost{z-index:20;pointer-events:none;cursor:grabbing;filter:drop-shadow(0 9px 8px #00000061);opacity:.94;position:fixed;transform:rotate(1deg)}.toolRow{flex-wrap:wrap;gap:8px;margin:12px 0;display:flex}.toolRow button{padding:8px 10px}@media (width<=900px){.mosaicPackingBoard,.mosaicTray{width:min(85vw,70vh)}.mosaicPackingBoard .polyPiece{--unit-x:calc((min(85vw, 70vh) - 16px) / var(--cols));--unit-y:calc((min(85vw, 70vh) - 16px) / var(--rows))}}.tile{border:1px solid color-mix(in srgb, var(--board) 55%, var(--board-deep));background:var(--tile);min-width:0;box-shadow:none;border-radius:0;padding:0;position:relative}.tile:hover:not(:disabled){background:var(--tile-hover);box-shadow:inset 0 0 0 1px var(--terracotta);transform:none}.tile b{background:var(--forest);box-shadow:0 0 8px var(--wire-glow);z-index:2;border-radius:50%;position:absolute;inset:40%}.wire{background:var(--wire);box-shadow:0 0 7px var(--wire-glow);opacity:.96;display:block;position:absolute}.wire.n,.wire.s{width:12%;height:50%;left:44%}.wire.n{top:0}.wire.s{bottom:0}.wire.e,.wire.w{width:50%;height:12%;top:44%}.wire.e{right:0}.wire.w{left:0}.wire:not(.on){display:none}.tile.hinted{background:#f2c976;box-shadow:inset 0 0 0 2px #8a4d20}.tile.hinted .wire{background:#71351f;box-shadow:0 0 7px #71351f59}.hintCard h2{margin:7px 0;font-family:Georgia,Times New Roman,serif;font-size:20px}.hintCard p,.how{color:var(--muted);font-size:12px;line-height:1.5}.controls{gap:8px;margin:12px 0;display:grid}.controls button{text-align:left}kbd{border:1px solid var(--line);background:var(--paper-soft);color:var(--muted);border-radius:4px;padding:1px 4px;font:10px ui-monospace,SFMono-Regular,Menlo,monospace}.completion{z-index:3;text-align:center;background:color-mix(in srgb, var(--board-deep) 85%, transparent);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);color:#fff9f1;border-radius:17px;place-content:center;justify-items:center;padding:24px;display:grid;position:absolute;inset:0}.completion h1{margin:8px 0 16px;font-family:Georgia,Times New Roman,serif;font-size:clamp(30px,4vw,53px)}.completion p{color:#f4d389;letter-spacing:.2em;font:12px ui-monospace,SFMono-Regular,Menlo,monospace}.rewardLine{color:#d8efb7;gap:20px;margin:6px 0;font-size:22px;display:flex}.completion small{color:#e8ddcf;max-width:470px;margin:8px 0 20px;line-height:1.5}.completion button{padding:13px 16px}.ripple{aspect-ratio:1;pointer-events:none;border:1px solid #f5d3897a;border-radius:50%;width:55%;animation:2.4s infinite ripple;position:absolute}@keyframes ripple{0%{opacity:.8;transform:scale(.3)}to{opacity:0;transform:scale(1.8)}}.modal{z-index:10;background:#2a1e189e;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.modal section{background:var(--paper);border:1px solid var(--line-strong);border-radius:16px;width:min(500px,100%);padding:28px;position:relative;box-shadow:0 30px 80px #21151059}.modal h2{margin:8px 0 16px;font-family:Georgia,Times New Roman,serif}.modal p{color:var(--muted)}.modal section>button:not(.close){width:100%;margin-top:10px}.close{box-shadow:none;background:0 0;border:0;padding:3px 8px;font-size:22px;position:absolute;top:13px;right:13px}.toggle,.modal label{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:14px;padding:12px 0;font-size:14px;display:flex}.modal select{color:var(--ink);background:var(--paper-soft);border:1px solid var(--line-strong);border-radius:6px;padding:5px}.themeControl{border:0;border-bottom:1px solid var(--line);margin:0;padding:0 0 12px}.themeControl legend{margin-bottom:9px;padding:0;font-size:14px}.themeControl>div{grid-template-columns:1fr 1fr;gap:8px;display:grid}.themeControl button.selected{color:#fff9f1;background:var(--sage-deep);border-color:var(--forest);box-shadow:inset 0 0 0 1px #ffffff2e}.danger{color:var(--blush-deep);border-color:var(--blush-deep)!important}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}.motion-reduced *{transition-duration:.01ms!important;animation-duration:.01ms!important}.motion-off .ripple{display:none}@media (width<=900px){.app{padding:14px;overflow:auto}.dashboard{grid-template-columns:1fr;padding:50px 0}.difficultyPicker,.gamePicker,.gameArea{grid-template-columns:1fr}.boardShell{min-height:auto}.board,.untangleBoard,.pathBoard,.mosaicBoard{width:min(85vw,70vh)}aside{grid-template-columns:1fr 1fr;gap:12px;display:grid}.how{display:none}.playbar{grid-template-columns:1fr 1fr}.objective{display:none}.difficultyList{grid-template-columns:1fr 1fr}}@media (width<=580px){.topActions button{font-size:0}.topActions button:first-letter{font-size:16px}.playbar{padding:13px 0}.gameArea{gap:12px}aside{display:block}.hintCard{margin-bottom:10px}.difficultyList{grid-template-columns:1fr}.welcome h1{font-size:42px}.stats{gap:8px}.stats span:last-child{display:none}}
