/* ============ KOPELSANCHEZ · IT GALLERY · MONO BAUHAUS ============ */
@import url('https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@100;200;300;400;500;700;800&display=swap');

:root{
  --bg:#FAFAF7;
  --fg:#0A0A0A;
  --hair:#E2E1DC;
  --mute:#9A9A95;
  --placeholder:#EDECE6;
  --ease:cubic-bezier(.7,0,.2,1);
}

*{ box-sizing:border-box; margin:0; padding:0; }
html,body{ background:var(--bg); color:var(--fg); font-family:'JetBrains Mono',ui-monospace,monospace; font-weight:300; -webkit-font-smoothing:antialiased; }
body{ overflow-x:hidden; }
a{ color:inherit; text-decoration:none; }
button{ font:inherit; color:inherit; background:none; border:none; cursor:pointer; }
::selection{ background:var(--fg); color:var(--bg); }

/* ---------- PAGE ENTER / EXIT ---------- */
.curtain{
  position:fixed; inset:0; background:var(--fg); z-index:9999; transform-origin:bottom;
  pointer-events:none;
}
.curtain.in{ animation:curtainOut .9s var(--ease) forwards; }
.curtain.out{ animation:curtainIn .7s var(--ease) forwards; }
@keyframes curtainOut{ 0%{transform:scaleY(1);} 100%{transform:scaleY(0);} }
@keyframes curtainIn { 0%{transform:scaleY(0); transform-origin:top;} 100%{transform:scaleY(1); transform-origin:top;} }

/* ---------- HEADER ---------- */
.header{
  position:fixed; top:0; left:0; right:0; z-index:50;
  display:grid; grid-template-columns:1fr auto 1fr; align-items:center;
  padding:22px 32px; mix-blend-mode:difference; color:#fff;
  font-size:11px; letter-spacing:.06em;
}
.header nav{ display:flex; gap:24px; justify-content:center; }
.header nav a{ position:relative; opacity:.65; transition:opacity .3s var(--ease); }
.header nav a:hover, .header nav a.active{ opacity:1; }
.header .meta{ display:flex; gap:18px; justify-content:flex-end; }

/* ---------- HERO ---------- */
.hero{
  min-height:88vh; padding:200px 32px 40px;
  display:flex; flex-direction:column; justify-content:space-between;
  position:relative;
}
.hero-eyebrow{
  display:flex; justify-content:space-between; font-size:11px; letter-spacing:.04em; color:var(--mute);
  padding-top:14px;
}

.hero-title{
  font-size:clamp(56px,11vw,180px); line-height:.92; font-weight:300; letter-spacing:-.04em;
  margin:0 0 40px;
}
.hero-title .row{ display:block; overflow:hidden; }
.hero-title .row span{ display:inline-block; transform:translateY(110%); animation:reveal 1.1s var(--ease) forwards; }
.hero-title .row.r2 span{ animation-delay:.1s; font-style:italic; }
.hero-title .row.r3 span{ animation-delay:.2s; }
@keyframes reveal{ to{ transform:translateY(0); } }

.hero-bottom{
  display:grid; grid-template-columns:1fr 1fr 1fr 1fr; gap:24px;
  border-top:1px solid var(--fg); padding-top:18px;
  font-size:11px; letter-spacing:.14em; text-transform:uppercase;
}
.hero-bottom .col-label{ color:var(--mute); margin-bottom:6px; font-size:10px; }
.hero-bottom .num{ font-size:38px; font-weight:200; letter-spacing:-.03em; }

/* ---------- MARQUEE ---------- */
.marquee{
  border-top:1px solid var(--fg); border-bottom:1px solid var(--fg);
  overflow:hidden; white-space:nowrap; padding:18px 0;
  font-size:64px; font-weight:200; letter-spacing:-.02em; text-transform:uppercase;
}
.marquee-track{ display:inline-flex; gap:60px; animation:scroll 40s linear infinite; padding-right:60px; }
.marquee span{ display:inline-flex; align-items:center; gap:60px; }
.marquee em{ font-style:italic; font-weight:800; opacity:.6; }
.marquee .star{ display:inline-block; width:18px; height:18px; background:var(--fg); border-radius:50%; }
@keyframes scroll{ to{ transform:translateX(-50%); } }

