@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Space+Grotesk:wght@400;500;600;700&display=swap');
:root{color-scheme:dark;--bg:#101714;--panel:#18221d;--line:#2d3b32;--muted:#9caf9f;--lime:#d4ef84}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:#edf2e9;font:14px 'DM Sans',sans-serif}header{height:76px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 4vw}.brand{color:var(--lime);font-size:28px;display:flex;gap:12px;align-items:center}.brand span{font:600 15px 'Space Grotesk';letter-spacing:2px}.badge,.eyebrow{font-size:11px;letter-spacing:2px;color:var(--lime)}.badge{border:1px solid var(--line);padding:9px 14px;border-radius:30px}main{max-width:1600px;margin:auto;padding:36px 4vw}.intro{display:flex;align-items:center;justify-content:space-between;margin-bottom:30px}h1{font:500 clamp(32px,4vw,52px)/1.08 'Space Grotesk';margin:18px 0}h1 em{color:var(--lime);font-style:normal}p,.hint{color:var(--muted);line-height:1.6}.save{font-size:12px;border-left:1px solid var(--line);padding:14px 24px}.save p{margin-bottom:0}.dot{display:inline-block;width:7px;height:7px;background:var(--lime);border-radius:50%;margin-right:7px}.toolbar{display:flex;gap:10px;align-items:end;flex-wrap:wrap;border:1px solid var(--line);padding:16px;border-radius:12px;background:var(--panel);margin-bottom:28px}label{display:grid;gap:6px;color:var(--muted);font-size:12px}button,input,select,textarea{font:inherit;border:1px solid var(--line);background:#111a15;color:#edf2e9;border-radius:7px;padding:10px 12px}button{cursor:pointer;font-weight:600}button:hover{border-color:var(--lime)}button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--lime);outline-offset:2px}.primary{background:var(--lime);color:#1b2813;border-color:var(--lime)}#count,#size{width:66px}.workspace{display:grid;grid-template-columns:280px 1fr;gap:28px}.sectionhead{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:18px}h2{font:500 19px 'Space Grotesk';margin:0}.sectionhead p{margin:6px 0 0;font-size:12px}.sectionhead span{color:var(--lime)}aside{border-right:1px solid var(--line);padding-right:24px}#search{width:100%}.hint{font-size:11px;margin:10px 0 18px}#roster{max-height:610px;overflow:auto;min-height:80px}.member{border:1px solid var(--line);border-left:3px solid #91a5d4;background:#1c2821;padding:10px;border-radius:7px;margin-bottom:7px;cursor:grab;display:flex;align-items:center;justify-content:space-between;gap:6px}.member[data-role=Healer]{border-left-color:#cce986}.member[data-role=Tank]{border-left-color:#e4b585}.member[data-role=Support]{border-left-color:#c3a5e5}.member.selected{outline:2px solid var(--lime)}.member strong{font-size:13px}.member small{display:block;font-size:10px;color:var(--muted);margin-top:4px}.member button{padding:2px 5px;background:transparent;border:0;font-size:12px;color:var(--muted)}.assigned{opacity:.5}.wide{width:100%;margin-top:9px}.quiet{background:transparent;color:var(--muted)}#teams{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:15px}.team{background:var(--panel);border:1px solid var(--line);border-radius:10px;overflow:hidden}.teamtop{padding:14px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.teamtop b{font:500 14px 'Space Grotesk'}.teamtop small{color:var(--muted);font-size:11px}.slots{padding:10px}.slot{min-height:56px;border:1px dashed #3b4b40;border-radius:7px;margin-bottom:6px;display:flex;align-items:center;justify-content:center;color:#819486;font-size:11px;cursor:pointer}.slot .member{width:100%;margin:0;min-height:54px}.warning{font-size:10px;color:#e4bc82;padding:0 14px 12px}.healthy{color:var(--lime)}.footer{font-size:11px;margin-top:32px;border-top:1px solid var(--line);padding-top:20px}dialog{border:1px solid var(--line);background:var(--panel);color:white;border-radius:12px;width:min(440px,92vw);padding:26px}dialog::backdrop{background:#000a}dialog label{margin-top:15px}.actions{display:flex;gap:10px;justify-content:end;margin-top:20px}textarea{width:100%;resize:vertical}#toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:var(--lime);color:#182214;padding:12px 20px;border-radius:8px;display:none;z-index:5}@media(min-width:1500px){#teams{grid-template-columns:repeat(4,minmax(0,1fr))}}@media(max-width:1100px){#teams{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:750px){.intro{display:block}.save{display:none}.workspace{grid-template-columns:1fr}aside{border:0;padding:0}#roster{max-height:260px}#teams{grid-template-columns:repeat(2,minmax(0,1fr))}.toolbar{gap:7px}.toolbar button{font-size:11px}main{padding:24px 4vw}.brand span{font-size:12px}}@media(max-width:450px){#teams{grid-template-columns:1fr}}@media print{header,.intro,.toolbar,aside,.footer,.sectionhead button,.member button{display:none}body{background:white;color:black}.workspace{display:block}#teams{grid-template-columns:repeat(3,1fr)}.team{break-inside:avoid;background:white;color:black}.member{background:white;color:black}}

/* Class families follow the supplied game badge chart. */
.member,.member[data-role]{border-left:4px solid var(--class-color);border-top-color:color-mix(in srgb,var(--class-color) 30%,#29352f);border-right-color:color-mix(in srgb,var(--class-color) 30%,#29352f);border-bottom-color:color-mix(in srgb,var(--class-color) 30%,#29352f);background:linear-gradient(100deg,color-mix(in srgb,var(--class-color) 15%,#17211c),#1a241f);gap:8px;padding:9px 8px;cursor:grab}
.class-icon{display:block;flex:0 0 34px;width:34px;height:34px;background-image:url('class-icons.png');background-size:751.8px auto;background-repeat:no-repeat;border-radius:7px}
.class-icon.unknown{background-image:none;display:grid;place-items:center;color:var(--class-color);font-size:25px}
.member-info{flex:1;min-width:0}.member strong{display:block;overflow-wrap:anywhere;line-height:1.25;color:#f4f6f3}.member small.class-name{color:var(--class-color);font-size:11px;font-weight:700;line-height:1.25;margin-top:4px}.member small.member-role{font-size:9px;color:#a9b7ad;margin-top:3px}.gear-score{font-size:11px;font-weight:700;color:#f4cf76;white-space:nowrap;font-variant-numeric:tabular-nums}.member button{flex:0 0 auto}.assigned{opacity:.78}.assigned .member{border-left-style:dashed}.slot .member{min-height:74px}.slot{min-height:74px}
@media print{.member,.member[data-role]{background:white}.member strong{color:black}.member small.class-name{color:black}.gear-score{color:black}}

.danger{color:#ffaaa4;border-color:#79443f;background:#38231f}.danger:hover{border-color:#ffaaa4;background:#482923}

.section-tabs{display:flex;gap:8px;flex-wrap:wrap;margin:-8px 0 24px}.section-tabs button{font-size:12px}.filters{display:grid;gap:9px;margin-top:12px}.filters select{width:100%;min-width:0}.class-breakdown{margin:16px 0;color:var(--muted);font-size:12px}.class-breakdown summary{cursor:pointer}#breakdown{display:flex;gap:6px;flex-wrap:wrap;margin-top:12px}#breakdown span{padding:5px 8px;background:#1b2620;border:1px solid var(--line);border-radius:6px;font-size:10px}#breakdown b{margin-left:6px}.dungeon-tools{display:flex;align-items:center;gap:20px;padding:16px;border:1px solid var(--line);border-radius:10px;margin-bottom:24px}.dungeon-tools[hidden]{display:none}.dungeon-tools label{display:flex;align-items:center;gap:8px}.dungeon-tools span{color:var(--muted);font-size:11px}
#shareModal{width:96vw;max-width:1500px;max-height:94vh;background:#fff;color:#111;padding:26px}#shareTitle{font-size:28px}.share-controls{display:flex;align-items:center;gap:12px}.share-controls p{color:#444;font-size:12px}.share-section{margin-top:28px}.share-section h2{color:#111;margin-bottom:14px}.share-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}#shareContent .team{background:white;border-color:#999;color:#111}#shareContent .teamtop{border-color:#ccc}#shareContent .teamtop small{color:#333}#shareContent .member{background:#f4f5f7;border-color:#aaa;border-left-color:var(--class-color);cursor:default}#shareContent .member strong{color:#111}#shareContent .member small.class-name{color:#222}#shareContent .member small.member-role{color:#444}#shareContent .gear-score{color:#654000}#shareContent .member button{display:none}#shareContent .slot{border-color:#ccc;color:#555;cursor:default}#shareContent .warning{color:#834500}#shareContent .healthy{color:#21632c}#shareContent .member.selected{outline:0}
@media(max-width:750px){.share-grid{grid-template-columns:1fr}.dungeon-tools{flex-wrap:wrap}.share-controls{flex-wrap:wrap}}
@media print{body>header,body>main,body>dialog:not(#shareModal),#toast{display:none!important}#shareModal{display:block!important;position:static!important;overflow:visible!important;max-height:none!important;width:100%!important;max-width:none!important;border:0;padding:0;margin:0;color:#000;background:white}#shareModal::backdrop{display:none}.share-controls{display:none!important}.share-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.share-section{break-before:auto}#shareContent .member small.class-name{color:#222}#shareContent .team{break-inside:avoid}#shareContent .class-icon{print-color-adjust:exact}#shareContent .member{print-color-adjust:exact}.share-section h2{break-after:avoid}}

[hidden]{display:none!important}.main-tabs{display:flex;gap:8px;margin:0 0 28px;border-bottom:1px solid var(--line);padding-bottom:16px}.metric-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:24px}.metric{border:1px solid var(--line);border-left:3px solid var(--lime);border-radius:10px;background:var(--panel);padding:16px}.metric:nth-child(3n){border-left-color:#8ee0ce}.metric:nth-child(3n + 1){border-left-color:#b99aff}.metric p{font-size:10px;text-transform:uppercase;letter-spacing:1px;margin:0 0 10px}.metric strong{font:600 23px 'Space Grotesk';overflow-wrap:anywhere}.dashboard-grid{display:grid;grid-template-columns:1.15fr 1fr;gap:20px}.dash-panel{padding:20px;background:var(--panel);border:1px solid var(--line);border-radius:10px;min-width:0}.dash-panel h2{margin-bottom:20px;font-size:16px}.chart-row{display:grid;grid-template-columns:110px minmax(30px,1fr) 26px 108px;gap:9px;align-items:center;padding:9px 0;font-size:11px}.chart-row small{color:var(--muted);text-align:right;font-size:10px}.bar-track{height:7px;background:#0f1813;border-radius:10px;overflow:hidden}.bar-track i{display:block;height:100%;background:#70d5bd;border-radius:10px}.top-row{display:grid;grid-template-columns:22px minmax(0,1fr) 100px 60px;align-items:center;gap:8px;border-bottom:1px solid var(--line);padding:14px 0;font-size:11px}.top-row b{overflow-wrap:anywhere}.top-row strong{text-align:right;color:#f4cf76}.health-row{display:flex;justify-content:space-between;gap:16px;padding:15px 0;border-bottom:1px solid var(--line);font-size:12px}.health-row span{color:var(--muted);text-align:right}.share-controls{flex-wrap:wrap}#discordModal{width:min(620px,94vw);max-height:92vh}#discordModal label{margin-top:15px}#discordModal input,#discordModal select{width:100%;min-width:0}#discordModal h3{margin-top:26px;font-size:16px}#discordStatus{color:var(--lime);font-size:13px}.reminder-row{display:flex;justify-content:space-between;align-items:center;border-top:1px solid var(--line);padding:14px 0;gap:12px;font-size:12px}.reminder-row small{display:block;color:var(--muted);margin-top:5px}button:disabled{opacity:.5;cursor:wait}#reminderList>p{font-size:12px}
@media(max-width:1000px){.dashboard-grid{grid-template-columns:1fr}.metric-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:600px){.metric-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.metric strong{font-size:20px}.chart-row{grid-template-columns:82px minmax(20px,1fr) 20px 85px;gap:5px;font-size:10px}.chart-row small{font-size:9px}.dash-panel{padding:14px}.top-row{grid-template-columns:20px minmax(0,1fr) 80px 48px;font-size:10px}.health-row{font-size:10px}}

.access-controls{display:flex;align-items:center;gap:10px}.access-controls button{font-size:11px}.sync-bar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:24px;font-size:11px;color:var(--muted)}.sync-bar button{padding:6px 9px;font-size:10px}#accessError{color:#ffaaa4;font-size:12px}#passwordStatus{color:var(--lime);font-size:12px}
html[data-access="viewer"] #add,html[data-access="viewer"] #csvImport,html[data-access="viewer"] #import,html[data-access="viewer"] #demo,html[data-access="viewer"] #removeAll,html[data-access="viewer"] #balance,html[data-access="viewer"] #dungeonFill,html[data-access="viewer"] #clear,html[data-access="viewer"] #export,html[data-access="viewer"] #restore,html[data-access="viewer"] #copy,html[data-access="viewer"] #share,html[data-access="viewer"] #discord,html[data-access="viewer"] .member button,html[data-access="viewer"] .toolbar label:has(#count),html[data-access="viewer"] .toolbar label:has(#size),html[data-access="viewer"] #dungeonTools,html[data-access="viewer"] #roster~p.hint{display:none!important}
html[data-access="viewer"] .member,html[data-access="viewer"] .slot{cursor:default}html[data-access="viewer"] .member.selected{outline:none}#accessModal,#passwordModal{max-height:92vh}#accessModal input,#accessModal select,#passwordModal input,#passwordModal select{width:100%}@media(max-width:750px){header{height:auto;min-height:76px;flex-wrap:wrap;padding-top:14px;padding-bottom:14px;gap:12px}.access-controls{flex-wrap:wrap}.access-controls .badge{font-size:9px;padding:6px 9px}}

/* Dark Knights: obsidian, silver and the violet edge of the guild crest. */
:root{--bg:#0e0c13;--panel:#18141f;--line:#342a40;--muted:#ada3b8;--lime:#c09ae8}
body{background:radial-gradient(ellipse at 80% 0%,#251630 0,transparent 38%),var(--bg);color:#f0edf5}header{background:#100d15cc}.brand{gap:12px;color:#e7dfef}.brand img{background:#fff;border-radius:9px;border:1px solid #6d4a86;object-fit:contain}.brand span{font-size:16px;letter-spacing:2.6px}.brand small{display:block;font-size:9px;letter-spacing:1.7px;color:var(--muted);margin-top:5px}.dark-knights-hero{padding:12px 0 26px;margin-bottom:22px;gap:28px}.dark-knights-hero h1{font-size:clamp(32px,4.8vw,64px);letter-spacing:-2px;line-height:1;margin:16px 0}.dark-knights-hero h1 em{background:linear-gradient(100deg,#eee8f5,#b88cdb);background-clip:text;-webkit-background-clip:text;color:transparent}.guild-motto{font-size:clamp(15px,1.8vw,21px);color:#dbcee7;font-style:italic;margin:0 0 12px}.guild-subtitle{font-size:12px;color:var(--muted)}.guild-crest{padding:10px;border:1px solid #6b4c85;border-radius:20px;background:#fff;box-shadow:0 0 64px #aa66d41c}.guild-crest img{display:block;object-fit:contain;width:164px;height:164px}.primary{background:linear-gradient(120deg,#d5b9ef,#ae83d4);border-color:#c19ae3;color:#201029}button,input,select,textarea{background:#100d16;border-color:var(--line)}button:hover{border-color:#d4b7ee}.member,.member[data-role]{background:linear-gradient(100deg,color-mix(in srgb,var(--class-color) 13%,#17131e),#1b1622)}#breakdown span{background:#201a29}.bar-track{background:#100c17}.bar-track i{background:#b594d1}.metric{border-left-color:#b58ad8}.metric:nth-child(3n){border-left-color:#d8d1df}.metric:nth-child(3n + 1){border-left-color:#b58ad8}.slot{border-color:#41334d}.healthy{color:#c8dfb2}.danger{background:#362027;color:#ffb4b4}.event-schedule{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:20px 22px;margin:0 0 26px;border:1px solid #5d426f;border-left:4px solid #bb91dc;border-radius:12px;background:linear-gradient(110deg,#24192e,#17131f)}.schedule-display{display:grid;gap:10px}.schedule-display .eyebrow{margin:0;font-size:9px;letter-spacing:2px}.schedule-display>strong{font:500 18px 'Space Grotesk';line-height:1.45}.schedule-badge{display:inline-block;width:fit-content;border-radius:20px;padding:5px 10px;border:1px solid #584367;font-size:10px;white-space:nowrap;color:#dfc4f3;background:#34223f}.schedule-badge.past{color:#ffd0a3;background:#3e2a1d;border-color:#765035}.schedule-badge.unset{color:#c0b6c9;background:#28212e;border-color:#493c55}.event-schedule.past{border-left-color:#daa268}.schedule-editors{display:flex;align-items:center;gap:12px}.schedule-editors input{min-width:120px}.schedule-editors>span{color:var(--muted);font-size:10px;line-height:1.6}.dashboard-schedule{margin-bottom:24px}.schedule-list-row{display:flex;justify-content:space-between;align-items:center;gap:18px;padding:13px 0;border-top:1px solid var(--line)}.schedule-list-row b{font-size:12px}.schedule-list-row small{display:block;color:var(--muted);font-size:11px;margin-top:6px}.share-brand{display:flex;align-items:center;gap:16px;margin:22px 0}.share-brand h1{margin:0 0 6px!important}.share-brand p{margin:0 0 8px;color:#53435e;font-size:12px}.share-brand strong{font-size:13px;color:#372044}.share-brand img{object-fit:contain}html[data-access="viewer"] .schedule-editors{display:none}
@media(max-width:1000px){.event-schedule{align-items:flex-start;flex-direction:column}.schedule-editors{flex-wrap:wrap}}@media(max-width:750px){.intro.dark-knights-hero{display:flex;align-items:center}.guild-crest{padding:6px;border-radius:12px}.guild-crest img{width:92px;height:92px}.dark-knights-hero h1{font-size:32px;letter-spacing:-1px}.guild-subtitle{display:none}.guild-motto{font-size:13px}.dark-knights-hero .eyebrow{font-size:8px;line-height:1.6}.schedule-display>strong{font-size:15px}.schedule-list-row{align-items:flex-start;flex-wrap:wrap}.brand span{font-size:13px}.share-brand{align-items:flex-start}}
@media print{.share-brand{display:flex!important}.share-brand strong{color:#222}.share-brand img{print-color-adjust:exact}}

.party-heading{display:grid;gap:5px;min-width:0}.party-heading b{overflow-wrap:anywhere;font-size:15px!important;line-height:1.35}.party-heading>span{color:#ccb6de;font-size:12px;overflow-wrap:anywhere;line-height:1.35}.party-heading small{font-size:10px!important;color:var(--muted)}.rename-party{flex:0 0 auto;padding:6px 9px;align-self:flex-start;color:#ddc6ef;background:#2b2035;border:1px solid #574067}.teamtop{align-items:flex-start;gap:10px}#partyLabelsModal input{width:100%}#partyLabelsModal{max-height:90vh}#partyLabelError{color:#ffb4b4;font-size:12px}html[data-access="viewer"] [data-label-edit]{display:none!important}#shareContent .party-heading>span{color:#4b365d}#shareContent .party-heading b{color:#111}#shareContent .party-heading small{color:#444}@media print{.rename-party{display:none!important}.party-heading>span{color:#333!important}}

/* Let the transparent guild crest sit directly on the dark theme. */
.brand img{background:transparent;border:0;border-radius:0}.guild-crest{background:transparent;border:0;box-shadow:none;padding:0}.guild-crest img{filter:drop-shadow(0 0 18px #ac70d52b)}
