/* ---------- Design tokens ---------- */
:root{
  --bg:#f7f7fb;
  --surface:#ffffff;
  --surface-2:#f1f0f8;
  --border:#e3e1ee;
  --text:#18162a;
  --text-muted:#6b6880;
  --accent-1:#7c3aed;
  --accent-2:#3b82f6;
  --accent-soft:#f2effc;
  --danger:#dc2626;
  --danger-soft:#fef2f2;
  --good:#16a34a;
  --shadow:0 1px 2px rgba(24,22,42,.04), 0 8px 24px -12px rgba(24,22,42,.10);
  --radius-lg:18px;
  --radius-md:12px;
  --radius-sm:8px;
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --bg:#0c0b14;
    --surface:#15131f;
    --surface-2:#1c1a29;
    --border:#2b2840;
    --text:#eeecf7;
    --text-muted:#948fb0;
    --accent-1:#a78bfa;
    --accent-2:#60a5fa;
    --accent-soft:#211d3a;
    --danger:#f87171;
    --danger-soft:#2a1518;
    --good:#4ade80;
    --shadow:0 1px 2px rgba(0,0,0,.3), 0 8px 24px -12px rgba(0,0,0,.5);
  }
}
:root[data-theme="dark"]{
  --bg:#0c0b14;
  --surface:#15131f;
  --surface-2:#1c1a29;
  --border:#2b2840;
  --text:#eeecf7;
  --text-muted:#948fb0;
  --accent-1:#a78bfa;
  --accent-2:#60a5fa;
  --accent-soft:#211d3a;
  --danger:#f87171;
  --danger-soft:#2a1518;
  --good:#4ade80;
  --shadow:0 1px 2px rgba(0,0,0,.3), 0 8px 24px -12px rgba(0,0,0,.5);
}

*{box-sizing:border-box}
html,body{margin:0}
body{
  background:var(--bg);
  color:var(--text);
  font-family:'Inter',ui-sans-serif,system-ui,sans-serif;
  font-size:14.5px;
  -webkit-font-smoothing:antialiased;
}
button,input,textarea,select{font-family:inherit}
code,.mono{font-family:'JetBrains Mono',ui-monospace,monospace}

.brand-text{
  background-image:linear-gradient(90deg,var(--accent-1),var(--accent-2));
  -webkit-background-clip:text;background-clip:text;color:transparent;
}
.brand-fill{background-image:linear-gradient(135deg,var(--accent-1),var(--accent-2));}

.card{
  background:var(--surface);
  border:1px solid var(--border);
  border-radius:var(--radius-lg);
  box-shadow:var(--shadow);
}

