/* Grimwood main site, v3.
   Calm and simple. Same tokens as The Grim Path (tokens.css / components.css) so it reads as the same brand,
   but none of the Path's game-juice: no particles, no textures, no glows. One accent, generous space, real content.
   Headings: Fraunces (self-hosted). Body: system stack. Lore lines: Georgia italic (the shared thread with the Path). */

@font-face { font-family:'Fraunces'; src:url('/fonts/fraunces.woff2') format('woff2'); font-weight:100 900; font-style:normal; font-display:swap; }

:root {
  --font-display:'Fraunces', Georgia, serif;
  --surface:#121317; --surface-2:#17181d; --line:rgba(255,255,255,.07); --line-2:rgba(255,255,255,.13);
  --text-2:#b9bec8; --r:16px;
  --maxw:1040px;
}
* { box-sizing:border-box; }
html { scroll-behavior:smooth; -webkit-text-size-adjust:100%; }
body { margin:0; min-height:100vh; font-family:var(--gw-font-ui); font-size:1rem; line-height:1.6; background:var(--gw-bg); color:var(--gw-text); }
a { color:var(--gw-accent); text-underline-offset:3px; }
a.gw-btn, a.card, a.row, a.tile { text-decoration:none; color:inherit; }
:focus-visible { outline:2px solid rgba(var(--gw-accent-rgb),.95); outline-offset:3px; border-radius:6px; }
img, video { max-width:100%; height:auto; display:block; }
.skip { position:absolute; left:-999px; top:8px; z-index:1000; background:var(--surface); color:var(--gw-text); padding:.5rem .8rem; border:1px solid var(--gw-accent); border-radius:8px; }
.skip:focus { left:8px; }
[hidden] { display:none !important; }

