:root{
  --bg:#080a0f;--panel:#10131a;--panel2:#151923;--line:#252a36;--text:#f4f6f8;--muted:#9299aa;
  --accent:#ef4444;--accent2:#ff6b5f;--good:#34d399;--warn:#fbbf24;--bad:#fb7185;--radius:16px;
  --sidebar:244px;--shadow:0 20px 50px rgba(0,0,0,.32);
}
*{box-sizing:border-box}html,body{margin:0;background:var(--bg);color:var(--text);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;min-height:100%;}
button,input,select,textarea{font:inherit}button{cursor:pointer}.hidden{display:none!important}
.app-shell{min-height:100vh;display:grid;grid-template-columns:var(--sidebar) 1fr}.sidebar{position:sticky;top:0;height:100vh;background:#0b0e14;border-right:1px solid var(--line);display:flex;flex-direction:column;padding:16px 12px;z-index:20;transition:width .22s ease}.brand-row{height:58px;display:flex;align-items:center;gap:11px;padding:0 4px 12px;border-bottom:1px solid var(--line)}.brand-copy{display:flex;flex-direction:column;line-height:1.05}.brand-copy strong{font-size:12px;letter-spacing:.08em}.brand-copy small{font-size:9px;color:var(--muted);letter-spacing:.16em;margin-top:5px}.icon-btn{width:38px;height:38px;border:1px solid var(--line);background:var(--panel);color:var(--text);border-radius:11px}.nav-list{display:flex;flex-direction:column;gap:5px;padding:16px 0;flex:1;overflow:auto}.nav-item{display:grid;grid-template-columns:22px 1fr 20px;align-items:center;gap:10px;min-height:43px;border:1px solid transparent;border-radius:11px;background:transparent;color:#b9bfca;padding:0 10px;user-select:none;transition:.16s ease}.nav-item:hover{background:#111620;color:#fff}.nav-item.active{background:#171b24;border-color:#2a303d;color:#fff}.nav-item.dragging{opacity:.45;transform:scale(.98)}.nav-item.drop-before{box-shadow:0 -2px 0 var(--accent)}.drag-handle{opacity:.45;cursor:grab;font-weight:900;letter-spacing:-3px}.nav-icon{font-size:14px;text-align:center}.sidebar-footer{border-top:1px solid var(--line);padding-top:12px;display:grid;gap:10px}.turn-mini{display:flex;gap:9px;align-items:center;padding:8px}.turn-mini>span{width:9px;height:9px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 5px rgba(239,68,68,.11)}.turn-mini small{display:block;color:var(--muted);font-size:9px;letter-spacing:.12em}.turn-mini strong{font-size:12px}.main-shell{min-width:0;padding:0 26px 40px}.topbar{min-height:92px;display:flex;align-items:center;justify-content:space-between;gap:20px;border-bottom:1px solid var(--line);position:sticky;top:0;background:rgba(8,10,15,.94);backdrop-filter:blur(12px);z-index:10}.eyebrow{font-size:10px;color:var(--accent2);letter-spacing:.18em;font-weight:800}.topbar h1,.modal h2{margin:5px 0 0;font-size:25px;letter-spacing:-.03em}.top-actions{display:flex;align-items:center;gap:9px}.primary-btn,.secondary-btn{height:38px;border-radius:10px;padding:0 13px;border:1px solid var(--line);font-weight:700;font-size:12px}.primary-btn{background:var(--accent);border-color:var(--accent);color:white}.primary-btn:hover{background:#ff5555}.secondary-btn{background:#12161f;color:#dfe3ea}.secondary-btn:hover{background:#191e29}.provider-pill{display:flex;align-items:center;gap:8px;height:34px;padding:0 11px;border:1px solid var(--line);border-radius:999px;color:var(--muted);font-size:11px}.status-dot{width:7px;height:7px;border-radius:50%;background:var(--good)}
.page{padding-top:24px}.dashboard-grid{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(320px,.8fr);gap:16px}.layout-grid{display:grid;grid-template-columns:repeat(12,1fr);gap:16px}.panel{background:linear-gradient(180deg,#11151d,#0e1118);border:1px solid var(--line);border-radius:var(--radius);box-shadow:0 10px 25px rgba(0,0,0,.12);min-width:0;overflow:hidden;position:relative}.panel[data-w="12"]{grid-column:span 12}.panel[data-w="8"]{grid-column:span 8}.panel[data-w="7"]{grid-column:span 7}.panel[data-w="6"]{grid-column:span 6}.panel[data-w="5"]{grid-column:span 5}.panel[data-w="4"]{grid-column:span 4}.panel-head{display:flex;align-items:center;justify-content:space-between;padding:14px 15px;border-bottom:1px solid var(--line)}.panel-head h3{margin:0;font-size:12px;letter-spacing:.02em}.panel-body{padding:15px}.panel.editable{outline:1px dashed #4b5563;cursor:grab}.panel.editable::after{content:'DRAG';position:absolute;right:10px;top:10px;font-size:8px;letter-spacing:.14em;color:#8b93a3;background:#1b202b;padding:4px 6px;border-radius:5px}.panel.dragging{opacity:.45}.player-cards{display:grid;grid-template-columns:1fr 1fr;gap:10px}.player-card{padding:14px;border:1px solid var(--line);border-radius:13px;background:#0c1016}.player-card.active{border-color:rgba(239,68,68,.65);box-shadow:inset 0 0 0 1px rgba(239,68,68,.18)}.player-top{display:flex;align-items:center;justify-content:space-between;gap:12px}.player-name{font-weight:850;font-size:15px}.location{color:var(--muted);font-size:11px;margin-top:3px}.turn-badge{font-size:9px;letter-spacing:.12em;background:#2a1517;color:#ff8d8d;border:1px solid #512126;padding:5px 7px;border-radius:999px}.stat-row{display:grid;grid-template-columns:62px 1fr 38px;align-items:center;gap:8px;margin-top:12px;font-size:10px;color:var(--muted)}.bar{height:7px;background:#1d222c;border-radius:999px;overflow:hidden}.bar>span{display:block;height:100%;background:#dfe3ea;border-radius:inherit;transition:width .3s ease}.stat-row.health .bar>span{background:var(--accent)}.stat-row.stamina .bar>span{background:#60a5fa}.stat-row.energy .bar>span{background:#f59e0b}.stat-row.hunger .bar>span{background:#a78bfa}.quick-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:12px}.quick-stat{background:#0b0e13;border:1px solid #202631;border-radius:10px;padding:9px}.quick-stat small{display:block;color:var(--muted);font-size:8px;text-transform:uppercase;letter-spacing:.1em}.quick-stat strong{font-size:12px}.action-box{display:grid;gap:10px}.action-box textarea{width:100%;resize:vertical;min-height:92px;background:#090c11;border:1px solid var(--line);border-radius:13px;color:white;padding:13px;outline:none}.action-box textarea:focus{border-color:#4b5563}.action-actions{display:flex;align-items:center;justify-content:space-between;gap:10px}.hint{color:var(--muted);font-size:10px}.roll-shell{display:flex;gap:14px;align-items:center}.die{width:74px;height:74px;border-radius:18px;display:grid;place-items:center;background:radial-gradient(circle at 40% 30%,#252b38,#11151d 68%);border:1px solid #323947;box-shadow:inset 0 1px 0 rgba(255,255,255,.04),0 16px 25px rgba(0,0,0,.25);font-size:28px;font-weight:900}.die.rolling{animation:dieRoll .65s cubic-bezier(.2,.8,.2,1)}@keyframes dieRoll{0%{transform:rotate(0) scale(.9)}35%{transform:rotate(105deg) scale(1.08)}70%{transform:rotate(235deg) scale(.94)}100%{transform:rotate(360deg) scale(1)}}.roll-copy small{color:var(--muted);font-size:9px;letter-spacing:.12em}.roll-copy strong{display:block;font-size:14px;margin-top:4px}.story-feed{display:grid;gap:10px;max-height:560px;overflow:auto;padding-right:5px}.story-card{border:1px solid var(--line);border-radius:12px;padding:12px;background:#0c0f15;animation:storyIn .24s ease both}@keyframes storyIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.story-meta{display:flex;justify-content:space-between;color:var(--muted);font-size:9px;letter-spacing:.08em}.story-card p{margin:9px 0 0;font-size:12px;line-height:1.55}.roll-tag{color:#fff;font-weight:800}.delta-line{display:flex;flex-wrap:wrap;gap:6px;margin-top:9px}.delta{font-size:9px;border:1px solid var(--line);border-radius:999px;padding:4px 7px;color:#c9ced8}.delta.bad{border-color:#4d252b;color:#ff9b9b}.delta.good{border-color:#1f4a3c;color:#72e2b9}.empty{padding:30px;text-align:center;color:var(--muted);font-size:11px}.inventory-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:10px}.item-card{background:#0c1016;border:1px solid var(--line);border-radius:12px;padding:12px;min-height:88px;display:flex;flex-direction:column;justify-content:space-between}.item-icon{font-size:22px}.item-name{font-size:11px;font-weight:750}.item-qty{font-size:9px;color:var(--muted)}
#map{height:calc(100vh - 155px);min-height:520px;border-radius:16px;border:1px solid var(--line);overflow:hidden}.leaflet-container{background:#0a0d12}.leaflet-control-attribution{font-size:8px!important}.map-overlay{position:absolute;z-index:500;left:14px;top:14px;background:#0c1016e8;border:1px solid var(--line);border-radius:12px;padding:10px 12px;box-shadow:var(--shadow)}.map-wrap{position:relative}.map-player{font-size:10px}.map-player strong{display:block;font-size:12px;margin-top:2px}.location-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px}.location-card{padding:14px;border:1px solid var(--line);background:#0d1117;border-radius:13px}.location-card h3{margin:0;font-size:13px}.location-card p{font-size:11px;color:var(--muted);line-height:1.5}.table{width:100%;border-collapse:collapse}.table th,.table td{text-align:left;padding:11px 10px;border-bottom:1px solid var(--line);font-size:11px}.table th{color:var(--muted);font-size:9px;text-transform:uppercase;letter-spacing:.1em}.settings-grid{display:grid;grid-template-columns:minmax(260px,.7fr) minmax(0,1.3fr);gap:16px}.setting-group{padding:15px}.setting-group h3{font-size:12px;margin:0 0 10px}.setting-group p{color:var(--muted);font-size:10px;line-height:1.5}.setting-row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:11px 0;border-top:1px solid var(--line)}.setting-row:first-of-type{border-top:0}.setting-row label{font-size:11px}.toggle{appearance:none;width:36px;height:20px;background:#252b36;border-radius:999px;position:relative;transition:.2s}.toggle:checked{background:var(--accent)}.toggle::after{content:'';position:absolute;width:14px;height:14px;left:3px;top:3px;border-radius:50%;background:white;transition:.2s}.toggle:checked::after{transform:translateX(16px)}.sortable-pages{display:grid;gap:7px}.sortable-page{display:grid;grid-template-columns:18px 1fr;align-items:center;gap:8px;padding:10px;border:1px solid var(--line);border-radius:10px;background:#0d1117;cursor:grab;font-size:11px}.modal{width:min(620px,calc(100vw - 28px));background:#10141b;color:var(--text);border:1px solid #2c3340;border-radius:18px;padding:0;box-shadow:0 30px 90px rgba(0,0,0,.65)}.modal::backdrop{background:rgba(0,0,0,.7);backdrop-filter:blur(4px)}.modal form{padding:20px}.setup-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:20px}.setup-grid label{display:grid;gap:6px;font-size:10px;color:var(--muted)}.setup-grid input,.setup-grid select{height:42px;border-radius:10px;border:1px solid var(--line);background:#0a0d12;color:white;padding:0 10px;outline:none}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:18px}.muted{color:var(--muted);font-size:10px}.collapsed{--sidebar:72px}.collapsed .brand-copy,.collapsed .nav-label,.collapsed .drag-handle,.collapsed .turn-mini>div,.collapsed .sidebar-footer .secondary-btn{display:none}.collapsed .nav-item{grid-template-columns:1fr;justify-items:center;padding:0}.collapsed .brand-row{justify-content:center}.collapsed .turn-mini{justify-content:center}
@media(max-width:980px){.dashboard-grid{grid-template-columns:1fr}.panel[data-w]{grid-column:span 12}.settings-grid{grid-template-columns:1fr}.app-shell{grid-template-columns:72px 1fr}.sidebar{--sidebar:72px}.brand-copy,.nav-label,.drag-handle,.turn-mini>div,.sidebar-footer .secondary-btn{display:none}.nav-item{grid-template-columns:1fr;justify-items:center;padding:0}.brand-row{justify-content:center}.turn-mini{justify-content:center}.topbar{align-items:flex-start;padding:17px 0}.top-actions{flex-wrap:wrap;justify-content:flex-end}}
@media(max-width:680px){.app-shell{display:block}.sidebar{position:fixed;left:0;right:0;bottom:0;top:auto;width:100%;height:64px;border-right:0;border-top:1px solid var(--line);padding:7px;z-index:100}.brand-row,.sidebar-footer{display:none}.nav-list{padding:0;display:grid;grid-auto-flow:column;grid-auto-columns:minmax(62px,1fr);overflow-x:auto;gap:4px}.nav-item{min-height:48px}.nav-label,.drag-handle{display:none}.main-shell{padding:0 14px 82px}.topbar{position:relative}.topbar h1{font-size:22px}.provider-pill,.top-actions .secondary-btn{display:none}.player-cards{grid-template-columns:1fr}.setup-grid{grid-template-columns:1fr}.quick-grid{grid-template-columns:repeat(2,1fr)}#map{height:62vh;min-height:430px}.panel-body{padding:12px}}
