:root{--bg:#0a0809;--panel:#110e10;--ink:#f7f0eb;--muted:#a89ea1;--line:rgba(255,255,255,.1);--red:#d61f45;--rose:#ed718d;--gold:#c9a36b;--safe-bottom:env(safe-area-inset-bottom,0px);--chat-viewport-height:100dvh}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:var(--bg);color:var(--ink);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}body{overflow-x:hidden}button,input,textarea{font:inherit}button,a{touch-action:manipulation}.landing{position:relative;min-height:100svh;display:grid;align-items:end;overflow:hidden}.landing-media,.landing-shade{position:absolute;inset:0}.landing-media video{width:100%;height:100%;object-fit:cover;object-position:52% 20%}.landing-shade{background:linear-gradient(90deg,rgba(7,5,6,.95) 0%,rgba(7,5,6,.68) 42%,rgba(7,5,6,.1) 75%),linear-gradient(0deg,rgba(7,5,6,.8),transparent 55%)}.landing-copy{position:relative;z-index:2;width:min(620px,100%);padding:clamp(2rem,7vw,7rem);padding-bottom:max(3rem,calc(2rem + var(--safe-bottom)))}.eyebrow{display:block;color:var(--rose);font-size:.72rem;font-weight:800;letter-spacing:.18em;text-transform:uppercase}.landing h1{font-family:Georgia,serif;font-size:clamp(5rem,15vw,10rem);font-weight:400;line-height:.85;margin:.3rem 0 1.5rem}.landing p{max-width:34rem;font-family:Georgia,serif;font-size:clamp(1.15rem,2.4vw,1.6rem);line-height:1.45;color:#e4dbd5}.landing small{display:block;margin-top:1rem;color:var(--muted)}.primary,.secondary{display:inline-flex;align-items:center;justify-content:center;gap:1.5rem;border:0;border-radius:999px;padding:.9rem 1.25rem;text-decoration:none;font-weight:750;cursor:pointer}.primary{background:var(--red);color:#fff}.primary:hover{background:#ef2954}.secondary{background:transparent;color:var(--ink);border:1px solid var(--line)}
.chat-shell{height:100svh;display:grid;grid-template-columns:minmax(300px,42vw) 1fr;overflow:hidden}.character-pane{position:relative;min-width:0;background:#161014}.character-pane video{width:100%;height:100%;object-fit:cover}.character-gradient{position:absolute;inset:0;background:linear-gradient(0deg,rgba(5,4,5,.9),transparent 50%)}.character-caption{position:absolute;left:clamp(1.5rem,4vw,4rem);right:1.5rem;bottom:clamp(2rem,6vh,5rem)}.character-caption h1{font:400 clamp(3rem,7vw,6rem)/.9 Georgia,serif;margin:.55rem 0}.character-caption p{color:#d0c4c6}.presence{font-size:.72rem;letter-spacing:.12em;text-transform:uppercase}.presence i{display:inline-block;width:7px;height:7px;border-radius:50%;background:#55d493;box-shadow:0 0 12px #55d493;margin-right:.45rem}.conversation-pane{display:grid;grid-template-rows:auto auto minmax(0,1fr) auto auto;background:radial-gradient(circle at 100% 0,rgba(117,37,57,.12),transparent 30%),var(--panel);min-width:0}.chat-header{min-height:70px;display:flex;align-items:center;gap:1rem;padding:0 clamp(1rem,3vw,2rem);border-bottom:1px solid var(--line)}.wordmark{color:#fff;text-decoration:none;font-size:.82rem;letter-spacing:.18em;font-weight:900}.chat-title{display:flex;flex-direction:column;margin-right:auto}.chat-title strong{font-family:Georgia,serif;font-size:1.05rem}.chat-title span{color:var(--muted);font-size:.68rem}.chat-header nav{display:flex;align-items:center;gap:.9rem}.chat-header nav a{color:var(--muted);text-decoration:none;font-size:.8rem}.status-banner{padding:.65rem 1rem;background:#412630;color:#ffdce4;text-align:center;font-size:.82rem}.messages{overflow-y:auto;overscroll-behavior:contain;padding:2rem clamp(1rem,5vw,5rem);scrollbar-color:#3a3034 transparent}.message{max-width:min(78%,680px);margin:.65rem 0;padding:.75rem 1rem;border-radius:18px;line-height:1.5;white-space:pre-wrap;overflow-wrap:anywhere}.message.user{margin-left:auto;background:#3b252d;border-bottom-right-radius:5px}.message.assistant{background:transparent;padding-left:0;color:#eee2dd;font-family:Georgia,serif;font-size:1.05rem}.message.failed{opacity:.6}.empty-state{height:100%;display:grid;place-content:center;text-align:center;color:var(--muted)}.empty-state span{display:grid;place-items:center;width:58px;height:58px;margin:auto;border:1px solid #65414c;border-radius:50%;font:italic 1.7rem Georgia,serif;color:var(--rose)}.empty-state p{margin:1rem 0 .3rem;color:var(--ink);font-family:Georgia,serif;font-size:1.25rem}.typing{padding:0 clamp(1rem,5vw,5rem);height:24px}.typing i{display:inline-block;width:5px;height:5px;margin-right:4px;border-radius:50%;background:var(--muted);animation:pulse 1.2s infinite}.typing i:nth-child(2){animation-delay:.15s}.typing i:nth-child(3){animation-delay:.3s}@keyframes pulse{0%,80%,100%{opacity:.25;transform:translateY(0)}40%{opacity:1;transform:translateY(-3px)}}.composer{padding:.7rem clamp(1rem,5vw,5rem) max(1rem,calc(.75rem + var(--safe-bottom)));border-top:1px solid var(--line);background:rgba(17,14,16,.96)}.usage-line{display:flex;justify-content:space-between;min-height:18px;color:var(--muted);font-size:.68rem}.input-row{display:flex;align-items:flex-end;gap:.65rem;padding:.55rem .6rem .55rem 1rem;border:1px solid #40363a;border-radius:24px;background:#171316}.input-row:focus-within{border-color:#78505d}.input-row textarea{resize:none;max-height:140px;min-height:30px;flex:1;border:0;outline:0;background:transparent;color:#fff;line-height:1.45;padding:.3rem 0}.input-row button{width:38px;height:38px;border:0;border-radius:50%;background:var(--red);color:#fff;font-size:1.2rem;cursor:pointer}.input-row button:disabled{opacity:.35;cursor:default}.composer>small{display:block;text-align:center;color:#6e6568;font-size:.62rem;margin-top:.45rem}
.utility-page{min-height:100svh;padding:clamp(1rem,5vw,4rem);background:radial-gradient(circle at 70% 0,#24151a,transparent 38%),var(--bg)}.back{color:var(--muted);text-decoration:none;font-size:.85rem}.utility-card{width:min(680px,100%);margin:8vh auto;padding:clamp(1.5rem,5vw,3.5rem);background:rgba(20,16,18,.92);border:1px solid var(--line);border-radius:24px}.utility-card h1{font:400 clamp(2.3rem,7vw,4rem) Georgia,serif;margin:.45rem 0 1.5rem}.utility-card p{color:var(--muted);line-height:1.55}.utility-card form{display:grid;gap:1rem}.utility-card label{display:grid;gap:.45rem;font-size:.8rem;color:var(--muted)}.utility-card input{width:100%;padding:1rem;border-radius:12px;border:1px solid var(--line);background:#0d0b0c;color:#fff}.utility-card dl{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.utility-card dl div{padding:1rem;background:#0d0b0c;border-radius:12px}.utility-card dt{color:var(--muted);font-size:.72rem}.utility-card dd{margin:.3rem 0 0;font-weight:800}.setting-row{display:flex;align-items:center;justify-content:space-between;gap:1.5rem;padding:1.25rem 0;border-top:1px solid var(--line)}.setting-row p{margin:.35rem 0 0;font-size:.86rem}.danger{border:1px solid #71313f;background:transparent;color:#ff8aa4;border-radius:999px;padding:.65rem .9rem;cursor:pointer;white-space:nowrap}.form-status{min-height:1.3em;color:var(--rose)!important}
.modal{position:fixed;z-index:10000;inset:0;display:grid;place-items:center;padding:1rem;background:rgba(5,4,5,.88);backdrop-filter:blur(12px)}.modal-card{position:relative;width:min(460px,100%);padding:clamp(1.5rem,5vw,2.7rem);border:1px solid #49353b;border-radius:24px;background:#151113;text-align:center}.modal-card h2{font:400 2.2rem Georgia,serif;margin:.5rem 0 1rem}.modal-card p{color:var(--muted);line-height:1.6}.modal-card>a:not(.secondary){display:block;color:var(--muted);margin-top:1.2rem}.modal-close{position:absolute;right:1rem;top:1rem;border:0;background:transparent;color:#fff;font-size:1.5rem;cursor:pointer}
@media(max-width:760px){
  .chat-shell{position:relative;display:block;height:var(--chat-viewport-height);min-height:100svh;isolation:isolate;background:#120d10}
  .character-pane{position:absolute;inset:0;height:auto;z-index:-2;overflow:hidden;background:#120d10}
  .character-pane video{width:100%;height:100%;object-position:50% 24%;filter:brightness(.57) saturate(.86) contrast(1.04);transform:scale(1.015)}
  .character-gradient{background:linear-gradient(180deg,rgba(5,4,5,.42) 0%,rgba(8,5,7,.08) 27%,rgba(8,5,7,.22) 48%,rgba(8,5,7,.88) 100%)}
  .character-caption{display:none}
  .conversation-pane{position:relative;height:100%;min-width:0;isolation:isolate;grid-template-rows:auto auto minmax(0,1fr) auto auto;background:linear-gradient(180deg,rgba(9,7,9,.18) 0%,rgba(9,7,9,.02) 32%,rgba(9,7,9,.12) 62%,rgba(9,7,9,.72) 100%)}
  .conversation-pane::before{content:"";position:absolute;z-index:-1;inset:0;background:linear-gradient(180deg,rgba(5,4,5,.44),transparent 22%,transparent 54%,rgba(5,4,5,.74));pointer-events:none}
  .chat-header{min-height:58px;padding:0 max(1rem,env(safe-area-inset-left,0px));border-bottom:1px solid rgba(255,255,255,.13);background:linear-gradient(180deg,rgba(8,6,8,.54),rgba(8,6,8,.06));backdrop-filter:blur(2px)}
  .wordmark{display:none}.chat-title strong,.chat-title span,.chat-header nav a{color:#fff;text-shadow:0 1px 8px rgba(0,0,0,.7)}.chat-title span{color:rgba(255,255,255,.72)}.chat-header nav a:first-child{display:none}
  .status-banner{position:relative;background:rgba(67,35,46,.74);backdrop-filter:blur(8px);color:#fff1f4}
  .messages{position:relative;padding:1rem 1rem 1.25rem;scrollbar-width:none;background:linear-gradient(180deg,rgba(8,5,7,.12),rgba(8,5,7,.02) 35%,rgba(8,5,7,.22) 100%)}.messages::-webkit-scrollbar{display:none}
  .message{max-width:88%;margin:.6rem 0;padding:.72rem .9rem;border:1px solid rgba(255,255,255,.11);box-shadow:0 10px 30px rgba(0,0,0,.12);backdrop-filter:blur(10px)}
  .message.user{background:rgba(65,28,40,.68);color:#fff;border-bottom-right-radius:6px}.message.assistant{padding:.7rem .9rem;background:rgba(10,8,10,.38);color:#fffaf7;font-size:1rem;border-bottom-left-radius:6px}.empty-state{color:rgba(255,255,255,.78);text-shadow:0 2px 18px rgba(0,0,0,.8)}.empty-state p{color:#fff}.empty-state span{color:#fff;border-color:rgba(255,255,255,.45);background:rgba(5,4,5,.22)}
  .typing{height:22px;padding:0 1rem;color:#fff}.typing i{background:#fff;box-shadow:0 1px 8px rgba(0,0,0,.8)}
  .composer{position:relative;padding:.55rem .75rem max(.85rem,calc(.55rem + var(--safe-bottom)));border-top:0;background:linear-gradient(180deg,rgba(8,5,7,0),rgba(8,5,7,.76) 24%,rgba(8,5,7,.97) 100%)}
  .usage-line{padding:0 .35rem;color:rgba(255,255,255,.76);text-shadow:0 1px 8px rgba(0,0,0,.72)}.input-row{padding:.5rem .52rem .5rem .9rem;border-color:rgba(255,255,255,.2);background:rgba(13,10,13,.68);box-shadow:0 10px 36px rgba(0,0,0,.25);backdrop-filter:blur(14px)}.input-row:focus-within{border-color:rgba(255,185,204,.74);background:rgba(18,11,15,.82)}.input-row textarea{color:#fff}.input-row textarea::placeholder{color:rgba(255,255,255,.62)}.input-row button{width:40px;height:40px;box-shadow:0 5px 16px rgba(214,31,69,.38)}.composer>small{color:rgba(255,255,255,.55);text-shadow:0 1px 7px rgba(0,0,0,.75)}
  .landing-shade{background:linear-gradient(0deg,rgba(7,5,6,.95) 0%,rgba(7,5,6,.25) 70%)}.landing-copy{padding:1.4rem;padding-bottom:max(2rem,calc(1rem + var(--safe-bottom)))}.landing h1{font-size:5rem}.utility-card{margin:4vh auto}.utility-card dl{grid-template-columns:1fr}.setting-row{align-items:flex-start}
}
@media(prefers-reduced-motion:reduce){video{display:none}.character-pane,.landing-media{background:url('/assets/olya/poster.webp') center/cover no-repeat}.typing i{animation:none}}
[hidden]{display:none!important}
body:has(> fantasy-nav) .chat-shell{height:calc(100svh - 64px)}body:has(> fantasy-nav) .landing{min-height:calc(100svh - 64px)}
@media(max-width:760px){body:has(> fantasy-nav) .chat-shell{height:calc(var(--chat-viewport-height) - 64px);min-height:calc(100svh - 64px)}}
