:root{color-scheme:dark;--font: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono: ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace;--ink: #e8eaed;--ink-bright: #f4f6f9;--ink-soft: #b6bec9;--ink-muted: #8b939e;--glass: rgba(17, 22, 29, .94);--glass-soft: rgba(17, 22, 29, .82);--glass-lit: rgba(27, 34, 43, .95);--line: rgba(255, 255, 255, .14);--line-soft: rgba(255, 255, 255, .08);--rim: 0 0 0 1px rgba(8, 12, 18, .45);--highlight: inset 0 1px 0 rgba(255, 255, 255, .09);--fill-1: rgba(255, 255, 255, .06);--fill-2: rgba(255, 255, 255, .11);--fill-0: rgba(255, 255, 255, .025);--line-strong: rgba(255, 255, 255, .2);--scrim: rgba(0, 0, 0, .45);--scrim-deep: rgba(8, 10, 14, .6);--on-accent: #fff;--paper: #fff;--bg: #14181d;--bg-raise: #171d24;--bg-glow: #1d2532;--surface: #1b2027;--surface-soft: #161b21;--surface-chip: #262d37;--surface-inset: #12161b;--border: #2a313b;--border-strong: #3a434f;--border-faint: #232932;--accent: #4f9bff;--accent-deep: #3a7bd5;--accent-strong: #4a8be5;--accent-soft: #9cc4ff;--accent-fill: linear-gradient(180deg, #4f9bff, #3a7bd5);--accent-tint: rgba(79, 155, 255, .13);--accent-line: rgba(79, 155, 255, .5);--accent-ring: rgba(79, 155, 255, .4);--interact: #ffd27f;--interact-tint: rgba(255, 210, 127, .16);--interact-line: rgba(255, 210, 127, .55);--tool-measure: var(--accent);--tool-tag: #39c6a5;--tool-record: #ff5252;--tool-ghost: #b18cff;--tool-lock: #4fd6d0;--tool-note: var(--interact);--ok: #4fdca4;--ok-solid: #3fce96;--ok-ring: rgba(63, 206, 150, .2);--ok-bg: rgba(63, 206, 150, .12);--ok-border: rgba(63, 206, 150, .35);--warn: #ffc16b;--warn-bg: rgba(255, 180, 84, .1);--warn-border: rgba(255, 180, 84, .35);--danger: #d0493d;--danger-hover: #de5a4e;--danger-strong: #ff9a8f;--danger-bg: rgba(224, 84, 73, .12);--danger-border: rgba(224, 84, 73, .38);--r-round: 50%;--r-pill: 999px;--r-panel: 12px;--r-sm: 6px;--r-md: 8px;--r-lg: 12px;--r-xl: 14px;--hit: 44px;--hub: 56px;--control-h: 2.25rem;--control-h-sm: 1.85rem;--control-pad-x: .85rem;--sp-1: .25rem;--sp-2: .5rem;--sp-3: .75rem;--sp-4: 1rem;--sp-5: 1.25rem;--sp-6: 1.5rem;--sp-8: 2rem;--elev-1: 0 4px 14px rgba(0, 0, 0, .38);--elev-2: 0 12px 36px rgba(0, 0, 0, .55);--glow-accent: 0 0 14px rgba(79, 155, 255, .45);--glow-interact: 0 0 14px rgba(255, 210, 127, .45);--glow-danger: 0 0 10px rgba(224, 84, 73, .35);--shadow-button: 0 1px 3px rgba(0, 0, 0, .4), inset 0 1px 0 rgba(255, 255, 255, .18);--blur: blur(12px);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .35);--shadow-card: 0 1px 2px rgba(0, 0, 0, .3), 0 4px 16px rgba(0, 0, 0, .28);--shadow-hover: 0 2px 6px rgba(0, 0, 0, .35), 0 14px 30px rgba(0, 0, 0, .42);--shadow-modal: 0 24px 60px rgba(0, 0, 0, .6);--fs-label: 11px;--fs-ui: 13px;--fs-value: 15px;--fs-hint: 12px;--fs-xs: .78rem;--fs-sm: .85rem;--fs-md: .92rem;--fs-base: 1rem;--fs-lg: 1.05rem;--fs-h2: .75rem;--fs-h1: 1.45rem;--t-fast: .12s ease;--t-med: .14s ease;--t-in: .18s ease;--t-fan: .16s cubic-bezier(.34, 1.45, .64, 1);--play: running}@media(prefers-reduced-motion:reduce){:root{--t-fast: 0s;--t-med: 0s;--t-in: 0s;--t-fan: 0s;--play: paused}}*{box-sizing:border-box}html,body,#root{margin:0;height:100%;width:100%;background:var(--bg);color:var(--ink);font-family:var(--font);overflow:hidden;overscroll-behavior:none}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.pill{font:inherit;font-size:var(--fs-ui);font-weight:600;color:var(--ink);min-height:var(--hit);padding:0 1rem;display:inline-flex;align-items:center;justify-content:center;gap:.4rem;background:var(--glass);border:1px solid var(--line);border-radius:var(--r-pill);box-shadow:var(--highlight),var(--rim),var(--elev-1);cursor:pointer;transition:background var(--t-fast),color var(--t-fast),border-color var(--t-fast),transform var(--t-fast)}.pill:hover{background:var(--glass-lit);border-color:var(--accent-line)}.pill:active{transform:translateY(1px)}.pill.active{color:var(--on-accent);background:var(--accent-fill);border-color:transparent;box-shadow:var(--highlight),var(--rim),var(--glow-accent)}.badge{font-size:var(--fs-label);font-weight:700;letter-spacing:.08em;background:var(--accent-deep);color:var(--on-accent);padding:.15rem .45rem;border-radius:var(--r-sm)}.landing-badge{font-size:var(--fs-label);letter-spacing:.22em;text-transform:uppercase;font-weight:700;color:var(--accent)}.page-center{position:fixed;top:0;right:0;bottom:0;left:0;display:grid;place-content:center;text-align:center}.page-center a:not(.btn){color:var(--accent)}.dead-link{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.9rem;padding:2rem;text-align:center;background:radial-gradient(1200px 800px at 50% 30%,var(--surface),#0d1013)}.dead-link h1{font-size:clamp(1.3rem,4vw,2rem);font-weight:700;line-height:1.2;max-width:22ch;margin:0}.dead-link p{max-width:44ch;color:var(--ink-soft);line-height:1.5;margin:0}.icon{flex:none;vertical-align:-.125em}.file-size,.stats strong,.data-table td{font-variant-numeric:tabular-nums}.data-table th.num,.data-table td.num{text-align:right}.app,.login-screen{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--bg);color:var(--ink);overflow:hidden;display:flex;flex-direction:column}.app-main{flex:1;overflow:auto;padding:var(--sp-6);scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent}.app-main code,.login-screen code,.modal code{background:var(--surface-chip);padding:.1rem .35rem;border-radius:var(--r-sm);font-size:.92em}.projects{max-width:1440px;margin:0 auto}.users,.usage{max-width:960px;margin:0 auto}.app-muted{color:var(--ink-muted);padding:var(--sp-6)}p.app-muted,span.app-muted{padding:0}.app-muted a,.storage-gauge a,.data-table a{color:var(--accent)}.app-error,.app-notice{padding:var(--sp-3) var(--sp-4);border-radius:var(--r-md);border:1px solid transparent;font-size:var(--fs-sm);margin:0 0 var(--sp-4);overflow-wrap:anywhere}.app-error{color:var(--danger-strong);background:var(--danger-bg);border-color:var(--danger-border)}.app-notice{color:var(--ok);background:var(--ok-bg);border-color:var(--ok-border)}.app-notice.notice-warn{color:var(--warn);background:var(--warn-bg);border-color:var(--warn-border)}.error-state,.app-notice.is-dismissible{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3)}.error-state-actions{display:inline-flex;align-items:center;gap:var(--sp-2);flex-shrink:0}.notice-close{background:none;border:none;color:inherit;font-size:1.15rem;line-height:1;padding:0 .2rem;cursor:pointer;opacity:.65;flex-shrink:0}.notice-close:hover{opacity:1}.page-head,.projects-head{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-4);flex-wrap:wrap;margin:0 0 var(--sp-6)}.page-head h1,.projects-head h1{margin:0;font-size:var(--fs-h1);font-weight:750;letter-spacing:-.02em;line-height:1.15}.page-sub{margin:.2rem 0 0;font-size:var(--fs-sm);color:var(--ink-muted)}.projects-head-right{display:flex;align-items:center;gap:var(--sp-3);flex-wrap:wrap}.watcher-status{display:inline-flex;align-items:center;gap:.4rem;font-size:.78rem;font-weight:600;padding:.25rem .6rem;border-radius:999px;border:1px solid transparent}.watcher-status .watcher-dot{width:8px;height:8px;border-radius:50%}.watcher-status.online{color:var(--ok);background:var(--ok-bg);border-color:var(--ok-border)}.watcher-status.online .watcher-dot{background:var(--ok-solid);box-shadow:0 0 0 3px var(--ok-ring)}.watcher-status.offline{color:var(--danger-strong);background:var(--danger-bg);border-color:var(--danger-border)}.watcher-status.offline .watcher-dot{background:var(--danger-hover)}.conversion-error{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-4);flex-wrap:wrap}.app-header{position:relative;display:flex;align-items:center;gap:var(--sp-5);padding:.55rem var(--sp-5);background:var(--bg-raise);border-bottom:1px solid var(--border)}.app-header:before{content:"";position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,var(--accent-deep),var(--accent) 55%,var(--accent-soft))}.app-brand{display:inline-flex;align-items:center;gap:.55rem;font-weight:700;font-size:.98rem;letter-spacing:-.01em;text-decoration:none;color:var(--ink);white-space:nowrap}.app-brand:before{content:"A";display:grid;place-items:center;width:1.55rem;height:1.55rem;border-radius:7px;background:linear-gradient(135deg,var(--accent),var(--accent-deep));color:var(--on-accent);font-size:.82rem;font-weight:800;box-shadow:var(--shadow-button)}.app-brand span{color:var(--accent)}.app-nav{display:flex;gap:var(--sp-1)}.app-nav a{color:var(--ink-soft);text-decoration:none;font-size:var(--fs-md);font-weight:500;padding:.32rem .8rem;border-radius:var(--r-pill);transition:background .15s ease,color .15s ease,box-shadow .15s ease}.app-nav a:hover{color:var(--ink);background:var(--fill-1)}.app-nav a:focus-visible{outline:none;box-shadow:0 0 0 3px var(--accent-ring)}.app-nav a.active{color:var(--accent-soft);background:var(--accent-tint);box-shadow:inset 0 0 0 1px var(--accent-ring);font-weight:600}.app-user{margin-left:auto;display:flex;align-items:center;gap:var(--sp-3)}.app-whoami{font-size:var(--fs-sm);color:var(--ink-muted)}.app-header .btn{height:var(--control-h-sm);padding:0 var(--sp-3);font-size:var(--fs-sm)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2);font:inherit;font-size:var(--fs-md);font-weight:600;line-height:1;height:var(--control-h);padding:0 var(--control-pad-x);border-radius:var(--r-md);border:1px solid var(--line);background:var(--fill-1);color:var(--ink-soft);cursor:pointer;white-space:nowrap;text-decoration:none;transition:background var(--t-fast),border-color var(--t-fast),color var(--t-fast),box-shadow var(--t-fast),transform .06s ease}.btn:hover:not(:disabled){background:var(--fill-2);color:var(--ink)}.btn:focus-visible{outline:none;box-shadow:0 0 0 3px var(--accent-ring)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn:active:not(:disabled){transform:translateY(1px)}.btn-primary{background:linear-gradient(180deg,var(--accent-strong),var(--accent-deep));border-color:var(--line);color:var(--on-accent);box-shadow:var(--shadow-sm),inset 0 1px 0 var(--line)}.btn-primary:hover:not(:disabled){background:var(--accent-fill);color:var(--on-accent)}.btn-lg{height:2.6rem;padding:0 1.35rem;font-size:var(--fs-base)}.btn-ghost{background:transparent;border-color:var(--border-strong);color:var(--ink-soft)}.btn-ghost:hover:not(:disabled){background:var(--fill-1);border-color:var(--border-strong);color:var(--ink)}.btn-danger{background:var(--danger);border-color:var(--fill-2);color:var(--on-accent)}.btn-danger:hover:not(:disabled){background:var(--danger-hover);color:var(--on-accent)}.btn-sm{height:var(--control-h-sm);padding:0 var(--sp-3);font-size:var(--fs-sm)}.rename-btn{display:inline-flex;align-items:center;background:transparent;border:1px solid var(--border-strong);color:var(--ink-soft);border-radius:var(--r-sm);height:var(--control-h-sm);padding:0 var(--sp-2);font:inherit;font-size:var(--fs-xs);font-weight:600;cursor:pointer;line-height:1;transition:background var(--t-fast),border-color var(--t-fast),color var(--t-fast)}.rename-btn:hover{background:var(--fill-1);color:var(--ink)}.detail-head-actions{display:flex;gap:var(--sp-2)}.field input,.link-row input,.user-form input,.user-form select,.share-expiry select,.share-custom input{font:inherit;font-size:var(--fs-sm);height:var(--control-h);padding:0 .7rem;border:1px solid var(--border-strong);border-radius:var(--r-md);background:var(--surface-inset);color:var(--ink);transition:border-color var(--t-fast),box-shadow var(--t-fast)}.field input::placeholder,.user-form input::placeholder{color:var(--ink-muted)}.field input:focus,.link-row input:focus,.user-form input:focus,.user-form select:focus,.share-expiry select:focus,.share-custom input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-ring)}.field input:-webkit-autofill{-webkit-box-shadow:0 0 0 1000px var(--surface-inset) inset;-webkit-text-fill-color:var(--ink);caret-color:var(--ink)}.login-screen{align-items:center;justify-content:center;background:radial-gradient(1100px 700px at 50% 26%,var(--bg-glow),var(--bg) 72%)}.login-card{position:relative;overflow:hidden;width:min(92vw,360px);background:var(--surface);border:1px solid var(--border);border-radius:var(--r-xl);padding:var(--sp-8) 1.75rem;box-shadow:var(--shadow-card);display:flex;flex-direction:column;gap:var(--sp-3)}.login-card:before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,var(--accent-deep),var(--accent) 55%,var(--accent-soft))}.login-card h1{margin:0;font-size:1.5rem;font-weight:750;letter-spacing:-.02em}.login-brand{display:flex;align-items:center;gap:.6rem}.login-brand:before{content:"A";display:grid;place-items:center;width:2.1rem;height:2.1rem;border-radius:9px;background:linear-gradient(135deg,var(--accent),var(--accent-deep));color:var(--on-accent);font-size:1.05rem;font-weight:800;letter-spacing:0;box-shadow:var(--shadow-button)}.login-brand span{color:var(--accent)}.login-sub{margin:0 0 var(--sp-2);color:var(--ink-muted);font-size:var(--fs-md)}.login-card .btn{margin-top:var(--sp-1)}.field{display:flex;flex-direction:column;gap:var(--sp-1);font-size:var(--fs-sm);color:var(--ink-soft)}.login-error{color:var(--danger-strong);font-size:var(--fs-sm);margin:0}.login-error a{color:inherit;text-decoration:underline}.login-aside{align-self:center;font-size:var(--fs-sm);color:var(--ink-muted)}.login-aside:hover{color:var(--accent)}.login-or{display:flex;align-items:center;gap:var(--sp-2);color:var(--ink-muted);font-size:var(--fs-sm)}.login-or:before,.login-or:after{content:"";flex:1;border-top:1px solid var(--border-strong)}.login-card .login-armor{margin-top:0;text-align:center}.project-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:var(--sp-4)}.project-card{position:relative;overflow:hidden;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-xl);padding:var(--sp-4) var(--sp-4) var(--sp-4) calc(var(--sp-4) + 3px);display:flex;flex-direction:column;gap:var(--sp-3);text-decoration:none;color:inherit;box-shadow:var(--shadow-card);transition:border-color var(--t-med),box-shadow var(--t-med),transform var(--t-med)}.project-card:hover{border-color:var(--accent-ring);box-shadow:var(--shadow-hover);transform:translateY(-2px)}.project-card:focus-visible{outline:none;box-shadow:0 0 0 3px var(--accent-ring),var(--shadow-card)}.project-card:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--border-strong)}.project-card[data-status=live]:before{background:var(--ok)}.project-card[data-status=processing]:before{background:var(--accent);animation:stripe-pulse 1.6s ease-in-out infinite}.project-card[data-status=error]:before{background:var(--danger-hover)}@keyframes stripe-pulse{50%{opacity:.35}}.project-card-thumb{aspect-ratio:16 / 10;margin:calc(-1 * var(--sp-4)) calc(-1 * var(--sp-4)) 0 calc(-1 * (var(--sp-4) + 3px));background:var(--surface-soft);border-bottom:1px solid var(--border-faint);display:grid;place-items:center;overflow:hidden}.project-card-thumb img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .25s ease}.project-card:hover .project-card-thumb img{transform:scale(1.04)}.thumb-placeholder{width:2.6rem;height:2.6rem;color:var(--border-strong)}.project-card-top{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--sp-2)}.project-card-top h2{margin:0;font-size:var(--fs-lg);font-weight:650;letter-spacing:-.01em;line-height:1.3;min-width:0;overflow-wrap:anywhere}.project-card-top .badge{flex-shrink:0}.project-card-meta{display:flex;justify-content:space-between;font-size:var(--fs-xs);color:var(--ink-muted)}.project-card-hint{font-size:var(--fs-xs);color:var(--ink-muted)}.project-card-hint.hint-error{color:var(--danger-strong)}.project-card-hint.hint-ok{color:var(--ok)}.project-card-actions{border-top:1px solid var(--border-faint);padding-top:var(--sp-3);min-height:1.5rem}.empty-state{display:flex;flex-direction:column;align-items:center;text-align:center;gap:var(--sp-4);max-width:34rem;margin:0 auto;padding:var(--sp-8) var(--sp-6);background:var(--surface);border:1px dashed var(--border-strong);border-radius:var(--r-lg)}.empty-state p{margin:0;max-width:26rem;color:var(--ink-soft)}.switch{display:inline-flex;align-items:center;gap:var(--sp-2);font-size:var(--fs-sm);color:var(--ink-soft);cursor:pointer}.switch input{accent-color:var(--accent-deep)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--scrim-deep);display:grid;place-items:center;padding:var(--sp-4);z-index:50;animation:modal-fade var(--t-fast)}.modal{width:min(94vw,460px);background:var(--surface);border:1px solid var(--border);border-radius:var(--r-xl);padding:var(--sp-6);display:flex;flex-direction:column;gap:var(--sp-3);box-shadow:var(--shadow-modal);animation:modal-rise .16s ease}.modal:focus{outline:none}.modal h2{margin:0;font-size:1.15rem;font-weight:700;letter-spacing:-.01em}.modal-actions{display:flex;justify-content:flex-end;gap:var(--sp-2);margin-top:var(--sp-1)}@keyframes modal-fade{0%{opacity:0}}@keyframes modal-rise{0%{opacity:0;transform:translateY(6px)}}.upload-panel{position:relative;transition:border-color var(--t-med),box-shadow var(--t-med)}.upload-panel.is-dropping{border-color:var(--accent);box-shadow:var(--shadow-hover)}.panel-head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--sp-3)}.panel-head h2{margin:0}.panel-count{font-size:var(--fs-xs);font-weight:600;color:var(--ink-muted);white-space:nowrap}.panel-sub{margin-top:var(--sp-2)}.dropzone-wrap{margin-top:var(--sp-3)}.dropzone{border:2px dashed var(--border-strong);border-radius:var(--r-lg);background:var(--fill-0);color:var(--ink-soft);cursor:pointer;transition:border-color var(--t-fast),background var(--t-fast),color var(--t-fast)}.dropzone:hover:not(.disabled){border-color:var(--accent);background:var(--accent-tint);color:var(--accent-soft)}.dropzone:focus-visible{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-ring)}.dropzone.disabled{opacity:.55;cursor:not-allowed}.dropzone code{background:var(--surface-chip);padding:.05rem .3rem;border-radius:var(--r-sm);color:inherit}.dropzone-hero{display:flex;flex-direction:column;align-items:center;text-align:center;gap:var(--sp-2);padding:var(--sp-8) var(--sp-5)}.dropzone-icon{display:grid;place-items:center;width:3.25rem;height:3.25rem;margin-bottom:var(--sp-1);border-radius:50%;background:var(--accent-tint);color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent-ring);transition:transform var(--t-med)}.dropzone-icon svg{width:1.6rem;height:1.6rem}.dropzone:hover:not(.disabled) .dropzone-icon{transform:translateY(-2px)}.dropzone-title{margin:0;font-size:var(--fs-lg);font-weight:600;color:var(--ink)}.dropzone-sub{margin:0;max-width:30rem;font-size:var(--fs-sm);color:var(--ink-muted)}.dropzone-browse{margin-top:var(--sp-3);pointer-events:none}.dropzone-compact{padding:var(--sp-3) var(--sp-4)}.dropzone-compact-inner{display:flex;align-items:center;justify-content:center;gap:var(--sp-2);font-size:var(--fs-sm)}.dropzone-compact-icon{display:inline-flex;color:var(--accent)}.dropzone-compact-icon svg{width:1.05rem;height:1.05rem}.dropzone-link{color:var(--accent);font-weight:600}.dropzone-err{margin:var(--sp-2) 0 0;color:var(--danger-strong);font-size:var(--fs-sm)}.drop-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:5;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--sp-3);border-radius:var(--r-lg);border:2px dashed var(--accent);background:var(--glass);color:var(--accent-soft);font-weight:600;pointer-events:none;animation:modal-fade var(--t-fast)}.drop-overlay p{margin:0}.drop-overlay-icon{display:grid;place-items:center;width:2.75rem;height:2.75rem;border-radius:50%;background:var(--surface-chip);color:var(--accent);box-shadow:var(--shadow-sm),inset 0 0 0 1px var(--accent-ring)}.drop-overlay-icon svg{width:1.4rem;height:1.4rem}.progress{width:min(60vw,280px);height:8px;background:var(--fill-2);border-radius:var(--r-pill);overflow:hidden}.progress-bar{height:100%;background:linear-gradient(90deg,var(--accent-deep),var(--accent));box-shadow:0 0 10px var(--accent-ring);border-radius:var(--r-pill);transition:width .2s ease}.upload-progress{display:flex;flex-direction:column;gap:var(--sp-1);margin:var(--sp-3) 0}.upload-progress .progress{margin-top:var(--sp-1)}.upload-progress p{margin:0}.detail{max-width:1200px;margin:0 auto}.detail-body{display:grid;grid-template-columns:minmax(0,1fr) 340px;column-gap:var(--sp-5);align-items:start}.detail-main{grid-column:1;grid-row:1;min-width:0}.detail-side{grid-column:2;grid-row:1;min-width:0;position:sticky;top:var(--sp-2)}.detail-side .link-row{flex-wrap:wrap}.detail-side .link-row input{flex:1 1 100%}.detail-side .stats div{flex:1 1 7rem}.detail-side .stats strong{font-size:1.15rem}@media(max-width:980px){.detail-body{display:block}.detail-side{position:static}}.detail-head{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--sp-4);flex-wrap:wrap;margin-bottom:var(--sp-6)}.detail-head>div{min-width:0}.detail-head h1{margin:var(--sp-2) 0 var(--sp-1);font-size:var(--fs-h1);font-weight:750;letter-spacing:-.02em;display:flex;align-items:center;flex-wrap:wrap;gap:var(--sp-3);overflow-wrap:anywhere}.back-link{display:inline-flex;align-items:center;gap:.2rem;color:var(--accent);text-decoration:none;font-size:var(--fs-sm);font-weight:600}.back-link:hover{text-decoration:underline}.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:var(--sp-5);margin-bottom:var(--sp-4);box-shadow:var(--shadow-sm)}.panel h2{margin:0 0 var(--sp-4);font-size:var(--fs-h2);font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--ink-soft)}.link-row{display:flex;gap:var(--sp-2)}.link-row input{flex:1}.share-controls{display:flex;flex-direction:column;gap:var(--sp-3);margin-top:var(--sp-4);padding-top:var(--sp-4);border-top:1px solid var(--border-faint)}.share-row{display:flex;align-items:center;gap:var(--sp-3);flex-wrap:wrap;font-size:var(--fs-sm);color:var(--ink-soft)}.share-label{font-weight:600;min-width:3.5rem}.share-hint{margin:var(--sp-2) 0 0;font-size:var(--fs-sm)}.share-hint .badge{vertical-align:middle}.qr-panel{display:flex;align-items:center;gap:var(--sp-4);margin-top:var(--sp-3);flex-wrap:wrap}.qr{display:flex;flex-direction:column;align-items:center;gap:var(--sp-2)}.qr-box{width:180px;height:180px;background:var(--paper);padding:8px;border-radius:8px;box-shadow:var(--shadow-sm)}.qr-box svg{width:100%;height:100%;display:block}.file-list{list-style:none;margin:var(--sp-4) 0 var(--sp-2);padding:0;display:flex;flex-direction:column;gap:var(--sp-1)}.file-row{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-2) var(--sp-3);background:var(--fill-0);border:1px solid var(--border);border-radius:var(--r-md);font-size:var(--fs-sm);transition:border-color var(--t-fast),background var(--t-fast)}.file-row:hover{border-color:var(--border-strong);background:var(--fill-1)}.file-row.is-model{border-color:var(--accent-ring);background:var(--accent-tint)}.file-icon{display:inline-flex;flex-shrink:0;color:var(--ink-muted)}.file-icon svg{width:1.15rem;height:1.15rem}.file-icon-model{color:var(--accent)}.file-icon-image{color:var(--ink-soft)}.file-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-tag{flex-shrink:0;font-size:.66rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--accent-soft);background:var(--accent-tint);border:1px solid var(--accent-ring);padding:.1rem .4rem;border-radius:var(--r-pill)}.file-size{flex-shrink:0;color:var(--ink-muted);font-size:var(--fs-xs)}.file-remove{display:inline-grid;place-items:center;flex-shrink:0;width:1.7rem;height:1.7rem;padding:0;border:none;border-radius:var(--r-sm);background:transparent;color:var(--ink-muted);cursor:pointer;opacity:0;transition:opacity var(--t-fast),background var(--t-fast),color var(--t-fast)}.file-remove svg{width:.95rem;height:.95rem}.file-row:hover .file-remove,.file-row:focus-within .file-remove{opacity:1}.file-remove:hover{background:var(--danger-bg);color:var(--danger-strong)}.file-remove:focus-visible{opacity:1;outline:none;box-shadow:0 0 0 3px var(--accent-ring)}.file-remove:disabled{cursor:not-allowed}@media(hover:none){.file-remove{opacity:1}}.submit-row{display:flex;align-items:center;gap:var(--sp-3);flex-wrap:wrap;margin-top:var(--sp-4)}.submit-row.is-ready{padding-top:var(--sp-4);border-top:1px solid var(--border-faint)}.submit-ready{display:inline-flex;align-items:center;gap:var(--sp-2);font-size:var(--fs-sm);font-weight:600;color:var(--ok)}.submit-ready svg{width:1.05rem;height:1.05rem}.table-scroll{overflow-x:auto}.data-table{width:100%;border-collapse:collapse;font-size:var(--fs-sm)}.data-table th,.data-table td{text-align:left;padding:.6rem var(--sp-3);border-bottom:1px solid var(--border-faint);vertical-align:middle}.data-table tbody tr:last-child td{border-bottom:none}.data-table th{color:var(--ink-muted);font-weight:600;font-size:.7rem;text-transform:uppercase;letter-spacing:.08em;border-bottom:1px solid var(--border)}.data-table tbody tr:hover td{background:var(--fill-0)}.row-inactive{opacity:.45}.stats{display:flex;gap:var(--sp-3);flex-wrap:wrap;margin-bottom:var(--sp-3)}.stats div{display:flex;flex-direction:column;gap:var(--sp-1);min-width:6.5rem;padding:var(--sp-3) var(--sp-4);background:var(--fill-0);border:1px solid var(--border-faint);border-radius:var(--r-md)}.stats strong{font-size:1.35rem;font-weight:700;letter-spacing:-.01em}.stats span{font-size:.7rem;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-muted)}.user-form{display:flex;gap:var(--sp-2);flex-wrap:wrap;align-items:center}.user-form input{flex:1 1 10rem;min-width:0}.comment-list{list-style:none;margin:0 0 var(--sp-3);padding:0;display:flex;flex-direction:column;gap:var(--sp-2)}.comment{border:1px solid var(--border);background:var(--fill-0);border-radius:var(--r-md);padding:var(--sp-2) var(--sp-3)}.comment-head{display:flex;align-items:center;gap:var(--sp-2);font-size:.85rem}.comment-head .btn{margin-left:auto}.comment-body{margin:.3rem 0 0;white-space:pre-wrap;word-break:break-word}.comment-compose{display:flex;gap:var(--sp-2);align-items:flex-start}.comment-compose textarea{flex:1;resize:vertical;font:inherit;font-size:var(--fs-sm);color:var(--ink);background:var(--surface-inset);padding:.5rem .6rem;border:1px solid var(--border-strong);border-radius:var(--r-md);transition:border-color var(--t-fast),box-shadow var(--t-fast)}.comment-compose textarea::placeholder{color:var(--ink-muted)}.comment-compose textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-ring)}.confirm-banner{margin-top:var(--sp-3);padding:var(--sp-3);border:1px solid var(--accent-ring);background:var(--accent-tint);border-radius:var(--r-md);font-size:.9rem}.confirm-link-row{display:flex;flex-wrap:wrap;gap:var(--sp-2);margin:var(--sp-2) 0}.confirm-link{flex:1;min-width:0;font-family:ui-monospace,monospace;font-size:.82rem;color:var(--ink);background:var(--surface-inset);padding:.4rem .55rem;border:1px solid var(--border-strong);border-radius:7px}.badge{display:inline-flex;align-items:center;font-size:var(--fs-xs);font-weight:700;text-transform:uppercase;letter-spacing:.04em;padding:.15rem .45rem;border-radius:var(--r-sm);border:1px solid transparent;white-space:nowrap}.badge-green{background:var(--ok-bg);border-color:var(--ok-border);color:var(--ok)}.badge-blue{background:var(--accent-tint);border-color:var(--accent-ring);color:var(--accent-soft)}.badge-amber{background:var(--warn-bg);border-color:var(--warn-border);color:var(--warn)}.badge-red{background:var(--danger-bg);border-color:var(--danger-border);color:var(--danger-strong)}.badge-gray{background:var(--fill-1);border-color:var(--line);color:var(--ink-soft)}@keyframes spin{to{transform:rotate(360deg)}}.spinner{display:inline-block;width:1.1em;height:1.1em;border:2px solid var(--line-strong);border-top-color:var(--accent);border-radius:50%;animation:spin .7s linear infinite;vertical-align:-.2em}.loading-row{display:flex;align-items:center;gap:var(--sp-2);color:var(--ink-muted);padding:var(--sp-6)}.storage-gauge{display:flex;align-items:center;flex-wrap:wrap;gap:var(--sp-2);margin:-.25rem 0 var(--sp-6);font-size:var(--fs-xs);color:var(--ink-muted)}.storage-gauge-track{flex:0 0 200px;height:8px;background:var(--fill-2);border-radius:var(--r-pill);overflow:hidden}.storage-gauge-fill{height:100%;background:linear-gradient(90deg,var(--accent-deep),var(--accent));border-radius:var(--r-pill);transition:width .3s ease}.storage-gauge.over .storage-gauge-fill{background:var(--danger-hover);box-shadow:var(--glow-danger)}.convert-progress{margin-top:var(--sp-2);max-width:320px}.convert-progress .progress{margin-top:.35rem}.converting{display:inline-flex;align-items:center;gap:var(--sp-2);font-size:var(--fs-xs);font-weight:600;color:var(--accent-soft)}.converting .spinner{width:.8em;height:.8em;border-color:var(--accent-ring);border-top-color:var(--accent)}@media(prefers-reduced-motion:reduce){.project-card[data-status=processing]:before{animation:none}.spinner,.modal-backdrop,.modal,.drop-overlay{animation:none}.project-card,.btn,.dropzone-icon,.project-card-thumb img{transition:none}.project-card:hover,.project-card:hover .project-card-thumb img{transform:none}.dropzone:hover:not(.disabled) .dropzone-icon{transform:none}}@media(max-width:720px){.app-header{flex-wrap:wrap;row-gap:var(--sp-2);padding:var(--sp-3) var(--sp-4)}.app-nav{flex-wrap:wrap}.app-main{padding:var(--sp-4)}.link-row{flex-wrap:wrap}.link-row input{flex:1 1 100%}.stats div{flex:1 1 7rem}}.mfa-secret-block{display:flex;flex-direction:column;gap:var(--sp-1);margin:var(--sp-2) 0 var(--sp-3)}.mfa-confirm-row{display:flex;gap:var(--sp-2);flex-wrap:wrap;align-items:center;margin-top:var(--sp-2)}.mfa-confirm-row input{width:11rem;font-family:ui-monospace,monospace;letter-spacing:.12em}.recovery-codes{display:grid;grid-template-columns:repeat(auto-fill,minmax(9.5rem,1fr));gap:var(--sp-2);margin:var(--sp-3) 0}.recovery-codes code{font-family:ui-monospace,monospace;font-size:.95rem;text-align:center;padding:.45rem .3rem;background:var(--surface-inset);border:1px solid var(--border-strong);border-radius:var(--r-sm);-webkit-user-select:all;user-select:all}.login-mfa-hint{font-size:.85rem;margin:-.25rem 0 var(--sp-2)}.btn-linklike{background:none;border:0;padding:0;cursor:pointer;font:inherit}.page-head select{font:inherit;font-size:var(--fs-sm);color:var(--ink);background:var(--surface-inset);padding:.45rem .6rem;border:1px solid var(--border-strong);border-radius:var(--r-md)}.audit-when{white-space:nowrap;color:var(--ink-soft);font-variant-numeric:tabular-nums}.audit-detail{max-width:26rem;overflow-wrap:anywhere;color:var(--ink-soft)}