/* type */
h1, h2, h3 { font-family:var(--font-display); font-weight:600; letter-spacing:-.012em; line-height:1.12; margin:0; font-variation-settings:"opsz" 96, "SOFT" 30; }
h2 { font-size:clamp(1.7rem, 3vw, 2.3rem); margin-bottom:.4rem; }
h3 { font-size:1.25rem; }
.lead { color:var(--text-2); max-width:58ch; margin:0 0 1.4rem; }
.lore { font-family:var(--gw-font-lore); font-style:italic; color:#cdbfa8; }
.eyebrow { font-size:.74rem; text-transform:uppercase; letter-spacing:.16em; color:var(--gw-accent); font-weight:700; margin:0 0 .6rem; }
.sechead { display:flex; align-items:flex-end; justify-content:space-between; gap:16px; margin-bottom:22px; }
.sechead .lead { margin:0; }
.sechead .more { white-space:nowrap; font-size:.92rem; font-weight:600; color:var(--gw-accent); text-decoration:none; }
.sechead .more:hover { text-decoration:underline; }
.sechead h1 { font-size:clamp(1.7rem, 3vw, 2.3rem); margin-bottom:.4rem; }   /* page title that sits where a section h2 would */
@media (max-width:640px){ .sechead { flex-wrap:wrap; align-items:flex-start; } .sechead > div:first-child { flex:1 1 100%; min-width:0; } }

/* layout */
.wrap { width:min(var(--maxw), 100% - 32px); margin-inline:auto; }
section { padding:56px 0; }
@media (min-width:760px){ section { padding:80px 0; } }
section + section { border-top:1px solid var(--line); }
.two { display:grid; gap:18px; grid-template-columns:1fr; }
@media (min-width:720px){ .two { grid-template-columns:1fr 1fr; } }
.split { display:grid; gap:36px; align-items:start; }
@media (min-width:860px){ .split { grid-template-columns:1fr 1fr; gap:64px; } }

/* top bar */
.top { position:sticky; top:0; z-index:60; background:rgba(10,11,13,.8); backdrop-filter:blur(12px); -webkit-backdrop-filter:blur(12px); border-bottom:1px solid var(--line); }
.top .wrap { display:flex; align-items:center; justify-content:space-between; gap:12px; height:64px; }
.brand { display:flex; align-items:center; gap:10px; color:var(--gw-text); text-decoration:none; }
.brand img { height:34px; width:34px; object-fit:contain; }
.brand .name { font-family:var(--font-display); font-size:1.2rem; font-weight:600; }
.topnav { display:none; gap:2px; }
.topnav a { color:var(--text-2); text-decoration:none; font-size:.92rem; padding:.5rem .8rem; border-radius:999px; transition:color .15s, background .15s; }
.topnav a:hover, .topnav a[aria-current="page"] { color:#fff; background:rgba(255,255,255,.06); }
@media (min-width:860px){ .topnav { display:flex; } }
.auth { display:flex; align-items:center; gap:8px; }
.auth .who { display:none; align-items:center; gap:8px; color:var(--text-2); font-size:.88rem; text-decoration:none; }
.auth .who img { width:28px; height:28px; border-radius:50%; border:1px solid var(--line-2); }
.auth .who span { max-width:150px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
@media (min-width:1000px){ .auth .who { display:inline-flex; } }
.auth .long { display:none; }
@media (min-width:480px){ .auth .long { display:inline; } }
.burger { display:inline-flex; align-items:center; justify-content:center; width:40px; height:40px; border-radius:10px; border:1px solid var(--line-2); background:transparent; color:var(--gw-text); cursor:pointer; padding:0; }
.burger svg { width:20px; height:20px; }
@media (min-width:860px){ .burger { display:none; } }
.sheet { position:fixed; inset:0; z-index:70; background:#0a0b0d; display:flex; flex-direction:column; padding:12px 16px 28px; opacity:0; pointer-events:none; visibility:hidden; transition:opacity .18s, visibility 0s linear .18s; max-height:100vh; max-height:100dvh; overflow-y:auto; overscroll-behavior:contain; }
.sheet.open { opacity:1; pointer-events:auto; visibility:visible; transition:opacity .18s, visibility 0s; }
.sheet .row { display:flex; justify-content:space-between; align-items:center; height:40px; padding:0; border:0; }
.sheet nav { display:flex; flex-direction:column; margin-top:20px; }
.sheet nav a { font-family:var(--font-display); font-size:1.5rem; color:var(--gw-text); text-decoration:none; padding:14px 4px; border-bottom:1px solid var(--line); }
.sheet .foot { margin-top:auto; display:flex; gap:10px; flex-wrap:wrap; }

/* buttons: extend the Path's .gw-btn, keep it quiet */
.gw-btn { font-size:.95rem; }
.gw-btn.lg { padding:.8rem 1.35rem; font-size:1rem; border-radius:12px; }
.gw-btn .ic { width:18px; height:18px; }
.gw-btn--discord { --b:88,101,242; color:#fff; background:linear-gradient(180deg, rgba(88,101,242,.55), rgba(88,101,242,.32)); border-color:rgba(88,101,242,.85); }
.gw-btn--discord:hover { box-shadow:0 6px 20px rgba(88,101,242,.35); }

/* hero */
.hero { padding:0 0 8px; position:relative; }
.hero .media { position:relative; height:clamp(220px, 46vw, 520px); background:#06080a; overflow:hidden; }
.hero .media video, .hero .media img { width:100%; height:100%; object-fit:cover; object-position:center 45%; }
.hero .media::after { content:''; position:absolute; inset:0; background:linear-gradient(180deg, rgba(10,11,13,.25), rgba(10,11,13,0) 25%, rgba(10,11,13,0) 55%, var(--gw-bg) 100%); }
.hero .wrap { text-align:center; margin-top:-28px; position:relative; }
@media (min-width:760px){ .hero .wrap { margin-top:-56px; } }
.hero h1 { font-size:clamp(1.8rem, 4.2vw, 3rem); max-width:20ch; margin:0 auto .5rem; text-wrap:balance; font-variation-settings:"opsz" 144, "SOFT" 50; }
.hero .sub { color:var(--text-2); max-width:52ch; margin:0 auto 1.4rem; font-size:1.05rem; }
.hero .tag { color:var(--gw-muted); font-size:.76rem; letter-spacing:.18em; text-transform:uppercase; margin:0 0 .9rem; }
.ctas { display:flex; flex-wrap:wrap; justify-content:center; gap:10px; }

/* live strip */
.strip { display:grid; gap:12px; grid-template-columns:1fr; margin-top:36px; }
@media (min-width:640px){ .strip { grid-template-columns:repeat(2, 1fr); } }
@media (min-width:960px){ .strip { grid-template-columns:repeat(auto-fit, minmax(0, 1fr)); grid-auto-flow:column; } }
.strip .tile[hidden] { display:none; }
.tile { display:flex; flex-direction:column; gap:2px; text-align:left; padding:16px 18px; background:var(--surface); border:1px solid var(--line); border-radius:var(--r); min-height:86px; transition:border-color .15s, transform .15s var(--gw-ease-out); }
a.tile:hover { border-color:var(--line-2); transform:translateY(-1px); }
.tile .k { font-size:.74rem; text-transform:uppercase; letter-spacing:.12em; color:var(--gw-muted); font-weight:600; display:flex; align-items:center; gap:8px; }
.tile .v { font-family:var(--font-display); font-size:1.5rem; line-height:1.15; font-variant-numeric:tabular-nums; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.tile .s { font-size:.85rem; color:var(--text-2); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.dot { width:8px; height:8px; border-radius:50%; background:var(--gw-green); box-shadow:0 0 8px rgba(51,196,123,.5); display:inline-block; }
.tile .sk { height:1.5rem; width:60%; border-radius:6px; background:linear-gradient(90deg,#15161b,#1f2128,#15161b); background-size:200% 100%; animation:shimmer 1.6s linear infinite; }
@keyframes shimmer { 0%{background-position:200% 0} 100%{background-position:-200% 0} }

/* cards */
.card { background:var(--surface); border:1px solid var(--line); border-radius:var(--r); padding:22px; display:flex; flex-direction:column; gap:10px; transition:border-color .15s, transform .15s var(--gw-ease-out); }
a.card:hover { border-color:var(--line-2); transform:translateY(-1px); }
.card .head { display:flex; align-items:flex-start; justify-content:space-between; gap:12px; }
.card .sub { color:var(--gw-muted); font-size:.86rem; margin-top:2px; }
.card p { margin:0; color:var(--text-2); }
.card .foot { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-top:6px; flex-wrap:wrap; }
.card .now { display:inline-flex; align-items:center; gap:8px; font-size:.86rem; color:var(--text-2); }
.card .now b { color:var(--gw-text); }
.card .link { font-size:.9rem; font-weight:600; color:var(--gw-accent); text-decoration:none; }
.card .link:hover { text-decoration:underline; }
.card .mlist { margin:4px 0 0; padding-left:18px; color:var(--text-2); font-size:.93rem; }
.card .mlist li { margin:4px 0; }
.gw-chip { background:rgba(255,255,255,.03); }
.chip-lit { color:var(--gw-accent); border-color:rgba(var(--gw-accent-rgb),.45); }
.chip-lit::before { content:''; width:6px; height:6px; border-radius:50%; background:var(--gw-accent); box-shadow:0 0 8px rgba(var(--gw-accent-rgb),.8); }

/* lists: upcoming + standing */
.list { display:flex; flex-direction:column; border:1px solid var(--line); border-radius:var(--r); overflow:hidden; background:var(--surface); }
.row { display:grid; grid-template-columns:64px 1fr auto; gap:14px; align-items:center; padding:14px 18px; border-bottom:1px solid var(--line); color:inherit; text-decoration:none; transition:background .12s; }
.row:last-child { border-bottom:0; }
a.row:hover { background:var(--surface-2); }
.row .d { text-align:center; line-height:1.1; }
.row .d b { display:block; font-family:var(--font-display); font-size:1.35rem; }
.row .d span { font-size:.7rem; text-transform:uppercase; letter-spacing:.1em; color:var(--gw-muted); }
.row .t { min-width:0; }
.row .t b { display:block; font-weight:600; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.row .t span { font-size:.85rem; color:var(--gw-muted); display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.row .e { font-size:.76rem; color:var(--gw-muted); text-transform:uppercase; letter-spacing:.08em; white-space:nowrap; }
.row.today .d b { color:var(--gw-accent); }
.row.empty { grid-template-columns:1fr; color:var(--gw-muted); padding:22px 18px; }
.row.s { grid-template-columns:32px 40px 1fr auto; }
.row.s .rk { font-family:var(--font-display); font-weight:700; color:var(--gw-muted); text-align:center; }
.row.s.r1 .rk { color:var(--gw-accent); }
.row.s img { width:40px; height:40px; border-radius:50%; border:1px solid var(--line-2); background:#222; }
.row.s .lv { font-size:.85rem; color:var(--text-2); white-space:nowrap; }
.row.s .t span { font-family:var(--gw-font-lore); font-style:italic; }
.list .sk { height:66px; border-bottom:1px solid var(--line); background:linear-gradient(90deg,#121317,#1a1b21,#121317); background-size:200% 100%; animation:shimmer 1.6s linear infinite; }

/* the way */
.way { display:grid; gap:0 40px; grid-template-columns:1fr; }
@media (min-width:720px){ .way { grid-template-columns:1fr 1fr; } }
.tenet { padding:18px 0; border-top:1px solid var(--line); }
.tenet h3 { font-size:1.2rem; margin-bottom:4px; }
.tenet p { margin:0; color:var(--text-2); font-size:.96rem; }

/* band (grimfest) */
.band { display:flex; align-items:center; justify-content:space-between; gap:20px; flex-wrap:wrap; padding:26px; border:1px solid var(--line); border-radius:var(--r); background:linear-gradient(90deg, rgba(var(--gw-accent-rgb),.08), transparent 60%), var(--surface); }
.band p { margin:4px 0 0; color:var(--text-2); max-width:60ch; }

/* members */
.mehead { display:flex; align-items:center; gap:20px; flex-wrap:wrap; padding:22px; border-radius:var(--r); border:1px solid rgba(var(--gw-accent-rgb),.3); background:linear-gradient(160deg, rgba(var(--gw-accent-rgb),.1), transparent 55%), var(--surface); }
.medal { position:relative; width:88px; height:88px; border-radius:50%; overflow:hidden; flex:none; border:2px solid rgba(var(--gw-accent-rgb),.5); background:#2b2b2b; cursor:pointer; padding:0; }
.medal video, .medal img { width:100%; height:100%; object-fit:cover; }
.medal .av { position:absolute; inset:0; opacity:0; transition:opacity .5s; }
.medal.done .av { opacity:1; }
.mehead .n { font-size:1.5rem; }
.mehead .t { color:var(--gw-accent); font-family:var(--gw-font-lore); font-style:italic; margin:2px 0 0; }
.mehead .stats { display:flex; gap:16px; flex-wrap:wrap; margin-top:8px; color:var(--gw-muted); font-size:.86rem; }
.mehead .stats b { color:var(--gw-text); font-variant-numeric:tabular-nums; }
.mehead .go { margin-left:auto; }
@media (max-width:600px){ .mehead .go { margin-left:0; width:100%; } .mehead .go .gw-btn { width:100%; justify-content:center; } }
.notin { border-color:rgba(209,104,90,.5); }
.grid3 { display:grid; gap:12px; grid-template-columns:1fr; }
@media (min-width:640px){ .grid3 { grid-template-columns:repeat(2,1fr); } }
@media (min-width:900px){ .grid3 { grid-template-columns:repeat(3,1fr); } }
.grid3 .card { padding:18px; gap:4px; }
.grid3 .card h3 { font-size:1.1rem; }
.grid3 .card p { font-size:.9rem; }

/* calendar (agenda) */
.filters { display:flex; flex-wrap:wrap; gap:8px; margin:0 0 20px; }
.filters button { font:inherit; font-size:.85rem; color:var(--text-2); background:transparent; border:1px solid var(--line-2); border-radius:999px; padding:.35rem .85rem; cursor:pointer; }
.filters button[aria-pressed="true"] { color:var(--gw-accent); border-color:rgba(var(--gw-accent-rgb),.55); background:rgba(var(--gw-accent-rgb),.08); }
.month { margin:28px 0 10px; font-family:var(--font-display); font-size:1.25rem; }
.month:first-child { margin-top:0; }
.row .t .note { font-size:.85rem; color:var(--gw-muted); white-space:normal; margin-top:2px; display:block; }
.gate { text-align:center; padding:48px 20px; border:1px dashed var(--line-2); border-radius:var(--r); }
.gate p { color:var(--text-2); max-width:44ch; margin:0 auto 18px; }

/* atmosphere: a handful of ember motes adrift, nothing else */
.atmo { position:fixed; inset:0; z-index:0; pointer-events:none; overflow:hidden; }
.atmo .ember { position:absolute; bottom:-10px; width:3px; height:3px; border-radius:50%; background:rgb(var(--gw-accent-rgb)); box-shadow:0 0 6px rgba(var(--gw-accent-rgb),.8); opacity:0; animation:rise 14s linear infinite; }
@keyframes rise { 0%{ transform:translate(0,0); opacity:0 } 8%{ opacity:.7 } 85%{ opacity:.12 } 100%{ transform:translate(34px,-96vh); opacity:0 } }
@media (prefers-reduced-motion: reduce){ .atmo { display:none; } }
main, footer { position:relative; z-index:1; }
.top { z-index:60; }   /* header (and its dropdown) always above page content */

/* what people are playing right now (chips) */
.playing { display:flex; flex-wrap:wrap; gap:8px; margin:0 0 22px; align-items:center; }
.playing .gw-chip { font-size:.84rem; padding:.36rem .85rem; gap:.5rem; color:var(--text-2); }
.playing .gw-chip b { color:var(--gw-text); font-variant-numeric:tabular-nums; }
.playing .lbl { font-size:.78rem; text-transform:uppercase; letter-spacing:.12em; color:var(--gw-muted); font-weight:600; margin-right:4px; }
.playing .quiet { color:var(--gw-muted); font-family:var(--gw-font-lore); font-style:italic; font-size:.9rem; }

/* cookie notice: one essential cookie, so a notice not a consent wall */
.notice { position:fixed; left:16px; right:16px; bottom:16px; z-index:80; margin:0 auto; max-width:560px; display:flex; gap:14px; align-items:center; padding:14px 16px; background:rgba(18,19,23,.96); border:1px solid var(--line-2); border-radius:14px; box-shadow:0 12px 40px rgba(0,0,0,.5); font-size:.9rem; color:var(--text-2); }
.notice p { margin:0; flex:1; }
.notice a { color:var(--gw-accent); }

/* prose pages (privacy) */
.prose { max-width:68ch; }
.prose h2 { font-size:1.35rem; margin:32px 0 8px; }
.prose p, .prose li { color:var(--text-2); }
.prose ul { padding-left:20px; }
.prose .updated { color:var(--gw-muted); font-size:.85rem; }

/* footer */
footer { border-top:1px solid var(--line); padding:32px 0 48px; color:var(--gw-muted); font-size:.86rem; }
footer .wrap { display:flex; flex-wrap:wrap; gap:14px 24px; align-items:center; justify-content:space-between; }
footer a { color:var(--text-2); text-decoration:none; }
footer a:hover { color:var(--gw-accent); }
footer .links { display:flex; flex-wrap:wrap; gap:18px; }

@media (prefers-reduced-motion: reduce){ .tile, .card, .row { transition:none; } .sk { animation:none; } }

/* phones: give titles the room, drop the type column */
@media (max-width:560px){
  .row { grid-template-columns:52px 1fr; gap:12px; padding:12px 14px; }
  .row .e { display:none; }
  .row .t b, .row .t span { white-space:normal; }
  .row.s { grid-template-columns:28px 36px 1fr auto; }
  .row.s .lv { display:block; }
}

/* ---------- games dropdown (desktop) ---------- */
.topnav .drop { position:relative; display:inline-flex; align-items:center; }
.topnav .drop > a { display:inline-flex; align-items:center; gap:6px; }
.topnav .drop > a::after { content:''; width:6px; height:6px; border-right:1.5px solid currentColor; border-bottom:1.5px solid currentColor; transform:rotate(45deg) translateY(-2px); opacity:.7; }
.topnav .menu { position:absolute; top:calc(100% + 8px); left:0; min-width:260px; background:rgba(18,19,23,.98); border:1px solid var(--line-2); border-radius:14px; padding:8px; box-shadow:0 16px 40px rgba(0,0,0,.5); display:none; z-index:70; }
.topnav .drop:hover .menu, .topnav .drop:focus-within .menu, .topnav .drop.open .menu { display:block; }
.topnav .menu::before { content:''; position:absolute; left:0; right:0; top:-14px; height:14px; }   /* hover bridge across the gap */
.topnav .menu .g { padding:6px 4px 4px; }
.topnav .menu .g + .g { border-top:1px solid var(--line); margin-top:4px; padding-top:8px; }
.topnav .menu a { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:8px 10px; border-radius:9px; font-size:.92rem; color:var(--gw-text); }
.topnav .menu a small { color:var(--gw-muted); font-size:.78rem; }
.topnav .menu a.tool { padding-left:22px; color:var(--text-2); font-size:.88rem; }
.topnav .menu a.tool::before { content:'›'; margin-right:8px; color:var(--gw-accent); }
.sheet nav a.tool { font-family:var(--gw-font-ui); font-size:1rem; padding:10px 4px 10px 24px; color:var(--text-2); }

/* ---------- game page ---------- */
.gamehead { display:flex; align-items:flex-start; justify-content:space-between; gap:16px; flex-wrap:wrap; }
.gamehead h1 { font-size:clamp(1.9rem, 3.6vw, 2.6rem); }
.gamehead .sub { color:var(--gw-muted); margin:4px 0 0; }
.gamehead .lead { margin-top:14px; }
.crumb { font-size:.85rem; color:var(--gw-muted); margin:0 0 10px; }
.crumb a { color:var(--gw-muted); text-decoration:none; }
.crumb a:hover { color:var(--gw-accent); }
.info { display:grid; gap:12px; }
.info .card { padding:18px 20px; }

/* ---------- roster (ported from the Path, restyled) ---------- */
.panel { background:var(--surface); border:1px solid var(--line); border-radius:var(--r); padding:22px; margin-bottom:16px; }
.panel h3 { margin:0 0 2px; }
.panel .ph { color:var(--gw-muted); font-size:.88rem; margin:0 0 14px; }
.frow { display:flex; flex-wrap:wrap; gap:12px; }
.field { flex:1; min-width:150px; }
.field label { display:block; font-size:.74rem; text-transform:uppercase; letter-spacing:.1em; color:var(--gw-muted); margin-bottom:6px; font-weight:600; }
.panel select, .filters .field select { width:100%; background:var(--surface-2); border:1px solid var(--line-2); border-radius:10px; color:var(--gw-text); padding:.6rem .65rem; font-family:inherit; font-size:.95rem; }
.panel select:disabled { opacity:.5; }
.secs { display:flex; gap:8px; flex-wrap:wrap; }
.secs label { display:flex; align-items:center; gap:.45rem; font-size:.9rem; color:var(--gw-text); background:var(--surface-2); border:1px solid var(--line-2); border-radius:9px; padding:.45rem .7rem; cursor:pointer; }
.savebar { display:flex; align-items:center; gap:.8rem; margin-top:14px; }
.savemsg { font-size:.86rem; color:var(--gw-green); min-height:1.1em; }
.savemsg.err { color:#ff7a6e; }
.clearlink { margin-left:auto; color:var(--gw-muted); font-size:.84rem; text-decoration:none; cursor:pointer; } .clearlink:hover { color:#ff7a6e; }
.summary { background:var(--surface-2); border:1px solid var(--line); border-left:4px solid var(--line-2); border-radius:12px; padding:14px 16px; margin-bottom:16px; }
.summary.empty { color:var(--gw-muted); }
.summary .sumrc { font-size:1.15rem; font-weight:600; }
.summary .sumprof { font-size:.88rem; color:var(--gw-muted); margin-top:4px; }
.summary .sumprof .sec { opacity:.8; }
.rolepill { display:inline-block; font-size:.64rem; font-weight:700; padding:.1rem .45rem; border-radius:20px; text-transform:uppercase; letter-spacing:.04em; vertical-align:middle; color:#0d0b0a; margin-left:.25rem; }
.rolepill.role-tank { background:#5a9bd4; } .rolepill.role-healer { background:#57f287; } .rolepill.role-dps { background:#ed6a5e; }
.totline { font-size:.92rem; color:var(--gw-muted); margin:0 0 12px; }
.totline b { color:var(--gw-text); font-size:1.05rem; }
.stats { display:grid; grid-template-columns:1fr; gap:16px; }
@media (min-width:720px){ .stats { grid-template-columns:1fr 1fr; } }
.statblock h4 { font-size:.74rem; text-transform:uppercase; letter-spacing:.1em; color:var(--gw-muted); margin:0 0 8px; font-weight:600; }
.bar { display:flex; align-items:center; gap:10px; margin-bottom:6px; font-size:.88rem; }
.bar .bl { width:96px; flex:none; color:var(--gw-text); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.bar .bt { flex:1; height:14px; background:var(--surface-2); border-radius:6px; overflow:hidden; }
.bar .bf { display:block; height:100%; border-radius:6px; background:var(--gw-accent); min-width:2px; }
.bar .bn { width:30px; flex:none; text-align:right; color:var(--gw-muted); font-variant-numeric:tabular-nums; }
.rfilters { display:flex; gap:10px; flex-wrap:wrap; margin-bottom:18px; }
.rfilters .field { min-width:140px; flex:0 1 auto; }
.classgroup { margin-bottom:20px; }
.classgroup h4 { display:flex; align-items:center; gap:.5rem; font-size:1rem; margin:0 0 10px; padding-bottom:6px; border-bottom:1px solid var(--line); font-weight:600; }
.classgroup h4 .cdot { width:10px; height:10px; border-radius:50%; flex:none; }
.classgroup h4 .cnt { color:var(--gw-muted); font-weight:400; font-size:.85rem; }
.board { display:grid; grid-template-columns:repeat(auto-fill, minmax(220px, 1fr)); gap:10px; }
.pcard { position:relative; background:var(--surface-2); border:1px solid var(--line); border-radius:12px; padding:12px 14px; border-left:4px solid var(--line-2); }
.pcard.you { box-shadow:0 0 0 1px rgba(var(--gw-accent-rgb),.5); }
.pcard .ptop { display:flex; align-items:center; gap:.55rem; margin-bottom:8px; }
.pcard .pav { width:32px; height:32px; border-radius:50%; background:#222; flex:none; object-fit:cover; }
.pcard .pname { font-weight:600; font-size:.92rem; line-height:1.1; }
.pcard .pyou { font-size:.7rem; color:var(--gw-accent); }
.pcard .prc { font-size:.95rem; margin-bottom:4px; }
.pcard .pmain { display:flex; align-items:baseline; gap:8px; flex-wrap:wrap; margin:-2px 0 8px; font-family:var(--font-display); font-size:1.02rem; font-weight:600; color:var(--gw-text); text-decoration:none; }
.pcard .pmain span { font-family:var(--gw-font-ui); font-size:.78rem; font-weight:600; color:var(--gw-accent); }
.pcard a.pmain:hover span { text-decoration:underline; text-underline-offset:3px; }
#editorHint .linked { display:block; margin-top:6px; color:var(--gw-text); }
#editorHint .linked a { color:var(--gw-accent); font-weight:600; }
.pcard .pspec { font-size:.85rem; margin-bottom:4px; }
.pcard .ppf { font-size:.82rem; color:var(--gw-muted); line-height:1.4; }
.pcard .ppf .sec { opacity:.75; }
.empty { color:var(--gw-muted); text-align:center; padding:22px; }

/* ---------- members: your card, in HTML, in your colours ---------- */
.mecard { --rc:#e3a44e; --glow:227,164,78; --c1:#14161d; --c2:#101116; --accent:var(--rc);
  position:relative; display:grid; grid-template-columns:auto 1fr auto; grid-template-areas:"av who rk" "marks marks marks"; gap:8px 18px; align-items:center;
  padding:24px 26px; border-radius:18px; border:1px solid var(--line-2); overflow:hidden;
  background:radial-gradient(120% 140% at 100% 0%, rgba(var(--glow),.16), transparent 55%), linear-gradient(160deg, var(--c1), var(--c2)); box-shadow:0 20px 50px rgba(0,0,0,.45), 0 0 40px rgba(var(--glow),.08); }
.mecard .av { grid-area:av; width:72px; height:72px; border-radius:50%; border:2px solid rgba(var(--glow),.7); box-shadow:0 0 18px rgba(var(--glow),.35); background:#222; object-fit:cover; }
.mecard .who { grid-area:who; min-width:0; }
.mecard .n { font-size:clamp(1.5rem, 3vw, 2rem); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.mecard .t { color:var(--rc); font-family:var(--gw-font-lore); font-style:italic; margin:2px 0 8px; font-size:1.05rem; }
.mecard .stats { display:flex; gap:14px; flex-wrap:wrap; color:var(--gw-muted); font-size:.88rem; }
.mecard .stats b { color:var(--gw-text); font-variant-numeric:tabular-nums; }
.mecard .rk { grid-area:rk; text-align:right; font-family:var(--font-display); font-size:clamp(2rem, 4.5vw, 3.2rem); line-height:1; color:var(--rc); font-variant-numeric:tabular-nums; align-self:start; }
.mecard .rk .hash { font-size:.55em; opacity:.7; vertical-align:top; margin-right:2px; }
.mecard .rk small { display:block; font-family:var(--gw-font-ui); font-size:.7rem; letter-spacing:.12em; text-transform:uppercase; color:var(--gw-muted); margin-top:6px; }
.mecard .marks { grid-area:marks; display:flex; flex-wrap:wrap; gap:8px; margin-top:8px; }
.mecard .mark { display:inline-flex; align-items:center; gap:6px; font-size:.82rem; color:var(--text-2); background:rgba(0,0,0,.28); border:1px solid rgba(255,255,255,.08); border-radius:999px; padding:.3rem .7rem .3rem .45rem; }
.mecard .mark .em { font-size:1rem; line-height:1; display:inline-flex; }
.mecard .mark .em svg { width:18px; height:18px; color:var(--rc); fill:none; stroke:currentColor; }
.mecard .mark.deed { padding:.3rem .45rem; }
.mecard .mark.deed img { width:22px; height:22px; display:block; }
.mecard .mark.r-rare { border-color:rgba(90,155,212,.5); } .mecard .mark.r-epic { border-color:rgba(180,120,255,.5); } .mecard .mark.r-mythic { border-color:rgba(var(--glow),.7); }
.mecard .sigil { position:absolute; right:-10px; bottom:-14px; width:140px; height:140px; color:var(--rc); opacity:.12; pointer-events:none; }
.mecard .sigil svg { width:100%; height:100%; fill:currentColor; }
@media (max-width:560px){ .mecard { grid-template-columns:auto 1fr; grid-template-areas:"av who" "rk rk" "marks marks"; padding:20px; } .mecard .rk { text-align:left; margin-top:6px; } .mecard .rk small { display:inline; margin-left:8px; } }
.cardside { display:flex; flex-direction:column; gap:14px; align-items:flex-start; }
.cardside .lore { margin:0; font-size:.92rem; max-width:34ch; }
/* legacy (png) */
.cardwrap { display:grid; gap:18px; align-items:center; }
@media (min-width:860px){ .cardwrap { grid-template-columns:minmax(0, 1.4fr) minmax(0, 1fr); gap:32px; } }
.rankcard { width:100%; border-radius:14px; border:1px solid var(--line-2); box-shadow:0 20px 50px rgba(0,0,0,.5); background:#14161d; aspect-ratio:1000 / 340; object-fit:cover; }
.cardside .n { font-size:1.6rem; }
.cardside .t { color:var(--gw-accent); font-family:var(--gw-font-lore); font-style:italic; margin:2px 0 10px; }
.cardside .stats { display:flex; gap:16px; flex-wrap:wrap; color:var(--gw-muted); font-size:.88rem; margin:0 0 16px; }
.cardside .stats b { color:var(--gw-text); }

/* tidy-ups: dropdown tool rows left-aligned; secondary profession chips are not field labels */
.topnav .menu { min-width:300px; }
.topnav .menu a.tool { justify-content:flex-start; }
.secs label { text-transform:none; letter-spacing:0; font-size:.9rem; color:var(--gw-text); margin:0; font-weight:500; }

/* ---------- the Grimwood Way, in full ---------- */
.creedpage { max-width:720px; }
.creedpage .preface { font-family:var(--gw-font-lore); font-style:italic; color:#cdbfa8; font-size:1.05rem; margin:0 0 28px; }
.creedpage .intro p, .creedpage .closing p, .tenet-full p { color:var(--text-2); font-size:1.05rem; line-height:1.7; margin:0 0 1.1em; }
.creedpage .intro p:first-child { color:var(--gw-text); font-size:1.15rem; }
.tenet-full { position:relative; padding:30px 0 14px; margin-top:16px; border-top:1px solid var(--line); }
.tenet-full h2 { font-size:clamp(1.5rem, 2.6vw, 1.9rem); margin:0 0 12px; }
.tenet-full .num { position:absolute; right:0; top:26px; font-family:var(--font-display); font-size:2.4rem; line-height:1; color:rgba(var(--gw-accent-rgb),.18); }
.tenet-full p:last-child { margin-bottom:0; }
.creedpage .closing { margin-top:40px; padding-top:28px; border-top:1px solid var(--line); }
.creedpage .closing p { font-family:var(--font-display); font-size:1.35rem; color:var(--gw-text); line-height:1.4; }
.creedpage .closing p:last-child { font-family:var(--gw-font-lore); font-style:italic; font-size:1.05rem; color:#cdbfa8; }

/* ---------- characters (RP directory) ---------- */
.minelist { display:flex; flex-wrap:wrap; gap:8px; margin:0 0 14px; }
.minechip { font:inherit; color:var(--gw-text); background:var(--surface-2); border:1px solid var(--line-2); border-left:4px solid var(--line-2); border-radius:10px; padding:.5rem .8rem; cursor:pointer; }
.minechip:hover { border-color:rgba(var(--gw-accent-rgb),.5); }
.minechip .muted { color:var(--gw-muted); font-size:.82rem; }
.chred { margin-top:16px; padding:18px; border:1px solid var(--line-2); border-radius:14px; background:var(--surface-2); }
.chred input[type=text], .chred input:not([type]), .chred input[type=search], .chred textarea, .rfilters input[type=search] { width:100%; font:inherit; color:var(--gw-text); background:var(--surface); border:1px solid var(--line-2); border-radius:10px; padding:.6rem .7rem; }
.chred textarea { resize:vertical; line-height:1.5; }
.chred .count { text-align:right; font-size:.76rem; color:var(--gw-muted); margin-top:4px; }
.chred .chk { display:inline-flex; align-items:center; gap:.5rem; font-size:.92rem; color:var(--gw-text); }
.chred .preview summary { cursor:pointer; color:var(--gw-muted); font-size:.88rem; }
.chrgrid { display:grid; grid-template-columns:repeat(auto-fill, minmax(280px, 1fr)); gap:12px; align-items:start; }
/* ---- Character directory (characters.js): one card per member, their main as the hero, alts as crest tokens ---- */
.dhead { display:flex; align-items:baseline; gap:14px; flex-wrap:wrap; margin-bottom:14px; }
.dhead h3 { margin:0; }
.dcount { margin:0; font-size:.9rem; color:var(--gw-muted); }
.dcount b { color:var(--gw-text); font-weight:600; }
.clearf { font:inherit; font-size:.85rem; font-weight:600; color:var(--gw-accent); background:none; border:0; padding:0 0 0 6px; cursor:pointer; }
.dfilters { margin-bottom:20px; }
.fsearch { display:flex; gap:10px; }
.fsearch input { flex:1; min-width:0; font:inherit; color:var(--gw-text); background:var(--surface); border:1px solid var(--line-2); border-radius:999px; padding:.65rem 1.1rem; }
.fsearch input:focus { outline:none; border-color:rgba(var(--gw-accent-rgb),.6); box-shadow:0 0 0 3px rgba(var(--gw-accent-rgb),.15); }
.fmore { flex:none; font:inherit; font-size:.88rem; font-weight:600; color:var(--gw-text); background:var(--surface); border:1px solid var(--line-2); border-radius:999px; padding:0 1rem; cursor:pointer; }
.fmore b { display:inline-grid; place-items:center; min-width:20px; height:20px; margin-left:4px; border-radius:999px; background:var(--gw-accent); color:#1a1208; font-size:.75rem; }
.fmore.open { border-color:rgba(var(--gw-accent-rgb),.55); }
.fextra { display:flex; gap:10px; flex-wrap:wrap; margin-top:12px; }
.fextra .field { min-width:160px; }
.fclasses { display:flex; flex-wrap:wrap; gap:8px; margin-top:12px; padding:2px; }
.fcls { flex:none; display:inline-flex; align-items:center; gap:7px; font:inherit; font-size:.85rem; color:var(--gw-text); background:var(--surface); border:1px solid var(--line-2); border-radius:999px; padding:.35rem .8rem .35rem .45rem; cursor:pointer; transition:background .15s, border-color .15s, transform .15s, box-shadow .15s; }
.fcls .fic { display:grid; place-items:center; width:28px; height:28px; border-radius:50%; color:var(--cc); background:color-mix(in srgb, var(--cc) 14%, transparent); }
.fcls .fn { font-size:.75rem; color:var(--gw-muted); font-variant-numeric:tabular-nums; }
.fcls:hover { border-color:color-mix(in srgb, var(--cc) 60%, transparent); transform:translateY(-1px); }
.fcls.on { background:color-mix(in srgb, var(--cc) 20%, var(--surface)); border-color:var(--cc); box-shadow:0 0 0 1px var(--cc), 0 4px 16px color-mix(in srgb, var(--cc) 25%, transparent); }
.fcls.on .fic { background:var(--cc); color:#14110d; }
.fcls.on .fn { color:var(--gw-text); }
.fcls.none { color:var(--text-2); } .fcls.none .fic { opacity:.45; }   /* text stays readable (>= 4.5:1); only the icon fades */
.crest-img { display:block; object-fit:contain; }

.dgrid { grid-template-columns:repeat(auto-fill, minmax(290px, 1fr)); gap:16px; align-items:stretch; }
.mem { --cc:#9a8f80; position:relative; display:flex; flex-direction:column; background:var(--surface-2); border:1px solid var(--line); border-radius:16px; overflow:hidden; transition:transform .18s ease, box-shadow .18s ease, border-color .18s ease; }
.mem::before { content:''; position:absolute; inset:0 0 auto; height:120px; pointer-events:none;
  background:radial-gradient(120% 100% at 0% 0%, color-mix(in srgb, var(--cc) 22%, transparent) 0%, transparent 70%); }
.mem:hover { transform:translateY(-3px); border-color:color-mix(in srgb, var(--cc) 45%, var(--line)); box-shadow:0 14px 34px rgba(0,0,0,.45), 0 0 0 1px color-mix(in srgb, var(--cc) 25%, transparent); }
.mem.you { border-color:rgba(var(--gw-accent-rgb),.45); }
.mem .hero { position:relative; display:grid; grid-template-columns:auto 1fr; column-gap:14px; align-items:center; text-align:left; width:100%; font:inherit; color:inherit; background:none; border:0; padding:18px 18px 12px; cursor:pointer; }
.mem .hero:focus-visible { outline:2px solid var(--cc); outline-offset:-4px; border-radius:14px; }
.mem .plate { grid-row:1 / span 2; position:relative; }
.mem .crest { display:grid; place-items:center; width:62px; height:62px; border-radius:50%; color:var(--cc);
  background:radial-gradient(circle at 35% 30%, color-mix(in srgb, var(--cc) 30%, #2a2420) 0%, #17130f 75%);
  box-shadow:inset 0 0 0 1px rgba(201,164,92,.55), inset 0 0 0 4px rgba(0,0,0,.35), 0 0 0 1px rgba(0,0,0,.6), 0 6px 14px rgba(0,0,0,.4);
  transition:box-shadow .2s, transform .2s; }
.mem .crest .crest-img { width:56px; height:56px; }
.mem:hover .crest { transform:scale(1.05); box-shadow:inset 0 0 0 1px rgba(201,164,92,.8), inset 0 0 0 4px rgba(0,0,0,.35), 0 0 0 1px rgba(0,0,0,.6), 0 0 22px color-mix(in srgb, var(--cc) 55%, transparent); }
.mem .fresh { position:absolute; left:50%; bottom:-7px; transform:translateX(-50%); white-space:nowrap; font-size:.62rem; font-weight:700; letter-spacing:.06em; text-transform:uppercase; color:#1a1208; background:var(--gw-accent); border-radius:999px; padding:.12rem .45rem; box-shadow:0 2px 6px rgba(0,0,0,.4); }
.mem .hname { font-family:var(--font-display); font-size:1.4rem; font-weight:600; line-height:1.1; color:var(--gw-text); overflow-wrap:anywhere; align-self:end; }
.mem .hsub { font-size:.86rem; color:var(--cc); align-self:start; margin-top:3px; }
.mem .hmain { color:var(--gw-muted); }
.mem .teaser { grid-column:1 / -1; margin-top:14px; font-family:var(--gw-font-lore); font-style:italic; font-size:.98rem; line-height:1.5; color:#d9cbb2;
  display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
.mem .teaser::before { content:'\201C'; color:var(--cc); font-size:1.3em; line-height:0; margin-right:2px; vertical-align:-.15em; }
.mem .teaser.unwritten { color:var(--gw-muted); }
.mem .teaser.unwritten::before, .mem .teaser.own::before { content:none; }
.mem .hero::after { content:'Open the book \203A'; grid-column:1 / -1; justify-self:start; margin-top:10px; font-size:.8rem; font-weight:600; color:var(--gw-accent); opacity:0; transform:translateX(-4px); transition:opacity .18s, transform .18s; }
.mem:hover .hero::after, .mem .hero:focus-visible::after { opacity:1; transform:none; }
.hprofs { display:flex; flex-wrap:wrap; gap:6px; padding:0 18px; }
.pchip { font-size:.76rem; color:var(--gw-text); background:rgba(255,255,255,.05); border:1px solid var(--line); border-radius:999px; padding:.18rem .6rem; }
.pchip.sec { color:var(--gw-muted); }
.tokens { display:flex; flex-wrap:wrap; gap:6px; padding:12px 18px 0; }
.token { position:relative; display:inline-flex; align-items:center; gap:6px; max-width:100%; font:inherit; font-size:.82rem; color:var(--gw-text); background:var(--surface); border:1px solid var(--line-2); border-radius:999px; padding:.22rem .7rem .22rem .25rem; cursor:pointer; transition:border-color .15s, transform .15s, background .15s; }
.token .tcr { display:grid; place-items:center; width:24px; height:24px; border-radius:50%; color:var(--cc); background:color-mix(in srgb, var(--cc) 16%, #17130f); flex:none; }
.token .tcr .crest-img { width:22px; height:22px; }
.token .tn { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.token.blank .tn { color:var(--gw-muted); }
.token:hover, .token:focus-visible { border-color:var(--cc); background:color-mix(in srgb, var(--cc) 10%, var(--surface)); transform:translateY(-1px); outline:none; }
.token .tfresh { width:7px; height:7px; border-radius:50%; background:var(--gw-accent); box-shadow:0 0 6px var(--gw-accent); flex:none; }
.mfoot { margin-top:auto; display:flex; align-items:center; gap:8px; padding:14px 18px 14px; font-size:.8rem; color:var(--gw-muted); }
.mem .hprofs + .mfoot, .mem .tokens + .mfoot, .mem .hero + .mfoot { margin-top:auto; border-top:0; }
.mfoot .pav { width:22px; height:22px; border-radius:50%; background:#2a2420; flex:none; object-fit:cover; }
.mfoot .mname { color:var(--gw-text); font-weight:600; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.mfoot .pyou { font-size:.68rem; font-weight:700; letter-spacing:.05em; text-transform:uppercase; color:var(--gw-accent); border:1px solid rgba(var(--gw-accent-rgb),.5); border-radius:999px; padding:.05rem .4rem; }
.mfoot .mcount { margin-left:auto; white-space:nowrap; }
.mem .mfoot { border-top:1px solid var(--line); margin-top:16px; }
.mem > .mfoot:last-child { margin-top:auto; }
.mem .hero + .hprofs, .mem .hero + .tokens { margin-top:2px; }

/* Your characters: a shelf of slots, the same crests, and an empty one to write someone new */
.shelf { display:grid; grid-template-columns:repeat(auto-fill, minmax(210px, 1fr)); gap:10px; }
.slot { --cc:var(--gw-accent); position:relative; display:grid; grid-template-columns:auto 1fr; grid-template-rows:auto auto auto; column-gap:10px; align-items:center; text-align:left; font:inherit; color:var(--gw-text); background:var(--surface-2); border:1px solid var(--line-2); border-radius:14px; padding:12px; cursor:pointer; transition:transform .15s, border-color .15s, box-shadow .15s; }
.slot:hover, .slot:focus-visible { transform:translateY(-2px); border-color:color-mix(in srgb, var(--cc) 60%, transparent); box-shadow:0 8px 20px rgba(0,0,0,.35); outline:none; }
.slot.on { border-color:var(--cc); box-shadow:0 0 0 1px var(--cc); }
.slot .screst { grid-row:1 / span 3; display:grid; place-items:center; width:42px; height:42px; border-radius:50%; color:var(--cc); background:radial-gradient(circle at 35% 30%, color-mix(in srgb, var(--cc) 28%, #2a2420), #17130f 75%); box-shadow:inset 0 0 0 1px rgba(201,164,92,.5); }
.slot .screst .crest-img { width:38px; height:38px; }
.slot .sname { font-family:var(--font-display); font-weight:600; font-size:1.02rem; line-height:1.15; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.slot .ssub { font-size:.76rem; color:var(--gw-muted); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.slot .sstate { font-size:.7rem; font-weight:600; color:#7fc49a; }
.slot .sstate::before { content:'\25CF'; margin-right:4px; font-size:.6rem; vertical-align:.1em; }
.slot .sstate.todo { color:var(--gw-accent); }
.slot.add { --cc:var(--gw-accent); background:transparent; border:1.5px dashed rgba(var(--gw-accent-rgb),.45); color:var(--gw-accent); }
.slot.add .plus { grid-row:1 / span 3; display:grid; place-items:center; width:42px; height:42px; border-radius:50%; border:1.5px dashed rgba(var(--gw-accent-rgb),.6); font-size:1.4rem; line-height:1; }
.slot.add .sname { color:var(--gw-accent); }
.edbtns { margin-left:auto; display:flex; gap:8px; align-items:center; flex-wrap:wrap; }
.edbtns .link.danger { font:inherit; font-size:.82rem; color:var(--gw-muted); background:none; border:0; cursor:pointer; margin-right:6px; }
.edbtns .link.danger:hover { color:#ff7a6e; }

/* the shimmer on whatever you just saved */
@media (prefers-reduced-motion: no-preference) {
  .mem.saved, .slot.saved { animation:gwSaved 1.6s ease-out; }
  .mem.saved .crest, .slot.saved .screst { animation:gwSavedCrest 1.6s ease-out; }
}
@keyframes gwSaved { 0% { box-shadow:0 0 0 2px rgba(201,164,92,.9), 0 0 30px rgba(201,164,92,.55); } 100% { box-shadow:0 0 0 0 rgba(201,164,92,0); } }
@keyframes gwSavedCrest { 0% { transform:scale(1); } 25% { transform:scale(1.15) rotate(-4deg); } 55% { transform:scale(.97); } 100% { transform:scale(1); } }

@media (max-width:620px) {
  .fsearch input { padding:.6rem .9rem; }
  .mem .hero { padding:16px 16px 10px; }
  .hprofs, .tokens { padding-left:16px; padding-right:16px; }
  .mfoot { padding:12px 16px; }
  .mem .hero::after { display:none; }
  .shelf { grid-template-columns:1fr; }
  .fsearch { flex-wrap:wrap; }
  .fsearch input { flex-basis:100%; }
  .fmore { padding:.45rem .9rem; }
  /* one swipeable row of class crests instead of three wrapped lines */
  .fclasses { flex-wrap:nowrap; overflow-x:auto; padding:2px 2px 8px; margin-left:-2px; margin-right:-2px; scrollbar-width:none; }
  .fclasses::-webkit-scrollbar { display:none; }
}
@media (hover:none) { .mem:hover { transform:none; } }

/* ---- The book: a bio opens as a leather-bound spread over the page (characters.js openBook) ---- */
html:has(dialog.tome[open]) { overflow:hidden; }
dialog.tome { --ink:#3a2817; --ink-2:#6b4f33; --rubric:#8e2a1c; --gilt:#c9a45c;
  padding:0; border:0; background:none; max-width:min(1040px, calc(100vw - 32px)); width:100%; overflow:visible; color:var(--ink); }
dialog.tome::backdrop { background:rgba(6,5,4,.8); backdrop-filter:blur(3px); }
.tome-cover { position:relative; padding:18px; border-radius:10px;
  background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='l'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.55' numOctaves='4' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .45 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23l)'/%3E%3C/svg%3E"), radial-gradient(ellipse at 30% 20%, #5a3722 0%, #3b2314 55%, #24150c 100%);
  box-shadow:0 30px 80px rgba(0,0,0,.65), inset 0 0 0 1px rgba(0,0,0,.6), inset 0 0 0 7px rgba(201,164,92,0), inset 0 2px 1px rgba(255,220,170,.12); }
.tome-cover::before { content:''; position:absolute; inset:7px; border:1px solid rgba(201,164,92,.55); border-radius:6px; pointer-events:none; }
.tcorner { position:absolute; width:34px; height:34px; color:var(--gilt); opacity:.9; pointer-events:none; z-index:2; }
.tcorner svg { width:100%; height:100%; display:block; }
.tcorner.tl { top:4px; left:4px; } .tcorner.tr { top:4px; right:4px; transform:scaleX(-1); }
.tcorner.bl { bottom:4px; left:4px; transform:scaleY(-1); } .tcorner.br { bottom:4px; right:4px; transform:scale(-1,-1); }
.tome-x { position:absolute; top:-14px; right:-14px; z-index:3; width:36px; height:36px; border-radius:50%; border:1px solid var(--gilt); background:#24150c; color:#f0dcae; font-size:1.3rem; line-height:1; cursor:pointer; box-shadow:0 4px 12px rgba(0,0,0,.5); }
.tome-x:hover, .tome-x:focus-visible { background:#3b2314; outline:none; box-shadow:0 0 0 3px rgba(201,164,92,.35); }
.tome-pages { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); border-radius:3px; overflow:hidden; perspective:1600px;
  background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='240'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .32 0 0 0 0 .22 0 0 0 0 .1 0 0 0 .22 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E"), url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='600' height='600'%3E%3Cfilter id='m'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.012' numOctaves='4' seed='7' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .45 0 0 0 0 .3 0 0 0 0 .12 0 0 0 -.7 .34'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23m)'/%3E%3C/svg%3E"), linear-gradient(90deg, #e9dbbd 0%, #f1e6cc 46%, #c9b48d 49.6%, #a8916a 50%, #c9b48d 50.4%, #f1e6cc 54%, #e7d7b5 100%);
  background-size:240px 240px, cover, auto;
  box-shadow:inset 0 0 40px rgba(110,72,30,.35), inset 0 0 6px rgba(80,50,20,.4); }
.tpage { position:relative; padding:44px 46px 40px; min-height:min(68vh, 600px); }
.tleft { display:flex; flex-direction:column; align-items:center; text-align:center;
  background:linear-gradient(90deg, transparent 80%, rgba(90,60,25,.16) 100%); }
.tright { background:linear-gradient(90deg, rgba(90,60,25,.22) 0%, transparent 10%); padding-left:50px; }
.tkept { font-size:.72rem; letter-spacing:.16em; text-transform:uppercase; color:var(--ink-2); margin-top:12px; }
.tcrest { margin-top:16px; display:grid; place-items:center; width:76px; height:76px; border-radius:50%; background:radial-gradient(circle at 35% 30%, #4a3a2a, #1d1610 80%); box-shadow:inset 0 0 0 1.5px var(--gilt), inset 0 0 0 5px rgba(0,0,0,.35), 0 4px 10px rgba(60,40,20,.35); }
.tcrest .crest-img { width:68px; height:68px; }
.tome-act { font:inherit; font-family:var(--font-display); font-size:.9rem; font-weight:600; color:#f6ead0; background:linear-gradient(#8e2a1c, #6e1f14); border:1px solid #4d150d; border-radius:999px; padding:.45rem 1.1rem; cursor:pointer; box-shadow:0 2px 0 rgba(0,0,0,.25), inset 0 1px 0 rgba(255,255,255,.18); }
.tome-act:hover, .tome-act:focus-visible { filter:brightness(1.12); outline:none; }
.tome-act.quiet { background:none; color:var(--ink-2); border-color:rgba(58,40,23,.35); box-shadow:none; font-family:inherit; font-weight:400; font-size:.82rem; }
.tname { font-family:var(--font-display); font-size:clamp(1.7rem, 3.2vw, 2.5rem); font-weight:600; color:var(--ink); line-height:1.05; margin:14px 0 0; overflow-wrap:anywhere; text-shadow:0 1px 0 rgba(255,255,255,.35); }
.tplan { margin-top:6px; font-family:var(--gw-font-lore); font-style:italic; font-size:.92rem; color:var(--ink-2); }
.tmain { margin-top:10px; font-family:var(--font-display); font-style:italic; font-size:.95rem; color:var(--rubric); }
.tsub { margin-top:10px; font-family:var(--gw-font-lore); font-size:1.02rem; color:var(--ink); display:inline-flex; align-items:center; gap:8px; }
.tsw { width:9px; height:9px; transform:rotate(45deg); box-shadow:0 0 0 1px rgba(58,40,23,.7); display:inline-block; }
.torn { width:150px; color:var(--ink-2); opacity:.75; margin:22px 0 18px; }
.torn svg { display:block; width:100%; height:auto; }
.tprofs { font-family:var(--gw-font-lore); font-size:1rem; line-height:1.55; color:var(--ink); }
.tprofs .tsec { color:var(--ink-2); font-size:.92rem; }
.tprofs .tcraft { font-style:italic; color:var(--ink-2); margin-top:8px; font-size:.92rem; }
.tfoot { margin-top:auto; padding-top:24px; width:100%; display:flex; flex-direction:column; align-items:center; gap:12px; font-family:var(--gw-font-lore); font-style:italic; font-size:.82rem; color:var(--ink-2); }
.tome-turn { display:flex; align-items:center; gap:14px; font-style:normal; font-family:var(--font-display); font-size:.85rem; color:var(--ink); }
.tome-turn button { width:32px; height:32px; border-radius:50%; border:1px solid rgba(58,40,23,.45); background:rgba(255,248,230,.35); color:var(--ink); font-size:1.25rem; line-height:1; cursor:pointer; }
.tome-turn button:hover:not(:disabled), .tome-turn button:focus-visible { background:rgba(255,248,230,.75); outline:none; }
.tome-turn button:disabled { opacity:.3; cursor:default; }
.tscroll { max-height:min(68vh, 600px); overflow-y:auto; padding-right:10px; margin-right:-10px; scrollbar-width:thin; scrollbar-color:rgba(107,79,51,.5) transparent; }
.bio-book { font-family:var(--gw-font-lore); font-size:1.06rem; line-height:1.7; color:var(--ink); }
.bio-book p { margin:0 0 .9em; } .bio-book p:last-child { margin-bottom:0; }
.bio-book > p:first-of-type { display:flow-root; }   /* a one-line opening paragraph still makes room for the drop cap */
.bio-book > p:first-of-type:not(.tnone)::first-letter { font-family:var(--font-display); font-weight:700; float:left; font-size:3.6em; line-height:.82; margin:.06em .08em -.05em 0; color:var(--rubric); text-shadow:1px 1px 0 rgba(201,164,92,.6); }
.bio-book h4, .bio-book h5, .bio-book h6 { font-family:var(--font-display); color:var(--ink); font-weight:600; margin:1.1em 0 .35em; font-size:1.2rem; }
.bio-book h4:first-child, .bio-book h5:first-child, .bio-book h6:first-child { margin-top:0; }
.bio-book h5 { font-size:1.08rem; } .bio-book h6 { font-size:.98rem; font-style:italic; }
.bio-book ul, .bio-book ol { padding-left:22px; margin:0 0 .9em; }
.bio-book li::marker { color:var(--rubric); }
.bio-book blockquote { margin:0 0 .9em; padding:.1em 0 .1em 14px; border-left:2px solid rgba(142,42,28,.55); font-style:italic; color:var(--ink-2); }
.bio-book code { font-family:ui-monospace, monospace; font-size:.88em; background:rgba(90,60,25,.1); padding:.05em .35em; border-radius:3px; }
.bio-book hr { border:0; height:14px; margin:1em auto; width:120px; background:currentColor; opacity:.45; -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 14'%3E%3Cpath d='M2 7h44M74 7h44' stroke='black'/%3E%3Cpath d='M60 1l6 6-6 6-6-6z'/%3E%3C/svg%3E") center/contain no-repeat; mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 14'%3E%3Cpath d='M2 7h44M74 7h44' stroke='black'/%3E%3Cpath d='M60 1l6 6-6 6-6-6z'/%3E%3C/svg%3E") center/contain no-repeat; }
.bio-book s { opacity:.7; }
.tnone { font-style:italic; color:var(--ink-2); }
@media (prefers-reduced-motion: no-preference) {
  dialog.tome[open] .tome-cover { animation:tomeIn .32s cubic-bezier(.2,.8,.3,1); }
  dialog.tome[open] .tright { transform-origin:left center; animation:tomeOpen .55s cubic-bezier(.2,.75,.25,1); }
  .tome-pages.turn .tright, .tome-pages.turn .tleft { animation:tomeFade .28s ease-out; }
}
@keyframes tomeIn { from { opacity:0; transform:translateY(10px) scale(.97); } }
@keyframes tomeOpen { from { transform:rotateY(-70deg); opacity:.2; } }
@keyframes tomeFade { from { opacity:0; } }
/* phone: one page, everything in a single scroll */
@media (max-width:760px) {
  dialog.tome { max-width:calc(100vw - 20px); }
  .tome-cover { padding:12px; }
  .tcorner { width:24px; height:24px; }
  .tome-x { top:-10px; right:-6px; }
  .tome-pages { display:block; max-height:calc(100dvh - 60px); overflow-y:auto; background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='240'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .32 0 0 0 0 .22 0 0 0 0 .1 0 0 0 .22 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E"), url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='600' height='600'%3E%3Cfilter id='m'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.012' numOctaves='4' seed='7' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .45 0 0 0 0 .3 0 0 0 0 .12 0 0 0 -.7 .34'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23m)'/%3E%3C/svg%3E"), linear-gradient(#efe3c7, #e7d7b5); background-size:240px 240px, cover, auto; }
  .tpage { min-height:0; padding:30px 22px 22px; }
  .tleft { background:none; padding-bottom:6px; }
  .tkept { margin-top:6px; }
  .tright { background:none; padding:6px 22px 30px; }
  .tscroll { max-height:none; overflow:visible; margin:0; padding:0; }
  .tfoot { padding-top:16px; }
  dialog.tome[open] .tright { animation:none; }
}
.bio-body { color:var(--text-2); font-size:.95rem; line-height:1.6; margin-top:8px; }
.bio-body p { margin:0 0 .8em; } .bio-body p:last-child { margin-bottom:0; }
.bio-body h4, .bio-body h5, .bio-body h6 { font-family:var(--font-display); color:var(--gw-text); margin:.8em 0 .3em; font-size:1.05rem; }
.bio-body ul, .bio-body ol { padding-left:20px; margin:0 0 .8em; }
.bio-body blockquote { border-left:2px solid rgba(var(--gw-accent-rgb),.5); margin:0 0 .8em; padding-left:12px; color:#cdbfa8; font-family:var(--gw-font-lore); font-style:italic; }
.bio-body code { font-family:ui-monospace, monospace; font-size:.9em; background:rgba(255,255,255,.06); padding:.05em .35em; border-radius:4px; }
.bio-body hr { border:0; border-top:1px solid var(--line); margin:.8em 0; }
.cactions { display:flex; align-items:center; gap:12px; margin-top:10px; }
.cactions .link { font:inherit; font-size:.84rem; font-weight:600; color:var(--gw-accent); background:none; border:0; padding:0; cursor:pointer; }
/* Retire / Remove: quiet, smaller, not bold, and pushed to the far end so it is never next to Edit (it was too easy
   to hit by accident). It only shows its colour on hover / focus, and it always asks first (GW.confirm). */
.cactions .link.danger { margin-left:auto; font-weight:400; font-size:.8rem; color:var(--gw-muted); opacity:.75; transition:color .15s, opacity .15s; }
.cactions .link.danger:hover, .cactions .link.danger:focus-visible { color:#ff7a6e; opacity:1; }

/* GW.confirm dialog (site.js) */
.gw-confirm { border:1px solid var(--line); border-radius:14px; background:var(--surface-2); color:var(--gw-text); padding:1.1rem 1.2rem; max-width:min(420px, calc(100vw - 2rem)); box-shadow:0 24px 60px rgba(0,0,0,.55); }
.gw-confirm::backdrop { background:rgba(6,6,9,.6); backdrop-filter:blur(2px); }
.gw-confirm h3 { margin:0 0 .4rem; font-family:var(--font-display); font-size:1.15rem; }
.gw-confirm .gw-confirm-body { margin:0; color:var(--gw-muted); font-size:.9rem; line-height:1.5; }
.gw-confirm .gw-confirm-row { display:flex; gap:.6rem; justify-content:flex-end; margin-top:1.1rem; flex-wrap:wrap; }
.gw-btn--danger { --b:255,122,110; color:#ffd9d4; background:linear-gradient(180deg, rgba(181,69,63,.5), rgba(181,69,63,.28)); border-color:rgba(255,122,110,.75); }
.gw-btn--danger:hover { box-shadow:0 6px 20px rgba(181,69,63,.35); }
@media (max-width:420px){ .gw-confirm .gw-confirm-row { flex-direction:column-reverse; } .gw-confirm .gw-confirm-row .gw-btn { width:100%; justify-content:center; } }
.field label .muted { text-transform:none; letter-spacing:0; font-weight:400; color:var(--gw-muted); }

/* Guild info sections (Forever): Discord #guild-info, redrawn. Banner = title strip with the mascot bust on the right. */
.ginfo { display:flex; flex-direction:column; gap:34px; padding-top:22px; }
.gsec { background:var(--surface); border:1px solid var(--line); border-radius:var(--r); }
.gsec .banner { position:relative; min-height:118px; border-radius:var(--r) var(--r) 0 0; display:flex; align-items:center; padding:22px 190px 22px 26px;
  background:radial-gradient(120% 160% at 0% 100%, rgba(227,164,78,.18), transparent 55%), linear-gradient(90deg, #1a1c24, #101116 70%); border-bottom:1px solid var(--line); }
.gsec .banner::after { content:""; position:absolute; inset:0; pointer-events:none; border-radius:inherit; background:repeating-linear-gradient(135deg, rgba(255,255,255,.02) 0 2px, transparent 2px 9px); }
.gsec .banner h3 { font-family:'Fraunces', serif; font-weight:500; font-size:clamp(1.5rem, 3.2vw, 2.1rem); letter-spacing:.01em; margin:0; color:var(--gw-text); text-shadow:0 2px 14px rgba(0,0,0,.6); }
.gsec .banner .tag { margin:6px 0 0; color:var(--gw-accent); font-size:.86rem; letter-spacing:.08em; text-transform:uppercase; }
.gsec .banner .mascot { position:absolute; right:14px; bottom:0; height:150px; width:auto; z-index:1; image-rendering:auto; filter:drop-shadow(0 6px 16px rgba(0,0,0,.6)); }
.gsec .banner .glyph { position:absolute; right:26px; top:50%; transform:translateY(-50%); height:92px; width:92px; color:var(--gw-accent); opacity:.28; filter:drop-shadow(0 0 18px rgba(227,164,78,.35)); }
.gsec .body { padding:22px 26px 24px; color:var(--text-2); line-height:1.65; }
.gsec .body p { margin:0 0 14px; } .gsec .body p:last-child { margin-bottom:0; }
.gsec .body ul { margin:0 0 14px; padding-left:20px; } .gsec .body li { margin:4px 0; }
.gsec .body b { color:var(--gw-text); } .gsec .body a { color:var(--gw-accent); }
@media (max-width:560px){ .gsec .banner { padding-right:150px; min-height:100px; } .gsec .banner .mascot { height:100px; right:4px; } .gsec .banner .glyph { height:64px; width:64px; right:18px; } .gsec .body { padding:18px 18px 20px; } }

/* Forever: professions on character cards (Character Bios) */
.chr .cprofs { margin-top:8px; font-size:.86rem; color:var(--gw-text); }
.chr .cprofs .muted, .cprof .muted, .req .muted { color:var(--gw-muted); }
.cnote { font-size:.82rem; color:var(--text-2); font-style:italic; margin-top:2px; }

/* Forever: Crafting page */
.panel input[type=number], .panel input:not([type]), .panel input[type=search] { width:100%; font:inherit; color:var(--gw-text); background:var(--surface-2); border:1px solid var(--line-2); border-radius:10px; padding:.6rem .7rem; }
.phead { display:flex; gap:12px; align-items:flex-start; justify-content:space-between; flex-wrap:wrap; }
.phead .field { min-width:160px; }
.reqs { display:flex; flex-direction:column; gap:10px; }
.req { display:flex; gap:12px; align-items:flex-start; flex-wrap:wrap; background:var(--surface-2); border:1px solid var(--line); border-left:4px solid var(--line-2); border-radius:12px; padding:12px 14px; }
.req.you { box-shadow:0 0 0 1px rgba(var(--gw-accent-rgb),.4); }
.req.st-open { border-left-color:var(--gw-accent); } .req.st-claimed { border-left-color:#5a9bd4; } .req.st-done { border-left-color:var(--gw-green); opacity:.8; } .req.st-cancelled { opacity:.55; }
.req .rmain { flex:1 1 240px; min-width:0; }
.req .ritem { font-size:1rem; } .req .qty { color:var(--gw-accent); font-weight:700; }
.rchip { font-size:.66rem; padding:.08rem .5rem; vertical-align:middle; }
.req .rmeta, .orow .rmeta { font-size:.82rem; color:var(--gw-muted); margin-top:2px; }
.req .rnote { font-size:.86rem; color:var(--text-2); margin-top:4px; }
.req .rstate { font-size:.84rem; margin-top:6px; color:var(--gw-text); }
.req .racts { display:flex; gap:8px; align-items:center; flex-wrap:wrap; margin-left:auto; }
.racts .link, .oacts .link, .olist .link { font:inherit; font-size:.84rem; font-weight:600; color:var(--gw-accent); background:none; border:0; padding:0; cursor:pointer; }
.racts .link.danger, .oacts .link.danger, .olist .link.danger { color:var(--gw-muted); font-weight:400; }
.racts .link.danger:hover, .oacts .link.danger:hover, .olist .link.danger:hover { color:#ff7a6e; }
.gw-btn.sm { padding:.4rem .8rem; font-size:.85rem; }
select.sm { background:var(--surface); border:1px solid var(--line-2); border-radius:9px; color:var(--gw-text); padding:.38rem .5rem; font:inherit; font-size:.85rem; }
.cprof { border-top:1px solid var(--line); padding:10px 0; }
.cprof:first-child { border-top:0; }
.cprof summary { cursor:pointer; display:flex; justify-content:space-between; gap:10px; font-weight:600; list-style:none; }
.cprof summary::-webkit-details-marker { display:none; }
.cprof summary::before { content:'\25B8'; color:var(--gw-accent); margin-right:8px; transition:transform .15s; display:inline-block; }
.cprof[open] summary::before { transform:rotate(90deg); }
.cprof summary > span:first-child { margin-right:auto; }
.cprof ul { list-style:none; margin:8px 0 0; padding:0 0 0 20px; display:flex; flex-direction:column; gap:6px; font-size:.9rem; }

/* Forever: Officers page */
.otabs { display:flex; gap:6px; flex-wrap:wrap; align-items:center; margin-bottom:18px; }
.otabs button { font:inherit; font-size:.9rem; font-weight:600; color:var(--text-2); background:var(--surface); border:1px solid var(--line-2); border-radius:999px; padding:.45rem .95rem; cursor:pointer; }
.otabs button[aria-current] { color:#0d0b0a; background:var(--gw-accent); border-color:var(--gw-accent); }
.otabs.sub button { font-size:.84rem; padding:.35rem .8rem; }
.otabs.sub button[aria-current] .muted { color:#3a2b16; }
.otier { margin-left:auto; font-size:.76rem; text-transform:uppercase; letter-spacing:.1em; color:var(--gw-muted); }
.ostats { display:flex; gap:12px; flex-wrap:wrap; align-items:center; margin-bottom:16px; }
.ostats > div { background:var(--surface); border:1px solid var(--line); border-radius:12px; padding:10px 16px; min-width:110px; }
.ostats b { display:block; font-family:var(--font-display); font-size:1.5rem; line-height:1.1; }
.ostats span { font-size:.78rem; color:var(--gw-muted); }
.ostats .gw-btn { margin-left:auto; }
.bars2 { display:grid; grid-template-columns:1fr; gap:0 28px; }
@media (min-width:720px){ .bars2 { grid-template-columns:1fr 1fr; } }
.bar.zero .bl { color:#ff9a8e; }
.omem { background:var(--surface-2); border:1px solid var(--line); border-radius:12px; padding:14px 16px; }
.omem .ptop { display:flex; align-items:center; gap:.6rem; margin-bottom:6px; }
.omem .pav { width:34px; height:34px; border-radius:50%; background:#222; flex:none; object-fit:cover; }
.omem .pname { font-family:var(--font-display); font-size:1.1rem; font-weight:600; }
.omem .powner { font-size:.82rem; color:var(--gw-muted); }
.ochar { border-left:3px solid var(--line-2); padding:4px 0 4px 10px; margin-top:6px; font-size:.88rem; display:flex; flex-wrap:wrap; gap:2px 10px; align-items:baseline; }
.ochar .osub { color:var(--gw-muted); font-size:.82rem; }
.ochar .oprof { flex-basis:100%; color:var(--text-2); font-size:.84rem; }
.ochar .muted { color:var(--gw-muted); }
.olist { list-style:none; margin:10px 0 14px; padding:0; display:flex; flex-direction:column; gap:8px; }
.olist li { display:flex; gap:10px; align-items:baseline; flex-wrap:wrap; font-size:.92rem; }
.olist li .muted { color:var(--gw-muted); }
.olist li .link { margin-left:auto; }
.oadd { align-items:flex-end; }
.oadd .gw-btn { flex:none; }
.otable { display:flex; flex-direction:column; border:1px solid var(--line); border-radius:12px; overflow:hidden; }
.orow { display:grid; grid-template-columns:1fr; gap:6px 14px; padding:12px 14px; border-top:1px solid var(--line); background:var(--surface); align-items:center; }
.orow:first-child { border-top:0; }
@media (min-width:720px){ .orow { grid-template-columns:minmax(0,1fr) 180px 150px; } }
.ostate { font-size:.86rem; font-weight:600; } .ostate .muted { color:var(--gw-muted); font-weight:400; }
.ostate.st-open { color:var(--gw-accent); } .ostate.st-claimed { color:#7fb6e6; } .ostate.st-done { color:var(--gw-green); } .ostate.st-cancelled { color:var(--gw-muted); }
.oacts { display:flex; gap:14px; justify-content:flex-start; }
@media (min-width:720px){ .oacts { justify-content:flex-end; } }
.aroles { display:flex; flex-wrap:wrap; gap:8px; max-height:320px; overflow:auto; }
.aroles label { display:flex; align-items:center; gap:.45rem; font-size:.88rem; color:var(--gw-text); background:var(--surface-2); border:1px solid var(--line-2); border-radius:9px; padding:.4rem .65rem; cursor:pointer; text-transform:none; letter-spacing:0; font-weight:500; margin:0; }
.rdot { width:10px; height:10px; border-radius:50%; flex:none; }
.bars2 .bar .bl { width:124px; }
.oassign { display:inline-flex; gap:6px; align-items:center; }
.oacts { flex-wrap:wrap; align-items:center; }
@media (min-width:720px){ .orow { grid-template-columns:minmax(0,1fr) 150px 260px; } }
/* four tiles are narrower: let the small line wrap instead of cutting off, and long event names take two lines */
.tile .s { white-space:normal; }
#tile-next .v { white-space:normal; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; }

/* Live strip ("Live in the Discord"): its own framed bar so it reads as live activity, not our list of games */
.playing { display:block; margin:0 0 26px; padding:14px 16px; background:var(--surface); border:1px solid var(--line); border-radius:var(--r); }
.playing .phead { display:flex; align-items:baseline; gap:6px 14px; flex-wrap:wrap; margin-bottom:10px; }
.playing .lbl { display:inline-flex; align-items:center; gap:8px; margin:0; color:var(--gw-text); }
.playing .note { font-size:.84rem; color:var(--gw-muted); }
.playing .pchips { display:flex; flex-wrap:wrap; gap:8px; }
.playing .live { width:8px; height:8px; border-radius:50%; background:var(--gw-green); box-shadow:0 0 0 0 rgba(51,196,123,.55); animation:livepulse 2s ease-out infinite; }
@keyframes livepulse { 0% { box-shadow:0 0 0 0 rgba(51,196,123,.55); } 70% { box-shadow:0 0 0 7px rgba(51,196,123,0); } 100% { box-shadow:0 0 0 0 rgba(51,196,123,0); } }
@media (prefers-reduced-motion: reduce){ .playing .live { animation:none; } }

/* Discord game icons: small in the live strip chips, a bit bigger beside game titles */
.playing .gw-chip .gicon { width:18px; height:18px; border-radius:4px; flex:none; object-fit:cover; margin-left:-4px; }
.gicon-lg { width:28px; height:28px; border-radius:6px; vertical-align:-5px; margin-right:10px; object-fit:cover; }
.gamehead h1 .gicon-lg { width:40px; height:40px; border-radius:8px; vertical-align:-6px; }
.card .head h3:has(.gicon-lg), .gamehead h1:has(.gicon-lg) { display:flex; align-items:center; gap:0; }
.card .head h3 .gicon-lg { flex:none; }

/* When a crest PNG is dropped in (img/forever/classes), it brings its own frame: drop the drawn roundel behind it. */
.mem .crest:has(.crest-img), .slot .screst:has(.crest-img), .token .tcr:has(.crest-img), .fcls .fic:has(.crest-img), .tcrest:has(.crest-img) { background:none; box-shadow:none; }
.mem .crest:has(.crest-img) { width:72px; height:72px; }
.mem .crest .crest-img { width:72px; height:72px; filter:drop-shadow(0 4px 8px rgba(0,0,0,.55)); }
.mem:hover .crest:has(.crest-img) { box-shadow:none; }
.mem:hover .crest .crest-img { filter:drop-shadow(0 4px 8px rgba(0,0,0,.55)) drop-shadow(0 0 12px color-mix(in srgb, var(--cc) 60%, transparent)); }
.slot .screst .crest-img { width:46px; height:46px; filter:drop-shadow(0 2px 4px rgba(0,0,0,.5)); }
.token .tcr .crest-img { width:26px; height:26px; }
.fcls .fic .crest-img { width:30px; height:30px; }
.fcls.on .fic:has(.crest-img) { background:none; }
.tcrest .crest-img { width:96px; height:96px; filter:drop-shadow(0 4px 6px rgba(60,40,20,.45)); }
.tcrest:has(.crest-img) { width:100px; height:100px; }

/* main <-> roster: the hint in the editor and the note after saving */
.mainhint { font-size:.8rem; color:var(--gw-muted); }
.mainhint a, .minenote a { color:var(--gw-accent); }
.minenote { margin:12px 0 0; padding:.55rem .85rem; border-radius:10px; font-size:.86rem; color:var(--gw-text); background:rgba(127,196,154,.1); border:1px solid rgba(127,196,154,.35); transition:opacity .4s; }
.minenote.gone { opacity:0; }
.drift { display:block; margin:8px 0 0; padding:.5rem .8rem; border-radius:10px; font-size:.84rem; color:var(--gw-text); background:rgba(var(--gw-accent-rgb),.08); border:1px solid rgba(var(--gw-accent-rgb),.35); }
.chred .drift { flex-basis:100%; order:5; }

/* ---- shared Forever UI (forever-ui.js): race crests, toast, burst ---- */
.race-img { display:block; object-fit:contain; filter:drop-shadow(0 2px 4px rgba(0,0,0,.55)); }
.mem .plate { position:relative; }
.mem .rbadge { position:absolute; right:-10px; bottom:-6px; width:32px; height:32px; display:grid; place-items:center; transition:transform .2s; }
.mem:hover .rbadge { transform:translate(2px,1px) rotate(6deg); }
.mem .fresh { z-index:2; }
.slot .screst { position:relative; }
.slot .srace { position:absolute; right:-7px; bottom:-5px; }
.tcrests { display:flex; align-items:center; justify-content:center; gap:4px; margin-top:16px; }
.tcrests .tcrest { margin-top:0; }
.trace { width:68px; height:68px; display:grid; place-items:center; margin-left:-6px; }
.trace .race-img { filter:drop-shadow(0 3px 5px rgba(60,40,20,.45)); }
.fraces { display:flex; flex-wrap:wrap; gap:8px; width:100%; }
.frace { display:inline-flex; align-items:center; gap:7px; font:inherit; font-size:.85rem; color:var(--gw-text); background:var(--surface); border:1px solid var(--line-2); border-radius:999px; padding:.25rem .8rem .25rem .35rem; cursor:pointer; transition:transform .15s, border-color .15s, background .15s, box-shadow .15s; }
.frace .race-img { width:30px; height:30px; }
.frace .fn { font-size:.75rem; color:var(--gw-muted); }
.frace:hover { transform:translateY(-1px); border-color:rgba(var(--gw-accent-rgb),.5); }
.frace.on { background:rgba(var(--gw-accent-rgb),.14); border-color:var(--gw-accent); box-shadow:0 0 0 1px var(--gw-accent); }
.frace.none { color:var(--text-2); } .frace.none .race-img { opacity:.45; }

.gw-toasts { position:fixed; left:50%; bottom:22px; transform:translateX(-50%); z-index:200; display:flex; flex-direction:column; align-items:center; gap:8px; pointer-events:none; width:max-content; max-width:calc(100vw - 32px); }
.gw-toast { pointer-events:auto; display:flex; align-items:center; gap:10px; padding:.7rem 1.1rem; border-radius:999px; font-size:.92rem; color:var(--gw-text); background:linear-gradient(180deg, #2a2117, #1c1611); border:1px solid rgba(201,164,92,.6); box-shadow:0 10px 30px rgba(0,0,0,.55), 0 0 0 1px rgba(0,0,0,.6); animation:gwToastIn .35s cubic-bezier(.2,.8,.3,1.2); transition:opacity .35s, transform .35s; }
.gw-toast::before { content:''; width:8px; height:8px; border-radius:50%; background:#c9a45c; box-shadow:0 0 10px #c9a45c; flex:none; }
.gw-toast.good::before { background:#7fc49a; box-shadow:0 0 10px #7fc49a; }
.gw-toast.err { border-color:rgba(255,122,110,.6); } .gw-toast.err::before { background:#ff7a6e; box-shadow:0 0 10px #ff7a6e; }
.gw-toast a { color:var(--gw-accent); }
.gw-toast.out { opacity:0; transform:translateY(8px); }
@keyframes gwToastIn { from { opacity:0; transform:translateY(14px) scale(.96); } }
.gw-burst { position:fixed; inset:0; pointer-events:none; z-index:210; }
.gw-burst i { position:absolute; width:6px; height:6px; margin:-3px 0 0 -3px; border-radius:50%; background:#e9c77a; box-shadow:0 0 8px rgba(233,199,122,.9); animation:gwSpark .75s cubic-bezier(.15,.7,.3,1) forwards; }
@keyframes gwSpark { 0% { transform:translate(0,0) scale(1); opacity:1; } 100% { transform:translate(var(--dx), var(--dy)) scale(.2); opacity:0; } }
/* cards settle in when a list first draws */
@media (prefers-reduced-motion: no-preference) {
  .gw-rise > * { animation:gwRise .45s cubic-bezier(.2,.8,.3,1) backwards; }
  .gw-rise > *:nth-child(2) { animation-delay:.04s; } .gw-rise > *:nth-child(3) { animation-delay:.08s; } .gw-rise > *:nth-child(4) { animation-delay:.12s; }
  .gw-rise > *:nth-child(5) { animation-delay:.16s; } .gw-rise > *:nth-child(6) { animation-delay:.2s; } .gw-rise > *:nth-child(n+7) { animation-delay:.24s; }
}
@keyframes gwRise { from { opacity:0; transform:translateY(10px); } }

.mem .fresh { left:auto; right:14px; top:14px; bottom:auto; transform:none; }
.mem .rbadge { width:38px; height:38px; right:-12px; bottom:-8px; }
.mem .rbadge .race-img { width:36px; height:36px; }
.trace { width:84px; height:84px; }
.trace .race-img { width:80px; height:80px; }
.mem .hero.hasfresh .hname { padding-right:78px; }

/* ---- Roster (roster.js): build your character by tapping crests ---- */
.rplate { --cc:#9a8f80; position:relative; display:flex; align-items:center; gap:18px; padding:18px 20px; margin:4px 0 18px; border-radius:16px; border:1px solid color-mix(in srgb, var(--cc) 45%, var(--line));
  background:radial-gradient(120% 140% at 0% 0%, color-mix(in srgb, var(--cc) 22%, transparent) 0%, transparent 65%), var(--surface-2); transition:border-color .3s, background .3s; }
.rplate.empty { border-style:dashed; border-color:var(--line-2); }
.rpcrests { position:relative; flex:none; width:84px; height:84px; display:grid; place-items:center; }
.rpclass { display:grid; place-items:center; color:var(--cc); }
.rpclass .crest-svg { width:56px; height:56px; }
.rpclass.blank { width:70px; height:70px; border-radius:50%; border:1.5px dashed var(--line-2); }
.rprace { position:absolute; right:-14px; bottom:-8px; }
.rptext { min-width:0; flex:1; }
.rpname { font-family:var(--font-display); font-size:1.6rem; font-weight:600; line-height:1.1; }
.rpname.muted, .muted { color:var(--gw-muted); }
.rpsub { margin-top:4px; font-size:.95rem; }
.rpprofs { display:flex; flex-wrap:wrap; gap:6px; margin-top:10px; }
.rpsave { position:absolute; top:12px; right:16px; font-size:.78rem; font-weight:600; color:var(--gw-muted); }
.rpsave.ok { color:#7fc49a; } .rpsave.ok::before { content:'\2713  '; }
.rpsave.err { color:#ff7a6e; } .rpsave.busy { color:var(--gw-accent); }
@media (prefers-reduced-motion: no-preference) {
  .rplate.pop .rpcrests { animation:rpPop .5s cubic-bezier(.2,.8,.3,1.4); }
}
@keyframes rpPop { 30% { transform:scale(1.12) rotate(-3deg); } }
.rstep { padding:14px 0 16px; border-top:1px solid var(--line); }
.rshead { display:flex; align-items:center; gap:10px; margin-bottom:12px; }
.rshead h4 { margin:0; font-size:1rem; font-weight:600; }
.rsn { display:grid; place-items:center; width:24px; height:24px; border-radius:50%; font-size:.78rem; font-weight:700; color:var(--gw-muted); border:1px solid var(--line-2); flex:none; }
.rstep.done .rsn { background:var(--gw-accent); border-color:var(--gw-accent); color:#1a1208; }
.rsnote { margin-left:auto; font-size:.8rem; color:var(--gw-muted); }
.rtiles { display:grid; grid-template-columns:repeat(auto-fill, minmax(104px, 1fr)); gap:10px; }
.rtile, .ctile { --cc:var(--gw-accent); position:relative; display:flex; flex-direction:column; align-items:center; gap:6px; padding:12px 6px 10px; font:inherit; color:var(--gw-text); background:var(--surface); border:1px solid var(--line-2); border-radius:14px; cursor:pointer; transition:transform .15s, border-color .15s, box-shadow .15s, background .15s, opacity .2s; }
.rtile:hover:not(:disabled), .ctile:hover:not(:disabled) { transform:translateY(-2px); border-color:color-mix(in srgb, var(--cc) 60%, transparent); box-shadow:0 8px 18px rgba(0,0,0,.35); }
.rtile.on, .ctile.on { border-color:var(--cc); background:color-mix(in srgb, var(--cc) 14%, var(--surface)); box-shadow:0 0 0 1px var(--cc), 0 0 22px color-mix(in srgb, var(--cc) 30%, transparent); }
.rtile.on .rtimg, .ctile.on .ctimg { animation:tilePick .35s cubic-bezier(.2,.8,.3,1.4); }
@keyframes tilePick { 40% { transform:scale(1.15); } }
.rtimg, .ctimg { height:56px; display:grid; place-items:center; color:var(--cc); }
.ctimg .crest-svg { width:40px; height:40px; }
.rtblank { width:40px; height:40px; border-radius:50%; border:1px dashed var(--line-2); }
.rtn { font-size:.86rem; font-weight:600; }
.rtpaid { position:absolute; top:6px; right:6px; font-size:.58rem; font-weight:700; letter-spacing:.05em; text-transform:uppercase; color:#1a1208; background:#9fd3ff; border-radius:999px; padding:.05rem .4rem; }
.ctile.off { opacity:.28; cursor:not-allowed; filter:grayscale(.8); }
.chips { display:flex; flex-wrap:wrap; gap:8px; }
.chips + .chips { margin-top:10px; }
.chiplabel { align-self:center; font-size:.74rem; text-transform:uppercase; letter-spacing:.08em; color:var(--gw-muted); margin-right:4px; }
.schip { display:inline-flex; align-items:center; gap:2px; font:inherit; font-size:.9rem; color:var(--gw-text); background:var(--surface); border:1px solid var(--line-2); border-radius:999px; padding:.42rem .9rem; cursor:pointer; transition:transform .15s, border-color .15s, background .15s; }
.schip:hover { transform:translateY(-1px); border-color:rgba(var(--gw-accent-rgb),.5); }
.schip.on { border-color:var(--gw-accent); background:rgba(var(--gw-accent-rgb),.14); box-shadow:0 0 0 1px var(--gw-accent); }
.schip.ghost { color:var(--gw-muted); }
.pchip.pick { font:inherit; font-size:.86rem; cursor:pointer; padding:.38rem .85rem; transition:transform .15s, border-color .15s, background .15s; }
.pchip.pick:hover { transform:translateY(-1px); border-color:rgba(var(--gw-accent-rgb),.5); }
.pchip.pick.on { color:#1a1208; background:var(--gw-accent); border-color:var(--gw-accent); font-weight:600; }
.pchip.pick.full { opacity:.55; }
.rfoot { display:flex; justify-content:flex-end; padding-top:6px; }
.rfoot .link.danger { font:inherit; font-size:.82rem; color:var(--gw-muted); background:none; border:0; cursor:pointer; }
.rfoot .link.danger:hover { color:#ff7a6e; }

.roles { display:grid; grid-template-columns:repeat(4, 1fr); gap:10px; margin-bottom:18px; }
.roletile { --rc:#9a8f80; display:flex; flex-direction:column; align-items:center; padding:14px 8px; border-radius:14px; background:radial-gradient(100% 120% at 50% 0%, color-mix(in srgb, var(--rc) 22%, transparent), transparent 70%), var(--surface-2); border:1px solid color-mix(in srgb, var(--rc) 35%, var(--line)); }
.roletile .rv { font-family:var(--font-display); font-size:2.1rem; font-weight:700; line-height:1; color:var(--rc); font-variant-numeric:tabular-nums; }
.roletile .rl { margin-top:6px; font-size:.78rem; font-weight:700; letter-spacing:.08em; text-transform:uppercase; color:var(--gw-muted); }
.roletile.und .rv { color:var(--gw-muted); }
.sth { margin:16px 0 10px; font-size:.74rem; text-transform:uppercase; letter-spacing:.1em; color:var(--gw-muted); font-weight:600; }
.sth .muted { text-transform:none; letter-spacing:0; }
.crestbars { display:grid; grid-template-columns:repeat(auto-fit, minmax(74px, 1fr)); gap:8px; }
.cbar { --cc:var(--gw-accent); display:flex; flex-direction:column; align-items:center; gap:4px; padding:10px 4px 8px; font:inherit; color:var(--gw-text); background:var(--surface); border:1px solid var(--line); border-radius:12px; cursor:pointer; transition:transform .15s, border-color .15s; }
.cbar:hover { transform:translateY(-2px); border-color:color-mix(in srgb, var(--cc) 60%, transparent); }
.cbar.on { border-color:var(--cc); box-shadow:0 0 0 1px var(--cc); }
.cbar.zero { opacity:.45; }
.cbimg { height:36px; display:grid; place-items:center; color:var(--cc); }
.cbimg .crest-svg { width:26px; height:26px; }
.cbcol { position:relative; width:10px; height:48px; border-radius:6px; background:rgba(255,255,255,.05); overflow:hidden; }
.cbfill { position:absolute; left:0; right:0; bottom:0; border-radius:6px; background:var(--cc); box-shadow:0 0 10px color-mix(in srgb, var(--cc) 60%, transparent); transition:height .6s cubic-bezier(.2,.8,.3,1); }
.cbn { font-family:var(--font-display); font-weight:700; font-size:1.05rem; line-height:1; }
.cbl { font-size:.72rem; color:var(--gw-muted); max-width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.pchip.count { font:inherit; font-size:.84rem; cursor:pointer; padding:.32rem .75rem; }
.pchip.count b { margin-left:4px; color:var(--gw-accent); }
.pchip.count.gap { border-color:rgba(255,122,110,.45); color:#ff9b91; } .pchip.count.gap b { color:#ff7a6e; }
.pchip.count.on { border-color:var(--gw-accent); box-shadow:0 0 0 1px var(--gw-accent); }
.frow2 { display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin-top:10px; }
.froles { display:flex; gap:8px; }
.frole { --rc:#9a8f80; font:inherit; font-size:.85rem; font-weight:600; color:var(--rc); background:var(--surface); border:1px solid color-mix(in srgb, var(--rc) 45%, transparent); border-radius:999px; padding:.4rem .9rem; cursor:pointer; transition:transform .15s, background .15s; }
.frole:hover { transform:translateY(-1px); }
.frole.on { background:var(--rc); color:#14110d; }
.frow2 .fmore { padding:.45rem 1rem; }
.rgroup { margin-bottom:22px; }
.rgroup h4 { display:flex; align-items:center; gap:10px; margin:0 0 12px; padding-bottom:8px; border-bottom:1px solid color-mix(in srgb, var(--cc) 30%, var(--line)); font-size:1.05rem; font-weight:600; }
.rgcrest { display:grid; place-items:center; width:34px; height:34px; color:var(--cc); }
.rgcrest .crest-svg { width:24px; height:24px; }
.rgname { color:var(--cc); font-family:var(--font-display); font-size:1.2rem; }
.rgroup .cnt { margin-left:auto; color:var(--gw-muted); font-weight:400; font-size:.85rem; }
.rboard { display:grid; grid-template-columns:repeat(auto-fill, minmax(250px, 1fr)); gap:12px; }
.rcard { --cc:#9a8f80; position:relative; display:flex; flex-direction:column; background:var(--surface-2); border:1px solid var(--line); border-radius:14px; overflow:hidden; transition:transform .18s, box-shadow .18s, border-color .18s; }
.rcard::before { content:''; position:absolute; inset:0 0 auto; height:90px; pointer-events:none; background:radial-gradient(120% 100% at 0% 0%, color-mix(in srgb, var(--cc) 20%, transparent), transparent 70%); }
.rcard:hover { transform:translateY(-2px); border-color:color-mix(in srgb, var(--cc) 40%, var(--line)); box-shadow:0 10px 26px rgba(0,0,0,.4); }
.rcard.you { border-color:rgba(var(--gw-accent-rgb),.45); }
.rctop { position:relative; display:flex; gap:12px; align-items:center; padding:14px 14px 8px; }
.rccrests { position:relative; flex:none; width:52px; height:52px; display:grid; place-items:center; }
.rccls { color:var(--cc); display:grid; place-items:center; }
.rccls .crest-img { width:50px; height:50px; filter:drop-shadow(0 3px 6px rgba(0,0,0,.5)); }
.rccls .crest-svg { width:34px; height:34px; }
.rcrace { position:absolute; right:-8px; bottom:-6px; }
.rcwho { min-width:0; }
.rcmain { display:block; font-family:var(--font-display); font-size:1.12rem; font-weight:600; color:var(--gw-text); text-decoration:none; line-height:1.15; }
.rcmain span { font-family:var(--gw-font-ui); font-size:.75rem; font-weight:600; color:var(--gw-accent); white-space:nowrap; }
a.rcmain:hover span { text-decoration:underline; text-underline-offset:3px; }
.rcrc { font-size:.86rem; margin-top:2px; }
.rcspec { font-size:.82rem; margin-top:3px; }
.rcprofs { padding:2px 14px 0; }
.rcard .mfoot { margin-top:auto; border-top:1px solid var(--line); margin-top:12px; padding:10px 14px; }
@media (max-width:620px) {
  .rtiles { grid-template-columns:repeat(3, 1fr); }
  .roles { grid-template-columns:repeat(2, 1fr); }
  .crestbars { grid-template-columns:repeat(5, 1fr); }
  .rpname { font-size:1.3rem; }
  .rplate { padding:16px; gap:14px; }
  .rpcrests { width:66px; height:66px; } .rpclass .crest-img { width:60px; height:60px; }
}
.rpclass .crest-img { width:76px; height:76px; filter:drop-shadow(0 4px 10px rgba(0,0,0,.55)); }
.rprace .race-img { width:44px; height:44px; }
.ctimg .crest-img { width:52px; height:52px; filter:drop-shadow(0 3px 6px rgba(0,0,0,.5)); }
.rtimg .race-img { width:52px; height:52px; }
.cbimg .crest-img, .cbimg .race-img { width:34px; height:34px; }
.rgcrest .crest-img { width:34px; height:34px; }
.cbar:disabled { cursor:default; transform:none; }
.rjoin { display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap; margin:-6px 0 16px; padding:12px 16px; border-radius:12px; background:rgba(var(--gw-accent-rgb),.08); border:1px solid rgba(var(--gw-accent-rgb),.35); font-size:.92rem; }
.ctiles { grid-template-columns:repeat(auto-fill, minmax(94px, 1fr)); }

/* ---- Crafting (crafting.js): tap to ask, a three-step track on every request ---- */
.prof-svg { display:block; }
.bigin { font-size:1.08rem !important; padding:.8rem 1rem !important; }
#ask .field input { width:100%; font:inherit; color:var(--gw-text); background:var(--surface); border:1px solid var(--line-2); border-radius:12px; padding:.65rem .9rem; }
#ask .field input:focus { outline:none; border-color:rgba(var(--gw-accent-rgb),.6); box-shadow:0 0 0 3px rgba(var(--gw-accent-rgb),.15); }
.asklabel { margin:16px 0 8px; font-size:.74rem; font-weight:600; letter-spacing:.1em; text-transform:uppercase; color:var(--gw-muted); }
.ptiles { display:grid; grid-template-columns:repeat(auto-fill, minmax(118px, 1fr)); gap:8px; }
.ptile { --pc:#c9a45c; display:flex; flex-direction:column; align-items:flex-start; gap:4px; padding:10px 12px; font:inherit; text-align:left; color:var(--pc); background:var(--surface); border:1px solid var(--line-2); border-radius:12px; cursor:pointer; transition:transform .15s, border-color .15s, background .15s, box-shadow .15s; }
.ptile .ptn { color:var(--gw-text); font-weight:600; font-size:.9rem; }
.ptile .ptc { color:var(--gw-muted); font-size:.74rem; }
.ptile:hover { transform:translateY(-2px); border-color:color-mix(in srgb, var(--pc) 55%, transparent); }
.ptile.on { background:color-mix(in srgb, var(--pc) 14%, var(--surface)); border-color:var(--pc); box-shadow:0 0 0 1px var(--pc), 0 0 18px color-mix(in srgb, var(--pc) 25%, transparent); }
.ptile.on svg { animation:tilePick .35s cubic-bezier(.2,.8,.3,1.4); }
.askwho { margin:10px 0 0; padding:10px 12px; border-radius:10px; font-size:.88rem; color:var(--text-2); background:rgba(255,255,255,.03); border:1px solid var(--line); }
.askrow { display:flex; flex-wrap:wrap; gap:4px 28px; align-items:flex-start; }
.stepper { display:inline-flex; align-items:center; border:1px solid var(--line-2); border-radius:999px; background:var(--surface); overflow:hidden; }
.stepper button { width:40px; height:40px; font:inherit; font-size:1.2rem; color:var(--gw-text); background:none; border:0; cursor:pointer; }
.stepper button:hover:not(:disabled) { background:rgba(var(--gw-accent-rgb),.12); color:var(--gw-accent); }
.stepper button:disabled { opacity:.3; cursor:default; }
.stepper span { min-width:34px; text-align:center; font-family:var(--font-display); font-weight:700; font-size:1.15rem; font-variant-numeric:tabular-nums; }
.seg { display:inline-flex; padding:3px; gap:2px; border-radius:999px; background:var(--surface); border:1px solid var(--line-2); flex-wrap:wrap; }
.seg button { font:inherit; font-size:.86rem; color:var(--gw-muted); background:none; border:0; border-radius:999px; padding:.45rem .85rem; cursor:pointer; transition:background .15s, color .15s; }
.seg button.on { background:var(--gw-accent); color:#1a1208; font-weight:600; }
.forchip { --cc:var(--gw-accent); display:inline-flex; align-items:center; gap:6px; font:inherit; font-size:.86rem; color:var(--gw-text); background:var(--surface); border:1px solid var(--line-2); border-radius:999px; padding:.3rem .8rem .3rem .4rem; cursor:pointer; transition:border-color .15s, background .15s; }
.forchip:first-child:not([data-pick]) { padding-left:.8rem; }
.forchip.on { border-color:var(--cc); background:color-mix(in srgb, var(--cc) 14%, var(--surface)); box-shadow:0 0 0 1px var(--cc); }
.forchip.sm { font-size:.8rem; padding:.2rem .6rem .2rem .3rem; }
.fcr { display:grid; place-items:center; width:22px; height:22px; color:var(--cc); flex:none; }
.fcr .crest-img { width:22px; height:22px; } .fcr .crest-svg { width:16px; height:16px; }
.asksend { display:flex; align-items:center; gap:12px; justify-content:flex-end; margin-top:18px; }
.gw-btn.big { font-size:1rem; padding:.8rem 1.4rem; }
.gw-btn:disabled { opacity:.45; cursor:not-allowed; }

.req { --pc:#c9a45c; position:relative; flex-wrap:nowrap; gap:14px; padding:14px 16px; border-left:0 !important; border-radius:14px; overflow:hidden; transition:transform .18s, box-shadow .18s, border-color .18s, opacity .35s; }
.req::before { content:''; position:absolute; inset:0 auto 0 0; width:3px; background:var(--pc); opacity:.8; }
.req.canmake { border-color:color-mix(in srgb, var(--pc) 40%, var(--line)); background:radial-gradient(90% 140% at 0% 0%, color-mix(in srgb, var(--pc) 12%, transparent), transparent 60%), var(--surface-2); }
.req:hover { transform:translateY(-1px); box-shadow:0 8px 22px rgba(0,0,0,.35); }
.req.fresh { animation:gwSaved 1.8s ease-out; }
.req.leaving { opacity:0; transform:translateX(16px); }
.rglyph { flex:none; display:grid; place-items:center; width:46px; height:46px; border-radius:50%; color:var(--pc); background:radial-gradient(circle at 35% 30%, color-mix(in srgb, var(--pc) 26%, #2a2420), #17130f 75%); box-shadow:inset 0 0 0 1px rgba(201,164,92,.45); }
.req .ritem { display:flex; align-items:center; gap:8px; flex-wrap:wrap; font-size:1.05rem; }
.req .qty { font-family:var(--font-display); font-size:.95rem; color:var(--pc); }
.rtag { font-size:.66rem; font-weight:700; letter-spacing:.06em; text-transform:uppercase; border-radius:999px; padding:.1rem .45rem; }
.rtag.ask { color:var(--gw-accent); border:1px solid rgba(var(--gw-accent-rgb),.5); } .rtag.make { color:#1a1208; background:#7fc49a; }
.rprof { color:var(--pc); }
.req .rnote { font-style:italic; font-family:var(--gw-font-lore); }
.req .rnote::before { content:'\201C'; } .req .rnote::after { content:'\201D'; }
.track { display:flex; align-items:center; gap:6px; margin-top:10px; font-size:.74rem; color:var(--gw-muted); }
.track .tk { display:inline-flex; align-items:center; gap:5px; white-space:nowrap; }
.track .tk i { width:9px; height:9px; border-radius:50%; border:1.5px solid var(--line-2); }
.track .tk.on { color:var(--gw-text); } .track .tk.on i { background:var(--pc); border-color:var(--pc); }
.track .tk.now i { box-shadow:0 0 0 3px color-mix(in srgb, var(--pc) 30%, transparent); animation:tkPulse 2s ease-in-out infinite; }
.req.st-done .track .tk.now i { animation:none; }
.track .tkline { flex:0 1 34px; height:1.5px; background:var(--line-2); min-width:12px; }
.track.off { color:var(--gw-muted); font-style:italic; }
@keyframes tkPulse { 50% { box-shadow:0 0 0 5px color-mix(in srgb, var(--pc) 10%, transparent); } }
.req .rstate { font-size:.86rem; margin-top:6px; }
.lock { color:var(--gw-accent); font-weight:600; }
.req .racts { flex:none; align-self:center; justify-content:flex-end; max-width:46%; }
.pickas { font-size:.78rem; color:var(--gw-muted); }
.canmk { color:#7fc49a; font-weight:600; }
.pfilters { display:flex; flex-wrap:wrap; gap:8px; margin-bottom:14px; }
.pfil { --pc:var(--gw-accent); display:inline-flex; align-items:center; gap:6px; font:inherit; font-size:.84rem; color:var(--gw-text); background:var(--surface); border:1px solid var(--line-2); border-radius:999px; padding:.32rem .8rem; cursor:pointer; }
.pfil svg { color:var(--pc); }
.pfil b { color:var(--gw-muted); font-weight:600; }
.pfil.on { border-color:var(--pc); box-shadow:0 0 0 1px var(--pc); background:color-mix(in srgb, var(--pc) 12%, var(--surface)); }
.empty.slim { padding:18px; }
.donelist { margin-top:6px; }
.donelist > summary { cursor:pointer; font-size:.86rem; font-weight:600; color:var(--gw-muted); padding:6px 0; }
.donelist .req { opacity:.75; margin-top:8px; }
.cptiles { display:grid; grid-template-columns:repeat(auto-fill, minmax(230px, 1fr)); gap:12px; }
.cptile { --pc:#c9a45c; padding:14px; border-radius:14px; background:radial-gradient(100% 90% at 0% 0%, color-mix(in srgb, var(--pc) 12%, transparent), transparent 65%), var(--surface-2); border:1px solid var(--line); }
.cptile.none { opacity:.6; }
.cphead { display:flex; align-items:center; gap:8px; color:var(--pc); margin-bottom:8px; }
.cpn { color:var(--gw-text); font-weight:600; }
.cpc { margin-left:auto; font-family:var(--font-display); font-weight:700; color:var(--gw-text); }
.cptile ul { list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:6px; font-size:.88rem; }
.cptile li { display:flex; align-items:center; gap:6px; flex-wrap:wrap; }
.cptile li .muted { font-size:.78rem; margin-left:auto; }
.cptile .cnote { flex-basis:100%; padding-left:28px; font-size:.78rem; color:var(--gw-muted); font-style:italic; }
.gstar { color:var(--gw-accent); }
.cpmore summary { cursor:pointer; font-size:.8rem; color:var(--gw-accent); margin-top:6px; }
.cpmore ul { margin-top:6px; }
.cpnone { margin:0; font-size:.82rem; color:var(--gw-muted); }
.cpnone a { color:var(--gw-accent); }
@media (max-width:620px) {
  .req { flex-wrap:wrap; }
  .req .racts { max-width:none; width:100%; justify-content:flex-start; padding-left:60px; }
  .rglyph { width:40px; height:40px; }
  .ptiles { grid-template-columns:repeat(2, 1fr); }
  .asksend .gw-btn { width:100%; }
}
.ptiles { grid-template-columns:repeat(auto-fill, minmax(106px, 1fr)); }

/* ---- Acolytes (acolytes.js) ---- */
.ostats2 { display:grid; grid-template-columns:repeat(4, minmax(0,1fr)) auto; gap:10px; align-items:stretch; margin-bottom:16px; }
.ost { display:flex; flex-direction:column; justify-content:center; padding:14px 16px; border-radius:14px; background:radial-gradient(100% 120% at 0% 0%, rgba(var(--gw-accent-rgb),.12), transparent 70%), var(--surface-2); border:1px solid var(--line); }
.ost b { font-family:var(--font-display); font-size:2rem; line-height:1; font-variant-numeric:tabular-nums; }
.ost span { margin-top:4px; font-size:.78rem; color:var(--gw-muted); }
.ost.warn b { color:var(--gw-accent); }
.odl { align-self:center; }
.covtiles { display:grid; grid-template-columns:repeat(auto-fill, minmax(150px, 1fr)); gap:8px; }
.covtile { --pc:#c9a45c; display:flex; align-items:center; gap:8px; padding:9px 12px; border-radius:12px; color:var(--pc); background:var(--surface); border:1px solid var(--line); }
.covtile .cvn { color:var(--gw-text); font-size:.88rem; }
.covtile b { margin-left:auto; color:var(--gw-text); font-family:var(--font-display); font-size:1.1rem; }
.covtile.gap { border-color:rgba(255,122,110,.45); background:rgba(255,122,110,.06); } .covtile.gap b { color:#ff7a6e; }
.gaptxt { color:#ff7a6e; font-weight:600; }
.omem { border-radius:14px; transition:transform .18s, box-shadow .18s; }
.omem:hover { transform:translateY(-2px); box-shadow:0 10px 24px rgba(0,0,0,.35); }
.omem .ocount { margin-left:auto; align-self:flex-start; font-family:var(--font-display); font-weight:700; color:var(--gw-muted); }
.ochar { --cc:#9a8f80; border-left:0; padding:8px 0 0; margin-top:8px; border-top:1px solid var(--line); display:flex; flex-wrap:nowrap; gap:10px; align-items:flex-start; }
.occrest { position:relative; flex:none; width:34px; height:34px; display:grid; place-items:center; color:var(--cc); }
.occrest .crest-img { width:32px; height:32px; } .occrest .crest-svg { width:22px; height:22px; }
.ocrace { position:absolute; right:-6px; bottom:-5px; }
.ocbody { min-width:0; display:flex; flex-wrap:wrap; gap:2px 8px; align-items:baseline; }
.omain { font-size:.62rem; font-weight:700; letter-spacing:.06em; text-transform:uppercase; color:var(--gw-accent); border:1px solid rgba(var(--gw-accent-rgb),.5); border-radius:999px; padding:0 .35rem; }
.ochar .oprof { display:flex; flex-wrap:wrap; gap:4px 10px; align-items:center; }
.opg { --pc:#c9a45c; display:inline-flex; align-items:center; gap:4px; color:var(--text-2); }
.opg svg { color:var(--pc); }
.ocrh { display:flex; align-items:center; gap:10px; }
.ocrh .rglyph { width:38px; height:38px; }
.ocrn { margin-left:auto; font-family:var(--gw-font-ui); font-size:.82rem; font-weight:400; color:var(--gw-muted); }
.ocraft { --pc:#c9a45c; border-color:color-mix(in srgb, var(--pc) 25%, var(--line)); }
.olist li { --cc:#9a8f80; align-items:center; padding:8px 10px; border-radius:10px; background:var(--surface); border:1px solid var(--line); }
.ofocus { color:var(--gw-muted); font-style:italic; }
.rglyph.sm { width:34px; height:34px; }
@media (min-width:720px){ .orow { grid-template-columns:auto minmax(0,1fr) 150px 260px; align-items:center; } }
.orow .qty { color:var(--pc); font-family:var(--font-display); }
.orow .rprof { color:var(--pc); font-size:.82rem; }
.obadge { display:inline-grid; place-items:center; min-width:20px; height:20px; margin-left:4px; padding:0 5px; border-radius:999px; font-size:.72rem; background:#ff7a6e; color:#1a0c0a; }
.otabs button[aria-current] .obadge { background:#1a1208; color:var(--gw-accent); }
.aroles label { cursor:pointer; transition:border-color .15s, background .15s; }
.aroles label:has(input:checked) { border-color:var(--gw-accent); background:rgba(var(--gw-accent-rgb),.12); }
@media (max-width:620px) { .ostats2 { grid-template-columns:repeat(2, 1fr); } .odl { grid-column:1 / -1; } .orow { grid-template-columns:auto 1fr; } .orow .ostate, .orow .oacts { grid-column:2; } }
.ocgrid { display:grid; grid-template-columns:repeat(auto-fill, minmax(420px, 1fr)); gap:12px; align-items:start; }
.ocgrid .panel { margin:0; }
.ocgrid .oadd { flex-wrap:wrap; }
@media (max-width:620px) { .ocgrid { grid-template-columns:1fr; } }
@media (max-width:620px) {
  .req .rmain { flex:1 1 0; min-width:0; }
  .askrow > div { width:100%; }
  .seg { display:flex; width:100%; flex-wrap:nowrap; }
  .seg button { flex:1; padding:.45rem .3rem; font-size:.8rem; }
}

/* names never break mid-word: long ones step down a size */
.mem .hname { overflow-wrap:normal; word-break:normal; hyphens:none; }
.mem .hname.l { font-size:1.22rem; }
.mem .hname.xl { font-size:1.06rem; }
.mem .hero.hasfresh .hname { padding-right:0; }
.mem .fresh { position:static; display:inline-block; vertical-align:.1em; margin-left:6px; font-size:.58rem; padding:.08rem .4rem; transform:none; box-shadow:none; }
/* book: both crests in matching frames */
.tcrests { gap:10px; }
.tcrest:has(.crest-img), .trace { width:88px; height:88px; }
.tcrest .crest-img, .trace .race-img { width:84px; height:84px; }
.trace { margin-left:0; }
/* roster cards: the story link always on its own line; unnamed entries lead with the member */
.rcmain span { display:block; margin-top:2px; }
.rcmain.member { font-family:var(--font-display); }
.rcnudge { display:block; margin-top:2px; font-family:var(--gw-font-ui); font-size:.75rem; font-weight:600; color:var(--gw-muted); }
a.rcnudge { color:var(--gw-accent); text-decoration:none; }
a.rcnudge:hover { text-decoration:underline; text-underline-offset:3px; }
.rcmain { overflow-wrap:normal; }
.rcmain span.rcnudge { color:var(--gw-muted); font-weight:500; font-style:italic; } .rcmain a.rcnudge { color:var(--gw-accent); font-style:normal; font-weight:600; }

/* ---- crests a size up, a steadier race badge, and a stronger class tint (cards, roster, shelf) ---- */
.mem .crest:has(.crest-img) { width:92px; height:92px; }
.mem .crest .crest-img { width:92px; height:92px; }
.mem .rbadge { width:46px; height:46px; right:-14px; bottom:-8px; }
.mem .rbadge .race-img { width:44px; height:44px; }
.mem:hover .rbadge { transform:none; }
.mem:hover .crest:has(.crest-img) { transform:none; }
.mem .hero { column-gap:18px; }
.slot .screst .crest-img { width:56px; height:56px; }
.slot .screst:has(.crest-img) { width:56px; height:56px; }
.slot .srace .race-img { width:26px; height:26px; }
.token .tcr .crest-img { width:30px; height:30px; }
.token .tcr:has(.crest-img) { width:30px; height:30px; }
.tcrest:has(.crest-img), .trace { width:104px; height:104px; }
.tcrest .crest-img, .trace .race-img { width:100px; height:100px; }
.rccrests { width:66px; height:66px; }
.rccls .crest-img { width:64px; height:64px; }
.rcrace .race-img { width:34px; height:34px; }
.rpclass .crest-img { width:96px; height:96px; }
.rpcrests { width:100px; height:100px; }
.rprace .race-img { width:52px; height:52px; }
.ctimg .crest-img { width:60px; height:60px; } .ctimg { height:64px; }
.rtimg .race-img { width:60px; height:60px; } .rtimg { height:64px; }

/* the class colour carries the card: a wash from the top, a lit top edge, a halo behind the crest, a tinted border */
.mem, .rcard, .slot[data-id] {
  background:linear-gradient(180deg, color-mix(in srgb, var(--cc) 13%, var(--surface-2)) 0%, var(--surface-2) 55%);
  border-color:color-mix(in srgb, var(--cc) 30%, var(--line));
}
.mem.you, .rcard.you { border-color:color-mix(in srgb, var(--cc) 30%, var(--line)); box-shadow:0 0 0 1px rgba(var(--gw-accent-rgb),.55); }
.mem::before, .rcard::before { height:140px; background:radial-gradient(70% 90% at 18% 0%, color-mix(in srgb, var(--cc) 34%, transparent) 0%, transparent 72%); }
.mem::after, .rcard::after { content:''; position:absolute; left:0; right:0; top:0; height:2px; pointer-events:none;
  background:linear-gradient(90deg, var(--cc) 0%, color-mix(in srgb, var(--cc) 50%, transparent) 45%, transparent 100%); opacity:.85; }
.mem .plate::before, .rccrests::before { content:''; position:absolute; inset:-14%; border-radius:50%; pointer-events:none; z-index:-1;
  background:radial-gradient(circle, color-mix(in srgb, var(--cc) 34%, transparent) 0%, transparent 68%); transition:opacity .2s; opacity:.8; }
.mem .plate, .rccrests { isolation:isolate; }
.mem:hover .plate::before, .rcard:hover .rccrests::before { opacity:1; }
.mem:hover, .rcard:hover { border-color:color-mix(in srgb, var(--cc) 60%, var(--line)); box-shadow:0 14px 34px rgba(0,0,0,.45), 0 0 26px color-mix(in srgb, var(--cc) 16%, transparent); }
.mem .hsub, .rcrc { font-weight:500; }
.slot[data-id] { border-left:3px solid var(--cc); }
.mem .hname { font-size:1.32rem; } .mem .hname.l { font-size:1.15rem; } .mem .hname.xl { font-size:1.02rem; }

/* class crest watermark: a shape cue that doesn't rely on colour, like an emblem pressed into leather */
.wmark { position:absolute; right:-46px; bottom:-40px; width:230px; height:230px; pointer-events:none; z-index:0; color:var(--cc);
  opacity:.09; filter:grayscale(.55) contrast(1.15); transform:rotate(-8deg); transition:opacity .3s; }
.wmark .crest-img, .wmark .crest-svg { width:100%; height:100%; }
.rcard .wmark { width:190px; height:190px; right:-40px; bottom:-36px; }
.mem > *:not(.wmark), .rcard > *:not(.wmark) { position:relative; z-index:1; }
.mem:hover .wmark, .rcard:hover .wmark { opacity:.13; }
@media (max-width:620px) { .wmark { width:190px; height:190px; right:-36px; bottom:-34px; } }
/* cards with no footer (an entry with no character named yet) still breathe at the bottom */
.rcard:not(:has(> .mfoot)) { padding-bottom:14px; }
.lockchip { font-size:.66rem; padding:.12rem .55rem; color:var(--gw-accent); border-color:rgba(var(--gw-accent-rgb),.45); }
.owho { margin:0 0 16px; padding:.6rem .9rem; border-radius:10px; font-size:.88rem; color:var(--text-2); background:rgba(var(--gw-accent-rgb),.07); border:1px solid rgba(var(--gw-accent-rgb),.3); }
.owho b { color:var(--gw-accent); }
.owho a { color:var(--gw-accent); font-weight:600; }

/* ---- Leaders Area (acolytes.js) ---- */
.opurpose { margin:0 0 16px; font-size:.95rem; color:var(--text-2); }
.lpanel { background:var(--surface-2); border:1px solid var(--line); border-radius:16px; padding:18px 20px; margin-bottom:16px; }
.lhead { display:flex; align-items:baseline; gap:12px; margin-bottom:12px; }
.lhead h3 { margin:0; font-size:1.15rem; }
.lsub { font-size:.82rem; color:var(--gw-muted); }
.lcount { margin-left:auto; font-size:.78rem; font-weight:700; padding:.15rem .6rem; border-radius:999px; color:#7fc49a; background:rgba(127,196,154,.12); }
.lcount.hot { color:#1a1208; background:var(--gw-accent); }
.attn { list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:8px; }
.attn li { display:flex; align-items:center; gap:12px; padding:10px 12px; border-radius:12px; background:var(--surface); border:1px solid var(--line); }
.attn li.warn { border-color:rgba(var(--gw-accent-rgb),.45); background:rgba(var(--gw-accent-rgb),.06); }
.adot { width:10px; height:10px; border-radius:50%; flex:none; background:#7fb6e6; }
.attn li.warn .adot { background:var(--gw-accent); box-shadow:0 0 8px var(--gw-accent); }
.atext { flex:1; font-size:.92rem; }
.atext b { font-family:var(--font-display); font-size:1.05rem; }
.allclear { margin:0; padding:12px; border-radius:12px; color:#7fc49a; background:rgba(127,196,154,.08); border:1px solid rgba(127,196,154,.3); }
.lstats { display:grid; grid-template-columns:repeat(4, 1fr); gap:10px; margin-bottom:16px; }
.lst { display:flex; flex-direction:column; align-items:flex-start; padding:14px 16px; font:inherit; text-align:left; color:var(--gw-text); cursor:pointer; border-radius:14px; background:radial-gradient(100% 120% at 0% 0%, rgba(var(--gw-accent-rgb),.1), transparent 70%), var(--surface-2); border:1px solid var(--line); transition:transform .15s, border-color .15s; }
.lst:hover { transform:translateY(-2px); border-color:rgba(var(--gw-accent-rgb),.45); }
.lst b { font-family:var(--font-display); font-size:2rem; line-height:1; }
.lst span { margin-top:4px; font-size:.78rem; color:var(--gw-muted); }
.lpanel .roles { margin-bottom:14px; }
.ltools { display:flex; gap:10px; margin-bottom:12px; }
.ltools input { flex:1; min-width:0; font:inherit; color:var(--gw-text); background:var(--surface); border:1px solid var(--line-2); border-radius:999px; padding:.6rem 1rem; }
.ltools input:focus { outline:none; border-color:rgba(var(--gw-accent-rgb),.6); }
.lfilt { margin-bottom:10px; }
.schip b { margin-left:4px; color:var(--gw-muted); font-weight:600; }
.schip.hot { border-color:rgba(var(--gw-accent-rgb),.6); color:var(--gw-accent); }
.lrowhead { display:grid; grid-template-columns:minmax(0,1.3fr) minmax(0,1.3fr) 110px 54px 22px; gap:12px; padding:14px 14px 6px 66px; font-size:.7rem; font-weight:700; letter-spacing:.08em; text-transform:uppercase; color:var(--gw-muted); }
.lmcount { margin:0 0 6px; font-size:.8rem; color:var(--gw-muted); padding-left:2px; }
.lrows { display:flex; flex-direction:column; gap:6px; }
.lrow { --cc:#9a8f80; border-radius:12px; background:var(--surface); border:1px solid var(--line); border-left:3px solid var(--cc); overflow:hidden; transition:border-color .15s; }
.lrow:hover, .lrow.open { border-color:color-mix(in srgb, var(--cc) 45%, var(--line)); border-left-color:var(--cc); }
.lrhead { width:100%; display:grid; grid-template-columns:44px minmax(0,1.3fr) minmax(0,1.3fr) 110px 54px 22px; gap:12px; align-items:center; padding:8px 14px 8px 8px; font:inherit; color:var(--gw-text); text-align:left; background:none; border:0; cursor:pointer; }
.lrow.open .lrhead { background:color-mix(in srgb, var(--cc) 8%, transparent); }
.lcrests { --cc:#9a8f80; position:relative; display:grid; place-items:center; width:44px; height:44px; color:var(--cc); }
.lcrests.empty { border:1px dashed var(--line-2); border-radius:50%; width:34px; height:34px; margin:5px; }
.lcls .crest-img { width:40px; height:40px; } .lcls .crest-svg { width:26px; height:26px; }
.lrace { position:absolute; right:-6px; bottom:-4px; }
.lrwho { display:flex; flex-direction:column; min-width:0; }
.lrwho b { font-family:var(--font-display); font-size:1.05rem; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.lrwho .muted, .lrpick .muted { font-size:.8rem; }
.lrpick { font-size:.86rem; min-width:0; }
.lrprofs { display:flex; gap:6px; }
.lpi { --pc:#c9a45c; display:grid; place-items:center; width:26px; height:26px; border-radius:50%; color:var(--pc); background:color-mix(in srgb, var(--pc) 14%, transparent); }
.lrn { font-family:var(--font-display); font-weight:700; text-align:center; }
.lrchev { width:8px; height:8px; border-right:2px solid var(--gw-muted); border-bottom:2px solid var(--gw-muted); transform:rotate(45deg); transition:transform .2s; justify-self:center; }
.lrow.open .lrchev, .lprof.open .lrchev { transform:rotate(-135deg); }
.lflag { font-size:.75rem; font-weight:600; color:var(--gw-accent); }
.lrbody { padding:4px 14px 14px 64px; display:flex; flex-direction:column; gap:10px; }
.lrplan { font-size:.88rem; }
.lk { display:inline-block; min-width:96px; font-size:.7rem; font-weight:700; letter-spacing:.08em; text-transform:uppercase; color:var(--gw-muted); }
.lrchar { --cc:#9a8f80; display:flex; gap:12px; align-items:flex-start; padding:10px 12px; border-radius:10px; background:var(--surface-2); border:1px solid var(--line); font-size:.88rem; }
.lrchar > div { flex:1; min-width:0; }
.lrchar .lcrests { width:36px; height:36px; } .lrchar .lcls .crest-img { width:34px; height:34px; }
.lbook { align-self:center; font-size:.8rem; font-weight:600; color:var(--gw-accent); text-decoration:none; white-space:nowrap; }
.lbook:hover { text-decoration:underline; }
.lrule { display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin:0 0 12px; font-size:.88rem; color:var(--text-2); }
.lrule select { font:inherit; color:var(--gw-text); background:var(--surface); border:1px solid var(--line-2); border-radius:10px; padding:.4rem .6rem; }
.lprofs { display:flex; flex-direction:column; gap:6px; }
.lprof { --pc:#c9a45c; border-radius:12px; background:var(--surface); border:1px solid var(--line); overflow:hidden; }
.lprof.none { border-color:rgba(var(--gw-accent-rgb),.3); }
.lphead { width:100%; display:grid; grid-template-columns:34px 140px minmax(0,1fr) auto 22px; gap:12px; align-items:center; padding:8px 14px 8px 8px; font:inherit; color:var(--gw-text); text-align:left; background:none; border:0; cursor:pointer; }
.lpwho { display:flex; flex-wrap:wrap; gap:6px; min-width:0; }
.lpchip { --cc:#9a8f80; display:inline-flex; align-items:center; gap:4px; font-size:.8rem; padding:.12rem .55rem .12rem .2rem; border-radius:999px; background:color-mix(in srgb, var(--cc) 12%, var(--surface-2)); border:1px solid color-mix(in srgb, var(--cc) 35%, transparent); }
.lpcan { font-size:.78rem; white-space:nowrap; }
.lpbody { padding:4px 14px 14px 54px; }
.lpbody .olist { margin-top:4px; }
.lpill { display:inline-block; font-size:.74rem; padding:.12rem .55rem; border-radius:999px; background:rgba(255,255,255,.05); border:1px solid currentColor; }
.lold { color:var(--gw-accent); font-weight:600; }
.lnone { font-size:.8rem; }
.orow .gw-btn.sm { padding:.3rem .8rem; }
@media (max-width:720px) {
  .lstats { grid-template-columns:repeat(2, 1fr); }
  .lrowhead { display:none; }
  .lrhead { grid-template-columns:44px minmax(0,1fr) 22px; }
  .lrhead .lrpick { grid-column:2; grid-row:2; }
  .lrhead .lrprofs, .lrhead .lrn { display:none; }
  .lrhead .lrchev { grid-column:3; grid-row:1; }
  .lrbody { padding-left:14px; }
  .lphead { grid-template-columns:34px minmax(0,1fr) 22px; }
  .lphead .lpwho { grid-column:2; grid-row:2; }
  .lphead .lpcan { display:none; }
  .lpbody { padding-left:14px; }
  .ltools { flex-wrap:wrap; } .ltools input { flex-basis:100%; }
}
.covtiles { grid-template-columns:repeat(auto-fill, minmax(168px, 1fr)); } .covtile .cvn { white-space:nowrap; overflow:hidden; text-overflow:ellipsis; min-width:0; }

/* ---- The Ledger (/ledger, ledger.js) - reuses the Leaders Area panels (.lpanel/.lhead/.allclear) ---- */
.lgwrap { max-width:860px; }
.lgtitle { font-size:clamp(1.9rem, 3.6vw, 2.6rem); margin-bottom:.5rem; }
.lgwrap .muted { color:var(--gw-muted); font-size:.88rem; margin:0; }
.lgwrap .sk { border-radius:12px; background:linear-gradient(90deg,#121317,#1a1b21,#121317); background-size:200% 100%; animation:shimmer 1.6s linear infinite; }
.lgres { display:flex; flex-direction:column; gap:6px; }
.lgpick { display:flex; align-items:center; gap:12px; padding:8px 12px; font:inherit; color:var(--gw-text); text-align:left; cursor:pointer; background:var(--surface); border:1px solid var(--line); border-radius:12px; transition:border-color .15s; }
.lgpick:hover, .lgpick:focus-visible { border-color:rgba(var(--gw-accent-rgb),.55); outline:none; }
.lgpick img, .lgwho img { width:32px; height:32px; border-radius:50%; flex:none; }
.lgent { --tc:#8a8f99; position:relative; padding:12px 14px; margin-bottom:8px; border-radius:12px; background:var(--surface); border:1px solid var(--line); border-left:3px solid var(--tc); }
.lgent.t-warn { --tc:#e3a44e; } .lgent.t-mute { --tc:#7f8cf0; } .lgent.t-kick { --tc:#e67e3a; } .lgent.t-ban { --tc:#d1685a; }
.lgent.gone { opacity:.55; }
.lgtop { display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.lgtag { font-size:.72rem; font-weight:700; letter-spacing:.08em; text-transform:uppercase; color:var(--tc); }
.lgmeta { margin-left:auto; font-size:.78rem; color:var(--gw-muted); }
.lgwho { display:flex; align-items:center; gap:8px; padding:0; font:inherit; color:var(--gw-text); background:none; border:0; cursor:pointer; }
.lgwho b { font-family:var(--font-display); font-size:1.02rem; }
.lgwho:hover b { color:var(--gw-accent); }
.lgq { margin:8px 0 0; padding-left:10px; border-left:2px solid var(--line-2); white-space:pre-wrap; overflow-wrap:anywhere; font-size:.92rem; color:var(--text-2); }
.lgnote { margin-top:6px; font-size:.85rem; color:var(--gw-muted); } .lgnote b { color:var(--gw-text); font-weight:600; }
.lgev { display:flex; gap:8px; flex-wrap:wrap; margin-top:10px; }
.lgev img { width:96px; height:96px; object-fit:cover; border-radius:8px; border:1px solid var(--line-2); }
.lglinks { display:flex; gap:8px; flex-wrap:wrap; margin-top:10px; }
.lglink { font-size:.8rem; font-weight:600; color:var(--gw-accent); text-decoration:none; padding:.2rem .7rem; border:1px solid rgba(var(--gw-accent-rgb),.35); border-radius:999px; }
.lglink:hover { background:rgba(var(--gw-accent-rgb),.08); }
.lgrm { margin-top:8px; font-size:.78rem; font-style:italic; color:var(--gw-muted); }
.lgact { display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin-top:12px; }
.lgact .gw-btn { padding:.45rem .9rem; font-size:.85rem; }
.lgsel { display:flex; align-items:center; gap:8px; font-size:.85rem; color:var(--gw-muted); }
.lgsel select, .lgwrap textarea { font:inherit; color:var(--gw-text); background:var(--surface); border:1px solid var(--line-2); border-radius:10px; padding:.45rem .6rem; }
.lgwrap textarea { display:block; width:100%; box-sizing:border-box; min-height:5rem; resize:vertical; margin-top:12px; }
.lgwrap textarea:focus, .lgsel select:focus { outline:none; border-color:rgba(var(--gw-accent-rgb),.6); }
.lgsay { font-size:.85rem; color:var(--gw-muted); } .lgsay.ok { color:#7fc49a; } .lgsay.bad { color:#e8998d; }
.lgmhead { display:flex; align-items:center; gap:14px; margin-bottom:14px; }
.lgmhead img, .lgav { width:56px; height:56px; border-radius:50%; flex:none; background:var(--surface); }
.lgmhead h3 { font-size:1.4rem; }
.lgclose { margin-left:auto; }
.lgstats { display:flex; gap:8px; flex-wrap:wrap; margin-top:6px; }
.lgstat { font-size:.75rem; font-weight:700; padding:.15rem .6rem; border-radius:999px; color:var(--gw-muted); background:var(--surface); border:1px solid var(--line); }
.lgstat.ok { color:#7fc49a; background:rgba(127,196,154,.1); border-color:rgba(127,196,154,.3); }
.lgstat.hot { color:#1a1208; background:var(--gw-accent); border-color:var(--gw-accent); }
.lgmore { display:block; margin:4px 0 10px; padding:0; font:inherit; font-size:.85rem; font-weight:600; color:var(--gw-muted); background:none; border:0; cursor:pointer; text-decoration:underline; text-underline-offset:3px; }
.lgmore:hover { color:var(--gw-text); }
.lgtypes { display:flex; gap:6px; flex-wrap:wrap; }
.lgtype { --tc:#8a8f99; font:inherit; font-size:.85rem; font-weight:600; padding:.4rem .9rem; border-radius:999px; cursor:pointer; color:var(--gw-muted); background:var(--surface); border:1px solid var(--line-2); }
.lgtype.t-warn { --tc:#e3a44e; } .lgtype.t-mute { --tc:#7f8cf0; } .lgtype.t-kick { --tc:#e67e3a; } .lgtype.t-ban { --tc:#d1685a; }
.lgtype:hover { color:var(--gw-text); border-color:var(--tc); }
.lgtype.on { color:var(--gw-text); border-color:var(--tc); background:color-mix(in srgb, var(--tc) 18%, transparent); }
.lgfile { display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin-top:10px; font-size:.85rem; color:var(--gw-muted); }
.lgnotes { border-color:rgba(209,104,90,.35); }
.lgx { margin-left:8px; padding:0; font:inherit; font-size:.78rem; color:var(--gw-muted); background:none; border:0; cursor:pointer; text-decoration:underline; }
.lgx:hover { color:#e8998d; }
@media (max-width:600px) { .lgmeta { margin-left:0; width:100%; } .lgmhead { flex-wrap:wrap; } .lgev img { width:72px; height:72px; } }
@media (max-width:600px) { .lgwrap .lhead { flex-wrap:wrap; row-gap:4px; } .lgwrap .lhead .lsub { order:3; width:100%; } }

/* ---- Events (/events, events.js) ---- */
.evnew { display:flex; gap:10px; flex-wrap:wrap; margin:0 0 16px; }
.evrows { display:flex; flex-direction:column; gap:6px; }
.evrow { display:flex; align-items:center; gap:14px; padding:10px 12px; border-radius:12px; background:var(--surface); border:1px solid var(--line); }
.evrow.raid { border-left:3px solid var(--gw-accent); }
.evrow.editing { border-color:rgba(var(--gw-accent-rgb),.6); background:rgba(var(--gw-accent-rgb),.06); }
.evdate { flex:none; width:52px; display:flex; flex-direction:column; align-items:center; padding:4px 0; border-radius:10px; background:var(--surface-2); border:1px solid var(--line); line-height:1.1; }
.evdate b { font-family:var(--font-display); font-size:1.35rem; }
.evdate span { font-size:.66rem; font-weight:700; letter-spacing:.08em; text-transform:uppercase; color:var(--gw-muted); }
.evmain { flex:1; min-width:0; display:flex; flex-direction:column; gap:2px; }
.evmain b { font-family:var(--font-display); font-size:1.05rem; font-weight:600; overflow-wrap:anywhere; }
.evmain > span { font-size:.82rem; color:var(--gw-muted); }
.evtag { margin-left:6px; vertical-align:2px; font-family:var(--gw-font-ui); font-size:.64rem; font-weight:700; letter-spacing:.08em; text-transform:uppercase; color:var(--gw-accent); }
.evgo { flex:none; font-size:.8rem; font-weight:600; color:#7fc49a; }
.evbtns { flex:none; display:flex; align-items:center; gap:8px; }
.evbtns .gw-btn { padding:.4rem .85rem; font-size:.84rem; }
.evform .lhead { flex-wrap:wrap; }
.evgrid { display:grid; grid-template-columns:repeat(3, minmax(0,1fr)); gap:12px 14px; }
.evf { display:flex; flex-direction:column; gap:6px; min-width:0; }
.evf.wide { grid-column:1 / -1; }
.evf > label, .evsec h4 { font-size:.72rem; font-weight:700; letter-spacing:.08em; text-transform:uppercase; color:var(--gw-muted); margin:0; }
.evf > label i { font-style:normal; font-weight:500; text-transform:none; letter-spacing:0; opacity:.8; }
.evwrap input:not([type=checkbox]):not([type=file]), .evwrap select, .evwrap textarea { font:inherit; font-size:.92rem; color:var(--gw-text); background:var(--surface); border:1px solid var(--line-2); border-radius:10px; padding:.55rem .7rem; width:100%; box-sizing:border-box; margin:0; min-height:0; }
.evwrap input:focus, .evwrap select:focus, .evwrap textarea:focus { outline:none; border-color:rgba(var(--gw-accent-rgb),.6); box-shadow:0 0 0 3px rgba(var(--gw-accent-rgb),.12); }
.evwrap select:disabled { opacity:.6; }
.evwrap input[type=file] { font-size:.82rem; color:var(--gw-muted); }
.evwrap input[type=datetime-local]::-webkit-calendar-picker-indicator { filter:invert(1); opacity:.7; cursor:pointer; }
.evhint { margin:0; font-size:.78rem; color:var(--gw-muted); line-height:1.45; }
.evsec { margin-top:18px; padding-top:16px; border-top:1px solid var(--line); display:flex; flex-direction:column; gap:10px; }
.seg { display:inline-flex; align-self:flex-start; padding:3px; border-radius:999px; background:var(--surface); border:1px solid var(--line-2); }
.seg button { font:inherit; font-size:.85rem; font-weight:600; padding:.35rem .9rem; border:0; border-radius:999px; cursor:pointer; color:var(--gw-muted); background:none; }
.seg button.on { color:#1a1208; background:var(--gw-accent); }
.vbox { max-height:260px; overflow:auto; padding:10px; border-radius:12px; background:var(--surface); border:1px solid var(--line); display:flex; flex-direction:column; gap:10px; }
.vcat { display:block; margin-bottom:6px; font-size:.68rem; font-weight:700; letter-spacing:.08em; text-transform:uppercase; color:var(--gw-muted); }
.vchips { display:flex; flex-wrap:wrap; gap:6px; }
.vchip { display:inline-flex; align-items:center; font-size:.84rem; padding:.3rem .75rem; border-radius:999px; cursor:pointer; color:var(--text-2); background:var(--surface-2); border:1px solid var(--line-2); user-select:none; }
.vchip input { position:absolute; opacity:0; pointer-events:none; }
.vchip:hover { border-color:rgba(var(--gw-accent-rgb),.5); }
.vchip.on { color:var(--gw-text); border-color:var(--gw-accent); background:rgba(var(--gw-accent-rgb),.16); }
.vchip:focus-within { outline:2px solid rgba(var(--gw-accent-rgb),.7); outline-offset:2px; }
.evline { display:flex; align-items:center; gap:8px; margin-top:6px; }
.evline .rn, .evline .sc { width:90px !important; flex:none; }
.evline .ru { width:auto !important; flex:none; }
.evline .sn { flex:1; }
.evmore > summary { cursor:pointer; font-weight:600; font-size:.95rem; list-style:none; display:flex; align-items:baseline; gap:10px; flex-wrap:wrap; }
.evmore > summary::-webkit-details-marker { display:none; }
.evmore > summary::before { content:''; width:7px; height:7px; border-right:2px solid var(--gw-muted); border-bottom:2px solid var(--gw-muted); transform:rotate(-45deg); transition:transform .2s; align-self:center; }
.evmore[open] > summary::before { transform:rotate(45deg); }
.evmore[open] > summary { margin-bottom:6px; }
.evtoast { position:fixed; left:50%; bottom:24px; transform:translateX(-50%); z-index:60; padding:.7rem 1.1rem; border-radius:12px; font-size:.9rem; color:var(--gw-text); background:#1d2a22; border:1px solid rgba(127,196,154,.45); box-shadow:0 10px 30px rgba(0,0,0,.45); transition:opacity .5s, transform .5s; }
.evtoast.out { opacity:0; transform:translate(-50%, 8px); }
@media (max-width:760px) {
  .evgrid { grid-template-columns:1fr 1fr; }
  .evrow { flex-wrap:wrap; }
  .evmain { flex-basis:calc(100% - 70px); }
  .evgo { margin-left:66px; }
  .evbtns { margin-left:auto; }
}
@media (max-width:480px) { .evgrid { grid-template-columns:1fr; } }

/* ---- Raid groups (/raid/<id>/comp, raid.js) ---- */
.rwrap { max-width:1120px; }
.rwrap .muted { color:var(--gw-muted); font-size:.88rem; margin:0; }
.rwrap .sk { border-radius:12px; background:linear-gradient(90deg,#121317,#1a1b21,#121317); background-size:200% 100%; animation:shimmer 1.6s linear infinite; }
.rhead { display:flex; align-items:flex-end; justify-content:space-between; gap:16px; flex-wrap:wrap; margin-bottom:14px; }
.ract { display:flex; align-items:center; gap:12px; }
.rsum { display:flex; flex-wrap:wrap; align-items:center; gap:8px 18px; margin:0 0 12px; padding:12px 16px; border-radius:14px; background:var(--surface-2); border:1px solid var(--line); font-size:.9rem; color:var(--text-2); }
.rsum b { font-family:var(--font-display); font-size:1.25rem; color:var(--gw-text); margin-right:2px; }
.rsplit { margin-left:auto; display:flex; gap:8px; flex-wrap:wrap; }
.rsplit i, .rgroles i { font-style:normal; font-size:.75rem; font-weight:700; padding:.15rem .55rem; border-radius:999px; border:1px solid currentColor; }
.r-tank { color:#7fb6e6; } .r-healer { color:#7fc49a; } .r-dps { color:#e8998d; }
.rtoks { display:flex; flex-wrap:wrap; gap:8px; min-height:48px; }
.rtoks .rtok { width:auto; max-width:240px; }
.rtok { --cc:#9a8f80; position:relative; display:flex; align-items:center; gap:9px; width:100%; min-width:0; box-sizing:border-box; padding:6px 10px 6px 6px; border-radius:10px; border:1px solid var(--line); border-left:3px solid var(--cc); background:linear-gradient(90deg, color-mix(in srgb, var(--cc) 14%, var(--surface-2)), var(--surface-2)); user-select:none; transition:transform .12s, box-shadow .12s, border-color .12s; }
.rtok[draggable] { cursor:grab; }
.rtok[draggable]:hover { transform:translateY(-1px); box-shadow:0 4px 12px rgba(0,0,0,.35); }
.rtok.sel { outline:2px solid var(--gw-accent); outline-offset:1px; }
.rtok.drag { opacity:.4; }
.rtok:focus-visible { outline:2px solid rgba(var(--gw-accent-rgb),.8); outline-offset:1px; }
.rtok img { width:30px; height:30px; flex:none; border-radius:6px; box-shadow:0 0 0 1px rgba(0,0,0,.5); }
.rtt { display:flex; flex-direction:column; min-width:0; flex:1; }
.rtt b { font-size:.9rem; font-weight:600; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.rtt span { font-size:.72rem; color:var(--cc); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; filter:brightness(1.2); }
.rrole { flex:none; display:grid; place-items:center; width:20px; height:20px; border-radius:50%; font-size:.66rem; font-weight:800; border:1px solid currentColor; }
.rgroups { display:grid; grid-template-columns:repeat(auto-fill, minmax(230px, 1fr)); gap:12px; margin-bottom:16px; }
.rgroup { padding:12px; border-radius:16px; background:var(--surface-2); border:1px solid var(--line); transition:border-color .15s; }
.rgroup.full { border-color:rgba(127,196,154,.45); }
.rghead { display:flex; align-items:center; gap:8px; margin-bottom:6px; }
.rghead h3 { flex:1; font-size:1.05rem; }
.rgname { flex:1; min-width:0; font-family:var(--font-display); font-size:1.05rem; font-weight:600; color:var(--gw-text); background:none; border:0; border-bottom:1px dashed transparent; padding:2px 0; }
.rgname:hover { border-bottom-color:var(--line-2); }
.rgname:focus { outline:none; border-bottom-color:var(--gw-accent); }
.rgn { font-size:.78rem; font-weight:700; color:var(--gw-muted); }
.rgroup.full .rgn { color:#7fc49a; }
.rgroles { display:flex; gap:5px; min-height:22px; margin-bottom:8px; }
.rslot { min-height:56px; margin-bottom:6px; border-radius:10px; display:flex; align-items:center; }
.rslot.empty { justify-content:center; border:1.5px dashed var(--line-2); color:var(--gw-muted); font-size:.78rem; }
.rzone.over, .rslot.over { outline:2px dashed var(--gw-accent); outline-offset:2px; background:rgba(var(--gw-accent-rgb),.08); }
.rst { display:flex; gap:10px; flex-wrap:wrap; padding:6px 0; font-size:.88rem; }
.rst b { font-weight:600; } .rst span { color:var(--gw-muted); }
.rnotes { display:block; width:100%; box-sizing:border-box; font:inherit; color:var(--gw-text); background:var(--surface); border:1px solid var(--line-2); border-radius:10px; padding:.6rem .7rem; resize:vertical; }
.rnotes:focus { outline:none; border-color:rgba(var(--gw-accent-rgb),.6); }
.rnotetxt { margin:0; white-space:pre-wrap; color:var(--text-2); }
@media (max-width:600px) { .rsplit { margin-left:0; } .rgroups { grid-template-columns:1fr 1fr; gap:8px; } .rgroup { padding:8px; } .rtok img { width:24px; height:24px; } .rrole { display:none; } }
@media (max-width:400px) { .rgroups { grid-template-columns:1fr; } }

/* ---- Leaders menu (site.js) ---- */
.topnav .drop.leadnav > a { color:var(--gw-accent); }
.sheet nav .navhead { display:block; margin:14px 0 2px; font-size:.7rem; font-weight:700; letter-spacing:.12em; text-transform:uppercase; color:var(--gw-accent); }
.evsec .lgmore, .evf .lgmore { align-self:flex-start; margin:2px 0 0; }
@media (max-width:600px) { .rwrap .lhead { flex-wrap:wrap; row-gap:4px; } .rwrap .lhead .lsub { order:3; width:100%; } }
.seg button { white-space:nowrap; }

/* ---- Calendar: list / month switch and the month grid (calendar.js) ---- */
.calctl { display:flex; align-items:flex-start; justify-content:space-between; gap:12px; flex-wrap:wrap; margin:0 0 20px; }
.calctl .filters { margin:0; }
.views { display:inline-flex; padding:3px; border-radius:999px; background:var(--surface); border:1px solid var(--line-2); }
.views[hidden] { display:none; }
.views button { font:inherit; font-size:.85rem; font-weight:600; padding:.3rem .95rem; border:0; border-radius:999px; cursor:pointer; color:var(--gw-muted); background:none; }
.views button[aria-pressed="true"] { color:#1a1208; background:var(--gw-accent); }
.ct-event { --ct:#e3a44e; } .ct-raid { --ct:#d1685a; } .ct-release { --ct:#6fa8dc; } .ct-patch { --ct:#7fc49a; } .ct-gaming-event { --ct:#b58ae0; } .ct-other { --ct:#9296a0; }
.calbar { display:flex; align-items:center; gap:8px; margin:0 0 12px; }
.calbar .ctitle { font-size:1.35rem; min-width:9ch; text-align:center; }
.calbar .cnav { width:40px; padding:.4rem 0; font-size:1.1rem; }
.calbar [data-m="0"] { margin-left:auto; }
.cgrid { display:grid; grid-template-columns:repeat(7, minmax(0,1fr)); gap:6px; }
.cgh { padding:0 6px 4px; font-size:.7rem; font-weight:700; letter-spacing:.1em; text-transform:uppercase; color:var(--gw-muted); }
.ccell { display:flex; flex-direction:column; gap:3px; min-height:104px; min-width:0; padding:6px; font:inherit; text-align:left; color:var(--gw-text); background:var(--surface); border:1px solid var(--line); border-radius:12px; cursor:default; }
.ccell.out { opacity:.4; }
.ccell.has { cursor:pointer; transition:border-color .15s, transform .15s; }
.ccell.has:hover, .ccell.has:focus-visible { border-color:rgba(var(--gw-accent-rgb),.5); transform:translateY(-1px); outline:none; }
.ccell.today { border-color:rgba(var(--gw-accent-rgb),.7); box-shadow:inset 0 0 0 1px rgba(var(--gw-accent-rgb),.35); }
.ccell.today .cdn { color:#1a1208; background:var(--gw-accent); }
.cdn { align-self:flex-start; min-width:24px; padding:1px 6px; border-radius:999px; font-size:.8rem; font-weight:700; text-align:center; }
.cchip { display:block; padding:2px 6px; border-radius:6px; font-size:.72rem; line-height:1.35; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; color:var(--gw-text); background:color-mix(in srgb, var(--ct) 18%, transparent); border-left:2px solid var(--ct); }
.cmore { font-size:.7rem; color:var(--gw-muted); padding-left:4px; }
.cdots { display:none; gap:3px; margin-top:auto; }
.cdots i, .clegend i { width:8px; height:8px; border-radius:50%; background:var(--ct); display:inline-block; }
.clegend { display:flex; flex-wrap:wrap; gap:6px 16px; margin-top:14px; font-size:.8rem; color:var(--gw-muted); }
.clegend span { display:inline-flex; align-items:center; gap:6px; }
.cday { width:min(460px, calc(100vw - 2rem)); }
.cdayev { display:flex; gap:10px; align-items:flex-start; padding:10px 0; border-top:1px solid var(--line); }
.cdayev > div { min-width:0; display:flex; flex-direction:column; gap:2px; }
.cdayev b a { color:var(--gw-accent); text-decoration:none; } .cdayev b a:hover { text-decoration:underline; }
.cdayev span { font-size:.85rem; color:var(--gw-muted); }
.cdayev .cnote { color:var(--text-2); }
.cdayev .lgx { align-self:flex-start; margin:2px 0 0; }
.ctag { flex:none; margin-top:2px; font-size:.66rem; font-weight:700; letter-spacing:.08em; text-transform:uppercase; padding:.1rem .45rem; border-radius:6px; color:var(--ct); border:1px solid color-mix(in srgb, var(--ct) 55%, transparent); }
.caltools { margin-bottom:20px; }
.caltools > summary { cursor:pointer; list-style:none; display:flex; align-items:baseline; gap:12px; flex-wrap:wrap; }
.caltools > summary::-webkit-details-marker { display:none; }
.caltools[open] > summary { margin-bottom:14px; }
.caltools input, .caltools select { font:inherit; font-size:.92rem; color:var(--gw-text); background:var(--surface); border:1px solid var(--line-2); border-radius:10px; padding:.55rem .7rem; width:100%; box-sizing:border-box; }
.caltools .vchip { gap:6px; }
.lgaddw { margin-left:auto; font-size:.8rem; color:var(--gw-accent); }
@media (max-width:700px) {
  .cgrid { gap:3px; }
  .ccell { min-height:58px; padding:4px; border-radius:8px; align-items:center; }
  .cchip, .cmore { display:none; }
  .cdots { display:flex; }
  .cdn { align-self:center; }
  .cgh { padding:0 0 4px; text-align:center; font-size:.62rem; letter-spacing:.04em; }
}

/* ---- nav: keep every top link on one line, same height ---- */
.topnav { align-items:center; }

/* ---- Leaders menu groups ---- */
.topnav .menu .ghead { display:block; padding:4px 10px 2px; font-size:.68rem; font-weight:700; letter-spacing:.12em; text-transform:uppercase; color:var(--gw-muted); }
.topnav .drop.leadnav .menu { left:auto; right:0; }
.sheet nav .navsub { display:block; margin:6px 0 0 24px; font-size:.68rem; font-weight:700; letter-spacing:.1em; text-transform:uppercase; color:var(--gw-muted); }
.sheet nav a.tool.deep { padding-left:40px; }
.calbar .cnav { width:40px; height:40px; padding:0; display:inline-grid; place-items:center; font-size:1.2rem; line-height:1; }

/* ---- Past raids (/raids, /raid/<id>/history, raids.js) ---- */
.rhback { display:inline-block; margin:0 0 12px; font-size:.85rem; font-weight:600; color:var(--gw-muted); text-decoration:none; }
.rhback:hover { color:var(--gw-accent); }
.rwrap .muted a { color:var(--gw-accent); text-decoration:none; } .rwrap .muted a:hover { text-decoration:underline; }
.rhlist { padding:10px; }
.rhrow { color:inherit; text-decoration:none; transition:border-color .15s, background .15s; }
.rhrow:hover, .rhrow:focus-visible { border-color:rgba(var(--gw-accent-rgb),.5); background:rgba(var(--gw-accent-rgb),.04); outline:none; }
.rhrow.gone { opacity:.6; }
.rhgo { flex:none; font-size:.84rem; font-weight:600; color:var(--gw-accent); }
.evtag.off { color:#e8998d; }
.rhcopies { display:flex; align-items:center; flex-wrap:wrap; gap:8px; margin:0 0 14px; }
.rhcopies .lk { min-width:0; margin-right:4px; }
.rhcopies button { display:flex; flex-direction:column; align-items:flex-start; gap:1px; font:inherit; text-align:left; cursor:pointer; padding:.45rem .8rem; border-radius:12px; color:var(--text-2); background:var(--surface); border:1px solid var(--line-2); }
.rhcopies button b { font-size:.84rem; font-weight:600; }
.rhcopies button span { font-size:.72rem; color:var(--gw-muted); }
.rhcopies button:hover { border-color:rgba(var(--gw-accent-rgb),.5); }
.rhcopies button[aria-pressed="true"] { color:var(--gw-text); border-color:var(--gw-accent); background:rgba(var(--gw-accent-rgb),.12); }
@media (max-width:600px) { .rhgo { display:none; } }
.calacts { display:flex; gap:10px; flex-wrap:wrap; }

/* ---- Server admin (/admin, admin.js) ---- */
.awrap .lead a { color:var(--gw-accent); }
.atabs { display:flex; gap:4px; flex-wrap:wrap; margin:0 0 16px; padding:4px; border-radius:14px; background:var(--surface); border:1px solid var(--line); }
.atabs button { font:inherit; font-size:.88rem; font-weight:600; padding:.5rem .95rem; border:0; border-radius:10px; cursor:pointer; color:var(--gw-muted); background:none; }
.atabs button:hover { color:var(--gw-text); }
.atabs button[aria-selected="true"] { color:var(--gw-text); background:var(--surface-2); box-shadow:inset 0 -2px 0 var(--gw-accent); }
.agroup { margin-bottom:12px; } .agroup:last-child { margin-bottom:0; }
.apick { display:flex; flex-direction:column; gap:10px; }
.apick .vchip { gap:6px; font:inherit; font-size:.84rem; cursor:pointer; }
.apick .vchip span { opacity:.7; }
.apsearch { max-width:420px; }
.aphits { display:flex; flex-direction:column; gap:4px; max-height:280px; overflow:auto; max-width:520px; }
.aswitch { display:inline-flex; align-items:center; gap:10px; font-weight:600; cursor:pointer; margin-bottom:8px; }
.aswitch input { width:18px !important; height:18px; accent-color:var(--gw-accent); }
.ah4 { margin:14px 0 8px; font-size:.72rem; font-weight:700; letter-spacing:.08em; text-transform:uppercase; color:var(--gw-muted); font-family:var(--gw-font-ui); }
.asave { position:sticky; bottom:16px; z-index:20; display:flex; align-items:center; gap:10px; margin-top:16px; padding:10px 12px 10px 18px; border-radius:14px; background:rgba(23,24,29,.96); border:1px solid rgba(var(--gw-accent-rgb),.5); box-shadow:0 12px 32px rgba(0,0,0,.5); }
.asave[hidden] { display:none; }
.asave span { flex:1; font-size:.9rem; font-weight:600; } .asave span.ok { color:#7fc49a; } .asave span.bad { color:#e8998d; }
@media (max-width:600px) { .atabs { flex-wrap:nowrap; overflow-x:auto; } .atabs button { white-space:nowrap; } }

/* ---- Character Bios: stories first, calmer cards (characters.js) ---- */
.mem { background:linear-gradient(180deg, color-mix(in srgb, var(--cc) 8%, var(--surface-2)) 0%, var(--surface-2) 45%); }
.mem::before { background:radial-gradient(70% 90% at 18% 0%, color-mix(in srgb, var(--cc) 20%, transparent) 0%, transparent 72%); }
.mem .wmark { opacity:.06; }
.mem .teaser { -webkit-line-clamp:3; min-height:4.5em; }
.mem .teaser.unwritten { min-height:0; }
.alsop { display:flex; flex-wrap:wrap; align-items:center; gap:4px 12px; padding:12px 18px 0; margin-top:4px; border-top:1px solid var(--line); margin-left:18px; margin-right:18px; padding-left:0; padding-right:0; }
.alsop .ak { font-size:.68rem; font-weight:700; letter-spacing:.1em; text-transform:uppercase; color:var(--gw-muted); margin-right:2px; }
.alt { --cc:#9a8f80; display:inline-flex; align-items:center; gap:5px; padding:2px 0; font:inherit; font-size:.86rem; color:var(--gw-text); background:none; border:0; cursor:pointer; }
.alt .acr { display:grid; place-items:center; width:22px; height:22px; flex:none; }
.alt .acr .crest-img { width:22px; height:22px; }
.alt .acr .crest-svg { width:16px; height:16px; color:var(--cc); }
.alt .an { border-bottom:1px solid transparent; }
.alt:hover .an, .alt:focus-visible .an { color:var(--cc); border-bottom-color:currentColor; filter:brightness(1.25); }
.alt:focus-visible { outline:none; }
.alt.blank .an { color:var(--gw-muted); }
.alt .tfresh { width:6px; height:6px; border-radius:50%; background:var(--gw-accent); box-shadow:0 0 6px var(--gw-accent); }
.mem .alsop + .mfoot { margin-top:auto; }
.untold { grid-column:1 / -1; margin-top:14px; padding-top:18px; border-top:1px solid var(--line); }
.uhead { display:flex; align-items:baseline; gap:10px; }
.uhead h4 { margin:0; font-family:var(--font-display); font-size:1.15rem; font-weight:600; }
.ucount { font-size:.75rem; font-weight:700; padding:.1rem .55rem; border-radius:999px; color:var(--gw-muted); background:var(--surface); border:1px solid var(--line); }
.usub { margin:4px 0 12px; font-size:.86rem; color:var(--gw-muted); }
.ulist { display:grid; grid-template-columns:repeat(auto-fill, minmax(260px, 1fr)); gap:6px; }
.urow { --cc:#9a8f80; display:flex; align-items:center; gap:10px; min-width:0; padding:8px 12px 8px 8px; font:inherit; text-align:left; color:var(--gw-text); background:var(--surface); border:1px solid var(--line); border-left:3px solid color-mix(in srgb, var(--cc) 70%, var(--line)); border-radius:12px; cursor:pointer; transition:border-color .15s, background .15s; }
.urow:hover, .urow:focus-visible { outline:none; border-color:color-mix(in srgb, var(--cc) 50%, var(--line)); background:color-mix(in srgb, var(--cc) 6%, var(--surface)); }
.urow.you { box-shadow:0 0 0 1px rgba(var(--gw-accent-rgb),.45); }
.ucr { display:grid; place-items:center; width:38px; height:38px; flex:none; }
.ucr .crest-img { width:38px; height:38px; } .ucr .crest-svg { width:24px; height:24px; color:var(--cc); }
.ut { display:flex; flex-direction:column; min-width:0; flex:1; }
.ut b { font-family:var(--font-display); font-weight:600; font-size:1rem; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.ut span { font-size:.78rem; color:var(--cc); filter:brightness(1.15); }
.uo { display:flex; flex-direction:column; align-items:flex-end; flex:none; font-size:.78rem; color:var(--gw-muted); max-width:40%; text-align:right; }
.uo i { font-style:normal; font-size:.62rem; font-weight:700; letter-spacing:.06em; text-transform:uppercase; color:var(--gw-accent); }
.uo small { font-size:.72rem; }
@media (max-width:600px) { .alsop { margin-left:16px; margin-right:16px; } .ulist { grid-template-columns:1fr; } }
.uo { flex-direction:row; align-items:center; gap:0; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; display:block; }
@media (max-width:700px) { .mem .teaser { min-height:0; } }

/* ---- Character Bios: tale of the day, fresh ink, rank headings (characters.js) ---- */
#chrfeature:empty { display:none; }
.tale { --cc:#9a8f80; position:relative; overflow:hidden; display:grid; grid-template-columns:auto 1fr; gap:28px; align-items:center; margin-bottom:16px; padding:28px 32px;
  border-radius:20px; border:1px solid color-mix(in srgb, var(--cc) 35%, var(--line));
  background:radial-gradient(60% 120% at 0% 0%, color-mix(in srgb, var(--cc) 22%, transparent), transparent 70%), linear-gradient(180deg, color-mix(in srgb, var(--cc) 6%, var(--surface-2)), var(--surface-2)); }
.tale::after { content:''; position:absolute; left:0; right:0; top:0; height:2px; background:linear-gradient(90deg, transparent, var(--cc), transparent); opacity:.8; }
.tale .wmark { position:absolute; right:-40px; bottom:-60px; opacity:.07; filter:grayscale(.5); transform:rotate(-8deg); pointer-events:none; }
.tale > *:not(.wmark) { position:relative; z-index:1; }
.tart { position:relative; width:132px; height:132px; display:grid; place-items:center; }
.tart::before { content:''; position:absolute; inset:-10%; border-radius:50%; background:radial-gradient(circle, color-mix(in srgb, var(--cc) 30%, transparent), transparent 70%); }
.tcrest { position:relative; display:grid; place-items:center; }
.tcrest .crest-img { width:128px; height:128px; filter:drop-shadow(0 8px 16px rgba(0,0,0,.6)); }
.tcrest .crest-svg { width:80px; height:80px; color:var(--cc); }
.trace { position:absolute; right:-10px; bottom:-6px; } .trace .race-img { width:52px; height:52px; }
.tbody { min-width:0; }
.tbody .eyebrow { margin-bottom:4px; }
.tname { margin:0; font-size:clamp(1.7rem, 3.4vw, 2.4rem); line-height:1.05; }
.tsub { margin:6px 0 0; font-size:.9rem; color:var(--gw-muted); display:flex; align-items:center; gap:6px; flex-wrap:wrap; }
.tsub > span { color:var(--cc); filter:brightness(1.2); font-weight:500; }
.tsub img { width:20px; height:20px; border-radius:50%; }
.tsub b { color:var(--gw-text); font-weight:600; }
.ttext { margin:14px 0 18px; max-width:68ch; font-family:var(--gw-font-lore); font-style:italic; font-size:1.06rem; line-height:1.6; color:#e2d5bd; display:-webkit-box; -webkit-line-clamp:5; -webkit-box-orient:vertical; overflow:hidden; }
.ttext:not(.own)::before { content:'\201C'; color:var(--cc); font-size:1.4em; line-height:0; margin-right:3px; vertical-align:-.15em; }
.freshrow { margin-bottom:16px; }
.fhead { display:flex; align-items:baseline; gap:12px; margin:0 0 10px; }
.fhead h3 { margin:0; font-size:1.15rem; }
.fhead span { font-size:.84rem; color:var(--gw-muted); }
.fgrid { display:grid; grid-template-columns:repeat(3, minmax(0,1fr)); gap:10px; }
.ftile { --cc:#9a8f80; display:flex; gap:12px; align-items:flex-start; min-width:0; padding:14px; font:inherit; text-align:left; color:var(--gw-text); cursor:pointer;
  border-radius:14px; border:1px solid var(--line); border-top:2px solid color-mix(in srgb, var(--cc) 70%, var(--line)); background:linear-gradient(180deg, color-mix(in srgb, var(--cc) 7%, var(--surface-2)), var(--surface-2)); transition:transform .15s, border-color .15s; }
.ftile:hover, .ftile:focus-visible { outline:none; transform:translateY(-2px); border-color:color-mix(in srgb, var(--cc) 45%, var(--line)); border-top-color:var(--cc); }
.fcr { flex:none; width:46px; height:46px; display:grid; place-items:center; }
.fcr .crest-img { width:46px; height:46px; } .fcr .crest-svg { width:28px; height:28px; color:var(--cc); }
.fb { display:flex; flex-direction:column; gap:2px; min-width:0; }
.fb b { font-family:var(--font-display); font-size:1.05rem; font-weight:600; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.fs { font-size:.78rem; color:var(--cc); filter:brightness(1.2); }
.ft { margin-top:4px; font-family:var(--gw-font-lore); font-style:italic; font-size:.9rem; line-height:1.45; color:#d9cbb2; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
.fm { margin-top:6px; font-size:.74rem; color:var(--gw-muted); }
.rankh { grid-column:1 / -1; display:flex; align-items:center; gap:10px; margin:10px 0 0; font-family:var(--font-display); font-size:1.15rem; font-weight:600; }
.rankh:first-child { margin-top:0; }
.rankh::after { content:''; flex:1; height:1px; background:var(--line); }
.rankh i { font-style:normal; font-family:var(--gw-font-ui); font-size:.72rem; font-weight:700; padding:.1rem .5rem; border-radius:999px; color:var(--gw-muted); background:var(--surface); border:1px solid var(--line); }
@media (max-width:860px) { .fgrid { grid-template-columns:1fr; } }
@media (max-width:600px) {
  .tale { grid-template-columns:1fr; gap:14px; padding:22px 18px; text-align:left; }
  .tart { width:96px; height:96px; } .tcrest .crest-img { width:92px; height:92px; } .trace .race-img { width:40px; height:40px; }
  .ttext { -webkit-line-clamp:6; font-size:1rem; }
}
/* tale of the day: class and race crests side by side, both at a readable size */
.tale .tart { width:auto; height:auto; display:flex; align-items:center; gap:6px; }
.tale .tart::before { inset:-8% -4%; }
.tale .tcrest .crest-img { width:124px; height:124px; max-width:none; }
.tale .trace { position:relative; right:auto; bottom:auto; display:grid; place-items:center; }
.tale .trace .race-img { width:96px; height:96px; max-width:none; filter:drop-shadow(0 8px 16px rgba(0,0,0,.6)); }
@media (max-width:600px) { .tale .tcrest .crest-img { width:96px; height:96px; } .tale .trace .race-img { width:74px; height:74px; } }

/* ---- urgent fixes 2026-10 (c1) ---- */
/* not-a-member notice (GW.notMember) - any page can drop it into a container */
.gate.notmember { padding:32px 20px; }
.gate.notmember p { color:var(--gw-text); margin-bottom:16px; }
/* cancelled calendar entries: kept as a record, struck through, tagged */
.ccx { display:inline-block; font-size:.72rem; font-weight:700; letter-spacing:.08em; text-transform:uppercase; color:var(--gw-danger); }
.row.cancelled .t b, .row.cancelled .d b { color:var(--text-2); }
.row.cancelled .t b s, .cdayev.cancelled b s, .cchip.cx s { text-decoration-thickness:1px; }
.cchip.cx { opacity:.75; }
.cdayev .ccx { font-size:.68rem; }
/* calendar load failure */
.row.calfail { display:flex; flex-wrap:wrap; align-items:center; gap:12px; color:var(--text-2); }
/* admin calendar form: All day tick box under the When field */
.evf > label.evchk { display:inline-flex; align-items:center; gap:7px; font-size:.85rem; font-weight:500; letter-spacing:0; text-transform:none; color:var(--text-2); cursor:pointer; }
.evf > label.evchk input { width:auto; margin:0; accent-color:var(--gw-accent); }
/* the signed-in bit in the phone menu's foot (avatar was unstyled there) */
.sheet .foot [data-auth] { display:inline-flex; align-items:center; gap:10px; flex-wrap:wrap; }
.sheet .foot .who { display:inline-flex; align-items:center; gap:8px; color:var(--text-2); font-size:.88rem; text-decoration:none; }
.sheet .foot .who img { width:28px; height:28px; border-radius:50%; border:1px solid var(--line-2); }
/* phones hide the type column; a cancelled row keeps its tag, under the title */
@media (max-width:560px){ .row.cancelled .e { display:block; grid-column:2; margin-top:-6px; } }
/* desktop nav: never wrap a link onto two lines; on narrow desktops The Grimwood Way shortens to The Way */
.topnav a { white-space:nowrap; }
@media (max-width:1099px){ .topnav .wl { display:none; } .topnav > a, .topnav > .drop > a { padding:.5rem .6rem; } }

/* ---- c2 (Forever + Leaders tools fixes). Appended to site.css; selectors scoped to the pages they fix. ---- */

/* Crafting: the Materials switch stacks on narrow phones instead of pushing the page sideways */
@media (max-width:420px) {
  #ask .seg { display:flex; flex-direction:column; width:100%; flex-wrap:nowrap; border-radius:14px; gap:2px; }
  #ask .seg button { flex:none; width:100%; white-space:normal; border-radius:11px; padding:.5rem .8rem; font-size:.86rem; }
}

/* Leaders Area tabs: the tablist sits inside .otabs next to the "You: ..." line */
.otabs .otablist { display:flex; gap:6px; flex-wrap:wrap; align-items:center; }

/* Events: editing an event, repeats and sign-up slots are locked; cancelled rows stay with an Undo */
.evf > .evlbl { font-size:.72rem; font-weight:700; letter-spacing:.08em; text-transform:uppercase; color:var(--gw-muted); margin:0; }
.evgrid > .evlocked, .evmore > .evlocked { grid-column:1 / -1; margin:0; }
.evmore .evf.locked .evline input, .evmore select:disabled { opacity:.55; cursor:not-allowed; }
.evrow.gone { opacity:.75; border-style:dashed; }
.evbtns .evcancel { color:#e8998d; }
.evbtns .evcancel:hover { color:#f2b3a9; border-color:#e8998d; }
@media (max-width:600px) { .evbtns { gap:10px; } .evbtns .gw-btn { min-height:40px; } }

/* Ledger: on phones, "Look someone up" comes before the queue of removed posts */
@media (max-width:640px) {
  #ledger.lgbuilt { display:flex; flex-direction:column; }
  #ledger.lgbuilt > #lgLook { order:-1; }
}

/* Server admin: on phones the tab row wraps instead of scrolling sideways with nothing to say it can */
@media (max-width:600px) {
  #sadmin .atabs { flex-wrap:wrap; overflow-x:visible; }
  #sadmin .atabs button { flex:1 1 auto; }
}

/* ---- calendar: "7 going" and "Add to calendar" ---- */
.row.rowx { position:relative; }
.row.rowx:hover { background:var(--surface-2); }
.row.rowx .rowlink { position:absolute; inset:0; z-index:1; border-radius:inherit; }
.row.rowx .rowlink:focus-visible { outline:2px solid var(--gw-amber, #e3a44e); outline-offset:-2px; }
.row .t .calx, .cdayev .calx { display:block; font-size:.82rem; color:var(--gw-muted); margin-top:3px; white-space:normal; }
.calx .going, .row .t .calx .going { display:inline; font-size:inherit; color:var(--text-2); }
.calx .ics { position:relative; z-index:2; color:var(--gw-amber, #e3a44e); text-decoration:none; display:inline-block; padding:5px 0; margin:-5px 0; }
.calx .ics:hover, .calx .ics:focus-visible { text-decoration:underline; }

.lpinghint { margin:-6px 0 14px; font-size:.82rem; }

/* Games menu: the game name reads as a heading, with "Guild info" spelled out underneath it */
.topnav .menu a.ghome { font-weight:600; }
