/* AIEIO Files - design system, landing, app, share viewer. Self-hosted fonts, dark mode, responsive. */

@font-face{font-family:Sora;src:url(/fonts/sora-600-latin.woff2) format('woff2');font-weight:600;font-display:swap}
@font-face{font-family:Sora;src:url(/fonts/sora-700-latin.woff2) format('woff2');font-weight:700;font-display:swap}
@font-face{font-family:Sora;src:url(/fonts/sora-800-latin.woff2) format('woff2');font-weight:800;font-display:swap}
@font-face{font-family:Inter;src:url(/fonts/inter-400-latin.woff2) format('woff2');font-weight:400;font-display:swap}
@font-face{font-family:Inter;src:url(/fonts/inter-500-latin.woff2) format('woff2');font-weight:500;font-display:swap}
@font-face{font-family:Inter;src:url(/fonts/inter-600-latin.woff2) format('woff2');font-weight:600;font-display:swap}

:root{
  --brand:#0d9488; --brand-2:#0891b2; --brand-ink:#0b3d3a;
  --grad:linear-gradient(135deg,#0d9488,#0891b2);
  --accent:#f59e0b;
  --bg:#f4f7f9; --surface:#ffffff; --surface-2:#f0f4f7; --ink:#0f172a; --muted:#5b6b82;
  --line:#e3e9f0; --line-2:#eef2f6; --bad:#dc2626; --bad-tint:#fca5a5; --good:#0f9d58;
  --shadow:0 1px 3px rgba(15,23,42,.08),0 1px 2px rgba(15,23,42,.04);
  --shadow-lg:0 12px 40px rgba(15,23,42,.16); --radius:14px; --radius-sm:9px;
  --sans:Inter,system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;
  --head:Sora,var(--sans);
}
@media (prefers-color-scheme:dark){
  :root:not([data-theme=light]){
    --bg:#0b1220; --surface:#111a2e; --surface-2:#0f1830; --ink:#e7edf6; --muted:#93a4bd;
    --line:#1e2b45; --line-2:#17223b; --shadow:0 1px 3px rgba(0,0,0,.4); --shadow-lg:0 16px 50px rgba(0,0,0,.55);
  }
}
:root[data-theme=dark]{
  --bg:#0b1220; --surface:#111a2e; --surface-2:#0f1830; --ink:#e7edf6; --muted:#93a4bd;
  --line:#1e2b45; --line-2:#17223b; --shadow:0 1px 3px rgba(0,0,0,.4); --shadow-lg:0 16px 50px rgba(0,0,0,.55);
}

*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{font-family:var(--sans);background:var(--bg);color:var(--ink);line-height:1.55;-webkit-font-smoothing:antialiased}
h1,h2,h3,h4{font-family:var(--head);line-height:1.15;margin:0 0 .5em;letter-spacing:-.02em}
a{color:var(--brand);text-decoration:none}
a:hover{text-decoration:underline}
.hidden{display:none!important}
.muted{color:var(--muted)}
.spacer{flex:1}
img{max-width:100%}

/* ---- buttons / inputs ---- */
.btn{display:inline-flex;align-items:center;gap:.5em;border:0;border-radius:var(--radius-sm);padding:.6rem 1.1rem;
  font:600 .92rem/1 var(--sans);color:#fff;background:var(--grad);cursor:pointer;transition:filter .15s,transform .05s;white-space:nowrap}
.btn:hover{filter:brightness(1.06);text-decoration:none}
.btn:active{transform:translateY(1px)}
.btn:focus-visible{outline:2px solid var(--brand);outline-offset:2px}
.btn-lg{padding:.85rem 1.5rem;font-size:1rem}
.btn-sm{padding:.42rem .7rem;font-size:.83rem}
.btn-ghost{background:transparent;color:var(--ink);border:1px solid var(--line)}
.btn-ghost:hover{background:var(--surface-2);filter:none;border-color:var(--brand)}
.btn-danger{background:var(--bad)}
.btn[disabled]{opacity:.55;cursor:not-allowed}
.linklike{background:none;border:0;color:var(--muted);cursor:pointer;font:500 .9rem/1 var(--sans);display:inline-flex;align-items:center;gap:.5em;padding:.4rem 0}
.linklike:hover{color:var(--brand)}
.in,input[type=text],input[type=email],input[type=password],input[type=search],input[type=number],select,textarea{
  width:100%;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);
  padding:.62rem .8rem;font:400 .95rem/1.3 var(--sans);color:var(--ink)}
.in:focus,input:focus,select:focus,textarea:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px color-mix(in srgb,var(--brand) 22%,transparent)}
label{font:600 .82rem/1.4 var(--sans);color:var(--muted);display:block;margin:.7rem 0 .3rem}
.err{color:var(--bad);font-size:.86rem;margin:.5rem 0}
.icon-btn{background:none;border:0;color:var(--ink);cursor:pointer;padding:.4rem;border-radius:8px;display:inline-flex}
.icon-btn:hover{background:var(--surface-2)}

