  :root{
    --bg:#1a1533;--surf:#241d45;--surf2:#2e2455;--line:#3f3570;--ink:#f4f1fb;--dim:#b3a9d6;
    --acc:#9d8dff;--acc2:#c9b3f5;--rose:#f5b3c6;--teal:#7cf0df;--gold:#f7cf7e;--red:#ff8aa2;--lime:#b7ea8c;--gc:#9d8dff;
  }
  *{box-sizing:border-box;-webkit-tap-highlight-color:transparent;-webkit-font-smoothing:antialiased}
  html,body{margin:0;height:100%;background:#140f28;color:var(--ink);
    font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif}
  #phone{max-width:440px;margin:0 auto;min-height:100vh;position:relative;overflow:hidden;
    background:radial-gradient(760px 520px at 80% -8%,#40316e 0%,var(--bg) 60%)}
  .scroll{height:100vh;overflow-y:auto;padding-bottom:30px}
  .scroll::-webkit-scrollbar{width:0}
  button{font-family:inherit;cursor:pointer;border:none}
  #onb{position:absolute;inset:0;z-index:40;background:radial-gradient(640px 520px at 50% 0%,#3d2f64,#1a1533 72%);
    display:flex;flex-direction:column;padding:34px 26px;overflow-y:auto}
  .obrand{font-size:30px;font-weight:900;letter-spacing:.02em;text-align:center;margin-top:20px}
  .obrand i{color:var(--acc);font-style:normal}
  .otag{text-align:center;color:var(--dim);font-size:14px;margin:8px 0 4px;line-height:1.6}
  .ostep{margin-top:26px;animation:fade .5s}
  @keyframes fade{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
  .ostep h2{font-size:20px;margin:0 0 4px;letter-spacing:-.01em}
  .ostep p{color:var(--dim);font-size:13.5px;margin:0 0 16px;line-height:1.6}
  .howrow{display:flex;gap:12px;align-items:flex-start;margin:13px 0}
  .howrow .em{font-size:22px;flex:none;width:30px;text-align:center}
  .howrow b{font-size:14.5px}
  .howrow span{display:block;color:var(--dim);font-size:12.5px;line-height:1.5;margin-top:2px}
  .moodgrid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:6px 0 8px}
  .mood{background:var(--surf);border:1.5px solid var(--line);border-radius:15px;padding:15px 14px;text-align:left;transition:.15s;color:var(--ink)}
  .mood:hover{border-color:var(--acc)}
  .mood.sel{border-color:var(--acc);background:var(--surf2)}
  .mood .e{font-size:24px}
  .mood b{display:block;font-size:14.5px;margin-top:6px}
  .mood span{font-size:11.5px;color:var(--dim)}
  .obtn{margin-top:20px;width:100%;background:linear-gradient(90deg,var(--acc),var(--acc2));color:#140c2e;
    font-weight:900;font-size:16px;padding:16px;border-radius:15px;transition:filter .1s}
  .obtn:disabled{opacity:.4}
  .obtn:active{filter:brightness(1.1)}
  .agegate{display:flex;align-items:center;gap:11px;background:var(--surf);border:1px solid var(--line);
    border-radius:13px;padding:14px;margin-top:6px;cursor:pointer}
  .agegate .box{width:24px;height:24px;border-radius:7px;border:2px solid var(--dim);flex:none;display:flex;align-items:center;justify-content:center;font-weight:900;color:#140c2e}
  .agegate.on .box{background:var(--teal);border-color:var(--teal)}
  .agegate p{margin:0;font-size:13px;line-height:1.5}
  .agegate small{color:var(--dim);font-size:11px}
  .odots{display:flex;gap:6px;justify-content:center;margin-top:22px}
  .odots i{width:7px;height:7px;border-radius:50%;background:var(--line)}
  .odots i.on{background:var(--acc);width:20px;border-radius:4px}
  .hdr{position:sticky;top:0;z-index:20;background:rgba(30,24,58,.85);backdrop-filter:blur(14px);
    padding:13px 16px 10px;border-bottom:1px solid var(--line)}
  .hrow{display:flex;align-items:center;justify-content:space-between}
  .hlogo{font-size:19px;font-weight:900;letter-spacing:.02em}
  .hlogo i{color:var(--acc);font-style:normal}
  .hicons{display:flex;gap:8px;align-items:center}
  .streak{background:var(--surf2);border:1px solid var(--line);border-radius:999px;padding:5px 11px;font-size:12.5px;font-weight:800;color:var(--gold)}
  .iconbtn{background:var(--surf2);border:1px solid var(--line);border-radius:11px;width:36px;height:36px;font-size:16px;color:var(--ink);display:flex;align-items:center;justify-content:center}
  .livebar{display:flex;align-items:center;gap:7px;margin-top:9px;font-size:12px;color:var(--dim)}
  .livebar .dot{width:7px;height:7px;border-radius:50%;background:var(--teal);animation:pulse 1.6s infinite}
  @keyframes pulse{0%,100%{opacity:1}50%{opacity:.3}}
  .livebar b{color:var(--ink)}
  .chiprow{display:flex;gap:7px;overflow-x:auto;padding:11px 16px 3px}
  .chiprow::-webkit-scrollbar{height:0}
  .chip{flex:none;background:var(--surf);border:1px solid var(--line);color:var(--dim);border-radius:999px;padding:7px 14px;font-size:12.5px;font-weight:700}
  .chip.on{background:var(--acc);border-color:var(--acc);color:#140c2e}
  .chiprow.gen .chip{padding:6px 12px;font-size:11.5px}
  .foryou{padding:14px 16px 4px;font-size:12px;color:var(--acc2);font-weight:800;letter-spacing:.03em}
  .foryou span{color:var(--dim);font-weight:500}
  .feed{padding:8px 14px 0;display:flex;flex-direction:column;gap:11px}
  .card{background:linear-gradient(160deg,#2c2456,#241d47);border:1px solid var(--line);border-radius:18px;
    padding:15px 16px 13px;position:relative;overflow:hidden;animation:cin .4s}
  @keyframes cin{from{opacity:0;transform:scale(.97)}to{opacity:1;transform:none}}
  .card.dying{animation:cout .5s forwards}
  @keyframes cout{to{opacity:0;transform:scale(.94);filter:blur(3px)}}
  .card .top{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}
  .gtag{font-size:10px;font-weight:900;letter-spacing:.07em;color:var(--gc);text-transform:uppercase}
  .fmt{font-size:10.5px;color:var(--dim)}
  .ctitle{font-size:16px;font-weight:800;line-height:1.4;letter-spacing:-.01em}
  .cchips{display:flex;gap:6px;flex-wrap:wrap;margin:10px 0 11px}
  .cchips span{font-size:10.5px;background:#2a2358;color:#cabef0;border-radius:7px;padding:3px 9px;font-weight:700}
  .cchips span.t{background:#33285f;color:var(--gold)}
  .cchips span.w{background:#1f3a3d;color:var(--teal)}
  .cfoot{display:flex;justify-content:space-between;align-items:center}
  .wait{font-size:11px;color:var(--dim);display:flex;align-items:center;gap:6px}
  .wd{width:6px;height:6px;border-radius:50%;background:var(--gold)}.wd.ai{background:var(--teal)}
  .enter{background:var(--gc,#9d8dff);color:#140b2e;font-weight:900;font-size:12.5px;padding:9px 16px;border-radius:11px}
  .life{font-size:10.5px;color:#8479ad;margin-top:9px;display:flex;align-items:center;gap:6px}
  .life .lb{flex:1;height:3px;background:#2e2652;border-radius:2px;overflow:hidden}
  .life .lb i{display:block;height:100%;background:var(--gc);width:100%}
  .hot{position:absolute;top:0;right:0;background:var(--red);color:#3a0e1c;font-size:9.5px;font-weight:900;padding:3px 10px;border-radius:0 17px 0 11px}
  .overlay{position:absolute;inset:0;z-index:50;background:rgba(10,8,22,.55);backdrop-filter:blur(6px);display:none}
  .overlay.on{display:block}
  .sheet{position:absolute;inset:0;background:#1d1742;display:flex;flex-direction:column;animation:up .28s}
  @keyframes up{from{transform:translateY(40px);opacity:0}to{transform:none;opacity:1}}
  .rh{padding:14px 16px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;gap:10px}
  .rh .t{font-size:14.5px;font-weight:800;line-height:1.35}
  .rh .sub{font-size:11px;color:var(--dim);margin-top:3px}.rh .sub b{color:var(--acc2)}
  .rh .rt{text-align:right}
  .rh .timer{font-size:12px;color:var(--gold);font-weight:800;font-variant-numeric:tabular-nums}
  .rh .temp{font-size:11px;color:var(--teal);font-weight:800;margin-top:2px}
  .chat{flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:11px}
  .sys{align-self:center;font-size:11px;color:var(--dim);background:#2a2150;border-radius:999px;padding:5px 14px;text-align:center;line-height:1.5;max-width:90%}
  .msg{max-width:80%;padding:10px 14px;border-radius:16px;font-size:14px;line-height:1.55}
  .them{align-self:flex-start;background:#332a5e;border-bottom-left-radius:5px}
  .me{align-self:flex-end;background:linear-gradient(120deg,var(--acc),var(--acc2));color:#140b2e;border-bottom-right-radius:5px;font-weight:600}
  .typing{align-self:flex-start;color:var(--dim);font-size:12px;padding:2px 6px}
  .typing i{animation:pulse 1s infinite;font-style:normal}
  .wmsg{align-self:center;background:#3a1a28;border:1px solid #6a2437;color:#f7b3c2;font-size:11.5px;border-radius:11px;padding:8px 14px;text-align:center;line-height:1.5}
  .rf{padding:10px 12px;border-top:1px solid var(--line);display:flex;gap:8px}
  .rf input{flex:1;background:#2a2150;border:1px solid var(--line);border-radius:12px;color:var(--ink);padding:12px 14px;font-size:14px;outline:none;font-family:inherit}
  .rf input:focus{border-color:var(--acc)}
  .rf button{border-radius:12px;padding:0 15px;font-weight:800;font-size:12.5px}
  .send{background:var(--acc);color:#140b2e}.rep{background:#3a1a28;color:var(--red)}.lv{background:#2a2150;color:var(--dim)}
  .ritual{position:absolute;inset:0;z-index:55;background:radial-gradient(520px 520px at 50% 20%,#332963,#1a1533 75%);
    display:none;flex-direction:column;align-items:center;justify-content:flex-start;padding:36px 24px;overflow-y:auto}
  .ritual.on{display:flex}
  .ritual h3{margin:14px 0 4px;font-size:20px;text-align:center;line-height:1.4}
  .ritual .p{color:var(--dim);font-size:13px;text-align:center;line-height:1.65;margin:0 0 18px}
  .votes{display:flex;gap:12px;width:100%;max-width:340px}
  .votes button{flex:1;border-radius:16px;padding:20px 10px;font-weight:800;font-size:15px}
  .vh{background:linear-gradient(150deg,var(--rose),#e07d9a);color:#3a0e1c}
  .va{background:linear-gradient(150deg,var(--teal),#3fbfae);color:#052a26}
  .glow{width:100%;max-width:320px;border-radius:22px;overflow:hidden;margin-top:6px;
    background:linear-gradient(160deg,#2a2150,#241d47);border:1px solid #3b3169;display:none}
  .glow.on{display:block;animation:fade .4s}
  #glowCanvas{width:100%;display:block}
  .gactions{display:flex;gap:10px;width:100%;max-width:320px;margin-top:14px}
  .gactions button{flex:1;border-radius:13px;padding:13px;font-weight:800;font-size:13px}
  .gsave{background:var(--gold);color:#3a2a05}.gcopy{background:var(--surf2);color:var(--ink);border:1px solid var(--line)}
  .rbtns{display:flex;flex-direction:column;gap:10px;width:100%;max-width:320px;margin-top:14px}
  .reunion{background:var(--surf2);border:1px solid var(--acc);color:var(--ink);border-radius:14px;padding:14px;font-weight:800;font-size:14px}
  .invnudge{background:linear-gradient(90deg,#2e2358,#3a2358);border:1px solid #4a3a75;border-radius:14px;padding:14px;text-align:center}
  .invnudge p{margin:0 0 10px;font-size:13px;line-height:1.5}
  .invnudge button{background:var(--acc);color:#140b2e;border-radius:11px;padding:10px 18px;font-weight:800;font-size:13px}
  .rclose{color:var(--dim);background:none;font-size:13px;padding:8px;margin-top:4px}
  .modal{position:absolute;inset:0;z-index:60;background:rgba(10,8,22,.72);backdrop-filter:blur(8px);display:none;align-items:flex-end}
  .modal.on{display:flex}
  .msheet{width:100%;background:#241d47;border-radius:22px 22px 0 0;border-top:1px solid var(--line);padding:22px 22px 30px;animation:up .3s}
  .msheet h3{margin:0 0 4px;font-size:19px}
  .msheet .sub{color:var(--dim);font-size:13px;margin:0 0 18px;line-height:1.5}
  .linkbox{display:flex;gap:8px;margin-bottom:16px}
  .linkbox input{flex:1;background:#2a2150;border:1px solid var(--line);border-radius:12px;color:var(--ink);padding:13px;font-size:13px;font-family:ui-monospace,monospace}
  .linkbox button{background:var(--acc);color:#140b2e;border-radius:12px;padding:0 18px;font-weight:800;font-size:13px}
  .refprog{background:#2a2150;border-radius:14px;padding:15px 16px}
  .refprog .rr{display:flex;justify-content:space-between;font-size:13px;margin-bottom:9px}
  .refprog .rr b{color:var(--teal)}
  .refbar{height:9px;background:#33285f;border-radius:5px;overflow:hidden}
  .refbar i{display:block;height:100%;background:linear-gradient(90deg,var(--acc),var(--teal))}
  .refnote{font-size:11.5px;color:var(--dim);margin-top:10px;line-height:1.5}
  .mclose{width:100%;margin-top:16px;background:var(--surf2);color:var(--dim);border:1px solid var(--line);border-radius:13px;padding:13px;font-weight:700}
  .toast{position:fixed;left:50%;top:16px;transform:translateX(-50%);background:#2e2558;border:1px solid var(--acc);color:var(--ink);padding:10px 18px;border-radius:12px;font-size:12.5px;font-weight:700;opacity:0;transition:.3s;z-index:99;pointer-events:none;max-width:92%;text-align:center;line-height:1.5}
  .toast.on{opacity:1;top:24px}
  .demonote{margin-top:18px;background:#2a2150;border:1px solid #4a3f78;border-radius:12px;
    padding:12px 14px;font-size:11.5px;line-height:1.6;color:var(--dim);text-align:left}
  .demonote b{color:var(--acc2);font-weight:800}
  .footnote{margin:20px 16px 6px;font-size:10.5px;line-height:1.6;color:#8a80b0;text-align:center}
  .dropbar{margin:12px 14px 2px;background:linear-gradient(135deg,#3f2f75,#2e2358);border:1px solid #57489a;
    border-radius:16px;padding:13px 14px}
  .droptitle{font-size:13px;font-weight:800;color:#ece6ff;margin-bottom:9px}
  .droptitle span{color:var(--acc2)}
  .droprow{display:flex;gap:7px}
  .droprow input{flex:1;min-width:0;background:#1c1640;border:1px solid #52468a;border-radius:11px;color:var(--ink);
    padding:11px 12px;font-size:13px;outline:none;font-family:inherit}
  .droprow input:focus{border-color:var(--acc)}
  .dropcam,.dropgo{border-radius:11px;font-weight:800;font-size:13px;padding:0 13px;flex:none}
  .dropcam{background:var(--surf2);color:var(--ink);border:1px solid var(--line)}
  .dropgo{background:linear-gradient(90deg,var(--acc),var(--acc2));color:#170f33}
  .drophint{font-size:10.5px;color:var(--dim);margin-top:8px;line-height:1.5}
  .cxcard{align-self:stretch;background:#2a2358;border:1px solid var(--line);border-radius:14px;overflow:hidden;margin-bottom:4px}
  .cxcard img{width:100%;max-height:190px;object-fit:cover;display:block}
  .cxbody{padding:11px 13px}
  .cxsite{font-size:10.5px;color:var(--acc2);font-weight:800;text-transform:uppercase;letter-spacing:.04em}
  .cxtitle{font-size:14px;font-weight:800;line-height:1.35;margin-top:3px;color:var(--ink)}
  .cxdesc{font-size:11.5px;color:var(--dim);line-height:1.5;margin-top:4px}
