@font-face{font-family:Geist;font-style:normal;font-weight:400;font-display:swap;src:url(/static/fonts/geist-latin-400-normal.woff2) format('woff2')}
@font-face{font-family:Geist;font-style:normal;font-weight:500;font-display:swap;src:url(/static/fonts/geist-latin-500-normal.woff2) format('woff2')}
@font-face{font-family:Geist;font-style:normal;font-weight:600;font-display:swap;src:url(/static/fonts/geist-latin-600-normal.woff2) format('woff2')}
@font-face{font-family:Geist;font-style:normal;font-weight:700;font-display:swap;src:url(/static/fonts/geist-latin-700-normal.woff2) format('woff2')}
@font-face{font-family:'Geist Mono';font-style:normal;font-weight:400;font-display:swap;src:url(/static/fonts/geist-mono-latin-400-normal.woff2) format('woff2')}
@font-face{font-family:'Geist Mono';font-style:normal;font-weight:500;font-display:swap;src:url(/static/fonts/geist-mono-latin-500-normal.woff2) format('woff2')}
/* Layout: dark control-room shell — slim icon rail, the camera image is the hero, an activity timeline runs under it; panels float as tinted glass. Single dark theme by design. */
:root{
  color-scheme:dark;
  --bg:#070B13; --bg-2:#0B111C; --panel:rgba(20,29,46,.72); --panel-solid:#121A2A; --line:rgba(148,170,210,.14); --line-2:rgba(148,170,210,.24);
  --ink:#EAF1FB; --muted:#8C9BB4; --dim:#5D6B83;
  --accent:#3FC8F4; --accent-2:#2E7BFF; --accent-soft:rgba(63,200,244,.14);
  --ok:#34D399; --warn:#FBBF24; --bad:#FB7185; --violet:#A78BFA;
  --f-ui:"Geist",ui-sans-serif,system-ui,sans-serif; --f-mono:"Geist Mono",ui-monospace,monospace;
  --r:14px;
}
*{box-sizing:border-box}
[hidden]{display:none!important}
html,body{height:100%}
body{background:var(--bg);color:var(--ink);font-family:var(--f-ui);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased;
  background-image:radial-gradient(1200px 600px at 85% -10%,rgba(46,123,255,.16),transparent 60%),radial-gradient(900px 500px at -10% 110%,rgba(63,200,244,.08),transparent 60%);background-attachment:fixed}
