  :root{
    --paper: #f6efe2;
    --paper-dark: #ece1cc;
    --ink: #2b2420;
    --ink-soft: #5a4f43;
    --brass: #a9812f;
    --brass-dark: #7c5f22;
    --rust: #a5502c;
    --line: #d9cbae;
    --card: #fffdf8;
  }
  *{box-sizing:border-box;}
  body{
    margin:0;
    background:var(--paper);
    color:var(--ink);
    font-family:'Inter', sans-serif;
    line-height:1.55;
  }
  .wrap{max-width:820px;margin:0 auto;padding:32px 20px 80px;}
  header.masthead{
    border-bottom:2px solid var(--brass);
    padding-bottom:18px;
    margin-bottom:28px;
  }
  header.masthead h1{
    font-family:'Playfair Display', serif;
    font-weight:700;
    font-size:2.1rem;
    margin:0 0 4px;
    letter-spacing:0.2px;
  }
  header.masthead p.sub{
    margin:0;
    color:var(--ink-soft);
    font-size:0.98rem;
  }
  .panel{
    background:var(--card);
    border:1px solid var(--line);
    border-radius:6px;
    padding:22px;
    margin-bottom:24px;
    box-shadow:0 1px 0 rgba(0,0,0,0.02);
  }
  label{
    display:block;
    font-size:0.82rem;
    text-transform:uppercase;
    letter-spacing:0.06em;
    color:var(--brass-dark);
    margin-bottom:6px;
    font-weight:600;
  }
  input[type=text]{
    width:100%;
    padding:11px 12px;
    border:1px solid var(--line);
    border-radius:4px;
    background:#fff;
    font-family:'Inter',sans-serif;
    font-size:1rem;
    color:var(--ink);
    margin-bottom:16px;
  }
  input[type=text]:focus{outline:2px solid var(--brass);outline-offset:1px;}
  input[type=password], select{
    width:100%;
    padding:11px 12px;
    border:1px solid var(--line);
    border-radius:4px;
    background:#fff;
    font-family:'Inter',sans-serif;
    font-size:1rem;
    color:var(--ink);
    margin-bottom:16px;
  }
  input[type=password]:focus, select:focus{outline:2px solid var(--brass);outline-offset:1px;}
  .settings-meta{font-size:0.85rem;color:var(--ink-soft);margin-top:2px;min-height:20px;}
  .settings-meta .ok{color:#2e7d32;}
  .settings-meta .warn{color:var(--rust);}
  .key-pill{display:inline-block;font-size:0.78rem;font-weight:600;padding:1px 8px;border-radius:10px;background:var(--paper-dark);color:var(--ink-soft);margin-left:6px;vertical-align:middle;}
  .key-pill.set{background:#e5efe3;color:#2e7d32;}
  .btn-ghost{background:transparent;color:var(--ink-soft);border:1px solid var(--line);font-size:0.85rem;padding:8px 12px;}
  .btn-ghost:hover{color:var(--rust);}
  .row2{display:flex;gap:14px;flex-wrap:wrap;}
  .row2 > div{flex:1 1 220px;}
  button{
    font-family:'Inter',sans-serif;
    font-weight:600;
    font-size:0.95rem;
    padding:11px 20px;
    border-radius:4px;
    border:none;
    cursor:pointer;
    transition:opacity 0.15s ease;
  }
  button:hover{opacity:0.88;}
  button:disabled{opacity:0.5;cursor:not-allowed;}
  .btn-primary{background:var(--rust);color:#fff;}
  .btn-secondary{background:var(--paper-dark);color:var(--ink);border:1px solid var(--line);}
  .btn-row{display:flex;gap:10px;flex-wrap:wrap;margin-top:6px;}

  .status{
    font-size:0.9rem;
    color:var(--ink-soft);
    margin-top:14px;
    display:flex;
    align-items:center;
    gap:10px;
    min-height:20px;
  }
  .spinner{
    width:14px;height:14px;
    border:2px solid var(--line);
    border-top-color:var(--rust);
    border-radius:50%;
    animation:spin 0.8s linear infinite;
    flex:none;
  }
  @keyframes spin{to{transform:rotate(360deg);}}

  /* Tabs */
  .tabs{
    display:flex;
    flex-wrap:wrap;
    gap:4px;
    border-bottom:2px solid var(--line);
    margin-bottom:20px;
  }
  .tab-btn{
    background:transparent;
    color:var(--ink-soft);
    font-weight:600;
    font-size:0.88rem;
    padding:10px 14px;
    border-radius:4px 4px 0 0;
    border:none;
    cursor:pointer;
    position:relative;
    top:2px;
  }
  .tab-btn.active{
    color:var(--rust);
    background:var(--card);
    border:1px solid var(--line);
    border-bottom:2px solid var(--card);
  }
  .tab-panel{display:none;}
  .tab-panel.active{display:block;}

  .report{font-size:1rem;}
  .report h1, .report h2, .report h3{
    font-family:'Playfair Display', serif;
    color:var(--ink);
    margin-top:1.2em;
  }
  .report h1{font-size:1.5rem;border-bottom:1px solid var(--line);padding-bottom:6px;}
  .report h2{font-size:1.22rem;color:var(--brass-dark);}
  .report h3{font-size:1.05rem;}
  .report p{margin:0.6em 0;color:var(--ink);}
  .report ul, .report ol{padding-left:1.3em;}
  .report li{margin:0.35em 0;}
  .report em{color:var(--ink-soft);}
  .report strong{color:var(--rust);}
  .report hr{border:none;border-top:1px solid var(--line);margin:1.6em 0;}

  .divider{height:1px;background:var(--line);margin:22px 0;}

  /* Chapters list */
  .chapter-card{
    border:1px solid var(--line);
    border-radius:5px;
    padding:14px 16px;
    margin-bottom:10px;
    background:#fff;
  }
  .chapter-card h3{
    font-family:'Playfair Display', serif;
    font-size:1.02rem;
    margin:0 0 6px;
    color:var(--ink);
  }
  .chapter-card p{margin:0;color:var(--ink-soft);font-size:0.93rem;}

  /* Flip cards */
  .flip-grid{
    display:grid;
    grid-template-columns:repeat(auto-fill, minmax(220px, 1fr));
    gap:14px;
  }
  .flip-card{
    perspective:1000px;
    height:150px;
    cursor:pointer;
  }
  .flip-card-inner{
    position:relative;
    width:100%;height:100%;
    transition:transform 0.5s;
    transform-style:preserve-3d;
  }
  .flip-card.flipped .flip-card-inner{transform:rotateY(180deg);}
  .flip-face{
    position:absolute;top:0;left:0;
    width:100%;height:100%;
    backface-visibility:hidden;
    border-radius:6px;
    padding:14px;
    font-size:0.9rem;
    display:flex;
    align-items:center;
    overflow-y:auto;
  }
  .flip-front{
    background:var(--card);
    border:1px solid var(--brass);
    color:var(--ink);
    font-weight:600;
  }
  .flip-back{
    background:var(--brass);
    color:#fff;
    transform:rotateY(180deg);
  }
  .flip-hint{
    font-size:0.72rem;
    color:var(--ink-soft);
    margin-bottom:12px;
  }

  /* Mind map */
  .mindmap-wrap{
    width:100%;
    overflow:hidden;
    background:#fffdf8;
    border:1px solid var(--line);
    border-radius:6px;
  }

  /* Chat */
  .chat-log{max-height:420px;overflow-y:auto;padding-right:4px;margin-bottom:14px;}
  .msg{padding:10px 13px;border-radius:6px;margin-bottom:10px;font-size:0.95rem;line-height:1.5;}
  .msg.user{background:var(--paper-dark);color:var(--ink);}
  .msg.assistant{background:#fff;border:1px solid var(--line);}
  .msg .who{font-size:0.72rem;text-transform:uppercase;letter-spacing:0.06em;color:var(--brass-dark);font-weight:600;margin-bottom:4px;display:block;}
  .chat-input-row{display:flex;gap:10px;}
  .chat-input-row input{margin-bottom:0;flex:1;}

  .empty-note{color:var(--ink-soft);font-size:0.92rem;font-style:italic;}
  .disclosure{
    font-size:0.82rem;color:var(--ink-soft);
    background:var(--paper-dark);border-left:3px solid var(--brass);
    padding:10px 14px;border-radius:0 4px 4px 0;margin-bottom:20px;
  }
  h2.section-title{
    font-family:'Playfair Display', serif;
    font-size:1.15rem;color:var(--ink);margin:0 0 14px;
  }
  ::-webkit-scrollbar{width:8px;}
  ::-webkit-scrollbar-thumb{background:var(--line);border-radius:4px;}

  /* Flip card numbering */
  .flip-face{flex-direction:column;align-items:flex-start;justify-content:flex-start;}
  .flip-num{
    display:inline-block;margin-bottom:6px;
    background:var(--paper-dark);color:var(--brass-dark);
    border:1px solid var(--line);border-radius:10px;
    font-size:0.7rem;font-weight:700;line-height:1.6;padding:0 8px;
  }
  .flip-back .flip-num{background:rgba(255,255,255,0.16);color:#fff;border-color:rgba(255,255,255,0.35);}
  .flip-q{width:100%;}

  /* Cascade (replaces the mind map) */
  .cascade-central{
    font-family:'Playfair Display',serif;
    font-weight:700;font-size:1.08rem;color:var(--rust);
    border-bottom:1px dashed var(--line);
    padding-bottom:8px;margin-bottom:10px;
  }
  .cascade-group{
    border:1px solid var(--line);
    border-left:3px solid var(--brass);
    border-radius:4px;
    margin:7px 0;
    background:#fff;
    overflow:hidden;
  }
  .cascade-head{
    display:flex;align-items:center;gap:9px;
    width:100%;text-align:left;
    background:transparent;border:none;cursor:pointer;
    padding:11px 13px;
    font-family:'Inter',sans-serif;
    font-weight:600;font-size:0.97rem;color:var(--ink);
  }
  .cascade-head:hover{color:var(--rust);}
  .cascade-head .caret{color:var(--brass);font-size:0.8rem;transition:transform 0.15s ease;}
  .cascade-group.open .cascade-head .caret{transform:rotate(90deg);}
  .cascade-count{
    margin-left:auto;
    background:var(--paper-dark);color:var(--ink-soft);
    border-radius:10px;font-size:0.75rem;font-weight:700;
    padding:0 8px;line-height:1.7;
  }
  .cascade-children{display:none;padding:2px 14px 12px 32px;}
  .cascade-group.open .cascade-children{display:block;}
  .cascade-leaf{
    border-left:2px solid var(--line);
    margin:5px 0;padding:5px 10px;
    color:var(--ink);font-size:0.93rem;line-height:1.45;
  }
  .cascade-leaf.empty{color:var(--ink-soft);font-style:italic;}

  @media (max-width:480px){
    header.masthead h1{font-size:1.6rem;}
    .wrap{padding:20px 14px 60px;}
    .tab-btn{font-size:0.8rem;padding:8px 10px;}
  }

  /* Keys toggle (collapsed by default to save space) */
  .keys-toggle{
    width:100%;text-align:left;
    display:flex;align-items:center;gap:10px;
    font-family:'Inter',sans-serif;
    background:var(--card);border:1px solid var(--line);border-radius:6px;
    padding:10px 14px;margin-bottom:16px;cursor:pointer;color:var(--ink);
    box-shadow:0 1px 0 rgba(0,0,0,0.02);
  }
  .keys-toggle:hover{border-color:var(--brass);}
  .keys-label{font-weight:700;}
  .keys-state{flex:1;color:var(--ink-soft);font-size:0.85rem;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  .keys-caret{color:var(--brass);transition:transform .15s ease;}
  .keys-toggle[aria-expanded="true"] .keys-caret{transform:rotate(180deg);}
  .keys-panel[hidden]{display:none;}

  /* Book library + verification UI */
  .muted-inline{color:var(--ink-soft);font-weight:400;font-size:0.8rem;margin-left:6px;}
  .sub-title{font-family:'Playfair Display',serif;font-size:1.02rem;color:var(--brass-dark);margin:18px 0 10px;}
  .verify-box{
    background:var(--paper-dark);border-left:3px solid var(--brass);
    padding:10px 14px;border-radius:0 4px 4px 0;margin:12px 0;
    font-size:0.9rem;color:var(--ink);
  }
  .verify-box.warn{border-left-color:var(--rust);background:#f7e6dd;}
  .verify-box[hidden]{display:none;}
  .cand-row{display:flex;align-items:center;gap:10px;margin:7px 0;flex-wrap:wrap;}
  .cand-info{flex:1;color:var(--ink);}
  .cand-info .cand-year{color:var(--ink-soft);}

  /* "More" dropdown navigation */
  .tab-group{position:relative;display:inline-flex;}
  .tab-btn .tab-caret{font-size:0.7rem;color:inherit;opacity:0.7;margin-left:4px;}
  .tab-menu{
    position:absolute;top:100%;left:0;z-index:30;min-width:190px;
    background:#fff;border:1px solid var(--line);border-radius:6px;
    box-shadow:0 6px 18px rgba(0,0,0,0.12);padding:6px;
  }
  .tab-menu[hidden]{display:none;}
  .tab-menu-item{
    display:block;width:100%;text-align:left;
    background:transparent;border:none;cursor:pointer;
    padding:8px 10px;border-radius:4px;
    font-family:'Inter',sans-serif;font-weight:500;font-size:0.9rem;color:var(--ink);
  }
  .tab-menu-item:hover{background:var(--paper-dark);color:var(--rust);}
  .tab-menu-item.active{background:var(--paper-dark);color:var(--rust);font-weight:600;}
  .tab-group .tab-btn.active + .tab-menu,
  .tab-menu{ /* menu shown when toggled via JS */ }
  .tab-group.open .tab-menu{display:block;}
  .tab-group.open .tab-caret{transform:rotate(180deg);}
  .tab-caret{display:inline-block;transition:transform .15s ease;}
