:root {
  --bg: #090807;
  --bg-soft: #100d0b;
  --panel: rgba(18, 15, 13, 0.92);
  --panel-2: rgba(25, 20, 17, 0.96);
  --panel-3: #15110f;
  --line: rgba(199, 139, 57, 0.23);
  --line-strong: rgba(231, 165, 74, 0.52);
  --gold: #d9a34b;
  --gold-soft: #f0c57b;
  --ember: #e4581e;
  --ember-soft: #ff8c42;
  --red: #8b2115;
  --red-bright: #bd3a20;
  --text: #f1e9dc;
  --muted: #a99b8c;
  --faint: #756a60;
  --success: #75b86e;
  --warning: #e4a64c;
  --danger: #d55c4d;
  --warrior: #c79c6e;
  --paladin: #f58cba;
  --hunter: #abd473;
  --rogue: #fff569;
  --priest: #ffffff;
  --shaman: #0070de;
  --mage: #69ccf0;
  --warlock: #9482c9;
  --druid: #ff7d0a;
  --group-1: #e26d24;
  --group-1-soft: #ff9a52;
  --group-1-rgb: 226,109,36;
  --group-2: #3f83d5;
  --group-2-soft: #79b5ff;
  --group-2-rgb: 63,131,213;
  --radius: 16px;
  --radius-sm: 10px;
  --shadow: 0 18px 60px rgba(0, 0, 0, 0.44);
  --serif: "Palatino Linotype", "Book Antiqua", Georgia, serif;
  --sans: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}

