*{box-sizing:border-box;margin:0;padding:0}
:root{--bg:#000;--card:#0f1115;--line:#2a2d34;--txt:#fff;--muted:#a1a1aa;--accent:#1DA1F2}
html,body{background:var(--bg);color:var(--txt);font-family:-apple-system,BlinkMacSystemFont,"SF Pro Text","Inter",system-ui,sans-serif;-webkit-font-smoothing:antialiased}
body{min-height:100vh;max-width:480px;margin:0 auto;padding-bottom:calc(32px + env(safe-area-inset-bottom))}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}

/* cover + profile photo */
.hero{position:relative;display:flex;flex-direction:column;align-items:center;padding:0 16px 22px;min-height:52vh;justify-content:flex-end}
.cover{position:absolute;inset:0;background:#1a1d24 center/cover no-repeat}
.cover::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,.05) 0%,rgba(0,0,0,.25) 45%,#000 100%)}
.cover.empty{background:radial-gradient(120% 80% at 50% 0%,#3b2a4a 0%,#111 60%,#000 100%)}
.avatar{position:relative;z-index:1;width:132px;height:132px;border-radius:50%;padding:4px;background:#2a2d34;display:grid;place-items:center}
.avatar.ring{background:conic-gradient(from 200deg,#FEDA75,#FA7E1E,#D62976,#962FBF,#4F5BD5,#D62976,#FEDA75);animation:spin 6s linear infinite}
.avatar img,.avatar .initial{width:100%;height:100%;border-radius:50%;border:3px solid #000;object-fit:cover;display:grid;place-items:center;background:#1f2229;font-size:52px;font-weight:700;animation:none}
.avatar.ring img,.avatar.ring .initial{animation:spin 6s linear infinite reverse}
@keyframes spin{to{transform:rotate(360deg)}}
.avatar:disabled{cursor:default}
.hero h1{position:relative;z-index:1;margin-top:16px;font-size:28px;font-weight:800;display:flex;align-items:center;gap:6px;letter-spacing:-.01em;text-align:center}
.tick{width:22px;height:22px;flex:none}
.bio{position:relative;z-index:1;margin-top:6px;color:var(--muted);font-size:15px;text-align:center}

/* buttons */
main{padding:4px 16px 0;display:flex;flex-direction:column;gap:12px}
.btn{display:flex;align-items:center;gap:14px;width:100%;padding:14px 16px;border-radius:14px;background:var(--card);border:1px solid var(--line);color:var(--txt);text-decoration:none;text-align:left;transition:transform .12s,border-color .2s}
.btn:active{transform:scale(.98)}
.btn.off{opacity:.38;filter:grayscale(.6);cursor:not-allowed;pointer-events:none}
.btn.locked .chev{display:none}
.btn.locked::after{content:"🔒";font-size:18px;flex:none}
.btn.locked.open::after{content:""}.btn.locked.open .chev{display:block}
.btn.hl{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent) inset}
.tile{flex:none;width:52px;height:52px;border-radius:14px;display:grid;place-items:center}
.tile svg{width:28px;height:28px}
.txt{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}
.txt b{font-size:17px;font-weight:700}
.status{display:flex;align-items:center;gap:7px;color:var(--muted);font-size:13.5px}
.dot{width:7px;height:7px;border-radius:50%;flex:none}
.dot.green{background:#22C55E;box-shadow:0 0 0 0 rgba(34,197,94,.6);animation:pulse 1.8s infinite}
.dot.blue{background:#38BDF8;box-shadow:0 0 0 0 rgba(56,189,248,.7);animation:pulseb 1.6s infinite}
.status.blue{color:#7DD3FC;font-weight:600}
@keyframes pulseb{70%{box-shadow:0 0 0 7px rgba(56,189,248,0)}100%{box-shadow:0 0 0 0 rgba(56,189,248,0)}}
.dot.red{background:#EF4444}
@keyframes pulse{70%{box-shadow:0 0 0 7px rgba(34,197,94,0)}100%{box-shadow:0 0 0 0 rgba(34,197,94,0)}}
.chev{width:20px;height:20px;color:#8b8f98;flex:none;transition:transform .2s}
.cat .catbtn[aria-expanded=true] .chev{transform:rotate(90deg)}
.sub{display:flex;flex-direction:column;gap:10px;padding:10px 0 2px 14px;border-left:2px solid var(--line);margin:8px 0 0 26px}
.sub[hidden]{display:none}
.sub .tile{width:42px;height:42px;border-radius:12px}.sub .tile svg{width:22px;height:22px}
footer{margin:28px 16px 0;padding-top:20px;border-top:1px solid #1f2229;text-align:center;color:#71717a;font-size:12px;letter-spacing:.18em;text-transform:uppercase}

/* sensitive-content gate */
.gate{position:fixed;inset:0;z-index:20;display:grid;place-items:center;padding:24px;background:rgba(0,0,0,.35);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}
.gate[hidden]{display:none}
.gate-box{max-width:360px;text-align:center}
.gate h2{font-size:34px;line-height:1.05;font-weight:800}
.gate p{margin-top:14px;font-size:16px;line-height:1.4;color:#e4e4e7}
.gate-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:22px}
.gate-actions button{padding:16px 10px;border-radius:12px;font-size:16px;font-weight:600}
.gate .back{background:#3f3f46}.gate .go{background:#fff;color:#000}

/* stories */
.stories{position:fixed;inset:0;z-index:30;background:#000;display:flex;flex-direction:column}
.stories[hidden]{display:none}
.s-bars{position:absolute;top:calc(10px + env(safe-area-inset-top));left:10px;right:10px;display:flex;gap:4px;z-index:3}
.s-bar{flex:1;height:3px;border-radius:2px;background:rgba(255,255,255,.35);overflow:hidden}
.s-bar i{display:block;height:100%;width:0;background:#fff}
.s-head{position:absolute;top:calc(22px + env(safe-area-inset-top));left:12px;right:12px;display:flex;align-items:center;gap:10px;z-index:3;font-weight:700;font-size:15px;text-shadow:0 1px 3px rgba(0,0,0,.5)}
.s-head img,.s-head .initial{width:34px;height:34px;border-radius:50%;object-fit:cover;background:#333;display:grid;place-items:center;font-size:15px}
.s-close{margin-left:auto;font-size:30px;line-height:1;padding:0 6px}
.s-media{flex:1;display:grid;place-items:center;overflow:hidden}
.s-media img,.s-media video{width:100%;height:100%;object-fit:cover}
.s-tap{position:absolute;top:70px;bottom:90px;width:40%;z-index:2}
.s-tap.l{left:0}.s-tap.r{right:0;width:60%}
.s-cap{position:absolute;left:16px;right:16px;bottom:calc(84px + env(safe-area-inset-bottom));text-align:center;font-size:17px;font-weight:600;text-shadow:0 1px 4px rgba(0,0,0,.7);z-index:3}
.s-link{position:absolute;left:50%;transform:translateX(-50%);bottom:calc(26px + env(safe-area-inset-bottom));z-index:3;background:#fff;color:#000;padding:12px 22px;border-radius:999px;font-weight:700;text-decoration:none}
