*,:before,:after{box-sizing:border-box}:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;font-synthesis:none;text-rendering:geometricprecision;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}html,body,#root{min-height:100%;margin:0}body{-webkit-tap-highlight-color:transparent;overscroll-behavior-y:none;overflow:hidden}button,input{font:inherit}button{cursor:pointer}.app-shell{color:#f7f7f7;flex-direction:column;min-height:100vh;transition:background-color .5s,color .2s;display:flex;position:relative}.theme-light{color:#0a0a0a;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}.text-light{color:#fff}.text-dark{color:#000}.text-muted-dark{color:#a3a3a3}.text-muted-light{color:#666}.panel-dark{background:#0a0a0af0;border-color:#262626}.panel-light{background:#ffffffeb;border-color:#dcdcdc}.divider-dark{border-color:#262626}.divider-light{border-color:#dcdcdc}.input-dark{color:#fff;background:#000;border-color:#404040}.input-light{color:#000;background:#fff;border-color:#cfcfcf}.filter-defs{width:0;height:0;position:absolute;overflow:hidden}.topbar{z-index:20;border-bottom:1px solid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:16px;padding:16px;display:grid;position:relative}.topbar-left{align-items:center;gap:16px;min-width:0;display:flex}.upload-target{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);border:1px solid;border-radius:8px;align-items:center;gap:12px;min-width:250px;max-width:300px;padding:8px;transition:border-color .15s,background-color .15s;display:inline-flex;position:relative}.upload-target input{opacity:0;cursor:pointer;position:absolute;inset:0}.upload-icon{background:#80808024;border-radius:6px;flex:none;place-items:center;width:36px;height:36px;display:grid}.upload-copy{text-align:left;min-width:0;line-height:1.15;display:grid}.upload-copy span{font-size:14px;font-weight:700}.upload-copy small{color:currentColor;opacity:.58;text-overflow:ellipsis;white-space:nowrap;margin-top:3px;font-size:10px;overflow:hidden}.font-chips{flex-wrap:wrap;gap:8px;max-width:360px;display:flex}.font-chip{background:#80808014;border:1px solid #8080803d;border-radius:6px;align-items:center;gap:6px;max-width:160px;padding:4px 8px;font-size:10px;line-height:1;display:inline-flex}.font-chip span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.font-chip button{width:18px;height:18px;color:inherit;background:0 0;border:0;flex:none;place-items:center;padding:0;display:grid}.font-chip button:hover{color:#ef4444}.test-actions,.topbar-actions,.swatches{align-items:center;gap:8px;display:flex}.test-actions{border-left:1px solid #8080803d;padding-left:16px}.visual-panel{border:1px solid;border-radius:8px;align-items:center;gap:14px;padding:8px 12px;display:flex}.panel-divider{opacity:.14;background:currentColor;width:1px;height:24px}.icon-button{color:currentColor;opacity:.74;background:0 0;border:1px solid #0000;border-radius:6px;place-items:center;width:36px;height:36px;padding:0;transition:background-color .15s,border-color .15s,color .15s,opacity .15s;display:grid}.icon-button:hover,.icon-button:focus-visible{opacity:1;background:#80808024;border-color:#80808059;outline:none}.icon-button.is-active{opacity:1}.icon-button.success{color:#4ade80;background:#4ade801c}.icon-button.warning{color:#facc15;background:#facc151f}.icon-button.info{color:#22d3ee;background:#22d3ee1f}.icon-button.danger{color:#fb7185;background:#fb718521}.swatch{background:var(--swatch-color);opacity:.52;border:1px solid #8080808c;border-radius:999px;width:18px;height:18px;padding:0;transition:opacity .15s,box-shadow .15s,transform .15s}.swatch:hover,.swatch.is-selected{opacity:1;transform:translateY(-1px)}.swatch.is-selected{box-shadow:0 0 0 2px #ffffffc7}.compact-range{align-items:center;gap:8px;display:inline-flex}.compact-range input{accent-color:currentColor;width:96px}.stage{flex:1;min-height:0;padding:40px 40px 285px;overflow-y:auto}.custom-scrollbar::-webkit-scrollbar{width:8px}.custom-scrollbar::-webkit-scrollbar-track{background:0 0}.custom-scrollbar::-webkit-scrollbar-thumb{background:#80808059;border-radius:999px}.export-surface{flex-direction:column;align-items:center;gap:48px;min-height:100%;padding:40px;display:flex}.font-row{opacity:1;flex-direction:column;width:100%;transition:opacity .15s;display:flex}.font-row.is-dragging{opacity:.32}.font-label{cursor:grab;opacity:.5;align-self:flex-start;align-items:center;gap:8px;margin:0 0 16px 40px;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,monospace;font-size:12px;font-weight:700;transition:opacity .15s;display:inline-flex}.font-label:hover{opacity:1}.perspective-wrap{perspective:1200px;perspective-origin:50%;justify-content:center;width:100%;display:flex}.letter-grid{width:100%;transform-style:preserve-3d;flex-wrap:wrap;place-content:flex-start center;display:flex}.letter-card,.letter-placeholder{flex:none}.letter-card{color:inherit;transform-style:preserve-3d;background:0 0;border:0;padding:0;transition:transform .5s;position:relative}.letter-card:focus-visible{outline-offset:4px;outline:1px solid #8080808c}.letter-inner{width:100%;height:100%;transform-style:preserve-3d;transition:transform .5s;display:block;position:relative}.letter-inner.is-flipped{transform:rotateY(180deg)}.letter-face{backface-visibility:hidden;border-radius:8px;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.letter-glow{z-index:1}.letter-front{z-index:2}.letter-back{z-index:0;transform:rotateY(180deg)}.clip-content{overflow:hidden}.letter-glyph{z-index:1;-webkit-user-select:none;user-select:none;display:block;position:relative}.flip-dot{opacity:0;background:#404040;border-radius:999px;width:8px;height:8px;transition:opacity .15s;position:absolute;top:8px;right:8px}.flip-dot.light{background:#9ca3af}.letter-card:hover .flip-dot{opacity:.5}.scanlines{z-index:2;pointer-events:none;opacity:.5;background:linear-gradient(#fff0,#fff0 50%,#0000004d 50%,#0000004d) 0 0/100% 4px;border-radius:8px;position:absolute;inset:0}.empty-state{opacity:.65;place-items:center;gap:16px;width:100%;margin-top:80px;display:grid}.export-spacer{flex:none;width:100%;height:120vh}.control-dock{z-index:30;-webkit-backdrop-filter:blur(24px);backdrop-filter:blur(24px);border-top:1px solid;padding:16px;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -24px 60px #00000057}.dock-inner{grid-template-columns:minmax(200px,260px) minmax(0,1fr);align-items:start;gap:24px;max-width:1280px;margin:0 auto;display:grid}.input-control{gap:8px;display:grid}.input-control input{border:1px solid;border-radius:6px;outline:none;width:100%;padding:9px 12px;font-size:16px}.input-control input:focus{box-shadow:0 0 0 1px}.slider-grid{grid-template-columns:repeat(5,minmax(120px,1fr));gap:16px 24px;display:grid}.slider-column,.range-control{gap:8px;display:grid}.range-control input[type=range]{cursor:pointer;width:100%;height:16px}.range-row{letter-spacing:.05em;text-transform:uppercase;justify-content:space-between;align-items:center;gap:8px;font-size:10px;font-weight:800;display:flex}.range-value{color:#737373;text-transform:none;font-weight:700}.check-toggle{color:currentColor;letter-spacing:.05em;text-transform:uppercase;background:0 0;border:0;align-items:center;gap:5px;padding:0;font-size:8px;font-weight:800;display:inline-flex}.check-toggle span{border:1px solid #737373;border-radius:3px;width:12px;height:12px}.check-toggle.is-checked span{background:#22c55e;border-color:#22c55e}.animation-note{opacity:.58;justify-content:space-between;align-items:center;gap:8px;padding-top:4px;font-size:9px;display:flex}.spin{animation:1s linear infinite spin}.pulse{animation:1s ease-in-out infinite pulse}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.45}}@keyframes roll-up-enter{0%{opacity:0;transform:translateY(80%)}50%{opacity:1}to{opacity:1;transform:translateY(0)}}.animate-roll-digit{animation-name:roll-up-enter;animation-timing-function:cubic-bezier(.1,.7,.1,1);animation-fill-mode:forwards}@keyframes cockpit-shake{0%{transform:translate(0)rotate(0)}10%{transform:translate(-1px,-1px)rotate(-.5deg)}20%{transform:translate(1px,1px)rotate(.5deg)}30%{transform:translate(-2px,1px)rotate(0)}40%{transform:translate(2px,-1px)rotate(-.5deg)}50%{transform:translate(-1px,2px)rotate(.5deg)}60%{transform:translate(1px,-2px)rotate(0)}70%{transform:translate(-2px)rotate(-.5deg)}80%{transform:translate(2px)rotate(.5deg)}90%{transform:translate(-1px,-1px)rotate(0)}to{transform:translate(0)rotate(0)}}.animate-cockpit-shake{will-change:transform;animation:.4s linear infinite cockpit-shake}@media (width<=1180px){.topbar{grid-template-columns:1fr}.topbar-left,.visual-panel,.topbar-actions{width:100%}.visual-panel,.topbar-actions{justify-content:center}.dock-inner{grid-template-columns:1fr}.slider-grid{grid-template-columns:repeat(5,minmax(0,1fr))}}@media (width<=820px){body{overflow:auto}.app-shell{min-height:100dvh}.topbar{padding:12px}.topbar-left{flex-direction:column;align-items:stretch}.upload-target,.font-chips{width:100%;max-width:none}.test-actions{border-top:1px solid #80808038;border-left:0;justify-content:center;padding:10px 0 0}.visual-panel{flex-wrap:wrap}.panel-divider{display:none}.stage{flex:none;min-height:430px;padding:24px 14px;overflow:visible}.export-surface{gap:36px;min-height:420px;padding:20px 4px}.export-spacer{height:32px}.font-label{margin-left:8px}.control-dock{box-shadow:none;padding:12px;position:static}.slider-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=520px){.visual-panel{gap:10px}.compact-range{justify-content:center;width:100%}.compact-range input{width:min(220px,70vw)}.slider-grid{grid-template-columns:1fr}.stage{padding-bottom:24px}}
