/* =========================================================================
   Lectorium — the reading room of Estonian law
   Crowned Phoenix brand: gold (#eda800) on near-black · Raleway · JetBrains Mono
   ========================================================================= */
:root{
  --bg:#08090c; --bg-2:#0b0d11; --surface:#10131a; --surface-2:#161a23;
  --line:#1e232e; --line-hot:#3a3320;
  --gold:#eda800; --gold-br:#ffce5a; --gold-deep:#b8800a; --gold-soft:rgba(237,168,0,.12);
  --ink:#eef1f6; --ink-mut:#9aa3b2; --ink-faint:#69707e;
  --good:#6fe39a;
  --sans:"Raleway", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  --mono:"JetBrains Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace;
  --glow:0 0 26px rgba(237,168,0,.28);
  --ease:cubic-bezier(.22,.61,.36,1);
  --side:290px;
}
*{box-sizing:border-box}
html,body{height:100%}
body{margin:0; background:var(--bg); color:var(--ink); font-family:var(--sans);
  font-size:16px; line-height:1.6; -webkit-font-smoothing:antialiased; overflow:hidden}
body::before{content:""; position:fixed; inset:0; z-index:-2; pointer-events:none;
  background:
   radial-gradient(90vw 60vh at 82% -10%, rgba(237,168,0,.09), transparent 60%),
   radial-gradient(70vw 55vh at 0% 108%, rgba(237,168,0,.05), transparent 55%),
   linear-gradient(180deg,var(--bg),var(--bg-2))}