/* ---------- SECTION HEAD (filters + search) ---------- */
.section-head{
  display:flex; gap:32px; align-items:center; justify-content:space-between;
  padding:40px 32px 20px;
}
.filters{ display:flex; flex-wrap:wrap; gap:18px; }
.filter{
  font-size:11px; letter-spacing:.04em; color:var(--mute);
  padding:4px 0; border:none; transition:color .3s var(--ease);
  position:relative;
}
.filter:hover, .filter.active{ color:var(--fg); }
.filter.active::after{
  content:''; position:absolute; left:0; right:0; bottom:-2px; height:1px; background:var(--fg);
}
.search{
  display:flex; align-items:center; gap:10px;
  border-bottom:1px solid var(--hair); padding:0 0 4px; min-width:200px;
}
.search input{
  background:transparent; border:none; outline:none; font:inherit;
  font-size:12px; width:100%; color:var(--fg); letter-spacing:.04em;
}
.search input::placeholder{ color:var(--mute); }

/* ---------- LAYOUT: INDEX (rows w/ cursor image) ---------- */
.layout-index .grid-uniform, .layout-index .grid-editorial{ display:none; }
.layout-grid  .index-list,    .layout-grid .grid-editorial{ display:none; }
.layout-edito .index-list,    .layout-edito .grid-uniform { display:none; }

.index-list{ list-style:none; }
.row-item{
  display:grid; grid-template-columns:80px 1fr auto auto 60px; align-items:center; gap:32px;
  padding:32px; border-bottom:1px solid var(--hair);
  position:relative; cursor:none; transition:padding .5s var(--ease), color .4s var(--ease);
}
.row-item:hover{ padding-left:60px; }
.row-item .num{ font-size:11px; letter-spacing:.15em; color:var(--mute); font-variant-numeric:tabular-nums; }
.row-item .title{
  font-size:clamp(36px,6vw,88px); font-weight:200; letter-spacing:-.03em; line-height:1; text-transform:uppercase;
  transition:transform .5s var(--ease), font-style .3s var(--ease), font-weight .3s var(--ease);
}
.row-item:hover .title{ font-style:italic; font-weight:800; }
.row-item .cat{ font-size:11px; letter-spacing:.15em; }
.row-item .year{ font-size:11px; letter-spacing:.15em; color:var(--mute); }
.row-item .arrow{
  width:32px; height:12px; position:relative; opacity:0; transform:translateX(-20px); transition:all .5s var(--ease);
}
.row-item:hover .arrow{ opacity:1; transform:translateX(0); }
.row-item .arrow svg{ width:100%; height:100%; }

/* cursor preview image */
.cursor-preview{
  position:fixed; top:0; left:0; width:280px; height:340px;
  pointer-events:none; z-index:80; opacity:0; transform:translate(-50%,-50%) scale(.85);
  transition:opacity .35s var(--ease), transform .6s var(--ease);
  overflow:hidden;
}
.cursor-preview.show{ opacity:1; transform:translate(-50%,-50%) scale(1); }
.cursor-preview .frame{ width:100%; height:100%; position:relative; overflow:hidden; }
.cursor-preview .frame > div{ position:absolute; inset:0; transition:opacity .25s var(--ease); opacity:0; }
.cursor-preview .frame > div.active{ opacity:1; }

/* ---------- LAYOUT: GRID UNIFORM ---------- */
.grid-uniform{
  display:grid; grid-template-columns:repeat(3,1fr); gap:1px; background:var(--hair);
  border-bottom:1px solid var(--hair);
}
.card{
  background:var(--bg); padding:24px; display:flex; flex-direction:column; gap:18px;
  position:relative; transition:background .5s var(--ease), color .5s var(--ease); cursor:pointer;
  min-height:420px;
}
.card:hover{ background:var(--fg); color:var(--bg); }
.card .ph{ flex:1; position:relative; overflow:hidden; }
.card .meta{ display:flex; justify-content:space-between; font-size:10px; letter-spacing:.16em; text-transform:uppercase; opacity:.7; }
.card .title{ font-size:24px; font-weight:300; letter-spacing:-.02em; line-height:1.05; }
.card .desc{ font-size:12px; line-height:1.5; opacity:.7; }
.card .nbig{ font-size:11px; letter-spacing:.16em; }

