:root{--stage-bg: #fff7ea;--ink: #4a4038;--ink-faint: #ccc4b6;--accent-blue: #3d8bfd;--accent-green: #43a047;--accent-red: #e53935;--frame-border: #e3d9c6}*{box-sizing:border-box}html,body{margin:0;height:100%;overscroll-behavior:none}body{background:var(--stage-bg);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}#app{height:var(--vh100, 100vh);height:100dvh;display:flex;flex-direction:column}button{font:inherit;color:inherit;border:none;background:none;padding:0;cursor:pointer;-webkit-tap-highlight-color:transparent}button:disabled{cursor:default}a{text-decoration:none;color:inherit}.icon-btn{width:48px;height:48px;border-radius:50%;background:#fff;box-shadow:0 1px 4px #00000026;display:flex;align-items:center;justify-content:center;font-size:22px}.icon-btn:disabled{box-shadow:none;color:var(--ink-faint)}.icon-btn.large{width:56px;height:56px;font-size:28px}.icon-btn.selected{background:var(--accent-blue);color:#fff}.home{flex:1;display:flex;align-items:center;justify-content:center}.home-tiles{display:flex;flex-wrap:wrap;gap:32px;justify-content:center;padding:24px;max-width:480px}.home-tile{width:140px;height:140px;border-radius:32px;display:flex;align-items:center;justify-content:center;font-size:56px;color:#fff;box-shadow:0 2px 6px #0003}.home-tile.disabled{opacity:.45}.home-tile-hint{animation:gentle-pulse 2.4s ease-in-out infinite}@keyframes gentle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.06)}}.update-badge{position:fixed;right:20px;bottom:20px;display:flex;align-items:center;gap:6px;padding:10px 16px;border-radius:999px;background:var(--accent-green);color:#fff;box-shadow:0 2px 8px #00000040;font-weight:600}.gallery{flex:1;display:flex;flex-direction:column;padding:16px;gap:16px;min-height:0}.gallery-header{display:flex;align-items:center}.gallery-grid{flex:1;overflow-y:auto;display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:16px;align-content:start}.gallery-tile,.gallery-tile img,.variant-thumb img{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.gallery-tile{aspect-ratio:1;border-radius:24px;position:relative;box-shadow:0 2px 6px #0000002e;background:#fff;border:none;padding:0;display:block;width:100%}.gallery-tile.wide{aspect-ratio:4 / 3}.picker-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--stage-bg);z-index:20}.gallery-tile img{width:100%;height:100%;object-fit:cover;display:block;border-radius:inherit}.gallery-tile.add{background:var(--accent-blue);display:flex;align-items:center;justify-content:center;color:#fff;font-size:48px}.gallery-tile .delete-btn{position:absolute;top:6px;right:6px;width:32px;height:32px;border-radius:50%;background:var(--accent-red);color:#fff;display:none;align-items:center;justify-content:center;font-size:16px}.gallery-tile.armed .delete-btn{display:flex}.editor,.episode-editor{flex:1;display:flex;flex-direction:column;min-height:0}.editor-toolbar{display:flex;align-items:center;gap:8px;padding:8px 16px 8px 8px}.editor-toolbar .spacer{flex:1}.editor-canvas-wrap{--canvas-aspect: 1;--canvas-pad: 16px;--canvas-natural-height: calc((100vw - 2 * var(--canvas-pad)) / var(--canvas-aspect) + 2 * var(--canvas-pad));flex:1;min-height:min(calc(var(--vh100, 100vh) * .42),var(--canvas-natural-height));min-height:min(42dvh,var(--canvas-natural-height));max-height:var(--canvas-natural-height);display:flex;align-items:center;justify-content:center;padding:var(--canvas-pad)}.layers-panel{display:none;max-height:220px;overflow-y:auto;background:#fff;border-radius:16px;margin:0 16px;box-shadow:0 1px 4px #0000001f}.layers-panel.open{display:block}.layers-empty{padding:16px;text-align:center;color:var(--ink-faint)}.layer-row{display:flex;align-items:center;gap:10px;padding:8px 10px;cursor:pointer}.layer-row+.layer-row{border-top:1px solid #f0e9da}.layer-row.selected{background:#3d8bfd26}.layer-swatch{width:26px;height:26px;border-radius:8px;flex:none;border:1px solid rgba(0,0,0,.15);display:flex;align-items:center;justify-content:center}.layer-label{flex:1;text-transform:capitalize;font-size:14px;color:var(--ink);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.icon-btn.small{width:32px;height:32px;box-shadow:none;flex:none}.icon-btn.small:disabled{pointer-events:none}.editor-canvas-frame{background:#fff;border-radius:28px;border:4px solid var(--frame-border);overflow:hidden;flex:none;touch-action:none;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;position:relative}.add-puppet-cta{display:none;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:92px;height:92px;border-radius:50%;align-items:center;justify-content:center;background:var(--accent-blue);color:#fff;box-shadow:0 4px 16px #0000004d;animation:add-puppet-pulse 1.8s ease-in-out infinite}@keyframes add-puppet-pulse{0%,to{transform:translate(-50%,-50%) scale(1)}50%{transform:translate(-50%,-50%) scale(1.08)}}.editor-canvas-frame.editing-group{border-color:var(--accent-blue)}.editor-canvas-frame canvas{display:block;width:100%;height:100%}.variant-strip{display:flex;gap:10px;padding:0 16px;overflow-x:auto}.variant-thumb{width:56px;height:56px;border-radius:16px;overflow:hidden;flex:none;box-shadow:0 1px 4px #00000026;position:relative}.variant-thumb img{width:100%;height:100%;object-fit:cover}.variant-thumb.current{outline:3px solid var(--accent-blue);outline-offset:2px}.variant-thumb.add{background:var(--accent-blue);color:#fff;display:flex;align-items:center;justify-content:center}.variant-thumb .variant-delete-btn{position:absolute;top:2px;right:2px;width:22px;height:22px;border-radius:50%;background:#0000008c;color:#fff;display:flex;align-items:center;justify-content:center}.mode-toggle{display:flex;justify-content:center;gap:20px;padding:12px 0}.slider-row{display:flex;align-items:center;gap:12px;padding:4px 24px}.slider-row input[type=range]{flex:1;accent-color:var(--accent-blue);height:32px}.palette-columns{display:flex;flex-direction:row;gap:12px;justify-content:center}.palette-columns .palette-row{flex:0 1 auto;min-width:0}.palette-row{display:flex;flex-wrap:wrap;gap:12px;padding:8px 12px;justify-content:center;max-height:156px;overflow-y:auto}.palette-row.scrollable{mask-image:linear-gradient(to right,black calc(100% - 32px),transparent 100%);-webkit-mask-image:linear-gradient(to right,black calc(100% - 32px),transparent 100%)}.palette-row.scrollable-y{mask-image:linear-gradient(to bottom,black calc(100% - 24px),transparent 100%);-webkit-mask-image:linear-gradient(to bottom,black calc(100% - 24px),transparent 100%)}.shape-btn{width:64px;height:64px;border-radius:50%;background:#fff;box-shadow:0 1px 4px #00000026;flex:none;display:flex;align-items:center;justify-content:center}.shape-btn svg{width:62%;height:62%}.color-swatch{width:52px;height:52px;border-radius:50%;flex:none;border:1.5px solid rgba(0,0,0,.2);box-shadow:0 1px 3px #00000021}.color-swatch.selected{border:4px solid var(--accent-blue)}.shape-btn.selected{box-shadow:0 0 0 4px var(--accent-blue)}.variant-popup-thumb{border-radius:12px;overflow:hidden;box-shadow:0 1px 4px #00000026;flex:none;display:flex}.variant-popup-thumb canvas{display:block}.variant-popup-thumb.selected{box-shadow:0 0 0 4px var(--accent-blue)}.category-grid{display:grid;grid-template-columns:repeat(2,64px);gap:12px;justify-content:center}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000059;display:flex;align-items:center;justify-content:center;z-index:10}.modal-card{background:#fff;border-radius:28px;padding:24px;display:flex;gap:24px}.picker-popup-card{background:#fff;border-radius:28px;padding:20px;display:flex;flex-wrap:wrap;gap:14px;justify-content:center;max-width:360px;max-height:70vh;overflow-y:auto}.hidden-file-input{position:fixed;left:-9999px}.performance-controls{display:flex;justify-content:center;align-items:center;gap:28px;padding:16px 0}.big-btn{width:76px;height:76px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;box-shadow:0 2px 8px #00000040}.big-btn:disabled{background:#dcd4c4!important;box-shadow:none}.mic-error{display:none;text-align:center;padding:0 24px 16px;color:var(--accent-red);font-weight:600;font-size:14px}.mic-error.visible{display:block}.episode-scene-strip{display:flex;gap:14px;padding:12px 16px;overflow-x:auto;flex:none}.episode-scene-item{flex:none;width:140px;display:flex;flex-direction:column;gap:6px}.episode-scene-item .gallery-tile{width:140px}.episode-scene-controls{display:flex;justify-content:center;gap:6px}.episode-video-area{flex:1;min-height:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:16px}.episode-video{width:100%;max-width:640px;max-height:100%;border-radius:20px;background:#000;display:block}.episode-player{position:relative;width:100%;max-width:640px}.episode-video-toggle{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:72px;height:72px;border-radius:50%;background:#00000073;color:#fff;display:flex;align-items:center;justify-content:center}.episode-video-progress{width:100%;max-width:640px;height:14px;flex-shrink:0;border-radius:999px;background:var(--ink-faint);overflow:hidden;margin-top:8px;cursor:pointer}.episode-export-error{display:flex;align-items:center;gap:8px;color:var(--accent-red);font-weight:600}.episode-export-status{display:flex;align-items:center;gap:8px;color:var(--ink);font-weight:600;font-size:20px}.progress-track{width:100%;max-width:280px;height:14px;border-radius:999px;background:var(--ink-faint);overflow:hidden}.progress-fill{height:100%;background:var(--accent-green);border-radius:999px;transition:width .3s ease}.spin svg{animation:spin 1.1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media(orientation:landscape)and (min-width:560px){.editor{display:grid;grid-template-columns:1fr minmax(220px,320px);grid-template-rows:repeat(8,auto) 1fr;grid-template-areas:"canvas toolbar" "canvas layers" "canvas variants" "canvas modes" "canvas selection" "canvas palettes" "canvas controls" "canvas micerror" "canvas .";overflow-y:auto}.editor-toolbar{grid-area:toolbar;flex-wrap:wrap;justify-content:flex-start;gap:6px}.editor-toolbar .icon-btn{width:42px;height:42px;font-size:20px}.editor-toolbar .icon-btn.large{width:46px;height:46px;font-size:24px}.layers-panel{grid-area:layers;margin:0 8px;max-height:30vh}.editor-canvas-wrap{grid-area:canvas;height:100%;min-height:0;max-height:none;min-width:0}.variant-strip{grid-area:variants}.mode-toggle{grid-area:modes}#selection-controls{grid-area:selection}.palette-columns{grid-area:palettes}.performance-controls{grid-area:controls}.mic-error{grid-area:micerror}}
