:root{--bg:#17150f;--surface:#211e17;--surface-2:#2a2620;--border:#3a3527;--text:#f2eee3;--text-muted:#9c9484;--accent:#c97a3d;--accent-strong:#e08a48;--accent-soft:#c97a3d24;--success:#7fa075;--danger:#bd5b4c;--radius:6px;--font-display:ui-serif, Georgia, "Iowan Old Style", serif;--font-body:system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono:ui-monospace, "SF Mono", Menlo, monospace}*{box-sizing:border-box}html,body{background:var(--bg);color:var(--text);font-family:var(--font-body);margin:0;padding:0;font-size:14px;line-height:1.5}body{background:radial-gradient(ellipse 1400px 900px at 50% -8%, #c97a3d0d, transparent 62%), var(--bg);background-attachment:fixed}.app{max-width:1600px;margin:0 auto;padding:24px}.topbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px 20px;margin-bottom:16px;display:flex}.wordmark{font-family:var(--font-display);letter-spacing:.02em;color:var(--text-muted);align-items:center;gap:10px;font-size:20px;display:flex}.seal{width:22px;height:22px;color:var(--accent);flex-shrink:0}.tool-nav{flex-wrap:wrap;gap:4px 14px;display:flex}.tool-nav a{color:var(--text-muted);font-size:13px;text-decoration:none}.tool-nav a:hover{color:var(--text)}.tool-nav a[aria-current=page]{color:var(--accent);text-underline-offset:3px;text-decoration:underline}.nav-dropdown{position:relative}.nav-dropdown-toggle{font-family:var(--font-body);color:var(--accent);cursor:pointer;background:0 0;border:none;align-items:center;gap:4px;padding:0;font-size:13px;display:inline-flex}.nav-dropdown-caret{flex-shrink:0;width:9px;height:6px;transition:transform .15s}.nav-dropdown-toggle[aria-expanded=true] .nav-dropdown-caret{transform:rotate(180deg)}.nav-dropdown-menu{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);z-index:10;grid-template-columns:repeat(2,1fr);gap:2px 6px;width:320px;max-width:calc(100vw - 32px);max-height:min(70vh,440px);padding:8px;display:none;position:absolute;top:calc(100% + 10px);left:0;overflow-y:auto;box-shadow:0 10px 30px #00000059}.nav-dropdown-menu.is-open{display:grid}@media (width<=360px){.nav-dropdown-menu{grid-template-columns:1fr;width:240px}}.nav-dropdown-menu-all{border-bottom:1px solid var(--border);grid-column:1/-1;margin-bottom:4px;padding-bottom:8px!important}.nav-dropdown-group-label{border-top:1px solid var(--border);border-left:2px solid var(--accent);color:var(--text-muted);grid-column:1/-1;margin-top:4px;padding:10px 8px 5px;font-size:11px;font-weight:600}.nav-dropdown-group-label:first-of-type{border-top:none;margin-top:0;padding-top:0}.nav-dropdown-menu-pdf{border-top:1px solid var(--border);grid-column:1/-1;margin-top:4px;padding-top:8px!important}.nav-dropdown-menu-hub{grid-column:1/-1}.nav-dropdown-menu a{color:var(--text-muted);white-space:nowrap;border-radius:4px;padding:6px 8px;font-size:13px;text-decoration:none}.nav-dropdown-menu a:hover{background:var(--surface-2);color:var(--text)}.nav-dropdown-menu a[aria-current=page]{color:var(--accent)}.page-intro{border-bottom:1px solid var(--border);margin-bottom:28px;padding-bottom:20px}.page-intro h1{font-family:var(--font-display);letter-spacing:.01em;color:var(--text);margin:0;font-size:28px;font-weight:500}.tagline{color:var(--text-muted);margin:8px 0 0;font-size:13px}.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);max-width:640px;padding:18px}.page-content{border-top:1px solid var(--border);max-width:720px;color:var(--text);margin:40px 0 0;padding-top:28px;font-size:14px;line-height:1.7}.page-content h2{font-family:var(--font-display);color:var(--text);margin:28px 0 10px;font-size:17px;font-weight:500}.page-content h2:first-child{margin-top:0}.page-content p{margin:0 0 12px}input[type=file].file-input-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;opacity:0;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.drop-zone{border:1px dashed var(--border);border-radius:var(--radius);cursor:pointer;text-align:center;background:#0e0d09;flex-direction:column;justify-content:center;align-items:center;gap:4px;padding:36px 20px;display:flex}.drop-zone:hover{border-color:var(--accent)}.drop-zone-title{color:var(--text);font-size:15px}.field-hint{color:var(--text-muted);margin:0;font-size:12px}.button-row{flex-wrap:wrap;gap:8px;display:flex}.btn{appearance:none;border-radius:var(--radius);font-family:var(--font-body);cursor:pointer;border:1px solid #0000;align-items:center;padding:8px 14px;font-size:13px;font-weight:500;transition:background-color .15s,border-color .15s,color .15s;display:inline-flex}.btn-accent{background:var(--accent);color:#17150f}.btn-accent:hover{background:var(--accent-strong)}.btn-accent:disabled{opacity:.4;cursor:not-allowed}.btn-outline{border-color:var(--accent);color:var(--accent);background:0 0}.btn-outline:hover{background:var(--accent-soft)}.btn-ghost{background:var(--surface-2);border-color:var(--border);color:var(--text)}.btn-ghost:hover{border-color:var(--accent)}.btn-sm{padding:5px 10px;font-size:12px}.progress-bar-row{align-items:center;gap:10px;display:flex}.progress-bar-track{background:var(--surface-2);border:1px solid var(--border);border-radius:999px;flex:1;height:8px;overflow:hidden}.progress-bar-fill{background:var(--accent);border-radius:999px;width:0%;height:100%;transition:width .2s;position:relative;overflow:hidden}.progress-bar-fill.is-active:after{content:"";background:linear-gradient(90deg,#0000,#fff6,#0000) 0 0/200% 100%;animation:1.3s linear infinite progress-shimmer;position:absolute;inset:0}@keyframes progress-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.progress-bar-text{color:var(--text-muted);white-space:nowrap;text-align:right;min-width:3.5em;font-size:12px}.log{font-family:var(--font-mono);color:var(--text-muted);max-height:220px;font-size:12px;overflow-y:auto}.log div{border-bottom:1px solid #ffffff0a;padding:2px 0}.is-hidden{display:none!important}.app-footer{border-top:1px solid var(--border);flex-wrap:wrap;gap:6px 16px;margin-top:40px;padding-top:20px;display:flex}.app-footer a{color:var(--text-muted);font-size:12px;text-decoration:none}.app-footer a:hover{color:var(--text)}