/* ---- icons (mask, currentColor) ---- */
.ic,.fic,[class*=ic-]{display:inline-block;width:1.15em;height:1.15em;flex:none;background:currentColor;
  -webkit-mask:var(--i) center/contain no-repeat;mask:var(--i) center/contain no-repeat;vertical-align:-.18em}
.fic{width:1.6rem;height:1.6rem;color:var(--brand)}
.ic-folder{--i:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M3 7a2 2 0 0 1 2-2h4l2 2h8a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z'/></svg>")}
.ic-folder-plus{--i:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M3 7a2 2 0 0 1 2-2h4l2 2h8a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z'/><path d='M12 11v5M9.5 13.5h5'/></svg>")}
.ic-file{--i:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M6 2h8l4 4v16H6z'/><path d='M14 2v4h4'/></svg>")}
.ic-image{--i:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><rect x='3' y='4' width='18' height='16' rx='2'/><circle cx='9' cy='10' r='2'/><path d='M21 17l-5-5-6 6'/></svg>")}
.ic-pdf{--i:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M6 2h8l4 4v16H6z'/><path d='M14 2v4h4'/><path d='M9 13h1.5a1.5 1.5 0 0 1 0 3H9zM9 13v6'/></svg>")}
.ic-video{--i:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><rect x='3' y='5' width='14' height='14' rx='2'/><path d='M17 9l4-2v10l-4-2'/></svg>")}
.ic-audio{--i:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M9 18V5l10-2v13'/><circle cx='6' cy='18' r='3'/><circle cx='16' cy='16' r='3'/></svg>")}
.ic-zip{--i:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M6 2h8l4 4v16H6z'/><path d='M14 2v4h4'/><path d='M11 6h2M10 9h2M11 12h2M10 15h3v3h-3z'/></svg>")}
.ic-text{--i:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M6 2h8l4 4v16H6z'/><path d='M14 2v4h4'/><path d='M9 12h6M9 16h6'/></svg>")}
.ic-doc{--i:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M6 2h8l4 4v16H6z'/><path d='M14 2v4h4'/><path d='M8.5 13h7M8.5 16.5h7M8.5 9.5h3'/></svg>")}
.ic-sheet{--i:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><rect x='4' y='4' width='16' height='16' rx='2'/><path d='M4 10h16M4 15h16M10 4v16'/></svg>")}
.ic-slide{--i:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><rect x='3' y='4' width='18' height='13' rx='2'/><path d='M12 17v4M8 21h8'/></svg>")}
.ic-people{--i:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><circle cx='9' cy='8' r='3'/><path d='M3 20a6 6 0 0 1 12 0'/><path d='M16 6a3 3 0 0 1 0 6M21 20a6 6 0 0 0-4-5.6'/></svg>")}
.ic-link{--i:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M10 13a5 5 0 0 0 7 0l2-2a5 5 0 0 0-7-7l-1 1'/><path d='M14 11a5 5 0 0 0-7 0l-2 2a5 5 0 0 0 7 7l1-1'/></svg>")}
.ic-shield{--i:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M12 3l8 3v6c0 5-3.5 8-8 9-4.5-1-8-4-8-9V6z'/><path d='M9 12l2 2 4-4'/></svg>")}
.ic-clock{--i:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><circle cx='12' cy='12' r='9'/><path d='M12 7v5l3 2'/></svg>")}
.ic-bolt{--i:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M13 2L4 14h7l-1 8 9-12h-7z'/></svg>")}
.ic-star{--i:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M12 3l2.7 5.5 6 .9-4.3 4.2 1 6-5.4-2.8L6.6 19.6l1-6L3.3 9.4l6-.9z'/></svg>")}
.ic-trash{--i:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M4 7h16M9 7V4h6v3M6 7l1 13h10l1-13'/></svg>")}
.ic-upload{--i:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M12 16V4M7 9l5-5 5 5'/><path d='M4 20h16'/></svg>")}
.ic-download{--i:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M12 4v12M7 11l5 5 5-5'/><path d='M4 20h16'/></svg>")}
.ic-move{--i:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M5 9l-3 3 3 3M9 5l3-3 3 3M15 19l-3 3-3-3M19 9l3 3-3 3M2 12h20M12 2v20'/></svg>")}
.ic-search{--i:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><circle cx='11' cy='11' r='7'/><path d='M21 21l-4-4'/></svg>")}
.ic-menu{--i:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round'><path d='M4 6h16M4 12h16M4 18h16'/></svg>")}
.ic-gear{--i:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><circle cx='12' cy='12' r='3'/><path d='M19 12a7 7 0 0 0-.1-1.3l2-1.5-2-3.5-2.4 1a7 7 0 0 0-2.2-1.3L14 2h-4l-.3 2.4a7 7 0 0 0-2.2 1.3l-2.4-1-2 3.5 2 1.5A7 7 0 0 0 5 12a7 7 0 0 0 .1 1.3l-2 1.5 2 3.5 2.4-1a7 7 0 0 0 2.2 1.3L10 22h4l.3-2.4a7 7 0 0 0 2.2-1.3l2.4 1 2-3.5-2-1.5A7 7 0 0 0 19 12z'/></svg>")}
.ic-out{--i:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M15 12H4M11 8l-4 4 4 4'/><path d='M9 4h9a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2h-9'/></svg>")}
.ic-dots{--i:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='currentColor'><circle cx='5' cy='12' r='2'/><circle cx='12' cy='12' r='2'/><circle cx='19' cy='12' r='2'/></svg>")}
.ic-share{--i:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><circle cx='18' cy='5' r='3'/><circle cx='6' cy='12' r='3'/><circle cx='18' cy='19' r='3'/><path d='M8.6 13.5l6.8 4M15.4 6.5l-6.8 4'/></svg>")}

/* ==================== LANDING ==================== */
.logo{width:1.4em;height:1.4em;border-radius:6px;background:var(--grad);display:inline-block;vertical-align:-.28em}
.brand{display:inline-flex;align-items:center;gap:.5rem;font:800 1.2rem/1 var(--head);color:var(--ink)}
.brand:hover{text-decoration:none}
.brand b{color:var(--brand);font-weight:800}
.lhead{max-width:1160px;margin:0 auto;padding:1.1rem 1.4rem;display:flex;align-items:center;justify-content:space-between}
.lnav{display:flex;align-items:center;gap:.7rem}
.lnav a{color:var(--muted);font-weight:600;padding:.4rem .3rem}
.hero{max-width:1160px;margin:0 auto;padding:3rem 1.4rem 2rem;display:grid;grid-template-columns:1.15fr .85fr;gap:2.5rem;align-items:center}
.hero h1{font-size:clamp(2rem,4.6vw,3.4rem);font-weight:800}
.hero h1 em{font-style:normal;background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.lead{font-size:1.12rem;color:var(--muted);max-width:38ch;margin:1rem 0 1.6rem}
.hero-cta{display:flex;gap:.8rem;flex-wrap:wrap}
.hero-note{color:var(--muted);font-size:.85rem;margin-top:1rem}
.hero-art{position:relative;height:340px}
.ha-card{position:absolute;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);
  box-shadow:var(--shadow-lg);padding:.9rem 1.1rem;display:flex;align-items:center;gap:.8rem;width:250px}
.ha-card .ic{font-size:1.7rem;color:var(--brand)}
.ha-card b{display:block;font:600 .95rem/1.2 var(--sans)}
.ha-card small{color:var(--muted)}
.ha-1{top:10px;left:0;transform:rotate(-4deg)}
.ha-2{top:120px;right:0;transform:rotate(3deg);z-index:2}
.ha-3{bottom:6px;left:26px;transform:rotate(-2deg)}
.feats{max-width:1160px;margin:2rem auto;padding:2rem 1.4rem;display:grid;grid-template-columns:repeat(3,1fr);gap:1.3rem}
.feat{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:1.5rem}
.feat h3{font-size:1.12rem;margin:.6rem 0 .3rem}
.feat p{color:var(--muted);margin:0;font-size:.95rem}
.how{max-width:1000px;margin:1rem auto;padding:2rem 1.4rem;text-align:center}
.how h2{font-size:clamp(1.6rem,3vw,2.2rem)}
.steps{display:grid;grid-template-columns:repeat(3,1fr);gap:1.3rem;margin-top:1.6rem;text-align:left}
.step{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:1.4rem}
.step .num{display:inline-grid;place-items:center;width:2rem;height:2rem;border-radius:50%;background:var(--grad);color:#fff;font-weight:700;margin-bottom:.6rem}
.step h4{margin:.2rem 0 .3rem}
.step p{color:var(--muted);margin:0;font-size:.92rem}
.cta-band{max-width:1160px;margin:2rem auto;padding:3rem 1.4rem;text-align:center;background:var(--grad);border-radius:22px;color:#fff}
.cta-band h2{color:#fff;font-size:clamp(1.6rem,3vw,2.3rem)}
.cta-band .btn{background:#fff;color:var(--brand-ink)}
.lfoot{border-top:1px solid var(--line);margin-top:2rem}
.lfoot-in{max-width:1160px;margin:0 auto;padding:2.4rem 1.4rem 1rem;display:flex;justify-content:space-between;gap:2rem;flex-wrap:wrap}
.lfoot nav{display:flex;flex-direction:column;gap:.5rem}
.lfoot nav a{color:var(--muted);font-weight:500}
.copy{max-width:1160px;margin:0 auto;padding:1rem 1.4rem 2rem;color:var(--muted);font-size:.85rem}

/* ==================== APP ==================== */
.app{display:grid;grid-template-columns:250px 1fr;min-height:100vh}
.side{background:var(--surface);border-right:1px solid var(--line);display:flex;flex-direction:column;padding:1.1rem .9rem;position:sticky;top:0;height:100vh}
.side .brand{padding:.2rem .5rem 1.2rem}
.snav{display:flex;flex-direction:column;gap:.2rem;flex:1}
.snav button{display:flex;align-items:center;gap:.7rem;background:none;border:0;color:var(--muted);cursor:pointer;
  font:600 .95rem/1 var(--sans);padding:.65rem .7rem;border-radius:9px;text-align:left;width:100%}
.snav button .ic{font-size:1.15rem}
.snav button:hover{background:var(--surface-2);color:var(--ink)}
.snav button.active{background:color-mix(in srgb,var(--brand) 14%,transparent);color:var(--brand)}
.storage{padding:.8rem .7rem}
.storage .bar{height:7px;background:var(--surface-2);border-radius:99px;overflow:hidden;margin-bottom:.4rem}
.storage .bar span{display:block;height:100%;width:0;background:var(--grad);transition:width .4s}
.storage small{color:var(--muted);font-size:.8rem}
.side-foot{border-top:1px solid var(--line);padding-top:.6rem;display:flex;flex-direction:column;gap:.2rem}
.content{display:flex;flex-direction:column;min-width:0}
.topbar{display:flex;align-items:center;gap:.8rem;padding:.8rem 1.2rem;border-bottom:1px solid var(--line);background:var(--surface);position:sticky;top:0;z-index:20}
.menu-btn{display:none}
.crumbs{display:flex;align-items:center;gap:.3rem;font-weight:600;min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.crumbs a{color:var(--muted);cursor:pointer}
.crumbs a:hover{color:var(--brand)}
.crumbs .sep{color:var(--line)}
.crumbs .cur{color:var(--ink)}
.search{flex:1;max-width:420px;display:flex;align-items:center;gap:.5rem;background:var(--surface-2);border:1px solid var(--line);border-radius:99px;padding:.35rem .9rem;margin-left:auto}
.search .ic{color:var(--muted)}
.search input{background:none;border:0;padding:.25rem 0;flex:1}
.search input:focus{outline:none;box-shadow:none}
.topactions{display:flex;gap:.5rem}
.avatar{width:38px;height:38px;border-radius:50%;background:var(--grad);color:#fff;border:0;cursor:pointer;font:700 .9rem/1 var(--sans)}
.verify-banner{display:flex;align-items:center;gap:.6rem;background:#fff7ed;color:#9a3412;border-bottom:1px solid #fed7aa;padding:.6rem 1.2rem;font-size:.9rem}
:root[data-theme=dark] .verify-banner,@media(prefers-color-scheme:dark){:root:not([data-theme=light]) .verify-banner{background:#3a2a13;color:#fcd9a8;border-color:#5a3d1a}}
.verify-banner .linklike{color:#9a3412;text-decoration:underline;font-weight:600}
.verify-banner .x{margin-left:auto;background:none;border:0;font-size:1.2rem;cursor:pointer;color:inherit}
.selbar{display:flex;align-items:center;gap:.6rem;padding:.55rem 1.2rem;background:color-mix(in srgb,var(--brand) 10%,var(--surface));border-bottom:1px solid var(--line)}
.dropzone{flex:1;padding:1.2rem;position:relative}
.view-head{font:700 1.3rem/1.2 var(--head);margin:.2rem .2rem 1rem}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:.9rem}
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:.9rem;cursor:pointer;
  position:relative;transition:border-color .15s,box-shadow .15s,transform .05s;user-select:none}
.card:hover{border-color:var(--brand);box-shadow:var(--shadow)}
.card.sel{border-color:var(--brand);box-shadow:0 0 0 2px var(--brand)}
.card .thumb{height:96px;border-radius:9px;background:var(--surface-2);display:grid;place-items:center;margin-bottom:.6rem;overflow:hidden}
.card .thumb img{width:100%;height:100%;object-fit:cover}
.card .thumb .ic{font-size:2.4rem;color:var(--brand)}
.card .cname{font:600 .9rem/1.25 var(--sans);word-break:break-word;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.card .cmeta{color:var(--muted);font-size:.78rem;margin-top:.2rem}
.card .cdots{position:absolute;top:.5rem;right:.5rem;opacity:0;background:var(--surface);border:1px solid var(--line);border-radius:7px}
.card:hover .cdots,.card .cdots.open,.card:focus-within .cdots{opacity:1}
.card:focus-visible{outline:2px solid var(--brand);outline-offset:2px}
.card .ccheck{position:absolute;top:.5rem;left:.5rem;width:21px;height:21px;border-radius:6px;border:2px solid var(--line);background:var(--surface);cursor:pointer;opacity:0;z-index:2;padding:0;display:grid;place-items:center}
.card:hover .ccheck,.card.sel .ccheck,.card:focus-within .ccheck{opacity:1}
.card.sel .ccheck{background:var(--brand);border-color:var(--brand)}
.card.sel .ccheck::after{content:"✓";color:#fff;font-size:12px;line-height:1}
.card .cname .ic-star{color:var(--accent);margin-right:.25em;vertical-align:-.12em}
.sortsel{border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:var(--radius-sm);padding:.5rem .6rem;font:600 .85rem var(--sans);cursor:pointer}
@media(hover:none){.card .cdots,.card .ccheck{opacity:1}}
.empty{text-align:center;color:var(--muted);padding:4rem 1rem}
.empty .ic{font-size:3rem;opacity:.4;display:block;margin:0 auto .8rem}
.loading{text-align:center;color:var(--muted);padding:3rem}
.drop-overlay{position:fixed;inset:0;background:color-mix(in srgb,var(--brand) 18%,rgba(0,0,0,.4));display:none;place-items:center;z-index:50;pointer-events:none}
.drop-overlay.on{display:grid}
.drop-overlay div{background:var(--surface);border:3px dashed var(--brand);border-radius:20px;padding:3rem 4rem;font:700 1.3rem var(--head);color:var(--brand)}

/* ---- modal / toast / ctx ---- */
.modal-bg{position:fixed;inset:0;background:rgba(6,12,24,.55);display:grid;place-items:center;z-index:100;padding:1rem;backdrop-filter:blur(2px)}
.modal{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow-lg);width:100%;max-width:460px;max-height:90vh;overflow:auto;padding:1.6rem}
.modal.wide{max-width:720px}
.modal h2{font-size:1.3rem;margin-bottom:.3rem}
.modal .sub{color:var(--muted);margin:0 0 1rem;font-size:.92rem}
.modal .row{display:flex;gap:.6rem;justify-content:flex-end;margin-top:1.2rem;flex-wrap:wrap}
.modal .x{position:absolute;top:1rem;right:1rem}
.modal-bg .modal{position:relative}
.seg{display:flex;gap:.4rem;background:var(--surface-2);padding:.25rem;border-radius:10px;margin:.3rem 0}
.seg button{flex:1;border:0;background:none;padding:.5rem;border-radius:7px;cursor:pointer;font:600 .88rem var(--sans);color:var(--muted)}
.seg button.on{background:var(--surface);color:var(--brand);box-shadow:var(--shadow)}
.tabbar{display:flex;gap:1rem;border-bottom:1px solid var(--line);margin-bottom:1rem}
.tabbar button{background:none;border:0;border-bottom:2px solid transparent;padding:.6rem .1rem;cursor:pointer;color:var(--muted);font:600 .92rem var(--sans)}
.tabbar button.on{color:var(--brand);border-color:var(--brand)}
.list-row{display:flex;align-items:center;gap:.7rem;padding:.6rem 0;border-bottom:1px solid var(--line-2)}
.list-row:last-child{border:0}
.list-row .nm{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pill{display:inline-block;padding:.15rem .55rem;border-radius:99px;font-size:.76rem;font-weight:600;background:var(--surface-2);color:var(--muted)}
.toast-root{position:fixed;bottom:1.2rem;left:50%;transform:translateX(-50%);z-index:200;display:flex;flex-direction:column;gap:.5rem;align-items:center}
.toast{background:#0f172a;color:#fff;padding:.7rem 1.1rem;border-radius:10px;box-shadow:var(--shadow-lg);font-size:.9rem;animation:tin .2s}
.toast.err{background:var(--bad)}
.toast.ok{background:var(--good)}
@keyframes tin{from{opacity:0;transform:translateY(8px)}}
.ctx{position:fixed;z-index:150;background:var(--surface);border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow-lg);padding:.4rem;min-width:180px}
.ctx button{display:flex;align-items:center;gap:.6rem;width:100%;background:none;border:0;text-align:left;padding:.5rem .6rem;border-radius:7px;cursor:pointer;color:var(--ink);font:500 .9rem var(--sans)}
.ctx button:hover{background:var(--surface-2)}
.ctx button.danger{color:var(--bad)}
.ctx .div{height:1px;background:var(--line);margin:.3rem 0}
.up-item{display:flex;align-items:center;gap:.6rem;font-size:.85rem;margin:.4rem 0}
.up-item .upbar{flex:1;height:6px;background:var(--surface-2);border-radius:99px;overflow:hidden}
.up-item .upbar span{display:block;height:100%;background:var(--grad);width:0;transition:width .2s}

/* progress-preview modal image */
.prevbox{max-width:100%;max-height:70vh;display:block;margin:0 auto;border-radius:8px}
.prevframe{width:100%;height:70vh;border:0;border-radius:8px;background:#fff}

/* admin table */
.tbl{width:100%;border-collapse:collapse;font-size:.88rem}
.tbl th,.tbl td{text-align:left;padding:.55rem .5rem;border-bottom:1px solid var(--line-2);white-space:nowrap}
.tbl th{color:var(--muted);font-weight:600}
.tbl .num{text-align:right}
.tblwrap{overflow-x:auto}
.stat-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:1rem;margin-bottom:1.4rem}
.stat{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:1.1rem}
.stat b{font:800 1.6rem var(--head);display:block}
.stat small{color:var(--muted)}

/* ==================== IMAGE LIGHTBOX ==================== */
.lightbox{position:fixed;inset:0;z-index:300;background:rgba(6,10,20,.96);display:flex;flex-direction:column;animation:lbfade .15s}
@keyframes lbfade{from{opacity:0}}
.lb-bar{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.7rem 1rem;color:#fff;flex:none}
.lb-title{font:600 .95rem/1.3 var(--sans);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lb-actions{display:flex;align-items:center;gap:.6rem;flex:none}
.lb-count{color:rgba(255,255,255,.7);font-size:.85rem}
.lb-btn{width:38px;height:38px;border-radius:50%;border:0;background:rgba(255,255,255,.12);color:#fff;font-size:1.1rem;cursor:pointer;display:grid;place-items:center;text-decoration:none}
.lb-btn:hover{background:rgba(255,255,255,.24)}
.lb-stage{flex:1;position:relative;overflow:hidden;display:grid;place-items:center;min-height:0}
.lb-img{max-width:100%;max-height:100%;object-fit:contain;transform-origin:center center;cursor:zoom-in;user-select:none;-webkit-user-drag:none;touch-action:none;will-change:transform}
.lb-img.zoomed{cursor:grab}
.lb-nav{position:absolute;top:50%;transform:translateY(-50%);width:46px;height:46px;border-radius:50%;border:0;background:rgba(255,255,255,.14);color:#fff;font-size:2rem;line-height:1;cursor:pointer;display:grid;place-items:center}
.lb-nav:hover{background:rgba(255,255,255,.28)}
.lb-prev{left:12px}
.lb-next{right:12px}
@media(max-width:560px){.lb-nav{width:40px;height:40px;font-size:1.6rem}}

/* ==================== SHARE VIEWER ==================== */
.share-body{background:var(--bg);min-height:100vh;display:flex;align-items:flex-start;justify-content:center;padding:2rem 1rem}
.share-wrap{width:100%;max-width:760px}
.share-card,.share-panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:2rem;text-align:center}
.share-logo{font:800 1.15rem var(--head);color:var(--brand);margin-bottom:1rem}
.share-name{word-break:break-word;font-size:1.3rem;margin:.6rem 0 .2rem}
.share-file{margin:1rem 0}
.prev-img{max-height:60vh;border-radius:10px}
.prev-pdf{width:100%;height:70vh;border:0;border-radius:10px;background:#fff}
.prev-icon{font-size:4rem;color:var(--brand);height:120px;display:grid;place-items:center}
.share-panel{text-align:left}
.share-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:1rem}
.crumbs{color:var(--muted)}
.slist{border:1px solid var(--line);border-radius:10px;overflow:hidden;margin-top:.6rem}
.srow{display:flex;align-items:center;gap:.8rem;padding:.8rem 1rem;border-bottom:1px solid var(--line-2);color:var(--ink)}
.srow:last-child{border:0}
.srow:hover{background:var(--surface-2);text-decoration:none}
.srow .ic{font-size:1.3rem;color:var(--brand)}
.srow .nm{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.srow .mt{color:var(--muted);font-size:.82rem}
.foot{margin-top:1rem;font-size:.85rem}

/* ==================== STATIC PAGES ==================== */
.pagewrap{max-width:820px;margin:0 auto;padding:2.5rem 1.4rem 3rem}
.prose h1{font-size:clamp(1.8rem,4vw,2.6rem);margin-bottom:.6rem}
.prose h2{font-size:1.4rem;margin:2rem 0 .6rem}
.prose h3{font-size:1.1rem;margin:1.4rem 0 .4rem}
.prose p,.prose li{color:var(--ink);font-size:1rem}
.prose .lead{color:var(--muted);font-size:1.12rem;margin-bottom:1.5rem}
.prose ul{padding-left:1.2rem}
.prose li{margin:.35rem 0}
.prose .muted{color:var(--muted)}
.faqitem{border:1px solid var(--line);border-radius:var(--radius);padding:1rem 1.2rem;margin:.7rem 0;background:var(--surface)}
.faqitem h3{margin:0 0 .3rem;font-size:1.05rem}
.faqitem p{margin:0;color:var(--muted)}
.formcard{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:1.6rem;max-width:560px}
.formcard .hp{position:absolute;left:-9999px}
.notice{padding:.9rem 1.1rem;border-radius:10px;margin:1rem 0;font-size:.95rem}
.notice.ok{background:color-mix(in srgb,var(--good) 14%,var(--surface));color:var(--good)}
.notice.err{background:color-mix(in srgb,var(--bad) 12%,var(--surface));color:var(--bad)}

/* ==================== RESPONSIVE ==================== */
@media(max-width:900px){
  .hero{grid-template-columns:1fr;padding-top:1.5rem}
  .hero-art{display:none}
  .feats,.steps{grid-template-columns:1fr 1fr}
}
@media(max-width:768px){
  .app{grid-template-columns:1fr}
  .side{position:fixed;left:-280px;top:0;bottom:0;z-index:60;transition:left .2s;width:260px;height:100%}
  .app.nav-open .side{left:0}
  .app.nav-open::after{content:"";position:fixed;inset:0;background:rgba(0,0,0,.4);z-index:55}
  .menu-btn{display:inline-flex}
  .topactions .btn span:not(.ic){display:none}
  .search{max-width:none}
}
@media(max-width:560px){
  .feats,.steps{grid-template-columns:1fr}
  .lnav a{display:none}
  .grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr))}
  .search{max-width:150px;min-width:96px}
  .sortsel{display:none}
  .crumbs{font-size:.95rem}
}
@media(prefers-reduced-motion:reduce){*{transition:none!important;animation-duration:.001ms!important}}