/* ---------- LAYOUT: EDITORIAL ---------- */
.grid-editorial{
  display:grid; grid-template-columns:repeat(12,1fr); gap:32px;
  padding:40px 32px 80px; row-gap:120px;
}
.edito-item{ position:relative; cursor:pointer; }
.edito-item .ph{ width:100%; aspect-ratio:4/5; margin-bottom:16px; overflow:hidden; }
.edito-item .ph > div{ width:100%; height:100%; transition:transform 1.2s var(--ease); }
.edito-item:hover .ph > div{ transform:scale(1.04); }
.edito-item .meta{ display:flex; justify-content:space-between; font-size:10px; letter-spacing:.04em; color:var(--mute); margin-bottom:10px; }
.edito-item .title{ font-size:18px; font-weight:400; letter-spacing:-.01em; line-height:1.2; transition:font-style .3s; }
.edito-item:hover .title{ font-style:italic; }
/* size variations */
.edito-item.s1{ grid-column:span 4; }
.edito-item.s2{ grid-column:span 5; margin-top:120px; }
.edito-item.s3{ grid-column:span 3; margin-top:60px; }
.edito-item.s4{ grid-column:span 6; }
.edito-item.s5{ grid-column:span 4; margin-top:80px; }
.edito-item.s6{ grid-column:span 5; }
.edito-item.s7{ grid-column:span 7; }
.edito-item.s4 .ph{ aspect-ratio:16/10; }
.edito-item.s7 .ph{ aspect-ratio:16/9; }
.edito-item.s2 .ph{ aspect-ratio:3/4; }

/* ---------- PLACEHOLDER VISUALS ---------- */
.ph-block{
  width:100%; height:100%; background:var(--placeholder); position:relative; overflow:hidden;
}
.ph-block::after{ content:''; }
.ph-block .ph-label{ display:none; }
.ph-block .ph-glyph{
  position:absolute; inset:0; display:flex; align-items:center; justify-content:center;
  font-size:48px; font-weight:300; letter-spacing:-.02em; color:var(--fg); opacity:.18;
}

/* ---------- FOOTER ---------- */
.footer{
  border-top:1px solid var(--hair); margin-top:60px; padding:24px 32px 20px;
  display:grid; grid-template-columns:1fr auto; gap:24px; align-items:center;
  font-size:11px; letter-spacing:.02em; color:var(--mute);
}
.footer p{ font-size:11px; line-height:1.5; max-width:48ch; }
.footer ul{ list-style:none; }
.footer ul li{ color:var(--fg); }
.footer .legal{
  grid-column:1/-1; display:flex; justify-content:space-between; padding-top:12px; border-top:1px solid var(--hair); font-size:10px;
}
.footer-team-link{
  color:var(--mute); transition:color .3s var(--ease);
  position:relative;
}
.footer-team-link:hover{ color:var(--fg); }

