  :root{
    --paper:#F5F6EF;
    --paper-raised:#FFFFFF;
    --paper-sunken:#ECEDE3;
    --ink:#21231F;
    --ink-soft:#5B5D51;
    --ink-faint:#93958A;
    --line:#DCDBCB;
    --line-strong:#C6C4AF;
    --brand:#1F4E48;
    --brand-strong:#143530;
    --brand-tint:#E4EEEA;
    --gold:#A9793A;
    --gold-tint:#F2E7D3;
    --good:#3E7D53;
    --good-tint:#E3EFE3;
    --warn:#B07A22;
    --warn-tint:#F5EAD3;
    --bad:#AE4438;
    --bad-tint:#F6E4E1;
    --shadow: 0 1px 2px rgba(33,35,31,0.06), 0 8px 24px -12px rgba(33,35,31,0.18);
    --radius: 10px;
  }
  @media (prefers-color-scheme: dark){
    :root:not([data-theme="light"]){
      --paper:#15170F;
      --paper-raised:#1D2016;
      --paper-sunken:#10120C;
      --ink:#EDEEE3;
      --ink-soft:#AEB09F;
      --ink-faint:#75776A;
      --line:#33352A;
      --line-strong:#454736;
      --brand:#6FC0AE;
      --brand-strong:#8FD4C3;
      --brand-tint:#1D2E29;
      --gold:#D8AC72;
      --gold-tint:#332A1B;
      --good:#7FCB98;
      --good-tint:#1C2E20;
      --warn:#E0B368;
      --warn-tint:#332811;
      --bad:#E39288;
      --bad-tint:#33201D;
      --shadow: 0 1px 2px rgba(0,0,0,0.3), 0 8px 24px -12px rgba(0,0,0,0.5);
    }
  }
  :root[data-theme="dark"]{
    --paper:#15170F;
    --paper-raised:#1D2016;
    --paper-sunken:#10120C;
    --ink:#EDEEE3;
    --ink-soft:#AEB09F;
    --ink-faint:#75776A;
    --line:#33352A;
    --line-strong:#454736;
    --brand:#6FC0AE;
    --brand-strong:#8FD4C3;
    --brand-tint:#1D2E29;
    --gold:#D8AC72;
    --gold-tint:#332A1B;
    --good:#7FCB98;
    --good-tint:#1C2E20;
    --warn:#E0B368;
    --warn-tint:#332811;
    --bad:#E39288;
    --bad-tint:#33201D;
    --shadow: 0 1px 2px rgba(0,0,0,0.3), 0 8px 24px -12px rgba(0,0,0,0.5);
  }

  *{box-sizing:border-box;}
  html,body{margin:0;padding:0;}
  body{
    background:var(--paper);
    color:var(--ink);
    font-family:'Public Sans', ui-sans-serif, system-ui, sans-serif;
    font-size:15px;
    line-height:1.5;
    -webkit-font-smoothing:antialiased;
  }
  h1,h2,h3{
    font-family:'Bitter', Georgia, 'Times New Roman', serif;
    font-weight:700;
    text-wrap:balance;
    margin:0;
    color:var(--ink);
  }
  .mono{ font-family:'IBM Plex Mono', ui-monospace, 'SFMono-Regular', monospace; font-variant-numeric:tabular-nums; }
  a{color:var(--brand);}
  button{font-family:inherit;}
  ::selection{ background:var(--gold-tint); }

  .app{ max-width:1180px; margin:0 auto; padding:0 20px 80px; }

  /* ---------- Login screen ---------- */
  .login-screen{
    min-height:100vh; display:flex; align-items:center; justify-content:center;
    padding:24px; background:var(--paper);
  }
  .login-card{
    background:var(--paper-raised); border:1px solid var(--line); border-radius:var(--radius);
    box-shadow:var(--shadow); padding:32px 30px; width:100%; max-width:380px;
  }
  .login-demo-links{
    margin-top:20px; padding-top:16px; border-top:1px solid var(--line);
    font-size:12px; color:var(--ink-faint);
  }

  /* ---------- Top bar ---------- */
  .topbar{
    display:flex; align-items:center; justify-content:space-between;
    gap:16px; flex-wrap:wrap;
    padding:22px 0 18px;
    border-bottom:1px solid var(--line);
    margin-bottom:28px;
  }
  .wordmark{ display:flex; align-items:baseline; gap:10px; }
  .wordmark .mark{
    display:inline-flex; align-items:center; justify-content:center;
    width:36px;height:36px; border-radius:8px;
    background:var(--brand); color:var(--paper-raised);
    font-family:'Bitter',serif; font-weight:700; font-size:16px;
  }
  .wordmark h1{ font-size:20px; letter-spacing:-0.01em; }
  .wordmark .sub{ color:var(--ink-faint); font-size:12.5px; letter-spacing:.03em; text-transform:uppercase; margin-top:2px;}

  .role-switch-label{
    font-size:12px; font-weight:700; color:var(--brand); margin-bottom:6px;
    letter-spacing:.01em;
  }
  .role-switch{
    display:inline-flex; background:var(--paper-sunken); border:2px solid var(--brand);
    border-radius:999px; padding:4px; gap:2px; box-shadow:0 1px 3px rgba(0,0,0,.08);
  }
  .role-switch button{
    border:none; background:transparent; padding:8px 18px; border-radius:999px;
    font-size:14px; font-weight:700; color:var(--ink-soft); cursor:pointer;
    transition:background .15s ease, color .15s ease;
  }
  .role-switch button.active{ background:var(--brand); color:var(--paper-raised); }
  .role-switch button:not(.active):hover{ color:var(--ink); background:var(--paper-raised); }

  .persona-picker{
    display:flex; align-items:center; gap:8px; margin-top:10px;
  }
  .persona-picker label{ font-size:12.5px; color:var(--ink-faint); text-transform:uppercase; letter-spacing:.04em; }
  select.persona{
    font-family:inherit; font-size:13.5px; font-weight:600; color:var(--ink);
    background:var(--paper-raised); border:1px solid var(--line-strong); border-radius:7px;
    padding:6px 10px; cursor:pointer;
  }

  .demo-banner{
    background:var(--gold-tint); border:1px solid var(--gold);
    color:var(--ink); border-radius:var(--radius);
    padding:10px 16px; font-size:13px; margin-bottom:24px;
    display:flex; gap:10px; align-items:flex-start;
  }
  .demo-banner b{ color:var(--gold); }

  .notif-banner{
    background:var(--gold-tint); border:1px solid var(--gold); border-radius:var(--radius);
    padding:14px 16px; margin-bottom:22px; display:flex; gap:12px; align-items:flex-start;
    font-size:13.5px;
  }
  .notif-banner .bell{ font-size:20px; line-height:1; flex:none; }
  .notif-banner b{ font-family:'Bitter',serif; font-size:15px; display:block; margin-bottom:2px; }

  /* ---------- Layout bits ---------- */
  .view{ display:none; }
  .view.active{ display:block; }

  .stat-row{
    display:grid; grid-template-columns:repeat(auto-fit,minmax(160px,1fr));
    gap:12px; margin-bottom:26px;
  }
  .stat-card{
    background:var(--paper-raised); border:1px solid var(--line); border-radius:var(--radius);
    padding:16px 18px; box-shadow:var(--shadow);
  }
  .stat-card .label{ font-size:12px; text-transform:uppercase; letter-spacing:.05em; color:var(--ink-faint); font-weight:600; }
  .stat-card .value{ font-family:'Bitter',serif; font-size:28px; font-weight:700; margin-top:6px; }
  .stat-card .value .unit{ font-family:'Public Sans',sans-serif; font-size:14px; font-weight:600; color:var(--ink-soft); margin-left:3px;}

  section.panel{
    background:var(--paper-raised); border:1px solid var(--line); border-radius:var(--radius);
    box-shadow:var(--shadow); margin-bottom:22px; overflow:hidden;
  }
  .panel-head{
    display:flex; align-items:center; justify-content:space-between; gap:12px;
    padding:16px 20px; border-bottom:1px solid var(--line);
    flex-wrap:wrap;
  }
  .panel-head h2{ font-size:16.5px; }
  .panel-head .desc{ font-size:12.5px; color:var(--ink-faint); margin-top:2px; font-family:'Public Sans',sans-serif; font-weight:400;}
  .panel-head .actions{ display:flex; gap:8px; }
  .panel-body{ padding:6px 20px 18px; }
  .panel-body.pad0{ padding:0; }

  table{ width:100%; border-collapse:collapse; font-size:14px; }
  thead th{
    text-align:left; font-size:11.5px; text-transform:uppercase; letter-spacing:.05em;
    color:var(--ink-faint); font-weight:600; padding:10px 8px; border-bottom:1px solid var(--line);
  }
  tbody td{ padding:12px 8px; border-bottom:1px solid var(--line); vertical-align:middle; }
  tbody tr:last-child td{ border-bottom:none; }
  .table-wrap{ overflow-x:auto; }
  td.num, th.num{ text-align:right; }
  td.note{ color:var(--ink-faint); font-size:12.5px; }

  .name-cell{ display:flex; align-items:center; gap:10px; }
  .avatar{
    width:30px;height:30px;border-radius:50%; flex:none;
    display:flex;align-items:center;justify-content:center;
    background:var(--brand-tint); color:var(--brand); font-weight:700; font-size:12.5px;
    font-family:'Bitter',serif;
  }
  .name-cell .who{ font-weight:600; }
  .name-cell .meta{ display:block; font-size:12px; color:var(--ink-faint); font-weight:400; }

  .chip{
    display:inline-flex; align-items:center; gap:5px; padding:3px 10px 3px 8px;
    border-radius:999px; font-size:12px; font-weight:600; white-space:nowrap;
  }
  .chip::before{ content:''; width:6px;height:6px;border-radius:50%; background:currentColor; }
  .chip.good{ background:var(--good-tint); color:var(--good); }
  .chip.warn{ background:var(--warn-tint); color:var(--warn); }
  .chip.bad{ background:var(--bad-tint); color:var(--bad); }
  .chip.neutral{ background:var(--paper-sunken); color:var(--ink-soft); }

  .btn{
    font-size:13px; font-weight:600; border-radius:7px; padding:8px 14px;
    border:1px solid var(--line-strong); background:var(--paper-raised); color:var(--ink);
    cursor:pointer; transition:filter .12s ease, background .12s ease;
    white-space:nowrap;
  }
  .btn:hover{ filter:brightness(0.97); }
  .btn.primary{ background:var(--brand); border-color:var(--brand); color:var(--paper-raised); }
  .btn.primary:hover{ filter:brightness(1.08); }
  .btn.danger{ background:var(--bad-tint); border-color:var(--bad); color:var(--bad); }
  .btn.danger:hover{ filter:brightness(0.96); }
  .btn.ghost{ background:transparent; border-color:transparent; color:var(--brand); padding:8px 6px;}
  .btn.small{ padding:5px 10px; font-size:12px; }
  .btn:disabled{ opacity:.45; cursor:not-allowed; }

  .plan-dots{ display:inline-flex; gap:4px; align-items:center; }
  .plan-dots .dot{ width:9px;height:9px;border-radius:50%; background:var(--line-strong); }
  .plan-dots .dot.used{ background:var(--brand); }
  .plan-label{ font-size:12px; color:var(--ink-faint); margin-left:8px; }

  .empty{ padding:30px 8px; text-align:center; color:var(--ink-faint); font-size:13.5px; }

  /* ---------- Session / info cards ---------- */
  .session-card{
    background:var(--paper-sunken); border:1px solid var(--line); border-radius:8px;
    padding:14px 16px;
  }
  .session-card .when{ font-family:'Bitter',serif; font-weight:700; font-size:17px; }
  .session-card .who{ color:var(--ink-soft); font-size:13px; margin-top:2px; }
  .session-card .note{ margin-top:8px; }
  .note{ font-size:12.5px; color:var(--ink-faint); }

  .info-box{
    background:var(--paper-sunken); border:1px solid var(--line); border-radius:8px;
    padding:12px 14px; font-size:13.5px; margin-top:14px;
  }
  .info-box .row{ display:flex; justify-content:space-between; gap:10px; margin-top:5px; }
  .info-box .row:first-child{ margin-top:0; }
  .info-box .row span:first-child{ color:var(--ink-faint); }
  .info-box.warn{ border-color:var(--warn); background:var(--warn-tint); }
  .info-box.good{ border-color:var(--good); background:var(--good-tint); }

  /* ---------- Signature / general modal ---------- */
  .overlay{
    position:fixed; inset:0; background:rgba(20,21,15,0.5);
    display:flex; align-items:center; justify-content:center; padding:20px; z-index:50;
  }
  .overlay[hidden]{ display:none; }
  .modal{
    background:var(--paper-raised); border-radius:14px; border:1px solid var(--line);
    box-shadow:var(--shadow); width:100%; max-width:460px; max-height:92vh; overflow-y:auto;
    padding:22px 22px 20px;
  }
  .modal h3{ font-size:18px; }
  .modal .sub{ color:var(--ink-soft); font-size:13.5px; margin-top:4px; }
  .sig-block{ margin-top:18px; }
  .sig-block label{ display:block; font-size:12px; text-transform:uppercase; letter-spacing:.04em; color:var(--ink-faint); font-weight:600; margin-bottom:6px; }
  canvas.sig-pad{
    width:100%; height:130px; border:1.5px dashed var(--line-strong); border-radius:8px;
    background:var(--paper-sunken); touch-action:none; display:block;
  }
  .sig-row{ display:flex; justify-content:space-between; align-items:center; margin-top:6px; }
  .sig-row .hint{ font-size:11.5px; color:var(--ink-faint); }
  .modal-actions{ display:flex; justify-content:flex-end; gap:10px; margin-top:22px; }

  .field{ margin-top:14px; }
  .field label{ display:block; font-size:12px; text-transform:uppercase; letter-spacing:.04em; color:var(--ink-faint); font-weight:600; margin-bottom:6px; }
  .field select, .field input{
    width:100%; font-family:inherit; font-size:14px; padding:9px 10px;
    border:1px solid var(--line-strong); border-radius:7px; background:var(--paper-raised); color:var(--ink);
  }

  .toast{
    position:fixed; bottom:24px; left:50%; transform:translateX(-50%);
    background:var(--brand-strong); color:var(--paper-raised); font-size:13.5px; font-weight:600;
    padding:11px 18px; border-radius:999px; box-shadow:var(--shadow); z-index:60;
    opacity:0; pointer-events:none; transition:opacity .2s ease, transform .2s ease;
    max-width:90vw; text-align:center;
  }
  .toast.show{ opacity:1; transform:translateX(-50%) translateY(-6px); }

  .two-col{ display:grid; grid-template-columns:1fr 1fr; gap:22px; }
  @media (max-width:760px){ .two-col{ grid-template-columns:1fr; } }

  .footnote{ color:var(--ink-faint); font-size:12px; margin-top:12px; }