h1,h2,h3{margin:0;font-weight:600;letter-spacing:-.015em;text-wrap:balance}
h1{font-size:1.5rem} h2{font-size:1rem} h3{font-size:.9rem}
.mono{font-family:var(--f-mono);font-variant-numeric:tabular-nums}
.label{font-size:.7rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);font-weight:500}
.muted{color:var(--muted)}
button,select,input{font:inherit;color:inherit}
button{cursor:pointer}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.btn{display:inline-flex;align-items:center;gap:.45rem;border:1px solid var(--line-2);background:rgba(255,255,255,.04);padding:.5rem .85rem;border-radius:10px;font-weight:500;color:var(--ink);text-decoration:none;transition:background .15s,border-color .15s}
.btn:hover{background:rgba(255,255,255,.08);border-color:var(--line-2)}
.btn.primary{background:linear-gradient(135deg,var(--accent),var(--accent-2));border-color:transparent;color:#04121C;font-weight:600}
.btn.primary:hover{filter:brightness(1.08)}
.btn:disabled{opacity:.45;cursor:not-allowed}
.btn.sm{padding:.32rem .6rem;font-size:.82rem;border-radius:8px}
select,input[type=text],input[type=email],input[type=password]{background:rgba(255,255,255,.04);border:1px solid var(--line-2);border-radius:10px;padding:.5rem .65rem;max-width:100%;color:var(--ink)}
select option{background:var(--panel-solid)}
.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);min-width:0}
.pad{padding:1rem}
.chip{display:inline-flex;align-items:center;gap:.4rem;font-size:.75rem;font-weight:500;padding:.22rem .6rem;border-radius:99px;background:rgba(255,255,255,.06);border:1px solid var(--line);color:var(--ink);white-space:nowrap}
.chip.live{background:rgba(52,211,153,.12);border-color:rgba(52,211,153,.3);color:#A7F3D0}
.chip.accent{background:var(--accent-soft);border-color:rgba(63,200,244,.35);color:#BFEFFF}
.chip.admin{background:rgba(167,139,250,.14);border-color:rgba(167,139,250,.35);color:#DDD6FE}
.pulse{width:7px;height:7px;border-radius:50%;background:var(--ok);box-shadow:0 0 0 0 rgba(52,211,153,.6);animation:pulse 2s infinite}
@keyframes pulse{70%{box-shadow:0 0 0 7px rgba(52,211,153,0)}100%{box-shadow:0 0 0 0 rgba(52,211,153,0)}}
.demo-band{font-size:.78rem;color:var(--muted);padding-block:.4rem;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px));border-bottom:1px solid var(--line);background:rgba(7,11,19,.8)}
.demo-band strong{color:var(--ink);font-weight:600}

/* LOGIN */
#login{min-height:100%;display:grid;grid-template-columns:minmax(0,1.25fr) minmax(340px,.75fr)}
.login-visual{position:relative;overflow:hidden;min-height:320px}
.login-visual img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:saturate(.9)}
.login-visual::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(7,11,19,.15),rgba(7,11,19,.85) 95%),linear-gradient(0deg,rgba(7,11,19,.9),transparent 45%)}
.login-copy .chip{justify-self:start}
.login-copy{position:absolute;left:clamp(16px,4vw,48px);bottom:clamp(20px,5vw,48px);z-index:1;max-width:30rem;display:grid;gap:.6rem}
.login-copy h1{font-size:clamp(1.6rem,3vw,2.4rem);line-height:1.1}
.login-side{display:grid;place-items:center;padding-block:2rem;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}
.login-card{width:min(400px,100%);display:grid;gap:1rem}
.brand{display:flex;align-items:center;gap:.6rem;font-weight:600;font-size:1rem;letter-spacing:-.01em}
.mark{width:30px;height:30px;border-radius:9px;background:linear-gradient(135deg,var(--accent),var(--accent-2));display:grid;place-items:center;color:#04121C;font-size:.72rem;font-weight:700}
.field{display:grid;gap:.3rem} .field label{font-size:.8rem;color:var(--muted)}
.acct{display:flex;justify-content:space-between;align-items:center;gap:.6rem;width:100%;text-align:left;border:1px solid var(--line);background:rgba(255,255,255,.03);border-radius:12px;padding:.6rem .75rem;transition:border-color .15s,background .15s}
.acct:hover{border-color:rgba(63,200,244,.45);background:rgba(63,200,244,.06)}
.err{color:var(--bad);font-size:.82rem;min-height:1.2em}
.err.ok{color:var(--accent)}

/* APP SHELL */
#app{display:grid;grid-template-columns:72px minmax(0,1fr);min-height:calc(100% - 34px)}
.rail{border-right:1px solid var(--line);background:rgba(7,11,19,.6);display:flex;flex-direction:column;align-items:center;gap:.4rem;padding-block:1rem;position:sticky;top:0;height:100vh}
.rail .mark{margin-bottom:.8rem;flex:none}
.rail button{width:48px;height:48px;border-radius:12px;border:1px solid transparent;background:none;display:grid;place-items:center;color:var(--muted);position:relative}
.rail button:hover{background:rgba(255,255,255,.05);color:var(--ink)}
.rail button.on{background:var(--accent-soft);border-color:rgba(63,200,244,.3);color:var(--accent)}
.rail button svg{width:21px;height:21px}
.rail button .tip{position:absolute;left:58px;white-space:nowrap;background:var(--panel-solid);border:1px solid var(--line-2);padding:.25rem .55rem;border-radius:8px;font-size:.78rem;color:var(--ink);opacity:0;pointer-events:none;transition:opacity .12s;z-index:20}
.rail button:hover .tip,.rail button:focus-visible .tip{opacity:1}
.rail .spacer{flex:1}
.wrap{min-width:0;display:flex;flex-direction:column}
.topbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.8rem;padding-block:.85rem;padding-left:max(16px,env(safe-area-inset-left,0px),1.5rem);padding-right:max(16px,env(safe-area-inset-right,0px),1.5rem);border-bottom:1px solid var(--line);background:rgba(7,11,19,.55);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);position:sticky;top:0;z-index:10}
.crumbs{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;color:var(--muted);font-size:.86rem}
.crumbs b{color:var(--ink);font-weight:600}
.crumbs .sep{color:var(--dim)}
.who{display:flex;align-items:center;gap:.6rem}
.avatar{width:32px;height:32px;border-radius:50%;background:linear-gradient(135deg,#1E3A5F,#2E7BFF);display:grid;place-items:center;font-size:.75rem;font-weight:600}
main{padding-block:1.4rem 3rem;padding-left:max(16px,env(safe-area-inset-left,0px),1.5rem);padding-right:max(16px,env(safe-area-inset-right,0px),1.5rem);display:grid;gap:1.2rem;align-content:start;min-width:0}
.head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:end;gap:.8rem}
.head p{margin:.25rem 0 0;color:var(--muted)}
.row{display:flex;flex-wrap:wrap;gap:.6rem;align-items:center}
.grid-main{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:1.2rem;align-items:start}

/* VIEWER */
.viewer{position:relative;border-radius:var(--r);overflow:hidden;background:#04070D;border:1px solid var(--line);aspect-ratio:3/2;max-width:100%}
.viewer img.ph{width:100%;height:100%;object-fit:cover;display:block}
.ov-top{position:absolute;inset:0 0 auto 0;display:flex;justify-content:space-between;align-items:flex-start;gap:.5rem;padding:.8rem;background:linear-gradient(180deg,rgba(4,7,13,.75),transparent);pointer-events:none}
.ov-top>*{pointer-events:auto}
.ov-bottom{position:absolute;inset:auto 0 0 0;padding:.8rem;display:flex;justify-content:space-between;align-items:end;gap:.6rem;background:linear-gradient(0deg,rgba(4,7,13,.8),transparent)}
.stamp{font-family:var(--f-mono);font-size:.82rem;background:rgba(4,7,13,.7);border:1px solid var(--line-2);padding:.25rem .55rem;border-radius:8px;backdrop-filter:blur(6px)}
.stamp-big{font-family:var(--f-mono);font-size:clamp(1rem,2.2vw,1.35rem);font-weight:500;letter-spacing:-.01em}
.mask{position:absolute;backdrop-filter:blur(18px) saturate(.5);-webkit-backdrop-filter:blur(18px) saturate(.5);background:rgba(90,105,130,.35);border:1px dashed rgba(255,255,255,.5);border-radius:3px}
.box{position:absolute;border:1.5px solid var(--warn);border-radius:2px;box-shadow:0 0 0 1px rgba(0,0,0,.3)}
.box.p{border-color:var(--bad)}
.navbtn{position:absolute;top:50%;transform:translateY(-50%);width:40px;height:40px;border-radius:50%;border:1px solid var(--line-2);background:rgba(4,7,13,.6);display:grid;place-items:center;color:var(--ink);backdrop-filter:blur(6px)}
.navbtn:hover{background:rgba(63,200,244,.2)}
.navbtn.l{left:.7rem} .navbtn.r{right:.7rem}

/* ACTIVITY TIMELINE */
.timeline{padding:.85rem 1rem 1rem;display:grid;gap:.45rem}
.tl-head{display:flex;justify-content:space-between;align-items:center;gap:.6rem;flex-wrap:wrap}
.tl-legend{display:flex;gap:.9rem;font-size:.75rem;color:var(--muted)}
.tl-legend i{display:inline-block;width:8px;height:8px;border-radius:2px;margin-right:.35rem;vertical-align:middle}
.tl-track{position:relative;height:64px;cursor:pointer;touch-action:none;user-select:none}
.tl-track svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.tl-cursor{position:absolute;top:-4px;bottom:16px;width:2px;background:var(--accent);box-shadow:0 0 12px var(--accent);border-radius:2px;pointer-events:none;transform:translateX(-1px)}
.tl-cursor::before{content:"";position:absolute;top:-4px;left:-5px;width:12px;height:12px;border-radius:50%;background:var(--accent);border:2px solid var(--bg)}

/* SIDE CARDS */
.stack{display:grid;gap:1rem}
.kpis{display:grid;grid-template-columns:1fr 1fr;gap:.6rem}
.kpi{border:1px solid var(--line);border-radius:12px;padding:.7rem .75rem;background:rgba(255,255,255,.025)}
.kpi .v{font-family:var(--f-mono);font-size:1.35rem;font-weight:500;letter-spacing:-.02em}
.kpi .v small{font-size:.75rem;color:var(--muted);margin-left:.2rem}
.facts{display:grid;gap:.55rem}
.fact{display:flex;justify-content:space-between;gap:1rem;font-size:.86rem;padding-bottom:.5rem;border-bottom:1px solid var(--line)}
.fact:last-child{border-bottom:0;padding-bottom:0}
.fact span:first-child{color:var(--muted)}
.spark{width:100%;height:56px;display:block}

/* CALENDAR */
.cal{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}
.cal .dow{font-size:.7rem;color:var(--dim);text-align:center;font-weight:500;padding:.2rem 0}
.day{aspect-ratio:1;border-radius:10px;border:1px solid transparent;background:none;font-size:.85rem;display:grid;place-items:center;color:var(--dim);position:relative;font-family:var(--f-mono)}
.day.has{color:var(--ink);background:rgba(255,255,255,.04);border-color:var(--line)}
.day.has::after{content:"";position:absolute;bottom:5px;width:4px;height:4px;border-radius:50%;background:var(--accent)}
.day.has:hover{border-color:rgba(63,200,244,.4)}
.day.sel{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}
.day:disabled{cursor:default}
.strip{display:flex;gap:8px;overflow-x:auto;padding-bottom:.3rem;scrollbar-width:thin}
.thumb{flex:none;width:118px;border:1px solid var(--line);border-radius:10px;padding:0;background:var(--panel-solid);overflow:hidden;text-align:left}
.thumb img{width:100%;aspect-ratio:3/2;object-fit:cover;display:block;opacity:.75;transition:opacity .15s}
.thumb span{display:block;font-family:var(--f-mono);font-size:.72rem;color:var(--muted);padding:.25rem .45rem}
.thumb:hover img{opacity:1}
.thumb.on{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}
.thumb.on img{opacity:1}
.thumb{position:relative}
.qb{position:absolute;top:5px;left:5px;font-size:.62rem;font-weight:600;padding:.08rem .38rem;border-radius:6px;background:rgba(251,191,36,.9);color:#1A1203}
.qb.veil{background:rgba(251,113,133,.92);color:#2A0710}
.panel>*,.panel>div>*,.grid-main>*{min-width:0}
.xstrip{display:flex;gap:6px;overflow-x:auto;padding-bottom:.2rem}
.xstrip img{width:76px;aspect-ratio:3/2;object-fit:cover;border-radius:6px;border:1px solid var(--line);opacity:.8;flex:none}

/* COMPARE */
.ba .after{position:absolute;inset:0;clip-path:inset(0 0 0 50%)}
.ba .after img{width:100%;height:100%;object-fit:cover;display:block}
.ba .handle{position:absolute;top:0;bottom:0;width:2px;background:#fff;left:50%;pointer-events:none;box-shadow:0 0 14px rgba(63,200,244,.8)}
.ba .handle::after{content:"⟷";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:38px;height:38px;border-radius:50%;background:var(--bg);border:2px solid #fff;display:grid;place-items:center;font-size:.9rem;color:#fff}
.lab{position:absolute;top:.75rem;font-family:var(--f-mono);font-size:.78rem;background:rgba(4,7,13,.7);border:1px solid var(--line-2);padding:.22rem .5rem;border-radius:8px}
input[type=range]{width:100%;accent-color:var(--accent)}

/* TIMELAPSE */
canvas{width:100%;max-width:100%;border-radius:var(--r);background:#04070D;display:block;aspect-ratio:3/2;border:1px solid var(--line)}
.progress{height:4px;background:var(--line);border-radius:3px;overflow:hidden}
.progress div{height:100%;width:0;background:linear-gradient(90deg,var(--accent),var(--accent-2))}
.seg{display:inline-flex;border:1px solid var(--line-2);border-radius:10px;overflow:hidden}
.seg button{border:0;background:none;padding:.42rem .7rem;font-size:.82rem;color:var(--muted)}
.seg button.on{background:var(--accent-soft);color:var(--accent)}

/* TABLES */
.tw{overflow-x:auto}
table{border-collapse:collapse;width:100%;font-size:.88rem}
th,td{text-align:left;padding:.65rem .7rem;border-bottom:1px solid var(--line);vertical-align:middle}
th{font-size:.7rem;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-weight:500}
tr:last-child td{border-bottom:0}
.toggle{display:inline-flex;align-items:center;gap:.55rem;cursor:pointer;font-size:.88rem}
.switch{position:relative;width:36px;height:20px;flex:none}
.switch input{position:absolute;opacity:0;width:100%;height:100%;margin:0;cursor:pointer}
.switch span{position:absolute;inset:0;pointer-events:none;border-radius:99px;background:rgba(255,255,255,.12);transition:background .15s}
.switch span::after{content:"";position:absolute;top:3px;left:3px;width:14px;height:14px;border-radius:50%;background:#fff;transition:transform .15s}
.switch input:checked+span{background:var(--accent)}
.switch input:checked+span::after{transform:translateX(16px)}
.switch input:focus-visible+span{outline:2px solid var(--accent);outline-offset:2px}
code.snip{display:block;background:rgba(0,0,0,.35);border:1px solid var(--line);border-radius:10px;padding:.75rem;font-family:var(--f-mono);font-size:.78rem;white-space:pre-wrap;word-break:break-all;color:#BFEFFF}
.drawzone{cursor:crosshair;touch-action:none}
.draft{position:absolute;border:2px solid var(--accent);background:rgba(63,200,244,.15)}
.alert{display:flex;gap:.7rem;align-items:flex-start;border:1px solid var(--line);border-radius:12px;padding:.7rem .8rem;font-size:.86rem;background:rgba(255,255,255,.025)}
.alert .dot{width:8px;height:8px;border-radius:50%;margin-top:.4rem;flex:none;background:var(--accent)}
.alert.warn .dot{background:var(--warn)}
.chart{width:100%;height:auto;display:block}
.note{font-size:.82rem;color:var(--muted)}

.chat{display:grid;gap:1rem;align-content:start}
.msgs{display:grid;gap:.9rem}
.msg{max-width:min(720px,100%);padding:.8rem .95rem;border-radius:14px;line-height:1.55}
.msg.u{justify-self:end;background:linear-gradient(135deg,rgba(63,200,244,.22),rgba(46,123,255,.22));border:1px solid rgba(63,200,244,.35)}
.msg.a{background:var(--panel);border:1px solid var(--line)}
.msg.a .who-ai{display:flex;align-items:center;gap:.45rem;font-size:.75rem;color:var(--muted);margin-bottom:.35rem}
.msg.a .who-ai .mark{width:20px;height:20px;border-radius:6px;font-size:.55rem}
.proofs{display:flex;gap:8px;overflow-x:auto;margin-top:.6rem;padding-bottom:.2rem}
.proof{flex:none;width:150px;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:var(--panel-solid);padding:0;text-align:left}
.proof img{width:100%;aspect-ratio:3/2;object-fit:cover;display:block}
.proof span{display:block;font-family:var(--f-mono);font-size:.7rem;color:var(--muted);padding:.25rem .45rem}
.proof:hover{border-color:var(--accent)}
.ask{display:flex;gap:.5rem;align-items:center;background:var(--panel);border:1px solid var(--line-2);border-radius:14px;padding:.4rem .4rem .4rem .9rem}
.ask input{flex:1;min-width:0;background:none;border:0;padding:.55rem 0;outline:none}
.sugg{display:flex;flex-wrap:wrap;gap:.45rem}
.sugg button{border:1px solid var(--line-2);background:rgba(255,255,255,.03);border-radius:99px;padding:.38rem .75rem;font-size:.82rem;color:var(--ink)}
.sugg button:hover{border-color:var(--accent);color:var(--accent)}
.typing{display:inline-flex;gap:4px}.typing i{width:6px;height:6px;border-radius:50%;background:var(--muted);animation:blink 1s infinite}.typing i:nth-child(2){animation-delay:.15s}.typing i:nth-child(3){animation-delay:.3s}
@keyframes blink{50%{opacity:.25}}
.wx-day{display:grid;gap:.8rem}
.wx-strip{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:2px;height:34px;border-radius:8px;overflow:hidden}
.wx-strip span{display:block}
.wx-legend{display:flex;flex-wrap:wrap;gap:.9rem;font-size:.75rem;color:var(--muted)}
.wx-legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:.35rem;vertical-align:middle}
.wx-big{font-size:2rem;line-height:1}
.ph-off{color:var(--dim);font-family:var(--f-mono)}
@media (max-width:1100px){.grid-main{grid-template-columns:1fr}}
@media (max-width:820px){
  #login{grid-template-columns:1fr}
  .login-visual{min-height:240px}
  #app{grid-template-columns:1fr}
  .rail{position:sticky;top:0;height:auto;flex-direction:row;overflow-x:auto;padding:.5rem max(16px,env(safe-area-inset-right,0px)) .5rem max(16px,env(safe-area-inset-left,0px));border-right:0;border-bottom:1px solid var(--line);z-index:12;justify-content:flex-start}
  .rail .mark{margin:0 .4rem 0 0}
  .rail .spacer{display:none}
  .rail button{width:42px;height:42px;flex:none}
  .rail button .tip{display:none}
  .topbar{position:static}
  .navbtn{display:none}
  .ov-bottom .stamp{display:none}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}

/* ajouts application réelle */
.authbox{min-height:100%;display:grid;place-items:center;padding:2rem 16px}
.toast{position:fixed;right:16px;bottom:16px;z-index:50;background:var(--panel-solid);border:1px solid var(--line-2);border-radius:12px;padding:.7rem 1rem;max-width:min(420px,calc(100% - 32px));box-shadow:0 10px 30px rgba(0,0,0,.4)}
.toast.bad{border-color:var(--bad)}
.secret{font-family:var(--f-mono);background:rgba(255,255,255,.05);border:1px dashed var(--line-2);border-radius:8px;padding:.6rem .7rem;word-break:break-all;user-select:all}
.linkbtn{background:none;border:0;color:var(--accent);padding:0;text-decoration:underline;font-size:.85rem}
.sitepick{background:transparent;border:0;font-weight:600;color:var(--ink);padding:0 .2rem}
.empty{padding:3rem 1rem;text-align:center;color:var(--muted)}
input[type=number],input[type=time]{background:rgba(255,255,255,.04);border:1px solid var(--line-2);border-radius:10px;padding:.45rem .6rem;color:var(--ink);max-width:100%}
.dl{display:grid;gap:.5rem}
.dl .item{display:flex;justify-content:space-between;gap:.6rem;align-items:center;border-bottom:1px solid var(--line);padding:.45rem 0;flex-wrap:wrap}
/* assistant */
.msgs{display:grid;gap:.6rem;max-height:60vh;overflow:auto;padding-right:.2rem}
.msg{padding:.65rem .85rem;border-radius:12px;max-width:min(680px,92%);line-height:1.45;font-size:.92rem;border:1px solid var(--line)}
.msg.me{justify-self:end;background:var(--accent-soft);border-color:rgba(63,200,244,.35)}
.msg.bot{justify-self:start;background:rgba(255,255,255,.035)}
.chat .row .btn.sm{white-space:normal;text-align:left}
.zone{position:absolute;border:2px dashed var(--violet);border-radius:3px;pointer-events:none}
.zone span{position:absolute;left:0;top:-1.45rem;font-size:.72rem;background:rgba(7,11,19,.85);color:#DDD6FE;padding:.1rem .4rem;border-radius:5px;white-space:nowrap}
.pair{display:flex;gap:.5rem;flex-wrap:wrap}