/* ---------- IDEA / CHAT ---------- */
.idea{
  border-top:1px solid var(--hair);
  padding:120px 32px 80px;
  display:grid; grid-template-columns:1fr 1fr; gap:80px;
  margin-top:80px;
}
.idea-label{ font-size:11px; letter-spacing:.04em; color:var(--mute); }
.idea-title{
  font-size:clamp(40px,6vw,84px); font-weight:300; letter-spacing:-.03em; line-height:.95;
  margin:18px 0 24px;
}
.idea-title .row{ display:block; overflow:hidden; }
.idea-title .row span{ display:inline-block; }
.idea-title em{ font-style:italic; }
.idea-sub{
  font-size:14px; line-height:1.55; color:var(--mute); max-width:42ch;
}
.chat{
  display:flex; flex-direction:column; gap:18px;
  border:1px solid var(--hair); padding:24px; min-height:360px;
  background:#fff;
}
.chat-log{
  display:flex; flex-direction:column; gap:18px;
  flex:1; overflow-y:auto; max-height:420px; padding-right:6px;
}
.msg{ display:flex; flex-direction:column; gap:6px; }
.msg-who{ font-size:10px; letter-spacing:.06em; color:var(--mute); }
.msg p{ font-size:14px; line-height:1.55; font-weight:300; }
.msg.user{ align-items:flex-end; text-align:right; }
.msg.user p{ border-left:none; padding-left:0; }
.msg.ai p{ border-left:1px solid var(--fg); padding-left:14px; }
.msg.thinking p::after{
  content:'_'; display:inline-block; animation:blink 1s infinite;
}
@keyframes blink{ 50%{opacity:0;} }
.chat-input{
  display:flex; gap:14px; align-items:flex-end; border-top:1px solid var(--hair); padding-top:14px;
}
.chat-input textarea{
  flex:1; background:transparent; border:none; outline:none; font:inherit;
  font-size:14px; color:var(--fg); resize:none; line-height:1.4; max-height:120px;
}
.chat-input textarea::placeholder{ color:var(--mute); }
.chat-input button{
  font-size:11px; letter-spacing:.04em; color:var(--fg); padding:8px 0;
  border-bottom:1px solid var(--fg); transition:opacity .3s var(--ease);
}
.chat-input button:disabled{ opacity:.3; cursor:not-allowed; }

@media (max-width:900px){
  .idea{ grid-template-columns:1fr; gap:32px; padding:80px 18px 40px; }
}

/* ---------- SCROLL REVEAL ---------- */
.reveal{ opacity:0; transform:translateY(24px); transition:opacity .9s var(--ease), transform .9s var(--ease); }
.reveal.in{ opacity:1; transform:translateY(0); }

/* ---------- TWEAKS PANEL ---------- */
.tweaks{
  position:fixed; bottom:24px; right:24px; z-index:200;
  background:var(--bg); border:1px solid var(--fg); padding:14px 16px;
  display:none; flex-direction:column; gap:10px;
  font-size:10px; letter-spacing:.14em; text-transform:uppercase;
  min-width:220px;
}
.tweaks.open{ display:flex; }
.tweaks h4{ font-size:9px; color:var(--mute); font-weight:400; }
.tweaks .seg{ display:flex; gap:0; border:1px solid var(--fg); }
.tweaks .seg button{ flex:1; padding:8px; font-size:9px; letter-spacing:.14em; }
.tweaks .seg button.on{ background:var(--fg); color:var(--bg); }
.tweaks .close{ position:absolute; top:8px; right:10px; font-size:14px; line-height:1; }

/* ---------- DETAIL PAGE ---------- */
.detail-hero{
  padding:140px 32px 40px; min-height:90vh; display:flex; flex-direction:column; justify-content:space-between;
}
.detail-eyebrow{
  display:flex; justify-content:space-between; font-size:11px; letter-spacing:.18em; text-transform:uppercase;
  border-top:1px solid var(--fg); padding-top:14px;
}
.detail-title{
  font-size:clamp(56px,10vw,160px); font-weight:300; letter-spacing:-.04em; line-height:.92;
  margin:60px 0;
}
.detail-title em{ font-style:italic; }
.detail-meta{
  display:grid; grid-template-columns:repeat(4,1fr); gap:32px; border-top:1px solid var(--fg); padding-top:18px;
  font-size:11px; letter-spacing:.14em; text-transform:uppercase;
}
.detail-meta .col-label{ color:var(--mute); font-size:10px; margin-bottom:6px; }

.detail-hero-img{ height:80vh; margin:40px 32px; }
.detail-hero-img .ph-block .ph-glyph{ font-size:200px; }

.detail-body{
  display:grid; grid-template-columns:1fr 2fr; gap:80px; padding:80px 32px;
}
.detail-body h3{ font-size:11px; letter-spacing:.18em; text-transform:uppercase; color:var(--mute); margin-bottom:18px; }
.detail-body p{ font-size:18px; line-height:1.55; font-weight:300; max-width:60ch; margin-bottom:24px; }
.detail-body .stack{ display:flex; flex-wrap:wrap; gap:6px; margin-top:24px; }
.detail-body .stack span{ border:1px solid var(--fg); padding:6px 12px; font-size:10px; letter-spacing:.14em; text-transform:uppercase; }

