
  /* Thunderbeard mail — Apple Mail style, 3 panes */
  .mail{flex:1;display:flex;height:100%;min-height:0;min-width:0;font-family:var(--sans)}
  .ml-side{flex:none;width:150px;background:rgba(13,17,26,.6);border-right:1px solid var(--edge);
    padding:10px 8px;display:flex;flex-direction:column;gap:2px;overflow-y:auto}
  .ml-side h5{margin:8px 6px 4px;font-size:10px;color:var(--ink-faint);letter-spacing:.08em;text-transform:uppercase}
  .ml-box{display:flex;align-items:center;gap:8px;padding:5px 8px;border-radius:7px;border:none;
    background:none;color:var(--ink-dim);font-size:12.5px;cursor:pointer;text-align:left;width:100%}
  .ml-box:hover{background:rgba(255,255,255,.05)}
  .ml-box.on{background:rgba(var(--accent-rgb),.16);color:var(--ink)}
  .ml-box .ic{font-size:12px;opacity:.8}
  .ml-box .n{margin-left:auto;font-size:10.5px;color:var(--ink-faint)}
  .ml-list{flex:none;width:225px;border-right:1px solid var(--edge);overflow-y:auto;display:flex;flex-direction:column}
  .ml-lhead{padding:10px 12px 6px;border-bottom:1px solid var(--edge)}
  .ml-lhead b{font-size:13px}
  .ml-lhead small{display:block;font-size:10.5px;color:var(--ink-faint)}
  .ml-item{display:block;text-align:left;padding:9px 12px;border-bottom:1px solid rgba(255,255,255,.05);
    border-left:none;border-right:none;border-top:none;background:none;cursor:pointer;width:100%}
  .ml-item:hover{background:rgba(255,255,255,.03)}
  .ml-item.on{background:rgba(var(--accent-rgb),.18)}
  .ml-row1{display:flex;align-items:baseline;gap:6px}
  .ml-row1 b{font-size:12.5px;color:var(--ink);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .ml-item.un .ml-row1 b::before{content:"●";color:var(--accent2);margin-right:5px;font-size:8px;vertical-align:1px}
  .ml-row1 small{margin-left:auto;font-size:10px;color:var(--ink-faint);flex:none}
  .ml-subj{display:block;font-size:11.5px;color:var(--ink-dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:1px}
  .ml-prev{display:block;font-size:11px;color:var(--ink-faint);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:1px}
  .ml-none{color:var(--ink-faint);font-size:12px;padding:16px;text-align:center}
  .ml-main{flex:1;min-width:0;display:flex;flex-direction:column}
  .ml-tools{flex:none;display:flex;align-items:center;gap:4px;padding:7px 12px;border-bottom:1px solid var(--edge)}
  .ml-tools .tb{border:none;background:none;color:var(--ink-dim);font-size:13px;padding:4px 7px;border-radius:6px;cursor:default;opacity:.7}
  .ml-tools .tb:hover{background:rgba(255,255,255,.06)}
  .ml-tools input{margin-left:auto;width:150px;padding:5px 10px;border-radius:7px;background:#0d1424;
    border:1px solid var(--edge);color:var(--ink);font-size:11.5px;outline:none}
  .ml-tools input:focus{border-color:var(--accent)}
  .ml-read{flex:1;overflow-y:auto;padding:0;min-width:0}
  .ml-head{display:flex;gap:12px;align-items:flex-start;padding:16px 20px;border-bottom:1px solid var(--edge)}
  .ml-hav{flex:none;width:40px;height:40px;border-radius:50%;overflow:hidden;background:var(--chrome-2);
    display:grid;place-items:center;font-size:17px}
  .ml-hav svg{width:40px;height:40px;display:block}
  .ml-hmeta{min-width:0;flex:1}
  .ml-hmeta b{font-size:13.5px}
  .ml-hmeta .subj{font-size:13px;color:var(--ink-dim);margin-top:1px}
  .ml-hmeta .to{font-size:11px;color:var(--ink-faint);margin-top:3px}
  .ml-hdate{flex:none;font-size:11px;color:var(--ink-faint);text-align:right}
  .ml-hdate .ml-enc{display:block;margin-top:3px}
  .ml-enc{color:var(--accent);font-size:10.5px}
  .ml-empty{text-align:center;color:var(--ink-faint);font-size:13px;padding-top:90px}
  .ml-body{padding:16px 20px;font-size:13.5px;line-height:1.65;color:var(--ink-dim)}
  .ml-body hr{border:none;border-top:1px solid var(--edge);margin:12px 0}
  .ml-objs{margin:8px 0;padding-left:20px}
  .ml-objs li{margin:6px 0}
  .ml-hint{color:var(--ink-faint)}
  .ml-mono{font-family:var(--mono);font-size:12.5px}
  .ml-dim{color:var(--ink-faint);font-size:12px}
  .ml-cin{width:60%;padding:6px 10px;border-radius:7px;background:#0d1424;border:1px solid var(--edge);color:var(--ink);font-size:12.5px;outline:none}
  .ml-cta{width:90%;padding:8px 10px;border-radius:7px;background:#0d1424;border:1px solid var(--edge);color:var(--ink);font-size:12.5px;outline:none;font-family:var(--sans);resize:vertical}
  .ml-cin:focus,.ml-cta:focus{border-color:var(--accent)}
  .ml-btn{border:1px solid var(--accent);color:var(--accent);background:rgba(var(--accent-rgb),.08);border-radius:8px;padding:6px 12px;cursor:pointer;font-size:12.5px}
  .ml-btn:hover{background:rgba(var(--accent-rgb),.16)}
  .wall-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-top:10px}
  .wall-thumb{position:relative;height:58px;border-radius:8px;border:2px solid var(--edge);
    overflow:hidden;cursor:pointer;padding:0;background:#000}
  .wall-thumb .wt-bg{position:absolute;inset:0;background-size:cover !important;background-position:center !important}
  .wall-thumb .wt-nm{position:absolute;left:6px;bottom:4px;font-size:10px;font-family:var(--mono);
    color:#fff;text-shadow:0 1px 3px #000;z-index:1;pointer-events:none}
  .wall-thumb:hover{border-color:rgba(255,255,255,.35)}
  .wall-thumb.sel{border-color:var(--accent);box-shadow:0 0 0 2px rgba(var(--accent-rgb),.25)}
  .set-btn:hover{background:rgba(255,255,255,.06);color:var(--ink)}
  .set-btn.danger{border-color:var(--red);color:var(--red)}
  .set-btn.danger:hover{background:rgba(255,95,87,.1)}
  .set-foot{text-align:center;color:var(--ink-faint);font-size:11px;padding:8px}

  /* text size */
  body[data-txt="sm"] .term, body[data-txt="sm"] #code, body[data-txt="sm"] .ed textarea{font-size:12px}
  body[data-txt="lg"] .term, body[data-txt="lg"] #code, body[data-txt="lg"] .ed textarea{font-size:16px}
  body[data-txt="lg"] .cx-main p, body[data-txt="lg"] .cx-main li{font-size:15px}
  body[data-txt="lg"] .cm-msg{font-size:15px}
  body[data-txt="lg"] .post-body, body[data-txt="lg"] .hud-obj{font-size:14px}

  /* reduce motion (manual toggle, on top of prefers-reduced-motion) */
  body.reduce-motion *, body.reduce-motion *::before, body.reduce-motion *::after{animation:none !important}
  /* windows rely on winIn to reach opacity:1 — restore their final state when animations are off */
  body.reduce-motion .win{opacity:1;transform:none}

  /* CRT scanline overlay (optional) */
  .crt{position:absolute;inset:0;pointer-events:none;z-index:145;display:none;
    background:repeating-linear-gradient(to bottom,rgba(0,0,0,0) 0 2px,rgba(0,0,0,.16) 3px,rgba(0,0,0,0) 4px)}
  .crt.on{display:block}