:root{--text:#6b6252;--text-h:#201c16;--bg:#f3ecd9;--bg-panel:#fbf7ea;--border:#d8cbab;--code-bg:#ebe1c5;--navy:#223559;--navy-bg:#22355914;--accent:#a3312b;--accent-bg:#a3312b1a;--accent-border:#a3312b73;--wood:#7c5a3a;--shadow:#201c161f 0 10px 15px -3px, #201c1614 0 4px 6px -2px;--sans:system-ui, "Segoe UI", Roboto, sans-serif;--display:"Oswald", system-ui, "Segoe UI", sans-serif;--mono:ui-monospace, Consolas, monospace;font:16px/145% var(--sans);letter-spacing:.1px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;color:var(--text);background:var(--bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--text:#a89c86;--text-h:#ede4cf;--bg:#14120f;--bg-panel:#1b1812;--border:#3a3226;--code-bg:#241f17;--navy:#7fa3d6;--navy-bg:#7fa3d61f;--accent:#e2564c;--accent-bg:#e2564c24;--accent-border:#e2564c80;--wood:#b08a5f;--shadow:#00000073 0 10px 15px -3px, #0000004d 0 4px 6px -2px}}html,body{height:100%}#root{box-sizing:border-box;flex-direction:column;width:100%;height:100dvh;display:flex;overflow:hidden}body{margin:0}h1,h2,h3{font-family:var(--display);color:var(--text-h);font-weight:600}p{margin:0}code,.counter{font-family:var(--mono);color:var(--text-h);border-radius:4px;display:inline-flex}code{background:var(--code-bg);padding:3px 7px;font-size:14px;line-height:135%}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.app-layout{text-align:left;flex-direction:column;flex-grow:1;min-height:0;display:flex}.app-header{background:var(--navy);border-bottom:3px solid var(--accent);box-shadow:var(--shadow);flex-shrink:0;padding:14px 28px}.app-eyebrow{font-family:var(--mono);letter-spacing:1.6px;text-transform:uppercase;color:#fff9;margin-bottom:2px;font-size:11px;display:block}.app-header h1{letter-spacing:.4px;text-transform:uppercase;color:#fbf7ea;margin:0;font-size:22px}.app-header p{color:#fbf7eaa6;margin:2px 0 0;font-size:13px}.app-body{flex:1;min-height:0;display:flex}.panel-eyebrow{font-family:var(--display);letter-spacing:1.4px;text-transform:uppercase;color:var(--wood);border-bottom:1px solid var(--border);margin-bottom:8px;padding-bottom:8px;font-size:12px;font-weight:600;display:block}.sidebar{background:var(--bg-panel);border-right:1px solid var(--border);flex-shrink:0;width:230px;padding:16px;overflow-y:auto}.character-select{flex-direction:column;gap:6px;display:flex}.character-btn{border:1px solid #0000;border-left:3px solid var(--border);cursor:pointer;text-align:left;color:var(--text-h);background:0 0;border-radius:3px;flex-direction:column;align-items:flex-start;gap:2px;padding:8px 10px 8px 12px;transition:border-color .12s,background .12s;display:flex}.character-btn:hover{background:var(--code-bg);border-left-color:var(--wood)}.character-btn.active{border-left-color:var(--accent);background:var(--accent-bg)}.character-name{font-weight:500}.character-case{font-family:var(--mono);letter-spacing:.4px;text-transform:uppercase;color:var(--text);font-size:11px}.main-panel{flex-direction:column;flex:1;min-width:0;min-height:0;padding:16px 24px;display:flex}.hint{color:var(--text)}.error{color:var(--accent)}.empty-state{flex:1;justify-content:center;align-items:center;min-height:0;display:flex}.character-empty-state{flex-direction:column;gap:16px}.character-artwork{object-fit:contain;width:auto;max-width:60%;height:auto;max-height:50%}.character-info{text-align:center;max-width:420px}.character-info-name{font-family:var(--display);letter-spacing:.6px;text-transform:uppercase;color:var(--navy);margin:0 0 6px;font-size:16px;font-weight:600}.character-info-description{color:var(--text-h);margin:0;font-size:13.5px;line-height:1.5}.content-grid{flex:1;gap:24px;min-height:0;display:flex}.list-panel{flex-shrink:0;width:260px;overflow-y:auto}.animation-bundle h3{font-family:var(--display);letter-spacing:1px;text-transform:uppercase;color:var(--navy);border-bottom:1px dashed var(--border);margin:14px 0 4px;padding-bottom:3px;font-size:12px;font-weight:600}.animation-bundle:first-child h3{margin-top:0}.animation-bundle ul{flex-direction:column;gap:2px;margin:0;padding:0;list-style:none;display:flex}.anim-btn{text-align:left;cursor:pointer;width:100%;font-family:var(--mono);color:var(--text-h);background:0 0;border-left:2px solid #0000;border-radius:3px;padding:4px 8px 4px 10px;font-size:12.5px;transition:border-color .12s,background .12s}.anim-btn:hover{background:var(--code-bg);border-left-color:var(--wood)}.anim-btn.active{border-left-color:var(--accent);background:var(--accent-bg);color:var(--accent)}.viewer-panel{flex-direction:column;flex:1;min-width:0;min-height:0;display:flex}.animation-viewer{flex-direction:column;flex:1;gap:10px;min-height:0;display:flex}.exhibit-label{flex-shrink:0;align-items:baseline;gap:8px;display:flex}.exhibit-tag{font-family:var(--display);letter-spacing:1.2px;text-transform:uppercase;color:#fbf7ea;background:var(--accent);border-radius:2px;padding:2px 8px;font-size:11px;font-weight:600}.exhibit-name{font-family:var(--mono);color:var(--text-h);font-size:13px}.canvas-wrap{border:1px solid var(--border);background:repeating-conic-gradient(var(--code-bg) 0% 25%, var(--bg-panel) 0% 50%) 50% / 20px 20px;flex:1;justify-content:center;align-items:center;min-height:0;display:flex;position:relative}.canvas-wrap canvas{width:auto;max-width:100%;height:auto;max-height:100%;display:block}.canvas-overlay{color:#fbf7ea;background:#14120fcc;border-radius:3px;padding:4px 10px;font-size:12px;position:absolute;inset:auto auto 10px 10px}.corner{border:2px solid var(--accent);pointer-events:none;z-index:1;width:18px;height:18px;position:absolute}.corner-tl{border-bottom:none;border-right:none;top:6px;left:6px}.corner-tr{border-bottom:none;border-left:none;top:6px;right:6px}.corner-bl{border-top:none;border-right:none;bottom:6px;left:6px}.corner-br{border-top:none;border-left:none;bottom:6px;right:6px}.viewer-controls{flex-shrink:0;align-items:center;gap:8px;display:flex}.viewer-controls button{font-family:var(--sans);border:1px solid var(--border);background:var(--bg-panel);cursor:pointer;color:var(--text-h);border-radius:4px;padding:6px 14px;transition:border-color .12s,color .12s}.viewer-controls button:hover{border-color:var(--wood)}.step-btn{font-family:var(--mono)}.play-btn{min-width:118px;font-weight:600;border-color:var(--accent-border)!important;color:var(--accent)!important}.loop-toggle{color:var(--text);cursor:pointer;align-items:center;gap:5px;font-size:13px;display:flex}.step-counter{font-family:var(--mono);color:var(--text);margin-left:auto;font-size:13px}.viewer-scrubber{width:100%;accent-color:var(--accent);flex-shrink:0}.list-panel-header{align-items:center;gap:10px;display:flex}.mobile-character-intro{display:none}.mobile-back-btn{font-family:var(--sans);border:1px solid var(--border);background:var(--bg-panel);color:var(--text-h);cursor:pointer;border-radius:4px;flex-shrink:0;padding:6px 10px;font-size:13px;font-weight:500;display:none}.viewer-back-btn{align-self:flex-start}@media (width<=860px){.app-header{padding:10px 16px}.app-header h1{font-size:18px}.app-header p{display:none}.app-body{flex-direction:column;overflow-y:auto}.main-panel{padding:12px 14px}.content-grid{flex-direction:column}.sidebar,.list-panel,.viewer-panel{width:100%}.mobile-back-btn{display:inline-flex}[data-stage=characters] .main-panel,[data-stage=animations] .sidebar,[data-stage=viewer] .sidebar,[data-stage=viewer] .list-panel,[data-stage=animations] .viewer-panel,[data-stage=characters] .viewer-panel{display:none}[data-stage=viewer] .content-grid,[data-stage=viewer] .viewer-panel{flex:1;min-height:0}.character-btn{padding:12px 12px 12px 14px;font-size:15px}.anim-btn{padding:10px 10px 10px 12px;font-size:14px}.canvas-wrap{min-height:40vh}.desktop-character-intro{display:none}.mobile-character-intro{border-bottom:1px dashed var(--border);text-align:left;flex-direction:row;flex:none;justify-content:flex-start;align-items:center;gap:12px;min-height:0;margin-bottom:10px;padding:10px 0 14px;display:flex}.mobile-character-intro .character-artwork{flex-shrink:0;max-width:84px;max-height:84px}.mobile-character-intro .character-info{text-align:left;max-width:none}.mobile-character-intro .character-info-name{font-size:14px}.mobile-character-intro .character-info-description{font-size:12.5px}.mobile-character-intro .hint{display:none}.viewer-controls{flex-wrap:wrap;justify-content:center;row-gap:10px}.viewer-controls button{padding:10px 16px;font-size:15px}.step-counter{text-align:center;flex-basis:100%;order:3;margin-left:0}.loop-toggle{order:2;font-size:14px}}