* { box-sizing: border-box; }
html { min-height: 100%; background: var(--bg); }
body {
  margin: 0;
  min-height: 100vh;
  color: var(--text);
  font-family: var(--sans);
  background:
    radial-gradient(circle at 83% 12%, rgba(191, 60, 18, 0.16), transparent 28%),
    radial-gradient(circle at 18% 86%, rgba(127, 54, 20, 0.13), transparent 34%),
    linear-gradient(145deg, #080706, #0c0908 58%, #090807);
  overflow-x: hidden;
}
button, input, select { font: inherit; }
button { color: inherit; }
button, select { cursor: pointer; }
button:focus-visible, input:focus-visible, select:focus-visible { outline: 2px solid var(--gold-soft); outline-offset: 2px; }

.ambient {
  position: fixed;
  pointer-events: none;
  filter: blur(60px);
  opacity: .24;
  border-radius: 999px;
  z-index: 0;
}
.ambient-one { width: 440px; height: 440px; right: -130px; top: 8%; background: #9e2c0d; }
.ambient-two { width: 420px; height: 420px; left: 18%; bottom: -250px; background: #6f3c16; }
.ember-field {
  position: fixed;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  background-image:
    radial-gradient(circle, rgba(255, 126, 48, .85) 0 1px, transparent 1.6px),
    radial-gradient(circle, rgba(222, 80, 20, .7) 0 1px, transparent 1.5px);
  background-size: 87px 87px, 137px 137px;
  background-position: 12px 20px, 72px 96px;
  mask-image: linear-gradient(to bottom, rgba(0,0,0,.34), transparent 70%);
  opacity: .12;
}

.app-shell { position: relative; z-index: 1; min-height: 100vh; display: grid; grid-template-columns: 286px 1fr; }
.sidebar {
  position: sticky;
  top: 0;
  height: 100vh;
  padding: 24px 18px 18px;
  display: flex;
  flex-direction: column;
  gap: 20px;
  background: linear-gradient(180deg, rgba(16, 13, 11, .98), rgba(8, 7, 6, .98));
  border-right: 1px solid var(--line);
  box-shadow: 12px 0 42px rgba(0, 0, 0, .22);
  overflow-y: auto;
}
.brand { display: flex; align-items: center; gap: 13px; padding: 8px 5px 20px; border-bottom: 1px solid var(--line); }
.brand img { width: 50px; height: 50px; object-fit: cover; border-radius: 14px; border: 1px solid rgba(225, 160, 76, .44); box-shadow: inset 0 0 18px rgba(0,0,0,.7), 0 0 24px rgba(188,73,20,.15); }
.brand span, .page-heading span, .panel-heading span, .achievement-summary > div:first-child > span, .leaderboard-toolbar > div > span, .admin-card span {
  display: block;
  text-transform: uppercase;
  letter-spacing: .16em;
  font-size: 10px;
  font-weight: 800;
  color: var(--gold);
}
.brand strong { display: block; margin-top: 3px; font-family: var(--serif); font-size: 18px; letter-spacing: .03em; }

.main-nav { display: grid; gap: 5px; }
.nav-button {
  width: 100%;
  display: grid;
  grid-template-columns: 28px 1fr;
  align-items: center;
  gap: 8px;
  border: 1px solid transparent;
  background: transparent;
  padding: 11px 12px;
  border-radius: 10px;
  color: #c9bdaf;
  text-align: left;
  transition: .18s ease;
}
.nav-button i { font-style: normal; color: #755032; text-align: center; }
.nav-button:hover { color: var(--text); background: rgba(255,255,255,.035); border-color: rgba(255,255,255,.035); }
.nav-button.active { color: var(--gold-soft); border-color: var(--line-strong); background: linear-gradient(90deg, rgba(122, 40, 17, .42), rgba(57, 31, 18, .18)); box-shadow: inset 3px 0 0 var(--ember); }
.nav-button.active i { color: var(--ember-soft); }

.sync-card {
  margin-top: auto;
  padding: 15px;
  border: 1px solid var(--line);
  border-radius: 13px;
  background: linear-gradient(145deg, rgba(44,31,22,.44), rgba(14,12,10,.78));
  box-shadow: inset 0 1px rgba(255,255,255,.025);
}
.sync-heading { display: flex; align-items: center; gap: 8px; font-size: 13px; }
.status-dot { width: 8px; height: 8px; border-radius: 50%; display: inline-block; background: var(--success); box-shadow: 0 0 12px rgba(117,184,110,.65); }
.sync-card p { color: var(--muted); font-size: 11px; margin: 7px 0 12px; }
.version { display: flex; justify-content: space-between; gap: 10px; color: var(--muted); font-size: 11px; padding: 6px 0; border-top: 1px solid rgba(255,255,255,.04); }
.version b { color: #ded2c4; }
.profile-mini { display: grid; grid-template-columns: 38px 1fr 26px; align-items: center; gap: 10px; padding: 4px 2px; }
.profile-mini strong, .profile-mini span { display: block; }
.profile-mini strong { font-size: 13px; }
.profile-mini span { color: var(--muted); font-size: 10px; margin-top: 2px; }
.avatar { display: grid; place-items: center; width: 38px; height: 38px; border-radius: 11px; color: #130e09; font-weight: 900; border: 1px solid rgba(255,255,255,.22); box-shadow: inset 0 0 14px rgba(255,255,255,.14); }
.avatar.large { width: 112px; height: 112px; font-size: 36px; border-radius: 50%; }
.avatar.warrior { background: linear-gradient(145deg, #e2bd89, #89623d); }
.icon-button { border: 0; background: transparent; color: var(--muted); font-size: 21px; }

.main-content { min-width: 0; padding: 0 34px 48px; }
.topbar { min-height: 92px; display: flex; align-items: center; justify-content: space-between; gap: 18px; position: sticky; top: 0; z-index: 20; background: linear-gradient(180deg, rgba(9,8,7,.98), rgba(9,8,7,.86), transparent); backdrop-filter: blur(10px); }
.page-heading h1 { margin: 3px 0 0; font-family: var(--serif); font-size: 30px; letter-spacing: .025em; }
.topbar-actions { display: flex; align-items: center; gap: 10px; }
.mobile-menu { display: none; border: 1px solid var(--line); background: var(--panel); border-radius: 9px; padding: 8px 10px; }
.notification { position: relative; width: 42px; height: 42px; border-radius: 11px; border: 1px solid var(--line); background: rgba(19,15,13,.88); color: var(--gold); }
.notification b { position: absolute; right: -4px; top: -6px; min-width: 18px; height: 18px; display: grid; place-items: center; border-radius: 9px; background: var(--red-bright); color: white; font-size: 10px; }

.page { display: none; animation: pageIn .28s ease; }
.page.active { display: block; }
@keyframes pageIn { from { opacity: 0; transform: translateY(7px); } to { opacity: 1; transform: none; } }

.button { border-radius: 9px; min-height: 39px; padding: 9px 15px; border: 1px solid transparent; font-weight: 800; font-size: 12px; letter-spacing: .02em; transition: .18s ease; }
.button-primary { color: #fff0dc; border-color: rgba(238, 118, 50, .48); background: linear-gradient(180deg, #9e3118, #65180f); box-shadow: inset 0 1px rgba(255,255,255,.1), 0 8px 22px rgba(82,19,10,.22); }
.button-primary:hover { background: linear-gradient(180deg, #bd4320, #7a1e12); transform: translateY(-1px); }
.button-secondary { color: var(--gold-soft); border-color: var(--line-strong); background: linear-gradient(180deg, rgba(65,45,28,.68), rgba(26,20,16,.82)); }
.button-secondary:hover, .button-ghost:hover { border-color: var(--gold); background-color: rgba(224,156,67,.08); }
.button-ghost { border-color: var(--line); background: transparent; color: var(--muted); }
.full { width: 100%; }
.text-button { border: 0; background: transparent; color: var(--gold); font-size: 11px; font-weight: 800; }
.text-button:hover { color: var(--gold-soft); }
.button-row { display: flex; flex-wrap: wrap; gap: 10px; }

.hero-card {
  position: relative;
  min-height: 355px;
  overflow: hidden;
  border: 1px solid var(--line-strong);
  border-radius: 20px;
  box-shadow: var(--shadow), inset 0 0 0 1px rgba(255,255,255,.025);
  background: #16100d;
}
.hero-art { position: absolute; inset: 0; background-image: url('assets/ashen-banner.webp'); background-size: cover; background-position: 54% 48%; transform: scale(1.045); filter: saturate(.78) contrast(1.08) brightness(.76); }
.hero-shade { position: absolute; inset: 0; background: linear-gradient(90deg, rgba(7,6,5,.96) 0%, rgba(8,7,6,.76) 40%, rgba(8,7,6,.22) 68%, rgba(8,7,6,.52) 100%), linear-gradient(0deg, rgba(6,5,4,.74), transparent 45%); }
.hero-copy { position: relative; z-index: 2; max-width: 610px; padding: 48px 50px; }
.tag { display: inline-flex; align-items: center; min-height: 26px; padding: 4px 10px; border-radius: 999px; border: 1px solid rgba(226,151,67,.38); background: rgba(35,21,14,.72); color: var(--gold-soft); text-transform: uppercase; letter-spacing: .14em; font-size: 9px; font-weight: 900; }
.hero-copy h2 { margin: 14px 0 7px; max-width: 540px; font-family: var(--serif); font-size: clamp(33px, 4vw, 55px); line-height: 1.02; text-shadow: 0 4px 24px rgba(0,0,0,.8); }
.hero-copy > p { margin: 0; color: #d5c7b8; font-size: 15px; }
.hero-stats { display: flex; flex-wrap: wrap; gap: 14px 26px; margin: 24px 0; color: var(--muted); font-size: 12px; }
.hero-stats b { color: var(--gold-soft); font-size: 15px; }
.countdown { position: absolute; right: 26px; top: 24px; z-index: 3; padding: 12px 15px; border: 1px solid var(--line); border-radius: 12px; background: rgba(8,7,6,.78); backdrop-filter: blur(8px); text-align: right; }
.countdown span, .countdown strong { display: block; }
.countdown span { color: var(--muted); text-transform: uppercase; letter-spacing: .16em; font-size: 8px; }
.countdown strong { margin-top: 3px; font-family: var(--serif); color: var(--gold-soft); font-size: 20px; }

.stat-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px; margin: 17px 0; }
.stat-card { position: relative; overflow: hidden; min-height: 118px; padding: 20px; border: 1px solid var(--line); border-radius: 14px; background: linear-gradient(145deg, rgba(31,24,20,.94), rgba(15,12,10,.94)); box-shadow: inset 0 1px rgba(255,255,255,.025); }
.stat-card::after { content: ""; position: absolute; width: 100px; height: 100px; right: -48px; bottom: -55px; border-radius: 50%; background: rgba(219,77,24,.08); box-shadow: 0 0 38px rgba(224,79,21,.18); }
.stat-card span, .stat-card strong, .stat-card small { display: block; position: relative; z-index: 1; }
.stat-card span { color: var(--muted); font-size: 11px; }
.stat-card strong { margin: 8px 0 4px; font-family: var(--serif); color: var(--gold-soft); font-size: 27px; }
.stat-card small { color: #887c70; font-size: 10px; }

.panel { border: 1px solid var(--line); border-radius: var(--radius); background: linear-gradient(150deg, rgba(26,21,18,.95), rgba(13,11,10,.96)); box-shadow: inset 0 1px rgba(255,255,255,.025), 0 14px 38px rgba(0,0,0,.17); }
.dashboard-grid { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(320px, .75fr); gap: 16px; }
.upcoming-panel, .activity-panel, .leaderboard-preview, .readiness-panel { padding: 20px; }
.panel-heading { display: flex; align-items: flex-start; justify-content: space-between; gap: 14px; margin-bottom: 15px; }
.panel-heading h2, .leaderboard-toolbar h2, .achievement-summary h2, .admin-card h2 { margin: 3px 0 0; font-family: var(--serif); font-size: 20px; letter-spacing: .02em; }
.event-list { display: grid; gap: 8px; }
.event-row { display: grid; grid-template-columns: 58px 1fr auto; gap: 13px; align-items: center; padding: 12px 10px; border-radius: 11px; border: 1px solid transparent; transition: .16s ease; }
.event-row:hover { background: rgba(255,255,255,.025); border-color: rgba(255,255,255,.04); }
.event-date { display: grid; place-items: center; min-height: 50px; border-radius: 10px; background: rgba(85,45,24,.32); border: 1px solid rgba(216,142,62,.24); }
.event-date strong, .event-date span { display: block; }
.event-date strong { color: var(--gold-soft); font-size: 19px; }
.event-date span { color: var(--muted); font-size: 8px; text-transform: uppercase; letter-spacing: .14em; }
.event-row h3 { margin: 0 0 3px; font-size: 13px; }
.event-row p { margin: 0; color: var(--muted); font-size: 10px; }
.event-status { text-align: right; }
.event-status b, .event-status span { display: block; }
.event-status b { color: var(--gold); font-size: 11px; }
.event-status span { color: var(--faint); font-size: 9px; margin-top: 2px; }
.activity-list { display: grid; gap: 2px; }
.activity-item { display: grid; grid-template-columns: 34px 1fr; gap: 10px; align-items: center; padding: 11px 0; border-top: 1px solid rgba(255,255,255,.045); }
.activity-item:first-child { border-top: 0; }
.activity-item i { width: 31px; height: 31px; display: grid; place-items: center; border-radius: 9px; font-style: normal; background: rgba(255,255,255,.04); }
.activity-item i.gold { color: var(--gold-soft); }.activity-item i.orange { color: var(--druid); }.activity-item i.blue { color: var(--mage); }.activity-item i.red { color: #dd6550; }
.activity-item strong, .activity-item span { display: block; }
.activity-item strong { font-size: 11px; }
.activity-item span { margin-top: 3px; color: var(--muted); font-size: 9px; }
.leader-preview { display: grid; gap: 8px; }
.leader-line { display: grid; grid-template-columns: 31px 1fr auto; align-items: center; gap: 9px; padding: 10px 11px; border-radius: 10px; background: rgba(255,255,255,.022); }
.leader-line .position { color: var(--gold); font-family: var(--serif); font-size: 16px; }
.leader-line strong { font-size: 12px; }.leader-line span { color: var(--muted); font-size: 9px; }.leader-line b { color: var(--gold-soft); font-size: 12px; }
.readiness-content { display: grid; grid-template-columns: 138px 1fr; gap: 20px; align-items: center; padding-top: 8px; }
.readiness-ring { width: 128px; aspect-ratio: 1; border-radius: 50%; display: grid; place-items: center; background: conic-gradient(var(--ember) 0 83%, rgba(255,255,255,.06) 83% 100%); position: relative; }
.readiness-ring::after { content: ""; position: absolute; inset: 10px; border-radius: 50%; background: #15110f; border: 1px solid var(--line); }
.readiness-ring > div { position: relative; z-index: 1; text-align: center; }.readiness-ring strong, .readiness-ring span { display:block; }.readiness-ring strong { font-family: var(--serif); font-size: 25px; color: var(--gold-soft); }.readiness-ring span { color: var(--muted); font-size: 9px; text-transform: uppercase; letter-spacing: .13em; }
.readiness-items { display: grid; gap: 12px; }.readiness-items div { display:flex; justify-content:space-between; gap:12px; padding-bottom: 9px; border-bottom: 1px solid rgba(255,255,255,.045); font-size: 11px; }.readiness-items span { color: var(--muted); }.readiness-items b { color: var(--text); }.readiness-items b.ok { color: var(--success); }.readiness-items b.warn { color: var(--warning); }

.calendar-toolbar { min-height: 68px; display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; padding: 12px 15px; margin-bottom: 15px; }
.calendar-toolbar h2 { margin: 0; font-family: var(--serif); font-size: 22px; }
.calendar-navigation { display: flex; gap: 5px; }.calendar-navigation button, .view-switch button { min-height: 34px; border: 1px solid var(--line); background: rgba(255,255,255,.02); color: var(--muted); border-radius: 8px; padding: 7px 11px; font-size: 11px; }.calendar-navigation button:hover, .view-switch button:hover, .view-switch button.active { color: var(--gold-soft); border-color: var(--line-strong); background: rgba(116,61,27,.24); }
.view-switch { justify-self: end; display: flex; gap: 5px; }
.calendar-layout { display: grid; grid-template-columns: minmax(0, 1fr) 300px; gap: 15px; }
.calendar-panel { overflow: hidden; }.calendar-weekdays, .calendar-grid { display: grid; grid-template-columns: repeat(7, minmax(0,1fr)); }.calendar-weekdays { background: rgba(255,255,255,.025); border-bottom: 1px solid var(--line); }.calendar-weekdays span { padding: 11px 8px; text-align:center; color: var(--muted); font-size: 9px; font-weight: 800; text-transform: uppercase; letter-spacing: .12em; }
.calendar-day { min-height: 132px; padding: 8px; border-right: 1px solid rgba(255,255,255,.045); border-bottom: 1px solid rgba(255,255,255,.045); background: rgba(10,8,7,.28); transition: .14s ease; }.calendar-day:nth-child(7n) { border-right: 0; }.calendar-day:hover { background: rgba(255,255,255,.025); }.calendar-day.outside { opacity: .34; }.calendar-day.selected { box-shadow: inset 0 0 0 1px var(--gold), inset 0 0 20px rgba(212,142,58,.08); }.calendar-day.today .day-number { background: var(--red-bright); color: white; }
.day-number { width: 25px; height: 25px; display: grid; place-items:center; margin-left:auto; border-radius: 8px; color: #c9bcad; font-size: 10px; }.calendar-events { display:grid; gap:4px; margin-top:5px; }.calendar-event { overflow:hidden; white-space:nowrap; text-overflow:ellipsis; border: 1px solid rgba(226,148,61,.22); border-left: 3px solid var(--ember); border-radius:6px; padding: 5px 6px; background: rgba(92,36,17,.35); font-size: 9px; color:#ecd8c3; }.calendar-event.guild { border-left-color: var(--gold); background: rgba(95,68,29,.25); }.calendar-event.officer { border-left-color: var(--warlock); background: rgba(79,58,104,.24); }
.agenda-panel { padding: 18px; }.agenda-list { display:grid; gap:9px; min-height: 380px; }.agenda-entry { border:1px solid rgba(255,255,255,.05); border-left: 3px solid var(--ember); border-radius: 9px; padding: 11px; background: rgba(255,255,255,.02); }.agenda-entry strong, .agenda-entry span { display:block; }.agenda-entry strong { font-size: 11px; }.agenda-entry span { color: var(--muted); font-size:9px; margin-top:4px; }.agenda-empty { color: var(--muted); text-align:center; padding:50px 12px; font-size:11px; }

.filter-bar { display: flex; align-items: center; gap: 10px; padding: 13px; margin-bottom: 14px; }
.search-field { flex: 1; min-width: 220px; min-height: 42px; display:flex; align-items:center; gap:9px; padding:0 12px; border:1px solid var(--line); border-radius:10px; background:rgba(8,7,6,.55); }.search-field span { color: var(--gold); }.search-field input { width:100%; border:0; outline:0; background:transparent; color:var(--text); font-size:12px; }.search-field input::placeholder { color:#6f655d; }
select { min-height:42px; border:1px solid var(--line); border-radius:10px; background:#17120f; color:#cfc2b4; padding:0 34px 0 11px; font-size:11px; }
.filter-count { margin-left:auto; text-align:right; }.filter-count strong, .filter-count span { display:block; }.filter-count strong { font-family:var(--serif); color:var(--gold-soft); font-size:19px; }.filter-count span { color:var(--muted); font-size:8px; text-transform:uppercase; letter-spacing:.1em; }
.table-panel { overflow:hidden; }.table-wrap { overflow-x:auto; } table { width:100%; border-collapse:collapse; min-width:760px; } th { padding:14px 16px; color:#81766c; font-size:8px; text-transform:uppercase; letter-spacing:.13em; text-align:left; background:rgba(255,255,255,.02); border-bottom:1px solid var(--line); } td { padding:14px 16px; border-bottom:1px solid rgba(255,255,255,.045); color:#cfc5ba; font-size:11px; } tbody tr:hover { background:rgba(255,255,255,.018); } tbody tr:last-child td { border-bottom:0; }.member-cell { display:flex; align-items:center; gap:10px; }.class-dot { width:29px; height:29px; display:grid; place-items:center; border-radius:9px; color:#090705; font-weight:900; }.member-cell strong, .member-cell span { display:block; }.member-cell span { color:var(--muted); font-size:8px; margin-top:2px; }.attendance { display:flex; align-items:center; gap:8px; }.attendance-track { width:78px; height:5px; border-radius:99px; background:rgba(255,255,255,.06); overflow:hidden; }.attendance-track i { display:block; height:100%; background:linear-gradient(90deg,var(--red-bright),var(--gold)); }.class-name { font-weight:800; }

.achievement-summary { display:flex; justify-content:space-between; align-items:center; gap:24px; padding:20px 22px; margin-bottom:15px; border:1px solid var(--line-strong); border-radius:16px; background:linear-gradient(110deg,rgba(69,33,18,.58),rgba(18,14,12,.93) 55%); box-shadow:var(--shadow); }.achievement-summary h2 { margin-bottom:10px; }.progress-track { width:min(430px,48vw); height:7px; border-radius:99px; background:rgba(255,255,255,.06); overflow:hidden; }.progress-track i { display:block; height:100%; background:linear-gradient(90deg,var(--red-bright),var(--gold)); box-shadow:0 0 18px rgba(228,88,30,.5); }.points-total { text-align:right; min-width:170px; }.points-total span,.points-total strong { display:block; }.points-total span { color:var(--muted); font-size:9px; text-transform:uppercase; letter-spacing:.13em; }.points-total strong { font-family:var(--serif); font-size:34px; color:var(--gold-soft); margin-top:5px; }
.achievement-layout { display:grid; grid-template-columns:230px minmax(0,1fr); gap:15px; }.category-panel { padding:12px; align-self:start; position:sticky; top:104px; }.category-button { width:100%; display:flex; justify-content:space-between; gap:10px; border:1px solid transparent; background:transparent; color:var(--muted); padding:11px 12px; border-radius:9px; font-size:11px; text-align:left; }.category-button:hover,.category-button.active { color:var(--gold-soft); border-color:var(--line); background:rgba(114,55,24,.25); }.category-button b { color:#75695f; }.achievement-filter { margin-bottom:12px; }.achievement-grid { display:grid; gap:10px; }.achievement-card { display:grid; grid-template-columns:58px 1fr 82px; gap:14px; align-items:center; min-height:91px; padding:14px; border:1px solid var(--line); border-radius:13px; background:linear-gradient(110deg,rgba(31,24,20,.95),rgba(14,12,10,.96)); }.achievement-card.locked { opacity:.68; filter:saturate(.6); }.achievement-icon { width:54px; height:54px; display:grid; place-items:center; border-radius:12px; border:1px solid var(--line-strong); background:radial-gradient(circle at 40% 30%,rgba(221,133,47,.34),rgba(52,25,13,.7)); font-size:24px; box-shadow:inset 0 0 16px rgba(0,0,0,.55); }.achievement-copy h3 { margin:0; color:var(--gold-soft); font-family:var(--serif); font-size:15px; }.achievement-copy p { margin:4px 0 9px; color:var(--muted); font-size:10px; }.achievement-progress { display:flex; align-items:center; gap:8px; }.achievement-progress .track { flex:1; height:5px; border-radius:99px; background:rgba(255,255,255,.06); overflow:hidden; }.achievement-progress .track i { display:block; height:100%; background:var(--gold); }.achievement-progress span { color:#84776c; font-size:8px; }.achievement-points { position:relative; display:grid; place-items:center; min-height:63px; color:var(--gold-soft); font-family:var(--serif); font-size:18px; border-left:1px solid var(--line); }.achievement-points small { display:block; color:var(--muted); font-family:var(--sans); font-size:8px; text-transform:uppercase; letter-spacing:.12em; }

.leaderboard-toolbar { display:flex; justify-content:space-between; align-items:center; gap:20px; padding:18px 20px; margin-bottom:14px; }.leader-tabs { display:flex; gap:6px; }.leader-tabs button { min-height:35px; padding:7px 13px; border-radius:8px; border:1px solid var(--line); background:transparent; color:var(--muted); font-size:10px; font-weight:800; }.leader-tabs button.active,.leader-tabs button:hover { color:var(--gold-soft); border-color:var(--line-strong); background:rgba(113,53,22,.28); }.podium { display:grid; grid-template-columns:repeat(3, minmax(0,1fr)); gap:14px; margin-bottom:14px; }.podium-card { position:relative; min-height:145px; padding:22px; border:1px solid var(--line); border-radius:15px; background:linear-gradient(145deg,rgba(31,24,19,.96),rgba(12,10,9,.96)); overflow:hidden; }.podium-card.first { border-color:rgba(234,179,92,.58); transform:translateY(-4px); }.podium-rank { position:absolute; right:14px; top:8px; font-family:var(--serif); font-size:50px; color:rgba(221,159,73,.11); }.podium-card span,.podium-card strong,.podium-card small { display:block; }.podium-card span { color:var(--gold); font-size:9px; text-transform:uppercase; letter-spacing:.14em; }.podium-card strong { margin:13px 0 5px; font-family:var(--serif); font-size:21px; }.podium-card small { color:var(--muted); font-size:9px; }.podium-card b { display:block; margin-top:12px; color:var(--gold-soft); font-family:var(--serif); font-size:24px; }.leaderboard-table-panel td:first-child { color:var(--gold); font-family:var(--serif); font-size:16px; }

.dossier-card { max-width:1100px; margin:0 auto; overflow:hidden; border:1px solid var(--line-strong); border-radius:20px; background:linear-gradient(145deg,rgba(24,19,16,.98),rgba(10,9,8,.99)); box-shadow:var(--shadow); }.dossier-banner { position:relative; text-align:center; padding:27px 24px 23px; border-bottom:1px solid var(--line); background:linear-gradient(90deg,rgba(101,41,17,.3),rgba(31,22,17,.7),rgba(101,41,17,.3)); }.dossier-banner::before { content:""; position:absolute; left:8%; right:8%; top:50%; height:1px; background:linear-gradient(90deg,transparent,var(--line-strong),transparent); }.dossier-banner > * { position:relative; z-index:1; display:table; margin-left:auto; margin-right:auto; background:#17120f; padding-inline:12px; }.dossier-banner span { color:var(--gold); text-transform:uppercase; letter-spacing:.2em; font-size:9px; }.dossier-banner h2 { margin-top:4px; margin-bottom:3px; font-family:var(--serif); color:var(--gold-soft); font-size:35px; }.dossier-banner small { color:var(--muted); font-size:10px; }.dossier-main { display:grid; grid-template-columns:220px minmax(0,1fr) 260px; gap:25px; align-items:center; padding:30px; }.dossier-identity { text-align:center; }.portrait-frame { width:146px; height:146px; display:grid; place-items:center; margin:0 auto 12px; border-radius:50%; border:1px solid var(--line-strong); background:radial-gradient(circle,rgba(119,61,26,.3),rgba(8,7,6,.95)); box-shadow:inset 0 0 24px rgba(0,0,0,.7),0 0 30px rgba(206,86,24,.1); }.rank-plate { display:inline-block; min-width:110px; padding:6px 14px; border:1px solid var(--line-strong); border-radius:999px; color:var(--gold-soft); background:rgba(80,35,17,.4); font-family:var(--serif); font-size:12px; }.dossier-identity p { color:var(--muted); font-size:9px; }.dossier-main blockquote { margin:0; padding:24px 25px; color:#ded1c3; font-family:var(--serif); font-size:20px; line-height:1.45; border-left:2px solid var(--ember); background:linear-gradient(90deg,rgba(115,42,17,.18),transparent); }.dossier-main cite { display:block; margin-top:12px; color:var(--gold); font-size:11px; font-style:normal; }.dossier-note { padding:18px; border:1px solid var(--line); border-radius:13px; background:rgba(255,255,255,.02); }.dossier-note > span { color:var(--gold); text-transform:uppercase; letter-spacing:.14em; font-size:8px; font-weight:900; }.dossier-note p { min-height:55px; color:var(--muted); font-size:10px; line-height:1.5; }.dossier-stats { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); border-top:1px solid var(--line); border-bottom:1px solid var(--line); background:rgba(255,255,255,.018); }.dossier-stats article { padding:17px; text-align:center; border-right:1px solid var(--line); }.dossier-stats article:last-child { border-right:0; }.dossier-stats span,.dossier-stats strong { display:block; }.dossier-stats span { color:var(--muted); font-size:8px; text-transform:uppercase; letter-spacing:.12em; }.dossier-stats strong { margin-top:6px; color:var(--gold-soft); font-family:var(--serif); font-size:19px; }.dossier-lower { display:grid; grid-template-columns:1fr 1fr; gap:14px; padding:20px; }.dossier-lower .panel { padding:18px; }.badge-grid { display:grid; grid-template-columns:repeat(6,1fr); gap:8px; }.badge-grid i { aspect-ratio:1; display:grid; place-items:center; border:1px solid var(--line); border-radius:10px; background:radial-gradient(circle at 45% 35%,rgba(211,125,41,.27),rgba(12,10,9,.95)); color:var(--gold-soft); font-style:normal; font-size:20px; }.mini-achievements { display:grid; gap:7px; }.mini-achievements div { display:flex; justify-content:space-between; gap:12px; padding:8px 9px; border-radius:8px; background:rgba(255,255,255,.025); font-size:10px; }.mini-achievements b { color:var(--gold); }

.admin-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; margin-bottom:14px; }.admin-card { display:grid; grid-template-columns:62px 1fr; gap:17px; align-items:start; padding:22px; }.admin-icon { width:58px; height:58px; display:grid; place-items:center; border:1px solid var(--line-strong); border-radius:15px; background:radial-gradient(circle,rgba(143,63,25,.32),rgba(17,13,11,.95)); color:var(--gold-soft); font-family:var(--serif); font-size:25px; }.admin-card p { color:var(--muted); font-size:10px; line-height:1.55; min-height:47px; }.sync-log { padding:20px; }.log-row { display:grid; grid-template-columns:18px 1fr auto; gap:10px; align-items:center; padding:13px 5px; border-top:1px solid rgba(255,255,255,.045); }.log-row strong,.log-row small { display:block; }.log-row strong { font-size:11px; }.log-row small { color:var(--muted); font-size:9px; margin-top:3px; }.log-row b { color:var(--success); font-size:10px; }.log-row.pending .status-dot { background:var(--warning); box-shadow:0 0 12px rgba(228,166,76,.5); }.log-row.pending b { color:var(--warning); }

.modal-backdrop { position:fixed; inset:0; z-index:100; display:grid; place-items:center; padding:20px; background:rgba(0,0,0,.76); backdrop-filter:blur(8px); }.modal-backdrop[hidden] { display:none; }.modal { position:relative; width:min(590px,96vw); max-height:90vh; overflow:auto; padding:26px; border:1px solid var(--line-strong); border-radius:18px; background:linear-gradient(145deg,#211813,#0f0c0a); box-shadow:0 30px 100px rgba(0,0,0,.7); }.modal-close { position:absolute; right:13px; top:10px; border:0; background:transparent; color:var(--muted); font-size:28px; }.modal h2 { margin:0 0 7px; font-family:var(--serif); color:var(--gold-soft); font-size:27px; }.modal > div > p { margin:0 0 19px; color:var(--muted); font-size:11px; line-height:1.55; }.modal-section { margin-top:18px; padding-top:16px; border-top:1px solid var(--line); }.modal-section h3 { margin:0 0 10px; color:var(--gold); font-family:var(--serif); }.detail-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:9px; }.detail-grid div { padding:11px; border:1px solid rgba(255,255,255,.05); border-radius:9px; background:rgba(255,255,255,.02); }.detail-grid span,.detail-grid strong { display:block; }.detail-grid span { color:var(--muted); font-size:8px; text-transform:uppercase; letter-spacing:.12em; }.detail-grid strong { margin-top:4px; font-size:11px; }.signup-options { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; }.signup-option { min-height:58px; border:1px solid var(--line); border-radius:10px; background:rgba(255,255,255,.02); color:#cfc3b6; }.signup-option:hover,.signup-option.selected { border-color:var(--gold); color:var(--gold-soft); background:rgba(117,54,21,.3); }.recovery-character { display:flex; justify-content:space-between; gap:15px; align-items:center; padding:13px; border:1px solid var(--line); border-radius:11px; background:rgba(255,255,255,.02); }.recovery-character strong,.recovery-character span { display:block; }.recovery-character span { color:var(--muted); font-size:9px; margin-top:3px; }.recovery-summary { display:grid; grid-template-columns:repeat(3,1fr); gap:8px; margin-top:12px; }.recovery-summary div { padding:10px; text-align:center; border:1px solid rgba(255,255,255,.05); border-radius:9px; }.recovery-summary strong,.recovery-summary span { display:block; }.recovery-summary strong { color:var(--gold-soft); font-family:var(--serif); font-size:18px; }.recovery-summary span { color:var(--muted); font-size:8px; margin-top:3px; }
.toast { position:fixed; z-index:120; right:24px; bottom:24px; transform:translateY(25px); opacity:0; pointer-events:none; min-width:250px; max-width:360px; padding:13px 15px; border:1px solid var(--line-strong); border-radius:11px; background:#211713; color:#eadfd2; box-shadow:var(--shadow); font-size:11px; transition:.2s ease; }.toast.show { opacity:1; transform:none; }

@media (max-width: 1180px) {
  .app-shell { grid-template-columns: 245px 1fr; }
  .sidebar { padding-inline: 14px; }
  .main-content { padding-inline: 22px; }
  .stat-grid { grid-template-columns: repeat(2, 1fr); }
  .dashboard-grid { grid-template-columns: 1fr; }
  .calendar-layout { grid-template-columns: 1fr; }
  .agenda-list { min-height: auto; }
  .dossier-main { grid-template-columns: 190px 1fr; }
  .dossier-note { grid-column: 1 / -1; }
}
@media (max-width: 880px) {
  .app-shell { display:block; }
  .sidebar { position:fixed; z-index:60; width:286px; left:-310px; transition:.22s ease; }
  .sidebar.open { left:0; }
  .main-content { padding:0 16px 36px; }
  .mobile-menu { display:block; }
  .topbar { min-height:78px; }
  .topbar-actions .button { display:none; }
  .calendar-toolbar { grid-template-columns:1fr auto; gap:10px; }
  .calendar-toolbar h2 { grid-row:1; grid-column:1/-1; text-align:center; }
  .calendar-navigation { grid-row:2; }.view-switch { grid-row:2; }
  .achievement-layout { grid-template-columns:1fr; }
  .category-panel { position:static; display:flex; overflow:auto; }
  .category-button { width:auto; white-space:nowrap; }
  .dossier-main { grid-template-columns:1fr; text-align:center; }
  .dossier-main blockquote { text-align:left; }
  .dossier-stats { grid-template-columns:repeat(2,1fr); }
  .dossier-stats article:nth-child(2) { border-right:0; }.dossier-stats article:nth-child(-n+2) { border-bottom:1px solid var(--line); }
}
@media (max-width: 650px) {
  .hero-card { min-height:430px; }.hero-art { background-position:63% 50%; }.hero-shade { background:linear-gradient(0deg,rgba(7,6,5,.97) 0%,rgba(8,7,6,.7) 64%,rgba(8,7,6,.28)); }.hero-copy { padding:165px 22px 24px; }.hero-copy h2 { font-size:35px; }.countdown { right:14px; top:14px; }
  .stat-grid { grid-template-columns:1fr 1fr; }.stat-card { min-height:105px; padding:16px; }.stat-card strong { font-size:22px; }
  .readiness-content { grid-template-columns:1fr; }.readiness-ring { margin:auto; }
  .filter-bar { align-items:stretch; flex-direction:column; }.search-field { min-width:0; }.filter-count { text-align:left; margin:0; }
  .calendar-day { min-height:94px; padding:5px; }.calendar-event { padding:4px; font-size:7px; }.calendar-weekdays span { font-size:7px; padding-inline:2px; }
  .achievement-summary { align-items:flex-start; flex-direction:column; }.progress-track { width:100%; }.points-total { text-align:left; }
  .achievement-card { grid-template-columns:48px 1fr; }.achievement-icon { width:46px; height:46px; }.achievement-points { grid-column:1/-1; min-height:42px; border-left:0; border-top:1px solid var(--line); }
  .leaderboard-toolbar { align-items:flex-start; flex-direction:column; }.podium { grid-template-columns:1fr; }.podium-card.first { transform:none; }
  .dossier-lower { grid-template-columns:1fr; }.dossier-stats { grid-template-columns:1fr; }.dossier-stats article { border-right:0; border-bottom:1px solid var(--line); }.dossier-stats article:last-child { border-bottom:0; }.badge-grid { grid-template-columns:repeat(3,1fr); }
  .admin-grid { grid-template-columns:1fr; }.admin-card { grid-template-columns:48px 1fr; }.admin-icon { width:48px; height:48px; }
  .detail-grid,.signup-options,.recovery-summary { grid-template-columns:1fr; }
}

/* v0.2 — member dossiers, armory freshness, expanded leaderboards, calendar CRUD */
.leader-line-button,
.member-cell-button,
.table-member-button,
.podium-card {
  width: 100%;
  border: 0;
  color: inherit;
  text-align: left;
  cursor: pointer;
}
.leader-line-button:hover,
.member-cell-button:hover,
.table-member-button:hover { filter: brightness(1.12); }
.member-cell-button { display:flex; align-items:center; gap:10px; padding:0; background:transparent; }
.table-member-button { display:inline-grid; gap:3px; padding:0; background:transparent; }
.table-member-button small { color:var(--muted); font-size:8px; }
.metric-value { color:var(--gold-soft); font-weight:900; }
.rep-value { display:block; color:var(--gold-soft); }
.table-subtext { display:block; margin-top:3px; color:var(--muted); font-size:8px; white-space:nowrap; }
.sync-cell { display:grid; grid-template-columns:auto 1fr; align-items:center; gap:4px 7px; min-width:145px; }
.sync-cell strong { font-size:10px; }
.sync-cell small { grid-column:2; color:var(--muted); font-size:8px; }
.sync-pill { display:inline-flex; align-items:center; justify-content:center; min-width:48px; padding:4px 7px; border:1px solid var(--line); border-radius:999px; font-size:7px; font-weight:900; letter-spacing:.08em; text-transform:uppercase; }
.sync-pill.fresh { color:#c9f0c3; border-color:rgba(91,177,92,.45); background:rgba(44,108,47,.2); }
.sync-pill.recent { color:var(--gold-soft); border-color:rgba(218,153,68,.45); background:rgba(115,72,24,.22); }
.sync-pill.stale { color:#f2a7a0; border-color:rgba(190,64,54,.5); background:rgba(105,30,25,.24); }

.leaderboard-toolbar-stacked { align-items:flex-start; }
.leaderboard-title p { max-width:620px; margin:6px 0 0; color:var(--muted); font-size:10px; }
.leaderboard-controls { display:grid; justify-items:end; gap:8px; }
.metric-tabs { flex-wrap:wrap; justify-content:flex-end; }
.metric-tabs button { min-width:118px; }
.period-tabs[hidden] { display:none; }
.podium-card { font-family:inherit; }
.podium-card:hover { transform:translateY(-2px); filter:brightness(1.08); }
.podium-card.first:hover { transform:translateY(-6px); }

.calendar-day { position:relative; display:block; color:inherit; text-align:left; cursor:pointer; }
.calendar-date-button { display:block; width:100%; min-height:25px; padding:0; border:0; background:transparent; color:inherit; cursor:pointer; }
.calendar-date-button:focus-visible { outline:1px solid var(--gold); outline-offset:2px; }
.calendar-events { align-content:start; }
.calendar-event { width:100%; text-align:left; cursor:pointer; }
.calendar-event:hover { border-color:var(--gold); filter:brightness(1.14); }
.calendar-more { padding:3px 5px; border:0; background:transparent; color:var(--gold); font-size:8px; text-align:left; cursor:pointer; }
.agenda-entry.raid { border-left-color:var(--ember); }
.agenda-entry.guild { border-left-color:var(--gold); }
.agenda-entry.officer { border-left-color:var(--warlock); }

.button-danger { border:1px solid rgba(218,75,61,.55); background:linear-gradient(180deg,rgba(125,35,28,.9),rgba(72,19,16,.95)); color:#ffd2cb; }
.button-danger:hover { border-color:#e46f62; filter:brightness(1.1); }
.officer-event-actions p { margin:0 0 12px; color:var(--muted); font-size:10px; line-height:1.5; }
.modal-muted { color:var(--muted); font-size:10px; line-height:1.6; }

.event-form { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; margin-top:20px; }
.form-field { display:grid; gap:6px; }
.form-field-wide { grid-column:1 / -1; }
.form-field > span { color:var(--gold); font-size:8px; font-weight:900; letter-spacing:.12em; text-transform:uppercase; }
.form-field input,
.form-field select,
.form-field textarea { width:100%; min-height:42px; border:1px solid var(--line); border-radius:9px; padding:10px 11px; background:rgba(5,4,3,.58); color:#eadfd2; font:inherit; font-size:11px; outline:none; }
.form-field textarea { min-height:95px; resize:vertical; line-height:1.5; }
.form-field input:focus,
.form-field select:focus,
.form-field textarea:focus { border-color:var(--gold); box-shadow:0 0 0 3px rgba(218,153,68,.08); }
.form-actions { grid-column:1 / -1; margin-top:4px; }

.armory-sync-strip { display:grid; grid-template-columns:1.1fr .9fr 1.5fr auto; gap:14px; align-items:center; padding:14px 20px; border-top:1px solid var(--line); border-bottom:1px solid var(--line); background:linear-gradient(90deg,rgba(82,42,21,.2),rgba(255,255,255,.018),rgba(82,42,21,.2)); }
.armory-sync-strip > div { min-width:0; }
.armory-sync-strip > div:first-child { display:flex; align-items:center; gap:10px; }
.armory-sync-strip small,
.armory-sync-strip strong { display:block; }
.armory-sync-strip small { color:var(--muted); font-size:8px; text-transform:uppercase; letter-spacing:.1em; }
.armory-sync-strip strong { margin-top:3px; color:#e8d8c5; font-size:10px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.dossier-stats article small { display:block; margin-top:4px; color:var(--muted); font-size:7px; }
.dossier-lower-expanded { grid-template-columns:1fr 1fr; }
.dossier-achievements-panel { grid-column:1 / -1; }
.dossier-summary-panel { min-height:100%; display:flex; flex-direction:column; }
.dossier-progress-summary { flex:1; display:grid; grid-template-columns:repeat(3,1fr); gap:10px; min-height:220px; }
.dossier-progress-summary div { min-height:100%; display:grid; place-content:center; padding:24px 14px; text-align:center; border:1px solid rgba(211,145,60,.2); border-radius:10px; background:linear-gradient(155deg,rgba(76,39,20,.2),rgba(255,255,255,.018)); }
.dossier-progress-summary strong,
.dossier-progress-summary span { display:block; }
.dossier-progress-summary strong { color:var(--gold-soft); font-family:var(--serif); font-size:clamp(28px,3vw,42px); }
.dossier-progress-summary span { margin-top:4px; color:var(--muted); font-size:8px; text-transform:uppercase; letter-spacing:.1em; }
.achievement-dossier-filters { display:flex; flex-wrap:wrap; gap:6px; }
.achievement-dossier-filters button { padding:6px 9px; border:1px solid var(--line); border-radius:7px; background:transparent; color:var(--muted); font-size:8px; font-weight:800; cursor:pointer; }
.achievement-dossier-filters button.active,
.achievement-dossier-filters button:hover { color:var(--gold-soft); border-color:var(--line-strong); background:rgba(113,53,22,.28); }
.dossier-achievement-list { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; }
.achievement-card.compact { min-height:112px; }
.achievement-card.compact .achievement-icon { width:48px; height:48px; font-size:20px; }
.empty-state { padding:30px; text-align:center; color:var(--muted); }

@media (max-width: 1100px) {
  .leaderboard-toolbar-stacked { flex-direction:column; }
  .leaderboard-controls { width:100%; justify-items:start; }
  .metric-tabs { justify-content:flex-start; }
  .armory-sync-strip { grid-template-columns:1fr 1fr; }
  .armory-sync-strip .button { justify-self:start; }
}

@media (max-width: 760px) {
  .event-form { grid-template-columns:1fr; }
  .form-field-wide,
  .form-actions { grid-column:1; }
  .metric-tabs button { min-width:0; flex:1; }
  .leader-tabs { width:100%; }
  .armory-sync-strip { grid-template-columns:1fr; }
  .dossier-lower-expanded { grid-template-columns:1fr; }
  .dossier-achievements-panel { grid-column:1; }
  .dossier-achievement-list { grid-template-columns:1fr; }
  .achievement-dossier-filters { margin-top:8px; }
}


/* v0.3 — visible full armory and item details */
.armory-sync-actions { display:flex; gap:8px; justify-content:flex-end; flex-wrap:wrap; }
.dossier-gear-wrap { padding:20px 20px 0; }
.dossier-armory-panel { padding:20px; overflow:hidden; border-color:rgba(229,160,70,.36); background:linear-gradient(145deg,rgba(30,23,18,.98),rgba(12,10,9,.98)); }
.armory-heading { align-items:flex-start; }
.armory-heading p { margin:5px 0 0; color:var(--muted); font-size:9px; }
.armory-heading-meta { display:flex; align-items:center; gap:8px; }
.armory-heading-meta small { color:var(--muted); font-size:9px; }
.gear-layout { display:grid; grid-template-columns:minmax(0,1fr) 250px; gap:18px; align-items:start; }
.gear-paperdoll { display:grid; grid-template-columns:minmax(190px,1fr) 178px minmax(190px,1fr); gap:11px; align-items:start; padding:14px; border:1px solid rgba(255,255,255,.05); border-radius:14px; background:radial-gradient(circle at 50% 42%,rgba(139,63,24,.18),transparent 35%),rgba(0,0,0,.18); }
.gear-column { display:grid; gap:7px; }
.gear-slot { min-width:0; display:grid; grid-template-columns:39px minmax(0,1fr); gap:8px; align-items:center; padding:7px; border:1px solid rgba(255,255,255,.08); border-radius:9px; background:linear-gradient(100deg,rgba(255,255,255,.025),rgba(0,0,0,.14)); text-align:left; transition:.16s ease; }
.gear-slot { position:relative; overflow:visible; }
.gear-slot:hover { transform:translateY(-1px); border-color:var(--line-strong); background:linear-gradient(100deg,rgba(122,62,26,.22),rgba(0,0,0,.14)); }
.gear-slot-icon { width:39px; height:39px; display:grid; place-items:center; border-radius:8px; border:1px solid currentColor; background:radial-gradient(circle at 40% 30%,rgba(255,255,255,.13),rgba(0,0,0,.75)); color:#b9a99a; font-family:var(--serif); font-size:18px; box-shadow:inset 0 0 12px rgba(0,0,0,.65); }
.gear-slot-copy { min-width:0; display:block; }
.gear-slot-copy small,.gear-slot-copy strong,.gear-slot-copy em { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.gear-slot-copy small { color:var(--faint); font-size:7px; text-transform:uppercase; letter-spacing:.11em; }
.gear-slot-copy strong { margin-top:2px; color:#dcd0c3; font-size:9px; }
.gear-slot-copy em { margin-top:2px; color:#7fb46e; font-size:7px; font-style:normal; }
.gear-slot.quality-epic .gear-slot-icon,.gear-item-modal.quality-epic .gear-item-modal-icon { color:#b869ff; }
.gear-slot.quality-rare .gear-slot-icon,.gear-item-modal.quality-rare .gear-item-modal-icon { color:#4d8dff; }
.gear-slot.quality-uncommon .gear-slot-icon,.gear-item-modal.quality-uncommon .gear-item-modal-icon { color:#42c95b; }
.gear-slot.enchant-missing .gear-slot-copy em { color:#e07062; }
.item-tooltip { position:absolute; z-index:80; left:calc(100% + 10px); top:50%; width:280px; display:block; padding:13px 14px; border:1px solid #b27631; color:#d8c9b8; background:#090706; box-shadow:0 18px 52px #000; font-size:9px; line-height:1.45; opacity:0; pointer-events:none; transform:translate(7px,-50%); transition:opacity .14s ease,transform .14s ease; }
.item-tooltip strong,.item-tooltip span { display:block; white-space:normal; }
.item-tooltip strong { margin-bottom:8px; color:#f2e6d8; font-family:var(--serif); font-size:14px; }
.item-tooltip strong.quality-uncommon { color:#42c95b; }.item-tooltip strong.quality-rare { color:#4d8dff; }.item-tooltip strong.quality-epic { color:#b869ff; }.item-tooltip strong.quality-legendary { color:#ff8000; }
.item-tooltip span + span { margin-top:3px; }
.gear-slot:hover .item-tooltip,.gear-slot:focus-visible .item-tooltip { opacity:1; transform:translate(0,-50%); }
.gear-slot.tooltip-left .item-tooltip { left:auto; right:calc(100% + 10px); transform:translate(-7px,-50%); }
.gear-slot.tooltip-left:hover .item-tooltip,.gear-slot.tooltip-left:focus-visible .item-tooltip { transform:translate(0,-50%); }
.gear-slot.tooltip-up .item-tooltip { left:50%; right:auto; top:auto; bottom:calc(100% + 10px); transform:translate(-50%,7px); }
.gear-slot.tooltip-up:hover .item-tooltip,.gear-slot.tooltip-up:focus-visible .item-tooltip { transform:translate(-50%,0); }
.gear-character-core { position:sticky; top:14px; min-height:420px; display:flex; flex-direction:column; align-items:center; justify-content:center; padding:18px 10px; border:1px solid rgba(211,146,60,.19); border-radius:14px; background:linear-gradient(180deg,rgba(82,39,19,.2),rgba(0,0,0,.1)); text-align:center; }
.gear-character-ring { width:120px; height:120px; display:grid; place-items:center; margin-bottom:13px; border-radius:50%; border:1px solid var(--class-color); box-shadow:0 0 38px color-mix(in srgb,var(--class-color) 23%,transparent),inset 0 0 30px rgba(0,0,0,.72); background:radial-gradient(circle,rgba(255,255,255,.04),rgba(0,0,0,.5)); }
.gear-avatar { width:74px; height:74px; font-size:30px; }
.gear-character-core > strong { font-family:var(--serif); font-size:18px; }
.gear-character-core > span { margin:3px 0 14px; color:var(--muted); font-size:8px; }
.gear-completion { width:100%; display:flex; justify-content:space-between; align-items:center; gap:8px; padding:8px 9px; margin-top:6px; border:1px solid rgba(255,255,255,.05); border-radius:8px; background:rgba(255,255,255,.02); }
.gear-completion b { color:var(--gold-soft); font-family:var(--serif); }
.gear-completion small { color:var(--muted); font-size:7px; text-transform:uppercase; letter-spacing:.08em; }
.gear-weapon-row { grid-column:1 / -1; display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:7px; padding-top:2px; }
.gear-stat-panel { padding:15px; border:1px solid rgba(255,255,255,.06); border-radius:14px; background:rgba(0,0,0,.17); }
.gear-stat-heading { display:flex; align-items:flex-end; justify-content:space-between; gap:10px; padding-bottom:11px; border-bottom:1px solid var(--line); }
.gear-stat-heading span,.gear-stat-heading strong { display:block; }
.gear-stat-heading span { color:var(--gold); font-size:8px; text-transform:uppercase; letter-spacing:.12em; }
.gear-stat-heading strong { color:#ded1c3; font-size:9px; text-align:right; }
.gear-stat-grid { display:grid; grid-template-columns:1fr 1fr; gap:6px; padding:12px 0; }
.gear-stat-grid div { padding:9px; border:1px solid rgba(255,255,255,.045); border-radius:8px; background:rgba(255,255,255,.018); }
.gear-stat-grid span,.gear-stat-grid b { display:block; }
.gear-stat-grid span { color:var(--muted); font-size:7px; text-transform:uppercase; letter-spacing:.08em; }
.gear-stat-grid b { margin-top:3px; color:var(--gold-soft); font-family:var(--serif); font-size:14px; }
.gear-audit-box { padding:11px; border-left:2px solid var(--ember); background:linear-gradient(90deg,rgba(113,42,17,.18),transparent); }
.gear-audit-box span,.gear-audit-box strong,.gear-audit-box small { display:block; }
.gear-audit-box span { color:var(--gold); font-size:7px; text-transform:uppercase; letter-spacing:.1em; }
.gear-audit-box strong { margin-top:3px; color:#e5d7c9; font-size:9px; }
.gear-audit-box small { margin-top:6px; color:var(--muted); font-size:7px; line-height:1.45; }
.gear-refresh { width:100%; justify-content:center; margin-top:12px; }
.gear-item-modal { display:grid; grid-template-columns:62px 1fr; gap:14px; align-items:center; padding-bottom:15px; border-bottom:1px solid var(--line); }
.gear-item-modal-icon { width:62px; height:62px; display:grid; place-items:center; border:1px solid currentColor; border-radius:12px; background:radial-gradient(circle at 40% 30%,rgba(255,255,255,.12),rgba(0,0,0,.75)); font-size:27px; }
.gear-item-modal span { color:var(--gold); font-size:8px; text-transform:uppercase; letter-spacing:.12em; }
.gear-item-modal h2 { margin:4px 0 0; }
.item-link-preview { margin:4px 0 0; color:#b869ff; font-size:10px; }
.gear-item-details { display:grid; grid-template-columns:1fr 1fr; gap:8px; margin:14px 0; }
.gear-tooltip-details { display:grid; gap:4px; margin:14px 0; padding:12px 13px; border:1px solid rgba(178,118,49,.45); background:rgba(5,4,3,.48); color:#dbcbbb; font-size:10px; line-height:1.45; }
.gear-item-details div { padding:10px; border:1px solid rgba(255,255,255,.05); border-radius:8px; background:rgba(255,255,255,.018); }
.gear-item-details span,.gear-item-details strong { display:block; }
.gear-item-details span { color:var(--muted); font-size:7px; text-transform:uppercase; letter-spacing:.08em; }
.gear-item-details strong { margin-top:3px; color:#e8d9ca; font-size:9px; }
@media (max-width:1100px) {
  .gear-layout { grid-template-columns:1fr; }
  .gear-stat-panel { display:grid; grid-template-columns:1fr 1fr; gap:12px; }
  .gear-stat-heading,.gear-refresh { grid-column:1 / -1; }
}
@media (max-width:820px) {
  .armory-sync-actions { justify-content:flex-start; }
  .gear-paperdoll { grid-template-columns:1fr 1fr; }
  .gear-character-core { position:static; grid-column:1 / -1; grid-row:1; min-height:auto; }
  .gear-weapon-row { grid-template-columns:1fr; }
  .gear-stat-panel { grid-template-columns:1fr; }
  .gear-stat-heading,.gear-refresh { grid-column:1; }
}
@media (max-width:560px) {
  .dossier-gear-wrap { padding:12px 12px 0; }
  .dossier-armory-panel { padding:12px; }
  .gear-paperdoll { grid-template-columns:1fr; padding:9px; }
  .gear-character-core,.gear-weapon-row { grid-column:1; }
  .gear-slot-copy strong { font-size:10px; }
  .gear-item-details { grid-template-columns:1fr; }
}

/* v0.4 — Chronicle raid performance */
.performance-hero { position:relative; overflow:hidden; min-height:150px; display:flex; align-items:center; justify-content:space-between; gap:22px; padding:25px 28px; background:
  linear-gradient(100deg,rgba(20,11,7,.96),rgba(36,15,7,.84) 58%,rgba(10,8,7,.96)),
  radial-gradient(circle at 73% 40%,rgba(213,79,23,.22),transparent 34%); }
.performance-hero::after { content:'⚔'; position:absolute; right:25%; top:50%; transform:translateY(-50%) rotate(-10deg); color:rgba(218,143,57,.07); font-size:132px; line-height:1; pointer-events:none; }
.performance-hero-copy,.performance-source { position:relative; z-index:1; }
.performance-hero-copy > span,.performance-integration-note > div > span { color:var(--gold); font-size:8px; text-transform:uppercase; letter-spacing:.15em; }
.performance-hero-copy h2 { margin:6px 0 4px; font-family:var(--serif); font-size:27px; color:#f1dfc6; font-weight:500; }
.performance-hero-copy p { margin:0; color:var(--muted); font-size:10px; line-height:1.55; }
.performance-source { min-width:190px; display:flex; align-items:flex-end; flex-direction:column; gap:7px; }
.performance-source small { color:var(--muted); font-size:8px; }
.source-indicator { display:inline-flex; align-items:center; gap:7px; padding:6px 9px; border:1px solid rgba(255,255,255,.08); border-radius:999px; color:#c9b6a3; background:rgba(0,0,0,.28); font-size:8px; text-transform:uppercase; letter-spacing:.08em; }
.source-indicator i { width:7px; height:7px; border-radius:50%; background:#9d7c49; box-shadow:0 0 10px rgba(157,124,73,.45); }
.source-indicator.live i { background:#72c68a; box-shadow:0 0 11px rgba(89,214,126,.66); }
.source-indicator.live { border-color:rgba(89,214,126,.25); color:#9cd8ad; }
.source-indicator.preview i { background:#d58d3b; }
.performance-toolbar { margin-top:14px; padding:0; overflow:hidden; }
.performance-instance-tabs { display:grid; grid-template-columns:repeat(3,1fr); border-bottom:1px solid var(--line); background:rgba(0,0,0,.19); }
.performance-instance-tabs button { position:relative; min-height:65px; padding:12px 16px; border:0; border-right:1px solid var(--line); color:#917f6e; background:transparent; text-align:left; cursor:pointer; transition:.2s ease; }
.performance-instance-tabs button:last-child { border-right:0; }
.performance-instance-tabs button::after { content:''; position:absolute; left:0; right:0; bottom:0; height:2px; background:transparent; }
.performance-instance-tabs button:hover { color:#d6c2ab; background:rgba(255,255,255,.018); }
.performance-instance-tabs button.active { color:var(--gold-soft); background:linear-gradient(180deg,rgba(134,52,17,.2),rgba(79,26,9,.08)); }
.performance-instance-tabs button.active::after { background:linear-gradient(90deg,transparent,var(--ember-soft),transparent); box-shadow:0 0 12px rgba(221,80,23,.45); }
.performance-instance-tabs span,.performance-instance-tabs small { display:block; }
.performance-instance-tabs span { font-family:var(--serif); font-size:15px; }
.performance-instance-tabs small { margin-top:3px; color:var(--muted); font-size:7px; text-transform:uppercase; letter-spacing:.09em; }
.performance-primary-controls { display:flex; align-items:flex-end; gap:10px; padding:15px 17px 13px; border-bottom:1px solid var(--line); }
.performance-primary-controls label { min-width:135px; }
.performance-primary-controls label > span { display:block; margin-bottom:5px; color:var(--gold); font-size:7px; text-transform:uppercase; letter-spacing:.1em; }
.performance-primary-controls select { width:100%; height:35px; padding:0 30px 0 10px; border:1px solid rgba(213,151,77,.18); border-radius:6px; color:#d9c7b4; background:#17120f; font:inherit; font-size:9px; }
.guild-lock { margin-left:auto; min-width:205px !important; }
.guild-lock strong { min-height:35px; display:flex; align-items:center; padding:0 11px; border:1px solid rgba(213,151,77,.2); border-radius:6px; color:var(--gold-soft); background:linear-gradient(90deg,rgba(105,40,14,.26),rgba(0,0,0,.12)); font-family:var(--serif); font-size:11px; font-weight:500; }
.performance-class-row { display:flex; gap:6px; padding:12px 16px 7px; overflow-x:auto; scrollbar-width:thin; }
.performance-class { flex:0 0 auto; display:flex; align-items:center; gap:6px; padding:6px 9px; border:1px solid rgba(255,255,255,.06); border-radius:5px; color:#827367; background:rgba(0,0,0,.18); font-size:8px; cursor:pointer; }
.performance-class i { width:17px; height:17px; display:grid; place-items:center; border-radius:3px; color:var(--class-color); background:rgba(255,255,255,.035); font-style:normal; font-weight:700; }
.performance-class:hover { color:#d5c3b2; border-color:rgba(255,255,255,.12); }
.performance-class.active { color:var(--class-color); border-color:color-mix(in srgb,var(--class-color) 45%,transparent); background:color-mix(in srgb,var(--class-color) 10%,rgba(0,0,0,.2)); box-shadow:inset 0 0 14px rgba(0,0,0,.25); }
.performance-spec-row { display:flex; gap:6px; padding:0 16px 13px; overflow-x:auto; }
.performance-spec-row button { flex:0 0 auto; padding:5px 10px; border:1px solid rgba(255,255,255,.06); border-radius:4px; color:#827467; background:rgba(255,255,255,.018); font-size:8px; cursor:pointer; }
.performance-spec-row button.active { color:var(--gold-soft); border-color:rgba(212,144,61,.35); background:rgba(115,48,16,.22); }
.performance-stat-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:10px; margin-top:12px; }
.performance-stat { position:relative; overflow:hidden; min-height:92px; padding:15px 16px; border:1px solid var(--line); border-radius:10px; background:linear-gradient(145deg,rgba(30,23,18,.93),rgba(13,11,10,.96)); box-shadow:var(--shadow); }
.performance-stat::after { content:''; position:absolute; inset:auto -15% -40% 35%; height:75px; background:radial-gradient(ellipse,rgba(188,62,16,.16),transparent 66%); }
.performance-stat span,.performance-stat strong,.performance-stat small { position:relative; z-index:1; display:block; }
.performance-stat span { color:var(--muted); font-size:7px; text-transform:uppercase; letter-spacing:.1em; }
.performance-stat strong { margin-top:7px; color:var(--gold-soft); font-family:var(--serif); font-size:21px; font-weight:500; }
.performance-stat small { margin-top:3px; color:#8f7f70; font-size:8px; }
.performance-table-panel { margin-top:12px; padding:0; overflow:hidden; }
.performance-table-heading { display:flex; align-items:center; justify-content:space-between; gap:20px; padding:17px 18px; border-bottom:1px solid var(--line); }
.performance-table-heading > div > span { color:var(--gold); font-size:7px; text-transform:uppercase; letter-spacing:.12em; }
.performance-table-heading h2 { margin:4px 0 0; color:#e7d5bf; font-family:var(--serif); font-size:17px; font-weight:500; }
.performance-table-note { max-width:355px; display:flex; align-items:flex-start; gap:8px; color:var(--muted); font-size:8px; line-height:1.45; }
.performance-table-note i { color:var(--ember-soft); font-style:normal; }
.performance-table th { white-space:nowrap; }
.performance-table td { white-space:nowrap; }
.performance-rank { min-width:25px; display:inline-flex; align-items:center; justify-content:center; color:#817365; }
.performance-rank.medal { color:var(--gold-soft); text-shadow:0 0 8px rgba(214,139,56,.35); }
.performance-spec { display:inline-flex; align-items:center; gap:7px; color:#d1bfad; }
.performance-spec i { width:17px; height:17px; display:inline-block; border:1px solid color-mix(in srgb,var(--class-color) 35%,transparent); border-radius:3px; background:radial-gradient(circle at 35% 30%,color-mix(in srgb,var(--class-color) 36%,transparent),rgba(0,0,0,.72)); }
.performance-value { font-family:var(--serif); font-size:13px; }
.percentile-cell { min-width:115px; display:flex; align-items:center; gap:8px; }
.percentile-cell > span { width:70px; height:5px; overflow:hidden; display:block; border-radius:99px; background:rgba(255,255,255,.06); }
.percentile-cell > span i { display:block; height:100%; background:#9b9b9b; box-shadow:0 0 8px currentColor; }
.percentile-cell b { min-width:30px; font-size:8px; }
.percentile-cell.legendary { color:#ff8000; }.percentile-cell.legendary i { background:#ff8000; }
.percentile-cell.epic { color:#a335ee; }.percentile-cell.epic i { background:#a335ee; }
.percentile-cell.rare { color:#3489ff; }.percentile-cell.rare i { background:#3489ff; }
.percentile-cell.uncommon { color:#1eff00; }.percentile-cell.uncommon i { background:#1eff00; }
.percentile-cell.common { color:#b9b9b9; }.percentile-cell.common i { background:#b9b9b9; }
.performance-empty { padding:35px; text-align:center; border-top:1px solid var(--line); }
.performance-empty strong,.performance-empty span { display:block; }
.performance-empty strong { color:#d7c5b2; font-family:var(--serif); font-size:17px; }
.performance-empty span { margin-top:5px; color:var(--muted); font-size:9px; }
.performance-integration-note { display:grid; grid-template-columns:48px 1fr; gap:14px; align-items:center; margin-top:12px; padding:16px 18px; }
.performance-integration-note h2 { margin:4px 0 3px; color:#dccab5; font-family:var(--serif); font-size:15px; font-weight:500; }
.performance-integration-note p { margin:0; color:var(--muted); font-size:8px; line-height:1.5; }
.dossier-performance-wrap { padding:14px 18px 0; }
.dossier-performance-panel { padding:16px; }
.dossier-performance-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:9px; }
.dossier-performance-card { position:relative; overflow:hidden; min-height:88px; padding:13px; border:1px solid rgba(213,151,77,.13); border-radius:9px; color:inherit; background:linear-gradient(145deg,rgba(74,28,10,.22),rgba(8,7,7,.62)); text-align:left; cursor:pointer; }
.dossier-performance-card::after { content:'⚔'; position:absolute; right:8px; bottom:-10px; color:rgba(216,132,47,.08); font-size:54px; }
.dossier-performance-card span,.dossier-performance-card strong,.dossier-performance-card small { position:relative; z-index:1; display:block; }
.dossier-performance-card span { color:var(--gold); font-size:7px; text-transform:uppercase; letter-spacing:.12em; }
.dossier-performance-card strong { margin-top:7px; color:#ebd6bb; font-family:var(--serif); font-size:17px; font-weight:500; }
.dossier-performance-card small { margin-top:3px; color:var(--muted); font-size:8px; }
.dossier-performance-card:hover { border-color:rgba(224,121,47,.34); transform:translateY(-1px); }

@media (max-width:1100px) {
  .performance-stat-grid { grid-template-columns:repeat(2,1fr); }
  .performance-primary-controls { flex-wrap:wrap; }
  .guild-lock { margin-left:0; }
}
@media (max-width:820px) {
  .performance-hero { align-items:flex-start; flex-direction:column; }
  .performance-source { align-items:flex-start; }
  .performance-instance-tabs { grid-template-columns:1fr; }
  .performance-instance-tabs button { border-right:0; border-bottom:1px solid var(--line); }
  .performance-table-heading { align-items:flex-start; flex-direction:column; }
  .dossier-performance-grid { grid-template-columns:1fr; }
}
@media (max-width:560px) {
  .performance-hero { padding:19px 16px; }
  .performance-primary-controls { display:grid; grid-template-columns:1fr 1fr; }
  .performance-primary-controls label { min-width:0; }
  .guild-lock { grid-column:1 / -1; min-width:0 !important; }
  .performance-stat-grid { grid-template-columns:1fr; }
  .dossier-performance-wrap { padding:12px 12px 0; }
}

/* v0.6.2: live Chronicle armory + progression-locked raid tabs */
.gear-slot-icon img,.gear-item-modal-icon img { width:100%; height:100%; display:block; object-fit:cover; border-radius:6px; }
.gear-slot.gear-empty { opacity:.48; cursor:default; filter:saturate(.35); }
.gear-slot.gear-empty:hover { transform:none; }
.gear-talent-summary { display:grid; grid-template-columns:repeat(3,1fr); gap:6px; }
.gear-talent-summary div { padding:7px; border:1px solid rgba(126,91,52,.35); background:rgba(0,0,0,.22); border-radius:7px; text-align:center; }
.gear-talent-summary span,.gear-talent-summary b { display:block; }
.gear-talent-summary span { color:var(--muted); font-size:7px; text-transform:uppercase; letter-spacing:.06em; }
.gear-talent-summary b { margin-top:3px; color:var(--gold-soft); font-family:var(--serif); }
.performance-instance-tabs { grid-template-columns:repeat(4,minmax(0,1fr)); }
.performance-instance-tabs button.raid-locked { cursor:not-allowed; color:#5f554c; background:rgba(0,0,0,.28); opacity:.72; }
.performance-instance-tabs button.raid-locked:hover { color:#5f554c; background:rgba(0,0,0,.28); }
.performance-instance-tabs button.raid-locked::before { content:'🔒'; position:absolute; top:8px; right:9px; font-size:9px; opacity:.65; }
@media (max-width:1100px) { .performance-instance-tabs { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media (max-width:620px) { .performance-instance-tabs { grid-template-columns:1fr; } }

/* v0.7.1: spec portraits, bulletin board, collage gallery, addon bridge */
.spec-portrait { width:100%; height:100%; display:block; object-fit:cover; border-radius:inherit; background:#100d0b; }
.spec-portrait.large { image-rendering:auto; }
.portrait-frame .spec-portrait { filter:saturate(1.05) contrast(1.04); }
.gear-character-center .spec-portrait { width:92px; height:92px; margin:0 auto 11px; border:2px solid rgba(222,150,65,.46); border-radius:18px; box-shadow:0 0 24px rgba(199,75,24,.2),inset 0 0 18px rgba(0,0,0,.6); }
.community-hero { display:flex; align-items:center; justify-content:space-between; gap:24px; padding:22px 24px; background:radial-gradient(circle at 82% 30%,rgba(177,59,17,.19),transparent 34%),linear-gradient(145deg,rgba(40,27,20,.95),rgba(13,11,10,.97)); }
.community-hero > div > span,.thread-detail-heading > span { color:var(--gold); font-size:8px; text-transform:uppercase; letter-spacing:.14em; }
.community-hero h2 { margin:5px 0 4px; color:#efdbc0; font:500 25px var(--serif); }
.community-hero p { max-width:710px; margin:0; color:var(--muted); font-size:9px; line-height:1.55; }
.bulletin-toolbar,.gallery-toolbar { display:flex; align-items:center; gap:12px; margin-top:12px; padding:12px 14px; }
.bulletin-toolbar .search-field { flex:1; }
.bulletin-toolbar select { min-width:165px; height:34px; padding:0 10px; border:1px solid var(--line); border-radius:6px; color:#d8c5b1; background:#15110f; font:inherit; font-size:9px; }
.filter-count { display:flex; align-items:baseline; gap:6px; color:var(--muted); font-size:8px; }
.filter-count strong { color:var(--gold-soft); font:500 19px var(--serif); }
.bulletin-layout { display:grid; grid-template-columns:minmax(260px,.78fr) minmax(430px,1.4fr); gap:12px; margin-top:12px; }
.thread-list,.thread-detail { min-height:540px; padding:0; overflow:hidden; }
.thread-row { width:100%; display:block; padding:15px 16px; border:0; border-bottom:1px solid var(--line); color:inherit; background:transparent; text-align:left; cursor:pointer; }
.thread-row:hover,.thread-row.active { background:linear-gradient(90deg,rgba(137,47,15,.19),rgba(255,255,255,.01)); }
.thread-row.active { box-shadow:inset 2px 0 var(--ember-soft); }
.thread-category { display:inline-block; margin-bottom:6px; padding:3px 6px; border:1px solid rgba(220,142,54,.22); border-radius:999px; color:var(--gold); background:rgba(99,40,15,.18); font-size:7px; text-transform:uppercase; letter-spacing:.08em; }
.thread-row strong { display:block; color:#e2cfb8; font:500 13px var(--serif); }
.thread-row p { margin:6px 0; color:#a89685; font-size:8px; line-height:1.45; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
.thread-row small { color:#70655b; font-size:7px; }
.thread-detail { padding:20px; }
.thread-detail-heading h2 { margin:6px 0 4px; color:#edd9be; font:500 22px var(--serif); }
.thread-detail-heading small { color:#776b61; font-size:8px; }
.thread-body { margin:18px 0; padding:16px; border-left:2px solid var(--ember); color:#c8b6a4; background:rgba(0,0,0,.19); font-size:10px; line-height:1.65; }
.mention { color:#ffae64; font-weight:700; text-shadow:0 0 8px rgba(235,91,32,.24); }
.thread-replies { display:grid; gap:8px; }
.thread-replies article { padding:12px 13px; border:1px solid var(--line); border-radius:8px; background:rgba(255,255,255,.018); }
.thread-replies article strong { color:var(--gold-soft); font-size:9px; }
.thread-replies article span { margin-left:7px; color:#71655b; font-size:7px; }
.thread-replies article p { margin:7px 0 0; color:#b8a696; font-size:9px; line-height:1.5; }
.reply-form { display:grid; grid-template-columns:1fr auto; gap:9px; margin-top:16px; }
.reply-form textarea,.event-form textarea,.event-form input,.event-form select { padding:10px; border:1px solid var(--line); border-radius:7px; color:#dfcdb9; background:#120f0d; font:inherit; font-size:9px; }
.reply-form textarea { min-height:76px; resize:vertical; }
.community-empty { padding:28px; color:var(--muted); font-size:9px; text-align:center; }
.gallery-upload-panel { margin-top:12px; padding:15px; }
.gallery-upload-fields { display:grid; grid-template-columns:1fr 180px auto; gap:10px; align-items:end; }
.gallery-upload-fields label span { display:block; margin-bottom:5px; color:var(--gold); font-size:7px; text-transform:uppercase; letter-spacing:.1em; }
.gallery-upload-fields input,.gallery-upload-fields select { width:100%; height:35px; padding:0 10px; border:1px solid var(--line); border-radius:6px; color:#dcc9b5; background:#15110f; font:inherit; font-size:9px; }
.gallery-upload-preview { min-height:180px; display:grid; place-items:center; margin:12px 0; overflow:hidden; border:1px dashed rgba(214,142,58,.28); border-radius:9px; color:var(--muted); background:rgba(0,0,0,.2); }
.gallery-upload-preview img { width:100%; max-height:360px; object-fit:contain; }
.gallery-toolbar { justify-content:space-between; overflow-x:auto; }
.gallery-toolbar > span { flex:0 0 auto; color:var(--muted); font-size:7px; }
.gallery-collage { display:grid; grid-template-columns:repeat(12,1fr); grid-auto-rows:72px; gap:10px; margin-top:12px; }
.gallery-tile { position:relative; overflow:hidden; grid-column:span 4; grid-row:span 4; padding:0; border:1px solid rgba(211,141,61,.13); border-radius:11px; background:#0d0b0a; cursor:pointer; box-shadow:var(--shadow); }
.gallery-tile-2,.gallery-tile-5 { grid-column:span 5; grid-row:span 3; }
.gallery-tile-3 { grid-column:span 3; grid-row:span 5; }
.gallery-tile-4 { grid-column:span 7; grid-row:span 4; }
.gallery-tile-6 { grid-column:span 4; grid-row:span 3; }
.gallery-tile img { width:100%; height:100%; object-fit:cover; transition:transform .35s ease,filter .35s ease; }
.gallery-tile:hover img { transform:scale(1.035); filter:brightness(1.1); }
.gallery-tile > span { position:absolute; left:0; right:0; bottom:0; padding:34px 12px 11px; color:white; background:linear-gradient(transparent,rgba(0,0,0,.87)); text-align:left; }
.gallery-tile b,.gallery-tile small { display:block; }
.gallery-tile b { font:500 12px var(--serif); }
.gallery-tile small { margin-top:3px; color:#c1ac99; font-size:7px; }
.gallery-lightbox { display:grid; grid-template-columns:minmax(0,1.55fr) minmax(220px,.65fr); gap:18px; align-items:center; }
.gallery-lightbox img { width:100%; max-height:70vh; object-fit:contain; border:1px solid var(--line); border-radius:9px; background:#070606; }
.gallery-lightbox span { color:var(--gold); font-size:8px; text-transform:uppercase; letter-spacing:.1em; }
.gallery-lightbox h2 { margin:7px 0; color:#eed9be; font:500 24px var(--serif); }
.gallery-lightbox p { color:var(--muted); font-size:9px; }
@media (max-width:900px) {
  .bulletin-layout { grid-template-columns:1fr; }
  .thread-list,.thread-detail { min-height:0; }
  .gallery-collage { grid-template-columns:repeat(6,1fr); }
  .gallery-tile,.gallery-tile-2,.gallery-tile-3,.gallery-tile-4,.gallery-tile-5,.gallery-tile-6 { grid-column:span 3; grid-row:span 4; }
}
@media (max-width:620px) {
  .community-hero,.bulletin-toolbar,.gallery-toolbar { align-items:flex-start; flex-direction:column; }
  .bulletin-toolbar .search-field,.bulletin-toolbar select { width:100%; }
  .reply-form,.gallery-upload-fields,.gallery-lightbox { grid-template-columns:1fr; }
  .gallery-collage { grid-template-columns:1fr; grid-auto-rows:250px; }
  .gallery-tile,.gallery-tile-2,.gallery-tile-3,.gallery-tile-4,.gallery-tile-5,.gallery-tile-6 { grid-column:1; grid-row:span 1; }
}
.gear-audit-box a { display:inline-block; margin-top:7px; color:#e49b51; font-size:8px; text-decoration:none; }
.gear-audit-box a:hover { color:#ffc17f; text-decoration:underline; }
/* v0.8.1 global database */
.roster-spec-icon { width:30px; height:30px; flex:0 0 30px; border-radius:8px; border:1px solid rgba(220,145,58,.48); box-shadow:0 0 14px rgba(206,83,27,.18); }
.achievement-icon img { width:100%; height:100%; object-fit:cover; border-radius:inherit; display:block; }

/* v0.8.1 live-addon data corrections */
.spec-portrait-wrap{display:inline-grid;place-items:center;flex:0 0 auto}
.spec-portrait-wrap.large,.spec-portrait-wrap.gear-avatar{width:100%;height:100%}
.spec-portrait-wrap .spec-portrait{width:100%;height:100%;object-fit:cover;border-radius:inherit}
.spec-icon-fallback,.gear-icon-fallback,.achievement-image-fallback{place-items:center;width:100%;height:100%;font-style:normal;font-weight:800;color:var(--gold,#d9a34b);background:radial-gradient(circle,#2a2117,#0d0a08)}
.achievement-image-wrap{display:grid;width:100%;height:100%;place-items:center}
.achievement-image-wrap img{width:100%;height:100%;object-fit:cover}
.badge-grid-rich{display:grid;grid-template-columns:repeat(auto-fit,minmax(145px,1fr));gap:10px}
.badge-medallion{appearance:none;border:1px solid rgba(197,132,45,.35);background:linear-gradient(145deg,rgba(42,31,21,.92),rgba(11,9,8,.98));border-radius:12px;padding:10px;color:#eee0c8;text-align:left;display:grid;grid-template-columns:42px 1fr;grid-template-rows:auto auto;column-gap:10px;cursor:help;min-height:70px}
.badge-medallion>span{grid-row:1/3;width:42px;height:42px;border-radius:8px;border:1px solid rgba(218,162,70,.45);overflow:hidden;display:grid;place-items:center;background:#0b0908}
.badge-medallion img,.badge-medallion>span i{width:100%;height:100%;object-fit:cover;place-items:center;font-style:normal}
.badge-medallion strong{font-family:Georgia,serif;font-size:13px;color:#efc567;align-self:end}
.badge-medallion small{font-size:10px;color:#9f9487;line-height:1.25;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.badge-medallion.quality-rare{border-color:rgba(0,112,221,.65)}
.badge-medallion.quality-epic{border-color:rgba(163,53,238,.65)}
.badge-medallion.quality-legendary{border-color:rgba(255,128,0,.75)}
.gear-slot-icon img{width:100%;height:100%;object-fit:cover}
@media(max-width:720px){.badge-grid-rich{grid-template-columns:1fr 1fr}.badge-medallion{grid-template-columns:36px 1fr}.badge-medallion>span{width:36px;height:36px}}

.badge-medallion{position:relative;overflow:visible}
.badge-medallion::after{content:attr(data-badge-tooltip);position:absolute;z-index:50;left:50%;bottom:calc(100% + 8px);width:max-content;max-width:280px;padding:8px 10px;border:1px solid rgba(224,151,61,.55);border-radius:7px;color:#f1dfc4;background:#090706;box-shadow:0 10px 28px rgba(0,0,0,.55);font-size:10px;line-height:1.35;text-align:left;white-space:normal;opacity:0;pointer-events:none;transform:translate(-50%,5px);transition:opacity .15s ease,transform .15s ease}
.badge-medallion:hover::after,.badge-medallion:focus-visible::after{opacity:1;transform:translate(-50%,0)}


/* v0.9 dashboard rankings */
.leader-line { grid-template-columns:auto auto minmax(0,1fr) auto; align-items:center; }
.leader-spec-icon { width:34px; height:34px; }
.raid-podium-panel { padding:20px; grid-column:1 / -1; }
.banner-reputation-panel { padding:20px; grid-column:1 / -1; }
.reputation-preview { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:10px; margin-top:14px; }
.reputation-leader { position:relative; display:grid; grid-template-columns:42px minmax(0,1fr); grid-template-rows:auto auto auto; gap:2px 10px; min-height:104px; padding:15px 13px; border:1px solid rgba(187,125,34,.28); border-radius:10px; color:inherit; background:linear-gradient(145deg,rgba(39,26,17,.74),rgba(12,10,9,.96)); text-align:left; cursor:pointer; }
.reputation-leader:hover { border-color:rgba(225,157,55,.58); transform:translateY(-1px); }
.reputation-leader .position { position:absolute; top:8px; right:10px; color:var(--gold); font-family:var(--serif); font-size:13px; }
.reputation-leader .leader-spec-icon { grid-row:1 / 4; width:42px; height:42px; align-self:center; }
.reputation-leader strong { padding-right:24px; font-family:var(--serif); font-size:14px; }
.reputation-leader small { overflow:hidden; color:var(--muted); font-size:8px; text-overflow:ellipsis; white-space:nowrap; }
.reputation-leader b { color:var(--gold-soft); font-size:17px; }
.raid-podium { display:grid; grid-template-columns:1fr 1.08fr 1fr; gap:12px; align-items:end; min-height:250px; padding:12px 0 0; }
.podium-place { position:relative; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:6px; min-height:175px; padding:20px 12px; border:1px solid rgba(187,125,34,.35); border-radius:14px 14px 5px 5px; background:linear-gradient(180deg,rgba(60,32,18,.72),rgba(16,13,11,.96)); color:inherit; cursor:pointer; }
.podium-place.place-1 { min-height:225px; border-color:rgba(236,166,53,.72); box-shadow:0 0 30px rgba(221,89,20,.12); }
.podium-place.place-2 { min-height:195px; }
.podium-place.place-3 { min-height:180px; }
.podium-rank { position:absolute; top:10px; right:12px; font:700 24px Georgia,serif; color:#e2b454; opacity:.8; }
.podium-spec-icon { width:58px; height:58px; }
.podium-place strong { font:700 19px Georgia,serif; }
.podium-place b { color:#f2c25d; font-size:22px; }
.podium-place small,.podium-place em { color:#9e9287; font-style:normal; }
@media(max-width:1100px){.reputation-preview{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:720px){.raid-podium{grid-template-columns:1fr}.podium-place,.podium-place.place-1,.podium-place.place-2,.podium-place.place-3{min-height:150px}.raid-podium-panel,.banner-reputation-panel{grid-column:auto}.reputation-preview{grid-template-columns:1fr}}

/* ==========================================================
   v1.0.1 — ASHEN THEME PASS
   Medieval, ember-forged visual system. Functional layouts and
   existing integrations are intentionally preserved.
   ========================================================== */
:root {
  --ash-black:#070706;
  --ash-panel:#100e0c;
  --ash-panel-2:#17120f;
  --ash-iron:#292723;
  --ash-gold:#c5944f;
  --ash-gold-bright:#f0c77b;
  --ash-red:#761d13;
  --ash-red-bright:#bd3d1d;
  --ash-ember:#e55c20;
  --ash-line:rgba(183,130,62,.34);
  --ash-line-hot:rgba(225,141,52,.72);
  --ash-shadow:0 18px 50px rgba(0,0,0,.62), inset 0 1px 0 rgba(255,211,136,.045);
}

html { background:#050504; }
body {
  background:
    radial-gradient(circle at 82% 14%, rgba(146,43,12,.18), transparent 31%),
    radial-gradient(circle at 8% 92%, rgba(106,43,18,.18), transparent 36%),
    linear-gradient(rgba(5,5,4,.88),rgba(5,5,4,.93)),
    url('assets/texture-dark-stone.webp') center/240px 205px repeat;
  color:#e5d8c8;
}
body::before {
  content:""; position:fixed; inset:0; pointer-events:none; z-index:9999;
  background:linear-gradient(90deg,rgba(255,125,28,.028) 1px,transparent 1px),linear-gradient(rgba(255,125,28,.018) 1px,transparent 1px);
  background-size:72px 72px; mix-blend-mode:screen; opacity:.32;
}

.sidebar {
  background:
    linear-gradient(rgba(8,8,7,.92),rgba(8,8,7,.96)),
    url('assets/texture-charred-wood.webp') center/210px 180px repeat;
  border-right:1px solid rgba(217,147,56,.36);
  box-shadow:12px 0 36px rgba(0,0,0,.62), inset -1px 0 rgba(255,199,99,.04);
}
.sidebar::after {
  content:""; position:absolute; top:0; right:-3px; width:6px; height:100%; pointer-events:none;
  background:linear-gradient(90deg,#21170e,#8c5828 48%,#130d09); opacity:.68;
}
.brand {
  position:relative; margin:13px 12px 19px; padding:15px 12px;
  border:1px solid var(--ash-line); border-radius:2px;
  background:linear-gradient(135deg,rgba(42,27,17,.82),rgba(8,8,7,.94)),url('assets/texture-ashen-leather.webp') center/cover;
  box-shadow:var(--ash-shadow);
}
.brand::before,.brand::after { content:"◆"; position:absolute; top:50%; transform:translateY(-50%); color:#a62c18; text-shadow:0 0 12px #dc4b20; font-size:9px; }
.brand::before{left:-6px}.brand::after{right:-6px}
.brand img { filter:drop-shadow(0 0 12px rgba(221,85,25,.4)) sepia(.15) contrast(1.12); }
.brand span { color:#ad8550; letter-spacing:.18em; }
.brand strong { color:var(--ash-gold-bright); font-family:Georgia,'Times New Roman',serif; text-shadow:0 1px #000; }

.main-nav { padding-inline:10px; }
.nav-button {
  position:relative; border-radius:1px; margin:3px 0; min-height:45px;
  border:1px solid transparent; color:#c8b9a7;
  font-family:Georgia,'Times New Roman',serif; letter-spacing:.035em;
}
.nav-button i { color:#a88453; filter:drop-shadow(0 0 5px rgba(213,126,39,.25)); }
.nav-button:hover { border-color:rgba(182,117,47,.35); color:#f1ddbd; background:linear-gradient(90deg,rgba(90,33,16,.52),rgba(31,22,16,.25)); }
.nav-button.active {
  color:#ffe2a8; border-color:rgba(216,112,38,.52);
  background:linear-gradient(90deg,rgba(117,31,16,.84),rgba(51,22,15,.55));
  box-shadow:inset 3px 0 0 #d95a20,inset 0 0 22px rgba(226,75,22,.13),0 0 16px rgba(86,25,10,.2);
}
.nav-button.active::after { content:"◆"; position:absolute; right:10px; color:#d0491e; font-size:7px; text-shadow:0 0 8px #ff6f2a; }

.topbar {
  background:linear-gradient(180deg,rgba(11,10,8,.97),rgba(10,9,8,.89));
  border-bottom:1px solid var(--ash-line); box-shadow:0 10px 30px rgba(0,0,0,.35);
}
.page-heading span,.panel-heading span,.tag { color:#cc984c; letter-spacing:.2em; }
.page-heading h1,.panel h2,.hero-copy h2,.dossier-banner h2,.achievement-copy h3 {
  font-family:Georgia,'Times New Roman',serif; text-shadow:0 1px 0 #000,0 0 18px rgba(218,124,40,.08);
}

.panel,.stat-card,.hero-card,.achievement-summary,.dossier-card,.podium-card,.admin-card,.calendar-toolbar {
  border-radius:3px !important; border:1px solid var(--ash-line) !important;
  background:
    linear-gradient(145deg,rgba(23,18,14,.94),rgba(8,8,7,.97)),
    url('assets/texture-ashen-leather.webp') center/310px 300px repeat !important;
  box-shadow:var(--ash-shadow) !important;
  position:relative;
}
.panel::before,.stat-card::before,.hero-card::before,.dossier-card::before,.podium-card::before {
  content:""; position:absolute; inset:5px; pointer-events:none; border:1px solid rgba(213,157,85,.075); z-index:0;
}
.panel::after,.stat-card::after,.podium-card::after {
  content:"◆"; position:absolute; left:50%; top:-7px; transform:translateX(-50%); color:#7f2516; font-size:9px; text-shadow:0 0 9px #e45725; z-index:2;
}
.panel > *,.stat-card > *,.hero-card > *,.podium-card > * { position:relative; z-index:1; }
.panel-heading { border-bottom-color:rgba(180,126,61,.22); }
.panel-heading::before { content:""; position:absolute; left:18px; right:18px; bottom:-1px; height:1px; background:linear-gradient(90deg,transparent,#b27c3b 24%,#5f2b17 50%,#b27c3b 76%,transparent); opacity:.65; }

.button,.leader-tabs button,.view-switch button,.category-button,.calendar-navigation button,.text-button {
  border-radius:2px !important; font-family:Georgia,'Times New Roman',serif;
}
.button {
  border-color:rgba(196,137,64,.55); background:linear-gradient(#211a14,#0c0b09); color:#e4c99c;
  box-shadow:inset 0 0 0 1px rgba(255,222,154,.03),0 4px 12px rgba(0,0,0,.35);
}
.button:hover { border-color:#d39442; color:#ffe4ac; box-shadow:inset 0 0 16px rgba(180,78,27,.17),0 0 14px rgba(198,81,24,.12); }
.button-primary { background:linear-gradient(#9d2d13,#571409) !important; border-color:#d35a23 !important; color:#ffe3ad !important; text-shadow:0 1px #250500; }
.button-primary:hover { background:linear-gradient(#bd3d18,#701b0b) !important; box-shadow:inset 0 0 16px rgba(255,139,55,.2),0 0 18px rgba(192,54,16,.23); }
.button-secondary { background:linear-gradient(#3b2c20,#17120e) !important; }

input,select,textarea,.search-field {
  border-radius:2px !important; border-color:rgba(160,111,56,.42) !important;
  background:linear-gradient(rgba(8,8,7,.94),rgba(18,14,11,.96)),url('assets/texture-dark-stone.webp') center/220px 190px repeat !important;
  color:#e5d3ba !important; box-shadow:inset 0 2px 10px rgba(0,0,0,.45);
}
input:focus,select:focus,textarea:focus { border-color:#c87b31 !important; box-shadow:0 0 0 2px rgba(202,91,28,.13),inset 0 2px 10px rgba(0,0,0,.45); }

.table-panel,.leaderboard-table-panel { overflow:hidden; }
table thead { background:linear-gradient(180deg,#211a14,#12100d),url('assets/texture-worn-metal.webp') center/cover; }
table th { color:#a98b63; border-bottom-color:rgba(190,126,54,.36); letter-spacing:.16em; }
table tr { background:rgba(11,10,8,.56); }
table tbody tr:nth-child(even) { background:rgba(36,25,18,.34); }
table tbody tr:hover { background:linear-gradient(90deg,rgba(105,35,16,.38),rgba(49,31,20,.3)); }
table td { border-bottom-color:rgba(145,101,52,.14); }

.hero-card { min-height:330px; overflow:hidden; }
.hero-card::after { content:""; position:absolute; inset:0; background:linear-gradient(90deg,rgba(4,4,3,.9) 0%,rgba(10,8,6,.55) 50%,rgba(7,6,5,.36)),linear-gradient(0deg,rgba(18,7,3,.5),transparent 65%); pointer-events:none; }
.hero-art { filter:saturate(.75) contrast(1.18) brightness(.74); }
.hero-copy,.countdown { z-index:3 !important; }
.hero-copy h2 { color:#f2d19b; font-size:clamp(28px,3vw,48px); }
.countdown { border-radius:2px; border-color:rgba(197,126,47,.46); background:linear-gradient(rgba(27,19,14,.82),rgba(8,8,7,.91)),url('assets/texture-worn-metal.webp') center/cover; }

.stat-card strong,.points-total strong,.podium-card b,.dossier-stats strong { color:#edc474; }
.stat-card { overflow:hidden; }
.stat-card::after { top:auto; left:auto; right:9px; bottom:6px; transform:none; opacity:.45; }

.calendar-panel,.agenda-panel { background:linear-gradient(rgba(16,13,10,.96),rgba(7,7,6,.97)),url('assets/texture-dark-stone.webp') center/250px 210px repeat !important; }
.calendar-day { border-color:rgba(156,107,52,.22) !important; background:rgba(7,7,6,.44); }
.calendar-day:hover { background:rgba(75,34,18,.28); box-shadow:inset 0 0 20px rgba(219,82,24,.06); }
.calendar-day.selected,.calendar-day.selected:hover { background:linear-gradient(145deg,rgba(111,48,20,.34),rgba(30,18,12,.82)); box-shadow:inset 0 0 0 2px var(--gold),inset 0 0 24px rgba(212,142,58,.13); }
.calendar-event { border-radius:1px !important; border-left:3px solid var(--ash-ember); background:linear-gradient(90deg,rgba(111,29,15,.8),rgba(33,18,13,.82)) !important; }

.podium-card.first { border-color:rgba(240,185,91,.72) !important; box-shadow:0 20px 55px rgba(0,0,0,.63),inset 0 0 28px rgba(176,94,27,.08) !important; }
.podium-rank { color:rgba(225,166,78,.16); }
.raid-podium-item { background:linear-gradient(180deg,rgba(33,24,18,.95),rgba(8,8,7,.97)) !important; border-color:rgba(182,124,56,.38) !important; }

.dossier-banner {
  background:linear-gradient(90deg,rgba(51,20,11,.76),rgba(15,12,10,.9),rgba(51,20,11,.76)),url('assets/texture-charred-wood.webp') center/cover !important;
  border-bottom-color:rgba(198,134,60,.42);
}
.portrait-frame,.armory-paperdoll-center {
  border:2px solid rgba(190,128,53,.6) !important;
  background:radial-gradient(circle at 50% 38%,rgba(143,61,21,.28),rgba(5,5,4,.98) 68%),url('assets/texture-worn-metal.webp') center/cover !important;
  box-shadow:inset 0 0 30px rgba(0,0,0,.75),0 0 22px rgba(207,83,25,.14) !important;
}
.gear-slot,.armory-slot { border-radius:2px !important; border-color:rgba(154,107,53,.4) !important; background:linear-gradient(135deg,rgba(28,22,18,.94),rgba(8,8,7,.96)),url('assets/texture-dark-stone.webp') center/cover !important; }
.gear-slot:hover,.armory-slot:hover { border-color:#ca7d32 !important; box-shadow:0 0 16px rgba(212,79,22,.14),inset 0 0 16px rgba(195,111,41,.07); }
.item-tooltip { border-radius:2px !important; border-color:#b27631 !important; background:linear-gradient(rgba(8,8,7,.98),rgba(16,12,9,.98)),url('assets/texture-dark-stone.webp') center/220px 190px !important; box-shadow:0 18px 52px #000 !important; }

.achievement-card { border-radius:3px; background:linear-gradient(105deg,rgba(25,20,16,.96),rgba(8,8,7,.97)),url('assets/texture-ashen-leather.webp') center/cover; }
.achievement-icon,.badge-grid i { border-radius:3px; border-color:rgba(190,129,55,.52); }
.achievement-card:hover { border-color:rgba(207,133,52,.56); box-shadow:inset 0 0 22px rgba(190,77,22,.07); }
.badge-grid [title] { cursor:help; }

.bulletin-card,.thread-card,.gallery-card { border-radius:3px !important; background:linear-gradient(rgba(24,18,14,.94),rgba(8,8,7,.97)),url('assets/texture-ashen-leather.webp') center/cover !important; border-color:rgba(171,117,56,.37) !important; }
.gallery-grid img { filter:saturate(.82) contrast(1.08); transition:.2s ease; }
.gallery-grid img:hover { filter:saturate(1) contrast(1.1) brightness(1.04); box-shadow:0 0 0 1px #bc7531,0 10px 28px rgba(0,0,0,.55); }

.sync-card,.profile-mini { border-radius:2px; border-color:rgba(165,111,54,.31); background:linear-gradient(rgba(20,16,13,.86),rgba(8,8,7,.93)),url('assets/texture-dark-stone.webp') center/cover; }
.status-dot { box-shadow:0 0 11px currentColor; }

/* fine ornamental corners */
.panel,.hero-card,.dossier-card,.achievement-summary { --corner:#ab6d32; }
.panel > .panel-heading:first-child::after,.calendar-toolbar::after,.achievement-summary::after {
  content:""; position:absolute; width:13px; height:13px; right:6px; top:6px; border-top:1px solid var(--corner); border-right:1px solid var(--corner); opacity:.72;
}
.panel > .panel-heading:first-child::before { z-index:2; }

@media (max-width:900px){
  .sidebar { background:linear-gradient(rgba(8,8,7,.96),rgba(8,8,7,.98)),url('assets/texture-charred-wood.webp') center/cover; }
  .panel::after,.stat-card::after,.podium-card::after { display:none; }
  body::before { opacity:.14; }
}

@media (prefers-reduced-motion:reduce){
  .ember-field,.ambient { display:none !important; }
}

/* v1.1.2 Discord directory controls */
.discord-directory-status{padding:10px 12px;border:1px solid var(--line);border-radius:8px;background:rgba(5,4,3,.55);font-size:10px;line-height:1.45}
.discord-directory-status.success{border-color:rgba(97,170,91,.5);color:#b9d9b3}
.discord-directory-status.error,.discord-directory-warning{border-color:rgba(201,83,54,.5);color:#e5a58e}
.discord-role-picker{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;max-height:190px;overflow:auto;padding:9px;border:1px solid var(--line);border-radius:9px;background:rgba(5,4,3,.58)}
.discord-role-option{display:flex;align-items:center;gap:7px;min-height:34px;padding:7px 9px;border:1px solid rgba(188,132,65,.2);border-radius:7px;background:rgba(26,20,15,.7);cursor:pointer}
.discord-role-option:hover{border-color:var(--gold)}
.discord-role-option input{width:auto;min-height:0;accent-color:#b64d25}
.discord-role-option span{font-size:10px;color:#dfcdb9;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media(max-width:760px){.discord-role-picker{grid-template-columns:1fr 1fr}}

/* v2.3.0 — quiet volcanic materials and the restored Ashen Banner */
body {
  background:
    radial-gradient(circle at 82% 14%, rgba(146,43,12,.14), transparent 31%),
    radial-gradient(circle at 8% 92%, rgba(106,43,18,.14), transparent 36%),
    linear-gradient(rgba(5,5,4,.9),rgba(5,5,4,.95)),
    url('assets/texture-volcanic-brick.webp') center/520px 520px repeat;
}

.sidebar {
  background:
    linear-gradient(rgba(8,8,7,.9),rgba(8,8,7,.96)),
    url('assets/texture-volcanic-brick.webp') center/450px 450px repeat;
}

.panel,.stat-card,.achievement-summary,.dossier-card,.podium-card,.admin-card,.calendar-toolbar {
  background:
    linear-gradient(145deg,rgba(20,17,14,.94),rgba(7,7,6,.975)),
    url('assets/texture-volcanic-brick.webp') center/500px 500px repeat !important;
}

.calendar-panel,.agenda-panel,input,select,textarea,.search-field,.sync-card,.profile-mini {
  background:
    linear-gradient(rgba(10,9,8,.94),rgba(6,6,5,.97)),
    url('assets/texture-volcanic-brick.webp') center/420px 420px repeat !important;
}

.hero-card { background:#090806 !important; }
.hero-art {
  position:absolute !important;
  inset:0;
  background-image:url('assets/ashen-banner-hero.webp');
  background-size:cover;
  background-position:center 47%;
  transform:scale(1.015);
  filter:saturate(.9) contrast(1.08) brightness(.82);
}
.hero-shade {
  position:absolute !important;
  inset:0;
  background:
    linear-gradient(90deg,rgba(4,4,3,.96) 0%,rgba(5,5,4,.8) 30%,rgba(6,5,4,.28) 63%,rgba(6,5,4,.14) 100%),
    linear-gradient(0deg,rgba(5,4,3,.75),transparent 55%);
}
.hero-card::after {
  background:linear-gradient(90deg,rgba(4,4,3,.75) 0%,rgba(8,7,5,.32) 48%,rgba(7,6,5,.12)),linear-gradient(0deg,rgba(18,7,3,.38),transparent 65%);
}

.form-readonly {
  min-height:42px;
  display:flex;
  align-items:center;
  padding:10px 11px;
  border:1px solid var(--ash-line);
  color:var(--muted);
  background:rgba(5,4,3,.46);
  font-size:10px;
}
.recurrence-until[hidden] { display:none; }

.discord-roster-meta { display:flex; justify-content:space-between; align-items:center; gap:12px; margin-bottom:10px; color:var(--muted); font-size:9px; }
.discord-roster-meta > span { display:flex; align-items:center; gap:7px; color:#bed9b7; font-weight:800; text-transform:uppercase; letter-spacing:.1em; }
.discord-roster-meta i { width:7px; height:7px; border-radius:50%; background:var(--success); box-shadow:0 0 10px rgba(117,184,110,.72); }
.discord-roster-groups { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:9px; }
.discord-roster-group { overflow:hidden; border:1px solid rgba(176,119,55,.26); background:rgba(5,5,4,.48); }
.discord-roster-group > header { display:flex; align-items:center; justify-content:space-between; gap:10px; padding:8px 10px; border-bottom:1px solid rgba(176,119,55,.18); background:linear-gradient(90deg,rgba(83,38,18,.34),rgba(19,14,11,.35)); color:#d9bd91; font-size:10px; }
.discord-roster-group > header span { color:var(--gold); font-weight:900; }
.discord-roster-group ol { display:grid; gap:0; margin:0; padding:0; list-style:none; }
.discord-roster-group li { display:grid; grid-template-columns:28px 1fr; align-items:center; gap:7px; min-height:39px; padding:6px 9px; border-top:1px solid rgba(255,255,255,.035); }
.discord-roster-group li:first-child { border-top:0; }
.discord-roster-number { color:#a27845; font-family:monospace; font-size:10px; }
.discord-roster-group li strong,.discord-roster-group li small { display:block; }
.discord-roster-group li strong { font-size:10px; }
.discord-roster-group li small { margin-top:2px; color:var(--muted); font-size:8px; }
.discord-roster-group.status-tentative > header { background:linear-gradient(90deg,rgba(90,72,31,.32),rgba(19,14,11,.35)); }
.discord-roster-group.status-late > header { background:linear-gradient(90deg,rgba(95,49,24,.35),rgba(19,14,11,.35)); }
.discord-roster-group.status-bench > header,.discord-roster-group.status-unavailable > header { background:linear-gradient(90deg,rgba(62,58,52,.34),rgba(19,14,11,.35)); }
.discord-roster-empty { padding:20px; border:1px dashed rgba(176,119,55,.28); color:var(--muted); text-align:center; font-size:10px; }

@media (max-width:620px) {
  .discord-roster-groups { grid-template-columns:1fr; }
}

@media (max-width:760px) {
  .hero-art { background-position:58% 48%; }
}

/* v2.6.0 — recent gallery dashboard and roster-return dossiers */
.recent-gallery-panel {
  grid-column:1 / -1;
  padding:20px;
}
.recent-gallery-grid {
  display:grid;
  grid-template-columns:repeat(5,minmax(0,1fr));
  gap:10px;
}
.recent-gallery-card {
  position:relative;
  overflow:hidden;
  min-height:180px;
  padding:0;
  border:1px solid rgba(189,125,52,.3);
  border-radius:10px;
  color:inherit;
  background:#080706;
  text-align:left;
  cursor:pointer;
}
.recent-gallery-card img {
  width:100%;
  height:180px;
  display:block;
  object-fit:cover;
  filter:saturate(.84) contrast(1.08);
  transition:transform .24s ease,filter .24s ease;
}
.recent-gallery-card > span {
  position:absolute;
  inset:auto 0 0;
  display:block;
  padding:34px 11px 10px;
  background:linear-gradient(transparent,rgba(3,3,2,.94));
}
.recent-gallery-card strong,.recent-gallery-card small {
  display:block;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.recent-gallery-card strong {
  color:#f0dcc2;
  font:500 12px var(--serif);
}
.recent-gallery-card small {
  margin-top:4px;
  color:#a99a89;
  font-size:7px;
}
.recent-gallery-card:hover {
  border-color:rgba(225,151,62,.62);
}
.recent-gallery-card:hover img {
  transform:scale(1.035);
  filter:saturate(1) contrast(1.08) brightness(1.05);
}
.recent-gallery-empty {
  grid-column:1 / -1;
}
.dossier-card {
  position:relative;
}
.dossier-return {
  position:absolute;
  z-index:12;
  top:13px;
  right:14px;
  width:42px;
  height:42px;
  display:grid;
  place-items:center;
  padding:0;
  border:1px solid rgba(220,148,61,.48);
  border-radius:50%;
  color:#ebc77d;
  background:rgba(8,7,6,.88);
  box-shadow:0 8px 22px rgba(0,0,0,.48);
  font-size:27px;
  line-height:1;
  cursor:pointer;
}
.dossier-return:hover,.dossier-return:focus-visible {
  border-color:#e2a751;
  color:#fff0cc;
  background:rgba(88,39,17,.92);
  outline:none;
}
@media (max-width:1100px) {
  .recent-gallery-grid { grid-template-columns:repeat(3,minmax(0,1fr)); }
}
@media (max-width:650px) {
  .recent-gallery-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .recent-gallery-card,.recent-gallery-card img { min-height:150px; height:150px; }
}
@media (max-width:430px) {
  .recent-gallery-grid { grid-template-columns:1fr; }
}

/* v2.7.1 — targeted weekly brackets, exact dossier performance, and floating native-item tooltips */
.podium[hidden] { display:none !important; }
.leaderboard-bracket-row { background:linear-gradient(90deg,rgba(93,34,17,.56),rgba(24,17,13,.92),rgba(93,34,17,.32)) !important; }
.leaderboard-bracket-row:hover { background:linear-gradient(90deg,rgba(93,34,17,.56),rgba(24,17,13,.92),rgba(93,34,17,.32)) !important; }
.leaderboard-bracket-row td { padding:13px 18px !important; border-top:1px solid rgba(212,145,64,.38); border-bottom:1px solid rgba(212,145,64,.28); }
.leaderboard-bracket-row div { display:flex; align-items:center; justify-content:space-between; gap:18px; }
.leaderboard-bracket-row strong { color:#e0aa58; font:600 16px Georgia,'Times New Roman',serif; letter-spacing:.03em; }
.leaderboard-bracket-row span { color:#928576; font-size:8px; text-transform:uppercase; letter-spacing:.12em; }
.leaderboard-bracket-empty td { padding:13px 18px !important; color:#766d63; font-size:9px; font-style:italic; }
.weekly-bracket-preview .position { min-width:45px; color:#d9a34b; font-size:9px; letter-spacing:.04em; }
.weekly-bracket-preview > b { white-space:nowrap; font-size:12px; }
.weekly-bracket-preview-empty { display:flex; align-items:center; justify-content:space-between; min-height:48px; padding:10px 12px; border-bottom:1px solid rgba(145,101,52,.14); color:#74695e; }
.weekly-bracket-preview-empty > span { color:#a77a42; font:600 11px Georgia,'Times New Roman',serif; }
.weekly-bracket-preview-empty > small { font-size:8px; }

.gear-item-tooltip { position:fixed; z-index:10050; width:min(340px,calc(100vw - 24px)); max-height:min(520px,calc(100vh - 24px)); overflow:hidden auto; padding:14px; border:1px solid #b27631; border-radius:2px; pointer-events:none; color:#d9c8b3; background:linear-gradient(rgba(8,8,7,.98),rgba(16,12,9,.98)),url('assets/texture-dark-stone.webp') center/220px 190px; box-shadow:0 18px 52px #000; }
.gear-item-tooltip[hidden] { display:none !important; }
.gear-tooltip-heading { display:grid; grid-template-columns:52px minmax(0,1fr); gap:11px; align-items:center; padding-bottom:10px; border-bottom:1px solid rgba(183,124,53,.32); }
.gear-tooltip-icon { width:52px; height:52px; display:grid; place-items:center; overflow:hidden; border:1px solid currentColor; background:#080706; }
.gear-tooltip-icon img,.gear-modal-image { width:100%; height:100%; display:block; object-fit:cover; }
.gear-tooltip-heading strong,.gear-tooltip-heading small { display:block; }
.gear-tooltip-heading strong { font-family:var(--serif); font-size:15px; line-height:1.25; }
.gear-tooltip-heading small { margin-top:4px; color:#958979; font-size:8px; letter-spacing:.05em; text-transform:uppercase; }
.gear-tooltip-lines { display:grid; gap:3px; padding:10px 0 2px; }
.gear-tooltip-lines span { display:block; color:#d9c8b3; font-size:10px; line-height:1.42; white-space:normal; }
.gear-tooltip-lines .gear-tooltip-primary { color:#fff; }
.gear-tooltip-source { display:block; margin-top:9px; padding-top:8px; border-top:1px solid rgba(183,124,53,.2); color:#7fb46e; font-size:7px; line-height:1.4; }
.gear-modal-tooltip-lines { margin:12px 0; padding:12px; border:1px solid rgba(183,124,53,.22); background:rgba(0,0,0,.18); }
.quality-text-poor { color:#9d9d9d !important; }.quality-text-common { color:#fff !important; }.quality-text-uncommon { color:#42c95b !important; }.quality-text-rare { color:#4d8dff !important; }.quality-text-epic { color:#b869ff !important; }.quality-text-legendary { color:#ff8000 !important; }.quality-text-artifact { color:#e6cc80 !important; }

.dossier-performance-state { display:grid; justify-items:start; gap:7px; min-height:92px; align-content:center; padding:14px; border:1px solid rgba(213,151,77,.13); background:rgba(0,0,0,.16); }
.dossier-performance-state strong { color:#e7d2b5; font-family:var(--serif); font-size:15px; }
.dossier-performance-state span { max-width:720px; color:var(--muted); font-size:9px; line-height:1.5; }
.dossier-performance-state .button { margin-top:4px; }
.dossier-performance-note { margin:10px 2px 0; color:#83786d; font-size:8px; line-height:1.45; }
.performance-focused-row { position:relative; background:linear-gradient(90deg,rgba(133,43,16,.62),rgba(72,37,20,.52),rgba(133,43,16,.2)) !important; box-shadow:inset 4px 0 0 #df7b2d,inset 0 0 24px rgba(223,90,28,.08); }
.performance-focused-row td { border-top:1px solid rgba(232,154,72,.42); border-bottom-color:rgba(232,154,72,.42) !important; }
.performance-focused-row .table-member-button strong::after { content:'Dossier match'; display:inline-block; margin-left:7px; padding:2px 5px; border:1px solid rgba(226,145,65,.4); color:#e4b36e; font-size:6px; text-transform:uppercase; letter-spacing:.09em; vertical-align:middle; }

@media (max-width:640px) {
  .leaderboard-bracket-row div { align-items:flex-start; flex-direction:column; gap:3px; }
  .weekly-bracket-preview > b { grid-column:2 / -1; justify-self:start; }
}

/* v2.7.2 - full-height lifetime leaders and addon-synchronized guild activity */
.lifetime-leaderboard-panel,
.activity-panel {
  display:flex;
  flex-direction:column;
}
.lifetime-leaderboard-panel > .panel-heading,
.activity-panel > .panel-heading {
  flex:0 0 auto;
}
#lifetimeLeaderPreview {
  flex:1 1 auto;
  min-height:250px;
  grid-template-rows:repeat(3,minmax(0,1fr));
  align-items:stretch;
}
#lifetimeLeaderPreview .leader-line {
  width:100%;
  height:100%;
  min-height:76px;
  padding:16px 14px;
}
#lifetimeLeaderPreview .leader-spec-icon {
  width:44px;
  height:44px;
}
#lifetimeLeaderPreview .position {
  font-size:19px;
}
#lifetimeLeaderPreview strong {
  font-size:13px;
}
#lifetimeLeaderPreview b {
  font-size:14px;
}
.activity-feed-meta {
  display:block;
  margin-top:4px;
  color:#807467;
  font-size:7px;
  font-weight:500;
  letter-spacing:.05em;
  text-transform:uppercase;
}
#guildActivityFeed {
  flex:1 1 auto;
  min-height:250px;
  grid-auto-rows:minmax(0,1fr);
  align-items:stretch;
}
.activity-item-button {
  width:100%;
  min-height:0;
  margin:0;
  border-right:0;
  border-bottom:0;
  border-left:0;
  border-radius:0;
  color:inherit;
  background:transparent;
  font:inherit;
  text-align:left;
  cursor:pointer;
  appearance:none;
}
.activity-item-button:hover,
.activity-item-button:focus-visible {
  background:linear-gradient(90deg,rgba(117,52,21,.22),transparent);
  outline:none;
}
.activity-item-button > span {
  min-width:0;
}
.activity-item-button strong,
.activity-item-button span span {
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.activity-empty {
  grid-row:1 / -1;
  align-self:stretch;
  display:grid;
  place-items:center;
  min-height:180px;
  padding:24px;
  text-align:center;
}
@media (max-width:720px) {
  #lifetimeLeaderPreview,
  #guildActivityFeed {
    min-height:0;
    grid-template-rows:none;
  }
  #lifetimeLeaderPreview .leader-line {
    min-height:72px;
  }
}

/* v2.8.0 — officer-managed Core teams, event Bench assignments, and readable signup rosters */
.roster-builder-loading {
  min-height:260px;
  display:grid;
  place-content:center;
  justify-items:start;
  gap:8px;
  padding:34px;
}
.roster-builder-loading > span,
.roster-builder-heading > div > span {
  color:#cc984c;
  font-size:8px;
  font-weight:900;
  letter-spacing:.18em;
  text-transform:uppercase;
}
.roster-builder-loading h2,
.roster-builder-heading h2 {
  margin:0;
  font-family:var(--serif);
  color:#ead8bd;
}
.roster-builder-loading p,
.roster-builder-heading p {
  max-width:850px;
  margin:0;
  color:var(--muted);
  font-size:10px;
  line-height:1.6;
}
.roster-builder-alert {
  display:grid;
  grid-template-columns:minmax(150px,auto) 1fr;
  gap:14px;
  align-items:center;
  margin-bottom:14px;
  padding:14px 16px;
  border:1px solid rgba(223,159,72,.34);
  background:linear-gradient(90deg,rgba(80,48,18,.4),rgba(12,10,8,.86));
  color:#cfc0ac;
  font-size:10px;
}
.roster-builder-alert strong { color:#e4b167; }
.roster-builder-alert code { color:#f0c47c; }
.roster-builder-alert.error {
  border-color:rgba(181,66,48,.5);
  background:linear-gradient(90deg,rgba(92,27,20,.42),rgba(12,10,8,.86));
}
.roster-builder-alert.error strong { color:#ef8b78; }
.roster-builder-hero { padding:22px; margin-bottom:14px; }
.roster-builder-heading {
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:18px;
  padding-bottom:18px;
  border-bottom:1px solid rgba(176,119,55,.24);
}
.roster-builder-heading h2 { margin:4px 0 7px; font-size:26px; }
.roster-builder-modebar {
  display:flex;
  align-items:end;
  justify-content:space-between;
  gap:16px;
  padding:16px 0;
}
.roster-mode-button {
  min-height:42px;
  padding:10px 16px;
  border:1px solid var(--line);
  background:rgba(3,3,3,.36);
  color:#a69784;
  font:800 9px var(--sans);
  letter-spacing:.08em;
  text-transform:uppercase;
  cursor:pointer;
}
.roster-mode-button.active,
.roster-mode-button:hover {
  border-color:#b77a35;
  color:#f1cb8a;
  background:linear-gradient(180deg,rgba(115,49,20,.44),rgba(21,14,10,.72));
}
.roster-builder-modebar label {
  width:min(520px,100%);
  display:grid;
  gap:6px;
}
.roster-builder-modebar label > span,
.roster-builder-search > span,
.roster-builder-add > span:first-child,
.roster-settings-grid label > span,
.roster-card-field > span {
  color:#ac7d43;
  font-size:7px;
  font-weight:900;
  letter-spacing:.13em;
  text-transform:uppercase;
}
.roster-builder-modebar select,
.roster-builder-toolbar input,
.roster-builder-toolbar select,
.roster-settings-grid input,
.roster-card-field input,
.roster-card-field select {
  width:100%;
  min-height:40px;
  border:1px solid rgba(176,119,55,.3);
  border-radius:5px;
  padding:9px 10px;
  background:rgba(5,4,3,.72);
  color:#e8d8c2;
  font:inherit;
  font-size:10px;
  outline:none;
}
.roster-builder-modebar select:focus,
.roster-builder-toolbar input:focus,
.roster-builder-toolbar select:focus,
.roster-settings-grid input:focus,
.roster-card-field input:focus,
.roster-card-field select:focus {
  border-color:#d29a4e;
  box-shadow:0 0 0 3px rgba(211,151,72,.08);
}
.roster-builder-stats {
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:10px;
}
.roster-builder-stats > span {
  display:grid;
  gap:5px;
  min-height:76px;
  padding:14px;
  border:1px solid rgba(176,119,55,.22);
  background:linear-gradient(145deg,rgba(28,19,13,.7),rgba(5,5,4,.76));
}
.roster-builder-stats small {
  color:#84786b;
  font-size:7px;
  letter-spacing:.12em;
  text-transform:uppercase;
}
.roster-builder-stats strong {
  color:#efc575;
  font-family:var(--serif);
  font-size:22px;
}
.roster-builder-stats strong.over-capacity { color:#ef7a68; }
.roster-role-summary {
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  margin-top:12px;
}
.roster-role-summary-item {
  display:grid;
  grid-template-columns:28px auto auto;
  align-items:center;
  gap:7px;
  padding:7px 10px;
  border:1px solid rgba(176,119,55,.2);
  background:rgba(0,0,0,.22);
}
.roster-role-summary-item strong { color:#c9b79f; font-size:9px; }
.roster-role-summary-item b { color:#e1a957; font-size:9px; }
.roster-role-icon {
  width:28px;
  height:28px;
  display:grid;
  place-items:center;
  flex:0 0 auto;
  overflow:hidden;
  border:1px solid rgba(194,133,61,.4);
  border-radius:4px;
  background:radial-gradient(circle,rgba(117,55,24,.5),rgba(8,7,6,.9));
  color:#e7bc78;
  font-size:16px;
  font-weight:900;
  line-height:1;
}
.roster-role-icon img { width:100%; height:100%; display:block; object-fit:cover; }
.roster-role-icon.role-healer { color:#75ba72; }
.roster-role-icon.role-melee { color:#e28254; }
.roster-role-icon.role-ranged { color:#77add5; }
.roster-builder-settings,
.roster-builder-event-summary,
.roster-builder-toolbar { margin-bottom:14px; padding:18px; }
.roster-settings-grid {
  display:grid;
  grid-template-columns:2fr repeat(5,minmax(90px,1fr));
  gap:10px;
}
.roster-settings-grid label { display:grid; gap:6px; }
.roster-builder-event-summary .panel-heading { align-items:center; }
.roster-managed-pill {
  padding:6px 9px;
  border:1px solid rgba(111,170,103,.38);
  color:#9bd090 !important;
  background:rgba(43,79,37,.22);
  font-size:7px !important;
  letter-spacing:.12em !important;
  text-transform:uppercase;
}
.roster-signup-stats {
  display:flex;
  flex-wrap:wrap;
  gap:9px;
  margin-bottom:12px;
}
.roster-signup-stats span {
  min-width:118px;
  padding:10px 12px;
  border:1px solid rgba(176,119,55,.18);
  background:rgba(0,0,0,.2);
  color:#95897a;
  font-size:8px;
}
.roster-signup-stats b { margin-right:5px; color:#e4b665; font-size:13px; }
.roster-builder-event-summary > p { margin:0; color:var(--muted); font-size:9px; line-height:1.55; }
.roster-builder-toolbar {
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  gap:18px;
  align-items:end;
}
.roster-builder-toolbar > div:first-child {
  display:grid;
  grid-template-columns:minmax(220px,1fr) minmax(300px,1.4fr);
  gap:12px;
}
.roster-builder-search,
.roster-builder-add { display:grid; gap:6px; }
.roster-builder-add > span:last-child { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:8px; }
.roster-builder-save-state { display:grid; justify-items:end; gap:9px; }
.roster-builder-event-actions { display:flex; flex-wrap:wrap; justify-content:flex-end; gap:8px; }
.roster-unsaved,
.roster-saved {
  display:inline-flex;
  align-items:center;
  gap:6px;
  color:#e4ad58;
  font-size:7px;
  font-weight:900;
  letter-spacing:.12em;
  text-transform:uppercase;
}
.roster-saved { color:#84bc7b; }
.roster-unsaved::before,
.roster-saved::before { content:""; width:7px; height:7px; border-radius:50%; background:currentColor; box-shadow:0 0 8px currentColor; }
.roster-builder-lanes {
  display:grid;
  grid-template-columns:minmax(0,1.18fr) minmax(0,1fr);
  gap:14px;
  align-items:start;
}
.roster-lane {
  min-height:430px;
  padding:16px;
  border:1px solid rgba(176,119,55,.32);
  background:linear-gradient(155deg,rgba(17,13,10,.94),rgba(6,6,5,.97)),url('assets/texture-volcanic-brick.webp') center/420px repeat;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.018),0 12px 30px rgba(0,0,0,.24);
  transition:border-color .16s ease,box-shadow .16s ease,transform .16s ease;
}
.roster-lane.core { border-color:rgba(210,144,62,.46); }
.roster-lane.bench { border-color:rgba(122,112,100,.34); }
.roster-lane.is-drag-over {
  border-color:#e4a74f;
  box-shadow:inset 0 0 28px rgba(155,68,25,.18),0 0 0 2px rgba(214,145,58,.13);
}
.roster-lane > header {
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:12px;
  padding-bottom:11px;
  border-bottom:1px solid rgba(176,119,55,.2);
}
.roster-lane > header > div { display:flex; align-items:center; gap:10px; }
.roster-lane > header small,
.roster-lane > header h2 { display:block; margin:0; }
.roster-lane > header small { color:#86796b; font-size:6px; letter-spacing:.1em; text-transform:uppercase; }
.roster-lane > header h2 { margin-top:3px; color:#e7d1b3; font-family:var(--serif); font-size:20px; }
.roster-lane > header > strong { color:#efbd6b; font-family:var(--serif); font-size:20px; }
.roster-lane > p { margin:10px 2px 13px; color:#85796d; font-size:8px; line-height:1.5; }
.roster-lane-shield { width:34px; height:34px; }
.roster-bench-icon {
  width:34px;
  height:34px;
  display:grid;
  place-items:center;
  border:1px solid rgba(129,119,105,.42);
  color:#b6aa9b;
  background:rgba(0,0,0,.35);
  font-family:var(--serif);
  font-size:18px;
}
.roster-card-list { display:grid; gap:9px; min-height:90px; }
.roster-lane-empty {
  min-height:115px;
  display:grid;
  place-items:center;
  padding:18px;
  border:1px dashed rgba(176,119,55,.22);
  color:#766c62;
  font-size:9px;
  text-align:center;
}
.roster-member-card {
  display:grid;
  grid-template-columns:16px 34px minmax(120px,1.2fr) minmax(100px,.75fr) minmax(120px,.9fr) auto;
  gap:9px;
  align-items:center;
  min-height:74px;
  padding:10px;
  border:1px solid rgba(176,119,55,.2);
  background:linear-gradient(90deg,rgba(23,17,13,.8),rgba(7,7,6,.82));
  transition:border-color .14s ease,background .14s ease,opacity .14s ease,transform .14s ease;
}
.roster-member-card:hover { border-color:rgba(213,145,63,.44); background:linear-gradient(90deg,rgba(43,24,15,.84),rgba(8,8,7,.86)); }
.roster-member-card.is-dragging { opacity:.42; transform:scale(.985); }
.roster-member-card.is-drop-target { border-top-color:#f0b95e; box-shadow:inset 0 2px 0 #d58a35; }
.roster-drag-handle { color:#765f45; font-size:15px; letter-spacing:-3px; cursor:grab; user-select:none; }
.roster-member-role-icon { width:34px; height:34px; }
.roster-member-profile { min-width:0; }
.roster-member-profile > strong,
.roster-member-profile > span { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.roster-member-profile > strong { font-size:11px; }
.roster-member-profile > span { margin-top:3px; color:#8b7f72; font-size:7px; }
.roster-member-badges { display:flex; flex-wrap:wrap; gap:4px; margin-top:6px; }
.roster-member-badge {
  padding:3px 5px;
  border:1px solid rgba(129,119,105,.28);
  color:#908679;
  background:rgba(0,0,0,.25);
  font-size:6px;
  letter-spacing:.06em;
  text-transform:uppercase;
}
.roster-member-badge.signup-attending { border-color:rgba(92,161,82,.4); color:#89c77e; }
.roster-member-badge.signup-late { border-color:rgba(214,135,57,.42); color:#e3a563; }
.roster-member-badge.signup-tentative { border-color:rgba(190,158,67,.4); color:#d2bc6a; }
.roster-member-badge.signup-unavailable { border-color:rgba(177,66,51,.42); color:#d98272; }
.roster-member-badge.team-core { color:#e2ae62; }
.roster-card-field { display:grid; gap:5px; }
.roster-card-field input,
.roster-card-field select { min-height:34px; padding:7px 8px; font-size:8px; }
.roster-note-field { min-width:0; }
.roster-card-actions { display:flex; align-items:center; justify-content:flex-end; gap:5px; }
.roster-card-button,
.roster-card-icon {
  min-height:31px;
  border:1px solid rgba(176,119,55,.28);
  background:rgba(0,0,0,.26);
  color:#b5a797;
  font:800 7px var(--sans);
  letter-spacing:.04em;
  cursor:pointer;
}
.roster-card-button { padding:7px 9px; white-space:nowrap; }
.roster-card-button-primary { border-color:rgba(203,132,49,.48); color:#e7bd78; background:rgba(91,40,18,.32); }
.roster-card-icon { width:31px; padding:0; font-size:12px; }
.roster-card-icon.danger { border-color:rgba(154,61,47,.34); color:#d97c6e; }
.roster-card-button:hover,
.roster-card-icon:hover { border-color:#c9873a; color:#f0cd95; }

/* Event modal roster: one member per padded row, with the real shield role icon. */
.discord-roster-groups.managed { grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; }
.discord-roster-groups.managed .discord-roster-group.status-bench { grid-column:1 / -1; }
.discord-roster-group > header strong { display:flex; align-items:center; gap:7px; }
.discord-roster-header-icon { width:22px; height:22px; font-size:12px; }
.discord-roster-group li {
  grid-template-columns:25px 28px minmax(0,1fr);
  gap:9px;
  min-height:54px;
  padding:10px 12px;
}
.discord-roster-role-icon { width:25px; height:25px; font-size:12px; }
.discord-roster-number { font-size:9px; }
.discord-roster-group li strong { font-size:11px; }
.discord-roster-group li small { margin-top:4px; font-size:8px; line-height:1.35; }
.discord-roster-group.status-core > header {
  background:linear-gradient(90deg,rgba(112,48,19,.48),rgba(19,14,11,.42));
  border-bottom-color:rgba(212,143,62,.28);
}

@media (max-width:1180px) {
  .roster-settings-grid { grid-template-columns:repeat(3,minmax(120px,1fr)); }
  .roster-settings-grid label:first-child { grid-column:span 2; }
  .roster-builder-toolbar { grid-template-columns:1fr; }
  .roster-builder-save-state { justify-items:start; }
  .roster-builder-event-actions { justify-content:flex-start; }
  .roster-member-card {
    grid-template-columns:16px 34px minmax(130px,1fr) minmax(105px,.7fr) auto;
  }
  .roster-note-field { grid-column:3 / 5; }
  .roster-card-actions { grid-column:5; grid-row:1 / span 2; }
}
@media (max-width:930px) {
  .roster-builder-lanes { grid-template-columns:1fr; }
  .roster-builder-stats { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .roster-builder-toolbar > div:first-child { grid-template-columns:1fr; }
  .discord-roster-groups.managed { grid-template-columns:1fr; }
  .discord-roster-groups.managed .discord-roster-group.status-bench { grid-column:auto; }
}
@media (max-width:690px) {
  .roster-builder-heading,
  .roster-builder-modebar { align-items:stretch; flex-direction:column; }
  .roster-builder-modebar label { width:100%; }
  .roster-settings-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .roster-settings-grid label:first-child { grid-column:1 / -1; }
  .roster-builder-toolbar { padding:14px; }
  .roster-builder-add > span:last-child { grid-template-columns:1fr; }
  .roster-builder-event-actions { width:100%; }
  .roster-builder-event-actions .button { flex:1 1 160px; }
  .roster-member-card {
    grid-template-columns:16px 34px minmax(0,1fr) auto;
    align-items:start;
  }
  .roster-card-field { grid-column:3 / -1; }
  .roster-note-field { grid-column:3 / -1; }
  .roster-card-actions { grid-column:2 / -1; grid-row:auto; justify-content:flex-start; flex-wrap:wrap; }
  .roster-builder-alert { grid-template-columns:1fr; }
}
@media (max-width:430px) {
  .roster-builder-stats { grid-template-columns:1fr; }
  .roster-role-summary-item { flex:1 1 145px; }
  .roster-settings-grid { grid-template-columns:1fr; }
  .roster-settings-grid label:first-child { grid-column:auto; }
}

/* v2.8.1 — Core/Rotation designations, Thursday/Monday saves, and editable specs */
.roster-builder-modebar {
  flex-wrap:wrap;
  align-items:center;
}
.roster-save-tabs {
  display:flex;
  flex:1 1 300px;
  justify-content:center;
  gap:8px;
}
.roster-save-tab {
  min-width:138px;
  min-height:44px;
  display:grid;
  gap:2px;
  place-content:center;
  padding:8px 15px;
  border:1px solid rgba(176,119,55,.24);
  background:rgba(3,3,3,.34);
  color:#9c8c79;
  cursor:pointer;
}
.roster-save-tab span {
  font:900 9px var(--sans);
  letter-spacing:.08em;
  text-transform:uppercase;
}
.roster-save-tab small {
  color:#746b61;
  font-size:6px;
  letter-spacing:.1em;
  text-transform:uppercase;
}
.roster-save-tab.active,
.roster-save-tab:hover {
  border-color:#c98a40;
  color:#f0c77e;
  background:linear-gradient(180deg,rgba(116,49,18,.48),rgba(19,13,9,.78));
  box-shadow:inset 0 -2px 0 rgba(229,151,60,.55);
}
.roster-save-tab.active small { color:#c59b63; }
.roster-builder-stats .roster-stat-primary em {
  color:#8c7c6b;
  font-size:7px;
  font-style:normal;
  letter-spacing:.08em;
  text-transform:uppercase;
}
.roster-builder-add-grid {
  display:grid;
  grid-template-columns:minmax(190px,1.25fr) minmax(130px,.9fr) minmax(110px,.7fr) auto;
  gap:8px;
}
.roster-member-card {
  grid-template-columns:16px 34px minmax(115px,1.05fr) minmax(90px,.64fr) minmax(105px,.76fr) minmax(82px,.58fr) minmax(110px,.78fr) auto;
}
.roster-member-badge.member-type-core {
  border-color:rgba(222,153,66,.48);
  color:#f0bd6e;
  background:rgba(104,49,20,.3);
}
.roster-member-badge.member-type-rotation {
  border-color:rgba(91,145,186,.42);
  color:#8fc2df;
  background:rgba(29,62,86,.26);
}
.roster-card-field select[data-roster-member-type] {
  font-weight:800;
}
.roster-lane.core > header h2::after {
  content:" Core + Rotation";
  margin-left:7px;
  color:#796b5e;
  font:700 6px var(--sans);
  letter-spacing:.08em;
  text-transform:uppercase;
}

@media (max-width:1360px) {
  .roster-member-card {
    grid-template-columns:16px 34px minmax(135px,1fr) minmax(92px,.65fr) minmax(108px,.75fr) minmax(88px,.6fr) auto;
  }
  .roster-note-field { grid-column:3 / 7; }
  .roster-card-actions { grid-column:7; grid-row:1 / span 2; }
}
@media (max-width:1180px) {
  .roster-builder-modebar { align-items:stretch; }
  .roster-save-tabs { order:3; flex-basis:100%; justify-content:flex-start; }
  .roster-member-card {
    grid-template-columns:16px 34px minmax(130px,1fr) minmax(96px,.7fr) minmax(108px,.75fr) auto;
  }
  .roster-note-field { grid-column:3 / 6; }
  .roster-card-actions { grid-column:6; grid-row:1 / span 2; }
  .roster-builder-add-grid { grid-template-columns:repeat(3,minmax(0,1fr)); }
  .roster-builder-add-grid .button { grid-column:1 / -1; }
}
@media (max-width:820px) {
  .roster-save-tabs { display:grid; grid-template-columns:1fr 1fr; }
  .roster-save-tab { min-width:0; width:100%; }
  .roster-member-card {
    grid-template-columns:16px 34px minmax(0,1fr) auto;
  }
  .roster-card-field,
  .roster-note-field { grid-column:3 / -1; }
  .roster-card-actions { grid-column:2 / -1; grid-row:auto; }
  .roster-builder-add-grid { grid-template-columns:1fr; }
  .roster-builder-add-grid .button { grid-column:auto; }
}
@media (max-width:520px) {
  .roster-save-tabs { grid-template-columns:1fr; }
}


/* v2.8.4 — dashboard roster counts and unclipped countdown */
#nextGuildRaid .hero-copy { padding-bottom: 42px; }
#nextGuildRaid .countdown {
  position: static;
  display: inline-block;
  min-width: 122px;
  margin-top: 22px;
  padding: 10px 14px;
  text-align: left;
}
#nextGuildRaid .hero-stats span { white-space: nowrap; }
@media (max-width: 720px) {
  #nextGuildRaid .hero-copy { padding-bottom: 28px; }
  #nextGuildRaid .countdown { margin-top: 18px; }
}

/* v2.8.6 — Core designation database instead of pre-signing saved teams */
.roster-builder-lanes.team-core-database { grid-template-columns:1fr; }
.roster-lane.core-database { min-height:360px; }
.roster-lane.core-database > header h2::after { content:""; margin:0; }
.roster-builder-add-grid.core-add-grid { grid-template-columns:minmax(220px,1.4fr) minmax(150px,.9fr) auto; }
.roster-member-card {
  grid-template-columns:16px 34px minmax(130px,1.05fr) minmax(110px,.72fr) minmax(92px,.6fr) minmax(120px,.8fr) auto;
}
.roster-card-button.danger { border-color:rgba(154,61,47,.38); color:#d97c6e; }
.core-database-stats { grid-template-columns:1.2fr .7fr .7fr; }
@media (max-width:1180px) {
  .roster-member-card { grid-template-columns:16px 34px minmax(135px,1fr) minmax(105px,.7fr) minmax(105px,.7fr) auto; }
  .roster-note-field { grid-column:3 / 6; }
  .roster-card-actions { grid-column:6; grid-row:1 / span 2; }
  .roster-builder-add-grid.core-add-grid { grid-template-columns:1fr 1fr auto; }
  .roster-builder-add-grid.core-add-grid .button { grid-column:auto; }
}
@media (max-width:820px) {
  .roster-member-card { grid-template-columns:16px 34px minmax(0,1fr) auto; }
  .roster-card-field,.roster-note-field { grid-column:3 / -1; }
  .roster-card-actions { grid-column:2 / -1; grid-row:auto; }
  .roster-builder-add-grid.core-add-grid { grid-template-columns:1fr; }
}
@media (max-width:520px) {
  .core-database-stats { grid-template-columns:1fr; }
}

/* v2.8.8 — Group identity colors: Group 1 orange, Group 2 blue */
.calendar-group-legend {
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  padding:10px 12px;
  border-bottom:1px solid rgba(255,255,255,.045);
  background:rgba(4,4,4,.28);
}
.calendar-group-chip {
  display:inline-flex;
  align-items:center;
  gap:7px;
  min-height:28px;
  padding:5px 9px;
  border:1px solid rgba(255,255,255,.08);
  background:rgba(0,0,0,.24);
  color:#d8cdbf;
  font-size:9px;
  letter-spacing:.03em;
}
.calendar-group-chip i { width:8px; height:8px; border-radius:50%; background:currentColor; box-shadow:0 0 10px currentColor; }
.calendar-group-chip strong { font-size:9px; }
.calendar-group-chip small { color:#8f8478; font-size:8px; }
.calendar-group-chip.group-1 { color:var(--group-1-soft); border-color:rgba(226,109,36,.42); background:rgba(101,39,12,.30); }
.calendar-group-chip.group-2 { color:var(--group-2-soft); border-color:rgba(63,131,213,.42); background:rgba(19,48,91,.34); }
.calendar-group-chip.casual-open { color:#9de5d9; border-color:rgba(var(--casual-open-rgb),.42); background:rgba(var(--casual-open-rgb),.12); }

.calendar-event.group-1 {
  border-color:rgba(226,109,36,.52) !important;
  border-left-color:var(--group-1) !important;
  background:linear-gradient(90deg,rgba(127,47,15,.90),rgba(48,23,13,.88)) !important;
  color:#ffe0c6 !important;
}
.calendar-event.group-2 {
  border-color:rgba(63,131,213,.52) !important;
  border-left-color:var(--group-2) !important;
  background:linear-gradient(90deg,rgba(18,60,112,.92),rgba(12,25,48,.90)) !important;
  color:#d9eaff !important;
}
.calendar-event.group-1:hover { border-color:var(--group-1-soft) !important; }
.calendar-event.group-2:hover { border-color:var(--group-2-soft) !important; }

.agenda-entry.group-1 { border-left-color:var(--group-1); background:rgba(111,43,15,.18); }
.agenda-entry.group-2 { border-left-color:var(--group-2); background:rgba(18,54,100,.22); }
.agenda-entry.group-1 strong { color:#ffd4b3; }
.agenda-entry.group-2 strong { color:#cfe4ff; }

.event-row { background:transparent; border:1px solid transparent; }
.event-row.group-1 { border-left:3px solid var(--group-1); background:linear-gradient(90deg,rgba(107,42,15,.16),transparent 64%); }
.event-row.group-2 { border-left:3px solid var(--group-2); background:linear-gradient(90deg,rgba(19,55,101,.19),transparent 64%); }
.event-row.group-1 .event-date { border-color:rgba(226,109,36,.42); background:rgba(106,42,16,.32); }
.event-row.group-2 .event-date { border-color:rgba(63,131,213,.42); background:rgba(18,52,96,.36); }
.event-row.group-2 .event-date strong { color:var(--group-2-soft); }

#nextGuildRaid.group-1 { border-color:rgba(226,109,36,.52); box-shadow:var(--shadow), inset 4px 0 0 var(--group-1); }
#nextGuildRaid.group-2 { border-color:rgba(63,131,213,.52); box-shadow:var(--shadow), inset 4px 0 0 var(--group-2); }
#nextGuildRaid.group-1 .tag { border-color:rgba(226,109,36,.58); color:#ffd0ab; background:rgba(83,31,11,.72); }
#nextGuildRaid.group-2 .tag { border-color:rgba(63,131,213,.58); color:#d3e8ff; background:rgba(14,42,80,.76); }
#nextGuildRaid.group-2 .hero-stats b,
#nextGuildRaid.group-2 .countdown strong { color:var(--group-2-soft); }

.roster-save-tab[data-roster-save-day="group1"].active,
.roster-save-tab[data-roster-save-day="group1"]:hover {
  border-color:var(--group-1);
  color:#ffd0ad;
  background:linear-gradient(180deg,rgba(116,49,18,.56),rgba(19,13,9,.80));
  box-shadow:inset 0 -2px 0 var(--group-1);
}
.roster-save-tab[data-roster-save-day="group2"].active,
.roster-save-tab[data-roster-save-day="group2"]:hover {
  border-color:var(--group-2);
  color:#d4e8ff;
  background:linear-gradient(180deg,rgba(20,59,106,.58),rgba(9,16,28,.82));
  box-shadow:inset 0 -2px 0 var(--group-2);
}
.roster-save-tab[data-roster-save-day="group1"].active small { color:#e9a56f; }
.roster-save-tab[data-roster-save-day="group2"].active small { color:#86b7ef; }
#rosterBuilderContent[data-roster-group="group1"] .roster-builder-hero { border-top-color:var(--group-1); box-shadow:inset 0 2px 0 rgba(226,109,36,.32); }
#rosterBuilderContent[data-roster-group="group2"] .roster-builder-hero { border-top-color:var(--group-2); box-shadow:inset 0 2px 0 rgba(63,131,213,.34); }

@media (max-width: 640px) {
  .calendar-group-legend { display:grid; grid-template-columns:1fr; }
  .calendar-group-chip { justify-content:flex-start; }
}



/* v2.8.9 — Calendar customization and optimization controls */
.calendar-toolbar-actions { display:flex; align-items:center; gap:8px; justify-content:flex-end; }
.calendar-options-toggle {
  min-height:34px; padding:7px 12px; border:1px solid var(--line-strong); border-radius:8px;
  background:rgba(99,54,24,.24); color:var(--gold-soft); font-size:10px; font-weight:800; cursor:pointer;
}
.calendar-options-toggle:hover,.calendar-options-toggle[aria-expanded="true"] { background:rgba(126,62,24,.42); border-color:var(--gold); }
.calendar-options-panel { margin-bottom:14px; padding:16px 18px; }
.calendar-options-panel[hidden],.calendar-grid[hidden],.calendar-weekdays[hidden],.calendar-agenda-view[hidden],.calendar-group-legend[hidden] { display:none !important; }
.calendar-options-heading { display:flex; align-items:flex-start; justify-content:space-between; gap:18px; margin-bottom:14px; }
.calendar-options-heading span { display:block; color:var(--gold); font-size:8px; font-weight:900; letter-spacing:.16em; text-transform:uppercase; }
.calendar-options-heading h2 { margin:3px 0 2px; color:var(--gold-soft); font-family:var(--serif); font-size:20px; }
.calendar-options-heading p { margin:0; color:var(--muted); font-size:9px; }
.calendar-options-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px; }
.calendar-options-grid > label { min-height:72px; display:flex; flex-direction:column; justify-content:center; gap:6px; padding:10px 11px; border:1px solid rgba(255,255,255,.06); background:rgba(255,255,255,.018); }
.calendar-options-grid > label > span { color:#c9b9a8; font-size:9px; font-weight:800; }
.calendar-options-grid select { width:100%; min-height:34px; }
.calendar-color-option { display:grid !important; grid-template-columns:1fr 46px; grid-template-rows:auto auto; align-items:center; }
.calendar-color-option input[type="color"] { grid-column:2; grid-row:1 / span 2; width:42px; height:42px; padding:2px; border:1px solid var(--line-strong); border-radius:8px; background:#0e0c0a; cursor:pointer; }
.calendar-color-option small { color:var(--muted); font-size:8px; }
.calendar-check-option { min-height:52px !important; flex-direction:row !important; align-items:center; justify-content:flex-start !important; }
.calendar-check-option input { width:16px; height:16px; accent-color:var(--gold); }
.calendar-check-option span { font-weight:700 !important; }

/* Custom colors use RGB variables so the whole treatment follows the selected colors. */
.calendar-group-chip.group-1 { color:var(--group-1-soft); border-color:rgba(var(--group-1-rgb),.42); background:rgba(var(--group-1-rgb),.18); }
.calendar-group-chip.group-2 { color:var(--group-2-soft); border-color:rgba(var(--group-2-rgb),.42); background:rgba(var(--group-2-rgb),.18); }
.calendar-event.group-1 { border-color:rgba(var(--group-1-rgb),.58) !important; border-left-color:var(--group-1) !important; background:linear-gradient(90deg,rgba(var(--group-1-rgb),.52),rgba(var(--group-1-rgb),.13)) !important; }
.calendar-event.group-2 { border-color:rgba(var(--group-2-rgb),.58) !important; border-left-color:var(--group-2) !important; background:linear-gradient(90deg,rgba(var(--group-2-rgb),.52),rgba(var(--group-2-rgb),.13)) !important; }
.agenda-entry.group-1 { border-left-color:var(--group-1); background:rgba(var(--group-1-rgb),.12); }
.agenda-entry.group-2 { border-left-color:var(--group-2); background:rgba(var(--group-2-rgb),.12); }
.event-row.group-1 { border-left-color:var(--group-1); background:linear-gradient(90deg,rgba(var(--group-1-rgb),.14),transparent 64%); }
.event-row.group-2 { border-left-color:var(--group-2); background:linear-gradient(90deg,rgba(var(--group-2-rgb),.14),transparent 64%); }
.event-row.group-1 .event-date { border-color:rgba(var(--group-1-rgb),.42); background:rgba(var(--group-1-rgb),.18); }
.event-row.group-2 .event-date { border-color:rgba(var(--group-2-rgb),.42); background:rgba(var(--group-2-rgb),.18); }
#nextGuildRaid.group-1 { border-color:rgba(var(--group-1-rgb),.52); box-shadow:var(--shadow), inset 4px 0 0 var(--group-1); }
#nextGuildRaid.group-2 { border-color:rgba(var(--group-2-rgb),.52); box-shadow:var(--shadow), inset 4px 0 0 var(--group-2); }

.calendar-day.outside-unfaded { opacity:1; }
.calendar-layout[data-calendar-density="compact"] .calendar-day { min-height:96px; padding:5px; }
.calendar-layout[data-calendar-density="compact"] .calendar-event { padding:3px 5px; font-size:8px; }
.calendar-layout[data-calendar-density="compact"] .calendar-events { gap:2px; margin-top:3px; }
.calendar-layout[data-calendar-density="spacious"] .calendar-day { min-height:168px; padding:10px; }
.calendar-layout[data-calendar-density="spacious"] .calendar-event { padding:7px 8px; font-size:10px; }
.calendar-layout[data-calendar-density="spacious"] .calendar-events { gap:5px; margin-top:7px; }

.calendar-layout.agenda-mode { grid-template-columns:minmax(0,1fr); }
.calendar-layout.agenda-mode .agenda-panel { display:none; }
.calendar-agenda-view { padding:14px; display:grid; gap:10px; }
.calendar-agenda-empty { padding:56px 16px; text-align:center; color:var(--muted); font-size:11px; }
.calendar-agenda-day { border:1px solid rgba(255,255,255,.055); background:rgba(255,255,255,.012); }
.calendar-agenda-day > header { display:flex; align-items:center; justify-content:space-between; gap:14px; padding:9px 12px; border-bottom:1px solid rgba(255,255,255,.05); }
.calendar-agenda-day > header strong { color:#e4d6c7; font-family:var(--serif); font-size:14px; }
.calendar-agenda-day > header span { color:var(--muted); font-size:8px; text-transform:uppercase; letter-spacing:.1em; }
.calendar-agenda-day > div { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; padding:9px; }
.calendar-agenda-row { min-height:58px; display:grid; grid-template-columns:76px minmax(0,1fr); gap:10px; align-items:center; padding:9px 10px; border:1px solid rgba(255,255,255,.06); border-left:4px solid var(--ember); background:rgba(255,255,255,.018); color:inherit; text-align:left; cursor:pointer; }
.calendar-agenda-row:hover { filter:brightness(1.13); }
.calendar-agenda-row.group-1 { border-left-color:var(--group-1); background:rgba(var(--group-1-rgb),.10); }
.calendar-agenda-row.group-2 { border-left-color:var(--group-2); background:rgba(var(--group-2-rgb),.10); }
.calendar-agenda-time { color:var(--gold-soft); font-size:9px; font-weight:900; }
.calendar-agenda-row strong,.calendar-agenda-row small { display:block; }
.calendar-agenda-row strong { font-size:11px; }
.calendar-agenda-row small { margin-top:4px; color:var(--muted); font-size:8px; }

@media (max-width:900px) {
  .calendar-options-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .calendar-toolbar { flex-wrap:wrap; }
  .calendar-toolbar-actions { width:100%; justify-content:space-between; }
}
@media (max-width:640px) {
  .calendar-options-grid { grid-template-columns:1fr; }
  .calendar-options-heading { align-items:stretch; flex-direction:column; }
  .calendar-agenda-day > div { grid-template-columns:1fr; }
  .calendar-agenda-row { grid-template-columns:62px minmax(0,1fr); }
}


/* v2.8.10 — shared per-event colors + configurable non-group event defaults */
.calendar-event.event-colorized {
  border-color:rgba(var(--event-color-rgb),.58) !important;
  border-left-color:var(--event-color) !important;
  background:linear-gradient(90deg,rgba(var(--event-color-rgb),.52),rgba(var(--event-color-rgb),.13)) !important;
}
.calendar-event.event-colorized:hover { border-color:var(--event-color-soft) !important; }
.calendar-agenda-row.event-colorized { border-left-color:var(--event-color) !important; background:rgba(var(--event-color-rgb),.10) !important; }
.agenda-entry.event-colorized { border-left-color:var(--event-color) !important; background:rgba(var(--event-color-rgb),.10) !important; }
.event-row.event-colorized { border-left:3px solid var(--event-color) !important; background:linear-gradient(90deg,rgba(var(--event-color-rgb),.14),transparent 64%) !important; }
.event-row.event-colorized .event-date { border-color:rgba(var(--event-color-rgb),.42) !important; background:rgba(var(--event-color-rgb),.18) !important; }
.event-color-field input[type="color"] { width:100%; min-height:40px; padding:3px; border:1px solid var(--line-strong); border-radius:8px; background:#0e0c0a; cursor:pointer; }
.event-color-toggle { grid-column:span 2; }
@media (max-width:640px) { .event-color-toggle { grid-column:auto; } }

.calendar-options-note { min-height:72px; display:flex; flex-direction:column; justify-content:center; gap:5px; padding:10px 11px; border:1px solid rgba(217,163,75,.18); background:rgba(217,163,75,.045); }
.calendar-options-note strong { color:var(--gold-soft); font-size:9px; }
.calendar-options-note span { color:var(--muted); font-size:8px; line-height:1.45; }

/* v2.8.12 — Discord-first identity gate */
body.auth-locked { overflow:hidden; }
.discord-auth-gate {
  position:fixed; inset:0; z-index:100000; display:grid; place-items:center; padding:24px;
  background:
    radial-gradient(circle at 50% 20%, rgba(153,65,20,.23), transparent 42%),
    linear-gradient(180deg, rgba(4,4,4,.94), rgba(7,5,4,.985));
  backdrop-filter:blur(9px);
}
.discord-auth-gate[hidden] { display:none; }
.discord-auth-card {
  width:min(520px, 100%); padding:38px 38px 32px; text-align:center; position:relative; overflow:hidden;
  border:1px solid rgba(220,139,53,.36); border-radius:14px;
  background:linear-gradient(145deg, rgba(20,16,12,.98), rgba(8,8,8,.985));
  box-shadow:0 30px 90px rgba(0,0,0,.65), inset 0 0 40px rgba(196,76,24,.045);
}
.discord-auth-card::before { content:""; position:absolute; left:12%; right:12%; top:0; height:1px; background:linear-gradient(90deg, transparent, var(--gold), transparent); }
.discord-auth-card > img { width:76px; height:76px; object-fit:contain; margin-bottom:18px; filter:drop-shadow(0 0 18px rgba(212,105,34,.2)); }
.discord-auth-eyebrow { display:block; color:var(--gold); font-size:9px; text-transform:uppercase; letter-spacing:.22em; font-weight:900; margin-bottom:7px; }
.discord-auth-card h1 { margin:0; font-family:var(--display); color:#eadccf; font-size:clamp(25px, 5vw, 36px); }
.discord-auth-card p { color:#b9ada2; line-height:1.65; max-width:420px; margin:14px auto 22px; }
.discord-auth-card small { display:block; color:#786d64; line-height:1.55; margin-top:18px; }
.discord-auth-card .button { min-width:220px; }
.discord-auth-card .auth-character-form { display:grid; gap:12px; text-align:left; margin-top:18px; }
.discord-auth-card .auth-character-form label { display:grid; gap:7px; }
.discord-auth-card .auth-character-form label > span { color:#c99354; font-size:9px; text-transform:uppercase; letter-spacing:.14em; font-weight:900; }
.discord-auth-card .auth-character-form input { width:100%; min-height:44px; border:1px solid rgba(224,146,55,.28); border-radius:7px; background:#0b0a09; color:#f0e2d4; padding:0 13px; outline:none; }
.discord-auth-card .auth-character-form input:focus { border-color:rgba(224,146,55,.65); box-shadow:0 0 0 2px rgba(224,146,55,.08); }
.discord-auth-status { padding:10px 12px; border:1px solid rgba(255,255,255,.08); border-radius:7px; background:rgba(255,255,255,.025); color:#9e9388; font-size:10px; line-height:1.5; }
.discord-auth-status.warning { border-color:rgba(224,146,55,.26); color:#d0aa7e; }
.auth-spinner { width:24px; height:24px; border-radius:50%; display:inline-block; border:2px solid rgba(255,255,255,.12); border-top-color:var(--gold); animation:auth-spin .8s linear infinite; }
@keyframes auth-spin { to { transform:rotate(360deg); } }
.profile-mini .avatar img { width:100%; height:100%; object-fit:cover; border-radius:inherit; }
.profile-mini .account-menu-button { margin-left:auto; }
.stat-grid:has(.stat-card:nth-child(3):last-child) { grid-template-columns:repeat(3,minmax(0,1fr)); }
@media (max-width:900px) { .stat-grid:has(.stat-card:nth-child(3):last-child) { grid-template-columns:1fr; } }
body:not(.officer-session) .nav-button[data-page="admin"],
body:not(.officer-session) #createEvent,
body:not(.officer-session) #agendaCreate,
body:not(.officer-session) [data-edit-event],
body:not(.officer-session) [data-delete-event],
body:not(.officer-session) [data-publish-discord],
body:not(.officer-session) [data-refresh-discord],
body:not(.raidops-session) [data-manage-event-roster],
body:not(.raidops-session) [data-open-roster-builder],
body:not(.raidops-session) .officer-event-actions { display:none !important; }
body:not(.raidops-session) #openRosterBuilder { display:none !important; }

/* v2.8.24 — universal current-member dossier links and protected roster controls */
.person-dossier-link {
  display:inline; margin:0; padding:0; border:0; background:transparent; color:inherit;
  font:inherit; font-weight:inherit; line-height:inherit; text-align:inherit; cursor:pointer;
}
.person-dossier-link:hover,.person-dossier-link:focus-visible { color:var(--gold-soft); text-decoration:underline; text-underline-offset:2px; }
.person-dossier-link.mention { color:var(--gold-soft); }
.recruitment-hero-stat-button { color:inherit; text-align:left; cursor:pointer; text-decoration:none; }
.recruitment-hero-stat-button:hover,.recruitment-hero-stat-button:focus-visible { filter:brightness(1.12); border-color:rgba(var(--casual-open-rgb),.58); }
.casual-open-badge { cursor:pointer; font:inherit; }
.casual-open-badge:hover,.casual-open-badge:focus-visible { border-color:rgba(var(--casual-open-rgb),.7); filter:brightness(1.12); }


/* v2.8.15 — instant Core/Rotation designation + linked-character dashboard stats */
.roster-designation-field select {
  border-color:rgba(112,157,198,.32);
  font-weight:900;
}
.roster-designation-field select:has(option[value="core"]:checked) {
  border-color:rgba(222,153,66,.48);
  color:#f0bd6e;
}
.roster-member-card {
  grid-template-columns:16px 34px minmax(120px,1fr) minmax(94px,.64fr) minmax(110px,.72fr) minmax(92px,.6fr) minmax(118px,.76fr) auto;
}
@media (max-width:1360px) {
  .roster-member-card { grid-template-columns:16px 34px minmax(125px,1fr) minmax(92px,.62fr) minmax(102px,.68fr) minmax(92px,.6fr) auto; }
  .roster-note-field { grid-column:3 / 7; }
  .roster-card-actions { grid-column:7; grid-row:1 / span 2; }
}
@media (max-width:1180px) {
  .roster-member-card { grid-template-columns:16px 34px minmax(125px,1fr) minmax(100px,.7fr) minmax(100px,.7fr) auto; }
  .roster-designation-field,.roster-note-field { grid-column:3 / 6; }
  .roster-card-actions { grid-column:6; grid-row:1 / span 2; }
}
@media (max-width:820px) {
  .roster-member-card { grid-template-columns:16px 34px minmax(0,1fr) auto; }
  .roster-card-field,.roster-designation-field,.roster-note-field { grid-column:3 / -1; }
  .roster-card-actions { grid-column:2 / -1; grid-row:auto; }
}
#memberStatGrid .stat-card small { min-height:1.25em; }

/* v2.8.16 — public recruiting, protected identity review, desired roles, Casual Tuesday */
:root {
  --casual-open:#54c7b6;
  --casual-open-rgb:84,199,182;
}
body:not(.verified-session) .nav-button[data-page="dossier"] { display:none !important; }
body.visitor-session #newThreadButton,
body.applicant-session #newThreadButton,
body.visitor-session #chooseGalleryImage,
body.applicant-session #chooseGalleryImage,
body.visitor-session .gallery-upload-panel,
body.applicant-session .gallery-upload-panel { display:none !important; }
.header-auth-button { white-space:nowrap; }
.recruitment-nav { position:relative; }
.recruitment-nav::after { content:"OPEN"; margin-left:auto; padding:2px 5px; border:1px solid rgba(222,153,66,.32); color:#e5ae62; font-size:6px; letter-spacing:.12em; }

.recruitment-hero {
  min-height:300px; display:grid; grid-template-columns:minmax(0,1.45fr) minmax(260px,.55fr); gap:24px; align-items:stretch; padding:34px;
  background:
    linear-gradient(90deg,rgba(7,6,5,.97) 0%,rgba(10,8,6,.91) 52%,rgba(10,7,5,.76) 100%),
    radial-gradient(circle at 82% 50%,rgba(188,70,22,.19),transparent 43%);
}
.recruitment-hero-copy { align-self:center; max-width:780px; }
.recruitment-hero-copy > span,.recruitment-hero-stat > span { color:var(--gold); font-size:9px; font-weight:900; letter-spacing:.18em; text-transform:uppercase; }
.recruitment-hero-copy h2 { margin:8px 0 12px; font:700 clamp(31px,4vw,52px)/.98 var(--display); color:#eadbc9; max-width:650px; }
.recruitment-hero-copy p { max-width:760px; color:#b7aa9d; line-height:1.7; }
.recruitment-hero-stat { display:flex; flex-direction:column; justify-content:flex-end; min-height:210px; padding:24px; border:1px solid rgba(var(--casual-open-rgb),.28); background:linear-gradient(160deg,rgba(var(--casual-open-rgb),.12),rgba(0,0,0,.24)); box-shadow:inset 3px 0 0 rgba(var(--casual-open-rgb),.65); }
.recruitment-hero-stat strong { margin:8px 0 7px; font:700 27px/1.1 var(--serif); color:#e7d9c9; }
.recruitment-hero-stat small { color:#9eb9b4; }

.recruitment-team-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:14px; margin-top:14px; }
.recruitment-team-card { padding:20px; min-height:280px; overflow:hidden; }
.recruitment-team-card.group-1 { border-color:rgba(var(--group-1-rgb),.38); box-shadow:inset 3px 0 0 var(--group-1); }
.recruitment-team-card.group-2 { border-color:rgba(var(--group-2-rgb),.38); box-shadow:inset 3px 0 0 var(--group-2); }
.recruitment-team-card.casual { border-color:rgba(var(--casual-open-rgb),.38); box-shadow:inset 3px 0 0 var(--casual-open); }
.recruitment-team-card > p { color:#94887d; font-size:10px; line-height:1.55; margin:2px 0 14px; }
.recruitment-team-card.group-1 .panel-heading > div > span { color:var(--group-1); }
.recruitment-team-card.group-2 .panel-heading > div > span { color:var(--group-2); }
.recruitment-team-card.casual .panel-heading > div > span { color:var(--casual-open); }
.recruitment-team-card .casual-open-badge { text-decoration:none; }
.recruitment-needs-list { display:grid; gap:8px; }
.recruitment-need { display:grid; grid-template-columns:auto minmax(0,1fr); gap:10px; align-items:start; min-height:64px; padding:10px; border:1px solid rgba(255,255,255,.06); background:rgba(255,255,255,.018); }
.recruitment-need > div { min-width:0; }
.recruitment-need strong,.recruitment-need small { display:block; }
.recruitment-need strong { color:#ded0c1; font-size:11px; }
.recruitment-need small { margin-top:3px; color:#8f8378; font-size:8px; }
.recruitment-need p { margin:6px 0 0; color:#a6998d; font-size:9px; line-height:1.45; }
.recruitment-priority { min-width:42px; padding:4px 5px; text-align:center; border:1px solid rgba(255,255,255,.08); font-size:7px; font-weight:900; letter-spacing:.09em; text-transform:uppercase; }
.priority-high .recruitment-priority { border-color:rgba(210,72,45,.4); color:#eb8e75; background:rgba(210,72,45,.08); }
.priority-medium .recruitment-priority { border-color:rgba(222,153,66,.35); color:#dcaa64; background:rgba(222,153,66,.06); }
.priority-low .recruitment-priority { border-color:rgba(105,152,185,.34); color:#91b5ce; background:rgba(105,152,185,.06); }
.recruitment-need-open { grid-template-columns:1fr; }
.casual-open-badge { margin-top:30px; display:inline-flex; align-items:center; justify-content:center; min-height:48px; padding:0 16px; border:1px solid rgba(var(--casual-open-rgb),.35); background:rgba(var(--casual-open-rgb),.08); color:#9de5d9; font-family:var(--serif); font-size:17px; }

.recruitment-application { margin-top:14px; padding:22px; }
.join-login-prompt { padding:22px; border:1px solid rgba(222,153,66,.18); background:rgba(222,153,66,.035); text-align:center; }
.join-login-prompt.member { border-color:rgba(97,147,101,.22); background:rgba(97,147,101,.035); }
.join-login-prompt strong { display:block; color:#e5d6c6; font:700 20px var(--serif); }
.join-login-prompt p { max-width:620px; margin:9px auto 15px; color:#9f9388; line-height:1.55; }
.guild-application-form { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; }
.guild-application-form label { display:grid; gap:6px; }
.guild-application-form label > span { color:#b88c57; font-size:8px; font-weight:900; letter-spacing:.12em; text-transform:uppercase; }
.guild-application-form input,.guild-application-form select,.guild-application-form textarea,
.recruitment-need-editor input,.recruitment-need-editor select,.recruitment-review-controls input,.recruitment-review-controls select { width:100%; border:1px solid rgba(222,153,66,.18); background:#0c0b09; color:#ded2c7; padding:10px; }
.guild-application-form textarea { resize:vertical; }
.form-field-wide { grid-column:1 / -1; }
.application-discord-proof { display:flex; align-items:center; justify-content:space-between; gap:12px; min-height:48px; padding:10px 12px; border:1px solid rgba(88,138,180,.18); background:rgba(88,138,180,.04); color:#a9bfce; }
.application-status-banner { display:flex; justify-content:space-between; gap:16px; align-items:center; padding:11px 13px; margin-bottom:12px; border:1px solid rgba(222,153,66,.2); background:rgba(222,153,66,.04); }
.application-status-banner strong { text-transform:capitalize; color:#d8ad71; }
.application-status-banner span { color:#90857a; font-size:9px; }

.recruitment-admin-panel { margin-top:14px; padding:20px; scroll-margin-top:80px; }
.recruitment-admin-stack,.identity-manager-grid,.identity-manager-columns { display:grid; gap:14px; }
.recruitment-admin-group { padding:14px; border:1px solid rgba(255,255,255,.055); background:rgba(255,255,255,.012); }
.recruitment-admin-group.group1 { box-shadow:inset 3px 0 0 var(--group-1); }
.recruitment-admin-group.group2 { box-shadow:inset 3px 0 0 var(--group-2); }
.recruitment-admin-group > header { display:flex; justify-content:space-between; gap:14px; align-items:center; margin-bottom:12px; }
.recruitment-admin-group > header span { color:var(--gold); font-size:8px; text-transform:uppercase; letter-spacing:.13em; }
.recruitment-admin-group > header h3 { margin:3px 0 0; font:700 16px var(--serif); color:#ddd0c1; }
.recruitment-need-editors { display:grid; gap:7px; }
.recruitment-need-editor { display:grid; grid-template-columns:1fr 1fr .8fr .72fr 90px 1.4fr auto; gap:7px; align-items:center; }
.recruitment-admin-group .button-row { margin-top:12px; }

.identity-manager-grid,.identity-manager-columns { grid-template-columns:1fr 1fr; }
.identity-manager-grid section,.identity-manager-columns section { min-width:0; padding:14px; border:1px solid rgba(255,255,255,.055); }
.identity-manager-grid section h3 { margin:0 0 10px; color:#d9cbbb; font:700 15px var(--serif); }
.identity-claim-card,.verified-identity-row { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:10px 0; border-top:1px solid rgba(255,255,255,.05); }
.identity-claim-card:first-of-type,.verified-identity-row:first-of-type { border-top:0; }
.identity-claim-card > div:first-child,.verified-identity-row > div:first-child { min-width:0; }
.identity-claim-card strong,.verified-identity-row strong { display:block; color:#e0d2c3; }
.identity-claim-card span,.verified-identity-row span,.identity-claim-card small,.verified-identity-row small { display:block; color:#8e8277; font-size:8px; margin-top:2px; overflow-wrap:anywhere; }
.verified-identity-list { max-height:480px; overflow:auto; }

.recruitment-application-card { display:grid; grid-template-columns:minmax(170px,.65fr) minmax(260px,1.35fr); gap:14px; padding:14px; border-top:1px solid rgba(255,255,255,.055); }
.recruitment-application-card:first-child { border-top:0; }
.recruitment-applicant strong,.recruitment-applicant span,.recruitment-applicant small { display:block; }
.recruitment-applicant strong { color:#e2d3c2; font:700 16px var(--serif); }
.recruitment-applicant span { color:#bc9a73; font-size:9px; margin-top:4px; }
.recruitment-applicant small { color:#7f756d; font-size:8px; margin-top:4px; }
.recruitment-application-copy { color:#9c9084; font-size:9px; line-height:1.5; }
.recruitment-application-copy p { margin:0 0 7px; }
.recruitment-review-controls { grid-column:1 / -1; display:grid; grid-template-columns:160px minmax(180px,1fr) auto; gap:8px; }

.calendar-event.casual-open { border-color:rgba(var(--casual-open-rgb),.55); border-left-color:var(--casual-open); background:linear-gradient(90deg,rgba(var(--casual-open-rgb),.42),rgba(var(--casual-open-rgb),.11)); }
.calendar-agenda-row.casual-open,.agenda-entry.casual-open { border-left-color:var(--casual-open); background:rgba(var(--casual-open-rgb),.10); }
.event-row.casual-open { border-left-color:var(--casual-open); background:linear-gradient(90deg,rgba(var(--casual-open-rgb),.13),transparent 64%); }
.event-row.casual-open .event-date { border-color:rgba(var(--casual-open-rgb),.4); background:rgba(var(--casual-open-rgb),.14); }
#nextGuildRaid.casual-open { border-color:rgba(var(--casual-open-rgb),.5); box-shadow:var(--shadow), inset 4px 0 0 var(--casual-open); }

@media (max-width:1200px) {
  .recruitment-team-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .recruitment-team-card.casual { grid-column:1 / -1; min-height:auto; }
  .recruitment-need-editor { grid-template-columns:repeat(3,minmax(0,1fr)); }
  .recruitment-need-editor .roster-card-button { justify-self:start; }
}
@media (max-width:820px) {
  .recruitment-hero { grid-template-columns:1fr; padding:22px; }
  .recruitment-hero-stat { min-height:130px; }
  .recruitment-team-grid,.identity-manager-grid,.identity-manager-columns,.guild-application-form { grid-template-columns:1fr; }
  .recruitment-team-card.casual,.form-field-wide { grid-column:auto; }
  .recruitment-admin-group > header { align-items:flex-start; flex-direction:column; }
  .recruitment-need-editor { grid-template-columns:1fr 1fr; }
  .recruitment-application-card { grid-template-columns:1fr; }
  .recruitment-review-controls { grid-column:auto; grid-template-columns:1fr; }
  .application-discord-proof { align-items:flex-start; flex-direction:column; }
}
@media (max-width:640px) {
  .recruitment-need-editor { grid-template-columns:1fr; }
  .topbar-actions .header-auth-button { display:inline-flex !important; min-width:0; padding-inline:10px; }
}

#recruitmentNeedsAdmin { display:grid; gap:14px; }
.public-readonly-note { margin-top:10px; }

/* v2.8.20: faster public shell + real notifications */
.profile-mini { margin-top:auto; }
.notification b[hidden] { display:none !important; }
.notification.has-unread { border-color:rgba(231,101,48,.72); box-shadow:0 0 0 1px rgba(231,101,48,.08),0 0 22px rgba(195,58,24,.16); }
.notification-scrim { position:fixed; inset:0; z-index:79; background:rgba(0,0,0,.48); backdrop-filter:blur(2px); }
.notification-scrim[hidden],.notification-drawer[hidden] { display:none !important; }
.notification-drawer { position:fixed; z-index:80; top:0; right:0; width:min(430px,94vw); height:100vh; display:flex; flex-direction:column; border-left:1px solid rgba(207,139,60,.34); background:linear-gradient(165deg,rgba(24,18,14,.995),rgba(7,7,6,.995)); box-shadow:-24px 0 80px rgba(0,0,0,.58); animation:notificationIn .18s ease-out; }
@keyframes notificationIn { from { transform:translateX(24px); opacity:.55; } to { transform:none; opacity:1; } }
.notification-drawer-heading { display:flex; align-items:center; justify-content:space-between; gap:18px; padding:24px 22px 18px; border-bottom:1px solid var(--line); }
.notification-drawer-heading span { color:var(--gold); font-size:8px; letter-spacing:.14em; text-transform:uppercase; }
.notification-drawer-heading h2 { margin:4px 0 0; color:#edd9be; font:500 24px var(--serif); }
.notification-close { font-size:28px; cursor:pointer; }
.notification-drawer-tools { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:11px 18px; border-bottom:1px solid rgba(255,255,255,.045); color:var(--muted); font-size:9px; }
.notification-list { min-height:0; overflow:auto; flex:1; padding:8px; }
.notification-row { width:100%; display:grid; grid-template-columns:38px minmax(0,1fr) 9px; gap:11px; align-items:start; padding:13px 12px; border:1px solid transparent; border-radius:9px; color:inherit; background:transparent; text-align:left; cursor:pointer; }
.notification-row:hover { border-color:rgba(188,126,59,.26); background:rgba(255,255,255,.022); }
.notification-row.unread { background:linear-gradient(90deg,rgba(126,47,20,.18),rgba(255,255,255,.014)); }
.notification-kind-icon { width:36px; height:36px; display:grid; place-items:center; border:1px solid rgba(199,133,59,.24); border-radius:9px; color:var(--gold-soft); background:rgba(0,0,0,.22); font-size:15px; }
.notification-copy strong,.notification-copy span,.notification-copy small { display:block; }
.notification-copy strong { color:#e5d2bb; font-size:11px; }
.notification-copy span { margin-top:4px; color:#a99a8b; font-size:9px; line-height:1.45; }
.notification-copy small { margin-top:6px; color:#6f655d; font-size:8px; }
.notification-unread-dot { width:7px; height:7px; margin-top:7px; border-radius:50%; background:var(--ember-soft); box-shadow:0 0 10px rgba(220,75,32,.65); }
.notification-row:not(.unread) .notification-unread-dot { opacity:0; }
.notification-signin { padding:24px 18px; color:var(--muted); font-size:10px; line-height:1.55; text-align:center; }
.notification-signin .button { margin-top:12px; }
@media (max-width:650px) { .notification-drawer { width:100vw; } .notification-scrim { display:none; } }

/* v2.8.21 - finishing-line readability and full-size gallery */
.modal.modal-wide { width:min(1120px,97vw); }
.modal.modal-gallery { width:min(1540px,98vw); max-height:96vh; padding:16px; }
.modal.modal-gallery .gallery-lightbox { grid-template-columns:minmax(0,1fr) minmax(250px,320px); gap:22px; }
.modal.modal-gallery .gallery-lightbox-image { display:grid; place-items:center; min-height:62vh; max-height:88vh; overflow:auto; border:1px solid rgba(197,148,79,.32); background:#050504; }
.modal.modal-gallery .gallery-lightbox img { width:auto; max-width:100%; height:auto; max-height:86vh; border:0; border-radius:0; object-fit:contain; cursor:zoom-in; }
.modal.modal-gallery .gallery-lightbox h2 { font-size:29px; }
.modal.modal-gallery .gallery-lightbox p { font-size:12px; line-height:1.55; }

/* Keep the established font family, but raise the tiny UI sizes into a readable range. */
body { font-size:14px; }
.main-nav .nav-button, .profile-mini, .sync-card, .panel p, .panel small, .admin-help, .modal-muted { font-size:11px; line-height:1.5; }
.panel-heading > div > span, .eyebrow, label > span, .performance-stat span, .performance-table-heading > div > span, .dossier-performance-card span { font-size:9px; }
button, input, select, textarea, .button, .text-button { font-size:11px; }
table th { font-size:9px; letter-spacing:.09em; }
table td { font-size:11.5px; line-height:1.45; }
.table-member-button small, .table-subtext, .sync-cell small, .achievement-card p, .achievement-progress, .dossier-performance-card small, .reputation-leader small { font-size:9.5px; }
.detail-grid span, .recovery-summary span { font-size:9px; }
.detail-grid strong { font-size:12px; }
.calendar-event, .calendar-weekdays span { font-size:9px; }
.performance-instance-tabs small, .performance-primary-controls label > span, .performance-table-note, .performance-stat small { font-size:9px; }
.performance-primary-controls select, .performance-class, .performance-spec-row button { font-size:10px; }
.guild-lock strong { font-size:12px; }

.officer-ledger-wrap { display:grid; gap:12px; }
.officer-ledger-toolbar { display:flex; flex-wrap:wrap; gap:8px; align-items:center; }
.officer-ledger-table { max-height:58vh; overflow:auto; border:1px solid var(--line); }
.officer-ledger-table table { min-width:820px; }
.ledger-positive { color:#9dcc8e; font-weight:700; }
.ledger-negative { color:#ef9987; font-weight:700; }
.rank-access-grid { display:grid; gap:10px; }
.rank-access-row { display:grid; grid-template-columns:minmax(220px,1fr) minmax(190px,260px); gap:14px; align-items:center; padding:13px; border:1px solid var(--line); background:rgba(0,0,0,.18); }
.rank-access-row strong, .rank-access-row small { display:block; }
.rank-access-row small { margin-top:4px; color:var(--muted); }

@media(max-width:760px){
  .modal.modal-gallery .gallery-lightbox { grid-template-columns:1fr; }
  .modal.modal-gallery .gallery-lightbox-image { min-height:auto; }
  .rank-access-row { grid-template-columns:1fr; }
}
/* v2.8.21 readability pass for formerly 6-8px helper text. */
.filter-count span,.member-cell span,.sync-pill,.calendar-more,.form-field > span,
.armory-sync-strip small,.dossier-stats span,.dossier-stats article small,
.dossier-progress-summary span,.achievement-dossier-filters button,.gear-slot-copy small,
.gear-slot-copy em,.gear-character-core > span,.gear-completion small,.gear-stat-heading span,
.gear-stat-grid span,.gear-audit-box span,.gear-audit-box small,.gear-item-modal span,
.gear-item-details span,.gear-talent-summary span,.gear-tooltip-heading small,.gear-tooltip-source,
.performance-hero-copy > span,.performance-integration-note > div > span,.performance-source small,
.source-indicator,.performance-instance-tabs small,.performance-primary-controls label > span,
.performance-stat span,.performance-stat small,.performance-table-heading > div > span,
.performance-table-note,.performance-integration-note p,.dossier-performance-card span,
.dossier-performance-card small,.dossier-performance-note,.community-hero > div > span,
.thread-detail-heading > span,.filter-count,.thread-category,.thread-row p,.thread-row small,
.thread-detail-heading small,.thread-replies article span,.gallery-upload-fields label span,
.gallery-toolbar > span,.gallery-tile small,.gallery-lightbox span,.gear-audit-box a,
.reputation-leader small,.discord-roster-group li small,.leaderboard-bracket-row span,
.weekly-bracket-preview-empty > small,.roster-lane > header small,.roster-lane > p,
.roster-member-profile > span,.calendar-group-chip small,.calendar-options-heading span,
.calendar-color-option small,.calendar-agenda-day > header span,.calendar-agenda-row small,
.calendar-options-note span,.recruitment-need small,.recruitment-priority,
.guild-application-form label > span,.recruitment-admin-group > header span,
.identity-claim-card span,.verified-identity-row span,.identity-claim-card small,
.verified-identity-row small,.recruitment-applicant small,.notification-drawer-heading span,
.notification-copy small { font-size:9px; line-height:1.45; }
.roster-card-field select,.performance-class,.performance-spec-row button { font-size:10px; }

/* v2.8.22 - comfortable desktop readability pass.
   Preserve the Ashen typefaces and spacing language, but stop using 7-10px copy as normal UI text. */
body { font-size:16px; }
.main-nav .nav-button { font-size:15px; line-height:1.35; padding:14px 13px; }
.brand span,.page-heading span,.panel-heading span,.achievement-summary > div:first-child > span,
.leaderboard-toolbar > div > span,.admin-card span,.eyebrow,label > span { font-size:10.5px; }
.panel p,.panel small,.admin-help,.modal-muted,.profile-mini,.sync-card { font-size:12.5px; line-height:1.58; }
button,input,select,textarea,.button,.text-button { font-size:14px; line-height:1.35; }
.button { min-height:42px; padding:10px 16px; }
table th { font-size:10.5px; letter-spacing:.09em; }
table td { font-size:13.5px; line-height:1.5; }
.member-cell span,.table-member-button small,.table-subtext,.sync-cell small,.achievement-card p,
.achievement-progress,.dossier-performance-card small,.reputation-leader small { font-size:11.5px; }
.calendar-event,.calendar-weekdays span,.agenda-entry span,.event-row p,.event-status span { font-size:11.5px; }
.calendar-navigation button,.view-switch button { font-size:12px; }
.gear-slot-copy small,.gear-slot-copy em,.gear-character-core > span,.gear-completion small,
.gear-stat-heading span,.gear-stat-heading strong,.gear-stat-grid span,.gear-audit-box span,
.gear-audit-box small,.gear-item-modal span,.gear-item-details span,.gear-item-details strong,
.gear-talent-summary span,.gear-tooltip-heading small,.gear-tooltip-source { font-size:11px; }
.gear-slot-copy strong { font-size:12.5px; }
.gear-tooltip-lines span { font-size:13px; line-height:1.5; }
.performance-hero-copy > span,.performance-integration-note > div > span,.performance-source small,
.source-indicator,.performance-instance-tabs small,.performance-primary-controls label > span,
.performance-stat span,.performance-stat small,.performance-table-heading > div > span,
.performance-table-note,.performance-integration-note p,.dossier-performance-card span,
.dossier-performance-note { font-size:11px; }
.performance-primary-controls select,.performance-class,.performance-spec-row button { font-size:12px; }
.community-hero > div > span,.thread-detail-heading > span,.thread-category,.thread-row small,
.thread-detail-heading small,.thread-replies article span,.gallery-upload-fields label span,
.gallery-toolbar > span,.gallery-tile small,.gallery-lightbox span,.notification-drawer-heading span,
.notification-copy small { font-size:10.5px; }
.thread-row p,.thread-body,.thread-replies article p,.community-empty,.notification-copy span { font-size:12px; }
.filter-count,.filter-count span,.roster-lane > header small,.roster-lane > p,.roster-member-profile > span,
.calendar-group-chip small,.calendar-options-heading span,.calendar-color-option small,.calendar-agenda-day > header span,
.calendar-agenda-row small,.calendar-options-note span,.recruitment-need small,.recruitment-priority,
.guild-application-form label > span,.recruitment-admin-group > header span,.identity-claim-card span,
.verified-identity-row span,.identity-claim-card small,.verified-identity-row small,.recruitment-applicant small { font-size:10.5px; }
.roster-card-field select,.discord-roster-group li small,.discord-roster-group li strong { font-size:12px; }
@media (max-width:820px) {
  body { font-size:15px; }
  .main-nav .nav-button { font-size:14px; }
}

/* v2.8.22 readability follow-through: sidebar and collection controls should never read as microtext. */
.sidebar .brand strong { font-size:18px; }
.sidebar .brand span { font-size:11px; }
.profile-mini strong { font-size:13.5px; }
.profile-mini small { font-size:11.5px; }
.category-button { font-size:13px; padding:12px 13px; }
.achievement-copy h3 { font-size:16px; }
.achievement-points { font-size:19px; }
.achievement-points small,.achievement-progress span { font-size:10.5px; }
.achievement-icon-fallback { display:grid; place-items:center; width:100%; height:100%; font-style:normal; }

/* v2.8.24a — fail-fast dossier fallback for members without synchronized addon data */
.dossier-unavailable-state { max-width:760px; margin:0 auto; padding:34px; text-align:center; }
.dossier-unavailable-state .tag { display:inline-flex; margin-bottom:12px; }
.dossier-unavailable-state h2 { margin:0 0 10px; }
.dossier-unavailable-state p { max-width:580px; margin:0 auto 20px; line-height:1.65; }
