/* AI DIARIES · THE THIRD TEXT — interactive mystery
 * Fully self-contained. No external requests (fonts, CDNs, images).
 * Mobile-first: phone frame on desktop, full-bleed on small screens.
 */
:root{
  --bg:#0d0a12;
  --bg2:#141020;
  --ink:#f4ede4;
  --ink-dim:#b9aec4;
  --plum:#2a1e3d;
  --amber:#ffcf87;
  --amber-deep:#e89b4d;
  --rose:#ff8fa3;
  --violet:#a78bfa;
  --bubble-them:#241d33;
  --bubble-me:linear-gradient(135deg,#7c5cbf,#b76ecf);
  --danger:#ff5d5d;
  --serif:Georgia,"Times New Roman",serif;
  --sans:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  --mono:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{
  background:#050308;
  color:var(--ink);
  font-family:var(--sans);
  display:flex;align-items:center;justify-content:center;
  min-height:100dvh;
  overflow:hidden;
}
/* ambient room glow behind the phone */
body::before{
  content:"";position:fixed;inset:0;pointer-events:none;
  background:
    radial-gradient(60% 40% at 50% 0%, rgba(124,92,191,.28), transparent 70%),
    radial-gradient(40% 30% at 80% 100%, rgba(232,155,77,.12), transparent 70%),
    radial-gradient(40% 30% at 15% 90%, rgba(255,143,163,.10), transparent 70%);
}
#phone{
  position:relative;
  width:min(480px,100vw);
  height:min(940px,100dvh);
  background:linear-gradient(180deg,var(--bg2),var(--bg) 60%);
  overflow:hidden;
  display:flex;flex-direction:column;
  box-shadow:0 0 0 1px rgba(167,139,250,.18), 0 30px 90px rgba(0,0,0,.7);
}
@media (min-width:520px) and (min-height:980px){
  #phone{border-radius:38px}
}
/* film grain + scanlines */
#grain{position:absolute;inset:0;pointer-events:none;z-index:60;opacity:.10;mix-blend-mode:overlay;
  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='0.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)' opacity='1'/%3E%3C/svg%3E");}
#scan{position:absolute;inset:0;pointer-events:none;z-index:61;opacity:.05;
  background:repeating-linear-gradient(0deg,transparent 0 2px,#000 2px 3px);}

/* ---------- header ---------- */
#hdr{
  display:flex;align-items:center;gap:10px;
  padding:14px 16px 10px;z-index:5;
  border-bottom:1px solid rgba(167,139,250,.14);
  background:rgba(13,10,18,.72);backdrop-filter:blur(8px);
}
#hdr .dot{width:9px;height:9px;border-radius:50%;background:var(--danger);
  box-shadow:0 0 10px var(--danger);animation:blink 2.4s infinite}
@keyframes blink{0%,100%{opacity:1}50%{opacity:.35}}
#hdr .t{font-size:11px;letter-spacing:.22em;color:var(--ink-dim);text-transform:uppercase}
#hdr .t b{color:var(--amber);font-weight:700}
#hdr .sp{flex:1}
#mute{
  background:rgba(167,139,250,.12);border:1px solid rgba(167,139,250,.25);
  color:var(--ink);border-radius:20px;padding:6px 12px;font-size:12px;cursor:pointer;
}
#mute:focus-visible,.choice button:focus-visible,#startBtn:focus-visible,
.tapnext:focus-visible,.iconbtn:focus-visible{outline:2px solid var(--amber);outline-offset:2px}

/* AI disclosure ribbon — always visible */
#aidisc{
  z-index:5;text-align:center;font-size:10.5px;letter-spacing:.06em;
  color:#8f86a3;background:rgba(0,0,0,.35);
  padding:6px 12px;border-bottom:1px solid rgba(167,139,250,.12);
}
#aidisc b{color:var(--violet)}