a{color:inherit; text-decoration:none}
img,svg{display:block; max-width:100%}
button,textarea{font-family:inherit}
::selection{background:var(--gold); color:#1a1200}

/* film grain + cursor glow (from the brand site) */
.fx-grain{position:fixed; inset:0; z-index:9990; pointer-events:none; opacity:.035; mix-blend-mode:screen;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  animation:grain 6s steps(6) infinite}
@keyframes grain{0%{transform:translate(0,0)}50%{transform:translate(2%,-2%)}100%{transform:translate(0,0)}}
.cursor-glow{position:fixed; top:0; left:0; width:460px; height:460px; z-index:1; pointer-events:none;
  margin:-230px 0 0 -230px; border-radius:50%; opacity:0; transition:opacity .4s;
  background:radial-gradient(circle, rgba(237,168,0,.08), rgba(237,168,0,.02) 42%, transparent 62%);
  transform:translate3d(-1000px,-1000px,0)}

/* ============================ APP SHELL ============================ */
.app{display:grid; grid-template-columns:var(--side) 1fr; height:100dvh; position:relative; z-index:2}

/* ============================ SIDEBAR ============================ */
.sidebar{display:flex; flex-direction:column; min-height:0; border-right:1px solid var(--line);
  background:linear-gradient(180deg,var(--bg-2),var(--bg)); transition:transform .35s var(--ease)}
.side-top{padding:22px 16px 12px; display:grid; gap:22px}
.side-brand{display:flex; align-items:center; gap:12px}
.side-brand img{height:34px; width:auto; filter:drop-shadow(0 0 10px rgba(237,168,0,.3))}
.brand-txt{display:flex; flex-direction:column; line-height:1.12}
.brand-txt b{font-weight:800; letter-spacing:-.01em; font-size:1.2rem}
.brand-txt em{font-family:var(--mono); font-style:normal; font-size:8.5px; letter-spacing:.15em; text-transform:uppercase;
  color:var(--gold-deep); margin-top:4px}
.new-chat{display:flex; align-items:center; justify-content:center; gap:9px; width:100%; cursor:pointer;
  padding:12px 16px; border-radius:12px; border:1px solid var(--line-hot); color:#1a1200; font-weight:700;
  font-size:.86rem; background:linear-gradient(135deg,var(--gold-br),var(--gold-deep)); box-shadow:var(--glow);
  transition:transform .2s var(--ease),box-shadow .3s}
.new-chat:hover{transform:translateY(-1px); box-shadow:0 0 34px rgba(237,168,0,.45)}
.new-chat svg{width:16px;height:16px}

.chat-list{flex:1; min-height:0; overflow:auto; padding:6px 10px 10px; display:flex; flex-direction:column; gap:3px}
.chat-list-label{font-family:var(--mono); font-size:10px; letter-spacing:.14em; text-transform:uppercase;
  color:var(--ink-faint); padding:12px 8px 6px}
.chat-item{display:flex; align-items:center; gap:10px; padding:10px 11px; border-radius:10px; cursor:pointer;
  color:var(--ink-mut); font-size:.9rem; border:1px solid transparent; transition:background .2s,color .2s,border-color .2s}
.chat-item:hover{background:var(--surface); color:var(--ink)}
.chat-item.active{background:var(--surface); border-color:var(--line-hot); color:var(--ink)}
.chat-item .ci-title{flex:1; white-space:nowrap; overflow:hidden; text-overflow:ellipsis}
.chat-item .ci-del{opacity:0; color:var(--ink-faint); width:22px; height:22px; border:0; background:none; cursor:pointer;
  border-radius:6px; display:grid; place-items:center; transition:opacity .2s,color .2s,background .2s}
.chat-item:hover .ci-del{opacity:1}
.chat-item .ci-del:hover{color:#ff7a7a; background:rgba(255,120,120,.1)}
.chat-empty{color:var(--ink-faint); font-size:.84rem; padding:14px 10px; text-align:center; line-height:1.5}

.side-foot{padding:12px; border-top:1px solid var(--line); display:grid; gap:10px}
.help-btn{display:flex; align-items:center; gap:9px; width:100%; text-align:left; cursor:pointer; color:var(--ink-mut);
  padding:11px 12px; border-radius:10px; border:1px solid var(--line); background:var(--surface); font-size:.86rem;
  transition:color .2s,border-color .2s,background .2s}
.help-btn:hover{color:var(--gold-br); border-color:var(--line-hot); background:var(--gold-soft)}
.help-btn svg{width:16px;height:16px;flex:none}
.side-cp{display:flex; align-items:center; gap:8px; font-family:var(--mono); font-size:10px; letter-spacing:.1em;
  color:var(--ink-faint); padding:2px 4px}
.side-cp b{color:var(--gold-deep)}
.side-fb{margin-left:auto; display:flex; color:var(--ink-faint); transition:color .2s,transform .2s}
.side-fb:hover{color:var(--gold-br); transform:translateY(-1px)}
.side-fb svg{width:16px; height:16px; display:block}

/* ============================ MAIN ============================ */
.main{display:flex; flex-direction:column; min-width:0; min-height:0}
.topbar{display:flex; align-items:center; gap:14px; padding:14px clamp(16px,3vw,30px);
  border-bottom:1px solid var(--line); background:rgba(8,9,12,.6); backdrop-filter:blur(10px)}
.menu-toggle{display:none; width:40px; height:38px; border:1px solid var(--line); background:var(--surface);
  border-radius:9px; cursor:pointer; color:var(--gold-br); align-items:center; justify-content:center}
.topbar-title{font-weight:800; letter-spacing:-.01em; font-size:1.05rem; display:flex; align-items:center; gap:10px}
.beta{font-family:var(--mono); font-size:9px; letter-spacing:.1em; text-transform:uppercase; color:var(--gold-deep);
  border:1px solid var(--line-hot); border-radius:100px; padding:3px 8px}
.laws-pill{margin-left:auto; display:inline-flex; align-items:center; gap:8px; cursor:pointer; font-family:var(--mono);
  font-size:11px; letter-spacing:.05em; color:var(--gold-br); border:1px solid var(--line-hot); border-radius:100px;
  padding:7px 13px; background:var(--gold-soft); transition:box-shadow .25s}
.laws-pill:hover{box-shadow:var(--glow)}
.laws-pill .dot{width:6px;height:6px;border-radius:50%;background:var(--good);box-shadow:0 0 8px var(--good)}

/* ---- thread ---- */
.thread{flex:1; min-height:0; overflow:auto; scroll-behavior:smooth}
.thread-inner{max-width:820px; margin:0 auto; padding:30px clamp(16px,4vw,32px) 40px; display:flex; flex-direction:column; gap:26px}

/* welcome / empty state */
.welcome{margin:auto; text-align:center; max-width:640px; padding:6vh 20px; display:grid; gap:22px; justify-items:center}
.welcome-logo{height:64px; width:auto; filter:drop-shadow(0 0 22px rgba(237,168,0,.35))}
.welcome h1{font-size:clamp(1.8rem,4.5vw,2.7rem); letter-spacing:-.02em; margin:0;
  background:linear-gradient(120deg,var(--ink),var(--gold-br)); -webkit-background-clip:text; background-clip:text; -webkit-text-fill-color:transparent}
.welcome p{color:var(--ink-mut); margin:0; max-width:52ch; font-size:1.02rem}
.welcome-eyebrow{display:inline-flex; align-items:center; gap:9px; font-family:var(--mono); font-size:11px;
  letter-spacing:.16em; text-transform:uppercase; color:var(--gold-br); border:1px solid var(--line-hot);
  border-radius:100px; padding:7px 14px; background:var(--gold-soft)}
.welcome-eyebrow .tick{width:6px;height:6px;border-radius:50%;background:var(--gold);box-shadow:0 0 8px var(--gold)}
.examples{display:grid; grid-template-columns:1fr 1fr; gap:12px; width:100%; margin-top:6px}
@media(max-width:560px){.examples{grid-template-columns:1fr}}
.example{text-align:left; cursor:pointer; padding:15px 17px; border:1px solid var(--line); border-radius:14px;
  background:linear-gradient(180deg,var(--surface),var(--bg-2)); color:var(--ink-mut); font-size:.92rem;
  transition:border-color .3s,transform .25s var(--ease),box-shadow .3s,color .25s; position:relative; overflow:hidden}
.example::after{content:""; position:absolute; top:0; left:0; right:0; height:2px;
  background:linear-gradient(90deg,var(--gold),transparent); transform:scaleX(0); transform-origin:left; transition:transform .4s var(--ease)}
.example:hover{border-color:var(--line-hot); transform:translateY(-3px); color:var(--ink); box-shadow:0 20px 40px -30px rgba(237,168,0,.5)}
.example:hover::after{transform:scaleX(1)}
.example b{display:block; color:var(--gold-br); font-family:var(--mono); font-size:10px; letter-spacing:.1em;
  text-transform:uppercase; margin-bottom:6px; font-weight:500}

/* ---- messages ---- */
.msg{display:flex; animation:rise .5s var(--ease) both}
@keyframes rise{from{opacity:0; transform:translateY(14px)}to{opacity:1; transform:none}}
.msg.user{justify-content:flex-end}
.bubble{max-width:76%; padding:13px 18px; border-radius:16px 16px 4px 16px; font-size:1rem; line-height:1.55;
  background:linear-gradient(135deg,rgba(237,168,0,.16),rgba(237,168,0,.07)); border:1px solid var(--line-hot); color:var(--ink)}

.answer{max-width:100%; width:100%; display:grid; gap:14px}
.answer-head{display:flex; align-items:center; gap:10px; font-family:var(--mono); font-size:11px; letter-spacing:.1em;
  text-transform:uppercase; color:var(--gold-deep)}
.answer-head img{height:20px;width:auto}
.answer-body{padding:18px 20px; border:1px solid var(--line); border-radius:16px;
  background:linear-gradient(180deg,var(--surface),var(--bg-2)); position:relative; overflow:hidden}
.answer-body::before{content:""; position:absolute; left:0; top:0; bottom:0; width:2px; background:linear-gradient(var(--gold),transparent)}
.answer-quote{font-size:1.04rem; line-height:1.62; color:var(--ink)}
.answer-quote .cite{color:var(--gold-br); font-weight:600}
.answer.refusal .answer-body{border-color:var(--line-hot); background:radial-gradient(120% 140% at 0 0,rgba(255,180,80,.06),transparent 60%),var(--surface)}
.answer.refusal .answer-quote{color:var(--ink-mut)}

.confidence{display:flex; align-items:center; gap:10px; margin-top:14px; font-family:var(--mono); font-size:10.5px; color:var(--ink-faint)}
.conf-bar{flex:1; max-width:160px; height:4px; border-radius:100px; background:var(--line); overflow:hidden}
.conf-bar span{display:block; height:100%; background:linear-gradient(90deg,var(--gold-deep),var(--gold-br)); box-shadow:0 0 8px var(--gold)}

/* sources */
.sources-label{font-family:var(--mono); font-size:10px; letter-spacing:.14em; text-transform:uppercase; color:var(--ink-faint)}
.sources{display:grid; gap:10px}
.source{display:block; padding:13px 15px; border:1px solid var(--line); border-radius:13px; background:var(--surface);
  transition:border-color .25s,transform .2s var(--ease),box-shadow .25s}
.source:hover{border-color:var(--line-hot); transform:translateY(-2px); box-shadow:0 16px 34px -26px rgba(237,168,0,.5)}
.source-top{display:flex; align-items:center; gap:10px; margin-bottom:7px; flex-wrap:wrap}
.source-sec{font-family:var(--mono); font-size:12px; font-weight:600; color:#1a1200; background:var(--gold);
  padding:3px 9px; border-radius:7px}
.source-act{font-size:.86rem; color:var(--ink); font-weight:600}
.source-score{margin-left:auto; font-family:var(--mono); font-size:10px; color:var(--ink-faint)}
.source-ex{color:var(--ink-mut); font-size:.86rem; line-height:1.5; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden}
.source-link{display:inline-flex; align-items:center; gap:6px; margin-top:9px; font-family:var(--mono); font-size:10.5px;
  letter-spacing:.05em; color:var(--gold-br)}
.source-link svg{width:12px;height:12px; transition:transform .25s var(--ease)}
.source:hover .source-link svg{transform:translate(2px,-2px)}
.source-date{font-family:var(--mono); font-size:10px; color:var(--ink-faint)}

.disclaimer{font-size:.78rem; color:var(--ink-faint); line-height:1.5; padding:10px 14px; border-radius:11px;
  border:1px dashed var(--line-hot); background:rgba(237,168,0,.02)}

/* answer reveal: typewriter caret + staggered parts */
.type-caret{display:inline-block; width:.5ch; height:1.05em; margin-left:1px; vertical-align:-.15em;
  background:var(--gold); box-shadow:0 0 10px var(--gold); animation:caret 1s steps(1) infinite}
@keyframes caret{50%{opacity:0}}
.qbody{white-space:pre-wrap}
.anim .conf-wrap,.anim .sources-label,.anim .disclaimer{opacity:0; transform:translateY(8px);
  transition:opacity .45s var(--ease),transform .45s var(--ease)}
.anim .conf-wrap.in,.anim .sources-label.in,.anim .disclaimer.in{opacity:1; transform:none}
.anim .source{opacity:0; transform:translateY(12px); transition:opacity .5s var(--ease),transform .5s var(--ease)}
.anim .source.in{opacity:1; transform:none}

/* typing dots */
.typing{display:inline-flex; gap:6px; padding:16px 20px; border:1px solid var(--line); border-radius:16px; background:var(--surface)}
.typing i{width:8px;height:8px;border-radius:50%;background:var(--gold-deep); animation:bounce 1.3s var(--ease) infinite}
.typing i:nth-child(2){animation-delay:.18s} .typing i:nth-child(3){animation-delay:.36s}
@keyframes bounce{0%,60%,100%{transform:translateY(0);opacity:.5}30%{transform:translateY(-6px);opacity:1}}

/* ---- composer ---- */
.composer{border-top:1px solid var(--line); background:rgba(8,9,12,.7); backdrop-filter:blur(10px); padding:16px clamp(16px,4vw,32px) 14px}
.composer-form{max-width:820px; margin:0 auto; display:flex; align-items:flex-end; gap:10px;
  background:var(--surface); border:1px solid var(--line); border-radius:16px; padding:8px 8px 8px 16px;
  transition:border-color .25s,box-shadow .25s}
.composer-form:focus-within{border-color:var(--line-hot); box-shadow:0 0 0 3px var(--gold-soft)}
#input{flex:1; resize:none; border:0; outline:0; background:none; color:var(--ink); font-size:1rem; line-height:1.5;
  max-height:180px; padding:9px 0}
#input::placeholder{color:var(--ink-faint)}
.send{flex:none; width:42px; height:42px; border-radius:12px; border:0; cursor:pointer; display:grid; place-items:center;
  color:#1a1200; background:linear-gradient(135deg,var(--gold-br),var(--gold-deep)); box-shadow:var(--glow);
  transition:transform .2s var(--ease),box-shadow .25s,opacity .2s}
.send:hover{transform:translateY(-1px)} .send:disabled{opacity:.4; cursor:not-allowed; box-shadow:none}
.send svg{width:19px;height:19px}
.composer-hint{max-width:820px; margin:10px auto 0; text-align:center; font-size:.76rem; color:var(--ink-faint)}

/* ============================ HELP MODAL ============================ */
.modal{position:fixed; inset:0; z-index:10000; display:none; place-items:center; padding:5vh 5vw;
  background:rgba(5,6,9,.82); backdrop-filter:blur(8px)}
.modal.open{display:grid; animation:fade .25s ease}
@keyframes fade{from{opacity:0}to{opacity:1}}
.modal-card{max-width:640px; width:100%; max-height:88vh; overflow:auto; border:1px solid var(--line-hot); border-radius:22px;
  background:radial-gradient(120% 90% at 0 0,var(--gold-soft),transparent 55%),var(--surface); padding:clamp(26px,4vw,40px);
  animation:pop .3s var(--ease)}
@keyframes pop{from{transform:translateY(16px) scale(.98); opacity:0}to{transform:none; opacity:1}}
.modal-eyebrow{display:inline-flex; align-items:center; gap:9px; font-family:var(--mono); font-size:11px; letter-spacing:.16em;
  text-transform:uppercase; color:var(--gold); margin-bottom:16px}
.modal-card h2{font-size:1.7rem; letter-spacing:-.02em; margin:0 0 14px}
.modal-card p{color:var(--ink-mut); margin:0 0 14px}
.modal-card h3{font-size:.82rem; font-family:var(--mono); letter-spacing:.1em; text-transform:uppercase; color:var(--gold-deep); margin:24px 0 12px}
.law-list{display:grid; gap:10px; margin:0; padding:0; list-style:none}
.law{display:flex; align-items:center; gap:14px; padding:14px 16px; border:1px solid var(--line); border-radius:13px; background:var(--surface-2);
  transition:border-color .25s,transform .2s var(--ease)}
.law:hover{border-color:var(--line-hot); transform:translateX(3px)}
.law-code{font-family:var(--mono); font-weight:600; font-size:12px; color:#1a1200; background:var(--gold); padding:5px 10px; border-radius:8px; flex:none}
.law-name{flex:1} .law-name b{display:block; font-size:.96rem} .law-name span{font-size:.8rem; color:var(--ink-faint)}
.law-arrow{color:var(--gold-deep)}
.modal-note{margin-top:22px; font-size:.82rem; color:var(--ink-faint); line-height:1.55; border-top:1px solid var(--line); padding-top:16px}
/* links inside modal copy read as links */
.modal-card p a{color:var(--gold-br); font-weight:600; text-decoration:underline; text-underline-offset:2px;
  text-decoration-color:var(--line-hot); transition:text-decoration-color .25s,color .25s}
.modal-card p a:hover{color:#fff; text-decoration-color:var(--gold)}
.modal-close{position:absolute; top:20px; right:22px; width:40px; height:40px; border-radius:11px; border:1px solid var(--line-hot);
  background:rgba(20,19,11,.6); color:var(--gold-br); cursor:pointer; font-size:20px; display:grid; place-items:center; transition:background .25s,transform .2s}
.modal-close:hover{background:var(--gold-soft); transform:scale(1.05)}

/* scrollbars */
.thread::-webkit-scrollbar,.chat-list::-webkit-scrollbar,.modal-card::-webkit-scrollbar{width:9px}
.thread::-webkit-scrollbar-thumb,.chat-list::-webkit-scrollbar-thumb,.modal-card::-webkit-scrollbar-thumb{background:var(--line); border-radius:100px; border:2px solid transparent; background-clip:content-box}
.thread::-webkit-scrollbar-thumb:hover{background:var(--line-hot); background-clip:content-box}

/* ============================ MOBILE ============================ */
.scrim{position:fixed; inset:0; z-index:8; background:rgba(5,6,9,.6); backdrop-filter:blur(3px); opacity:0; pointer-events:none; transition:opacity .3s}
@media(max-width:820px){
  .app{grid-template-columns:1fr}
  .sidebar{position:fixed; inset:0 auto 0 0; width:var(--side); z-index:20; transform:translateX(-100%)}
  .sidebar.open{transform:none}
  .menu-toggle{display:flex}
  .scrim.show{opacity:1; pointer-events:auto}
}

@media (prefers-reduced-motion: reduce){
  *{animation-duration:.001ms!important; transition-duration:.01ms!important; scroll-behavior:auto!important}
  .fx-grain{display:none}
}
