    *, *::before, *::after { box-sizing: border-box; }
    :root {
      --paper:#f4f1e9; --card:#fbf9f3; --ink:#1b231e; --soft:#586259;
      --green:#2e5e4e; --green-d:#1f463a; --clay:#c0623a;
      --line:#ddd6c6; --line-2:#e9e3d4;
    }
    body {
      margin:0; font-family:'Hanken Grotesk',system-ui,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif; color:var(--ink);
      background: radial-gradient(120% 90% at 100% 0%,#efe9da 0%,transparent 55%),
                  radial-gradient(110% 80% at 0% 100%,#eee7d6 0%,transparent 50%),
                  var(--paper);
      min-height:100vh;
    }

    /* ── Sticky header ──────────────────────────────────────────────── */
    .page-header {
      position:sticky; top:0; z-index:100;
      background:rgba(244,241,233,.96); backdrop-filter:blur(10px);
      border-bottom:1px solid var(--line);
      display:flex; align-items:center; justify-content:space-between;
      padding:10px 20px; gap:14px; flex-wrap:wrap;
    }
    .hdr-brand .kicker  { font-size:10px; letter-spacing:.2em; text-transform:uppercase; color:var(--clay); font-weight:700; line-height:1; }
    .hdr-brand .title   { font-family:'Fraunces',Georgia,'Times New Roman',serif; font-weight:600; font-size:clamp(20px,3vw,28px); line-height:1.05; margin:2px 0 0; letter-spacing:-.01em; }
    .hdr-brand .tagline { font-size:9px; letter-spacing:.22em; text-transform:uppercase; color:var(--clay); font-weight:600; margin:7px 0 0; line-height:1; opacity:.85; }
    .hdr-right { display:flex; align-items:center; gap:10px; }

    /* ── Tab bar ────────────────────────────────────────────────────── */
    .tab-bar { display:inline-flex; background:var(--line-2); border-radius:10px; padding:3px; gap:2px; }
    .tab { border:0; background:transparent; cursor:pointer; font:inherit; font-size:13px; font-weight:600; color:var(--soft); padding:8px 14px; border-radius:8px; transition:.15s; white-space:nowrap; }
    .tab.active { background:#fff; color:var(--green-d); box-shadow:0 2px 8px rgba(0,0,0,.07); }
    .tab:hover:not(.active) { color:var(--ink); }

    .settings-btn { background:transparent; border:1px solid var(--line); border-radius:8px; padding:8px 11px; font:inherit; font-size:15px; color:var(--soft); cursor:pointer; }
    .settings-btn:hover { background:var(--card); color:var(--ink); }
    .plans-btn { background:linear-gradient(180deg,var(--green),var(--green-d)); border:0; border-radius:8px; padding:8px 14px; font:inherit; font-size:13px; font-weight:700; color:#fff; cursor:pointer; transition:.15s; box-shadow:0 8px 20px -12px rgba(31,70,58,.8); }
    .plans-btn:hover { transform:translateY(-1px); }
    .plans-head { text-align:center; margin-bottom:22px; }
    .plans-head h2 { font-family:'Fraunces',serif; font-size:26px; font-weight:600; margin:0 0 8px; color:var(--ink); }
    .plans-head p { font-size:13px; color:var(--soft); margin:0; line-height:1.5; }
    .plans-frozen { background:#fdf4e3; border:1px solid #e7c98a; color:#8a5a00; border-radius:12px; padding:12px 16px; font-size:13px; font-weight:600; text-align:center; margin-bottom:18px; }
    .plans-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); gap:16px; }
    .plan-card { position:relative; border:1px solid var(--line); border-radius:16px; padding:22px 20px; background:#fff; display:flex; flex-direction:column; transition:.15s; }
    .plan-card:hover { box-shadow:0 16px 36px -24px rgba(31,70,58,.5); }
    .plan-card.recommended { border-color:var(--green); box-shadow:0 12px 30px -18px rgba(31,70,58,.5); }
    .plan-badge { position:absolute; top:-11px; left:50%; transform:translateX(-50%); background:var(--green); color:#fff; font-size:10.5px; font-weight:700; letter-spacing:.06em; text-transform:uppercase; padding:4px 12px; border-radius:99px; white-space:nowrap; }
    .plan-card.current { border-color:var(--clay); }
    .plan-name { font-family:'Fraunces',serif; font-size:19px; font-weight:600; color:var(--ink); margin-bottom:4px; }
    .plan-bestfor { font-size:12px; color:var(--soft); min-height:30px; }
    .plan-price { font-size:30px; font-weight:800; color:var(--ink); margin:8px 0 2px; }
    .plan-price span { font-size:13px; font-weight:600; color:var(--soft); }
    .plan-features { list-style:none; padding:0; margin:14px 0 18px; font-size:12.5px; color:var(--ink); flex:1; }
    .plan-features li { display:flex; gap:8px; align-items:flex-start; margin:7px 0; line-height:1.4; }
    .plan-features li::before { content:'✓'; color:var(--green); font-weight:700; flex-shrink:0; }
    .plan-cta { cursor:pointer; border:0; border-radius:10px; padding:11px 14px; font:inherit; font-size:13.5px; font-weight:700; color:#fff; background:linear-gradient(180deg,var(--green),var(--green-d)); transition:.15s; }
    .plan-cta:hover:not(:disabled) { transform:translateY(-1px); }
    .plan-cta:disabled { opacity:.55; cursor:default; background:var(--soft); }
    .plans-foot { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-top:22px; flex-wrap:wrap; }
    .plans-portal { background:transparent; border:0; color:var(--green-d); font:inherit; font-size:13px; font-weight:600; cursor:pointer; }
    .plans-portal:hover { text-decoration:underline; }

    /* ── Panel wrapper ──────────────────────────────────────────────── */
    .panel-wrap { padding:28px 18px 60px; }
    .inner      { max-width:880px;  margin:0 auto; }
    .inner-wide { max-width:1060px; margin:0 auto; }

    /* ── Modal ──────────────────────────────────────────────────────── */
    .modal-overlay { position:fixed; inset:0; background:rgba(0,0,0,.38); display:flex; align-items:center; justify-content:center; z-index:1100; padding:18px; }
    .modal { background:#fff; border-radius:18px; padding:28px; width:100%; max-width:500px; box-shadow:0 32px 72px rgba(0,0,0,.18); max-height:90vh; overflow-y:auto; }
    .modal h2,.modal h3 { font-family:'Fraunces',serif; margin:0 0 18px; }
    .modal h2 { font-size:21px; } .modal h3 { font-size:17px; }
    .mf { margin-bottom:16px; }
    .mf label { display:block; font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.09em; color:var(--soft); margin-bottom:6px; }
    .mf .opt  { font-weight:400; text-transform:none; letter-spacing:0; color:#9aa298; }
    .mf input,.mf textarea { width:100%; border:1px solid var(--line); border-radius:8px; padding:10px 12px; font:inherit; font-size:14px; color:var(--ink); background:var(--card); }
    .mf input:focus,.mf textarea:focus { outline:none; border-color:var(--green); }
    .mf textarea { min-height:120px; resize:vertical; }
    .modal-note { font-size:11.5px; color:#9aa298; margin-top:14px; }
    .modal-actions { display:flex; gap:10px; justify-content:flex-end; margin-top:20px; flex-wrap:wrap; }
    .m-save   { background:var(--ink); color:#fff; border:none; border-radius:8px; padding:10px 22px; font:inherit; font-weight:700; cursor:pointer; }
    .m-cancel { background:transparent; border:1px solid var(--line); border-radius:8px; padding:10px 16px; font:inherit; font-weight:600; color:var(--soft); cursor:pointer; }
    .m-cancel:hover { background:var(--card); color:var(--ink); }

    /* ── Studio typography ──────────────────────────────────────────── */
    .lede  { color:var(--soft); font-size:15px; max-width:560px; line-height:1.5; margin:0 0 14px; }
    .thread { padding:10px 14px; border-left:3px solid var(--green); background:rgba(46,94,78,.06); font-size:13.5px; color:var(--green-d); border-radius:0 8px 8px 0; }
    .thread b { font-weight:700; }
    .sec { font-family:'Fraunces',serif; font-size:13px; font-weight:600; letter-spacing:.02em; text-transform:uppercase; color:var(--soft); margin:30px 0 12px; }
    .sec-sub { font-size:12px; color:var(--soft); opacity:.8; margin:-8px 0 12px; line-height:1.4; }

    /* ── Source bar ─────────────────────────────────────────────────── */
    .source-bar { margin-top:14px; padding:9px 13px; background:rgba(46,94,78,.07); border:1px solid rgba(46,94,78,.18); border-radius:9px; font-size:12.5px; color:var(--green-d); display:flex; align-items:center; gap:7px; }

    /* ── Pillar grid + actions ──────────────────────────────────────── */
    .grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:10px; }
    .pillar { text-align:left; cursor:pointer; background:var(--card); border:1px solid var(--line); border-radius:13px; padding:13px 14px; transition:.18s; font:inherit; width:100%; }
    .pillar:hover { border-color:var(--green); transform:translateY(-1px); }
    .pillar.on { border-color:var(--green); background:#fff; box-shadow:0 6px 20px -12px rgba(31,70,58,.55); }
    .pillar .pl { font-family:'Fraunces',serif; font-weight:600; font-size:16px; text-align:left; }
    .pillar .pb { font-size:12px; color:var(--soft); margin-top:4px; line-height:1.4; text-align:left; }
    .pillar.on .pl { color:var(--green-d); }
    .pillar-actions { display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin-top:10px; }
    .pillar-suggest-btn { background:var(--card); border:1px solid var(--line); border-radius:8px; padding:7px 14px; font:inherit; font-size:13px; font-weight:600; color:var(--ink); cursor:pointer; transition:.15s; }
    .pillar-suggest-btn:hover { border-color:var(--green); color:var(--green-d); }
    .pillar-suggest-btn:disabled { opacity:.5; cursor:wait; }
    .pillar-reset-btn { background:transparent; border:none; font:inherit; font-size:12.5px; color:var(--clay); cursor:pointer; text-decoration:underline; }
    .pillar-badge { font-size:11px; color:var(--soft); background:rgba(46,94,78,.1); padding:3px 8px; border-radius:99px; }

    /* ── Controls ───────────────────────────────────────────────────── */
    .controls { display:flex; flex-wrap:wrap; gap:18px 28px; align-items:flex-start; margin-top:8px; }
    .ctl-label { font-size:11px; letter-spacing:.12em; text-transform:uppercase; color:var(--soft); font-weight:700; margin-bottom:7px; }
    .seg { display:inline-flex; flex-wrap:wrap; background:var(--line-2); border-radius:10px; padding:3px; gap:2px; }
    .seg button { border:0; background:transparent; cursor:pointer; font:inherit; font-size:13px; font-weight:600; color:var(--soft); padding:7px 12px; border-radius:8px; transition:.15s; }
    .seg button.on { background:#fff; color:var(--green-d); box-shadow:0 1px 4px rgba(0,0,0,.06); }

    /* ── Research anchors ───────────────────────────────────────────── */
    .anchor-section { margin-top:20px; }
    .anchor-row { display:flex; flex-wrap:wrap; gap:14px 28px; margin-top:8px; }
    .toggle { display:inline-flex; align-items:center; gap:9px; cursor:pointer; user-select:none; }
    .switch { width:38px; height:22px; border-radius:99px; background:var(--line); position:relative; transition:.2s; flex:none; }
    .switch.on { background:var(--green); }
    .knob { position:absolute; top:2px; left:2px; width:18px; height:18px; background:#fff; border-radius:50%; transition:.2s; box-shadow:0 1px 3px rgba(0,0,0,.25); }
    .switch.on .knob { left:18px; }
    .tgl-text { font-size:13px; font-weight:600; color:var(--ink); }
    .tgl-text small { display:block; color:var(--soft); font-weight:400; font-size:11.5px; }

    /* ── Angle textarea ─────────────────────────────────────────────── */
    .angle { width:100%; margin-top:18px; }
    .angle textarea { width:100%; min-height:60px; resize:vertical; font:inherit; font-size:14px; color:var(--ink); background:var(--card); border:1px solid var(--line); border-radius:11px; padding:11px 13px; }
    .angle textarea:focus { outline:none; border-color:var(--green); }
    .angle textarea::placeholder { color:#9aa298; }

    /* ── Generate row ───────────────────────────────────────────────── */
    .gen { margin-top:18px; display:flex; gap:12px; align-items:center; flex-wrap:wrap; }
    .gen-btn { cursor:pointer; border:0; font:inherit; font-weight:700; font-size:15px; color:#fbf9f3; background:linear-gradient(180deg,var(--green) 0%,var(--green-d) 100%); padding:13px 26px; border-radius:12px; transition:.15s; box-shadow:0 8px 22px -12px rgba(31,70,58,.8); display:inline-flex; align-items:center; gap:9px; }
    .gen-btn:hover:not(:disabled) { transform:translateY(-1px); }
    .gen-btn:disabled { opacity:.6; cursor:wait; }
    .choose-btn { cursor:pointer; border:1px solid var(--green); background:var(--card); font:inherit; font-weight:600; font-size:14px; color:var(--green-d); padding:12px 18px; border-radius:12px; transition:.15s; display:inline-flex; align-items:center; gap:7px; }
    .choose-btn:hover:not(:disabled) { background:var(--green); color:#fff; }
    .choose-btn:disabled { opacity:.6; cursor:wait; }
    .undo-btn { cursor:pointer; border:1px solid var(--line); background:var(--card); font:inherit; font-size:17px; color:var(--soft); padding:9px 14px; border-radius:12px; transition:.15s; line-height:1; }
    .undo-btn:hover:not(:disabled) { background:#fff; color:var(--ink); }
    .undo-btn:disabled { opacity:.35; cursor:not-allowed; }
    .hint { font-size:12.5px; color:var(--soft); }
    .gen-status { font-size:12.5px; color:var(--green-d); font-style:italic; }

    /* ── Info / error / empty / out ─────────────────────────────────── */
    .info-box { margin-top:16px; padding:14px 16px; background:rgba(177,226,197,.18); border:1px solid rgba(46,94,78,.2); border-radius:14px; color:var(--green-d); font-size:13px; line-height:1.5; }
    .err  { margin-top:14px; background:#fbeee8; border:1px solid #e8c4b3; color:#9a4422; padding:11px 14px; border-radius:11px; font-size:13px; }
    .empty { margin-top:22px; padding:30px; text-align:center; border:1px dashed var(--line); border-radius:16px; color:var(--soft); font-size:14px; background:rgba(251,249,243,.5); }
    .empty .big { font-family:'Fraunces',serif; font-size:18px; color:var(--ink); margin-bottom:6px; }

    /* ── Fact-check bar ─────────────────────────────────────────────── */
    .fc-bar { margin-top:14px; padding:10px 14px; background:#fff; border:1px solid var(--line); border-radius:11px; display:flex; align-items:center; justify-content:space-between; gap:12px; }
    .fc-indicator { display:flex; align-items:center; gap:10px; }
    .fc-dot { width:13px; height:13px; border-radius:50%; flex:none; transition:.3s; }
    .fc-green  { background:#16a34a; box-shadow:0 0 0 3px rgba(22,163,74,.18); }
    .fc-yellow { background:#d97706; box-shadow:0 0 0 3px rgba(217,119,6,.18); }
    .fc-red    { background:#dc2626; box-shadow:0 0 0 3px rgba(220,38,38,.18); }
    .fc-checking { background:var(--line); animation:fc-pulse 1s ease-in-out infinite alternate; }
    @keyframes fc-pulse { to { opacity:.3; } }
    .fc-summary { font-size:13px; color:var(--ink); }
    .fc-details-btn { background:transparent; border:1px solid var(--line); border-radius:7px; padding:5px 10px; font:inherit; font-size:12px; font-weight:600; color:var(--soft); cursor:pointer; flex:none; white-space:nowrap; }
    .fc-details-btn:hover { background:var(--card); }
    .fc-details { margin-top:8px; padding:12px 14px; background:var(--card); border:1px solid var(--line-2); border-radius:10px; }

    /* ── Draft output ───────────────────────────────────────────────── */
    .out { margin-top:14px; background:var(--card); border:1px solid var(--line); border-radius:16px; overflow:hidden; }
    .out-top { display:flex; align-items:center; justify-content:space-between; padding:12px 16px; border-bottom:1px solid var(--line-2); background:#fff; }
    .out-top .tag { font-size:11px; letter-spacing:.14em; text-transform:uppercase; color:var(--green); font-weight:700; }
    .out-area { width:100%; border:0; resize:vertical; min-height:240px; font:inherit; font-size:15px; line-height:1.62; color:var(--ink); background:transparent; padding:18px; white-space:pre-wrap; }
    .out-area:focus { outline:none; }
    .verify-banner { margin:0 18px 6px; padding:9px 12px; background:#fff4d6; border:1px solid #f0d68a; border-radius:8px; color:#856404; font-size:12.5px; }
    .meta { font-size:12px; color:var(--soft); padding:0 18px 8px; }

    /* ── Chips ──────────────────────────────────────────────────────── */
    .chips { display:flex; flex-wrap:wrap; gap:8px; padding:12px 16px; border-top:1px solid var(--line-2); align-items:center; }
    .chip { cursor:pointer; border:1px solid var(--line); background:#fff; font:inherit; font-size:12.5px; font-weight:600; color:var(--soft); padding:7px 12px; border-radius:99px; transition:.15s; }
    .chip:hover:not(:disabled) { border-color:var(--clay); color:var(--clay); }
    .chip:disabled { opacity:.5; cursor:wait; }
    .chip.primary { background:var(--ink); color:#fbf9f3; border-color:var(--ink); }
    .chip.primary:hover:not(:disabled) { opacity:.9; }
    .chip.ok { background:var(--green); color:#fff; border-color:var(--green); }
    .spacer { flex:1; }
    /* Feedback box */
    .fb-box { border-top:1px solid var(--line-2); padding:14px 16px; background:#fbfaf6; border-radius:0 0 14px 14px; }
    .fb-row { display:flex; align-items:center; gap:12px; flex-wrap:wrap; }
    .fb-label { font-size:13px; font-weight:600; color:var(--soft); }
    .fb-stars { display:inline-flex; gap:2px; }
    .fb-star { cursor:pointer; font-size:20px; line-height:1; color:var(--line); background:none; border:0; padding:0 1px; transition:.1s; }
    .fb-star.on, .fb-star:hover { color:#e0a93b; }
    .fb-tags { display:flex; flex-wrap:wrap; gap:6px; margin-top:10px; }
    .fb-tag { cursor:pointer; border:1px solid var(--line); background:#fff; font:inherit; font-size:12px; font-weight:600; color:var(--soft); padding:5px 11px; border-radius:99px; transition:.15s; }
    .fb-tag:hover { border-color:var(--clay); color:var(--clay); }
    .fb-tag.on { background:var(--clay); color:#fff; border-color:var(--clay); }
    .fb-comment { width:100%; margin-top:10px; border:1px solid var(--line); border-radius:8px; padding:8px 12px; font:inherit; font-size:13px; color:var(--ink); background:#fff; resize:vertical; min-height:38px; box-sizing:border-box; }
    .fb-comment:focus { outline:none; border-color:var(--green); }
    .fb-actions { display:flex; align-items:center; gap:12px; margin-top:10px; }
    .fb-submit { cursor:pointer; border:1px solid var(--green); background:var(--green); color:#fff; font:inherit; font-size:13px; font-weight:600; padding:7px 16px; border-radius:8px; transition:.15s; }
    .fb-submit:hover:not(:disabled) { background:var(--green-d); }
    .fb-submit:disabled { opacity:.5; cursor:default; }
    .fb-thanks { font-size:12.5px; color:var(--green-d); font-weight:600; }

    /* ── Tips grid ──────────────────────────────────────────────────── */
    .note { margin-top:26px; display:grid; grid-template-columns:repeat(auto-fit,minmax(200px,1fr)); gap:10px; }
    .note .n { background:rgba(46,94,78,.05); border:1px solid var(--line-2); border-radius:12px; padding:12px 14px; font-size:12.5px; color:var(--green-d); line-height:1.45; }
    .note .n b { font-weight:700; }

    /* ── Saved drafts ───────────────────────────────────────────────── */
    .saved { margin-top:30px; }
    .saved-item { background:var(--card); border:1px solid var(--line); border-radius:12px; padding:12px 14px; margin-bottom:8px; display:flex; justify-content:space-between; align-items:flex-start; gap:10px; }
    .saved-item .sp { font-size:11px; letter-spacing:.1em; text-transform:uppercase; color:var(--clay); font-weight:700; margin-bottom:5px; }
    .saved-item .st { font-size:13px; color:var(--soft); white-space:pre-wrap; max-height:60px; overflow:hidden; flex:1; }
    .restore-btn { background:transparent; border:1px solid var(--line); border-radius:8px; padding:5px 11px; font:inherit; font-size:11px; font-weight:600; color:var(--soft); cursor:pointer; flex:none; }
    .restore-btn:hover { border-color:var(--green); color:var(--green-d); }
    .foot { margin-top:30px; font-size:12px; color:var(--soft); line-height:1.5; border-top:1px solid var(--line-2); padding-top:14px; }

    /* ── Library ────────────────────────────────────────────────────── */
    .lib-grid { display:grid; grid-template-columns:1fr 1fr; gap:20px; }
    @media(max-width:780px){.lib-grid{grid-template-columns:1fr;}}
    .lib-box { background:#fff; border:1px solid var(--line); border-radius:14px; padding:22px; }
    .lib-sec { font-family:'Fraunces',serif; font-size:14px; font-weight:600; color:var(--soft); margin:22px 0 10px; border-bottom:1px solid var(--line-2); padding-bottom:6px; }
    .lib-sec:first-child { margin-top:0; }
    .lib-cnt { font-family:'Hanken Grotesk',sans-serif; font-size:12px; font-weight:400; color:#9aa298; }
    .lib-hint { font-size:12.5px; color:var(--soft); margin:0 0 10px; line-height:1.5; }
    .lib-btn { background:var(--card); border:1px solid var(--line); border-radius:8px; padding:7px 14px; font:inherit; font-size:13px; font-weight:600; color:var(--ink); cursor:pointer; transition:.15s; }
    .lib-btn:hover { border-color:var(--green); color:var(--green-d); }

    /* keywords */
    .kw-tags { display:flex; flex-wrap:wrap; gap:8px; margin-bottom:10px; min-height:30px; }
    .kw-tag  { display:inline-flex; align-items:center; gap:6px; background:var(--green); color:#fff; padding:5px 10px; border-radius:999px; font-size:13px; font-weight:600; }
    .kw-tag button { background:transparent; border:none; color:rgba(255,255,255,.6); cursor:pointer; font-size:14px; line-height:1; padding:0; }
    .kw-tag button:hover { color:#fff; }
    .kw-input { width:100%; border:1px solid var(--line); border-radius:8px; padding:8px 12px; font:inherit; font-size:14px; color:var(--ink); background:var(--card); }
    .kw-input:focus { outline:none; border-color:var(--green); }
    .role-row { display:flex; gap:8px; align-items:center; }
    .role-row .kw-input { flex:1; }
    .role-row .lib-btn { white-space:nowrap; }
    .kw-suggest { display:inline-flex; align-items:center; gap:6px; background:var(--card); border:1px dashed var(--green); color:var(--green-d); padding:5px 10px; border-radius:999px; font-size:13px; font-weight:600; cursor:pointer; transition:.15s; }
    .kw-suggest:hover { background:var(--green); color:#fff; border-style:solid; }
    .kw-suggest:disabled { opacity:.5; cursor:default; }

    /* PDFs */
    .pdf-dropzone { border:2px dashed var(--line); border-radius:10px; padding:20px; text-align:center; background:var(--card); cursor:pointer; position:relative; margin-bottom:12px; transition:.15s; }
    .pdf-dropzone:hover,.pdf-dropzone.drag-over { border-color:var(--green); background:rgba(46,94,78,.04); }
    .pdf-dropzone input { position:absolute; inset:0; width:100%; height:100%; opacity:0; cursor:pointer; }
    .dz-main { font-size:14px; font-weight:600; color:var(--green-d); }
    .dz-sub  { font-size:12px; color:var(--soft); margin-top:4px; }
    .pdf-list { display:flex; flex-direction:column; gap:8px; max-height:340px; overflow-y:auto; }
    .pdf-item { display:flex; align-items:center; gap:9px; padding:9px 12px; border:1px solid var(--line-2); border-radius:8px; font-size:13px; }
    .pdf-name { flex:1; font-weight:600; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
    .pdf-meta { font-size:11.5px; color:var(--soft); white-space:nowrap; }
    .pdf-sel  { font:inherit; font-size:12px; border:1px solid var(--line); border-radius:5px; padding:3px 6px; background:var(--card); }
    .pdf-del  { background:transparent; border:none; color:var(--clay); cursor:pointer; font-size:17px; line-height:1; padding:0 2px; flex:none; }

    /* voice */
    .voice-list { display:flex; flex-direction:column; gap:8px; margin-top:10px; }
    .voice-item { display:flex; align-items:flex-start; gap:10px; background:var(--card); border:1px solid var(--line-2); border-radius:8px; padding:10px 12px; }
    .voice-preview { flex:1; font-size:12.5px; color:var(--soft); overflow:hidden; max-height:42px; line-height:1.45; }
    .voice-del { background:transparent; border:none; color:var(--clay); cursor:pointer; font-size:16px; flex:none; padding:0; }

    /* academic */
    .ac-row   { display:flex; gap:8px; margin-bottom:8px; }
    .ac-input { flex:1; border:1px solid var(--line); border-radius:8px; padding:8px 12px; font:inherit; font-size:13px; color:var(--ink); background:var(--card); }
    .ac-input:focus { outline:none; border-color:var(--green); }
    .ac-list  { max-height:280px; overflow-y:auto; display:flex; flex-direction:column; gap:8px; }
    .ac-card  { border:1px solid var(--line-2); border-radius:8px; padding:12px; background:var(--card); font-size:13px; }
    .ac-ttl   { font-weight:700; margin-bottom:4px; line-height:1.4; }
    .ac-meta  { font-size:11.5px; color:var(--soft); margin-bottom:6px; }
    .ac-abs   { font-size:12px; color:var(--soft); max-height:38px; overflow:hidden; margin-bottom:8px; }
    .ac-acts  { display:flex; gap:8px; flex-wrap:wrap; }
    .ac-acts button { font:inherit; font-size:11.5px; border:1px solid var(--line); border-radius:5px; padding:4px 10px; background:#fff; cursor:pointer; }
    .ac-acts button:hover { border-color:var(--green); color:var(--green-d); }
    .ac-acts button.pinned { background:var(--green); color:#fff; border-color:var(--green); }

    /* ── Newsroom ────────────────────────────────────────────────────── */
    .nc-meta { font-size:12.5px; color:var(--soft); margin-bottom:8px; line-height:1.4; }
    .news-toolbar { display:flex; align-items:center; flex-wrap:wrap; gap:10px; margin-bottom:12px; }
    .kw-pills    { display:flex; flex-wrap:wrap; gap:6px; }
    .kw-pill     { background:rgba(46,94,78,.1); color:var(--green-d); padding:4px 10px; border-radius:999px; font-size:12px; font-weight:600; }
    .news-refresh{ background:transparent; border:1px solid var(--line); border-radius:8px; padding:7px 14px; font:inherit; font-size:13px; font-weight:600; color:var(--soft); cursor:pointer; transition:.15s; }
    .news-refresh:hover { background:var(--card); color:var(--ink); }
    .news-refresh:disabled { opacity:.5; cursor:wait; }
    .eng-tab.active { background:var(--ink); color:var(--paper); border-color:var(--ink); }
    .news-status { font-size:13px; color:var(--soft); margin-bottom:14px; min-height:20px; }
    .news-grid   { display:grid; grid-template-columns:repeat(auto-fill,minmax(290px,1fr)); gap:16px; }

    /* ── Engagement (modern) ─────────────────────────────────────────── */
    .eng-head { display:flex; justify-content:space-between; align-items:flex-start; gap:16px; flex-wrap:wrap; margin-bottom:18px; }
    .eng-head h2 { font-family:'Fraunces',serif; font-size:24px; font-weight:600; margin:0 0 6px; color:var(--ink); }
    .eng-head p { font-size:13px; color:var(--soft); margin:0; max-width:580px; line-height:1.55; }
    .eng-dryrun { display:inline-flex; align-items:center; gap:6px; font:inherit; font-size:11.5px; font-weight:700; cursor:pointer; border-radius:99px; padding:6px 13px; white-space:nowrap; transition:.15s; color:var(--green-d); background:rgba(46,94,78,.08); border:1px solid rgba(46,94,78,.25); }
    .eng-dryrun:hover { filter:brightness(.97); }
    .eng-dryrun.live { color:#b45309; background:#fdf4e3; border-color:#e7c98a; }
    .eng-dryrun:disabled { opacity:.6; cursor:wait; }
    .eng-composer { background:linear-gradient(180deg,#ffffff,#fbfaf6); border:1px solid var(--line); border-radius:16px; padding:18px; box-shadow:0 12px 34px -24px rgba(31,70,58,.55); margin-bottom:18px; }
    .eng-fields { display:flex; gap:14px; flex-wrap:wrap; align-items:flex-end; }
    .eng-field { display:flex; flex-direction:column; gap:5px; font-size:11.5px; font-weight:700; letter-spacing:.03em; text-transform:uppercase; color:var(--soft); }
    .eng-field select { font:inherit; font-size:13px; font-weight:500; text-transform:none; letter-spacing:0; color:var(--ink); background:#fff; border:1px solid var(--line); border-radius:9px; padding:8px 10px; min-width:150px; cursor:pointer; }
    .eng-field select:focus { outline:none; border-color:var(--green); }
    .eng-composer-actions { display:flex; gap:8px; }
    .eng-primary { cursor:pointer; border:0; font:inherit; font-weight:700; font-size:13.5px; color:#fff; background:linear-gradient(180deg,var(--green),var(--green-d)); padding:10px 18px; border-radius:10px; transition:.15s; display:inline-flex; align-items:center; gap:7px; }
    .eng-primary:hover:not(:disabled) { transform:translateY(-1px); }
    .eng-primary:disabled { opacity:.6; cursor:wait; }
    .eng-ghost { cursor:pointer; border:1px solid var(--line); background:#fff; font:inherit; font-weight:600; font-size:13.5px; color:var(--ink); padding:10px 16px; border-radius:10px; transition:.15s; display:inline-flex; align-items:center; gap:7px; }
    .eng-ghost:hover:not(:disabled) { border-color:var(--green); color:var(--green-d); }
    .eng-angle { width:100%; margin-top:12px; padding:9px 12px; border:1px solid var(--line); border-radius:10px; font:inherit; font-size:13px; color:var(--ink); background:#fff; box-sizing:border-box; }
    .eng-angle:focus { outline:none; border-color:var(--green); }
    .eng-seg { display:inline-flex; background:var(--card); border:1px solid var(--line); border-radius:12px; padding:4px; gap:3px; flex-wrap:wrap; margin-bottom:18px; }
    .eng-seg .eng-tab { border:0; background:transparent; border-radius:9px; padding:8px 15px; font:inherit; font-size:13px; font-weight:600; color:var(--soft); cursor:pointer; transition:.15s; }
    .eng-seg .eng-tab:hover { color:var(--ink); }
    .eng-seg .eng-tab.active { background:#fff; color:var(--green-d); box-shadow:0 3px 10px -5px rgba(31,70,58,.5); }
    .news-card { background:#fff; border:1px solid var(--line); border-radius:14px; padding:18px; transition:box-shadow .15s, border-color .15s, transform .15s; }
    .news-card:hover { box-shadow:0 14px 32px -22px rgba(31,70,58,.5); border-color:var(--line-2); }
    .eng-pill { display:inline-flex; align-items:center; gap:4px; font-size:10.5px; font-weight:700; text-transform:uppercase; letter-spacing:.05em; padding:3px 10px; border-radius:99px; }
    .eng-board { display:grid; grid-template-columns:repeat(auto-fill,minmax(240px,1fr)); gap:16px; align-items:start; }
    .eng-col { background:var(--card); border:1px solid var(--line); border-radius:14px; padding:12px; }
    .eng-col-head { font-size:11.5px; font-weight:700; text-transform:uppercase; letter-spacing:.05em; color:var(--soft); margin-bottom:10px; display:flex; align-items:center; gap:7px; }
    .eng-col-count { background:#fff; border:1px solid var(--line); border-radius:99px; padding:1px 8px; font-size:11px; color:var(--soft); }
    .eng-empty { text-align:center; padding:48px 20px; color:var(--soft); border:1px dashed var(--line); border-radius:14px; background:var(--card); }
    .eng-empty .eng-empty-icon { font-size:30px; display:block; margin-bottom:10px; opacity:.7; }
    .eng-empty b { color:var(--ink); display:block; margin-bottom:4px; font-size:14px; }
    /* Locked upsell */
    .eng-locked { text-align:center; max-width:520px; margin:30px auto; background:linear-gradient(180deg,#ffffff,#fbfaf6); border:1px solid var(--line); border-radius:18px; padding:40px 32px; box-shadow:0 16px 40px -26px rgba(31,70,58,.55); }
    .eng-locked .lock-icon { font-size:38px; }
    .eng-locked h2 { font-family:'Fraunces',serif; font-size:22px; font-weight:600; margin:14px 0 8px; color:var(--ink); }
    .eng-locked p { font-size:14px; color:var(--soft); line-height:1.6; margin:0 0 22px; }
    .eng-locked-list { text-align:left; display:inline-block; margin:0 auto 24px; padding:0; list-style:none; font-size:13.5px; color:var(--ink); }
    .eng-locked-list li { margin:8px 0; display:flex; align-items:center; gap:9px; }
    .eng-locked-list li::before { content:'✓'; color:var(--green); font-weight:700; }

    /* News card */
    .nc { background:#fff; border:1px solid var(--line); border-radius:14px; padding:18px; display:flex; flex-direction:column; position:relative; }
    .card-zoom-btn { position:absolute; top:12px; right:12px; background:rgba(46,94,78,.08); border:1px solid rgba(46,94,78,.2); border-radius:7px; padding:5px 7px; color:var(--green-d); cursor:pointer; display:inline-flex; align-items:center; transition:.15s; }
    .card-zoom-btn:hover { background:rgba(46,94,78,.16); border-color:var(--green); }
    .nc-type    { font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.08em; color:var(--soft); margin-bottom:8px; }
    .nc-title   { font-family:'Fraunces',serif; font-size:15px; font-weight:600; line-height:1.3; margin-bottom:10px; }
    .nc-summary { font-size:13px; color:var(--ink); line-height:1.6; max-height:80px; overflow-y:auto; margin-bottom:12px; scroll-behavior:smooth; }
    .nc-summary::-webkit-scrollbar { width:3px; }
    .nc-summary::-webkit-scrollbar-thumb { background:var(--line); border-radius:2px; }
    .nc-content-lbl { font-size:10px; font-weight:700; letter-spacing:.08em; text-transform:uppercase; color:var(--soft); display:block; margin-bottom:5px; }
    .nc-section-lbl { font-size:10px; font-weight:700; letter-spacing:.06em; text-transform:uppercase; color:var(--soft); display:block; margin:8px 0 4px; }
    .nc-section-lbl:first-of-type { margin-top:0; }
    .nc-kts { margin:2px 0 0; padding-left:16px; font-size:13px; }
    .nc-kts li { margin-bottom:3px; line-height:1.55; }
    .nc-ai-badge { display:inline-block; font-size:10px; background:rgba(46,94,78,.12); color:var(--green-d); padding:2px 7px; border-radius:4px; font-weight:700; margin-top:6px; }
    .nc-actions { display:flex; gap:7px; flex-wrap:wrap; margin-bottom:10px; }
    .nc-actions button { font:inherit; font-size:12px; font-weight:600; border:1px solid var(--line); border-radius:8px; padding:7px 11px; background:var(--card); cursor:pointer; transition:.15s; }
    .nc-actions button:hover { border-color:var(--green); color:var(--green-d); background:#fff; }
    .nc-actions button.flag-on { background:var(--clay); color:#fff; border-color:var(--clay); }
    .nc-actions button:disabled { opacity:.5; cursor:wait; }
    .nc-source  { font-size:11.5px; color:var(--soft); padding-top:8px; border-top:1px solid var(--line-2); margin-top:auto; }

    .news-empty { padding:32px; text-align:center; border:1px dashed var(--line); border-radius:12px; color:var(--soft); font-size:14px; }
    .news-error { border-color:#c0392b; color:#c0392b; }
    .src-legend { margin-top:34px; }
    .src-list   { color:var(--soft); font-size:13px; line-height:1.9; padding-left:20px; margin:8px 0 0; }

    /* ── Spinner ─────────────────────────────────────────────────────── */
    .spin      { width:15px; height:15px; border:2px solid rgba(255,255,255,.4); border-top-color:#fff; border-radius:50%; animation:sp .7s linear infinite; display:inline-block; vertical-align:middle; }
    .spin-dark { border-color:rgba(46,94,78,.2); border-top-color:var(--green); }
    @keyframes sp { to{transform:rotate(360deg);} }

    /* ── Pagination ─────────────────────────────────────────────────── */
    .pg-bar { display:flex; align-items:center; gap:6px; justify-content:center; margin:18px 0 6px; flex-wrap:wrap; }
    .pg-btn { background:var(--card); border:1px solid var(--line); border-radius:8px; padding:7px 13px; font:inherit; font-size:13px; font-weight:600; color:var(--soft); cursor:pointer; transition:.15s; min-width:36px; text-align:center; }
    .pg-btn:hover:not(:disabled):not(.active) { border-color:var(--green); color:var(--green-d); background:#fff; }
    .pg-btn.active { background:var(--ink); color:#fff; border-color:var(--ink); cursor:default; }
    .pg-btn:disabled { opacity:.38; cursor:not-allowed; }

    /* ── Sort select ────────────────────────────────────────────────── */
    .sort-sel { font:inherit; font-size:12px; font-weight:600; border:1px solid var(--line); border-radius:8px; padding:6px 10px; background:var(--card); color:var(--soft); cursor:pointer; }
    .sort-sel:focus { outline:none; border-color:var(--green); }

    /* ── Voice selector ────────────────────────────────────────────── */
    .voice-section   { margin-top:18px; }
    .voice-chips     { display:flex; flex-wrap:wrap; gap:7px; margin-top:8px; align-items:center; }
    .vc              { border:0; background:var(--line-2); cursor:pointer; font:inherit; font-size:13px; font-weight:600; color:var(--soft); padding:7px 13px; border-radius:8px; transition:.15s; }
    .vc:hover:not(.vc-on) { color:var(--ink); }
    .vc.vc-on        { background:#fff; color:var(--green-d); box-shadow:0 1px 4px rgba(0,0,0,.06); outline:1.5px solid var(--green); outline-offset:-1px; }
    .vc.vc-primary   { position:relative; }
    .vc.vc-primary::before { content:''; position:absolute; top:4px; right:4px; width:5px; height:5px; border-radius:50%; background:var(--green); }
    .voice-footer    { display:flex; align-items:center; gap:14px; margin-top:8px; flex-wrap:wrap; }
    .voice-counter   { font-size:11.5px; color:var(--soft); font-weight:700; }
    .voice-meta      { font-size:11.5px; color:var(--soft); font-style:italic; }
    /* Popover */
    .voice-pop-wrap  { position:relative; display:inline-flex; }
    .voice-pop       { position:absolute; top:calc(100% + 6px); left:0; z-index:200;
      background:#fff; border:1px solid var(--line); border-radius:12px;
      padding:14px 15px; min-width:230px;
      box-shadow:0 8px 32px rgba(0,0,0,.13); display:flex; flex-direction:column; gap:10px; }
    .voice-pop-title { font-size:10px; font-weight:700; letter-spacing:.12em; text-transform:uppercase; color:var(--soft); }
    .voice-pop-chips { display:flex; flex-wrap:wrap; gap:7px; }
    .voice-pop-close { font:inherit; font-size:11.5px; color:var(--soft); background:transparent; border:none; cursor:pointer; align-self:flex-end; padding:0; }
    .voice-pop-close:hover { color:var(--ink); }

    /* ── Copyright badge ───────────────────────────────────────────── */
    #app-copyright {
      position:fixed; bottom:8px; right:14px;
      font-size:10px; color:var(--soft); opacity:.55;
      letter-spacing:.03em; z-index:50;
      pointer-events:none; user-select:none;
      font-family:'Hanken Grotesk',system-ui,sans-serif;
    }

    @media(max-width:600px){
      .controls{gap:12px;} .seg button{padding:6px 9px;font-size:12px;}
      .tab{padding:7px 10px;font-size:12px;}
      #app-copyright { bottom:4px; right:8px; font-size:9px; }
    }

    /* ── Email opt-in row ────────────────────────────────────────────────── */
    .email-optin { margin-bottom:20px; padding:12px 14px; background:rgba(46,94,78,.06); border:1px solid rgba(46,94,78,.15); border-radius:10px; }
    .email-optin .ctl-label { margin-bottom:8px; }

    /* ── Two-tier settings ──────────────────────────────────────────────── */
    .st-header    { display:flex; justify-content:space-between; align-items:flex-start; margin-bottom:16px; }
    .st-title     { font-family:'Fraunces',serif; font-size:21px; font-weight:600; margin:0; }
    .role-badge   { font-size:10px; font-weight:700; text-transform:uppercase; letter-spacing:.1em; background:rgba(46,94,78,.12); color:var(--green-d); padding:4px 10px; border-radius:999px; flex:none; margin-top:4px; }
    .role-badge.master { background:rgba(192,98,58,.12); color:var(--clay); }
    .st-signed-in { font-size:13px; color:var(--soft); padding:10px 14px; background:var(--card); border:1px solid var(--line); border-radius:8px; margin-bottom:20px; }
    .st-section   { font-size:10px; font-weight:700; text-transform:uppercase; letter-spacing:.12em; color:var(--soft); border-bottom:1px solid var(--line-2); padding-bottom:8px; margin:22px 0 14px; }
    .user-row     { display:flex; align-items:center; gap:10px; padding:10px 0; border-bottom:1px solid var(--line-2); }
    .user-row-email { flex:1; font-size:13px; font-weight:600; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
    .user-row-badge { font-size:10px; background:rgba(46,94,78,.1); color:var(--green-d); padding:2px 8px; border-radius:4px; font-weight:700; text-transform:uppercase; flex:none; }
    .user-row-badge.master    { background:rgba(192,98,58,.12); color:var(--clay); }
    .user-row-badge.suspended { background:rgba(0,0,0,.06); color:var(--soft); }
    .user-row-badge.blocked   { background:rgba(192,98,58,.1); color:var(--clay); }
    .user-row-acts { display:flex; gap:6px; flex:none; }
    /* ── User Management redesign ─────────────────────────────────────────── */
    .um-search-wrap { margin:0 0 12px; }
    .um-search { width:100%; border:1px solid var(--line); border-radius:8px; padding:9px 12px; font:inherit; font-size:13px; color:var(--ink); background:var(--card); }
    .um-search:focus { outline:none; border-color:var(--green); }
    .um-empty  { padding:18px 0; text-align:center; color:var(--soft); font-size:13px; font-style:italic; }
    .um-error  { padding:12px 14px; background:#fbeee8; border:1px solid #e8c4b3; border-radius:8px; color:#9a4422; font-size:13px; margin:10px 0; }
    .user-row-role { font-size:10px; font-weight:700; text-transform:uppercase; background:rgba(46,94,78,.1); color:var(--green-d); padding:2px 8px; border-radius:4px; flex:none; }
    .user-row-role.master { background:rgba(192,98,58,.12); color:var(--clay); }
    .user-inline-edit { padding:10px 0 4px; border-top:1px solid var(--line-2); display:none; }
    .user-inline-edit .inline-row { display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
    .user-inline-edit select { font:inherit; font-size:13px; border:1px solid var(--line); border-radius:6px; padding:6px 10px; background:var(--card); color:var(--ink); cursor:pointer; }
    .user-inline-edit select:focus { outline:none; border-color:var(--green); }
    .pw-change .mf { margin-bottom:12px; }
    .uact         { background:transparent; border:1px solid var(--line); border-radius:6px; padding:4px 10px; font:inherit; font-size:11.5px; color:var(--soft); cursor:pointer; }
    .uact:hover   { border-color:var(--green); color:var(--green-d); background:#fff; }
    .uact.danger  { color:var(--clay); }
    .uact.danger:hover { border-color:var(--clay); background:#fff; }
    .user-msg     { padding:11px 13px; border-radius:8px; font-size:13px; margin:12px 0 4px; background:rgba(46,94,78,.08); border:1px solid rgba(46,94,78,.2); color:var(--green-d); line-height:1.65; }
    .user-msg code { background:rgba(46,94,78,.15); padding:2px 6px; border-radius:4px; font-family:monospace; }

    /* ── Login overlay ──────────────────────────────────────────────── */
    #login-overlay {
      position:fixed; inset:0; z-index:1000;
      background:
        radial-gradient(120% 90% at 100% 0%,#efe9da 0%,transparent 55%),
        radial-gradient(110% 80% at 0% 100%,#eee7d6 0%,transparent 50%),
        var(--paper);
      display:flex; align-items:center; justify-content:center; padding:20px;
    }
    .login-card {
      background:#fff; border-radius:20px; padding:40px 36px;
      width:100%; max-width:420px;
      box-shadow:0 32px 80px rgba(0,0,0,.16);
    }
    .login-kicker { font-size:10px; letter-spacing:.2em; text-transform:uppercase; color:var(--clay); font-weight:700; margin-bottom:4px; }
    .login-title  { font-family:'Fraunces',serif; font-weight:600; font-size:30px; line-height:1.05; margin:0 0 4px; letter-spacing:-.01em; }
    .login-sub    { font-size:13px; color:var(--soft); margin:0 0 26px; }
    .lf           { margin-bottom:16px; }
    .lf label     { display:block; font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.09em; color:var(--soft); margin-bottom:6px; }
    .lf input     { width:100%; border:1px solid var(--line); border-radius:8px; padding:11px 13px; font:inherit; font-size:14px; color:var(--ink); background:var(--card); }
    .lf input:focus { outline:none; border-color:var(--green); }
    .pw-row       { position:relative; }
    .pw-row input { padding-right:58px; }
    .pw-eye       { position:absolute; right:0; top:0; height:100%; background:transparent; border:none; padding:0 13px; font:inherit; font-size:12px; font-weight:700; color:var(--soft); cursor:pointer; }
    .pw-eye:hover { color:var(--ink); }
    .captcha-label { color:var(--green-d) !important; }
    .lf-remember  { margin-top:4px; }
    .remember-label { display:inline-flex; align-items:center; gap:8px; font-size:13px; color:var(--soft); cursor:pointer; font-weight:400; text-transform:none; letter-spacing:0; }
    .login-err    { background:#fbeee8; border:1px solid #e8c4b3; color:#9a4422; padding:10px 13px; border-radius:8px; font-size:13px; margin-bottom:14px; }
    .login-btn    { width:100%; background:linear-gradient(180deg,var(--green) 0%,var(--green-d) 100%); color:#fff; border:none; border-radius:10px; padding:13px; font:inherit; font-weight:700; font-size:15px; cursor:pointer; margin-bottom:12px; box-shadow:0 8px 22px -12px rgba(31,70,58,.8); transition:.15s; }
    .login-btn:hover:not(:disabled) { transform:translateY(-1px); }
    .login-btn:disabled { opacity:.6; cursor:wait; }
    .forgot-link  { background:transparent; border:none; color:var(--soft); font:inherit; font-size:13px; cursor:pointer; width:100%; text-align:center; padding:4px; }
    .forgot-link:hover { color:var(--green-d); }
    .forgot-result { padding:14px 16px; background:rgba(46,94,78,.08); border:1px solid rgba(46,94,78,.2); border-radius:10px; font-size:13px; color:var(--green-d); margin-bottom:14px; line-height:1.7; }
    .forgot-result code { background:rgba(46,94,78,.15); padding:2px 7px; border-radius:4px; font-family:monospace; font-size:13px; letter-spacing:.03em; }
    .signout-btn  { background:transparent; border:none; font:inherit; font-size:13px; color:var(--clay); cursor:pointer; padding:0; margin-top:14px; display:block; text-align:left; }
    .signout-btn:hover { text-decoration:underline; }
    .pw-hint { font-size:11px; color:var(--soft); margin:-8px 0 12px; line-height:1.6; }
    .reg-hcaptcha-wrap { margin:2px 0 14px; min-height:78px; }
    .reg-hcaptcha-wrap iframe { max-width:100%; }
    .reg-hcaptcha-note { margin:6px 0 0; font-size:10px; line-height:1.45; color:var(--soft); }
    .create-acct-link { background:transparent; border:none; color:var(--green-d); font:inherit; font-size:13px; font-weight:600; cursor:pointer; width:100%; text-align:center; padding:6px 4px 0; display:block; }
    .create-acct-link:hover { text-decoration:underline; }

    /* ── Master Control Panel (full page) ──────────────────────────────── */
    #control-panel-page { position:fixed; inset:0; z-index:1150; background:var(--paper); overflow-y:auto; }
    .cp-header { position:sticky; top:0; z-index:5; display:flex; align-items:center; gap:14px;
      padding:14px 24px; background:rgba(244,241,233,.96); backdrop-filter:blur(10px);
      border-bottom:1px solid var(--line); }
    .cp-back-btn { background:transparent; border:1px solid var(--line); border-radius:8px; padding:8px 14px;
      font:inherit; font-size:13px; font-weight:600; color:var(--soft); cursor:pointer; }
    .cp-back-btn:hover { background:var(--card); color:var(--ink); }
    .cp-header img { border-radius:50%; opacity:.92; }
    .cp-header h1 { font-family:'Fraunces',serif; font-weight:600; font-size:20px; margin:0; flex:1; }
    .cp-body { max-width:920px; margin:0 auto; padding:28px 24px 60px; }
    .cp-card { background:var(--card); border:1px solid var(--line); border-radius:14px; padding:22px; margin-bottom:22px; }
    .cp-card h2 { font-family:'Fraunces',serif; font-size:17px; font-weight:600; margin:0 0 4px; }
    .cp-card .cp-sub { font-size:12.5px; color:var(--soft); margin:0 0 16px; line-height:1.6; }
    .cp-billing-row { display:flex; align-items:center; justify-content:space-between; gap:16px; flex-wrap:wrap; background:var(--paper); border:1px solid var(--line); border-radius:12px; padding:14px 16px; }
    .cp-billing-state { font-size:14px; font-weight:700; display:flex; align-items:center; gap:8px; }
    .cp-billing-state.accepting { color:var(--green-d); }
    .cp-billing-state.frozen    { color:#b45309; }
    .cp-billing-state .dot { width:9px; height:9px; border-radius:50%; background:currentColor; display:inline-block; }
    .cp-billing-hint { font-size:12px; color:var(--soft); margin-top:3px; }
    .cp-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(200px,1fr)); gap:14px; margin-bottom:6px; }
    .cp-stat { background:#fff; border:1px solid var(--line); border-radius:10px; padding:14px 16px; }
    .cp-stat .lbl { font-size:10px; font-weight:700; text-transform:uppercase; letter-spacing:.1em; color:var(--soft); margin-bottom:5px; }
    .cp-stat .val { font-family:'Fraunces',serif; font-size:21px; font-weight:600; color:var(--ink); }
    .cp-stat .val.warn { color:var(--clay); }
    .cp-stat .val.ok   { color:var(--green-d); }
    .cp-table-row { display:grid; grid-template-columns:1.6fr .9fr .9fr .9fr .8fr 1.6fr; gap:10px; align-items:center;
      padding:11px 0; border-bottom:1px solid var(--line-2); font-size:12.5px; }
    .cp-table-head { font-size:10px; font-weight:700; text-transform:uppercase; letter-spacing:.09em; color:var(--soft);
      border-bottom:1px solid var(--line); padding-bottom:8px; }
    .cp-table-row .cp-email { font-weight:700; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
    .cp-table-row .cp-meta  { color:var(--soft); font-size:11.5px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
    .cp-pill { display:inline-block; font-size:10px; font-weight:700; text-transform:uppercase; letter-spacing:.07em;
      padding:2px 8px; border-radius:999px; }
    .cp-pill.active  { background:rgba(46,94,78,.12); color:var(--green-d); }
    .cp-pill.blocked { background:rgba(192,98,58,.12); color:var(--clay); }
    .cp-pill.master  { background:rgba(192,98,58,.12); color:var(--clay); }
    .cp-pill.sub-active   { background:rgba(46,94,78,.12); color:var(--green-d); }
    .cp-pill.sub-none     { background:rgba(0,0,0,.06); color:var(--soft); }
    .cp-pill.sub-past_due,.cp-pill.sub-canceled { background:rgba(192,98,58,.1); color:var(--clay); }
    .cp-row-acts { display:flex; gap:6px; flex-wrap:wrap; }
    .cp-detail { display:none; margin-top:10px; padding:14px; background:#fff; border:1px solid var(--line); border-radius:10px; font-size:12.5px; }
    .cp-detail.open { display:block; }
    .cp-detail dl { display:grid; grid-template-columns:max-content 1fr; gap:6px 16px; margin:0 0 14px; }
    .cp-detail dt { font-weight:700; color:var(--soft); text-transform:uppercase; font-size:10px; letter-spacing:.08em; }
    .cp-detail dd { margin:0; }
    .cp-credit-form { display:flex; gap:8px; align-items:flex-end; flex-wrap:wrap; margin-top:6px; }
    .cp-credit-form .mf { margin-bottom:0; flex:none; }
    .cp-credit-form input[type="number"] { width:100px; }
    .cp-credit-form input[type="text"]   { width:220px; }
    .cp-grant-log { margin-top:12px; max-height:160px; overflow-y:auto; font-size:11.5px; color:var(--soft); }
    .cp-grant-log div { padding:4px 0; border-bottom:1px solid var(--line-2); }
    .cp-health-row { display:flex; justify-content:space-between; padding:6px 0; border-bottom:1px solid var(--line-2); font-size:12.5px; }
    .cp-health-row .k { color:var(--soft); }
    .cp-health-row .v { font-weight:600; text-align:right; word-break:break-all; }
    @media (max-width:760px) {
      .cp-table-row { grid-template-columns:1fr; gap:4px; }
      .cp-table-head { display:none; }
    }
    /* ── Research source badges ─────────────────────────────────────────── */
    .src-badge { display:inline-block; font-size:9px; font-weight:800; padding:2px 6px; border-radius:4px; letter-spacing:.08em; text-transform:uppercase; margin-right:6px; vertical-align:middle; }
    .src-ss  { background:rgba(46,94,78,.14);  color:#1f463a; }
    .src-oa  { background:rgba(37,99,235,.12); color:#1d4ed8; }
    .src-ax  { background:rgba(220,38,38,.12); color:#b91c1c; }
    .src-cr  { background:rgba(234,88,12,.12); color:#c2410c; }
    .src-co  { background:rgba(124,58,237,.12); color:#6d28d9; }

    /* ── Paper detail popup ─────────────────────────────────────────────── */
    #paper-popup-overlay { position:fixed; inset:0; background:rgba(0,0,0,.42); z-index:400; display:flex; align-items:center; justify-content:center; padding:18px; }
    .paper-popup { background:#fff; border-radius:18px; padding:28px 30px; width:100%; max-width:640px; max-height:90vh; overflow-y:auto; box-shadow:0 32px 72px rgba(0,0,0,.22); }
    .paper-popup-header { display:flex; align-items:flex-start; justify-content:space-between; gap:12px; margin-bottom:16px; }
    .paper-popup-title  { font-family:'Fraunces',serif; font-size:18px; font-weight:600; line-height:1.35; color:var(--ink); flex:1; }
    .paper-popup-close  { background:transparent; border:1px solid var(--line); border-radius:8px; padding:6px 12px; font:inherit; font-size:13px; font-weight:600; color:var(--soft); cursor:pointer; flex:none; }
    .paper-popup-close:hover { background:var(--card); }
    .paper-popup-meta   { font-size:12.5px; color:var(--soft); margin-bottom:14px; line-height:1.6; }
    .paper-popup-abstract { font-size:14px; color:var(--ink); line-height:1.7; white-space:pre-wrap; background:var(--card); border:1px solid var(--line-2); border-radius:10px; padding:14px 16px; margin-bottom:16px; }
    .paper-popup-acts   { display:flex; flex-wrap:wrap; gap:8px; padding-top:4px; }

    /* ── Toast notifications ──────────────────────────────────────────────── */
    #toast-container { position:fixed; bottom:24px; right:24px; z-index:9999; display:flex; flex-direction:column; gap:10px; pointer-events:none; }
    .toast { background:#1b231e; color:#f4f1e9; padding:12px 18px; border-radius:10px; font-size:13px; font-weight:500; max-width:340px; line-height:1.5; opacity:0; transform:translateY(8px); transition:opacity .25s,transform .25s; pointer-events:all; box-shadow:0 8px 24px rgba(0,0,0,.22); }
    .toast.show { opacity:1; transform:translateY(0); }
    .toast.toast-error   { background:#9a4422; }
    .toast.toast-success { background:#2e5e4e; }

    /* ── Usage display ─────────────────────────────────────────────────── */
    .usage-display { margin-top:8px; padding:9px 13px; border-radius:9px; font-size:12.5px; display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
    .usage-display.usage-ok   { background:rgba(46,94,78,.07); border:1px solid rgba(46,94,78,.15); color:var(--green-d); }
    .usage-display.usage-warn { background:#fff9e6; border:1px solid #f0d68a; color:#856404; }
    .usage-display.usage-over { background:#fbeee8; border:1px solid #e8c4b3; color:#9a4422; }
    .usage-bar-track { flex:1; min-width:80px; height:5px; background:var(--line); border-radius:99px; overflow:hidden; }
    .usage-bar-fill  { height:100%; border-radius:99px; transition:width .4s ease; }
    .usage-bar-fill.ok   { background:var(--green); }
    .usage-bar-fill.warn { background:#d97706; }
    .usage-bar-fill.over { background:#dc2626; }
    .scope-label { display:inline-block; margin-left:7px; padding:2px 7px; border:1px solid var(--line); border-radius:999px; font-family:'Hanken Grotesk',system-ui,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif; font-size:10px; font-weight:600; color:var(--soft); vertical-align:middle; text-transform:none; letter-spacing:0; }
    .no-js-shell { box-sizing:border-box; max-width:640px; margin:10vh auto; padding:36px; background:var(--paper); border:1px solid var(--line); border-radius:16px; color:var(--ink); font-family:'Hanken Grotesk',system-ui,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif; line-height:1.6; box-shadow:0 18px 48px rgba(27,35,30,.1); }
    .no-js-shell img { display:block; border-radius:50%; margin-bottom:20px; }
    .no-js-shell h1 { margin:0 0 14px; font-family:'Fraunces',Georgia,'Times New Roman',serif; font-size:clamp(28px,5vw,42px); line-height:1.15; }
    .no-js-shell p { margin:0 0 12px; }
    .no-js-shell .no-js-kicker { color:var(--green-d); font-size:11px; font-weight:700; letter-spacing:.12em; text-transform:uppercase; }
    @media (prefers-reduced-motion: reduce) {
      *, *::before, *::after {
        scroll-behavior:auto !important;
        animation-duration:0.01ms !important;
        animation-iteration-count:1 !important;
        transition-duration:0.01ms !important;
      }
    }
