/* ───────── conversation deck (left) ───────── */
.deck{position:sticky;top:0;height:100vh;display:flex;flex-direction:column;min-width:0;z-index:12;border-radius:0;border:0;border-right:1px solid var(--stroke);
  background:linear-gradient(180deg,rgba(10,15,32,.82),rgba(6,9,20,.9));box-shadow:20px 0 60px rgba(0,0,0,.3)}
.deck:before{content:'';position:absolute;right:-1px;top:0;bottom:0;width:1px;background:linear-gradient(180deg,transparent,rgba(94,242,255,.5) 30%,rgba(165,133,255,.5) 70%,transparent);pointer-events:none}
.deck-head{padding:20px 20px 14px;border-bottom:1px solid var(--stroke);background:linear-gradient(180deg,rgba(94,242,255,.05),transparent)}
.deck-id{display:flex;align-items:center;gap:13px}
.deck-id .avatar:after{content:'';position:absolute;right:-3px;bottom:-3px;width:12px;height:12px;border-radius:50%;background:var(--teal);border:2px solid #0a0f20;box-shadow:0 0 10px var(--teal)}
.deck-id .avatar.local:after{background:var(--muted);box-shadow:none}
.deck-who{flex:1;min-width:0}
.deck-who small{display:block;font-family:var(--mono);font-size:10px;letter-spacing:.24em;color:var(--muted)}
.deck-who strong{display:block;font-size:17px;margin:3px 0 1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.deck-who span{display:block;font-size:12px;color:var(--cyan);font-family:var(--mono);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mode-pill{display:inline-flex;align-items:center;gap:7px;flex-shrink:0;background:rgba(94,242,255,.08);color:var(--cyan);border:1px solid rgba(94,242,255,.3);border-radius:999px;padding:7px 12px;font-size:12px;font-weight:600;transition:.2s}
.mode-pill:hover{box-shadow:0 0 20px rgba(94,242,255,.25)}
.mode-pill.research{color:#d7c6ff;border-color:rgba(165,133,255,.45);background:rgba(165,133,255,.12)}
.mode-pill.research:hover{box-shadow:0 0 20px rgba(165,133,255,.3)}
.console-tabs{position:relative;display:grid;grid-template-columns:1fr 1fr;gap:4px;margin-top:16px;padding:4px;border-radius:13px;background:rgba(0,0,0,.3);border:1px solid var(--stroke)}
.console-tabs button{position:relative;z-index:1;background:transparent;border:0;color:var(--muted);border-radius:10px;padding:9px 6px;font-size:12.5px;font-weight:600;transition:.2s}
.console-tabs button:hover{color:var(--ink)}
.console-tabs button.active{color:var(--ink);background:linear-gradient(140deg,rgba(94,242,255,.16),rgba(165,133,255,.14));box-shadow:inset 0 0 0 1px rgba(94,242,255,.3),0 4px 18px rgba(0,0,0,.3)}
.console-tabs .count{font-family:var(--mono);font-size:10px;margin-left:6px;padding:1px 6px;border-radius:999px;background:rgba(255,255,255,.08);color:var(--ink-2)}

/* chat stream */
.decision-stream{flex:1;min-height:0;overflow:auto;padding:18px 18px 10px;display:flex;flex-direction:column;gap:12px;scroll-behavior:smooth}
.sys-bubble{align-self:center;max-width:92%;text-align:center;font-size:11.5px;color:var(--muted);line-height:1.6;padding:8px 14px;border-radius:999px;background:rgba(255,255,255,.03);border:1px dashed var(--stroke-2)}
.sys-bubble b{color:var(--ink-2);font-weight:600}
.day-sep{display:flex;align-items:center;gap:10px;font-family:var(--mono);font-size:10px;letter-spacing:.2em;color:var(--faint)}
.day-sep:before,.day-sep:after{content:'';flex:1;height:1px;background:var(--stroke)}
.decision-item{position:relative;align-self:flex-end;width:92%;text-align:left;color:var(--ink);padding:14px 16px 12px;border-radius:18px 18px 6px 18px;
  border:1px solid var(--stroke-2);background:linear-gradient(150deg,rgba(40,56,110,.5),rgba(20,28,58,.6));transition:.25s cubic-bezier(.2,.8,.2,1);min-width:0;animation:rise .45s cubic-bezier(.2,.8,.2,1) both}
.decision-item:nth-child(2){animation-delay:.05s}.decision-item:nth-child(3){animation-delay:.1s}.decision-item:nth-child(4){animation-delay:.15s}.decision-item:nth-child(5){animation-delay:.2s}
@keyframes rise{from{opacity:0;transform:translateY(10px)}}
.decision-item:hover{border-color:rgba(94,242,255,.4);transform:translateX(-3px)}
.decision-item.active{border-color:transparent;background:linear-gradient(150deg,rgba(60,130,200,.42),rgba(110,80,220,.4));box-shadow:0 0 0 1px rgba(94,242,255,.55),0 12px 40px rgba(60,120,255,.25)}
.decision-item.active:after{content:'';position:absolute;inset:-1px;border-radius:inherit;padding:1px;background:var(--grad);-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none}
.bubble-top{display:flex;align-items:center;justify-content:space-between;gap:10px}
.bubble-top small{font-family:var(--mono);color:var(--cyan);font-size:10px;letter-spacing:.14em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.decision-item p{font-size:14px;line-height:1.75;margin:9px 0 10px;color:#f1f6ff;white-space:pre-wrap;overflow-wrap:anywhere}
.decision-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;color:var(--muted);font-size:11px}
.decision-foot .state{display:inline-flex;align-items:center;gap:6px}
.decision-foot .state.ok{color:var(--teal)}
.spectrum{width:70px;height:18px;flex-shrink:0}
.sp-base{fill:var(--cyan);opacity:.85}.sp-sub{fill:var(--violet);opacity:.9}
.decision-empty{margin:auto;padding:30px 20px;text-align:center;color:var(--muted);font-size:13px;line-height:1.8}
.decision-empty .symbol{display:grid;place-items:center;width:70px;height:70px;margin:0 auto 14px;border-radius:22px;font-size:28px;color:var(--cyan);background:rgba(94,242,255,.06);border:1px solid rgba(94,242,255,.2);box-shadow:0 0 40px rgba(94,242,255,.12)}
.decision-empty p{font-size:12.5px;color:var(--muted);line-height:1.8}
.decision-empty .primary{margin-top:14px}

/* composer */
.composer{padding:14px 18px 18px;border-top:1px solid var(--stroke);background:linear-gradient(0deg,rgba(0,0,0,.25),transparent)}
.composer-box{position:relative;border-radius:16px;padding:12px 14px;background:rgba(3,6,16,.6);border:1px solid var(--stroke-2);min-height:62px}
.composer-box small{display:flex;justify-content:space-between;font-family:var(--mono);font-size:10px;letter-spacing:.14em;color:var(--muted)}
.composer-box p{margin:6px 0 0;font-size:13px;line-height:1.6;color:var(--ink);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.composer-box p.placeholder{color:var(--faint)}
.decision-actions{display:grid;grid-template-columns:auto 1fr 1.25fr;gap:8px;margin-top:10px}
.decision-actions button{min-width:0}
.decision-actions .regen{width:44px;padding:0;font-size:17px;border:1px solid var(--stroke-2)}
.decision-note{font-size:11px!important;color:var(--muted)!important;line-height:1.6!important;margin:10px 2px 0!important}
.decision-note b{color:var(--ink-2);font-weight:600}

/* ───────── offset preview ───────── */
.preview-card{padding:22px}
.preview-title{display:flex;align-items:center;justify-content:space-between;gap:10px}
.preview-title h3{margin:0;font-size:15px;font-weight:600}
.offset-legend,.offset-row{display:grid;grid-template-columns:92px minmax(0,1fr) 34px 42px;align-items:center;gap:10px;font-size:12.5px;padding:7px 0}
.offset-legend{font-family:var(--mono);color:var(--muted);font-size:10px;letter-spacing:.12em;margin-top:12px;border-bottom:1px solid var(--stroke)}
.offset-row span{color:var(--ink-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.offset-row b,.offset-legend span:nth-child(n+3){text-align:right;font-variant-numeric:tabular-nums}
.offset-row b{font-weight:600}
.offset-row em{font-style:normal;font-family:var(--mono);font-size:11px;text-align:right;color:var(--muted)}
.offset-row .positive{color:var(--teal)}.offset-row .negative{color:#c6a8ff}
.offset-bar{width:100%;height:8px;display:block}
.ob-track{fill:rgba(150,175,255,.1)}
.ob-fill{fill:url(#gBase)}.ob-fill.sub{fill:url(#gSub)}
.ob-base{fill:#fff;opacity:.7}
.virtual-pair{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:16px}
.virtual-pair>div{border-radius:14px;padding:12px 14px;background:linear-gradient(150deg,rgba(165,133,255,.12),rgba(255,95,210,.06));border:1px solid rgba(165,133,255,.3)}
.virtual-pair small{display:block;color:#cdb9ff;font-size:11px}
.virtual-pair strong{display:block;margin-top:4px;font-size:26px;color:#efe6ff;font-weight:600;font-variant-numeric:tabular-nums}
.virtual-label{font-size:11.5px;color:#b8a9d9;margin:8px 0;line-height:1.6}
.care-note{display:flex;gap:8px;align-items:flex-start;font-size:12px;color:#ffd9b0;line-height:1.6;margin:12px 0 0;padding:10px 12px;border-radius:12px;background:rgba(255,196,107,.07);border:1px solid rgba(255,196,107,.25)}
.self-note{display:flex;gap:8px;align-items:center;margin-top:14px;font-size:11.5px;color:var(--muted)}
.self-note:before{content:'◐';color:var(--cyan)}
.trace-details{margin-top:14px;font-size:12px;color:var(--muted)}
.trace-details summary{cursor:pointer;color:var(--cyan);font-size:12px}
.trace-details p{line-height:1.7;margin:8px 0}
.trace-details pre{white-space:pre-wrap;overflow-wrap:anywhere;font-family:var(--mono);font-size:10.5px;max-height:220px;overflow:auto;color:#9fc6e6;background:rgba(0,0,0,.35);border:1px solid var(--stroke);border-radius:10px;padding:12px}

/* ───────── factor atlas ───────── */
.factor-system{padding:26px}
.factor-system .card-head{align-items:flex-start}
.factor-system h2{margin:10px 0 4px;font-size:24px;font-weight:700}
.factor-system .card-head p,.model-note{font-size:13px;color:var(--ink-2);line-height:1.7;margin:0}
.factor-dictionary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-top:22px}
.dictionary-item{position:relative;border-radius:16px;padding:18px;min-width:0;background:rgba(255,255,255,.025);border:1px solid var(--stroke);overflow:hidden;transition:.25s}
.dictionary-item:hover{transform:translateY(-3px);border-color:rgba(94,242,255,.35)}
.dictionary-item:before{content:'';position:absolute;right:-30px;top:-30px;width:110px;height:110px;border-radius:50%;background:radial-gradient(circle,rgba(94,242,255,.16),transparent 70%)}
.dictionary-item.sub:before{background:radial-gradient(circle,rgba(165,133,255,.2),transparent 70%)}
.dictionary-item.hormone:before{background:radial-gradient(circle,rgba(255,95,210,.18),transparent 70%)}
.dictionary-item.sub:hover{border-color:rgba(165,133,255,.45)}
.dictionary-item small{position:relative;font-family:var(--mono);color:var(--cyan);font-size:10px;letter-spacing:.12em}
.dictionary-item.sub small{color:#c6b2ff}.dictionary-item.hormone small{color:#ff9be2}
.dictionary-item h3{position:relative;font-size:16px;font-weight:600;margin:10px 0 8px}
.dictionary-item p{position:relative;font-size:12.5px;color:var(--ink-2);line-height:1.7;min-height:42px;margin:0 0 12px}
.dictionary-item .self{position:relative;display:inline-block;font-size:10.5px;color:var(--muted);margin-bottom:12px;padding:3px 8px;border-radius:999px;border:1px solid var(--stroke)}
.dictionary-item .range{position:relative;display:grid;gap:6px;font-size:11.5px;color:var(--muted);border-top:1px solid var(--stroke);padding-top:12px}
.dictionary-item .range b{font-family:var(--mono);color:var(--ink-2);font-weight:500;margin-right:6px}
.baseline-strip{display:flex;gap:26px;flex-wrap:wrap;padding:18px 0 10px;font-size:12.5px;color:var(--muted)}
.baseline-strip b{color:var(--ink);margin-left:8px;font-weight:600}
.dialog.wide{width:min(920px,calc(100vw - 30px))}
.spec-document{color:var(--ink-2);font-size:12px}
.spec-document summary{cursor:pointer;color:var(--cyan)}
.spec-document pre{white-space:pre-wrap;overflow-wrap:anywhere;font-size:13px;line-height:1.85;max-height:62vh;overflow:auto;background:rgba(0,0,0,.35);border:1px solid var(--stroke);padding:20px;border-radius:14px;font-family:inherit}
.dialog code{overflow-wrap:anywhere;color:var(--cyan);font-size:12px;font-family:var(--mono)}

/* ───────── Threads DM ───────── */
.dm-toolbar{padding:14px 18px;display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid var(--stroke);font-size:13px}
.dm-toolbar b{font-weight:600}
.dm-toolbar small{display:block;font-size:11px;color:var(--muted);margin-top:4px}
.dm-stream{flex:1;min-height:0;overflow:auto;padding:18px;display:flex;flex-direction:column;gap:12px}
.dm-bubble{max-width:86%;align-self:flex-start;padding:11px 14px;border-radius:18px 18px 18px 6px;font-size:13.5px;background:rgba(255,255,255,.05);border:1px solid var(--stroke-2);animation:rise .35s ease both}
.dm-bubble.own{align-self:flex-end;border-radius:18px 18px 6px 18px;background:linear-gradient(150deg,rgba(60,130,200,.35),rgba(110,80,220,.35));border-color:rgba(130,150,255,.35)}
.dm-bubble small{font-family:var(--mono);color:var(--muted);font-size:10px}
.dm-bubble p{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.7;margin:6px 0 2px}
.dm-bubble .text-btn{font-size:11px;padding:4px 0 0}
.dm-footer{padding:14px 18px 18px;border-top:1px solid var(--stroke)}
.dm-footer .inline-actions{margin-top:10px}
.dm-footer p{font-size:11px;line-height:1.7;color:var(--muted);margin:10px 0 0}
.dm-inbox{display:grid;gap:8px;width:100%}
.dm-inbox-head{font-family:var(--mono);font-size:10.5px;color:var(--muted);letter-spacing:.08em;margin-bottom:4px}
.dm-convo{display:flex;align-items:center;justify-content:space-between;gap:10px;border:1px solid var(--stroke);background:rgba(255,255,255,.03);border-radius:14px;padding:11px 12px;font-size:13px;min-width:0;transition:.2s}
.dm-convo:hover{border-color:var(--stroke-hi)}
.dm-convo.match{border-color:rgba(94,242,255,.5);box-shadow:0 0 24px rgba(94,242,255,.12)}
.dm-convo>div{min-width:0}
.dm-convo b{display:block;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dm-convo small{display:block;color:var(--muted);font-size:11px;margin-top:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dm-convo button{padding:8px 12px;font-size:12px;flex-shrink:0}

@media(max-width:1440px){.factor-dictionary{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:1060px){.factor-dictionary{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:900px){
  .deck{position:relative;height:auto;max-height:none;border-right:0;border-bottom:1px solid var(--stroke);box-shadow:none}
  .deck:before{display:none}
  .decision-stream,.dm-stream{max-height:56vh;flex:none}
}
@media(max-width:520px){.factor-dictionary{grid-template-columns:1fr}.offset-legend,.offset-row{grid-template-columns:78px minmax(0,1fr) 30px 38px;gap:8px}.factor-system{padding:18px}}

/* ───────── consent dialog ───────── */
.consent-list{display:grid;gap:14px;margin-top:6px}
.consent-row{border-radius:16px;padding:16px 18px;background:rgba(255,255,255,.03);border:1px solid var(--stroke-2)}
.consent-row.on{border-color:rgba(60,240,200,.35);background:rgba(60,240,200,.04)}
.consent-head{display:flex;align-items:center;justify-content:space-between;gap:10px}
.consent-head b{font-size:15px}
.consent-row p{margin:10px 0}
.consent-meta{display:flex;flex-wrap:wrap;gap:16px;font-family:var(--mono);font-size:10.5px;color:var(--muted)}
.consent-form .buttons{margin-top:12px!important}
.dialog label.radio{display:flex;gap:9px;align-items:center;font-size:13px;color:var(--ink-2);margin:10px 0}
.dialog label.radio input{accent-color:var(--cyan)}

/* ───────── personal style trend ───────── */
.trend-card{padding:26px}
.trend-card h2{margin:10px 0 4px;font-size:24px;font-weight:700}
.trend-card .card-head{align-items:flex-start}
.trend-card .card-head p{font-size:13px;color:var(--ink-2);line-height:1.7;margin:0;max-width:760px}
.trend-legend{display:flex;gap:18px;margin:18px 0 6px;font-size:12.5px;color:var(--ink-2)}
.trend-legend .lg:before{content:'';display:inline-block;width:18px;height:2px;border-radius:2px;margin-right:8px;vertical-align:middle}
.trend-legend .lg.t:before{background:#c07a1e}.trend-legend .lg.o:before{background:#7b7cf0}
.trend-plot{position:relative}
.trend-plot svg{width:100%;height:auto;display:block;overflow:visible}
.tr-grid{stroke:rgba(150,175,255,.1);stroke-width:1}
.tr-axis{fill:var(--muted);font-size:11px;font-family:var(--mono)}
.tr-line{fill:none;stroke-width:2;stroke-linejoin:round;stroke-linecap:round}
.tr-line.t{stroke:#c07a1e}.tr-line.o{stroke:#7b7cf0}
.tr-dot{stroke:#0b1022;stroke-width:2}.tr-dot.t{fill:#c07a1e}.tr-dot.o{fill:#7b7cf0}
.tr-label{fill:var(--ink-2);font-size:12px;font-weight:600}
.tr-hit{fill:transparent;cursor:crosshair}
.tr-cross{stroke:rgba(220,230,255,.35);stroke-width:1;stroke-dasharray:3 4;opacity:0}
.tr-cross.on{opacity:1}
.tr-tip{position:absolute;top:0;transform:translate(-50%,-6px);display:none;flex-direction:column;gap:4px;padding:10px 12px;border-radius:12px;background:var(--glass-strong);border:1px solid var(--stroke-2);box-shadow:0 14px 40px rgba(0,0,0,.5);font-size:12px;color:var(--ink-2);pointer-events:none;white-space:nowrap;z-index:3}
.tr-tip.on{display:flex}
.tr-tip b{color:var(--ink)}
.tr-tip small{color:var(--muted);font-size:11px}
.tr-tip .sw{display:inline-block;width:10px;height:3px;border-radius:2px;margin-right:6px;vertical-align:middle}
.tr-tip .sw.t{background:#c07a1e}.tr-tip .sw.o{background:#7b7cf0}
.trend-table{width:100%;border-collapse:collapse;margin-top:10px;font-size:12px;font-variant-numeric:tabular-nums}
.trend-table th,.trend-table td{padding:7px 10px;border-bottom:1px solid var(--stroke);text-align:right;color:var(--ink-2)}
.trend-table th:first-child,.trend-table td:first-child{text-align:left}
.trend-table th{font-family:var(--mono);font-size:10.5px;color:var(--muted);font-weight:500}
@media(max-width:520px){.trend-card{padding:18px}}

/* ───────── relationship compass (P1) ───────── */
.compass{padding:26px}
.compass .card-head{align-items:flex-start}
.compass h2{margin:10px 0 4px;font-size:24px;font-weight:700}
.compass .card-head p{font-size:13px;color:var(--ink-2);line-height:1.7;margin:0;max-width:820px}
.compass-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:14px;margin-top:20px}
.compass-card{position:relative;display:flex;flex-direction:column;gap:8px;border-radius:16px;padding:16px 18px;background:rgba(255,255,255,.03);border:1px solid var(--stroke);overflow:hidden;transition:.25s;animation:rise .45s cubic-bezier(.2,.8,.2,1) both}
.compass-card:before{content:'';position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--cyan)}
.compass-card.gentle:before{background:var(--violet)}
.compass-card.caution:before{background:var(--amber)}
.compass-card.caution{border-color:rgba(255,196,107,.3);background:rgba(255,196,107,.04)}
.compass-card:hover{transform:translateY(-2px);border-color:var(--stroke-hi)}
.compass-top{display:flex;justify-content:space-between;align-items:center;gap:8px;font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;color:var(--muted)}
.compass-kind{display:inline-flex;align-items:center;gap:7px;color:var(--ink-2)}
.compass-kind i{font-style:normal;width:22px;height:22px;display:grid;place-items:center;border-radius:7px;background:rgba(94,242,255,.08);color:var(--cyan)}
.compass-card.gentle .compass-kind i{background:rgba(165,133,255,.1);color:#cdb9ff}
.compass-card.caution .compass-kind i,.compass-card.caution .compass-level{color:var(--amber)}
.compass-card h3{margin:2px 0 0;font-size:15.5px;font-weight:600;line-height:1.45}
.compass-card p{margin:0;font-size:13px;color:var(--ink-2);line-height:1.7}
.compass-evidence{margin:0;padding:0;list-style:none;font-size:12px;color:var(--muted)}
.compass-evidence li{padding:6px 10px;border-radius:9px;background:rgba(0,0,0,.25);border:1px dashed var(--stroke-2)}
.compass-opener{margin-top:auto;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px;border-radius:12px;background:rgba(94,242,255,.05);border:1px solid rgba(94,242,255,.18);font-size:13px;color:var(--ink)}
.compass-opener .text-btn{flex-shrink:0;font-size:12px}

/* ───────── draft risks & write mode ───────── */
.risk-chip{display:inline-flex;align-items:center;gap:5px;font-size:11px;padding:2px 9px;border-radius:999px;color:#cdb9ff;border:1px solid rgba(165,133,255,.35);background:rgba(165,133,255,.08)}
.risk-chip.caution{color:var(--amber);border-color:rgba(255,196,107,.4);background:rgba(255,196,107,.08)}
.risk-list{display:grid;gap:8px;margin-top:10px;max-height:190px;overflow:auto}
.risk{display:grid;gap:3px;padding:9px 12px;border-radius:12px;font-size:12px;color:var(--ink-2);line-height:1.6;background:rgba(165,133,255,.06);border:1px solid rgba(165,133,255,.25)}
.risk.caution{background:rgba(255,196,107,.06);border-color:rgba(255,196,107,.3)}
.risk b{color:var(--ink);font-weight:600;font-size:12.5px}
.risk.caution b{color:#ffd9a0}
.risk small{color:var(--muted);font-size:11px}
.risk-ok{margin:10px 2px 0;font-size:12px;color:var(--teal)}
.decision-actions.four{grid-template-columns:auto auto 1fr 1.25fr}
.write-box{display:block;border-radius:16px;padding:12px 14px;background:rgba(3,6,16,.6);border:1px solid rgba(94,242,255,.35);box-shadow:0 0 0 4px rgba(94,242,255,.06)}
.write-box small{display:flex;justify-content:space-between;font-family:var(--mono);font-size:10px;letter-spacing:.14em;color:var(--cyan)}
.write-box textarea{width:100%;min-height:96px;margin-top:8px;border:0!important;box-shadow:none!important;background:transparent!important;padding:0!important;font-size:14px;line-height:1.7;resize:vertical}
.write-actions{grid-template-columns:auto 1fr!important}
@media(max-width:520px){.compass{padding:18px}.compass-grid{grid-template-columns:1fr}}

/* ───────── 月老沙盒（純娛樂，與工作台隔離） ───────── */
.sandbox-banner{padding:10px 14px;border-radius:12px;background:rgba(255,95,210,.06);border:1px dashed rgba(255,95,210,.35)}
.sandbox-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:14px}
.sandbox-card{border-radius:16px;padding:16px 18px;background:rgba(255,255,255,.03);border:1px solid var(--stroke-2)}
.sandbox-card h3{margin:0 0 6px;font-size:15px}
.sandbox-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.sandbox-result{display:grid;gap:6px;margin-top:12px;font-size:13px;color:var(--ink-2);line-height:1.7}
.sandbox-result:empty{display:none}
.sandbox-result b{color:var(--ink);font-size:15px}
.sandbox-result small{color:var(--muted);font-size:11px}
@media(max-width:640px){.sandbox-grid{grid-template-columns:1fr}}
.risk.style{background:rgba(94,242,255,.04);border-color:rgba(94,242,255,.22)}
.risk.style b{color:#bff6ff}
.rewrite-box{margin-top:10px;padding:10px 12px;border-radius:12px;background:rgba(60,240,200,.05);border:1px solid rgba(60,240,200,.3)}
.rewrite-box small{font-family:var(--mono);font-size:10px;letter-spacing:.12em;color:var(--teal)}
.rewrite-box p{margin:6px 0 2px;font-size:13px;line-height:1.7;color:var(--ink)}
.compass-card.caution.safety,.compass-card.caution.stop{border-color:rgba(255,196,107,.5)}
.polish-row{display:flex;align-items:center;gap:10px;margin-top:10px;font-size:12px;color:var(--ink-2)}
.polish-row span{font-family:var(--mono);font-size:10px;letter-spacing:.12em;color:var(--violet)}
.routing-form p{font-size:12px!important}
.tone-line{margin:10px 2px 0;font-size:12px;color:var(--ink-2)}
.tone-line b{color:var(--cyan);font-weight:600}

.duel-body{display:grid;gap:12px;margin-top:12px}
.duel-log{max-height:300px;overflow:auto;display:grid;gap:8px;padding:12px;border-radius:14px;border:1px solid var(--stroke-2);background:rgba(255,255,255,.02)}
.duel-msg{max-width:78%;padding:8px 12px;border-radius:14px;line-height:1.6}
.duel-msg p{margin:2px 0 0}
.duel-msg small{color:var(--muted);font-size:11px}
.duel-msg.peer{justify-self:start;background:rgba(122,168,255,.10);border:1px solid rgba(122,168,255,.25)}
.duel-msg.me{justify-self:end;background:rgba(165,133,255,.12);border:1px solid rgba(165,133,255,.3)}
.duel-analysis{padding:12px 14px;border-radius:14px;border:1px dashed var(--stroke-2);font-size:13px;line-height:1.7}
.duel-analysis h3{margin:6px 0;font-size:14px}
.duel-cards li.caution b{color:#ff8fa3}.duel-cards small,.duel-replies small{display:block;color:var(--muted);font-size:11px}
.duel-replies li{margin-bottom:8px}
.duel-form textarea{width:100%;margin-top:10px}
.duel-tactic{max-width:92%;padding:8px 12px;border-radius:12px;border:1px solid rgba(255,143,163,.45);background:rgba(255,143,163,.06);font-size:12.5px;line-height:1.7}
.duel-tactic p{margin:2px 0}.duel-tactic small{display:block;color:var(--muted);font-size:11px}