.detail-gallery{ display:grid; grid-template-columns:1fr 1fr; gap:24px; padding:0 32px 80px; }
.detail-gallery .ph-block{ aspect-ratio:4/3; }
.detail-gallery .ph-block.wide{ grid-column:1/-1; aspect-ratio:21/9; }

.detail-next{
  border-top:1px solid var(--fg); padding:80px 32px;
  display:grid; grid-template-columns:1fr auto auto; align-items:center; gap:32px;
}
.detail-next .label{ font-size:10px; letter-spacing:.18em; text-transform:uppercase; color:var(--mute); }
.detail-next .next-title{
  font-size:clamp(36px,7vw,96px); font-weight:300; letter-spacing:-.03em; line-height:.95;
  cursor:pointer; transition:font-style .3s;
}
.detail-next .next-title:hover{ font-style:italic; }

/* ---------- RESPONSIVE ---------- */
@media (max-width:900px){
  .grid-uniform{ grid-template-columns:1fr; }
  .grid-editorial{ grid-template-columns:1fr; row-gap:40px; }
  .grid-editorial .edito-item{ grid-column:1/-1 !important; margin-top:0 !important; }
  .row-item{ grid-template-columns:40px 1fr 60px; gap:14px; padding:20px; }
  .row-item .cat,.row-item .year,.row-item .arrow{ display:none; }
  .footer{ grid-template-columns:1fr 1fr; }
  .hero-bottom{ grid-template-columns:1fr 1fr; }
  .detail-body{ grid-template-columns:1fr; gap:24px; }
  .detail-meta{ grid-template-columns:1fr 1fr; }
  .detail-gallery{ grid-template-columns:1fr; }
  .header{ padding:14px 18px; }
  .header nav{ display:none; }
  .cursor-preview{ display:none; }
  .admin{ grid-template-columns:1fr !important; }
  .admin-side{ position:static !important; padding:120px 18px 24px !important; }
  .admin-main{ padding:24px 18px !important; }
  .convs-grid{ grid-template-columns:1fr !important; }
  .proj-row{ grid-template-columns:30px 1fr 70px !important; }
  .proj-row > :nth-child(4),.proj-row > :nth-child(5){ display:none; }
  .login{ padding:120px 18px 60px !important; }
  .login-frame{ padding:24px !important; }
}

/* ============ LOGIN ============ */
.login-body{ background:var(--bg); }
.login{
  min-height:100vh; padding:160px 32px 60px;
  display:flex; align-items:center; justify-content:center;
}
.login-frame{
  width:100%; max-width:520px; border:1px solid var(--hair);
  padding:48px;
  display:flex; flex-direction:column; gap:18px;
  background:#fff;
}
.login-label{ font-size:11px; letter-spacing:.04em; color:var(--mute); }
.login-title{
  font-size:clamp(36px,5vw,56px); font-weight:300; letter-spacing:-.03em; line-height:.95;
}
.login-title .row{ display:block; overflow:hidden; }
.login-title .row span{ display:inline-block; transform:translateY(110%); animation:reveal 1s var(--ease) forwards; }
.login-title em{ font-style:italic; }
.login-sub{ font-size:13px; line-height:1.55; color:var(--mute); max-width:42ch; margin-bottom:8px; }
.login-form{ display:flex; flex-direction:column; gap:18px; margin-top:8px; }
.login-form label{ display:flex; flex-direction:column; gap:6px; }
.login-form label span{ font-size:10px; letter-spacing:.06em; color:var(--mute); }
.login-form input{
  background:transparent; border:none; outline:none; font:inherit;
  font-size:14px; padding:6px 0; border-bottom:1px solid var(--hair);
  color:var(--fg); transition:border-color .3s var(--ease);
}
.login-form input:focus{ border-bottom-color:var(--fg); }
.login-form button[type=submit]{
  align-self:flex-start; margin-top:14px;
  font-size:12px; padding:10px 18px; border:1px solid var(--fg);
  transition:background .3s var(--ease), color .3s var(--ease);
}
.login-form button[type=submit]:hover{ background:var(--fg); color:var(--bg); }
.login-hint{ font-size:10px; color:var(--mute); }

