/* Homepage tokens — exact */
:root{
  --cream:#F5F0E8;--cream2:#EDE8DF;--white:#FDFCFA;
  --ink:#151210;--ink2:#2E2A26;--ink3:#5C564E;
  --orange:#D05A20;--orange2:#E87840;--warm:#8B6914;
  --border:rgba(21,18,16,0.12);--border2:rgba(21,18,16,0.06);
  --err:#b3402e;
}
*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}
html,body{height:100%}
body{background:var(--cream);color:var(--ink);font-family:'Noto Sans SC',sans-serif;font-weight:300;overflow:hidden;-webkit-font-smoothing:antialiased}
button{font:inherit;cursor:pointer}
input,textarea{font:inherit;color:var(--ink);background:var(--white);border:1.5px solid var(--border);border-radius:0;padding:14px 16px;width:100%;outline:none;transition:border-color .2s}
input:focus,textarea:focus{border-color:var(--ink)}
a{color:var(--orange);text-decoration:none}
a:hover{color:var(--orange2)}
::selection{background:rgba(208,90,32,.22)}

/* Nav = homepage */
.site-nav{position:fixed;inset:0 0 auto 0;z-index:900;height:64px;display:flex;align-items:center;justify-content:space-between;padding:0 48px;background:rgba(245,240,232,.95);backdrop-filter:blur(20px);border-bottom:1px solid var(--border)}
.logo-wrap{display:flex;align-items:center;gap:12px}
.logo-mark{width:34px;height:34px;background:var(--ink);display:flex;align-items:center;justify-content:center;flex-shrink:0}
.logo-text{font-family:'Orbitron',monospace;font-weight:900;font-size:.82rem;letter-spacing:.14em;color:var(--ink)}
.logo-text span{color:var(--orange)}
.site-nav ul{display:flex;gap:32px;list-style:none;align-items:center}
.site-nav .nav-link{color:var(--ink3);font-family:'DM Mono',monospace;font-size:.7rem;letter-spacing:.1em;transition:color .2s}
.site-nav .nav-link:hover,.site-nav .nav-link.on{color:var(--ink)}
.nav-btn{background:var(--orange);color:#fff!important;padding:9px 22px;font-family:'DM Mono',monospace;font-size:.68rem;letter-spacing:.12em;transition:background .2s}
.nav-btn:hover{background:var(--orange2);color:#fff!important}
.site-nav .menuBtn{display:none;background:transparent;border:1.5px solid var(--border);color:var(--ink);padding:7px 12px}

.btn-dark,.btn-outline-dark,.btn-orange{border-radius:0;font-family:'DM Mono',monospace;font-size:.72rem;letter-spacing:.12em;cursor:pointer;display:inline-block;text-decoration:none;transition:background .2s,border-color .2s,transform .15s}
.btn-dark{background:var(--ink);color:#fff;border:none;padding:13px 28px}
.btn-dark:hover{background:var(--ink2);transform:translateY(-2px)}
.btn-dark:disabled{opacity:.4;cursor:default;transform:none}
.btn-outline-dark{background:transparent;color:var(--ink);border:1.5px solid var(--border);padding:12px 26px}
.btn-outline-dark:hover{border-color:var(--ink);transform:translateY(-2px)}
.btn-outline-dark.danger{color:var(--err);border-color:rgba(179,64,46,.35)}
.btn-orange{background:var(--orange);color:#fff;border:none;padding:13px 26px}
.btn-orange:hover{background:var(--orange2);transform:translateY(-2px)}
.btn-dark.sm,.btn-outline-dark.sm{padding:8px 16px;font-size:.66rem}

.s-eyebrow{font-family:'DM Mono',monospace;font-size:.6rem;letter-spacing:.28em;color:var(--orange);margin-bottom:14px;display:flex;align-items:center;gap:10px}
.s-eyebrow::before{content:'';width:20px;height:1px;background:var(--orange);flex-shrink:0}

/* Shell */
#app{display:flex;height:100vh;padding-top:64px}
aside{width:280px;background:var(--white);border-right:1px solid var(--border);display:flex;flex-direction:column;flex-shrink:0}
main{flex:1;min-width:0;background:var(--cream);display:flex;flex-direction:column;overflow:hidden}

.side-brand{padding:36px 28px 28px;border-bottom:1px solid var(--border2)}
.side-title{font-family:'Orbitron',monospace;font-weight:900;font-size:1.45rem;line-height:1.12;letter-spacing:.02em;color:var(--ink);margin-bottom:14px}
.side-title span{color:var(--orange)}
.side-desc{font-size:.82rem;line-height:1.85;color:var(--ink3);max-width:22ch}

.side-nav{display:flex;flex-direction:column;padding:20px 18px;gap:8px}
.side-nav button{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:12px;background:transparent;border:1px solid transparent;padding:16px 14px;text-align:left;color:var(--ink3);transition:background .18s,border-color .18s,color .18s}
.side-nav button:hover{background:var(--cream);color:var(--ink)}
.side-nav button.on{background:var(--cream);border-color:var(--border);color:var(--ink)}
.side-nav .sn-num{font-family:'DM Mono',monospace;font-size:.58rem;letter-spacing:.14em;color:var(--orange)}
.side-nav .sn-label{font-size:.88rem;font-weight:500;color:inherit}
.side-nav .sn-en{font-family:'DM Mono',monospace;font-size:.55rem;letter-spacing:.16em;color:var(--ink3)}
.side-nav button.on .sn-en{color:var(--orange)}

.side-spacer{flex:1}
.side-foot{padding:18px 20px;border-top:1px solid var(--border);display:flex;align-items:center;gap:10px}
.who-wrap{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.who-label{font-family:'DM Mono',monospace;font-size:.52rem;letter-spacing:.18em;color:var(--ink3)}
.who{font-size:.82rem;color:var(--ink2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* Stage = premium content column */
#chatView,#skillsView,#newsView{flex:1;display:flex;flex-direction:column;min-height:0;overflow:hidden}
#skillsView,#newsView{display:none}
.stage{flex:1;display:flex;flex-direction:column;min-height:0;max-width:920px;width:100%;margin:0 auto;padding:0 40px}
.stage-head{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;padding:40px 0 28px;border-bottom:1px solid var(--border)}
.stage-title{font-family:'Orbitron',monospace;font-weight:900;font-size:clamp(1.6rem,3vw,2.2rem);line-height:1.1;letter-spacing:.02em;margin-bottom:12px}
.stage-title span{color:var(--orange)}
.stage-lead{font-size:.9rem;line-height:1.85;color:var(--ink3);max-width:42ch}

.feed{flex:1;overflow-y:auto;padding:28px 0;display:flex;flex-direction:column;gap:14px}
.msg{background:var(--white);border:1px solid var(--border);padding:22px 24px;transition:border-color .18s,transform .15s}
.msg:hover{border-color:rgba(21,18,16,.22)}
.msg.mine{border-left:3px solid var(--orange)}
.msg .role{display:flex;justify-content:space-between;align-items:baseline;gap:16px;margin-bottom:10px}
.msg .role .agent{font-family:'DM Mono',monospace;font-size:.62rem;letter-spacing:.16em;color:var(--orange)}
.msg .role time{font-family:'DM Mono',monospace;font-size:.55rem;letter-spacing:.08em;color:var(--ink3)}
.msg .bub{font-size:.92rem;line-height:1.85;color:var(--ink2);white-space:pre-wrap;word-break:break-word}

.empty{flex:1;display:flex;flex-direction:column;justify-content:center;padding:48px 8px 64px;max-width:460px}
.empty .s-eyebrow{margin-bottom:18px}
.empty h2{font-family:'Orbitron',monospace;font-weight:900;font-size:1.55rem;line-height:1.2;letter-spacing:.03em;margin-bottom:16px}
.empty p{font-size:.9rem;line-height:1.9;color:var(--ink3);margin-bottom:28px}
.empty .empty-btns{display:flex;gap:12px;flex-wrap:wrap}

.composer{display:grid;grid-template-columns:1fr auto;gap:12px;align-items:stretch;padding:20px 0 32px;border-top:1px solid var(--border);background:linear-gradient(180deg,transparent,rgba(245,240,232,.9) 30%)}
.composer textarea{resize:none;height:72px;min-height:72px;line-height:1.6}
.composer .btn-dark{align-self:stretch;min-width:108px}

.skills-toolbar{display:flex;gap:12px;padding:22px 0 8px;align-items:center}
.skills-toolbar input{max-width:360px}
.grid{flex:1;overflow-y:auto;padding:16px 0 48px;display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:2px;background:var(--border);align-content:start;border:1px solid var(--border)}
.grid:empty,.grid.has-empty{background:transparent;border:0;display:block}
.card{background:var(--white);padding:28px 24px;cursor:pointer;transition:background .2s;display:flex;flex-direction:column;min-height:180px;gap:0}
.card:hover{background:var(--cream)}
.card .card-num{font-family:'DM Mono',monospace;font-size:.55rem;letter-spacing:.18em;color:var(--orange);margin-bottom:12px}
.card h3{font-family:'Orbitron',monospace;font-size:.92rem;font-weight:700;letter-spacing:.03em;margin-bottom:12px;line-height:1.3}
.card p{font-size:.84rem;line-height:1.8;color:var(--ink3);flex:1;margin-bottom:18px;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.card .meta{font-family:'DM Mono',monospace;font-size:.55rem;letter-spacing:.1em;color:var(--ink3);display:flex;justify-content:space-between;border-top:1px solid var(--border2);padding-top:14px}
.skills-empty{background:var(--white);border:1px solid var(--border);padding:56px 40px;max-width:520px}
.skills-empty h3{font-family:'Orbitron',monospace;font-weight:900;font-size:1.2rem;margin:10px 0 12px}
.skills-empty p{font-size:.88rem;line-height:1.85;color:var(--ink3);margin-bottom:24px}

.tag{display:inline-block;background:rgba(208,90,32,.08);border:1px solid rgba(208,90,32,.2);color:var(--orange);padding:3px 10px;font-family:'DM Mono',monospace;font-size:.58rem;letter-spacing:.1em;margin:0 6px 6px 0}

.modal{position:fixed;inset:0;background:rgba(21,18,16,.48);backdrop-filter:blur(6px);display:none;align-items:center;justify-content:center;z-index:950;padding:20px}
.modal.show{display:flex}
.box{background:var(--white);border:1px solid var(--border);padding:40px;width:440px;max-width:100%;max-height:90vh;overflow-y:auto;position:relative;box-shadow:0 28px 90px rgba(21,18,16,.2)}
.box::before{content:'';position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--orange)}
.box.wide{width:640px}
.box h2{font-family:'Orbitron',monospace;font-weight:900;font-size:1.3rem;margin:6px 0 20px;letter-spacing:.03em}
.box label{display:block;font-family:'DM Mono',monospace;font-size:.58rem;letter-spacing:.14em;color:var(--ink3);margin:14px 0 6px}
.box textarea{min-height:140px;resize:vertical}
.box .row{display:flex;gap:10px;margin-top:24px}
.box .row>*{flex:1;text-align:center}
#authSwitch{margin-top:18px;font-size:.84rem;color:var(--ink3);text-align:center}
#sdMeta{font-size:.7rem;color:var(--ink3);font-family:'DM Mono',monospace;letter-spacing:.04em;line-height:1.7}
#sdDesc{margin:14px 0;color:var(--ink2);font-size:.9rem;line-height:1.85}
#skillDetail .content{background:var(--cream);border:1px solid var(--border);padding:18px;white-space:pre-wrap;max-height:36vh;overflow-y:auto;margin:8px 0;font-size:.88rem;line-height:1.7}

#toast{position:fixed;bottom:36px;left:50%;transform:translateX(-50%);background:var(--ink);color:#fff;padding:12px 28px;display:none;z-index:999;font-family:'DM Mono',monospace;font-size:.68rem;letter-spacing:.1em}
#toast.show{display:block}
#toast.err{background:var(--err)}

@media(max-width:900px){
  .site-nav{padding:0 16px}
  .site-nav ul{display:none}
  .site-nav .menuBtn{display:block}
  aside{position:fixed;z-index:850;top:64px;left:0;bottom:0;width:min(300px,86vw);transform:translateX(-100%);transition:.22s;box-shadow:24px 0 60px rgba(21,18,16,.12)}
  aside.open{transform:none}
  .stage{padding:0 20px}
  .stage-head{flex-direction:column;padding-top:28px;gap:16px}
  .composer{grid-template-columns:1fr;padding-bottom:24px}
  .composer .btn-dark{min-height:48px}
  .skills-toolbar{flex-direction:column;align-items:stretch}
  .skills-toolbar input{max-width:none}
  .grid{grid-template-columns:1fr}
}

.news-list{flex:1;overflow-y:auto;padding:24px 0 48px;display:flex;flex-direction:column;gap:14px}
.news-item{background:var(--white);border:1px solid var(--border);padding:28px 28px 24px;transition:border-color .18s}
.news-item:hover{border-color:rgba(21,18,16,.22)}
.news-item .ni-meta{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:12px}
.news-item .ni-by{font-family:'DM Mono',monospace;font-size:.62rem;letter-spacing:.16em;color:var(--orange)}
.news-item .ni-time{font-family:'DM Mono',monospace;font-size:.55rem;letter-spacing:.08em;color:var(--ink3)}
.news-item h3{font-family:'Orbitron',monospace;font-weight:700;font-size:1.05rem;letter-spacing:.02em;line-height:1.35;margin-bottom:12px}
.news-item .ni-body{font-size:.9rem;line-height:1.85;color:var(--ink2);white-space:pre-wrap;word-break:break-word}
.news-item .ni-tags{margin-top:16px;padding-top:14px;border-top:1px solid var(--border2)}
.news-empty{background:var(--white);border:1px solid var(--border);padding:56px 40px;max-width:520px}
.news-empty h3{font-family:'Orbitron',monospace;font-weight:900;font-size:1.2rem;margin:10px 0 12px}
.news-empty p{font-size:.88rem;line-height:1.85;color:var(--ink3)}
