:root{font-family:Inter,"Segoe UI",Arial,sans-serif;color:#e7eee6;background:#0b1313;font-synthesis:none}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;}body{overflow:hidden}button,input{font:inherit}button{cursor:pointer}button:focus-visible,input:focus-visible{outline:2px solid #d2b977;outline-offset:2px}
[hidden]{display:none!important}.app{height:100vh;display:flex;flex-direction:column;min-width:830px}
.topbar{height:76px;flex:none;padding:0 29px;display:flex;align-items:center;justify-content:space-between;background:#111d1c;border-bottom:1px solid #31413a;gap:20px}
.brand{display:flex;align-items:center;gap:13px}.brand-seal{height:42px;width:42px;background:#29382e;border:1px solid #b9a479;color:#d2b977;border-radius:50%;display:grid;place-items:center;font-size:28px}
.brand-title{font-family:Georgia,serif;font-size:20px;letter-spacing:.13em;font-weight:700;color:#eedec1}.brand-title span{color:#b7c8b7;font-family:Inter,"Segoe UI",sans-serif;font-size:10px;letter-spacing:.22em;margin-left:9px}
.brand-sub{color:#86978e;font-size:9px;letter-spacing:.23em;margin-top:4px}.top-center{display:flex;align-items:center;gap:9px;color:#aab8ac;font-size:12px}.status-dot{height:7px;width:7px;border-radius:50%;background:#6eb88c;box-shadow:0 0 12px #6eb88c}.status-dot.offline{background:#df7c75;box-shadow:0 0 10px #df7c75}.top-separator{color:#65746b}.top-actions{display:flex;gap:12px;align-items:center}
.readonly-pill{color:#a4d1a9;border:1px solid #3a5946;border-radius:40px;font-size:10px;letter-spacing:.12em;padding:9px 11px;background:#1a2b23}
.outline,.icon-button{background:#1a2724;color:#d6e3d5;border:1px solid #3b4b45;border-radius:6px;padding:8px 12px}.outline:hover,.icon-button:hover,.map-controls button:hover{background:#2c4037}.small{font-size:12px}.icon-button{font-size:20px;padding:4px 12px}
.dashboard{display:grid;grid-template-columns:270px minmax(440px,1fr) 318px;min-height:0;flex:1}
.sidebar{background:#111c1c;min-height:0;display:flex;flex-direction:column}.left{border-right:1px solid #2b3a35}.right{border-left:1px solid #2b3a35}
.sidebar-header{padding:27px 20px 19px}.eyebrow{font-size:10px;color:#bfac80;font-weight:700;letter-spacing:.18em}.sidebar-header h2,.detail-section h2{font-family:Georgia,serif;font-size:25px;font-weight:500;margin:11px 0;color:#f0e5ce}
.sidebar-header p,.sidebar-bottom p,.workspace-header p{color:#879d90;font-size:12px;line-height:1.6;margin:0}
.search-wrap{margin:0 16px 17px;border:1px solid #31483e;background:#172623;border-radius:8px;display:flex;align-items:center;padding:10px 12px;gap:8px;color:#c5b484;font-size:22px}
.search-wrap input{min-width:0;width:100%;border:0;background:transparent;color:#ecf2e8;font-size:12px;outline:0}.search-wrap input::placeholder{color:#758a7d}
.tabs{display:flex;gap:3px;padding:0 15px 11px;border-bottom:1px solid #263831}.tabs button{flex:1;border:0;background:transparent;color:#81968b;font-size:12px;padding:10px 6px;border-bottom:2px solid transparent}.tabs button.active{color:#f1deb4;border-color:#cbb071}.tabs span{font-size:10px;opacity:.65}
.entity-list{overflow:auto;flex:1;padding:12px 10px}.entity-row{display:flex;align-items:center;gap:11px;padding:11px 10px;border-radius:8px;width:100%;background:none;border:1px solid transparent;text-align:left;color:#c6d5cb}.entity-row:hover{background:#1a2b27}.entity-row.selected{border-color:#786c4a;background:#27342c}
.avatar{height:38px;width:38px;flex:none;display:grid;place-items:center;border-radius:10px;background:#263c32;border:1px solid #416551;color:#c8e4b4;font-size:17px}.avatar.creature{background:#372b32;color:#e4b8a3;border-color:#755154}
.entity-text{min-width:0;flex:1}.entity-text strong{display:block;font-weight:600;color:#ebefe6;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.entity-text small{display:block;color:#93a99c;font-size:10px;margin-top:5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.entity-row .entity-arrow{color:#7b8b7e;font-size:17px}
.sidebar-bottom{padding:18px 19px;border-top:1px solid #293b33;background:#15221e}.sidebar-bottom .eyebrow{margin-bottom:7px}#channelStats{color:#e8d9b7;font-weight:600;font-size:12px}
.workspace{display:flex;flex-direction:column;min-height:0;min-width:0;background:#101a19}
.workspace-header{display:flex;justify-content:space-between;align-items:center;padding:23px 28px 16px;gap:18px}
.workspace-header h1{font-family:Georgia,serif;font-weight:500;font-size:28px;margin:7px 0 5px;color:#f1e4cd}
.map-controls{display:flex;gap:4px}.map-controls button{height:31px;width:31px;border:1px solid #3b5046;background:#22332d;color:#e2e8da;border-radius:5px}
.statbar{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;padding:0 24px 15px}
.stat{background:#192622;border:1px solid #293e32;border-radius:8px;min-height:68px;padding:12px 13px}
.stat strong{font-family:Georgia,serif;display:block;color:#e9dfc8;font-size:24px;font-weight:500}.stat span{font-size:10px;color:#93a595;text-transform:uppercase;letter-spacing:.08em}
.map-pane{flex:1;min-height:235px;position:relative;overflow:hidden;margin:0 23px;border:1px solid #344b3d;border-radius:12px;background:radial-gradient(ellipse at 55% 46%,#293b2d 0,#1c3029 40%,#142521 83%);box-shadow:inset 0 0 90px #101c1c}
.map-pane:before{content:"";position:absolute;inset:0;pointer-events:none;background:repeating-linear-gradient(0deg,transparent 0px,transparent 45px,#e6d7aa07 46px),repeating-linear-gradient(90deg,transparent 0px,transparent 45px,#e6d7aa07 46px);opacity:.7}
.map-decoration{position:absolute;width:330px;height:330px;border:1px solid #b3b18411;border-radius:50%;pointer-events:none}.map-decoration-a{top:-170px;right:-50px}.map-decoration-b{bottom:-195px;left:-110px}
#worldMap{position:relative;z-index:1;width:100%;height:100%;min-height:270px;display:block;user-select:none;touch-action:manipulation}
.map-label{position:absolute;z-index:2;font-family:Georgia,serif;color:#c7b78b;letter-spacing:.13em;font-size:12px;pointer-events:none}.map-label.top-left{left:23px;top:19px}.map-label span{display:block;font:9px Inter,"Segoe UI",sans-serif;letter-spacing:.17em;margin-top:5px;color:#8fa498}
.map-legend{position:absolute;z-index:3;bottom:17px;left:20px;display:flex;flex-wrap:wrap;gap:12px;background:#10211bd9;border:1px solid #425647;border-radius:6px;padding:8px 11px;color:#c3d1bf;font-size:10px}.map-legend span{display:flex;align-items:center;gap:6px}.legend-point{width:9px;height:9px;border-radius:50%;display:inline-block}.npc-point{background:#99caa8}.monster-point{background:#e9a38e}.location-point{background:#d4bd87}.path-point{background:#e2b35e}
.map-corner{position:absolute;z-index:2;bottom:20px;right:18px;color:#d6c997;font-family:Georgia,serif;font-size:15px;text-align:center;pointer-events:none}.map-corner span{display:block;font-size:26px}.map-scale{font:8px Inter,"Segoe UI",sans-serif;letter-spacing:.13em;color:#8d9d8b;margin-top:6px}
.timeline{flex:none;height:174px;min-height:174px;margin:14px 24px 19px;background:#172420;border:1px solid #2d4037;border-radius:10px;padding:14px 15px}
.timeline-head{display:flex;justify-content:space-between;gap:10px}.timeline-head h3,.feed-title h3{font-family:Georgia,serif;color:#e6d7b9;font-size:18px;font-weight:500;margin:4px 0 3px}.timeline-actions{display:flex;align-items:center;gap:4px}
.movement-detail{color:#dce7d6;font-size:11px;margin:8px 0}.movement-strip{display:flex;gap:6px;overflow-x:auto;max-width:100%;padding-bottom:4px}
.movement-item{flex:0 0 auto;color:#a7bfad;border:1px solid #365043;background:#23342d;border-radius:5px;padding:6px 9px;font-size:10px;max-width:190px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.movement-item.active{border-color:#c4a76d;color:#f2dfb5;background:#394331}
.timeline-disclaimer{color:#718b7d;font-size:9px;margin-top:8px}
.detail-section{padding:27px 20px 16px;border-bottom:1px solid #293a33}
.detail-section h2{font-size:23px;line-height:1.1}.detail-subtitle{color:#94a99e;font-size:12px;line-height:1.5}
.detail-body{max-height:36%;overflow:auto;padding:16px 19px;color:#d5dfd3;font-size:12px;border-bottom:1px solid #273c32}
.detail-label{font-size:10px;letter-spacing:.12em;color:#b9a67c;text-transform:uppercase;margin:16px 0 8px}
.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px}.detail-cell{background:#1b2b26;border:1px solid #30483d;border-radius:6px;padding:9px}.detail-cell small{display:block;color:#8fa393;font-size:10px;margin-bottom:5px}.detail-cell b{font-weight:600;color:#eee6d7}
.progress{height:5px;border-radius:6px;overflow:hidden;background:#33453a;margin:7px 0 2px}.progress i{height:100%;display:block;background:#8fb89d}
.detail-item{border-left:2px solid #768e75;padding:8px 0 8px 10px;margin-bottom:7px;color:#bfcfc2;font-size:11px;line-height:1.5;background:#1c292413}.detail-item small{display:block;color:#b6a479;margin-bottom:4px}
.tag{display:inline-block;padding:3px 7px;border:1px solid #4d6254;border-radius:4px;margin:3px 3px 0 0;font-size:10px;color:#d1dabb}
.muted{color:#8da396;font-size:11px;line-height:1.6}.feed{display:flex;min-height:0;flex:1;flex-direction:column;padding:19px}.feed-title{display:flex;justify-content:space-between;align-items:center;margin-bottom:9px}.live-mark{font-size:9px;color:#92bb9e;letter-spacing:.09em}
.event-list{min-height:0;overflow:auto;padding-right:2px}.event-item{display:flex;gap:10px;padding:10px 0;border-bottom:1px solid #24362d}.event-time{font-size:10px;color:#bea973;flex:none;width:45px}.event-text{font-size:11px;color:#becfc0;line-height:1.45}.event-text b{display:block;color:#e6ebdd;font-weight:600;font-size:11px;margin-bottom:3px}.event-text small{color:#819c8d}
.footer{height:33px;flex:none;background:#121d1a;border-top:1px solid #2d4035;color:#84998c;font-size:10px;display:flex;align-items:center;justify-content:space-between;padding:0 25px;gap:15px}
.map-edge{stroke:#9caa82;stroke-opacity:.26;stroke-width:2.6;fill:none;stroke-linecap:round;stroke-dasharray:5 9}
.map-edge.active{stroke:#e8bb6b;stroke-width:6;stroke-opacity:.9;stroke-dasharray:0;filter:drop-shadow(0 0 7px #f4c66e)}
.map-place-circle{fill:#243c32;stroke:#cdb887;stroke-width:2.5}.map-place-circle.selected{fill:#43563b;stroke:#f7dfab;stroke-width:4}
.map-place-icon{font-size:19px;text-anchor:middle;dominant-baseline:central;pointer-events:none}
.map-place-label{fill:#d6e4d5;font-size:15px;font-weight:600;text-anchor:middle;paint-order:stroke;stroke:#12271e;stroke-width:4;stroke-linejoin:round;pointer-events:none}
.map-place-count{fill:#d5c395;font-size:11px;text-anchor:middle;pointer-events:none}
.map-place{cursor:pointer}.map-place:hover .map-place-circle{stroke:#fff1c6;stroke-width:4}
.map-channel-indicator{fill:#79d7aa;stroke:#11231a;stroke-width:2}
.map-actor{cursor:pointer}.map-actor circle{fill:#274d3e;stroke:#a7d5b0;stroke-width:2.5}.map-actor.creature circle{fill:#704344;stroke:#f0b59d}.map-actor.selected circle{stroke:#ffe4ac;stroke-width:4;filter:drop-shadow(0 0 6px #efc47b)}.map-actor text{fill:#fff2dd;font-size:12px;text-anchor:middle;dominant-baseline:central;pointer-events:none}
.login-backdrop{position:fixed;inset:0;z-index:99;display:grid;place-items:center;background:radial-gradient(ellipse at 52% 32%,#284634,#0c1715 68%);padding:25px}
.login-backdrop:before{position:absolute;content:"✧";font-family:Georgia,serif;font-size:530px;line-height:1;color:#b8a47710;pointer-events:none}
.login-panel{position:relative;background:#152521f5;border:1px solid #667557;padding:45px;max-width:440px;width:100%;border-radius:15px;box-shadow:0 35px 100px #060e0da8}
.login-emblem{font-family:Georgia,serif;color:#d7bf82;font-size:48px;margin-bottom:12px}
.login-panel h1{font-family:Georgia,serif;font-weight:500;font-size:35px;color:#eee1c8;margin:13px 0}
.login-panel p{color:#a0b5a6;line-height:1.6;font-size:13px}.login-panel label{display:block;font-size:12px;color:#e8ddc2;margin:28px 0 9px}
.login-panel input{width:100%;padding:12px 14px;color:#e3ede1;background:#1f322b;border:1px solid #50674f;border-radius:7px}
.login-panel .primary{width:100%;margin-top:16px;background:#c8b17a;color:#17221e;font-weight:700;display:flex;justify-content:space-between;padding:14px;border:0;border-radius:7px}
.login-panel .primary:hover{background:#edd5a0}.form-error{color:#f19b92!important;min-height:17px}
.read-only-note{font-size:10px;color:#91ab9b;text-align:center;border-top:1px solid #34483c;padding-top:18px}
::-webkit-scrollbar{height:6px;width:6px}::-webkit-scrollbar-thumb{background:#3c5749;border-radius:10px}
@media(max-width:1180px){.dashboard{grid-template-columns:220px minmax(400px,1fr) 270px}.brand-title span{display:none}.top-center{display:none}.map-legend{max-width:300px}.statbar{gap:5px;padding-left:12px;padding-right:12px}.workspace-header{padding-left:15px}.map-pane{margin:0 12px}.timeline{margin-left:12px;margin-right:12px}}
@media(max-width:850px){body{overflow:auto}.app{min-width:0;height:auto;min-height:100vh}.dashboard{display:flex;flex-direction:column}.left,.right{border:0}.entity-list{display:flex;overflow-x:auto;max-height:170px}.entity-row{min-width:195px}.sidebar-bottom{display:none}.workspace{min-height:650px}.map-pane{height:480px;flex:auto}.right{min-height:470px}.detail-body{max-height:280px}.feed{min-height:250px}.footer{flex-wrap:wrap;height:auto;padding:12px}.statbar{grid-template-columns:repeat(3,1fr)}.topbar{padding:0 14px}.readonly-pill{display:none}}