.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:7px;
  height:36px;padding:0 15px;border-radius:10px;font-size:13.5px;font-weight:560;
  border:1px solid transparent;cursor:pointer;transition:filter .12s, background .12s, border-color .12s;
  white-space:nowrap;
}
.btn:disabled{opacity:.5;cursor:not-allowed}
.btn-sm{height:30px;padding:0 10px;font-size:12.5px;border-radius:8px}
.btn-primary{color:#fff;background-image:linear-gradient(90deg,var(--accent-1),var(--accent-2));box-shadow:0 4px 14px -4px rgba(124,58,237,.45)}
.btn-primary:hover{filter:brightness(1.06)}
.btn-outline{background:var(--surface);border-color:var(--border);color:var(--text)}
.btn-outline:hover{background:var(--surface-2)}
.btn-ghost{background:transparent;color:var(--text-muted)}
.btn-ghost:hover{background:var(--surface-2);color:var(--text)}
.btn-danger-outline{background:var(--surface);border-color:color-mix(in srgb, var(--danger) 35%, var(--border));color:var(--danger)}
.btn-danger-outline:hover{background:var(--danger-soft)}

.input{
  height:36px;width:100%;border-radius:10px;border:1px solid var(--border);
  background:var(--surface);color:var(--text);padding:0 12px;font-size:13.5px;outline:none;
  transition:border-color .12s, box-shadow .12s;
}
.input::placeholder{color:var(--text-muted)}
.input:focus{border-color:var(--accent-1);box-shadow:0 0 0 3px color-mix(in srgb, var(--accent-1) 16%, transparent)}

.badge{
  display:inline-flex;align-items:center;gap:6px;border-radius:999px;
  border:1px solid var(--border);background:var(--surface-2);color:var(--text-muted);
  font-size:11.5px;font-weight:600;letter-spacing:.02em;padding:5px 10px;
}
.badge-dot{width:6px;height:6px;border-radius:50%}

.tabbar{display:inline-flex;gap:3px;background:var(--surface-2);padding:4px;border-radius:12px;border:1px solid var(--border);flex-wrap:wrap}
.tab{border:none;background:transparent;padding:7px 14px;border-radius:9px;font-size:13px;font-weight:560;color:var(--text-muted);cursor:pointer;transition:background .12s,color .12s;white-space:nowrap;display:inline-flex;align-items:center;gap:6px}
.tab[data-active="true"]{background:var(--surface);color:var(--accent-1);box-shadow:0 1px 2px rgba(0,0,0,.06)}

.color-well{position:relative;overflow:hidden}
.color-well input[type=color]{position:absolute;inset:-8px;width:calc(100% + 16px);height:calc(100% + 16px);border:none;padding:0;cursor:pointer;background:none}

.ql-toolbar.ql-snow{border:none;border-bottom:1px solid var(--border);padding:9px 14px;background:var(--surface-2);border-top-left-radius:var(--radius-lg);border-top-right-radius:var(--radius-lg)}
.ql-container.ql-snow{border:none;font-family:inherit;font-size:14px;border-bottom-left-radius:var(--radius-lg);border-bottom-right-radius:var(--radius-lg)}
.ql-editor{min-height:260px;padding:18px 20px;color:var(--text)}
.ql-editor.ql-blank::before{color:var(--text-muted);font-style:normal}
.ql-snow .ql-picker,.ql-snow .ql-stroke{color:var(--text-muted);stroke:var(--text-muted)}
.ql-snow .ql-fill{fill:var(--text-muted)}
.ql-snow .ql-picker-options{background:var(--surface);border-color:var(--border) !important;color:var(--text)}
.ql-snow.ql-toolbar button:hover .ql-stroke,.ql-snow.ql-toolbar button.ql-active .ql-stroke{stroke:var(--accent-1)}
.ql-snow.ql-toolbar button:hover .ql-fill,.ql-snow.ql-toolbar button.ql-active .ql-fill{fill:var(--accent-1)}
.ql-snow.ql-toolbar button:hover,.ql-snow.ql-toolbar button.ql-active,.ql-snow .ql-picker-label:hover{color:var(--accent-1)}

.thin-scroll::-webkit-scrollbar{height:8px;width:8px}
.thin-scroll::-webkit-scrollbar-thumb{background:var(--border);border-radius:99px}
.thin-scroll::-webkit-scrollbar-track{background:transparent}

/* ---------- Login ---------- */
.login-screen{min-height:100vh;display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden}
.blob{position:absolute;border-radius:50%;filter:blur(70px);opacity:.22;pointer-events:none}

/* ---------- App shell / sidebar ---------- */
.app-layout{display:flex;min-height:100vh}
.sidebar{width:230px;flex-shrink:0;background:var(--surface);border-right:1px solid var(--border);padding:18px 12px;display:flex;flex-direction:column;position:sticky;top:0;height:100vh}
.sidebar-brand{display:flex;align-items:center;gap:9px;padding:6px 8px 20px}
.nav-item{display:flex;align-items:center;gap:10px;padding:9px 11px;border-radius:10px;font-size:13.5px;font-weight:560;color:var(--text-muted);cursor:pointer;border:none;background:none;text-align:left;width:100%;margin-bottom:2px}
.nav-item:hover{background:var(--surface-2);color:var(--text)}
.nav-item[data-active="true"]{background:var(--accent-soft);color:var(--accent-1)}
.sidebar-footer{margin-top:auto;padding:10px 8px 4px;font-size:11px;color:var(--text-muted)}
.app-main{flex:1;min-width:0}
.page-pad{max-width:1080px;margin:0 auto;padding:30px 28px 64px}

/* ---------- Overview ---------- */
.stat-tile{padding:18px 20px;border-radius:16px;border:1px solid var(--border);background:var(--surface);box-shadow:var(--shadow)}
.stat-num{font-size:26px;font-weight:700;font-variant-numeric:tabular-nums;line-height:1.1}
.stat-label{font-size:12px;color:var(--text-muted);margin-top:4px}

/* ---------- Folders ---------- */
.folder-card{display:flex;flex-direction:column;gap:10px;padding:18px;border-radius:16px;border:1px solid var(--border);background:var(--surface);cursor:pointer;text-align:left;box-shadow:var(--shadow);transition:border-color .12s,transform .12s}
.folder-card:hover{border-color:color-mix(in srgb, var(--accent-1) 35%, var(--border));transform:translateY(-1px)}
.crumb{color:var(--text-muted);cursor:pointer}
.crumb:hover{color:var(--accent-1)}

/* ---------- Progress ---------- */
.progress-track{height:8px;border-radius:99px;background:var(--surface-2);overflow:hidden;border:1px solid var(--border)}
.progress-fill{height:100%;border-radius:99px;background-image:linear-gradient(90deg,var(--accent-1),var(--accent-2));transition:width .25s}

/* ---------- Tasks ---------- */
.task-row{display:flex;align-items:center;gap:11px;padding:11px 2px;border-bottom:1px solid var(--border)}
.task-row:last-child{border-bottom:none}
.checkbox{width:19px;height:19px;border-radius:6px;border:1.5px solid var(--border);display:flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;background:var(--surface);color:#fff}
.checkbox[data-checked="true"]{background-image:linear-gradient(135deg,var(--accent-1),var(--accent-2));border-color:transparent}

/* ---------- Logo drop ---------- */
.logo-drop{width:152px;height:152px;border-radius:18px;border:2px dashed var(--border);display:flex;align-items:center;justify-content:center;cursor:pointer;overflow:hidden;background:var(--surface-2);position:relative;flex-shrink:0}
.logo-drop img{width:100%;height:100%;object-fit:contain;background:var(--surface)}

/* ---------- QR ---------- */
.qr-canvas-wrap{width:100%;min-height:220px;display:flex;align-items:center;justify-content:center;border-radius:14px;border:1px dashed var(--border);background:var(--surface-2);padding:20px}
.qr-canvas-wrap img,.qr-canvas-wrap canvas{max-width:100%;border-radius:8px}
.qr-placeholder{color:var(--text-muted);font-size:13px;text-align:center}
.qr-grid{display:grid;grid-template-columns:repeat(auto-fill, minmax(150px, 1fr));gap:14px}
.qr-item{border:1px solid var(--border);border-radius:14px;padding:14px;background:var(--surface);display:flex;flex-direction:column;gap:8px;align-items:center;text-align:center}
.qr-item img{width:100%;max-width:120px;border-radius:8px;border:1px solid var(--border)}
.qr-item a{font-size:11px;color:var(--accent-1);text-decoration:none;word-break:break-all}
.qr-item a:hover{text-decoration:underline}

/* ---------- Images ---------- */
.image-tile{position:relative;aspect-ratio:1;border-radius:12px;overflow:hidden;border:1px solid var(--border);background:var(--surface-2)}
.image-tile img{width:100%;height:100%;object-fit:cover;display:block}
.image-tile .remove-image{position:absolute;top:6px;right:6px;width:24px;height:24px;border-radius:7px;background:rgba(0,0,0,.55);color:#fff;border:none;cursor:pointer}

@media (max-width:760px){
  .sidebar{position:fixed;left:0;top:0;bottom:0;transform:translateX(-100%);transition:transform .18s;z-index:40}
  .sidebar.open{transform:translateX(0)}
  .page-pad{padding:20px 16px 50px}
}
@media (prefers-reduced-motion: reduce){*{transition:none !important;animation:none !important}}
