@font-face{font-family:Kalam;font-style:normal;font-display:swap;font-weight:700;src:url(/galois/assets/kalam-latin-700-normal-D2H-9ISU.woff2)format("woff2"),url(/galois/assets/kalam-latin-700-normal-7TSuSrjP.woff)format("woff")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/galois/assets/ibm-plex-sans-latin-400-normal-CDDApCn2.woff2)format("woff2"),url(/galois/assets/ibm-plex-sans-latin-400-normal-CYLoc0-x.woff)format("woff")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/galois/assets/ibm-plex-sans-latin-600-normal-CuJfVYMP.woff2)format("woff2"),url(/galois/assets/ibm-plex-sans-latin-600-normal-Cu4Hd6ag.woff)format("woff")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/galois/assets/ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2)format("woff2"),url(/galois/assets/ibm-plex-mono-latin-400-normal-CvHOgSBP.woff)format("woff")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/galois/assets/ibm-plex-mono-latin-500-normal-DSY6xOcd.woff2)format("woff2"),url(/galois/assets/ibm-plex-mono-latin-500-normal-CB9ihrfo.woff)format("woff")}@font-face{font-family:Instrument Serif;font-style:italic;font-display:swap;font-weight:400;src:url(/galois/assets/instrument-serif-latin-400-italic-DKMiL14s.woff2)format("woff2"),url(/galois/assets/instrument-serif-latin-400-italic-u__WvvIK.woff)format("woff")}@font-face{font-family:Public Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/galois/assets/public-sans-latin-400-normal-8Rpg0ruU.woff2)format("woff2"),url(/galois/assets/public-sans-latin-400-normal-SBbinRkI.woff)format("woff")}@font-face{font-family:Public Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/galois/assets/public-sans-latin-600-normal-Fru-LXNs.woff2)format("woff2"),url(/galois/assets/public-sans-latin-600-normal-BR59oU-I.woff)format("woff")}@font-face{font-family:Public Sans;font-style:normal;font-display:swap;font-weight:800;src:url(/galois/assets/public-sans-latin-800-normal-Cymo4W0O.woff2)format("woff2"),url(/galois/assets/public-sans-latin-800-normal-qgH1Oyzx.woff)format("woff")}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/galois/assets/jetbrains-mono-latin-400-normal-V6pRDFza.woff2)format("woff2"),url(/galois/assets/jetbrains-mono-latin-400-normal-6-qcROiO.woff)format("woff")}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/galois/assets/jetbrains-mono-latin-600-normal-C8RAYTDA.woff2)format("woff2"),url(/galois/assets/jetbrains-mono-latin-600-normal-BfsvjouI.woff)format("woff")}@font-face{font-family:Chakra Petch;font-style:normal;font-display:swap;font-weight:500;src:url(/galois/assets/chakra-petch-latin-500-normal-BR1ody1F.woff2)format("woff2"),url(/galois/assets/chakra-petch-latin-500-normal-CnUQnZ4D.woff)format("woff")}@font-face{font-family:Chakra Petch;font-style:normal;font-display:swap;font-weight:700;src:url(/galois/assets/chakra-petch-latin-700-normal-CnDBPjkL.woff2)format("woff2"),url(/galois/assets/chakra-petch-latin-700-normal-D1s_c2du.woff)format("woff")}@font-face{font-family:Atkinson Hyperlegible;font-style:normal;font-display:swap;font-weight:400;src:url(/galois/assets/atkinson-hyperlegible-latin-400-normal-BrHNak5F.woff2)format("woff2"),url(/galois/assets/atkinson-hyperlegible-latin-400-normal-BbWidj28.woff)format("woff")}@font-face{font-family:Atkinson Hyperlegible;font-style:normal;font-display:swap;font-weight:700;src:url(/galois/assets/atkinson-hyperlegible-latin-700-normal-GZI4o3u0.woff2)format("woff2"),url(/galois/assets/atkinson-hyperlegible-latin-700-normal-BK6Glc0m.woff)format("woff")}@font-face{font-family:DM Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/galois/assets/dm-mono-latin-400-normal-4GdczIuU.woff2)format("woff2"),url(/galois/assets/dm-mono-latin-400-normal--0xN8mdc.woff)format("woff")}@font-face{font-family:DM Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/galois/assets/dm-mono-latin-500-normal-DRMDZjhP.woff2)format("woff2"),url(/galois/assets/dm-mono-latin-500-normal-CN8Miw6E.woff)format("woff")}@font-face{font-family:Bricolage Grotesque;font-style:normal;font-display:swap;font-weight:800;src:url(/galois/assets/bricolage-grotesque-latin-800-normal-J50vIsBe.woff2)format("woff2"),url(/galois/assets/bricolage-grotesque-latin-800-normal-Br4b-5gk.woff)format("woff")}@font-face{font-family:Space Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/galois/assets/space-mono-latin-400-normal-Rg4St2Dn.woff2)format("woff2"),url(/galois/assets/space-mono-latin-400-normal-_3DlpgIW.woff)format("woff")}@font-face{font-family:Space Mono;font-style:normal;font-display:swap;font-weight:700;src:url(/galois/assets/space-mono-latin-700-normal-mWgeinG7.woff2)format("woff2"),url(/galois/assets/space-mono-latin-700-normal-D7A851RN.woff)format("woff")}@font-face{font-family:Tiro Devanagari Hindi;font-style:normal;font-display:swap;font-weight:400;src:url(/galois/assets/tiro-devanagari-hindi-latin-400-normal-BmuUH4rS.woff2)format("woff2"),url(/galois/assets/tiro-devanagari-hindi-latin-400-normal-Ca2un1sK.woff)format("woff")}@font-face{font-family:Tiro Devanagari Hindi;font-style:normal;font-display:swap;font-weight:400;src:url(/galois/assets/tiro-devanagari-hindi-devanagari-400-normal-BN7hftjh.woff2)format("woff2"),url(/galois/assets/tiro-devanagari-hindi-devanagari-400-normal-Dpl8O0n8.woff)format("woff")}@font-face{font-family:Martel;font-style:normal;font-display:swap;font-weight:400;src:url(/galois/assets/martel-latin-400-normal-DDPgKPhy.woff2)format("woff2"),url(/galois/assets/martel-latin-400-normal-CcL8cFxG.woff)format("woff")}@font-face{font-family:Martel;font-style:normal;font-display:swap;font-weight:700;src:url(/galois/assets/martel-latin-700-normal-C_R4wONz.woff2)format("woff2"),url(/galois/assets/martel-latin-700-normal-BqPlZvGL.woff)format("woff")}@font-face{font-family:Martel;font-style:normal;font-display:swap;font-weight:400;src:url(/galois/assets/martel-devanagari-400-normal-s83TFzt_.woff2)format("woff2"),url(/galois/assets/martel-devanagari-400-normal-BnxEO7Wp.woff)format("woff")}@font-face{font-family:IM Fell English;font-style:normal;font-display:swap;font-weight:400;src:url(/galois/assets/im-fell-english-latin-400-normal-BhowGHCQ.woff2)format("woff2"),url(/galois/assets/im-fell-english-latin-400-normal-CxhBQSzl.woff)format("woff")}@font-face{font-family:IM Fell English;font-style:italic;font-display:swap;font-weight:400;src:url(/galois/assets/im-fell-english-latin-400-italic-DD_ylKHZ.woff2)format("woff2"),url(/galois/assets/im-fell-english-latin-400-italic-hN89MLGX.woff)format("woff")}@font-face{font-family:EB Garamond;font-style:normal;font-display:swap;font-weight:400;src:url(/galois/assets/eb-garamond-latin-400-normal-BCNrxLz_.woff2)format("woff2"),url(/galois/assets/eb-garamond-latin-400-normal-maQnHeKB.woff)format("woff")}@font-face{font-family:EB Garamond;font-style:normal;font-display:swap;font-weight:600;src:url(/galois/assets/eb-garamond-latin-600-normal-DHwxsLHv.woff2)format("woff2"),url(/galois/assets/eb-garamond-latin-600-normal-xCe6GkOx.woff)format("woff")}@font-face{font-family:Shippori Mincho;font-style:normal;font-display:swap;font-weight:600;src:url(/galois/assets/shippori-mincho-latin-600-normal-6Q85HP94.woff2)format("woff2"),url(/galois/assets/shippori-mincho-latin-600-normal-BtWD08KL.woff)format("woff")}@font-face{font-family:Work Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/galois/assets/work-sans-latin-400-normal-jUejSri3.woff2)format("woff2"),url(/galois/assets/work-sans-latin-400-normal-DE1_0GuN.woff)format("woff")}@font-face{font-family:Work Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/galois/assets/work-sans-latin-600-normal-DB-2V89X.woff2)format("woff2"),url(/galois/assets/work-sans-latin-600-normal-Cg-NlmS7.woff)format("woff")}@font-face{font-family:VT323;font-style:normal;font-display:swap;font-weight:400;src:url(/galois/assets/vt323-latin-400-normal-wDgJuOC9.woff2)format("woff2"),url(/galois/assets/vt323-latin-400-normal-Dqn9ZSPj.woff)format("woff")}:root,[data-look=chalk]{--bg:#1e2a25;--surface:#26342e;--ink:#ecebe3;--muted:#a9b3a8;--accent:#f2d16b;--accent-ink:#1e2a25;--line:#3d4d45;--danger:#ff8f7a;--good:#8fd49a;--stage:radial-gradient(ellipse at 50% 40%, #2c3b34 0%, #1e2a25 70%);--display:"Kalam", "Comic Sans MS", cursive;--body:"IBM Plex Sans", system-ui, sans-serif;--mono:"IBM Plex Mono", ui-monospace, monospace;--radius:10px;--border:1px;--display-weight:700;--display-style:normal;--display-scale:1;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}[data-look=notebook]{--bg:#f6f7f2;--surface:#fff;--ink:#1b2a4a;--muted:#56637c;--accent:#c8402f;--accent-ink:#fff;--line:#d5deea;--danger:#b3261e;--good:#2f7d4a;--stage:linear-gradient(#e3eaf4 1px, transparent 1px) 0 0 / 22px 22px, linear-gradient(90deg, #e3eaf4 1px, transparent 1px) 0 0 / 22px 22px, #f6f7f2;--display:"Instrument Serif", Georgia, serif;--body:"Public Sans", system-ui, sans-serif;--mono:"JetBrains Mono", ui-monospace, monospace;--radius:4px;--display-weight:400;--display-style:italic;--display-scale:1.2;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}[data-look=blueprint]{--bg:#0c2244;--surface:#112b54;--ink:#e4efff;--muted:#9bb3d6;--accent:#6fe3ff;--accent-ink:#0c2244;--line:#2c5390;--danger:#ff9a8a;--good:#7ff0b0;--stage:linear-gradient(#6fe3ff17 1px, transparent 1px) 0 0 / 28px 28px, linear-gradient(90deg, #6fe3ff17 1px, transparent 1px) 0 0 / 28px 28px, #0c2244;--display:"Chakra Petch", "Arial Narrow", sans-serif;--body:"Atkinson Hyperlegible", system-ui, sans-serif;--mono:"DM Mono", ui-monospace, monospace;--radius:2px;--display-weight:700;--display-style:normal;--display-scale:.95;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}[data-look=bauhaus]{--bg:#f3f3ef;--surface:#fff;--ink:#111;--muted:#4f4f49;--accent:#1f4fd8;--accent-ink:#fff;--line:#111;--danger:#c4291d;--good:#1d8a46;--stage:linear-gradient(135deg, transparent 0 62%, #f4c20d 62% 64%, transparent 64%), #f3f3ef;--display:"Bricolage Grotesque", "Arial Black", sans-serif;--body:"Public Sans", system-ui, sans-serif;--mono:"Space Mono", ui-monospace, monospace;--radius:0px;--border:2px;--display-weight:800;--display-style:normal;--display-scale:1;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}[data-look=pothi]{--bg:#ead7ad;--surface:#f3e5c4;--ink:#2b1d12;--muted:#65502f;--accent:#8e2a1d;--accent-ink:#f3e5c4;--line:#c9ad78;--danger:#8e2a1d;--good:#2f5d3a;--stage:radial-gradient(ellipse at 50% 45%, #f1e1bb 0%, #e2cb98 75%);--display:"Tiro Devanagari Hindi", "Martel", Georgia, serif;--body:"Martel", Georgia, serif;--mono:"IBM Plex Mono", ui-monospace, monospace;--radius:14px;--display-weight:400;--display-style:normal;--display-scale:1.1;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}[data-look="1832"]{--bg:#efe6d2;--surface:#f7f0df;--ink:#3a2a1a;--muted:#6d5a43;--accent:#7a3b1d;--accent-ink:#f7f0df;--line:#cdbb98;--danger:#8a2a17;--good:#3d5a2a;--stage:repeating-linear-gradient(90deg, #3a2a1a0d 0 1px, transparent 1px 7px), radial-gradient(ellipse at 50% 40%, #f7f0df 0%, #e6d8b9 80%);--display:"IM Fell English", "EB Garamond", Georgia, serif;--body:"EB Garamond", Georgia, serif;--mono:"IBM Plex Mono", ui-monospace, monospace;--radius:3px;--display-weight:400;--display-style:italic;--display-scale:1.15;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}[data-look=sumi]{--bg:#f4f1ea;--surface:#fbf9f4;--ink:#1a1a1a;--muted:#5c5a55;--accent:#c0362c;--accent-ink:#fbf9f4;--line:#d9d4c9;--danger:#c0362c;--good:#3b6b4a;--stage:radial-gradient(circle at 70% 30%, #1a1a1a0f 0 18%, transparent 40%), #f4f1ea;--display:"Shippori Mincho", "Times New Roman", serif;--body:"Work Sans", system-ui, sans-serif;--mono:"IBM Plex Mono", ui-monospace, monospace;--radius:0px;--display-weight:600;--display-style:normal;--display-scale:1.05;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}[data-look=terminal]{--bg:#07110b;--surface:#0c1a11;--ink:#b8f5c8;--muted:#6fae83;--accent:#5cff8f;--accent-ink:#07110b;--line:#1e3a28;--danger:#ff7a6b;--good:#5cff8f;--stage:repeating-linear-gradient(0deg, #5cff8f0a 0 1px, transparent 1px 3px), #07110b;--display:"VT323", ui-monospace, monospace;--body:"IBM Plex Mono", ui-monospace, monospace;--mono:"IBM Plex Mono", ui-monospace, monospace;--radius:0px;--display-weight:400;--display-style:normal;--display-scale:1.35;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}[data-look=contrast]{--bg:#000;--surface:#000;--ink:#fff;--muted:#e6e6e6;--accent:#ff0;--accent-ink:#000;--line:#fff;--danger:#ff9e9e;--good:#9effa8;--stage:#000;--display:"Atkinson Hyperlegible", system-ui, sans-serif;--body:"Atkinson Hyperlegible", system-ui, sans-serif;--mono:"Atkinson Hyperlegible", ui-monospace, monospace;--radius:4px;--border:2px;--display-weight:700;--display-style:normal;--display-scale:1;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body{height:100%}body{background:var(--bg);color:var(--ink);font:15px / 1.55 var(--body);margin:0;transition:background-color .25s,color .25s}#app{height:100%}button,input,select{font:inherit;color:inherit}a{color:var(--ink);text-underline-offset:2px}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}code,kbd,.mono{font-family:var(--mono);font-size:.92em}kbd{border:var(--border) solid var(--line);background:var(--surface);border-radius:4px;padding:1px 5px}h2,h3{text-wrap:balance;margin:0}h2{font-family:var(--display);font-weight:var(--display-weight);font-style:var(--display-style);font-size:calc(1.3rem * var(--display-scale));line-height:1.2}h3{font:600 .72rem / 1.2 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}p{max-width:62ch;margin:0}.muted{color:var(--muted)}.small{font-size:.85rem}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.skip{z-index:20;background:var(--accent);color:var(--accent-ink);padding:8px 12px;position:absolute;top:8px;left:-999px}.skip:focus{left:8px}.app{height:100%;padding-top:env(safe-area-inset-top,0px);grid-template-rows:auto minmax(0,1fr) auto;grid-template-areas:"top""body""tabs";display:grid}.top{border-bottom:var(--border) solid var(--line);grid-area:top;align-items:center;gap:12px;min-width:0;padding:8px 16px;display:flex}.wordmark{font-family:var(--display);font-weight:var(--display-weight);font-style:var(--display-style);font-size:calc(1.6rem * var(--display-scale));line-height:1;text-decoration:none}.tagline{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;min-width:0;font-size:.8rem;overflow:hidden}.spacer{flex:1}.icon-btn{border-radius:var(--radius);width:40px;height:40px;color:var(--muted);place-items:center;display:grid}.icon-btn[aria-current=page],.icon-btn:hover{color:var(--accent)}.icon-btn svg,.tabs svg{fill:none;stroke:currentColor;stroke-width:1.7px;stroke-linecap:round;stroke-linejoin:round;width:22px;height:22px}.tabs{border-top:var(--border) solid var(--line);background:var(--bg);padding-bottom:env(safe-area-inset-bottom,0px);grid-area:tabs;grid-template-columns:repeat(6,1fr);display:grid}.tabs a{color:var(--muted);justify-items:center;gap:2px;padding:8px 4px 10px;font-size:.72rem;text-decoration:none;display:grid}.tabs a[aria-current=page]{color:var(--accent)}.body{grid-area:body;grid-template-columns:minmax(0,1fr);align-content:start;min-height:0;display:grid;overflow-y:auto}.stage{z-index:2;background:var(--stage);border-bottom:var(--border) solid var(--line);height:40svh;min-height:240px;position:sticky;top:0}.app[data-route=settings] .stage,.app[data-route=about] .stage{height:30svh;min-height:200px}.stage-player{width:100%;height:100%}twisty-player{width:100%;height:100%;display:grid}.stage-hint{font:.75rem / 1.2 var(--mono);color:var(--muted);pointer-events:none;max-width:60%;position:absolute;top:10px;left:12px}.stage-actions{gap:6px;display:flex;position:absolute;bottom:8px;right:10px}.controls,.panel{align-content:start;gap:14px;min-width:0;padding:14px 16px;display:grid}.panel:focus{outline:none}.stack{gap:14px;min-width:0;display:grid}.card{background:var(--surface);border:var(--border) solid var(--line);border-radius:var(--radius);gap:10px;min-width:0;padding:14px;display:grid}.eyebrow{font:500 .72rem / 1 var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--accent)}.btn,.seg button{border:var(--border) solid var(--line);background:var(--surface);border-radius:var(--radius);cursor:pointer;min-height:44px;padding:8px 14px}.btn.small{min-height:36px;padding:4px 10px;font-size:.85rem}.btn.primary,.seg button[aria-pressed=true],.btn[aria-pressed=true]{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}.btn:hover:not(:disabled),.seg button:hover{border-color:var(--accent)}.btn:disabled,.pad button:disabled{opacity:.5;cursor:default}.link-btn{color:var(--muted);cursor:pointer;background:0 0;border:0;justify-self:start;padding:4px 0;font-size:.85rem;text-decoration:underline}.row,.seg{flex-wrap:wrap;align-items:center;gap:8px;display:flex}select,input[type=text],#sequence{border:var(--border) solid var(--line);background:var(--surface);border-radius:var(--radius);max-width:100%;min-height:44px;padding:8px 10px}input[type=range]{accent-color:var(--accent)}.pad-wrap{gap:6px;display:grid}.pad{grid-template-columns:repeat(6,1fr);gap:6px;display:grid}.pad button{font:600 1rem / 1 var(--mono);border:var(--border) solid var(--line);background:var(--surface);border-radius:var(--radius);cursor:pointer;touch-action:manipulation;min-height:44px}.pad button:active{background:var(--accent);color:var(--accent-ink)}.seq{gap:8px;display:grid}.seq-label{font:600 .72rem / 1 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.seq-row{gap:8px;display:flex}#sequence{min-width:0;font:500 1rem / 1 var(--mono);flex:1}#sequence[aria-invalid=true]{border-color:var(--danger)}.field-error{color:var(--danger);font-size:.85rem}.transport{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.speed{color:var(--muted);align-items:center;gap:6px;font-size:.85rem;display:flex}.speed input{width:110px}.keypad{grid-template-columns:repeat(6,1fr);gap:6px;display:grid}.keypad button{border:var(--border) solid var(--line);background:var(--surface);border-radius:var(--radius);min-height:44px;font:600 1rem / 1 var(--mono);touch-action:manipulation}.keypad .keypad-wide{font-family:var(--body);grid-column:span 3;font-weight:600}.keypad .primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}.big-number{font:var(--display-style) var(--display-weight) calc(2.6rem * var(--display-scale)) / 1 var(--display);font-variant-numeric:tabular-nums}.history{overflow-wrap:anywhere;color:var(--muted)}.keys{grid-template-columns:auto 1fr;gap:6px 14px;margin:0;font-size:.88rem;display:grid}.keys dt{white-space:nowrap}.keys dd{color:var(--muted);margin:0}.tiles{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px;margin:0;padding:0;list-style:none;display:grid}.tile{border:var(--border) solid var(--line);border-radius:var(--radius);background:var(--surface);gap:4px;height:100%;padding:14px;text-decoration:none;display:grid}.tile:hover{border-color:var(--accent)}.tile-name{font-weight:600}.tile-text{color:var(--muted);font-size:.88rem}.chip{font:500 .68rem / 1 var(--mono);letter-spacing:.06em;text-transform:uppercase;border:var(--border) solid var(--line);border-radius:var(--radius);color:var(--muted);justify-self:start;padding:4px 6px}.chip-on{border-color:var(--accent);color:var(--accent)}.prose p+p{margin-top:0}.plain{gap:6px;margin:0;padding-left:18px;display:grid}.only-wide{display:none}.look-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px;display:grid}.look-card{text-align:left;background:var(--bg);color:var(--ink);border:var(--border) solid var(--line);border-radius:var(--radius);cursor:pointer;font-family:var(--body);gap:4px;padding:10px;display:grid}.look-card[aria-pressed=true]{outline:3px solid var(--accent);outline-offset:1px}.look-swatch{gap:4px;display:flex}.look-swatch i{border:1px solid var(--line);border-radius:50%;width:18px;height:18px}.look-swatch i:first-child{background:var(--surface)}.look-swatch i:nth-child(2){background:var(--accent)}.look-swatch i:nth-child(3){background:var(--ink)}.look-name{font-family:var(--display);font-weight:var(--display-weight);font-style:var(--display-style);font-size:calc(1.05rem * var(--display-scale))}.look-feel{color:var(--muted);font-size:.78rem;line-height:1.35}.check{align-items:center;gap:8px;min-height:44px;display:flex}.check input{width:20px;height:20px;accent-color:var(--accent)}.field{gap:4px;font-size:.88rem;display:grid}.field span{color:var(--muted)}.options{border:0;gap:6px;margin:0;padding:0;display:grid}.options legend{margin-bottom:4px;padding:0;font-weight:600}.option{cursor:pointer;align-items:flex-start;gap:10px;padding:6px 0;display:flex}.option input{width:18px;height:18px;accent-color:var(--accent);margin-top:4px}.option span{display:grid}.option small{color:var(--muted)}@media (min-width:900px){.app{grid-template:"top top""tabs body"minmax(0,1fr)/76px minmax(0,1fr)}.tabs{border-top:0;border-right:var(--border) solid var(--line);grid-template-columns:1fr;grid-auto-rows:min-content;padding:10px 0 0}.body{grid-template-rows:minmax(0,1fr) auto;grid-template-columns:minmax(0,1fr) 360px;align-content:stretch;overflow:hidden}.stage,.app[data-route=settings] .stage,.app[data-route=about] .stage{border-bottom:0;grid-area:1/1;height:auto;min-height:0;position:relative}.controls{border-top:var(--border) solid var(--line);grid-area:2/1;max-height:45vh;overflow-y:auto}.panel{border-left:var(--border) solid var(--line);grid-area:1/2/span 2;overflow-y:auto}.only-wide{display:grid}}@media (min-width:1200px){.app{grid-template-columns:180px minmax(0,1fr)}.tabs{gap:4px;padding-inline:10px}.tabs a{border-radius:var(--radius);grid-template-columns:22px 1fr;place-items:center start;gap:10px;padding:10px;font-size:.92rem}.tabs a[aria-current=page]{background:var(--surface)}.body{grid-template-columns:minmax(0,1fr) 420px}}@media (prefers-reduced-motion:reduce){body{transition:none}}.card-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;display:flex}.seg.small button{min-height:32px;padding:2px 10px;font-size:.82rem}.stats{font-variant-numeric:tabular-nums;flex-wrap:wrap;gap:4px 14px;font-size:.9rem;display:flex}.orbit{gap:4px;display:grid}.orbit h4{margin:0;font-size:.85rem;font-weight:600}.cycles,.invariants,.path{gap:4px;margin:0;padding:0;font-size:.88rem;list-style:none;display:grid}.cycles li{overflow-wrap:anywhere}.invariants li{flex-wrap:wrap;justify-content:space-between;gap:10px;display:flex}.ok{color:var(--good);font-size:.82rem}.bad{color:var(--danger);font-size:.82rem}.path{grid-template-columns:repeat(auto-fill,minmax(110px,1fr))}.path li{border:var(--border) solid var(--line);border-radius:var(--radius);padding:4px 8px}.help-head{gap:6px;min-width:0;display:grid}.help-row{align-items:center;gap:8px;min-width:0;display:flex}.help-row h3,.help-row label{font:600 .72rem / 1.2 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:0}.help-row h2{margin:0}.help-btn{border:var(--border) solid var(--line);background:var(--surface);width:24px;height:24px;color:var(--muted);font:600 .8rem / 1 var(--body);cursor:pointer;border-radius:50%;flex:none;place-items:center;padding:0;display:grid;position:relative}.help-btn:after{content:"";position:absolute;inset:-10px}.help-btn:hover,.help-btn[aria-expanded=true]{color:var(--accent-ink);background:var(--accent);border-color:var(--accent)}.help-note{background:var(--ink);color:var(--bg);border-radius:var(--radius);font:.86rem / 1.5 var(--body);text-transform:none;letter-spacing:normal;max-width:62ch;padding:10px 12px;position:relative}.help-note:before{content:"";border:6px solid #0000;border-top:0;border-bottom-color:var(--ink);position:absolute;top:-6px;left:14px}.stage-help{z-index:3;max-width:calc(100% - 20px);position:absolute;top:8px;right:10px}.help-overlay .help-row{justify-content:flex-end}.help-overlay .help-note{width:min(320px,100vw - 52px);position:absolute;top:34px;right:0}.help-overlay .help-note:before{left:auto;right:6px}.seq-label{display:none}.lesson{gap:12px}.back-link{color:var(--muted);font-size:.85rem}.steps{flex-wrap:wrap;gap:4px;margin:0;padding:0;list-style:none;display:flex}.steps button{font:500 .7rem / 1 var(--mono);letter-spacing:.06em;text-transform:uppercase;border-radius:var(--radius);border:var(--border) solid var(--line);min-height:32px;color:var(--muted);cursor:pointer;background:0 0;padding:7px 8px}.steps button.done{color:var(--ink)}.steps button.now{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}.steps button:disabled{opacity:.45;cursor:default}.lesson-body{gap:8px;display:grid}.choices{gap:6px;display:grid}.choice{text-align:left;border-radius:var(--radius);border:var(--border) solid var(--line);background:var(--bg);cursor:pointer;min-height:44px;padding:10px 12px}.choice.right{border-color:var(--good);box-shadow:inset 4px 0 0 var(--good)}.choice.wrong{border-color:var(--danger);box-shadow:inset 4px 0 0 var(--danger)}.choices p{font-size:.9rem}.task{border-radius:var(--radius);border:var(--border) dashed var(--line);gap:8px;padding:10px 12px;display:flex}.task-done{border-style:solid;border-color:var(--good)}.task-done span{color:var(--good)}.hint{color:var(--muted);border-left:3px solid var(--accent);padding-left:10px;font-size:.9rem}.formal{border-top:var(--border) solid var(--line);padding-top:8px;font-size:.92rem}.formal summary{cursor:pointer;color:var(--muted);min-height:32px}.formal p{margin-top:6px}.formal{min-width:0;max-width:100%}.formal .katex-display{max-width:100%;padding:4px 0;overflow:auto hidden}.tex-fallback{font-family:var(--mono);font-size:.85em}.lesson-nav{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;display:flex}.lesson-nav .link-btn{margin-left:auto}.lesson-list{gap:10px;margin:0;padding:0;list-style:none;display:grid}@media (max-width:899px){.app[data-route=learn] .stage{order:0}.app[data-route=learn] .panel{order:1;padding-bottom:0}.app[data-route=learn] .controls{order:2}}.scramble-text{overflow-wrap:anywhere;font-size:.95rem}.attempts{gap:4px;margin:0;padding:0;list-style:none;display:grid}.attempts li{border:var(--border) solid var(--line);border-radius:var(--radius);font-variant-numeric:tabular-nums;justify-content:space-between;padding:6px 10px;display:flex}.attempts li.best{border-color:var(--accent)}#solution{width:100%;font:500 1rem / 1.4 var(--mono);border:var(--border) solid var(--line);background:var(--bg);border-radius:var(--radius);resize:vertical;padding:8px 10px}.confirm{flex-wrap:wrap;align-items:center;gap:6px;font-size:.9rem;display:flex}.big-inline{font-variant-numeric:tabular-nums;font-size:1.4rem}.heatmap{grid-template-rows:repeat(7,1fr);grid-auto-columns:1fr;grid-auto-flow:column;gap:3px;max-width:360px;display:grid}.heatmap span{aspect-ratio:1;background:var(--line);opacity:.6;border-radius:2px}.heatmap span.on{background:var(--accent);opacity:1}.heatmap span.frozen{background:repeating-linear-gradient(45deg, var(--accent) 0 2px, transparent 2px 4px);opacity:1}.heatmap span.today{outline:2px solid var(--ink);outline-offset:1px}.badges{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:6px;margin:0;padding:0;list-style:none;display:grid}.badges li{border:var(--border) dashed var(--line);border-radius:var(--radius);gap:2px;padding:8px 10px;display:grid}.badges li.earned{border-style:solid;border-color:var(--accent)}.badge-name{font-weight:600}.badges li:not(.earned) .badge-name{color:var(--muted)}.share{background:var(--bg);border-radius:var(--radius);font:.85rem / 1.5 var(--mono);white-space:pre-wrap;overflow-wrap:anywhere;margin:0;padding:10px}.solve-timer{z-index:3;border-radius:var(--radius);background:color-mix(in srgb, var(--bg) 88%, transparent);border:var(--border) solid var(--line);flex-wrap:wrap;justify-content:center;align-items:center;gap:4px 12px;padding:10px 12px;display:flex;position:absolute;inset:6px 44px auto 8px}.solve-time{font:700 2.2rem / 1 var(--mono);font-variant-numeric:tabular-nums}.solve-timer.inspecting .solve-time{color:var(--accent)}.solve-timer.done .solve-time{color:var(--good)}.solve-label{color:var(--muted);text-align:center;flex-basis:100%;order:3;font-size:.85rem}.toast{left:50%;bottom:calc(76px + env(safe-area-inset-bottom,0px));z-index:30;border-radius:var(--radius);background:var(--ink);max-width:calc(100% - 32px);color:var(--bg);padding:10px 14px;font-size:.9rem;position:fixed;transform:translate(-50%)}.toast a{color:inherit}@media (min-width:900px){.toast{bottom:24px}}.stage:has(.solve-timer) .stage-hint{visibility:hidden}.shape{overflow-wrap:anywhere;font-size:1.05rem}.timeline{flex-wrap:wrap;gap:6px;margin:12px 0;padding:0;list-style:none;display:flex}.part{border-radius:var(--radius);border:2px solid var(--line);min-height:44px;color:var(--ink);font:inherit;cursor:pointer;background:0 0;flex-direction:column;align-items:flex-start;gap:2px;padding:6px 10px;display:flex}.part-label{color:var(--muted);font-size:.75rem}.role-x,.role-setup{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 18%, transparent)}.role-x-inverse,.role-undo{border-color:var(--accent);border-style:dashed}.role-y{border-color:var(--good);background:color-mix(in srgb, var(--good) 18%, transparent)}.role-y-inverse{border-color:var(--good);border-style:dashed}.related{color:var(--muted)}
