*{box-sizing:border-box}html{background:hsl(var(--background));min-height:100%}body{min-height:100vh;color:hsl(var(--foreground));text-rendering:optimizelegibility;background:hsl(var(--background));margin:0;font-family:ui-sans-serif,system-ui,sans-serif}body:before{z-index:-1;background-image:linear-gradient(hsl(var(--border) / .55) 1px, transparent 1px), linear-gradient(90deg, hsl(var(--border) / .55) 1px, transparent 1px);opacity:.22;content:"";pointer-events:none;background-size:4rem 4rem;position:fixed;inset:0;mask-image:radial-gradient(60% 50% at 50% 0,#000 70%,#0000 110%)}a{color:inherit;text-decoration:none}button,input{font:inherit}.page-shell{padding:24px}.hero{border:1px solid hsl(var(--border) / .7);background:hsl(var(--background));border-radius:28px;min-height:calc(100vh - 48px);position:relative;overflow:hidden}.hero:after{content:none}.tool-topbar{box-shadow:none}.hero__content{justify-content:center;align-items:center;padding:120px 24px 54px;display:flex}.eyebrow,.kicker,.status-board__label,.file-meta__label{color:hsl(var(--cyan-dark));letter-spacing:.18em;text-transform:uppercase;margin:0;font-size:.78rem;font-weight:700}.control-panel{z-index:1;border:1px solid hsl(var(--border) / .8);background:hsl(var(--background));width:min(760px,100%);box-shadow:inset 0 1px 0 #ffffff73, var(--shadow-soft);border-radius:32px;padding:28px;position:relative}.control-panel__header{text-align:center}.control-panel__header h1{max-width:12ch;color:hsl(var(--foreground));letter-spacing:-.05em;margin:10px auto 14px;font-size:clamp(2.7rem,6vw,5rem);line-height:.96}.control-panel__header p{max-width:42ch;color:hsl(var(--muted-foreground));margin:0 auto;font-size:1.02rem;line-height:1.65}.control-panel__body{gap:18px;margin-top:28px;display:grid}.upload-field{border:1px dashed hsl(var(--cyan) / .4);background:radial-gradient(ellipse 70% 55% at 50% 15%, hsl(var(--cyan) / .1), transparent 70%), hsl(var(--background) / .88);text-align:center;border-radius:24px;justify-items:center;gap:8px;padding:28px 22px;transition:border-color .16s,background-color .22s,transform .16s,box-shadow .16s;display:grid}.upload-field:hover,.upload-field:focus-within,.upload-field.is-dragover{border-color:hsl(var(--cyan) / .66);background:radial-gradient(ellipse 70% 55% at 50% 15%, hsl(var(--cyan) / .18), transparent 70%), hsl(var(--background) / .95);box-shadow:var(--shadow-soft);transform:translateY(-1px)}.upload-field input{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.upload-field__icon{background:hsl(var(--muted));width:46px;height:46px;color:hsl(var(--foreground));border-radius:16px;place-items:center;font-size:1.6rem;line-height:1;display:grid}.upload-field__title{font-size:1.08rem;font-weight:700;line-height:1.4}.upload-field__label{color:hsl(var(--muted-foreground));font-size:.95rem;font-weight:500}.upload-field__hint{color:hsl(var(--muted-foreground));font-size:.92rem}.progress-panel{border:1px solid hsl(var(--border));background:hsl(var(--muted) / .45);border-radius:20px;gap:12px;padding:18px;animation:.22s panel-enter;display:grid}.progress-panel[hidden]{display:none}.progress-summary,.status-board{border:1px solid hsl(var(--border));background:hsl(var(--background));border-radius:18px;padding:16px 18px}.progress-summary{color:hsl(var(--muted-foreground));font-size:.98rem;line-height:1.5}.status-board{align-items:center;gap:14px;display:flex}.status-copy{min-width:0}.spinner{border:2px solid hsl(var(--border));border-top-color:hsl(var(--foreground));border-radius:999px;flex:0 0 18px;width:18px;height:18px;animation:.8s linear infinite spin}.status-board__message{margin-top:6px;font-size:1rem;line-height:1.5;display:block}.status-board.is-error .status-board__message{color:#9d2525}.status-board.is-success .status-board__message{color:hsl(var(--cyan-dark))}@media (width<=720px){.page-shell{padding:14px}.hero__content{padding-left:18px;padding-right:18px}.control-panel{padding:20px}.control-panel__header h1{font-size:clamp(2.35rem,12vw,3.6rem)}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes panel-enter{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}
