.vn-overlay{position:absolute;inset:0;display:flex;align-items:flex-end;pointer-events:none;z-index:10}.vn-overlay>*{pointer-events:auto}.vn-dialog{position:relative;padding:1.56cqw 1.875cqw 1.72cqw;width:100%;height:30%;box-sizing:border-box;overflow:visible;background:#080812e6;border-top:2px solid rgba(180,160,255,.35);box-shadow:0 -6px 32px #0009;cursor:pointer;-webkit-user-select:none;user-select:none}.vn-dialog__speaker{position:absolute;bottom:100%;left:1.56cqw;font-weight:700;color:#fff;background:#080812e6;border:2px solid rgba(180,160,255,.35);border-bottom:none;padding:.3cqw 1.4cqw;border-radius:.3cqw .3cqw 0 0;font-size:1cqw;letter-spacing:.04em}.vn-dialog__text{color:#e8e8f0;font-size:1.1cqw;line-height:1.75}.vn-choice{position:relative;padding:1.56cqw 1.875cqw 1.72cqw;width:100%;height:30%;box-sizing:border-box;overflow:visible;background:#080812e6;border-top:2px solid rgba(180,160,255,.35);box-shadow:0 -6px 32px #0009}.vn-choice__prompt{color:#e8e8f0;font-size:1.1cqw;margin-bottom:.94cqw;text-align:center;line-height:1.75}.vn-choice__options{display:flex;flex-direction:column;gap:.47cqw}.vn-choice__btn{padding:.7cqw 1.25cqw;background:#b4a0ff14;border:1px solid rgba(180,160,255,.3);border-radius:.25cqw;color:#e8e8f0;font-size:1cqw;cursor:pointer;transition:background .15s,border-color .15s;font-family:inherit;text-align:left}.vn-choice__btn:hover{background:#b4a0ff33;border-color:#b4a0ff8c}.vn-ended{text-align:center;color:#888;padding:20px}.vn-ended p{margin-bottom:12px}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}:root{--bg: #0d0d12;--surface: #16161f;--surface-hover: #1e1e2a;--border: rgba(232,226,217,.12);--border-strong: rgba(232,226,217,.22);--text: #e8e2d9;--text-muted: #8888a0;--primary: #6c5ce7;--primary-hover: #7d6ff0;--danger: #e74c3c;--danger-hover: #ff6b5a;--success: #27ae60;--radius: 2px;--font: system-ui, -apple-system, sans-serif;--font-mono: ui-monospace, "Cascadia Code", "Fira Code", monospace;--shadow: 3px 3px 0 rgba(108,92,231,.35);--shadow-hover: 4px 4px 0 rgba(108,92,231,.5)}body{font-family:var(--font);background:var(--bg);background-image:radial-gradient(circle,rgba(255,255,255,.04) 1px,transparent 1px);background-size:22px 22px;color:var(--text);min-height:100vh}a{color:var(--primary);text-decoration:none}a:hover{color:var(--primary-hover)}.btn{display:inline-flex;align-items:center;gap:6px;padding:8px 16px;border-radius:var(--radius);border:1px solid var(--border-strong);background:var(--surface);color:var(--text);font-size:13px;font-family:var(--font-mono);letter-spacing:.03em;cursor:pointer;transition:box-shadow .12s,transform .12s,background .15s;box-shadow:var(--shadow)}.btn:hover{box-shadow:var(--shadow-hover)}.btn:active{box-shadow:1px 1px #6c5ce74d;transform:translate(1px,1px)}.btn--primary{background:var(--primary);border-color:var(--primary);color:#fff}.btn--primary:hover{background:var(--primary-hover);color:#fff}.btn--danger{background:var(--danger);border-color:var(--danger);color:#fff}.btn--danger:hover{background:var(--danger-hover)}.btn--secondary{background:transparent;box-shadow:none}.btn--secondary:hover{box-shadow:none;background:var(--surface-hover)}.btn:disabled{opacity:.4;cursor:not-allowed;transform:none;box-shadow:2px 2px #6c5ce733}.btn--sm{padding:4px 10px;font-size:11px}.link-btn{background:none;border:none;color:var(--primary);cursor:pointer;text-decoration:underline;font:inherit;font-family:var(--font-mono);font-size:12px}.input{padding:8px 0;border-radius:0;border:none;border-bottom:1px solid var(--border-strong);background:transparent;color:var(--text);font-size:14px;width:100%;transition:border-color .15s}.input:focus{outline:none;border-bottom-color:var(--primary)}select.input{cursor:pointer;padding:8px 4px}.error{color:var(--danger);font-family:var(--font-mono);font-size:12px}.login-screen{min-height:100vh;display:flex;align-items:center;justify-content:center;background-color:#0d0d12;background-image:radial-gradient(circle,rgba(255,255,255,.055) 1px,transparent 1px);background-size:22px 22px}.login-card{background:#16161f;border:1px solid rgba(232,226,217,.18);width:100%;max-width:380px;padding:44px 40px 40px;box-shadow:5px 5px #6c5ce766;display:flex;flex-direction:column;gap:32px;transform:rotate(-.6deg);animation:sketchIn .3s ease both}@keyframes sketchIn{0%{opacity:0;transform:rotate(-.6deg) translateY(12px)}to{opacity:1;transform:rotate(-.6deg) translateY(0)}}.login-tag{font-family:ui-monospace,monospace;font-size:12px;color:var(--text-muted);margin-bottom:-20px}.login-title{font-size:52px;font-weight:900;color:#e8e2d9;line-height:1;letter-spacing:-.02em;border-bottom:2px solid rgba(232,226,217,.25);padding-bottom:10px}.login-field{display:flex;flex-direction:column;gap:4px}.login-field label{font-family:ui-monospace,monospace;font-size:11px;color:var(--text-muted);letter-spacing:.05em}.login-input{background:transparent;border:none;border-bottom:1px solid rgba(232,226,217,.2);color:#e8e2d9;font-size:18px;font-family:inherit;padding:8px 0;width:100%;transition:border-color .15s}.login-input:focus{outline:none;border-bottom-color:var(--primary)}.login-error{font-family:ui-monospace,monospace;font-size:12px;color:var(--danger);margin-top:-16px}.login-btn{background:#e8e2d9;color:#0d0d12;border:1px solid #e8e2d9;font-family:ui-monospace,monospace;font-size:14px;font-weight:700;letter-spacing:.08em;padding:14px 0;width:100%;cursor:pointer;box-shadow:3px 3px #6c5ce780;transition:box-shadow .1s,transform .1s;margin-top:4px}.login-btn:hover{box-shadow:4px 4px #6c5ce799}.login-btn:active{box-shadow:1px 1px #6c5ce766;transform:translate(2px,2px)}.login-btn:disabled{opacity:.4;cursor:not-allowed;transform:none;box-shadow:3px 3px #6c5ce74d}.project-select-screen{min-height:100vh;display:flex;align-items:center;justify-content:center;background-color:#0d0d12;background-image:radial-gradient(circle,rgba(255,255,255,.055) 1px,transparent 1px);background-size:22px 22px}.project-select-card{background:#16161f;border:1px solid rgba(232,226,217,.18);width:100%;max-width:380px;padding:44px 40px 40px;box-shadow:5px 5px #6c5ce766;display:flex;flex-direction:column;gap:28px;transform:rotate(-.6deg);animation:sketchIn .3s ease both}.project-select-tag{font-family:ui-monospace,monospace;font-size:12px;color:var(--text-muted);margin-bottom:-16px}.project-select-title{font-size:52px;font-weight:900;color:#e8e2d9;line-height:1;letter-spacing:-.02em;border-bottom:2px solid rgba(232,226,217,.25);padding-bottom:10px}.project-list{display:flex;flex-direction:column;gap:8px}.project-item{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;background:transparent;border:none;border-bottom:1px solid rgba(232,226,217,.2);cursor:pointer;transition:border-color .15s;font-family:inherit;color:inherit;width:100%;text-align:left}.project-item:hover{border-bottom-color:var(--primary)}.project-item__name{font-size:16px;font-weight:500;color:#e8e2d9}.project-item__meta{font-family:ui-monospace,monospace;font-size:11px;color:var(--text-muted);letter-spacing:.05em}.project-select-footer{font-family:ui-monospace,monospace;font-size:11px;color:var(--text-muted);display:flex;align-items:center;justify-content:space-between}.project-select-footer strong{color:#e8e2d9}.project-select-footer .link-btn{font-family:ui-monospace,monospace;font-size:11px}.layout{min-height:100vh;display:flex;flex-direction:row}.sidebar{width:220px;flex-shrink:0;background:var(--surface);border-right:1px solid var(--border-strong);display:flex;flex-direction:column;min-height:100vh;position:sticky;top:0;height:100vh;overflow-y:auto}.sidebar__header{display:flex;align-items:center;justify-content:space-between;padding:18px 16px 12px;border-bottom:1px solid var(--border)}.sidebar__logo{font-family:var(--font-mono);font-size:14px;font-weight:700;color:var(--text);letter-spacing:.04em}.sidebar__close{display:none;background:none;border:none;color:var(--text-muted);font-size:16px;cursor:pointer;padding:4px}.sidebar__nav{display:flex;flex-direction:column;padding:12px 8px;gap:2px}.sidebar__link{display:flex;align-items:center;gap:8px;padding:10px 12px;border-radius:var(--radius);color:var(--text-muted);font-family:var(--font-mono);font-size:13px;letter-spacing:.02em;transition:background .15s,color .15s}.sidebar__link:hover{background:var(--surface-hover);color:var(--text)}.sidebar__divider{height:1px;background:var(--border);margin:6px 8px}.sidebar__footer{margin-top:auto;padding:12px 8px;border-top:1px solid var(--border)}.sidebar__user{padding:8px 12px;border-top:1px solid var(--border);font-family:var(--font-mono);font-size:11px;color:var(--text-muted)}.sidebar__username{display:block;font-weight:600;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.blur-toggle{display:flex;align-items:center;gap:8px;padding:10px 12px;font-family:var(--font-mono);font-size:12px;color:var(--text-muted);cursor:pointer;border-radius:var(--radius);transition:background .15s;width:100%;background:none;border:none;text-align:left}.blur-toggle:hover{background:var(--surface-hover);color:var(--text)}.blur-toggle--active{color:var(--primary)}.sidebar__overlay{display:none;position:fixed;inset:0;background:#00000080;z-index:99}.sidebar__overlay--visible{display:block}.layout__body{flex:1;display:flex;flex-direction:column;min-width:0}.header{display:none;align-items:center;gap:16px;padding:12px 16px;background:var(--surface);border-bottom:1px solid var(--border)}.header__menu-btn{background:none;border:none;color:var(--text);font-size:22px;cursor:pointer;line-height:1;padding:0}.header__logo{font-family:var(--font-mono);font-size:14px;font-weight:700;color:var(--text)}.page-toolbar{display:flex;align-items:center;gap:12px;padding:10px 24px;background:var(--surface);border-bottom:1px solid var(--border)}.page-toolbar__title{font-size:16px;font-weight:800;color:var(--text);letter-spacing:-.01em;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.main{flex:1;padding:24px;width:100%}@media(max-width:768px){.layout{flex-direction:column}.sidebar{position:fixed;top:0;left:-100%;height:100%;min-height:100%;z-index:100;transition:left .25s ease;width:240px}.sidebar--open{left:0}.sidebar__close{display:block}.header{display:flex}.main{padding:16px}.page-toolbar{padding:10px 16px}}.home h1{font-size:28px;font-weight:900;letter-spacing:-.02em;margin-bottom:24px}.home__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:16px}.spine-list__header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.spine-list__header h1{font-size:28px;font-weight:900;letter-spacing:-.02em}.spine-list__search{margin-bottom:20px;max-width:400px}.spine-list__empty{color:var(--text-muted);font-family:var(--font-mono);font-size:13px;padding:40px 0;text-align:center}.spine-list__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:16px}.spine-card{display:block;position:relative;background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius);overflow:hidden;transition:box-shadow .15s,transform .15s;color:var(--text);box-shadow:var(--shadow)}.spine-card-wrap{position:relative;transition:transform .15s}.spine-card-wrap:hover{transform:translateY(-2px)}.spine-card__scene-btn{position:absolute;bottom:-18px;right:14px;z-index:2;width:56px;height:56px;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,transparent 8px,#fef3a7 8px,#fde86a 100%);color:#6b5c10;border:none;padding:4px 0 0;font-size:14px;font-weight:700;font-family:Comic Sans MS,Comic Neue,cursive;letter-spacing:0;cursor:pointer;box-shadow:1px 3px 6px #0000002e;transition:transform .15s,box-shadow .15s}.spine-card__scene-btn:before{content:"";position:absolute;top:-4px;left:50%;transform:translate(-50%);width:36px;height:12px;background:#c8c8c873;border-radius:1px;box-shadow:0 1px 1px #0000000f}.spine-card__scene-btn:hover{transform:translateY(2px);box-shadow:1px 1px 4px #00000024}.spine-card:hover{box-shadow:var(--shadow-hover)}.spine-card__preview{height:140px;display:flex;align-items:center;justify-content:center;background:var(--bg);font-size:40px;color:var(--text-muted);position:relative;overflow:hidden}.spine-card__preview .spine-preview{position:absolute;inset:0}.spine-card__preview .spine-preview__canvas-wrap{aspect-ratio:unset;height:100%}.spine-card__info{padding:12px}.spine-card__name{font-size:14px;font-weight:600;margin-bottom:4px}.spine-card__meta{font-family:var(--font-mono);font-size:11px;color:var(--text-muted);letter-spacing:.03em}.spine-upload{max-width:600px}.spine-upload h1{margin-bottom:24px;font-size:28px;font-weight:900;letter-spacing:-.02em}.upload-form{display:flex;flex-direction:column;gap:20px}.form-group{display:flex;flex-direction:column;gap:6px}.form-group label{font-family:var(--font-mono);font-size:11px;font-weight:500;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted)}.form-actions{display:flex;gap:12px;justify-content:flex-end}.drop-zone{border:2px dashed var(--border-strong);border-radius:var(--radius);padding:24px;text-align:center;cursor:pointer;transition:border-color .15s,background .15s}.drop-zone:hover,.drop-zone--active{border-color:var(--primary);background:#6c5ce70d}.drop-zone__text{color:var(--text-muted);font-family:var(--font-mono);font-size:13px}.drop-zone__file{display:none;font-family:var(--font-mono);font-size:12px;margin-top:8px;color:var(--primary);word-break:break-all}.spine-detail__header{display:flex;align-items:center;gap:16px;margin-bottom:24px}.spine-detail__title{font-size:28px;font-weight:900;letter-spacing:-.02em;flex:1}.spine-detail__actions{display:flex;gap:8px}.spine-detail__body{display:grid;grid-template-columns:1fr 380px;gap:24px}@media(max-width:768px){.spine-detail__body{grid-template-columns:1fr}}.spine-detail__info{display:flex;flex-direction:column;min-height:0;overflow:hidden}.spine-detail__info dl{display:grid;grid-template-columns:auto 1fr;gap:8px 16px;font-size:14px}.spine-detail__info dt{color:var(--text-muted);font-family:var(--font-mono);font-size:11px;font-weight:500;text-transform:uppercase;letter-spacing:.05em}.spine-detail__info dd{word-break:break-word}.spine-preview{display:flex;flex-direction:column}.spine-preview__canvas-wrap{background:var(--bg);border:1px solid var(--border-strong);border-radius:var(--radius);overflow:hidden;position:relative;aspect-ratio:16 / 9}.spine-preview__canvas-wrap canvas{width:100%;height:100%;display:block}.spine-preview__error{padding:40px;text-align:center;color:var(--text-muted);font-family:var(--font-mono);font-size:12px}.spine-detail__section{margin-top:20px}.spine-detail__section h2{font-family:var(--font-mono);font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;margin-bottom:8px;color:var(--text-muted)}.spine-detail__anim-list{display:flex;flex-wrap:wrap;gap:6px}.spine-detail__anim-btn{padding:4px 10px;font-family:var(--font-mono);font-size:11px;border-radius:var(--radius);border:1px solid var(--border-strong);background:var(--surface);color:var(--text);cursor:pointer;transition:background .15s,border-color .15s}.spine-detail__anim-btn:hover{background:var(--surface-hover)}.spine-detail__anim-btn--active{background:var(--primary);border-color:var(--primary);color:#fff}.spine-detail__anim-track{font-size:10px;opacity:.7}.spine-detail__skin-list{display:flex;flex-direction:column;gap:4px}.spine-detail__skin-toggle{display:flex;align-items:center;gap:6px;font-family:var(--font-mono);font-size:12px;cursor:pointer;padding:3px 0}.assets-page{display:flex;flex-direction:column;height:100%}.assets-page__header{margin-bottom:0}.assets-page__header h1{font-size:28px;font-weight:900;letter-spacing:-.02em}.assets-tabs{display:flex;gap:2px;border-bottom:1px solid var(--border-strong);margin-bottom:24px;margin-top:16px;flex-shrink:0}.assets-tab{padding:8px 18px;font-family:var(--font-mono);font-size:12px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;border:none;background:none;color:var(--text-muted);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;transition:color .15s,border-color .15s}.assets-tab:hover{color:var(--text)}.assets-tab--active{color:var(--primary);border-bottom-color:var(--primary)}.assets-tab-body{flex:1;min-height:0;overflow-y:auto}.asset-list{display:flex;flex-direction:column}.asset-list__toolbar{display:flex;align-items:center;gap:12px;margin-bottom:20px}.asset-list__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:16px}.asset-list__empty{color:var(--text-muted);font-family:var(--font-mono);font-size:13px;padding:40px 0;text-align:center}.asset-card{background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow);transition:box-shadow .15s,transform .15s}.asset-card:hover{box-shadow:var(--shadow-hover);transform:translateY(-2px)}.asset-card__preview{height:130px;background:var(--bg);display:flex;align-items:center;justify-content:center;overflow:hidden}.asset-card__preview img{width:100%;height:100%;object-fit:cover}.asset-card__preview audio{width:calc(100% - 16px)}.asset-card__preview-icon{font-size:40px;color:var(--text-muted)}.asset-card__info{padding:10px 12px;display:flex;align-items:center;gap:8px}.asset-card__name{font-size:13px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0}.asset-card__name-input{font-size:13px;font-weight:600;flex:1;min-width:0;background:none;border:1px solid transparent;border-radius:4px;color:inherit;padding:2px 4px;margin:-2px -4px;outline:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:text}.asset-card__name-input:hover{border-color:var(--border)}.asset-card__name-input:focus{border-color:var(--accent);background:var(--surface)}.asset-card__delete{flex-shrink:0;background:none;border:none;color:var(--text-muted);cursor:pointer;padding:2px 4px;border-radius:4px;font-size:14px;line-height:1;transition:color .15s,background .15s}.asset-card__delete:hover{color:var(--danger, #e53e3e);background:var(--surface-hover, rgba(0,0,0,.05))}.toast-container{position:fixed;bottom:20px;right:20px;z-index:9999;display:flex;flex-direction:column;gap:8px}.toast{padding:12px 20px;border-radius:var(--radius);font-family:var(--font-mono);font-size:13px;color:#fff;opacity:0;transform:translate(40px);transition:opacity .3s,transform .3s;box-shadow:var(--shadow)}.toast--visible{opacity:1;transform:translate(0)}.toast--success{background:var(--success)}.toast--error{background:var(--danger)}.toast--info{background:var(--primary)}.blur-mode canvas{image-rendering:pixelated;filter:hue-rotate(180deg) saturate(2)}.blur-mode .spine-card__preview{filter:blur(40px) brightness(.4) hue-rotate(180deg) saturate(.3)}.confirm-overlay{position:fixed;inset:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:9999}.confirm-box{background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius);padding:28px;max-width:380px;width:90%;text-align:center;box-shadow:5px 5px #6c5ce766}.confirm-box p{margin-bottom:20px;font-size:15px;line-height:1.5}.confirm-box__actions{display:flex;gap:10px;justify-content:center}.asset-picker{background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius);max-width:700px;width:90%;max-height:80vh;display:flex;flex-direction:column;box-shadow:5px 5px #6c5ce766}.asset-picker__header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--border-strong)}.asset-picker__title{font-size:15px;font-weight:700}.asset-picker__body{padding:16px 20px;overflow-y:auto;flex:1;min-height:0}.asset-picker__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:12px}.asset-picker__item{background:var(--surface);border:2px solid var(--border-strong);border-radius:var(--radius);overflow:hidden;cursor:pointer;transition:border-color .15s,box-shadow .15s,transform .15s}.asset-picker__item:hover{border-color:var(--primary);box-shadow:var(--shadow-hover);transform:translateY(-2px)}.asset-picker__meta{font-size:10px;color:var(--text-muted);flex-shrink:0}.expressions-section{margin-top:24px}.expressions-section h2{font-family:var(--font-mono);font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-bottom:12px}.expr-table{width:100%;border-collapse:collapse;font-size:14px;margin-bottom:20px}.expr-table th{text-align:left;padding:8px 10px;border-bottom:1px solid var(--border-strong);color:var(--text-muted);font-family:var(--font-mono);font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.06em}.expr-table td{padding:8px 10px;border-bottom:1px solid var(--border)}.expr-table tr:hover td{background:var(--surface-hover)}.expr-table__actions{display:flex;gap:6px}.expr-add-form{background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius);padding:16px;box-shadow:var(--shadow)}.expr-add-form h3{font-family:var(--font-mono);font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;margin-bottom:12px}.expr-add-form__fields{display:flex;gap:8px;flex-wrap:wrap;align-items:flex-end}.expr-add-form__fields .input{flex:1;min-width:120px}.expr-add-form__fields .btn{flex-shrink:0}.outfits-section{margin-top:24px}.outfits-section h2{font-family:var(--font-mono);font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-bottom:12px}.outfit-add-form__fields{display:flex;flex-direction:column;gap:10px}.outfit-add-form__fields .input{max-width:300px}.outfit-skin-checkboxes{display:flex;flex-wrap:wrap;gap:8px}.outfit-skin-checkbox{display:flex;align-items:center;gap:4px;font-family:var(--font-mono);font-size:12px;cursor:pointer;padding:4px 8px;border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--surface);transition:border-color .15s}.outfit-skin-checkbox:hover{border-color:var(--primary)}.outfit-skin-checkbox input[type=checkbox]{cursor:pointer}.outfit-skin-group{width:100%;font-family:var(--font-mono);font-size:11px;color:var(--text-muted);margin-top:4px}.edit-tabs{display:flex;border-bottom:1px solid var(--border);margin-bottom:12px;gap:0;flex-shrink:0}.edit-tab{flex:1;padding:8px 4px;font-family:var(--font-mono);font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;background:none;border:none;border-bottom:2px solid transparent;color:var(--text-muted);cursor:pointer;transition:color .15s,border-color .15s;text-align:center}.edit-tab:hover{color:var(--text)}.edit-tab--active{color:var(--primary);border-bottom-color:var(--primary)}.edit-tab-content{flex:1;overflow-y:auto;min-height:0}.outfit-edit-inline{padding:12px;display:flex;flex-direction:column;gap:10px;border:1px solid var(--border-strong);border-radius:var(--radius);margin:4px 0;background:var(--surface)}.outfit-edit-inline__actions{display:flex;gap:8px;justify-content:flex-end}.spine-tabs{display:flex;align-items:center;gap:4px;margin-bottom:12px;flex-wrap:wrap}.spine-tab{display:flex;align-items:center;border:1px solid var(--border-strong);border-radius:var(--radius);overflow:hidden}.spine-tab--active{border-color:var(--primary)}.spine-tab__btn{padding:6px 12px;font-family:var(--font-mono);font-size:12px;font-weight:500;background:var(--surface);border:none;color:var(--text);cursor:pointer;transition:background .15s}.spine-tab__btn:hover{background:var(--surface-hover)}.spine-tab--active .spine-tab__btn{background:var(--primary);color:#fff}.spine-tab__remove{padding:4px 6px;border-radius:0;border:none;border-left:1px solid var(--border);background:transparent;color:var(--text-muted);font-size:11px;line-height:1;cursor:pointer;transition:color .15s}.spine-tab__remove:hover{color:var(--danger)}.spine-tab--add{border-style:dashed}.spine-add-select{padding:5px 8px;font-family:var(--font-mono);font-size:12px;color:var(--text-muted);border:none;background:transparent;cursor:pointer}.spine-add-select:focus{outline:none}.scene-editor__meta{max-width:600px;margin-bottom:20px}.step-card{border:1px solid var(--border);border-radius:var(--radius);margin-bottom:8px;background:var(--surface);transition:box-shadow .15s}.step-card[draggable=true]{cursor:grab}.step-card--dragging{opacity:.5}.step-card:hover{box-shadow:0 0 0 1px var(--border)}.step-card__header{display:flex;align-items:center;gap:8px;padding:8px 12px;background:#ffffff05;border-bottom:1px solid var(--border)}.step-card__type{font-family:var(--font-mono);font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted)}.step-card__actions{margin-left:auto;display:flex;gap:4px}.step-card__body{padding:10px 12px}.step-fields{display:flex;flex-direction:column;gap:6px}.step-fields textarea{resize:vertical;min-height:40px}.choice-option .step-card{margin-bottom:6px}.choice-option .step-card__header{padding:6px 10px}.step-card--active{outline:2px solid var(--primary);outline-offset:-1px;box-shadow:0 0 12px #6c5ce74d}html:has(.scene-editor),html:has(.scene-editor) body{height:100dvh;overflow:hidden;min-height:unset}.layout:has(.scene-editor){height:100dvh;min-height:unset;overflow:hidden}.layout:has(.scene-editor) .layout__body{height:100%;overflow:hidden}.layout:has(.scene-editor) .main{padding:0;overflow:hidden;display:flex;flex-direction:column}html:has(.loc-detail),html:has(.loc-detail) body{height:100dvh;overflow:hidden;min-height:unset}.layout:has(.loc-detail){height:100dvh;min-height:unset;overflow:hidden}.layout:has(.loc-detail) .layout__body{height:100%;overflow:hidden}.layout:has(.loc-detail) .main{padding:0;overflow:hidden;display:flex;flex-direction:column}.loc-detail{flex:1;min-height:0;display:flex;flex-direction:column}html:has(.ng-root),html:has(.ng-root) body{height:100dvh;overflow:hidden;min-height:unset}.layout:has(.ng-root){height:100dvh;min-height:unset;overflow:hidden}.layout:has(.ng-root) .layout__body{height:100%;overflow:hidden}.layout:has(.ng-root) .main{padding:0;overflow:hidden;display:flex;flex-direction:column}.scene-editor{display:flex;flex-direction:column;flex:1;min-height:0;height:100%}.scene-editor__content{display:flex;flex:1;min-height:0}.scene-editor__preview{flex:3;min-width:0;display:flex;flex-direction:column}.scene-editor__inspector{flex:2;min-width:0;max-width:400px;display:flex;flex-direction:column;border-left:1px solid var(--border);overflow:hidden}.inspector__empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--text-muted);font-family:var(--font-mono);font-size:12px;gap:8px;padding:32px 20px}.inspector__header{display:flex;align-items:center;gap:10px;padding:10px 14px;border-bottom:1px solid var(--border);background:var(--surface);flex-shrink:0;min-height:44px}.inspector__type{display:inline-flex;align-items:center;height:20px;padding:0 9px;border-radius:var(--radius);font-family:var(--font-mono);font-size:9px;font-weight:700;color:#fff;text-transform:uppercase;letter-spacing:.08em;flex-shrink:0}.inspector__counter{font-family:var(--font-mono);font-size:10px;font-weight:500;color:var(--text-muted);font-variant-numeric:tabular-nums;margin-left:auto}.inspector__body{padding:0;flex:1;min-height:0;overflow-y:auto}.scene-editor__inspector .step-fields{display:flex!important;flex-direction:column!important;gap:8px!important;padding:14px}.scene-editor__inspector .step-input,.scene-editor__inspector .cond-input{width:100%!important;min-width:0!important;box-sizing:border-box}.scene-editor__inspector .choice-option{display:flex!important;align-items:center!important;gap:6px!important;padding:5px 8px!important;margin:0!important;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius)}.scene-editor__inspector .choice-option span[style]{min-width:18px;font-size:11px;font-weight:600;color:var(--text-muted);text-align:center;flex-shrink:0}.scene-editor__inspector .choice-opt-text{flex:1!important;min-width:0!important;width:auto!important}.scene-editor__inspector .condition-editor{display:flex!important;flex-direction:column!important;gap:6px!important;flex-wrap:nowrap!important}.scene-editor__inspector .step-fields>div[style*="padding:8px"]{border-radius:var(--radius)!important;padding:10px 12px!important;background:var(--bg)!important}.scene-editor__inspector .step-fields>div>p[style*="font-size:12px"]{font-size:10px!important;font-weight:600!important;text-transform:uppercase!important;letter-spacing:.5px!important;color:var(--text-muted)!important;margin-bottom:6px!important}.step-field{display:flex;flex-direction:row;align-items:center;gap:8px}.step-field--column{flex-direction:column;align-items:stretch;gap:4px}.step-field--column .step-field-label{width:auto}.step-field-label{font-family:var(--font-mono);font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);width:76px;flex-shrink:0}.step-field .step-input{flex:1!important;width:auto!important;min-width:0!important}.step-transform-badge{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;background:color-mix(in srgb,var(--primary) 12%,transparent);border:1px solid color-mix(in srgb,var(--primary) 30%,transparent);color:var(--primary);border-radius:var(--radius);font-family:var(--font-mono);font-size:10px;font-weight:600}.step-transform-reset{background:none;border:none;cursor:pointer;color:var(--text-muted);padding:0;line-height:1;font-size:13px}.step-transform-reset:hover{color:var(--danger)}.inspector__section{padding:12px 14px;border-top:1px solid var(--border);background:var(--surface)}.inspector__section-label{font-family:var(--font-mono);font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-bottom:8px}.inspector__actions{display:flex;align-items:center;gap:6px;padding:8px 14px;border-top:1px solid var(--border);background:var(--surface);flex-shrink:0}.inspector__actions-right{margin-left:auto;display:flex;gap:4px}.scene-editor__timeline{flex-shrink:0;border-top:1px solid var(--border);background:var(--surface);padding-bottom:env(safe-area-inset-bottom);position:relative;z-index:30}.timeline__wrap{position:relative;overflow-x:auto;overflow-y:hidden;scrollbar-width:thin;user-select:none;-webkit-user-select:none}.timeline__wrap::-webkit-scrollbar{height:4px}.timeline__wrap::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px}.timeline__scrub{height:16px;cursor:pointer;background:#ffffff08;border-bottom:1px solid var(--border);background-image:repeating-linear-gradient(to right,rgba(255,255,255,.08) 0px,rgba(255,255,255,.08) 1px,transparent 1px,transparent 60px)}.timeline__segments{display:flex;gap:8px;min-height:48px;align-items:center;position:relative;cursor:grab}.timeline__block{display:flex;height:48px;border-radius:4px;overflow:hidden;box-shadow:0 0 0 1px #ffffff0f}.timeline__segment{width:60px;min-width:60px;flex-shrink:0;height:100%;background:var(--step-color, #888);border:none;border-right:1px solid rgba(0,0,0,.2);padding:0;overflow:hidden;display:flex;align-items:center;justify-content:center;opacity:.45;transition:opacity .12s;cursor:grab}.timeline__segment:last-child{border-right:none}.timeline__segment--active{opacity:1}.timeline__segment--auto{height:60%;align-self:center;border-radius:2px;opacity:.3}.timeline__segment--auto.timeline__segment--active{opacity:.8}.timeline__segment--ghost{opacity:.85!important;box-shadow:0 2px 12px #00000059;border-radius:3px}.timeline__segment-label{font-family:var(--font-mono);font-size:8px;font-weight:600;color:#ffffffd9;text-transform:uppercase;letter-spacing:.04em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:0 4px}.timeline__playhead{position:absolute;top:0;bottom:0;width:3px;background:#fff;border-radius:2px;box-shadow:0 0 6px #00000080;transform:translate(-50%);pointer-events:none;z-index:2}.timeline__playhead:before{content:"";position:absolute;top:4px;left:50%;transform:translate(-50%);width:9px;height:9px;background:#fff;border-radius:50%;box-shadow:0 0 4px #0006}.timeline__insert{position:absolute;top:16px;bottom:0;width:0;transform:translate(-50%);z-index:10;display:flex;align-items:center;justify-content:center}.timeline__insert[hidden]{display:none}.timeline__insert:before{content:"";position:absolute;top:0;bottom:0;left:50%;width:2px;transform:translate(-50%);background:var(--primary)}.timeline__insert-btn{position:relative;width:20px;height:20px;border-radius:50%;border:2px solid var(--primary);background:var(--surface);color:var(--primary);font-size:14px;font-weight:700;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;z-index:1;transition:background .12s,transform .12s}.timeline__insert-btn:hover{background:var(--primary);color:#fff;transform:scale(1.15)}.timeline__add-btn{flex-shrink:0;width:32px;height:100%;border:none;border-left:1px dashed var(--border);background:transparent;color:var(--text-muted);font-size:18px;font-weight:600;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .12s,color .12s}.timeline__add-btn:hover{background:var(--surface-hover);color:var(--text)}.timeline__add-menu{position:absolute;bottom:100%;margin-bottom:4px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:0 4px 16px #00000040;z-index:50;max-height:320px;overflow-y:auto;min-width:160px;padding:4px 0}.timeline__add-menu-item{display:block;width:100%;padding:6px 14px;border:none;background:none;color:var(--text);font-family:var(--font-mono);font-size:12px;text-align:left;cursor:pointer}.timeline__add-menu-item:hover{background:var(--surface-hover)}.timeline__choice-group{display:flex;align-items:stretch}.timeline__choice-col{display:flex;flex-direction:column}.timeline__choice-col .timeline__segment{border-radius:4px 0 0 4px;width:60px;min-width:60px;height:auto;flex:1}.timeline__lanes{display:flex;flex-direction:column;gap:2px;background:#ffffff0a;border:1px solid rgba(255,255,255,.08);border-left:none;border-radius:0 4px 4px 0;padding:4px}.timeline__lane{display:flex;align-items:center;gap:4px;min-height:32px}.timeline__lane-label{font-family:var(--font-mono);font-size:9px;color:var(--text-muted);width:70px;min-width:70px;padding:0 6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.timeline__lane-steps{display:flex;gap:2px;align-items:center}.timeline__lane-steps .timeline__block{height:28px;flex-shrink:0;overflow:visible}.timeline__lane-steps .timeline__segment{height:28px;min-width:48px;width:48px}.timeline__lane-steps .timeline__segment-label{font-size:8px}.timeline__lane-steps .timeline__segment--auto{height:18px}.timeline__lane-add{width:22px;height:22px;border:1px dashed var(--border);background:transparent;color:var(--text-muted);font-size:13px;font-weight:600;border-radius:3px;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;pointer-events:auto}.timeline__lane-add:hover{background:var(--surface-hover);color:var(--text)}.timeline__lane--muted .timeline__lane-steps{opacity:.3;pointer-events:none}.timeline__lane--active .timeline__lane-label{font-weight:600;color:var(--text)}.timeline__lane-label[data-root-index]{cursor:pointer}.timeline__lane-label[data-root-index]:hover{color:var(--text)}.scene-editor__preview .test-panel__header,.scene-editor__preview .test-panel__info,.scene-editor__preview .step-indicator{display:none}.test-panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);display:flex;flex-direction:column;overflow:hidden;flex:1}.scene-editor__preview .test-panel{border:none;border-radius:0;flex:1;justify-content:center}.test-panel__header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--border);flex-shrink:0}.test-panel__header h3{font-size:15px;font-weight:600}.test-vn{position:relative;aspect-ratio:16 / 9;background:#1a1a2e;border-bottom:1px solid var(--border);container-type:inline-size;flex-shrink:0;overflow:hidden}.scene-editor__preview .test-vn{flex:1;aspect-ratio:unset;border-bottom:none}.test-vn__stage{position:absolute;inset:0}.test-vn__stage canvas{display:block;width:100%;height:100%;-webkit-user-drag:none;-webkit-user-select:none;user-select:none}.test-panel__info{overflow-y:auto;padding:12px 16px;flex:1;min-height:0}.test-info__section{margin-bottom:14px}.test-info__section h4{font-family:var(--font-mono);font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-bottom:6px}.test-info__step{display:flex;align-items:center;gap:8px}.test-info__badge{display:inline-block;padding:2px 8px;border-radius:var(--radius);font-family:var(--font-mono);font-size:10px;font-weight:600;color:#fff;text-transform:uppercase;letter-spacing:.04em}.test-info__idx{font-family:var(--font-mono);font-size:11px;color:var(--text-muted);font-weight:500}.test-info__detail{font-size:12px;color:var(--text)}.test-info__ended{color:var(--text-muted);font-style:italic}.test-info__char{display:flex;align-items:center;gap:8px;font-size:13px;padding:2px 0}.test-info__pos{font-family:var(--font-mono);font-size:10px;color:var(--text-muted);background:var(--bg);padding:1px 6px;border-radius:var(--radius)}.test-info__vars{display:flex;flex-direction:column;gap:2px}.test-info__var{display:flex;justify-content:space-between;font-size:13px;padding:2px 0}.test-info__var code{font-size:12px;color:var(--primary)}.test-info__val{color:var(--text);font-weight:500}.test-info__history{max-height:140px;overflow-y:auto}.test-info__hist-entry{font-size:12px;color:var(--text-muted);padding:2px 0;border-bottom:1px solid var(--border)}.test-info__hist-entry strong{color:var(--text)}.transform-gizmo{position:absolute;pointer-events:none;z-index:10;-webkit-user-select:none;user-select:none}.transform-gizmo__box{position:absolute;inset:0;border:2px dashed rgba(108,92,231,.8);cursor:move;pointer-events:auto}.transform-gizmo__handle{position:absolute;width:12px;height:12px;background:var(--primary);border:2px solid #fff;border-radius:2px;pointer-events:auto;transform:translate(-50%,-50%)}.transform-gizmo__handle--tl{top:0;left:0;cursor:nwse-resize}.transform-gizmo__handle--tr{top:0;right:0;cursor:nesw-resize;transform:translate(50%,-50%)}.transform-gizmo__handle--bl{bottom:0;left:0;cursor:nesw-resize;transform:translate(-50%,50%)}.transform-gizmo__handle--br{bottom:0;right:0;cursor:nwse-resize;transform:translate(50%,50%)}.char-highlight{position:absolute;pointer-events:none;z-index:8;border:2px solid var(--highlight-color, #6c5ce7);border-radius:4px;box-shadow:0 0 16px var(--highlight-color, #6c5ce7),inset 0 0 20px #6c5ce714;animation:char-highlight-pulse 1.5s ease-in-out infinite}@keyframes char-highlight-pulse{0%,to{opacity:.55}50%{opacity:1}}.step-indicator{position:absolute;top:10px;right:10px;background:#000000c7;border-radius:var(--radius);z-index:6;pointer-events:none;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);min-width:120px;max-width:200px;overflow:hidden;font-size:12px}.step-indicator[hidden]{display:none}.step-indicator__header{display:flex;align-items:center;padding:5px 8px;border-left:3px solid}.step-indicator__type{display:inline-block;padding:1px 7px;border-radius:var(--radius);font-family:var(--font-mono);font-size:9px;font-weight:700;color:#fff;text-transform:uppercase;letter-spacing:.06em}.step-indicator__body{padding:4px 8px 6px;display:flex;flex-direction:column;gap:2px}.step-indicator__row{display:flex;gap:5px;align-items:baseline}.step-indicator__key{font-family:var(--font-mono);color:#ffffff73;font-size:9px;flex-shrink:0}.step-indicator__val{color:#ffffffe6;font-size:10px;word-break:break-word}@media(max-width:768px){.timeline__scrub{height:32px}.scene-editor__content{flex-direction:column}.scene-editor__preview{flex:none;aspect-ratio:16 / 9;width:100%}.scene-editor__inspector{flex:1;max-width:none;border-left:none;border-top:1px solid var(--border);overflow-y:auto}}.sync-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;transition:background-color .2s}.sync-dot--saved{background:#27ae60}.sync-dot--pending{background:#f39c12}.sync-dot--saving{background:#f39c12;animation:sync-pulse .6s infinite alternate}.sync-dot--error{background:#e74c3c}@keyframes sync-pulse{to{opacity:.4}}.loc-editor{display:flex;flex:1;min-height:0;overflow:hidden}.loc-editor__hierarchy{width:220px;flex-shrink:0;display:flex;flex-direction:column;border-right:1px solid var(--border);background:var(--surface);overflow:hidden}.loc-editor__preview{flex:1;min-width:0;position:relative;overflow:hidden;background:#000;display:flex;align-items:center;justify-content:center;container-type:size}.loc-canvas-16x9{position:relative;aspect-ratio:16 / 9;max-width:100%;max-height:100%;width:min(100cqw,calc(100cqh * 16 / 9));height:min(100cqh,56.25cqw);overflow:hidden}.loc-editor__inspector{width:260px;flex-shrink:0;display:flex;flex-direction:column;border-left:1px solid var(--border);background:var(--surface);overflow:hidden}.loc-panel-header{font-family:var(--font-mono);font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);padding:10px 12px;border-bottom:1px solid var(--border);flex-shrink:0}.loc-panel-body{flex:1;overflow-y:auto;padding:8px;display:flex;flex-direction:column}.hier-section-label{font-family:var(--font-mono);font-size:9px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);padding:8px 6px 4px}.hier-row{display:flex;align-items:center;gap:8px;padding:5px 8px;border-radius:var(--radius);cursor:pointer;font-size:12px;-webkit-user-select:none;user-select:none}.hier-row:hover{background:var(--surface-hover)}.hier-row--active{background:var(--primary);color:#fff}.hier-row--active:hover{background:var(--primary)}.hier-row--missing .hier-label{opacity:.5;font-style:italic}.hier-row--add{opacity:.6}.hier-row--add:hover{opacity:1}.hier-icon{width:10px;height:10px;border-radius:2px;flex-shrink:0}.hier-icon--circle{border-radius:50%}.hier-icon--add{display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;color:var(--text-muted);border:1px dashed var(--border-strong);border-radius:2px;line-height:1}.hier-label{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.insp-section{display:flex;flex-direction:column;gap:8px}.insp-heading{font-family:var(--font-mono);font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted)}.insp-field{display:flex;align-items:center;gap:8px;font-size:12px}.insp-label{width:90px;flex-shrink:0;font-family:var(--font-mono);color:var(--text-muted);font-size:10px}.insp-value{flex:1;font-size:12px}.insp-divider{border:none;border-top:1px solid var(--border);margin:4px 0}.insp-empty{font-family:var(--font-mono);font-size:11px;color:var(--text-muted);text-align:center;padding:24px 0}@media(max-width:768px){.loc-editor{flex-direction:column}.loc-editor__hierarchy{width:100%;max-height:140px;border-right:none;border-bottom:1px solid var(--border)}.loc-editor__preview{flex:none;aspect-ratio:16 / 9;width:100%}.loc-editor__inspector{flex:1;width:100%;border-left:none;border-top:1px solid var(--border)}}.loc-bg-preview{height:200px;border-radius:var(--radius);display:flex;align-items:center;justify-content:center;background:var(--bg);border:1px solid var(--border);overflow:hidden}
