/* Afterdark Archives — shared styles for the community pages (Lounge, profiles, account). Black, blood red, white. */
:root{
  --void:#000;--crypt:#0b0909;--line:#3a0a0f;--blood:#d4111f;--ember:#ff2b3a;--bone:#fff;--ash:#b3abab;
  --f-gothic:"Grenze Gotisch","Old English Text MT",Georgia,serif;
  --f-body:"EB Garamond",Garamond,Georgia,serif;
  --f-term:"VT323","Lucida Console","Courier New",monospace;
  color-scheme:dark;
}
*{box-sizing:border-box}
html{background:var(--void)}
body{margin:0;background:var(--void);color:var(--bone);font-family:var(--f-body);font-size:1.12rem;line-height:1.5;min-height:100vh}
a{color:var(--bone);text-underline-offset:3px;text-decoration-color:var(--blood)}
a:hover{color:var(--ember)}
:focus-visible{outline:2px dashed var(--ember);outline-offset:3px}
img{display:block;max-width:100%}
h1,h2,h3{margin:0;font-family:var(--f-gothic);font-weight:800;line-height:1.05;text-wrap:balance}
h1{font-size:clamp(2.4rem,6vw,3.6rem)}
h2{font-size:1.9rem}
h3{font-size:1.35rem;font-weight:700}
p{margin:0}
[hidden]{display:none!important}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
.wrap{max-width:1180px;margin-inline:auto;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}
.term{font-family:var(--f-term);letter-spacing:.03em}
.muted{color:var(--ash)}
.label{font-family:var(--f-term);font-size:1.1rem;color:var(--blood);text-transform:lowercase}

/* header */
.bar{position:sticky;top:env(safe-area-inset-top,0px);z-index:30;background:rgba(0,0,0,.94);border-bottom:1px solid var(--line)}
.bar .wrap{display:flex;align-items:center;gap:16px;padding-block:10px;flex-wrap:wrap}
.bar .brand img{height:46px;width:auto}
.nav{display:flex;gap:2px 16px;flex-wrap:wrap;margin-left:auto;align-items:center}
.nav a{font-family:var(--f-term);font-size:1.25rem;color:var(--ash);text-decoration:none;text-transform:lowercase}
.nav a::before{content:"> ";color:var(--line)}
.nav a:hover,.nav a[aria-current="page"]{color:var(--bone)}
.nav a:hover::before,.nav a[aria-current="page"]::before{color:var(--blood)}
.me{display:flex;align-items:center;gap:6px 14px;flex-wrap:wrap;font-family:var(--f-term);font-size:1.2rem}
.me a{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}
.me img{width:26px;height:26px;object-fit:cover;border:1px solid var(--blood);flex:none}
.nav a{white-space:nowrap}
@media (max-width:600px){.bar .brand img{height:38px}.nav{gap:2px 12px}.nav a,.me{font-size:1.1rem}.me{width:100%}}

/* windows + controls */
.win{border:1px solid var(--line);background:var(--crypt);margin-block:28px}
.win-title{display:flex;justify-content:space-between;gap:12px;background:var(--line);padding:3px 12px;font-family:var(--f-term);font-size:1.12rem}
.win-title i{font-style:normal;letter-spacing:.3em;color:var(--blood);flex:none}
.win-title>span:first-child{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* clean section labels: blackletter, not link-like */
.win-title>span:first-child,.imt>span:first-child{font-family:var(--f-gothic);font-weight:600;letter-spacing:.03em;color:var(--bone);text-decoration:none;cursor:default}
.win-body{padding:24px clamp(14px,3.5vw,32px) 30px;display:grid;gap:18px}
.btn{font-family:var(--f-term);font-size:1.25rem;line-height:1;padding:10px 16px;border:1px solid var(--blood);background:var(--blood);color:var(--bone);text-decoration:none;cursor:pointer;display:inline-flex;align-items:center;gap:8px}
.btn:hover{background:var(--void);color:var(--bone);box-shadow:0 0 18px rgba(212,17,31,.5)}
.btn.ghost{background:transparent}
.btn.ghost:hover{background:var(--line)}
.btn.sm{font-size:1.05rem;padding:6px 10px}
.btn[disabled]{opacity:.5;cursor:not-allowed}
.linkbtn{background:none;border:0;color:var(--ash);font-family:var(--f-term);font-size:1rem;cursor:pointer;padding:0}
.linkbtn:hover{color:var(--ember)}
form{display:grid;gap:12px}
label{display:grid;gap:4px;font-family:var(--f-term);font-size:1.12rem;color:var(--ash)}
input[type=text],input[type=email],input[type=password],input[type=url],input[type=date],textarea,select{width:100%;min-width:0;background:var(--void);border:1px solid var(--line);color:var(--bone);font:inherit;font-size:1.05rem;padding:9px 11px}
input[type=color]{width:48px;height:36px;padding:0;border:1px solid var(--line);background:var(--void)}
textarea{min-height:110px;resize:vertical}
input:focus,textarea:focus,select:focus{border-color:var(--blood);outline:none}
.check{display:flex;gap:10px;align-items:flex-start;font-family:var(--f-body);font-size:1.02rem;color:var(--bone)}
.check input{margin-top:5px}
.note{font-family:var(--f-term);font-size:1.12rem;color:var(--ember);min-height:1.3em}
.grid2{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));gap:18px}
.row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.empty{border:1px dashed var(--line);padding:18px;color:var(--ash);font-family:var(--f-term);font-size:1.15rem}

