/* Paraplan · Stories grid, story viewer, profile B, Edit profile, Settings, QR code / scan / connect (social.js) · Sunshine & Ink */
.sx .ml-auto{margin-left:auto}.sx-between{display:flex;align-items:baseline;justify-content:space-between;gap:10px}.sx-center{text-align:center}
.sx-col{display:flex;flex-direction:column;align-items:center}.sx-two{display:flex;gap:10px}.sx-two .btn{height:48px;font-size:15px;flex:1}
#app.hasnav{padding-bottom:calc(112px + var(--sab))}
.sx .btn.secondary{background:var(--card);border:1.5px solid var(--line);color:var(--ink)}
/* bottom nav: Stories / + Record / Profile */
.sx-nav{position:fixed;left:0;right:0;bottom:0;z-index:50;background:rgba(250,246,239,.94);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-top:1px solid var(--line);height:calc(84px + var(--sab));padding-bottom:calc(14px + var(--sab));display:flex;justify-content:center}
.sx-nav .in{max-width:480px;width:100%;display:flex;align-items:center;justify-content:space-around}
.sx-nav a{display:flex;flex-direction:column;align-items:center;gap:3px;font-size:12px;font-weight:800;color:var(--muted);width:90px}
.sx-nav a.on{color:var(--ink)}
.sx-nav .recb{width:62px;height:62px;border-radius:31px;background:var(--sun);box-shadow:0 2px 0 #C99A12,0 6px 18px rgba(201,154,18,.35);display:flex;align-items:center;justify-content:center;margin-top:-24px;border:4px solid var(--paper)}
.sx-nav .recb i{width:20px;height:20px;border-radius:10px;background:#E5484D;display:block;box-shadow:0 0 0 4px rgba(255,255,255,.8)}
.sx-nav.dark{background:rgba(20,19,17,.92);border-top:1px solid var(--night-line)}.sx-nav.dark a{color:var(--night-muted)}.sx-nav.dark a.on{color:#fff}.sx-nav.dark .recb{border-color:var(--night)}
body.dev .sx-nav{padding-bottom:calc(22px + var(--sab))}
/* friend circles: + New, then one ring per connection who has an ask */
.sx-sum{font-weight:700}
.sx-srow{display:flex;gap:14px;overflow-x:auto;padding:4px 20px 2px;scrollbar-width:none}.sx-srow::-webkit-scrollbar{display:none}
.sbub{width:72px;flex:none;display:flex;flex-direction:column;align-items:center;gap:6px;font-size:12px;font-weight:700;text-align:center;position:relative;color:var(--ink)}
.sbub .ring{width:72px;height:72px;border-radius:36px;padding:3px;background:var(--line);display:block}
.sbub .ring.new{background:conic-gradient(from 200deg,var(--sun),#FF9F1C,#F4D35E,var(--sun))}
.sbub .ring>span{display:block;width:100%;height:100%;border-radius:50%;border:3px solid var(--paper);background:#2A2620 center/cover}
.sbub .ring>span.init{display:flex;align-items:center;justify-content:center;font-family:var(--display);font-weight:800;font-size:26px;letter-spacing:-.3px}
.sbub .addring{width:72px;height:72px;border-radius:36px;border:2px dashed #CDBFA5;display:flex;align-items:center;justify-content:center;background:var(--card)}
.sbub .plus{width:34px;height:34px;border-radius:17px;background:var(--sun);display:flex;align-items:center;justify-content:center;font-weight:800;font-size:24px;box-shadow:0 2px 0 #C99A12}
.sbub b{font-weight:700;width:76px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sbub .nbadge{position:absolute;right:-2px;top:52px;background:var(--ink);color:var(--sun);font-size:10px;font-weight:800;padding:2px 6px;border-radius:8px;border:2px solid var(--paper);white-space:nowrap}
.sx-seg{display:flex;gap:8px;padding:0 20px}.sx-seg button{height:34px;padding:0 14px;border-radius:17px;display:flex;align-items:center;font-weight:800;font-size:14px;background:var(--card);border:1px solid var(--line);color:var(--ink)}
.sx-seg button.on{background:var(--ink);color:#fff;border-color:var(--ink)}
/* story grid tiles */
.sx-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;padding:0 14px}
@media (min-width:900px){.sx-grid{grid-template-columns:repeat(3,1fr)}}
.sx-tile{display:block;border-radius:18px;overflow:hidden;position:relative;aspect-ratio:9/14;color:#fff;background:#2A2620 center/cover;box-shadow:0 1px 0 rgba(0,0,0,.04)}
.sx-tile.unread{box-shadow:0 0 0 3px var(--paper),0 0 0 6px var(--sun)}
.sx-tile .shade{position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,.28) 0,rgba(0,0,0,0) 30%,rgba(0,0,0,0) 45%,rgba(0,0,0,.78) 100%)}
.sx-tile .who{position:absolute;left:10px;right:10px;top:10px;display:flex;align-items:center;gap:7px;font-size:13px;font-weight:800;text-shadow:0 1px 6px rgba(0,0,0,.45)}
.sx-tile .who .avi{box-shadow:0 0 0 2px #fff}.sx-tile.unread .who .avi{box-shadow:0 0 0 2px var(--sun)}
.sx-tile .newdot{margin-left:auto;background:var(--sun);color:var(--ink);font-size:10px;font-weight:800;letter-spacing:.6px;padding:3px 7px;border-radius:9px;text-shadow:none;width:auto;height:auto}
.sx-tile .ask{position:absolute;left:10px;right:10px;bottom:34px;font-family:var(--display);font-weight:700;font-size:15.5px;line-height:1.2;letter-spacing:-.2px;text-shadow:0 1px 8px rgba(0,0,0,.5);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.sx-tile .meta{position:absolute;left:10px;right:10px;bottom:10px;display:flex;align-items:center;gap:6px;font-size:12px;font-weight:700;color:rgba(255,255,255,.9)}
.sx-tile .meta .dur{margin-left:auto;background:rgba(20,19,17,.6);padding:2px 7px;border-radius:8px;position:static;width:auto;height:auto}
.sx-empty{padding:18px 18px}.sx-empty .btn{height:48px}
.avi.sx-photo{background-size:cover!important;background-position:center!important;color:transparent!important}
.avi.busy{opacity:.5}
/* 5a/5b viewer: exactly one story fills the visible viewport. 100vh is taller than the screen on iOS
   and in the Capacitor web view, so the stage uses the dynamic viewport (svh, then dvh). Each card is
   that height, with no margin and square corners, so the next story cannot peek in at the bottom. */
.sx-stage{position:fixed;inset:0;max-width:480px;margin:0 auto;overflow:hidden;background:#000;height:100vh;height:100svh;height:100dvh}
.vcol{position:absolute;inset:0;height:100%;overflow-y:auto;scroll-snap-type:y mandatory;overscroll-behavior:contain;scrollbar-width:none;padding:0}.vcol::-webkit-scrollbar{display:none}
.scard{height:100%;margin:0;border-radius:0;position:relative;overflow:hidden;color:#fff;scroll-snap-align:start;scroll-snap-stop:always;background:#141311}
.scard .svid{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;background:#141311}
.shade2{position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,.4) 0,rgba(0,0,0,0) 20%,rgba(0,0,0,0) 50%,rgba(0,0,0,.8) 100%);pointer-events:none}
.scard .vhead{position:absolute;left:14px;right:60px;top:calc(66px + var(--sat));display:flex;align-items:center;gap:10px;text-shadow:0 1px 6px rgba(0,0,0,.4)}
.scard .vname{font-weight:800;font-size:15.5px;color:#fff}.scard .vsub{font-size:12.5px;font-weight:600;opacity:.8}
.scard .vfoot{position:absolute;left:0;right:0;bottom:0;padding:0 56px calc(22px + var(--sab)) 20px;display:flex;flex-direction:column;gap:12px}
.scard .caption{font-family:var(--display);font-size:21px;font-weight:700;line-height:1.3;letter-spacing:-.3px;text-shadow:0 1px 10px rgba(0,0,0,.6)}
.sx .chip{height:34px;padding:0 12px;border-radius:17px;background:rgba(255,255,255,.16);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);display:inline-flex;align-items:center;gap:6px;font-size:13.5px;font-weight:800;color:#fff;cursor:pointer}
.vbtns{display:flex;gap:10px;margin-top:2px}.vbtns .pill{height:48px}.vbtns .pill.primary{flex:1}
.sx .pill.glass{background:rgba(255,255,255,.16);color:#fff;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);padding:0 18px}
.recdot{width:14px;height:14px;border-radius:7px;background:#E5484D;display:inline-block}
.sx-stage .topbar{position:absolute;left:0;right:0;top:0;height:calc(64px + var(--sat));padding-top:var(--sat);z-index:5;display:flex;align-items:center;gap:8px;padding-left:12px;padding-right:12px;background:linear-gradient(180deg,rgba(0,0,0,.55),rgba(0,0,0,0));pointer-events:none}
.sx-stage .topbar>*{pointer-events:auto}
.posp{height:30px;padding:0 12px;border-radius:15px;background:rgba(20,19,17,.6);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);display:inline-flex;align-items:center;gap:3px;font-weight:800;font-size:14px;color:#fff;letter-spacing:.3px}.posp b{font-weight:800}
.rail{position:absolute;right:10px;top:50%;transform:translateY(-50%);z-index:5;display:flex;flex-direction:column;gap:6px;pointer-events:none}
.rail i{width:5px;height:18px;border-radius:3px;background:rgba(255,255,255,.35)}.rail i.on{height:34px;background:var(--sun)}
.peek{position:absolute;right:14px;bottom:calc(14px + var(--sab));z-index:6;cursor:pointer}
/* 4b profile */
.sx-ptop{gap:2px}.sx-ptop .h3{font-size:17px}
.ghostbtn{width:40px;height:40px;border-radius:20px;display:flex;align-items:center;justify-content:center;color:var(--ink)}.ghostbtn:active{background:rgba(0,0,0,.05)}
.sx-phead{display:flex;gap:14px;align-items:center;margin-top:4px}
.sx-phead .pname{font-family:var(--display);font-size:21px;font-weight:800;letter-spacing:-.3px;line-height:1.15}
.kv{font-size:14px;color:var(--muted);font-weight:600;margin-top:3px}.kv b{color:var(--ink);font-weight:800}
.psocs{display:flex;align-self:flex-start;margin-top:6px}.psoc{width:34px;height:34px;display:inline-flex;align-items:center;justify-content:center;border-radius:17px;color:var(--ink)}
.wlink{display:inline-flex;align-items:center;gap:5px;font-weight:700;font-size:13.5px;color:var(--ink);text-decoration:underline;text-underline-offset:3px;text-decoration-color:rgba(27,26,23,.35);max-width:100%}
.wlink span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pbio{font-size:15px;line-height:1.45;overflow-wrap:anywhere}
.prow{display:flex;gap:8px;align-items:baseline}.prow .label{font-size:10.5px;flex:none}.prow b{font-weight:700;overflow-wrap:anywhere}
.prow:has(.mchips){align-items:flex-start}
.mchips{display:flex;flex-wrap:wrap;gap:6px}.mchip{white-space:nowrap;height:26px;padding:0 10px;border-radius:13px;background:rgba(255,201,51,.22);display:inline-flex;align-items:center;font-weight:700;font-size:12.5px;color:var(--ink)}
.sx-plink{display:flex;align-items:center;gap:10px;color:inherit}
/* 6a edit profile */
.sx-savetop{font-weight:800;font-size:15px;color:var(--ink);height:44px;padding:0 6px}
.sx-photo-edit{display:flex;flex-direction:column;align-items:center;margin-top:4px}
.sx-photo-pick{position:relative;cursor:pointer}.sx-camb{position:absolute;right:-2px;bottom:2px;width:32px;height:32px;border-radius:16px;background:var(--ink);color:#fff;display:flex;align-items:center;justify-content:center;border:3px solid var(--paper)}
.sx-change{margin-top:10px;font-weight:800;text-decoration:underline;text-underline-offset:3px;cursor:pointer}
.sx-photo-err{min-height:0;margin-top:6px;text-align:center}
.sx-form{overflow:hidden}.sx-form .f{padding:10px 14px;border-top:1px solid var(--line)}.sx-form .f:first-child{border-top:0}
.sx-form .f.bad .fi{border-color:#B3261E}
.fl{font-size:13px;font-weight:800;color:var(--muted);display:flex;justify-content:space-between;margin-bottom:6px}.cnt{font-weight:600;color:#9A9284}
.fi{min-height:46px;width:100%;border-radius:12px;border:1.5px solid var(--line);background:var(--paper);padding:0 12px;display:flex;align-items:center;font:600 16px var(--ui);color:var(--ink);gap:8px;outline:0}
.fi:focus,.fi:focus-within{border-color:var(--ink);box-shadow:0 0 0 3px rgba(255,201,51,.45)}
.fi.area{padding:10px 12px;line-height:1.4;min-height:72px;resize:none;display:block}
.fi.icn input{flex:1;min-width:0;border:0;background:transparent;font:600 16px var(--ui);color:var(--ink);outline:0;height:44px}
.fi::placeholder,.fi input::placeholder{color:#9A9284;font-weight:500}
.sx-chips{display:flex;flex-wrap:wrap;gap:6px;justify-content:flex-start}.sx-chipadd{margin-top:8px}
.hchip{height:30px;padding:0 6px 0 12px;border-radius:15px;background:var(--sun-tint);border:1px solid #F2D77E;display:inline-flex;align-items:center;font-weight:800;font-size:13px;color:var(--ink)}
.hchip .hx{margin-left:2px;width:22px;height:22px;opacity:.55;font-size:12px;font-weight:800}
.hchip.add{background:var(--card);border:1.5px dashed #CDBFA5;color:var(--muted);padding:0 12px}
.sx-save-err{min-height:0;margin-top:8px}
/* 6b settings (.verified = the badge; inbox reply cards also carry .verified, so the badge rule skips .card) */
.set{overflow:hidden}
.set .it{display:flex;align-items:center;gap:12px;padding:0 14px;min-height:58px;border-top:1px solid var(--line);font-weight:700;font-size:16px;color:var(--ink);width:100%;text-align:left}
.set .it:first-child{border-top:0}
.set .it .ic{width:34px;height:34px;border-radius:11px;background:var(--sun-tint);display:flex;align-items:center;justify-content:center;flex:none}
.set .it .itl{min-width:0;display:flex;align-items:center;gap:6px;flex-wrap:wrap}.set .it .ro{font-weight:600}
.set .it .v{margin-left:auto;color:var(--muted);font-weight:600;font-size:14px;display:flex;align-items:center;gap:6px;text-align:right;flex:none;max-width:62%}
.set .it .chev{color:#9A9284;display:flex}
.set .it.danger{color:#B3261E}.set .it.danger .ic{background:#FBE3E1}
.tog{width:46px;height:28px;border-radius:14px;background:var(--green);position:relative;flex:none;transition:background .15s}.tog::after{content:'';position:absolute;right:3px;top:3px;width:22px;height:22px;border-radius:11px;background:#fff;transition:.15s}
.tog.off{background:#D8CFBF}.tog.off::after{right:21px}
.verified:not(.card){display:inline-flex;align-items:center;gap:4px;background:var(--green-tint);color:var(--green-ink);font-size:11.5px;font-weight:800;padding:3px 8px;border-radius:9px;white-space:nowrap}
/* 3a my code + 3b scan */
.tabs2{display:flex;background:var(--night-2);border:1px solid var(--night-line);border-radius:16px;padding:4px;margin:0 20px}
.tabs2 a{flex:1;height:40px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:15px;color:var(--night-muted)}
.tabs2 a.on{background:var(--sun);color:var(--ink)}
.tabs2.glass2{background:rgba(0,0,0,.45);border-color:rgba(255,255,255,.12)}
.qrcard{background:#fff;border-radius:28px;padding:22px;box-shadow:0 18px 50px rgba(0,0,0,.35);color:var(--ink);text-align:center;width:100%}
.sx-qrwho{display:flex;align-items:center;gap:10px;justify-content:center;text-align:left}
.qrbox{position:relative;width:240px;height:240px;margin:14px auto 0}.qrbox .qrsvg{width:100%;height:100%;display:block}
.qrbox .center{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:52px;height:52px;border-radius:14px;background:var(--sun);border:4px solid #fff;display:flex;align-items:center;justify-content:center;font-family:var(--display);font-weight:800;font-size:20px}
.urlpill{margin-top:12px;display:inline-flex;align-items:center;gap:6px;background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:7px 12px;font-weight:700;font-size:14px;max-width:100%}.urlpill span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.note{display:flex;gap:10px;align-items:flex-start;background:var(--sun-tint);border:1px solid #F2D77E;border-radius:14px;padding:12px 14px;font-size:14px;line-height:1.4;font-weight:600;width:100%;color:var(--ink)}
.night .note{background:rgba(255,201,51,.12);border-color:rgba(255,201,51,.35);color:#FFE7A3}
.iconbtn.nightb{background:var(--night-2);border:1px solid var(--night-line);color:#fff}
.sx-reset{font-size:14px;color:rgba(255,255,255,.88)}
.sx-scan{position:fixed;inset:0;max-width:480px;margin:0 auto;background:radial-gradient(120% 80% at 50% 40%,#5A5246 0,#2A2620 55%,#0E0D0B 100%);overflow:hidden;color:#fff}
.scanvid{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.vf{position:absolute;left:50%;top:44%;transform:translate(-50%,-50%);width:250px;height:250px;border-radius:28px;box-shadow:0 0 0 2000px rgba(0,0,0,.5)}
.vf i{position:absolute;width:46px;height:46px;border:5px solid var(--sun)}
.vf i:nth-child(1){left:-3px;top:-3px;border-right:0;border-bottom:0;border-radius:28px 0 0 0}.vf i:nth-child(2){right:-3px;top:-3px;border-left:0;border-bottom:0;border-radius:0 28px 0 0}
.vf i:nth-child(3){left:-3px;bottom:-3px;border-right:0;border-top:0;border-radius:0 0 0 28px}.vf i:nth-child(4){right:-3px;bottom:-3px;border-left:0;border-top:0;border-radius:0 0 28px 0}
.scanline{position:absolute;left:14px;right:14px;top:46%;height:3px;border-radius:2px;background:var(--sun);box-shadow:0 0 18px 4px rgba(255,201,51,.6);animation:sxscan 2.2s ease-in-out infinite alternate}
@keyframes sxscan{from{top:12%}to{top:86%}}
.scantop{position:absolute;top:calc(12px + var(--sat));left:0;right:0}.scantop .top{padding:0 16px}
.scanfoot{position:absolute;left:0;right:0;top:calc(44% + 150px);text-align:center;padding:0 30px}.scanfoot .h3{color:#fff}
.scanmsg{color:rgba(255,255,255,.75);font-weight:600}.sx-chiprow{display:flex;gap:10px;justify-content:center;margin-top:16px}
/* 3c-3g connect */
.cpair{display:flex;align-items:center;justify-content:center;margin:8px 0 4px}.cpair .avi{box-shadow:0 0 0 4px var(--paper)}
.clink{width:44px;height:44px;border-radius:22px;background:var(--sun);display:flex;align-items:center;justify-content:center;margin:0 -10px;z-index:2;box-shadow:0 0 0 4px var(--paper);flex:none}
.avi.sx-unknown{background:var(--card)!important;border:2px dashed #CDBFA5;color:#9A9284!important}
.cpair .okbadge{right:-4px;bottom:-2px;width:46px;height:46px}
.sx-scanbg{position:fixed;inset:0;background:radial-gradient(120% 80% at 50% 40%,#5A5246 0,#2A2620 55%,#0E0D0B 100%)}
.sx-scrim{position:fixed;inset:0;background:rgba(10,9,8,.55);z-index:55;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}
.sx-sheet{position:fixed;background:var(--paper) url(/wall-light.svg);background-size:320px 320px;padding:10px 20px calc(24px + var(--sab));z-index:60;border-radius:28px 28px 0 0}
.sx-sheet .grab{margin:0 auto 14px}.sx-sheet .lead{margin-top:8px;font-size:16px}
.sx-rowc{display:flex;gap:12px;align-items:center;padding:12px;color:var(--ink);text-align:left}
.sx-latest{display:flex;gap:12px;align-items:center;padding:12px;width:100%;text-align:left;color:var(--ink)}.sx-latest .thumb{width:56px;height:74px;border-radius:12px}
.sx-latest .label{display:block}.sx-latest .asktxt{display:-webkit-box;margin:6px 0 0}
.sx-cerr{min-height:0}
.confetti{position:absolute;inset:0;pointer-events:none}.confetti i{position:absolute;width:8px;height:14px;border-radius:2px;opacity:.9}
.sx-joinh{font-size:28px}
/* 3e connections */
.sx-search{height:48px;border-radius:14px;background:var(--card);border:1.5px solid var(--line);display:flex;align-items:center;gap:8px;padding:0 14px;color:#9A9284}
.sx-search input{flex:1;min-width:0;border:0;background:transparent;font:600 16px var(--ui);color:var(--ink);outline:0}
.clist .crow{min-height:66px;gap:10px}.crow-a{display:flex;align-items:center;gap:12px;flex:1;min-width:0;color:var(--ink)}
.cname{display:block;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.csub{display:block;font-weight:600}
.cmore{width:36px;height:36px;border-radius:18px;color:#9A9284;display:flex;align-items:center;justify-content:center;flex:none}
.sx-codelead{margin-top:18px;font-size:15px;line-height:1.5}
.sx-joinlead{font-size:16px}
/* Invite with a link sheet */
.sx-inv .sx-scrim{opacity:0;transition:opacity .2s}.sx-inv.on .sx-scrim{opacity:1}
.sx-invsheet{left:0;right:0;bottom:0;max-width:480px;margin:0 auto;box-shadow:0 -10px 30px rgba(0,0,0,.25);transform:translateY(105%);transition:transform .22s ease-out}.sx-inv.on .sx-invsheet{transform:none}
.sx-invpill{display:flex;align-items:center;gap:10px;background:#fff;border:1.5px solid #E8DFCF;border-radius:999px;padding:6px 6px 6px 16px;margin-top:18px}
.sx-invpill .u{flex:1;min-width:0;font-weight:700;font-size:16px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--ink)}
.sx-invpill .u svg{vertical-align:-4px;margin-right:6px;color:#9A9284}
.sx-invcopy{height:40px;padding:0 18px;border-radius:999px;background:var(--ink);color:#fff;font-weight:800;font-size:15px;border:0;flex:none;transition:background .15s}.sx-invcopy.ok{background:#2E7D4F}
.sx-invnote{text-align:center;margin-top:14px}
button.iconbtn,button.ghostbtn{border:0;background:none;padding:0;cursor:pointer;color:var(--ink)}
/* progressive profile fill-in card (own /profile) */
.pf{margin-top:16px;padding:16px 16px 14px;border-radius:20px;background:#fff;border:1.5px solid var(--line);box-shadow:0 2px 0 rgba(27,26,23,.04)}
.pf-top{display:flex;align-items:center;gap:10px;margin-bottom:10px}
.pf-dots{display:flex;gap:4px;flex:1}.pf-dots i{height:4px;flex:1;border-radius:2px;background:#EEE6D8}.pf-dots i.d{background:var(--green)}.pf-dots i.c{background:var(--sun)}
.pf-step{font-size:12px;font-weight:800;color:var(--muted);white-space:nowrap;letter-spacing:.2px}
.pf-q{font-family:var(--display);font-weight:800;font-size:19px;line-height:1.2;letter-spacing:-.3px;color:var(--ink)}
.pf-sub{font-size:13.5px;line-height:1.4;color:var(--muted);margin-top:4px}
.pf .input{height:48px;font-size:16px;border-radius:14px;margin-top:12px;padding:0 14px;cursor:text}
.pf .input:focus-within{border:2px solid var(--ink);box-shadow:0 0 0 4px rgba(255,201,51,.45);padding:0 13.5px}
.pf .input.bad{border-color:#B3261E}
.pf .input .pre{color:#9A9284;font-weight:600;white-space:nowrap}
.pf .input input{flex:1;min-width:0;height:100%;border:0;background:transparent;font:600 16px var(--ui);color:var(--ink);outline:0;padding:0}
.pf .input input::placeholder{color:#9A9284;font-weight:500}
.pf-err:empty{display:none}.pf-err{margin-top:8px}
.pf-act{display:flex;align-items:center;gap:14px;margin-top:12px}
.pf-save{height:44px;padding:0 26px;border-radius:999px;background:var(--sun);color:var(--ink);font-weight:800;font-size:16px;border:0;box-shadow:0 2px 0 #C99A12;font-family:var(--ui);cursor:pointer}
.pf-save:disabled{opacity:.6}
.pf-skip{font:700 14px var(--ui);color:var(--muted);text-decoration:underline;text-underline-offset:3px;background:none;border:0;padding:6px 2px;cursor:pointer}
.pf-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px}.pf-chips:empty{display:none}
.pf-chip{height:32px;padding:0 8px 0 12px;border-radius:16px;background:rgba(255,201,51,.28);display:inline-flex;align-items:center;gap:6px;font-weight:700;font-size:14px;color:var(--ink)}
.pf-chip button{width:18px;height:18px;border-radius:9px;background:rgba(27,26,23,.12);display:inline-flex;align-items:center;justify-content:center;font-size:12px;line-height:1;border:0;padding:0;color:var(--ink);cursor:pointer}
.pf-sug{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}.pf-sug button{height:30px;padding:0 11px;border-radius:15px;border:1.5px dashed #D9CEB9;background:transparent;display:inline-flex;align-items:center;font:700 13px var(--ui);color:var(--muted);cursor:pointer}
.pf-add{margin-left:auto;font:800 14px var(--ui);color:var(--ink);background:none;border:0;padding:6px 0 6px 10px;cursor:pointer}
/* friends-only profile: locked page for strangers / logged out */
.sx-locked{text-align:center;align-items:center}.sx-locked .lead{max-width:300px;margin-left:auto;margin-right:auto}.sx-locked .btn{max-width:320px;width:100%}
.sx-lock{position:absolute;right:-4px;bottom:-4px;width:30px;height:30px;border-radius:50%;background:var(--sun);border:2.5px solid var(--paper);display:grid;place-items:center}

/* Stories time window (8–9 PM local): open banner, locked feed, lock sheet, hearts */
.banner{margin:2px 20px 8px;border-radius:18px;padding:12px 16px;display:flex;align-items:center;gap:12px}
.banner .ic{width:40px;height:40px;border-radius:20px;display:flex;align-items:center;justify-content:center;flex:none}
.banner b{display:block;font-family:var(--display);font-weight:800;font-size:17px;letter-spacing:-.2px}
.banner small{display:block;font-size:13px;font-weight:600;margin-top:2px}
.banner .cd{margin-left:auto;font-family:var(--display);font-weight:800;font-size:22px;letter-spacing:-.3px;white-space:nowrap}
.banner.shut{background:var(--ink);color:#fff}.banner.shut .ic{background:var(--sun);color:var(--ink)}.banner.shut small{color:var(--night-muted)}.banner.shut .cd{color:var(--sun)}
.banner.live{background:var(--green-tint);border:1px solid #B9E6D1;color:var(--green-ink)}
.banner.live .ic{background:var(--green);color:#fff}
.banner.live small{color:var(--green-ink);opacity:.8}
.locked .sbub.lk .ring{background:var(--line)}
.locked .sbub.lk .ring>span{filter:blur(3px) saturate(.6);opacity:.85}
.sbub .lkb{position:absolute;right:0;top:50px;width:24px;height:24px;border-radius:12px;background:var(--ink);border:2px solid var(--paper);display:flex;align-items:center;justify-content:center;color:var(--sun);pointer-events:none}
.sx-tile .bgimg{position:absolute;inset:0;background:center/cover}
.locked .sx-tile .bgimg{filter:blur(9px) saturate(.6);transform:scale(1.2)}
.locked .sx-tile .shade{background:rgba(20,19,17,.38)}
.locked .sx-tile.unread{box-shadow:0 0 0 3px var(--paper),0 0 0 6px var(--line)}
.sx-tile .lkc{position:absolute;left:50%;top:46%;transform:translate(-50%,-50%);width:48px;height:48px;border-radius:24px;background:rgba(255,255,255,.94);display:flex;align-items:center;justify-content:center;box-shadow:0 4px 14px rgba(0,0,0,.25);color:var(--ink);pointer-events:none}
.locked .sx-tile .ask{filter:blur(5px);opacity:.75}
.locked .sx-tile .who .avi{filter:blur(2px)}
.sx-lockui[hidden]{display:none!important}
.sx-lockui .scrim2{position:fixed;inset:0;background:rgba(10,9,8,.55);z-index:70;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}
.sx-lockui .lsheet{position:fixed;left:0;right:0;bottom:0;z-index:80;max-width:480px;margin:0 auto;background:var(--paper) url(/wall-light.svg);background-size:320px 320px;border-radius:28px 28px 0 0;padding:10px 24px calc(34px + var(--sab));text-align:center;box-shadow:0 -10px 30px rgba(0,0,0,.25)}
.sx-lockui .lsheet .grab{width:44px;height:5px;border-radius:3px;background:#D8CFBF;margin:0 auto 22px}
.sx-lockui .lsheet .big{width:64px;height:64px;border-radius:32px;background:var(--sun);box-shadow:0 2px 0 #C99A12;display:flex;align-items:center;justify-content:center;margin:0 auto 16px;color:var(--ink)}
.sx-lockui .lsheet .h2{font-size:26px}
.sx-lockui .lsheet .cdpill{display:inline-flex;align-items:center;gap:8px;margin-top:18px;height:38px;padding:0 16px;border-radius:19px;background:var(--card);border:1px solid var(--line);font-weight:800;font-size:15px;color:var(--ink)}
.sx-lockui .lsheet .btn{margin-top:22px;transition:transform .08s,box-shadow .08s,background .08s}
.sx-lockui.tapped .lsheet .btn{transform:scale(.97);box-shadow:0 1px 0 #C99A12;background:#F5BD1F}
.sx-hearts{position:fixed;inset:0;z-index:90;pointer-events:none;overflow:hidden}
.sx-hearts i{position:absolute;width:28px;height:28px;margin:-14px 0 0 -14px;background:center/contain no-repeat;animation:sx-heart 1.1s ease-out forwards;will-change:transform,opacity}
@keyframes sx-heart{0%{transform:translate(0,0) scale(1) rotate(0deg);opacity:1}100%{transform:translate(var(--dx),var(--dy)) scale(.45) rotate(var(--rot));opacity:0}}
/* Steps bonus (flagged iOS test accounts): settings subtitle + the +1 min capsule above the tab bar */
.set .it .itl.steps-name{flex-direction:column;align-items:flex-start;gap:1px;flex-wrap:nowrap}
.set .it .steps-name small{font-size:13px;font-weight:600;color:var(--muted);line-height:1.25}
.set .it .v.steps-val{color:var(--ink);font-weight:800}
.set.steps-off .steps-extra{display:none}
.sx-stepsnote[hidden],.sx-stepshint[hidden],.sx-stephint[hidden]{display:none}
.sx-stephint{margin:0 20px 8px;font-size:13px;font-weight:600;line-height:1.35}
.sx-steptoast{position:fixed;left:50%;bottom:calc(96px + var(--sab));z-index:60;display:flex;align-items:center;gap:8px;background:#fff;color:var(--ink);font-weight:800;font-size:15px;line-height:1.2;padding:10px 16px 10px 12px;border-radius:999px;box-shadow:0 8px 28px rgba(27,26,23,.18);pointer-events:none;opacity:0;transform:translateX(-50%) translateY(8px);transition:opacity .2s ease, transform .2s ease}
.sx-steptoast[hidden]{display:none}
.sx-steptoast.on{opacity:1;transform:translateX(-50%) translateY(0)}
.sx-steptoast .mark{width:22px;height:22px;border-radius:11px;background:var(--sun);box-shadow:0 1px 0 #C99A12;flex:none}
@media (prefers-reduced-motion: reduce){.sx-steptoast{transition:none}}