/* ---------- stage ---------- */
#stage{flex:1;position:relative;overflow:hidden}
.screen{
  position:absolute;inset:0;overflow-y:auto;overscroll-behavior:contain;
  padding:22px 20px 30px;
  opacity:0;transform:translateY(14px);pointer-events:none;
  transition:opacity .45s ease,transform .45s ease;
  scrollbar-width:thin;scrollbar-color:#3a2c55 transparent;
}
.screen.on{opacity:1;transform:none;pointer-events:auto}
.screen::-webkit-scrollbar{width:6px}
.screen::-webkit-scrollbar-thumb{background:#3a2c55;border-radius:3px}

.kicker{font-size:11px;letter-spacing:.28em;text-transform:uppercase;color:var(--violet);margin-bottom:10px}
h1.title{
  font-family:var(--serif);font-weight:400;font-size:40px;line-height:1.05;
  margin-bottom:14px;color:var(--ink);
}
h1.title em{font-style:italic;color:var(--amber)}
.sub{color:var(--ink-dim);font-size:14.5px;line-height:1.65;margin-bottom:8px}
.sub b{color:var(--ink)}

/* disclosure card on intro */
.disclose{
  margin:18px 0;padding:14px 16px;border-radius:14px;
  background:rgba(167,139,250,.08);border:1px solid rgba(167,139,250,.28);
  font-size:12.5px;line-height:1.6;color:var(--ink-dim);
}
.disclose b{color:var(--amber)}
.meta-row{display:flex;gap:16px;margin:16px 0 22px;font-size:12px;color:var(--ink-dim)}
.meta-row span b{color:var(--ink)}

#startBtn{
  width:100%;padding:16px;border:none;border-radius:16px;cursor:pointer;
  font-size:16px;font-weight:700;letter-spacing:.04em;color:#1a1026;
  background:linear-gradient(135deg,var(--amber),var(--amber-deep));
  box-shadow:0 8px 30px rgba(232,155,77,.35);
  transition:transform .15s ease;
}
#startBtn:hover{transform:translateY(-1px)}
#startBtn:active{transform:translateY(1px)}
.fineprint{margin-top:14px;font-size:11px;color:#6f6584;text-align:center;line-height:1.6}

/* ---------- diary (typewriter) ---------- */
.diary-head{display:flex;align-items:center;gap:10px;margin-bottom:14px}
.avatar{
  width:38px;height:38px;border-radius:50%;flex:none;
  background:radial-gradient(circle at 35% 30%,#c9a7f5,#7c5cbf 60%,#3a2a5c);
  border:1px solid rgba(167,139,250,.5);
  display:flex;align-items:center;justify-content:center;
  font-family:var(--serif);font-style:italic;font-size:18px;color:#fff;
}
.diary-head .who{font-size:12px;color:var(--ink-dim);letter-spacing:.14em;text-transform:uppercase}
.diary-head .who b{color:var(--amber);display:block;font-size:13px;letter-spacing:.06em}
.diary{
  font-family:var(--serif);font-size:19px;line-height:1.75;color:var(--ink);
  min-height:120px;white-space:pre-wrap;
}
.diary .cursor{display:inline-block;width:2px;height:1.1em;background:var(--amber);
  vertical-align:-0.15em;animation:blink 1s steps(1) infinite;margin-left:2px}
.tapnext{
  margin-top:22px;display:inline-flex;align-items:center;gap:8px;
  background:none;border:1px solid rgba(167,139,250,.35);color:var(--ink);
  padding:10px 18px;border-radius:30px;font-size:13.5px;cursor:pointer;
  animation:tapulse 2s infinite;
}
@keyframes tapulse{0%,100%{box-shadow:0 0 0 0 rgba(167,139,250,.0)}50%{box-shadow:0 0 18px 0 rgba(167,139,250,.35)}}
.tapnext[hidden]{display:none}

/* ---------- chat ---------- */
.chat{display:flex;flex-direction:column;gap:8px;padding:6px 0 10px}
.msg{
  max-width:82%;padding:10px 14px;border-radius:18px;font-size:15px;line-height:1.5;
  opacity:0;transform:translateY(10px) scale(.96);
  transition:opacity .3s ease,transform .3s ease;
  word-wrap:break-word;
}
.msg.show{opacity:1;transform:none}
.msg.them{align-self:flex-start;background:var(--bubble-them);border:1px solid rgba(167,139,250,.2);
  border-bottom-left-radius:6px;color:var(--ink)}
.msg.me{align-self:flex-end;background:var(--bubble-me);border-bottom-right-radius:6px;color:#fff}
.msg .from{display:block;font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;
  color:var(--violet);margin-bottom:4px}
.msg.me .from{color:rgba(255,255,255,.75)}
.msg.sys{align-self:center;background:rgba(0,0,0,.4);border:1px dashed rgba(167,139,250,.35);
  font-size:12px;color:var(--ink-dim);border-radius:12px;max-width:92%;text-align:center}
.typing{align-self:flex-start;background:var(--bubble-them);border-radius:18px;
  border-bottom-left-radius:6px;padding:12px 16px;display:flex;gap:5px}
.typing i{width:7px;height:7px;border-radius:50%;background:var(--ink-dim);animation:tb 1.2s infinite}
.typing i:nth-child(2){animation-delay:.15s}.typing i:nth-child(3){animation-delay:.3s}
@keyframes tb{0%,60%,100%{transform:none;opacity:.4}30%{transform:translateY(-4px);opacity:1}}
.chatdate{align-self:center;font-size:11px;color:#6f6584;letter-spacing:.1em;margin:4px 0}

/* ---------- choice ---------- */
.choice-prompt{font-family:var(--serif);font-size:21px;line-height:1.5;margin:6px 0 18px;color:var(--ink)}
.choice{display:flex;flex-direction:column;gap:12px}
.choice button{
  text-align:left;background:rgba(167,139,250,.07);color:var(--ink);
  border:1px solid rgba(167,139,250,.35);border-radius:16px;
  padding:15px 16px;font-size:15px;cursor:pointer;line-height:1.45;
  transition:background .2s,transform .12s;
}
.choice button small{display:block;color:var(--ink-dim);font-size:12.5px;margin-top:5px;line-height:1.5}
.choice button:hover{background:rgba(167,139,250,.16)}
.choice button:active{transform:scale(.985)}
.choice button.picked{background:rgba(232,155,77,.16);border-color:var(--amber)}

/* ---------- glitch scene ---------- */
.glitchwrap{position:relative;border-radius:18px;overflow:hidden;margin:10px 0 16px;
  border:1px solid rgba(255,93,93,.4);box-shadow:0 0 40px rgba(255,93,93,.15)}
.glitchwrap img{display:block;width:100%;height:300px;object-fit:cover;object-position:top;
  filter:grayscale(.7) contrast(1.25) brightness(.85) sepia(.25) hue-rotate(-15deg)}
.glitchwrap .slice{position:absolute;inset:0;background:inherit;pointer-events:none}
.glitchwrap .rgb1,.glitchwrap .rgb2{position:absolute;inset:0;pointer-events:none;
  background-size:cover;background-position:top;mix-blend-mode:screen;opacity:.55}
.glitchwrap .rgb1{background-image:url("assets/echo-flash.jpg");filter:sepia(1) hue-rotate(-60deg) saturate(3);
  animation:gl1 1.1s steps(2) infinite}
.glitchwrap .rgb2{background-image:url("assets/echo-flash.jpg");filter:sepia(1) hue-rotate(120deg) saturate(3);
  animation:gl2 1.4s steps(2) infinite}
@keyframes gl1{0%{transform:translate(-7px,3px);clip-path:inset(12% 0 62% 0)}50%{transform:translate(6px,-4px);clip-path:inset(58% 0 8% 0)}100%{transform:translate(-4px,2px);clip-path:inset(30% 0 40% 0)}}
@keyframes gl2{0%{transform:translate(6px,-3px);clip-path:inset(64% 0 10% 0)}50%{transform:translate(-6px,4px);clip-path:inset(8% 0 70% 0)}100%{transform:translate(5px,-2px);clip-path:inset(42% 0 34% 0)}}
.glitchwrap .stamp{position:absolute;top:10px;left:12px;font-family:var(--mono);font-size:11px;
  color:#ff5d5d;letter-spacing:.15em;text-shadow:0 0 8px #000}
.glitchwrap .static{position:absolute;inset:0;pointer-events:none;opacity:.35;mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='s'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.95' numOctaves='3'/%3E%3C/filter%3E%3Crect width='120' height='120' filter='url(%23s)'/%3E%3C/svg%3E");
  animation:statik .35s steps(3) infinite}
@keyframes statik{0%{transform:translate(0,0)}33%{transform:translate(-14px,8px)}66%{transform:translate(10px,-10px)}100%{transform:translate(0,0)}}
.glitch-cap{font-family:var(--mono);font-size:13px;color:var(--rose);line-height:1.7;margin-bottom:6px}

/* ---------- voice note ---------- */
.vn{
  background:var(--bubble-them);border:1px solid rgba(167,139,250,.25);
  border-radius:18px;padding:18px;margin:12px 0;
}
.vn .wave{display:flex;align-items:flex-end;gap:3px;height:56px;margin:12px 0}
.vn .wave i{flex:1;background:linear-gradient(180deg,var(--violet),#5b3f9e);border-radius:2px;min-height:4px;opacity:.5}
.vn.playing .wave i{animation:wv 0.9s ease-in-out infinite alternate}
.vn .wave i:nth-child(odd){animation-delay:.2s}.vn .wave i:nth-child(3n){animation-delay:.45s}
@keyframes wv{from{transform:scaleY(.35)}to{transform:scaleY(1)}}
.vn .transcript{font-size:13.5px;line-height:1.7;color:var(--ink-dim);font-style:italic;
  border-left:2px solid var(--violet);padding-left:12px;margin-top:10px}
.vn .transcript b{color:var(--ink);font-style:normal}
.iconbtn{
  display:inline-flex;align-items:center;gap:10px;cursor:pointer;
  background:linear-gradient(135deg,var(--amber),var(--amber-deep));color:#1a1026;
  border:none;border-radius:30px;padding:12px 22px;font-size:14.5px;font-weight:700;
}
.iconbtn:disabled{opacity:.55;cursor:default}
.vn .timer{font-family:var(--mono);font-size:12px;color:var(--ink-dim);margin-left:8px}

/* ---------- number input ---------- */
.numlock{background:rgba(0,0,0,.35);border:1px solid rgba(255,93,93,.35);border-radius:18px;
  padding:20px 18px;margin:12px 0;text-align:center}
.numlock .q{font-family:var(--serif);font-size:19px;margin-bottom:6px}
.numlock .hint{font-size:12.5px;color:var(--ink-dim);margin-bottom:16px}
.numlock input{
  width:150px;text-align:center;font-family:var(--mono);font-size:30px;letter-spacing:.35em;
  background:#0a0714;color:var(--amber);border:1px solid rgba(232,155,77,.5);
  border-radius:12px;padding:10px 8px 10px 16px;margin-bottom:14px;
}
.numlock input:focus{outline:2px solid var(--amber)}
.numlock .tries{font-size:11.5px;color:var(--ink-dim);margin-top:10px;min-height:16px}
.numlock .tries.bad{color:var(--danger)}

/* ---------- ending ---------- */
.endcard{
  text-align:center;padding:8px 0;
}
.endcard .seal{
  display:inline-block;font-size:11px;letter-spacing:.3em;text-transform:uppercase;
  color:var(--amber);border:1px solid rgba(232,155,77,.5);border-radius:30px;
  padding:8px 18px;margin-bottom:16px;
}
.endcard h2{font-family:var(--serif);font-size:34px;font-weight:400;margin-bottom:6px}
.endcard h2 em{color:var(--amber)}
.endcard .tagline{font-size:14px;color:var(--ink-dim);font-style:italic;margin-bottom:18px;font-family:var(--serif)}
.endlines{font-family:var(--serif);font-size:17.5px;line-height:1.75;text-align:left;
  background:rgba(167,139,250,.06);border-radius:16px;padding:18px;margin-bottom:18px}
.endstat{
  display:inline-block;font-family:var(--mono);font-size:12px;color:var(--violet);
  background:rgba(167,139,250,.1);border-radius:10px;padding:8px 14px;margin-bottom:20px;
}
.endcta{background:rgba(0,0,0,.35);border-radius:16px;padding:16px;margin-bottom:16px;text-align:left}
.endcta .kicker{margin-bottom:6px}
.endcta p{font-size:13.5px;line-height:1.65;color:var(--ink-dim);margin-bottom:12px}
.endcta p b{color:var(--amber)}
.btnrow{display:flex;gap:10px;flex-wrap:wrap}
.btn{
  flex:1;min-width:130px;text-align:center;text-decoration:none;cursor:pointer;
  border-radius:14px;padding:13px 10px;font-size:14px;font-weight:700;border:none;
  transition:transform .12s;
}
.btn:active{transform:scale(.97)}
.btn.primary{background:linear-gradient(135deg,var(--amber),var(--amber-deep));color:#1a1026}
.btn.ghost{background:rgba(167,139,250,.12);color:var(--ink);border:1px solid rgba(167,139,250,.35)}
.btnrow .btn{font-family:var(--sans)}

/* share card */
.sharebox{margin:6px 0 18px;text-align:center}
#shareCanvas{display:none}
.shareprev{
  width:150px;border-radius:10px;border:1px solid rgba(167,139,250,.35);
  margin:0 auto 12px;display:block;
}
.sharetext{
  width:100%;background:#0a0714;border:1px solid rgba(167,139,250,.25);border-radius:12px;
  color:var(--ink-dim);font-size:12px;line-height:1.6;padding:10px 12px;margin-bottom:10px;
  font-family:var(--sans);resize:none;height:86px;
}

/* secret gate */
.gate{
  margin:18px 0 8px;padding:18px;border-radius:16px;
  background:linear-gradient(180deg,rgba(255,143,163,.08),rgba(167,139,250,.08));
  border:1px solid rgba(255,143,163,.35);text-align:center;
}
.gate .lock{font-size:26px;margin-bottom:8px}
.gate h3{font-family:var(--serif);font-weight:400;font-size:20px;margin-bottom:8px}
.gate h3 em{color:var(--rose)}
.gate p{font-size:13px;color:var(--ink-dim);line-height:1.65;margin-bottom:14px}
/* theme the kit module to the mystery */
.mila-email{--mila-accent:var(--rose);text-align:left}
.gate .reviewer{margin-top:12px;font-size:11.5px;color:#6f6584}
.gate .reviewer a{color:var(--violet);cursor:pointer;text-decoration:underline}

/* restart */
.restartline{text-align:center;margin-top:18px}
.restartline button{background:none;border:none;color:var(--violet);font-size:13px;
  cursor:pointer;text-decoration:underline;letter-spacing:.04em}

/* progress dots */
#prog{display:flex;gap:6px;justify-content:center;padding:10px 0 2px;z-index:5}
#prog i{width:22px;height:3px;border-radius:2px;background:rgba(167,139,250,.22);transition:background .3s}
#prog i.done{background:var(--amber)}

/* footer nav hint */
#hintbar{z-index:5;text-align:center;font-size:10.5px;color:#6f6584;padding:8px;letter-spacing:.08em;
  border-top:1px solid rgba(167,139,250,.1);background:rgba(13,10,18,.72)}

@media (prefers-reduced-motion:reduce){
  .glitchwrap .rgb1,.glitchwrap .rgb2,.glitchwrap .static,
  .vn.playing .wave i,#hdr .dot,.tapnext{animation:none}
  .screen{transition:none}
}