/* member cards */
.members{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,150px),1fr));gap:14px}
.mcard{display:grid;gap:6px;text-decoration:none;background:var(--void);border:1px solid var(--line);padding:8px}
.mcard:hover{border-color:var(--blood)}
.mcard img{width:100%;aspect-ratio:1;object-fit:cover;background:var(--crypt)}
.mcard b{font-family:var(--f-term);font-weight:400;font-size:1.2rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.online{color:#3ddc5a;font-family:var(--f-term);font-size:1rem}

/* lounge: early-2000s IM client */
.lounge{display:grid;grid-template-columns:200px minmax(0,1fr) 240px;gap:14px;height:min(78vh,780px);margin-block:24px}
.imwin{border:1px solid var(--line);background:var(--crypt);display:flex;flex-direction:column;min-height:0;min-width:0}
.imt{display:flex;justify-content:space-between;gap:8px;align-items:center;background:linear-gradient(90deg,#5a0710,#1a0204);border-bottom:1px solid var(--blood);font-family:var(--f-term);font-size:1.1rem;padding:2px 8px;white-space:nowrap;overflow:hidden}
.imt span{overflow:hidden;text-overflow:ellipsis}
.imt i{font-style:normal;letter-spacing:.25em;color:#ffb3b8;flex:none}
.rooms{display:flex;flex-direction:column}
.rooms a{display:flex;justify-content:space-between;align-items:center;font-family:var(--f-term);font-size:1.25rem;color:var(--ash);text-decoration:none;padding:6px 10px;border-bottom:1px solid var(--line)}
.rooms a[aria-current="true"]{color:var(--bone);background:#1a0306;box-shadow:inset 3px 0 0 var(--blood)}
.rooms .dot{background:var(--blood);color:#fff;border-radius:9px;padding:0 7px;font-size:1rem;line-height:1.3}
.rooms .dot.at{background:#ffd400;color:#000}
.pal{display:grid;grid-template-columns:repeat(6,1fr);gap:2px;padding:8px}
.pal button{background:none;border:1px solid transparent;font-size:1.3rem;cursor:pointer;padding:2px;line-height:1.2}
.pal button:hover{border-color:var(--blood);background:#1a0306}
.side-note{font-size:.95rem;color:var(--ash);padding:8px 10px;border-top:1px solid var(--line);margin-top:auto}
.chat{display:grid;grid-template-rows:auto minmax(0,1fr) auto auto}
.log{overflow-y:auto;padding:10px 14px;display:flex;flex-direction:column;gap:9px;background:#050303;min-height:0}
.msg{display:grid;grid-template-columns:40px minmax(0,1fr);gap:10px}
.msg img{width:40px;height:40px;object-fit:cover;border:1px solid var(--blood)}
.msg .who{display:flex;gap:8px;align-items:baseline;flex-wrap:wrap;font-family:var(--f-term);font-size:1.15rem}
.msg .who a{text-decoration:none;color:var(--ember)}
.msg .who a.mine{color:#6fb7ff}
.msg .who time{color:#7d7676;font-size:1rem}
.msg .body{overflow-wrap:anywhere;white-space:pre-wrap}
.msg.ping{background:rgba(255,212,0,.06);box-shadow:inset 3px 0 0 #ffd400}
.msg .acts{display:flex;gap:10px;opacity:0;transition:opacity .15s}
.msg:hover .acts,.msg:focus-within .acts{opacity:1}
@media (hover:none){.msg .acts{opacity:.7}}
.sys{font-family:var(--f-term);font-size:1.05rem;color:#7d7676;text-align:center}
.emo{display:inline-block;font-style:normal;transform:translateY(1px)}
.mention{background:#3a0a0f;padding:0 3px;color:var(--bone)}
.mention.at-me{background:#ffd400;color:#000}
.typing{font-family:var(--f-term);font-size:1.05rem;color:#7d7676;padding:0 14px;min-height:1.4em}
.send{display:flex;gap:6px;padding:8px;border-top:1px solid var(--line);align-items:center}
.send input{flex:1}
.bl{overflow-y:auto;font-family:var(--f-term);font-size:1.15rem}
.bl .grp{padding:6px 10px;color:var(--ember);border-bottom:1px solid var(--line);background:#120203}
.bud{display:flex;align-items:flex-start;gap:8px;padding:5px 10px;color:#ddd;text-decoration:none}
.bud:hover{background:#1a0306}
.bud>b{width:10px;height:10px;border-radius:50%;background:#2fdc2f;flex:none;margin-top:7px}
.bud.away>b{background:#e0a500}.bud.off{color:#6d6666}.bud.off>b{background:#444}
.bud small{display:block;color:#8d8585;font-size:.95rem;font-family:var(--f-body);font-style:italic;overflow-wrap:anywhere}
.mystat{margin:10px;border:1px dashed var(--line);padding:8px;display:grid;gap:6px}
.mystat select,.mystat input{font-size:1rem;padding:5px 7px}
@media (max-width:900px){
  .lounge{grid-template-columns:1fr;height:auto;gap:10px}
  .lounge .rooms{flex-direction:row;overflow-x:auto}.lounge .rooms a{border-bottom:0;border-right:1px solid var(--line);white-space:nowrap;gap:6px}
  .lounge .pal-wrap,.lounge .side-note{display:none}
  .chat{height:72svh}
  .bl-wrap{order:3}
}

/* MySpace-style profile, themed per member via CSS variables on .space (values validated server-side) */
.space{--p-bg:#000;--p-panel:#0b0909;--p-text:#fff;--p-accent:#d4111f;--p-font:var(--f-gothic);--p-dim:.35;position:relative;background-color:var(--p-bg);color:var(--p-text);min-height:100vh;padding-block:22px 60px;isolation:isolate}
.space[data-hasimg="1"]{background-image:var(--p-img);background-size:cover;background-position:center}
.space[data-hasimg="1"][data-mode="tile"]{background-size:auto;background-repeat:repeat}
.space[data-hasimg="1"][data-mode="fixed"]{background-attachment:fixed}
.space[data-hasimg="1"]::before{content:"";position:absolute;inset:0;background:#000;opacity:var(--p-dim);z-index:-1}
@media (max-width:820px){.space[data-hasimg="1"]::before{opacity:max(var(--p-dim),.4)}.space[data-mode="fixed"]{background-attachment:scroll}}
.space .cols{display:grid;grid-template-columns:minmax(0,400px) minmax(0,1fr);gap:20px;align-items:start}
.space[data-layout="flipped"] .cols{grid-template-columns:minmax(0,1fr) minmax(0,400px)}
.space[data-layout="flipped"] .cols>.lcol{order:2}
@media (max-width:860px){.space .cols,.space[data-layout="flipped"] .cols{grid-template-columns:1fr}.space[data-layout="flipped"] .cols>.lcol{order:0}}
.space .box{background:color-mix(in srgb,var(--p-panel) 94%,transparent);border:1px solid color-mix(in srgb,var(--p-accent) 45%,transparent);margin-bottom:18px}
.space .box>h3,.space .hd{display:flex;justify-content:space-between;gap:8px;background:linear-gradient(color-mix(in srgb,var(--p-accent) 70%,#000),color-mix(in srgb,var(--p-accent) 35%,#000));color:#fff;font-family:var(--f-term);font-weight:400;font-size:1.2rem;padding:3px 10px;border-bottom:1px solid var(--p-accent);letter-spacing:.02em}
.space .box>h3::after,.space .hd::after{content:"■■■";letter-spacing:.2em;opacity:.8}
.space .box>div{padding:12px 14px;display:grid;gap:10px}
.space .name{font-family:var(--p-font);font-size:clamp(2.2rem,5.5vw,3.3rem);font-weight:800;line-height:1.02;overflow-wrap:anywhere;margin:0}
.space[data-glitter] .name,.space[data-glitter] .box>h3{}
.space[data-glitter="blood"] .name{background:linear-gradient(100deg,var(--p-text) 0%,#ff2b3a 25%,#fff 40%,#d4111f 55%,var(--p-text) 75%,#ff2b3a 100%)}
.space[data-glitter="silver"] .name{background:linear-gradient(100deg,#888 0%,#fff 20%,#aaa 40%,#fff 55%,#777 75%,#eee 100%)}
.space[data-glitter="ice"] .name{background:linear-gradient(100deg,#9fe8ff 0%,#fff 25%,#5ab8ff 45%,#e8fbff 60%,#7fd0ff 80%,#fff 100%)}
.space[data-glitter="blood"] .name,.space[data-glitter="silver"] .name,.space[data-glitter="ice"] .name{background-size:300% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;animation:glit 5s linear infinite;text-shadow:none;filter:drop-shadow(0 0 10px color-mix(in srgb,var(--p-accent) 45%,transparent))}
@keyframes glit{to{background-position:300% 0}}
.space .idrow{display:grid;grid-template-columns:150px minmax(0,1fr);gap:14px}
@media (max-width:420px){.space .idrow{grid-template-columns:120px minmax(0,1fr)}}
.space .pfp{width:100%;aspect-ratio:9/10;object-fit:cover;border:2px solid var(--p-accent);background:#111}
.space .kv{font-family:var(--f-term);font-size:1.15rem;line-height:1.3;display:grid;gap:2px;align-content:start;min-width:0;overflow-wrap:anywhere}
.space .kv .k{opacity:.65}
.space .quote{font-style:italic;overflow-wrap:anywhere}
.online-badge{display:inline-block;background:#0a3d0a;color:#7dff7d;border:1px solid #2fa52f;font-family:var(--f-term);font-size:1.05rem;padding:0 6px;animation:blink 1.4s steps(2,start) infinite;width:max-content}
@keyframes blink{50%{opacity:.35}}
.space .blurb{white-space:pre-wrap;overflow-wrap:anywhere}
.space .bl-h{font-family:var(--p-font);font-size:1.45rem;color:var(--p-accent);margin:0}
.player{background:#111;border:2px outset #444;padding:8px;font-family:var(--f-term);font-size:1.1rem;color:#7dff7d}
.player .scr{background:#000;border:1px inset #333;padding:6px 8px;display:flex;justify-content:space-between;gap:8px;overflow:hidden}
.player .scr span:first-child{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.player .ctl{display:flex;gap:6px;margin-top:8px;align-items:center}
.player button{background:#2a2a2a;border:1px outset #555;color:#ddd;font:inherit;padding:0 10px;cursor:pointer}
.player button:hover{color:#7dff7d}
.player .eq{flex:1;height:14px;background:repeating-linear-gradient(90deg,#d4111f 0 6px,transparent 6px 9px);opacity:.8}
.player iframe{width:100%;border:0;display:block;margin-top:8px}
.space .cta{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.space .cta>*{font-family:var(--f-term);font-size:1.15rem;border:1px solid color-mix(in srgb,var(--p-accent) 45%,transparent);padding:5px 8px;background:color-mix(in srgb,var(--p-accent) 10%,transparent);color:var(--p-text);text-align:left;cursor:pointer;text-decoration:none}
.space .cta>*::before{content:"▸ ";color:var(--p-accent)}
.space .cta>*:hover{background:color-mix(in srgb,var(--p-accent) 28%,transparent)}
.space .cta>[disabled]{opacity:.55;cursor:default}
.space table.int{width:100%;border-collapse:collapse;font-size:1rem}
.space table.int td{border:1px solid color-mix(in srgb,var(--p-accent) 35%,transparent);padding:6px 8px;vertical-align:top;overflow-wrap:anywhere}
.space table.int td:first-child{width:84px;background:color-mix(in srgb,var(--p-accent) 14%,transparent);font-family:var(--f-term);font-size:1.1rem;color:var(--p-accent)}
.space .badges{display:flex;gap:6px;flex-wrap:wrap}
.space .badges span{width:88px;height:31px;border:1px solid #555;font-family:var(--f-term);font-size:.95rem;line-height:29px;text-align:center;background:linear-gradient(#2b0207,#000);color:#fff;overflow:hidden;white-space:nowrap}
.space .urlbox{font-family:var(--f-term);font-size:1.12rem;overflow-wrap:anywhere}
.space .ext{font-family:var(--f-term);font-size:1.35rem;text-align:center}
.space .ext b{color:var(--p-accent);font-weight:400}
.space .fc{font-family:var(--f-term);font-size:1.15rem}
.space .fc b{color:var(--p-accent);font-weight:400}
.space .top8{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.space .top8 a{display:grid;gap:4px;text-decoration:none;color:var(--p-text);font-family:var(--f-term);font-size:1.05rem;text-align:center;min-width:0}
.space .top8 img{width:100%;aspect-ratio:1;object-fit:cover;border:1px solid var(--p-accent)}
.space .top8 span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.space .favs{display:grid;grid-template-columns:repeat(auto-fill,minmax(100px,1fr));gap:10px}
.space .favs a{text-decoration:none;color:var(--p-text);font-size:.95rem;display:grid;gap:4px}
.space .favs img{width:100%;aspect-ratio:1;object-fit:cover;background:#fff}
.space .comment{display:grid;grid-template-columns:64px minmax(0,1fr);gap:12px;border-top:1px dashed color-mix(in srgb,var(--p-accent) 45%,transparent);padding-top:10px}
.space .comment img{width:64px;height:64px;object-fit:cover;border:1px solid color-mix(in srgb,var(--p-accent) 45%,transparent)}
.space .comment .meta{font-family:var(--f-term);font-size:1.05rem;display:flex;gap:10px;flex-wrap:wrap;opacity:.9}
.space .comment .meta a{color:var(--p-accent)}
.space .req{display:flex;gap:10px;align-items:center;flex-wrap:wrap;border-top:1px dashed color-mix(in srgb,var(--p-accent) 45%,transparent);padding-top:8px}
.space .req img{width:44px;height:44px;object-fit:cover}
.space .counter{font-family:var(--f-term);font-size:1.35rem;text-align:center;margin-top:6px}
.space .counter b{background:#000;color:#7dff7d;border:1px inset #333;padding:0 6px;letter-spacing:.2em;font-weight:400}
.space .pending{border:1px dashed #ffd400;color:#ffd400;font-family:var(--f-term);font-size:1.1rem;padding:6px 10px}
.space .btn{border-color:var(--p-accent);background:var(--p-accent)}
.space .btn.ghost{background:transparent;color:var(--p-text)}
.space a{color:var(--p-text);text-decoration-color:var(--p-accent)}
.space textarea,.space input{background:rgba(0,0,0,.4);border-color:var(--p-accent);color:var(--p-text)}
.dlg{background:#0b0909;color:#fff;border:1px solid #d4111f;max-width:420px;width:90vw}
.me .reqs{background:#ffd400;color:#000;padding:0 6px;text-decoration:none}
/* edit page */
.ed-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:22px}
@media (max-width:900px){.ed-grid{grid-template-columns:1fr}}
.ed-sec{display:grid;gap:12px;border:1px solid var(--line);padding:14px}
.ed-sec>h2{font-size:1.6rem}
.swatches{display:flex;gap:8px;flex-wrap:wrap}
.swatches button{width:62px;height:44px;border:2px solid var(--line);cursor:pointer;font-family:var(--f-term);font-size:.85rem;color:#fff;padding:0;display:grid;place-items:end center;background-size:cover}
.swatches button[aria-pressed="true"]{border-color:#fff;outline:2px solid var(--blood)}
.preview{border:1px solid var(--line);min-height:220px;padding:14px;display:grid;gap:10px;align-content:start}
.preview .box{margin:0}
.warn{color:#ffd400;font-family:var(--f-term);font-size:1.05rem}
.t8edit{display:grid;gap:6px}
.t8edit li{display:flex;gap:8px;align-items:center;background:var(--void);border:1px solid var(--line);padding:4px 8px;font-family:var(--f-term);font-size:1.1rem;cursor:grab;list-style:none}
.t8edit li.dragging{opacity:.4}
.t8edit{margin:0;padding:0}
.t8edit li .term{flex:0 0 auto;color:var(--blood)}
.t8edit li img{width:30px;height:30px;object-fit:cover}
.t8edit li span{flex:1}
.t8edit ol{margin:0;padding:0;display:grid;gap:6px}
input[type=range]{width:100%;accent-color:var(--blood)}
@media (prefers-reduced-motion:reduce){.online-badge,.space .name{animation:none!important}}
.toast{position:fixed;left:50%;bottom:calc(20px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);background:var(--blood);color:var(--bone);font-family:var(--f-term);font-size:1.2rem;padding:8px 16px;z-index:50}
.fld{display:grid;gap:4px}
.fld small,.ed-sec small{font-size:.95rem}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:10px;align-items:end}
@media (max-width:520px){.row2{grid-template-columns:1fr}}
.chk{display:flex;gap:8px;align-items:center}
.hide{display:none!important}
.plain{list-style:none;margin:0;padding:0;display:grid;gap:4px;font-family:var(--f-term);font-size:1.1rem}
.favpick{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.ed-sec legend{font-family:var(--f-gothic);font-size:1.5rem;color:var(--bone);padding:0 6px}
.ed-save{grid-column:1/-1;display:flex;gap:14px;align-items:center;flex-wrap:wrap;position:sticky;bottom:0;background:var(--void);border-top:1px solid var(--line);padding:12px 0}
.lside{display:flex;flex-direction:column;gap:10px;min-height:0}
.lside .pal-wrap{flex:1}
.bl-wrap .bl{flex:1}
@media (max-width:900px){.bl-wrap .bl{max-height:240px}}
.ed-grid{align-items:start}
.ed-sec{align-content:start}
.space .urlbox b{font-family:"Courier New",monospace;letter-spacing:0}

/* ===================== Phase 2: 2005 mode ===================== */
.nav a{position:relative;display:inline-flex;align-items:center;gap:4px}
.nbadge{display:inline-block;background:#ffd400;color:#000;font-family:var(--f-term);font-weight:400;font-size:.95rem;line-height:1.2;padding:0 5px;border-radius:2px;margin-left:2px;animation:blink 1.4s steps(2,start) infinite}
.new-flag{color:#ffd400;font-family:var(--f-term);animation:blink 1.4s steps(2,start) infinite}
@media (prefers-reduced-motion:reduce){.nbadge,.new-flag{animation:none!important}}
.page{margin-block:24px 60px;display:grid;gap:18px}
.page-h{display:flex;justify-content:space-between;align-items:end;gap:12px;flex-wrap:wrap;border-bottom:1px solid var(--line);padding-bottom:8px}
.page-h h1{font-size:clamp(2rem,5vw,2.8rem)}
.page-h .crumbs{font-family:var(--f-term);font-size:1.1rem;color:var(--ash)}
.pbox{border:1px solid var(--line);background:var(--crypt)}
.pbox-h{display:flex;justify-content:space-between;align-items:center;gap:8px;background:linear-gradient(#7a0a14,#3a0509);color:#fff;font-family:var(--f-term);font-weight:400;font-size:1.25rem;padding:3px 10px;border-bottom:1px solid var(--blood);margin:0}
.pbox-h a{color:#ffd9dc;font-size:1.05rem}
.pbox-b{padding:12px 14px;display:grid;gap:10px}
.two{display:grid;grid-template-columns:minmax(0,340px) minmax(0,1fr);gap:18px;align-items:start}
@media (max-width:860px){.two{grid-template-columns:1fr}}
.tabs{display:flex;gap:4px;flex-wrap:wrap;border-bottom:1px solid var(--blood)}
.tabs a,.tabs button{font-family:var(--f-term);font-size:1.15rem;background:#140305;border:1px solid var(--line);border-bottom:0;color:var(--ash);padding:4px 12px;text-decoration:none;cursor:pointer}
.tabs [aria-current="page"],.tabs [aria-selected="true"]{background:var(--blood);color:#fff;border-color:var(--blood)}
/* table lists (mail, bulletins) */
.tlist{width:100%;border-collapse:collapse;font-size:1rem}
.tlist th{font-family:var(--f-term);font-weight:400;font-size:1.05rem;text-align:left;color:var(--ash);border-bottom:1px solid var(--blood);padding:4px 8px;background:#120203}
.tlist td{border-bottom:1px dashed var(--line);padding:8px;vertical-align:top}
.tlist tr.unread td{background:rgba(212,17,31,.07)}
.tlist tr.unread .subj{font-weight:600;color:#fff}
.tlist .from{display:flex;gap:8px;align-items:center;min-width:0}
.tlist .from img{width:44px;height:44px;object-fit:cover;border:1px solid var(--line);flex:none}
.tlist .from a{font-family:var(--f-term);font-size:1.12rem;overflow-wrap:anywhere}
.tlist .dt{font-family:var(--f-term);color:var(--ash);white-space:nowrap;font-size:1rem}
.tlist .subj a{text-decoration:none}
.tlist .subj a:hover{text-decoration:underline}
@media (max-width:640px){
  .tlist thead{display:none}
  .tlist tr{display:grid;grid-template-columns:auto 1fr;gap:2px 10px;border-bottom:1px dashed var(--line);padding:8px 0}
  .tlist td{border:0;padding:0 4px}
  .tlist td.cb{grid-row:span 3;align-self:center}
}
.mailview{display:grid;gap:12px}
.mailview .hdr{display:grid;grid-template-columns:64px 1fr;gap:12px;border-bottom:1px dashed var(--line);padding-bottom:10px;font-family:var(--f-term);font-size:1.1rem}
.mailview .hdr img{width:64px;height:64px;object-fit:cover;border:1px solid var(--blood)}
.mailview .msgbody,.bul-body,.blog-body{white-space:pre-wrap;overflow-wrap:anywhere}
.comp{display:grid;gap:10px}
.comp .to{display:flex;gap:10px;align-items:center;font-family:var(--f-term);font-size:1.15rem}
.comp .to img{width:40px;height:40px;object-fit:cover;border:1px solid var(--blood)}
/* home */
.hello{display:grid;grid-template-columns:120px 1fr;gap:14px;align-items:start}
.hello img{width:120px;height:120px;object-fit:cover;border:2px solid var(--blood)}
.hello h1{font-size:clamp(1.8rem,4vw,2.4rem)}
.hello .stats{font-family:var(--f-term);font-size:1.15rem;display:grid;gap:2px;margin-top:6px}
.hello .stats b{color:var(--ember);font-weight:400}
.alerts{display:grid;gap:4px;font-family:var(--f-term);font-size:1.2rem}
.alerts a{color:#ffd400;text-decoration:none}
.alerts a::before{content:"! ";color:var(--blood)}
.qlinks{display:grid;grid-template-columns:1fr 1fr;gap:4px 12px;font-family:var(--f-term);font-size:1.15rem}
.qlinks a{text-decoration:none}.qlinks a::before{content:"▸ ";color:var(--blood)}
.people{display:grid;grid-template-columns:repeat(auto-fill,minmax(92px,1fr));gap:10px}
.people a{display:grid;gap:3px;text-decoration:none;text-align:center;font-family:var(--f-term);font-size:1.02rem;min-width:0}
.people img{width:100%;aspect-ratio:1;object-fit:cover;border:1px solid var(--line);background:#111}
.people a:hover img{border-color:var(--blood)}
.people span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.people .on{color:#3ddc5a;font-size:.92rem}
/* browse */
.filters{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,170px),1fr));gap:10px;align-items:end}
.mcard .on{color:#3ddc5a;font-family:var(--f-term)}
.mcard small{font-family:var(--f-term);color:var(--ash);font-size:.98rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* blogs */
.blog-entry{display:grid;gap:8px;border-bottom:1px dashed var(--line);padding-bottom:16px}
.blog-entry:last-child{border-bottom:0}
.blog-entry .bdate{font-family:var(--f-term);font-size:1.15rem;color:var(--ember);border-bottom:1px solid var(--line)}
.blog-entry h2{font-size:1.7rem}
.blog-entry h2 a{text-decoration:none}
.blog-meta{font-family:var(--f-term);font-size:1.08rem;color:var(--ash);display:grid;gap:2px}
.blog-meta b{color:var(--bone);font-weight:400}
.blog-foot{font-family:var(--f-term);font-size:1.05rem;display:flex;gap:12px;flex-wrap:wrap;color:var(--ash)}
.cmt{display:grid;grid-template-columns:56px minmax(0,1fr);gap:10px;border-top:1px dashed var(--line);padding-top:10px}
.cmt img{width:56px;height:56px;object-fit:cover;border:1px solid var(--line)}
.cmt .meta{font-family:var(--f-term);font-size:1.05rem;display:flex;gap:10px;flex-wrap:wrap;color:var(--ash)}
.cmt p{white-space:pre-wrap;overflow-wrap:anywhere}
/* pics */
.album{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(46%,180px),1fr));gap:12px}
.album figure{margin:0;border:1px solid var(--line);background:#000;display:grid;gap:4px;padding:6px}
.album img{width:100%;aspect-ratio:1;object-fit:cover;cursor:zoom-in}
.album figcaption{font-size:.95rem;overflow-wrap:anywhere;min-height:1.2em}
.album .acts{display:flex;gap:10px;flex-wrap:wrap}
.album .pend{font-family:var(--f-term);color:#ffd400;font-size:.95rem}
.lightbox{background:#000;border:1px solid var(--blood);padding:10px;max-width:min(94vw,1100px);color:#fff}
.lightbox img{max-height:80vh;width:auto;margin:auto}
.lightbox::backdrop{background:rgba(0,0,0,.85)}
.lightbox p{font-family:var(--f-term);margin-top:6px}
/* profile additions */
.space .details{width:100%;border-collapse:collapse;font-size:1rem}
.space .details td{border:1px solid color-mix(in srgb,var(--p-accent) 35%,transparent);padding:4px 8px;overflow-wrap:anywhere}
.space .details td:first-child{width:110px;background:color-mix(in srgb,var(--p-accent) 14%,transparent);font-family:var(--f-term);font-size:1.08rem;color:var(--p-accent)}
.space .bloglist{list-style:none;margin:0;padding:0;display:grid;gap:4px;font-size:1rem}
.space .bloglist li{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap}
.space .bloglist .muted{font-family:var(--f-term)}
.space .pics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}
.space .pics img{width:100%;aspect-ratio:1;object-fit:cover;border:1px solid color-mix(in srgb,var(--p-accent) 45%,transparent)}
.space .ext-big{font-family:var(--f-term);font-size:1.5rem;text-align:center;padding:6px 0}
.space .ext-big b{color:var(--p-accent);font-weight:400}
.space .viewall{font-family:var(--f-term);font-size:1.05rem;text-align:right}
.space .viewall a{color:var(--p-accent)}
.cnp{display:grid;gap:10px}
.blog-meta .emo,.space .kv .emo,.hello .stats .emo{margin-right:4px}

/* ===== Phase 2b: kudos, shrine, layout, themes, pic comments, lounge polish ===== */
.kudos{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-family:var(--f-term);font-size:1.25rem}
.kheart{color:var(--p-accent,var(--blood));font-size:1.6rem;line-height:1;text-shadow:0 0 8px rgba(212,17,31,.6)}
.kudos .kc{color:var(--p-accent,var(--ember));font-size:1.45rem}
.kbtn{font-family:var(--f-term);font-size:1.1rem;border:1px solid var(--p-accent,var(--blood));background:transparent;color:var(--p-text,var(--bone));padding:4px 10px;cursor:pointer}
.kbtn:hover:not(:disabled){background:var(--p-accent,var(--blood))}
.kbtn:disabled{opacity:.65;cursor:default}
.kudos.pop .kheart{animation:kpop .6s ease}
@keyframes kpop{0%{transform:scale(1)}40%{transform:scale(1.7)}100%{transform:scale(1)}}
.shrine{white-space:pre-wrap;overflow-wrap:anywhere}
.shrine b{color:var(--p-accent,var(--ember))}
.glit,.shrine .glit{background:linear-gradient(90deg,#ff2b3a,#fff,#d4111f,#ffb3b9,#ff2b3a);background-size:300% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;animation:glit 3s linear infinite;font-weight:600}
@keyframes glit{to{background-position:300% 0}}
.shrine-tools{display:flex;gap:6px;flex-wrap:wrap;margin:4px 0}
.shrine-prev{margin-top:8px}
.layedit{list-style:none;margin:6px 0;padding:0;display:grid;gap:4px}
.layedit li{display:flex;align-items:center;gap:8px;border:1px solid var(--line);padding:4px 8px;background:var(--void)}
.layedit li label{flex:1}
.layedit li.off label{opacity:.5;text-decoration:line-through}
.layedit .linkbtn{font-size:1.2rem;padding:0 6px}
.viewers{display:grid;grid-template-columns:repeat(auto-fill,minmax(70px,1fr));gap:8px}
.viewers a{display:grid;gap:3px;text-align:center;text-decoration:none;font-size:.85rem;overflow-wrap:anywhere}
.viewers img{width:100%;aspect-ratio:1;object-fit:cover;border:1px solid var(--p-accent,var(--blood))}
.wall{display:grid;gap:10px}
.comment.fresh{animation:fresh 1.6s ease}
@keyframes fresh{from{background:rgba(212,17,31,.25)}to{background:transparent}}
.badges span{cursor:help}
.moodq{display:grid;grid-template-columns:110px minmax(0,1fr) auto;gap:6px;margin:8px 0}
@media (max-width:520px){.moodq{grid-template-columns:90px minmax(0,1fr) auto}}
/* theme gallery */
.tgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:14px;margin-top:12px}
.tcard{margin:0;border:1px solid var(--line);background:var(--crypt);display:grid;gap:8px;padding:8px}
.tcard figcaption{display:grid;gap:2px}
.tprev{padding:14px;min-height:150px;border:1px solid var(--line)}
.tprev .box{margin:0}
.tprev .name{font-size:1.6rem;margin:0}
/* pic comments in the lightbox */
.lightbox .lb-wrap{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:14px;max-width:min(1100px,94vw);max-height:90vh;position:relative}
.lightbox .lb-wrap>img{max-width:100%;max-height:86vh;object-fit:contain;justify-self:center}
.lb-x{position:absolute;top:-6px;right:0;z-index:2}
.pc-side{display:flex;flex-direction:column;min-height:0;max-height:86vh;gap:6px;padding-top:28px;text-align:left}
.pc-cap{margin:0;font-size:1.15rem}
.pc-h{font-family:var(--f-term);color:var(--ember);font-weight:400;margin:6px 0 0;font-size:1.2rem}
.pc-list{overflow-y:auto;display:grid;gap:8px;align-content:start;min-height:60px;flex:1}
.pc{display:grid;grid-template-columns:34px minmax(0,1fr);gap:8px}
.pc img{width:34px;height:34px;object-fit:cover;border:1px solid var(--blood)}
.pc .meta{display:flex;gap:8px;flex-wrap:wrap;align-items:baseline;font-family:var(--f-term);font-size:1rem}
.pc .blurb{margin:0;overflow-wrap:anywhere}
.pc-form{display:flex;gap:6px}
.pcount{font-size:1rem;color:var(--ash)}
@media (max-width:760px){.lightbox .lb-wrap{grid-template-columns:1fr;overflow-y:auto}.lightbox .lb-wrap>img{max-height:55vh}.pc-side{max-height:none}}
/* lounge polish */
.imt-r{display:flex;align-items:center;gap:8px}
.conn{font-size:.95rem;padding:0 6px;border:1px solid transparent}
.conn[data-s="live"]{color:#62e36b}
.conn[data-s="down"],.conn[data-s="wait"]{color:#ffd400;animation:blink 1.2s steps(2) infinite}
@keyframes blink{50%{opacity:.35}}
.budbtn{display:none;font-family:var(--f-term);font-size:1rem;background:#1a0204;color:var(--bone);border:1px solid var(--blood);padding:0 8px;cursor:pointer}
.budbtn b{color:#62e36b;font-weight:400}
.emo-btn{background:none;border:1px solid var(--line);font-size:1.3rem;line-height:1;padding:6px 8px;cursor:pointer;flex:none}
.emo-btn:hover,.emo-btn[aria-expanded="true"]{border-color:var(--blood);background:#1a0306}
.chat{position:relative;grid-template-rows:auto minmax(0,1fr) auto auto auto auto}
.pal-pop{position:absolute;left:8px;bottom:58px;z-index:5;display:grid;grid-template-columns:repeat(8,1fr);gap:2px;padding:6px;background:var(--crypt);border:1px solid var(--blood);box-shadow:0 6px 24px rgba(0,0,0,.8);max-width:calc(100% - 16px)}
.pal-pop button{background:none;border:1px solid transparent;font-size:1.35rem;cursor:pointer;padding:4px;line-height:1.1}
.pal-pop button:hover{border-color:var(--blood);background:#1a0306}
.ac{position:absolute;left:52px;bottom:58px;z-index:6;display:grid;min-width:220px;max-width:calc(100% - 64px);background:var(--crypt);border:1px solid var(--blood);box-shadow:0 6px 24px rgba(0,0,0,.8)}
.ac button{text-align:left;background:none;border:0;border-bottom:1px solid var(--line);color:var(--bone);font-family:var(--f-term);font-size:1.15rem;padding:6px 10px;cursor:pointer}
.ac button small{color:var(--ash)}
.ac button.on,.ac button:hover{background:#2a0508}
.hide{display:none!important}
.log .older{align-self:center;font-family:var(--f-term);font-size:1.05rem;margin:2px 0 6px}
.dsep{display:flex;align-items:center;gap:10px;color:#7d7676;font-family:var(--f-term);font-size:1rem;margin:6px 0 2px}
.dsep::before,.dsep::after{content:"";flex:1;border-top:1px dashed var(--line)}
.log{gap:6px}
.msg.cont{margin-top:-4px}
.msg.cont .who{min-height:0}
.msg.cont .who time{opacity:0;transition:opacity .15s}
.msg.cont:hover .who time,.msg.cont:focus-within .who time{opacity:1}
.msg.cont .who:not(:hover):not(:focus-within) .acts{opacity:0}
.msg .gut{width:40px}
.msg.cont>div{display:grid}
.msg.cont .who{order:2;justify-content:flex-end;font-size:.95rem}
.msg.pending{opacity:.6}
.msg.pending .st{font-style:italic}
.msg.failed{opacity:1}
.msg.failed .st{color:#ffd400}
.msg .who .linkbtn{font-size:1rem}
@media (max-width:900px){
  .budbtn{display:inline-block}
  .chat{height:min(76svh,calc(var(--vvh,100svh) - 110px));min-height:320px}
  .lounge .bl-wrap{position:fixed;inset:0;z-index:40;background:rgba(0,0,0,.7);border:0;display:none;padding:0}
  .lounge .bl-wrap.open{display:flex;flex-direction:row;justify-content:flex-end}
  .lounge .bl-wrap.open>*{background:var(--crypt)}
  .lounge .bl-wrap.open .imt{position:absolute;top:0;right:0;width:min(300px,86vw)}
  .lounge .bl-wrap.open .bl{width:min(300px,86vw);max-height:none;margin-top:28px;flex:none;border-left:1px solid var(--blood)}
  .lounge .bl-wrap.open .mystat{position:absolute;bottom:0;right:0;width:min(300px,86vw);border-left:1px solid var(--blood)}
  .send{position:sticky;bottom:0;background:var(--crypt);padding-bottom:max(8px,env(safe-area-inset-bottom))}
  .send input{font-size:16px}
  .msg .acts{opacity:.8}
  .msg.cont .who time{opacity:.6}
}
@media (prefers-reduced-motion:reduce){.glit,.conn,.kudos.pop .kheart,.comment.fresh{animation:none!important}}
.space .badges span{width:auto;min-width:88px;padding:0 6px}
dialog.lightbox{background:#050303;border:1px solid var(--blood);color:var(--bone);padding:14px;max-width:96vw;max-height:94vh}
dialog.lightbox::backdrop{background:rgba(0,0,0,.85)}
.chat .imt #room-name{overflow:hidden;text-overflow:ellipsis;min-width:0}
.chat .imt .imt-r{flex:none}
@media (max-width:900px){.chat .imt .imt-r i{display:none}.chat .imt{padding:4px 8px}.budbtn{padding:2px 10px;font-size:1.05rem}}
.chat{grid-template-columns:minmax(0,1fr)}
.chat>*{min-width:0}
.lounge>*{min-width:0}
@media (max-width:900px){.lounge{grid-template-columns:minmax(0,1fr)}}

/* ===== welcome pass: new members ===== */
.welcome{border-color:var(--blood)!important;box-shadow:0 0 22px rgba(212,17,31,.25)}
.wc-hi{margin:0 0 8px}
.wc-bar{height:12px;border:1px solid var(--blood);background:#120203;overflow:hidden}
.wc-bar span{display:block;height:100%;background:repeating-linear-gradient(45deg,#d4111f 0 8px,#8a0a14 8px 16px);transition:width .4s}
.wc-pct{margin:6px 0}
.wc-list{list-style:none;padding:0;margin:0 0 10px;display:grid;gap:6px}
.wc-list li{display:flex;gap:8px;align-items:baseline;flex-wrap:wrap;font-size:1.05rem}
.wc-list li a{font-family:var(--f-term);font-size:1.2rem}
.wc-list li.ok{opacity:.6}
.wc-ck{font-family:var(--f-term);color:var(--ember);width:1.2em;flex:none}
.wc-list li.ok .wc-ck{color:#62e36b}
.newbie{font-size:1.05rem}
.wcard{position:relative;border:1px dashed var(--blood);background:#120203;padding:10px 12px;margin:6px 0;display:grid;gap:6px}
.wcard p{margin:0}
.wc-t{font-family:var(--f-term);font-size:1.25rem;color:var(--ember)}
.wc-x{position:absolute;top:4px;right:8px}
.chips{display:flex;flex-wrap:wrap;gap:6px}
.chip{font-family:var(--f-term);font-size:1.1rem;background:#000;color:var(--bone);border:1px solid var(--line);padding:6px 10px;cursor:pointer;border-radius:14px}
.chip:hover,.chip:focus-visible{border-color:var(--blood);background:#2a0508}
@media (max-width:600px){.wc-list li small{flex-basis:100%;padding-left:1.7em}.chip{font-size:1.15rem;padding:8px 12px}}
/* long unbroken strings (e.g. a report reason) must not blow out mobile width */
.win-body .term,.win-body p{overflow-wrap:anywhere}