/* ============ ADMIN ============ */
.admin-body{ background:var(--bg); }
.admin{
  min-height:100vh; display:grid; grid-template-columns:340px 1fr;
}
.admin-side{
  position:sticky; top:0; height:100vh;
  padding:140px 32px 32px;
  border-right:1px solid var(--hair);
  display:flex; flex-direction:column; gap:24px;
  background:var(--bg);
}
.admin-label{ font-size:11px; letter-spacing:.04em; color:var(--mute); }
.admin-h{
  font-size:clamp(36px,3.5vw,48px); font-weight:300; letter-spacing:-.03em; line-height:.95;
}
.admin-h em{ font-style:italic; }
.admin-nav{ display:flex; flex-direction:column; gap:1px; margin-top:18px; }
.admin-tab{
  display:grid; grid-template-columns:32px 1fr auto; align-items:center; gap:12px;
  padding:14px 0; border-top:1px solid var(--hair); text-align:left;
  font-size:13px; transition:padding-left .4s var(--ease);
}
.admin-tab:last-child{ border-bottom:1px solid var(--hair); }
.admin-tab:hover{ padding-left:6px; }
.admin-tab.active{ padding-left:6px; }
.admin-tab.active .admin-tab-name{ font-style:italic; }
.admin-tab-num{ font-size:10px; color:var(--mute); }
.admin-tab-count{ font-size:10px; color:var(--mute); font-variant-numeric:tabular-nums; }

.admin-main{ padding:60px 40px 80px; min-width:0; }
.admin-pane{ display:none; }
.admin-pane.active{ display:block; }

.pane-head{
  display:flex; justify-content:space-between; align-items:flex-start; gap:24px;
  border-bottom:1px solid var(--hair); padding-bottom:24px; margin-bottom:32px;
}
.pane-eye{ font-size:11px; letter-spacing:.04em; color:var(--mute); }
.pane-head h2{ font-size:clamp(28px,3vw,40px); font-weight:300; letter-spacing:-.02em; margin:6px 0 8px; }
.pane-head p{ font-size:12px; line-height:1.55; color:var(--mute); max-width:60ch; }

.btn-primary{
  font-size:12px; padding:10px 16px; border:1px solid var(--fg);
  transition:background .3s var(--ease), color .3s var(--ease); white-space:nowrap;
}
.btn-primary:hover{ background:var(--fg); color:var(--bg); }
.btn-ghost{
  font-size:11px; padding:8px 14px; border:1px solid var(--hair); color:var(--fg);
  transition:border-color .3s var(--ease);
}
.btn-ghost:hover{ border-color:var(--fg); }
.link-btn{
  font-size:11px; color:var(--mute); transition:color .3s var(--ease);
}
.link-btn:hover{ color:var(--fg); }

/* projects table */
.proj-table{ display:flex; flex-direction:column; }
.proj-row{
  display:grid; grid-template-columns:50px 2fr 1fr 60px 1.2fr 90px;
  gap:18px; align-items:center;
  padding:16px 0; border-bottom:1px solid var(--hair);
  font-size:13px;
}
.proj-row:hover:not(.proj-head){ background:rgba(0,0,0,.015); }
.proj-head{
  font-size:10px; letter-spacing:.06em; color:var(--mute);
  border-bottom:1px solid var(--fg); padding-bottom:10px;
}
.mono-mute{ color:var(--mute); font-variant-numeric:tabular-nums; }
.proj-title{ font-weight:400; }
.proj-cat{ font-size:11px; letter-spacing:.04em; }
.proj-actions{ text-align:right; }

/* conversations */
.convs-grid{ display:grid; grid-template-columns:380px 1fr; gap:32px; min-height:500px; }
.convs-list{ list-style:none; display:flex; flex-direction:column; border-top:1px solid var(--hair); }
.conv-item{
  display:flex; flex-direction:column; gap:6px;
  padding:14px 6px; border-bottom:1px solid var(--hair); cursor:pointer;
  transition:padding-left .3s var(--ease), background .3s var(--ease);
}
.conv-item:hover{ padding-left:12px; background:rgba(0,0,0,.02); }
.conv-item.active{ padding-left:12px; background:rgba(0,0,0,.04); }
.conv-date{ font-size:10px; letter-spacing:.04em; color:var(--mute); }
.conv-preview{ font-size:13px; line-height:1.4; }
.conv-meta{ font-size:10px; color:var(--mute); letter-spacing:.04em; }
.conv-empty, .conv-empty-list{
  padding:32px; font-size:12px; color:var(--mute); border:1px dashed var(--hair);
  display:flex; align-items:center; justify-content:center; min-height:120px;
}
.conv-view{ border:1px solid var(--hair); padding:28px; min-height:500px; max-height:70vh; overflow-y:auto; }
.conv-head{ display:flex; justify-content:space-between; align-items:flex-start; gap:18px; border-bottom:1px solid var(--hair); padding-bottom:14px; margin-bottom:18px; }
.conv-eye{ font-size:10px; color:var(--mute); }
.conv-head h3{ font-size:18px; font-weight:400; letter-spacing:-.01em; margin-top:4px; }
.conv-thread{ display:flex; flex-direction:column; gap:18px; }
.conv-msg{ display:flex; flex-direction:column; gap:6px; }
.conv-msg.u{ align-items:flex-end; text-align:right; }
.conv-msg-who{ font-size:10px; color:var(--mute); letter-spacing:.04em; }
.conv-msg p{ font-size:13px; line-height:1.55; max-width:62ch; }
.conv-msg.a p{ border-left:1px solid var(--fg); padding-left:14px; }
.conv-msg-time{ font-size:10px; color:var(--mute); }

/* settings */
.settings-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:18px; }
.setting-card{
  border:1px solid var(--hair); padding:24px;
  display:flex; flex-direction:column; gap:10px; align-items:flex-start;
}
.setting-card h3{ font-size:14px; font-weight:400; }
.setting-card p{ font-size:11px; color:var(--mute); line-height:1.5; flex:1; }

/* modal */
.modal{
  position:fixed; inset:0; background:rgba(10,10,10,.5);
  display:none; align-items:center; justify-content:center;
  z-index:300; padding:24px;
}
.modal.open{ display:flex; animation:fadeIn .3s var(--ease); }
@keyframes fadeIn{ from{opacity:0;} to{opacity:1;} }
.modal-card{
  background:var(--bg); border:1px solid var(--fg);
  width:100%; max-width:600px; padding:36px; position:relative;
  max-height:90vh; overflow-y:auto;
  animation:slideUp .4s var(--ease);
}
@keyframes slideUp{ from{transform:translateY(20px); opacity:0;} to{transform:translateY(0); opacity:1;} }
.modal-eye{ font-size:11px; color:var(--mute); }
.modal-title{ font-size:28px; font-weight:300; letter-spacing:-.02em; margin:6px 0 24px; }
.modal-close{ position:absolute; top:14px; right:18px; font-size:24px; line-height:1; }

.form{ display:flex; flex-direction:column; gap:18px; }
.form-row{ display:grid; grid-template-columns:2fr 1fr; gap:14px; }
.form label{ display:flex; flex-direction:column; gap:6px; }
.form label span{ font-size:10px; letter-spacing:.06em; color:var(--mute); }
.form input, .form textarea, .form select{
  background:transparent; border:none; outline:none; font:inherit;
  font-size:13px; padding:6px 0; border-bottom:1px solid var(--hair);
  color:var(--fg); transition:border-color .3s var(--ease);
  width:100%; resize:vertical;
}
.form select{ padding-right:8px; appearance:none; cursor:pointer; }
.form input:focus, .form textarea:focus, .form select:focus{ border-bottom-color:var(--fg); }
.form-actions{ display:flex; gap:10px; align-items:center; margin-top:14px; padding-top:18px; border-top:1px solid var(--hair); }

