@import "https://fonts.googleapis.com/css2?family=Bebas+Neue&family=Share+Tech+Mono&family=VT323&display=swap";:root{--bg:#0a0a0c;--bg-raised:#111116;--bg-panel:#16161c;--border:#2a2a35;--border-glow:#f5a62340;--amber:#f5a623;--amber-dim:#a06910;--amber-glow:#f5a62326;--cyan:#00e5ff;--cyan-dim:#007a8a;--cyan-glow:#00e5ff1f;--magenta:#ff2d78;--magenta-dim:#8a0038;--magenta-glow:#ff2d781f;--rust:#c0392b;--rust-dim:#6b1e15;--text-primary:#e8e8d0;--text-secondary:#8a8a72;--text-dim:#4a4a3a;--text-amber:var(--amber);--text-cyan:var(--cyan);--font-display:"Bebas Neue", sans-serif;--font-mono:"Share Tech Mono", monospace;--font-terminal:"VT323", monospace;--radius:4px;--radius-lg:8px;--sidebar-w:220px}.scanlines:after{content:"";pointer-events:none;z-index:9999;background:repeating-linear-gradient(0deg,#0000,#0000 2px,#00000014 2px 4px);position:fixed;inset:0}.glow-amber{text-shadow:0 0 8px var(--amber), 0 0 20px var(--amber-dim)}.glow-border-amber{box-shadow:0 0 0 1px var(--border), 0 0 12px var(--amber-glow)}.glow-cyan{text-shadow:0 0 8px var(--cyan), 0 0 20px var(--cyan-dim)}.glow-border-cyan{box-shadow:0 0 0 1px var(--border), 0 0 12px var(--cyan-glow)}@keyframes flicker{0%,97%,to{opacity:1}98%{opacity:.85}99%{opacity:1}99.5%{opacity:.7}}.flicker{animation:6s infinite flicker}@keyframes glitch{0%{clip-path:inset(40% 0 60%);transform:translate(-4px)}20%{clip-path:inset(10% 0 85%);transform:translate(4px)}40%{clip-path:inset(70% 0 10%);transform:translate(-2px)}60%{clip-path:inset(20% 0 75%);transform:translate(2px)}80%{clip-path:inset(50% 0 40%);transform:translate(-3px)}to{clip-path:inset(0% 0 100%);transform:translate(0)}}.glitch-text{position:relative}.glitch-text:before,.glitch-text:after{content:attr(data-text);opacity:0;position:absolute;inset:0}.glitch-text:hover:before{color:var(--cyan);opacity:.7;animation:.3s steps(2,end) forwards glitch}.glitch-text:hover:after{color:var(--magenta);opacity:.5;animation:.3s steps(2,end) reverse forwards glitch}@keyframes blink{0%,to{opacity:1}50%{opacity:0}}.cursor:after{content:"█";color:var(--amber);font-family:var(--font-terminal);animation:1s step-end infinite blink}@keyframes page-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.page-enter{animation:.2s ease-out page-in}.dm-accent{border-left:3px solid var(--magenta);padding-left:8px}.player-accent{border-left:3px solid var(--cyan);padding-left:8px}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{background:var(--bg);color:var(--text-primary);font-family:var(--font-mono);-webkit-font-smoothing:antialiased;font-size:14px;line-height:1.5}a{color:var(--amber);text-decoration:none}a:hover{color:var(--text-primary)}button{cursor:pointer;font-family:var(--font-mono)}input,textarea,select{background:var(--bg-raised);border:1px solid var(--border);border-radius:var(--radius);color:var(--text-primary);font-family:var(--font-mono);outline:none;padding:6px 10px;font-size:14px;transition:border-color .15s}input:focus,textarea:focus,select:focus{border-color:var(--amber)}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:var(--bg)}::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--amber-dim)}.panel{background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--radius);padding:16px}.btn{background:var(--amber);border-radius:var(--radius);color:var(--bg);font-family:var(--font-mono);letter-spacing:.05em;text-transform:uppercase;border:none;padding:6px 14px;font-size:13px;font-weight:600;transition:opacity .15s}.btn:hover{opacity:.85}.btn:disabled{opacity:.4;cursor:not-allowed}.btn-ghost{border:1px solid var(--border);border-radius:var(--radius);color:var(--text-secondary);font-family:var(--font-mono);text-transform:uppercase;background:0 0;padding:6px 14px;font-size:13px;transition:border-color .15s,color .15s}.btn-ghost:hover{border-color:var(--amber);color:var(--amber)}.btn-danger{background:var(--rust);border-radius:var(--radius);color:var(--text-primary);font-family:var(--font-mono);text-transform:uppercase;border:none;padding:6px 14px;font-size:13px;transition:opacity .15s}.btn-danger:hover{opacity:.85}.empty-state{color:var(--text-dim);font-family:var(--font-terminal);text-align:center;padding:40px;font-size:18px}.loading-state{color:var(--text-secondary);font-family:var(--font-terminal);text-align:center;padding:40px;font-size:18px}.sidebar{width:var(--sidebar-w);min-width:var(--sidebar-w);background:var(--bg-panel);border-right:1px solid var(--border);flex-direction:column;height:100vh;display:flex;position:sticky;top:0;overflow-y:auto}.sidebar__title{font-family:var(--font-display);color:var(--amber);letter-spacing:.08em;border-bottom:1px solid var(--border);padding:24px 16px 20px;font-size:28px}.sidebar__nav{flex-direction:column;flex:1;gap:2px;padding:12px 0;display:flex}.sidebar__link{color:var(--text-secondary);letter-spacing:.08em;border-left:3px solid #0000;justify-content:space-between;align-items:center;padding:8px 16px;font-size:12px;transition:color .15s,background .15s;display:flex}.sidebar__link:hover{color:var(--text-primary);background:var(--bg-raised)}.sidebar__link--active{color:var(--amber);border-left-color:var(--amber);background:var(--amber-glow)}.sidebar__badge{background:var(--magenta);color:var(--text-primary);font-size:10px;font-family:var(--font-terminal);text-align:center;border-radius:10px;min-width:18px;padding:1px 5px}.sidebar__footer{border-top:1px solid var(--border);flex-direction:column;gap:8px;padding:12px 16px;display:flex}.sidebar__username{color:var(--text-secondary);font-size:12px;font-family:var(--font-terminal);font-size:16px}.sidebar__logout{width:100%;padding:5px 8px;font-size:11px}.app-shell{height:100vh;display:flex;overflow:hidden}.app-content{flex-direction:column;flex:1;display:flex;overflow-y:auto}.login-page{background:var(--bg);justify-content:center;align-items:center;height:100vh;padding:24px;display:flex}.login-box{background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--radius-lg);width:100%;max-width:400px;padding:40px;box-shadow:0 0 60px #f5a6230f}.login-box__header{text-align:center;margin-bottom:32px}.login-box__title{font-family:var(--font-display);letter-spacing:.1em;color:var(--amber);font-size:52px;display:block}.login-box__sub{color:var(--text-secondary);font-family:var(--font-terminal);letter-spacing:.12em;margin-top:4px;font-size:16px}.login-box__form{flex-direction:column;gap:16px;display:flex}.login-field{flex-direction:column;gap:6px;display:flex}.login-field__label{color:var(--text-secondary);letter-spacing:.1em;font-size:11px}.login-field input{width:100%}.login-box__error{color:var(--rust);font-family:var(--font-terminal);font-size:14px}.login-box__submit{letter-spacing:.12em;width:100%;margin-top:8px;padding:10px;font-size:14px}.topbar{background:var(--bg-panel);border-bottom:1px solid var(--border);z-index:10;align-items:center;gap:12px;height:48px;padding:0 24px;display:flex;position:sticky;top:0}.topbar__title{font-family:var(--font-display);color:var(--text-primary);letter-spacing:.06em;flex:1;font-size:20px}.topbar__dm-badge{background:var(--magenta-dim);border:1px solid var(--magenta);border-radius:var(--radius);color:var(--magenta);font-family:var(--font-terminal);letter-spacing:.1em;padding:1px 8px;font-size:14px}.party-hp{flex-direction:column;gap:8px;display:flex}.party-hp__row{align-items:center;gap:10px;display:flex}.party-hp__name{color:var(--text-primary);font-family:var(--font-mono);text-align:left;min-width:100px;text-decoration:underline;-webkit-text-decoration-color:var(--amber-dim);text-decoration-color:var(--amber-dim);background:0 0;border:none;font-size:13px;transition:color .15s}.party-hp__name:hover{color:var(--amber)}.party-hp__bar-wrap{flex:1;align-items:center;gap:8px;display:flex}.party-hp__bar{background:var(--bg-raised);border-radius:2px;flex:1;height:6px;overflow:hidden}.party-hp__label{font-family:var(--font-terminal);text-align:right;min-width:60px;font-size:14px}.skill-matrix{max-height:300px;overflow:hidden}.skill-matrix__scroll{max-height:300px;overflow:auto}.skill-matrix__table{border-collapse:collapse;width:100%;font-size:11px}.skill-matrix__skill-col{color:var(--text-dim);text-align:left;letter-spacing:.06em;background:var(--bg-panel);padding:3px 6px;font-size:9px;position:sticky;left:0}.skill-matrix__char-col{color:var(--text-secondary);text-align:center;white-space:nowrap;text-overflow:ellipsis;max-width:60px;padding:3px 8px;font-size:10px;overflow:hidden}.skill-matrix__skill-name{color:var(--text-secondary);white-space:nowrap;background:var(--bg-panel);padding:2px 6px;font-size:11px;position:sticky;left:0}.skill-matrix__skill-name--um5{color:var(--cyan-dim)}.skill-matrix__cell{text-align:center;padding:2px 8px}.skill-matrix__dot{background:var(--border);border-radius:50%;width:8px;height:8px;display:inline-block}.skill-matrix__dot--filled{background:var(--amber);box-shadow:0 0 4px var(--amber-glow)}.faction-overview{overflow:hidden}.faction-overview__scroll{max-height:250px;overflow:auto}.faction-overview__table{border-collapse:collapse;width:100%;font-size:11px}.faction-overview__faction-col,.faction-overview__char-col{color:var(--text-dim);letter-spacing:.06em;padding:3px 6px;font-size:9px}.faction-overview__faction-name{color:var(--text-secondary);white-space:nowrap;background:var(--bg-panel);padding:3px 6px;font-size:11px;position:sticky;left:0}.faction-overview__cell{text-align:center;padding:3px 8px}.faction-overview__dot{border-radius:50%;width:8px;height:8px;display:inline-block}.modal-backdrop{z-index:1000;background:#000000b3;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.modal{background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--radius-lg);width:560px;max-width:100%;max-height:90vh;animation:.15s ease-out page-in;overflow-y:auto;box-shadow:0 0 40px #000c}.modal--wide{width:900px}.modal__header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:14px 20px;display:flex}.modal__title{font-family:var(--font-display);letter-spacing:.06em;color:var(--amber);font-size:18px}.modal__close{color:var(--text-secondary);background:0 0;border:none;padding:4px;font-size:18px;line-height:1;transition:color .15s}.modal__close:hover{color:var(--text-primary)}.modal__body{padding:20px}.portrait-upload{border:2px dashed var(--border);border-radius:var(--radius);cursor:pointer;width:110px;height:140px;transition:border-color .15s;position:relative;overflow:hidden}.portrait-upload:hover{border-color:var(--amber)}.portrait-upload__img{object-fit:cover;width:100%;height:100%}.portrait-upload__placeholder{color:var(--text-dim);font-family:var(--font-terminal);letter-spacing:.05em;justify-content:center;align-items:center;height:100%;font-size:14px;display:flex}.sheet-section{background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:16px;padding:16px}.sheet-section__title{font-family:var(--font-display);letter-spacing:.08em;color:var(--amber);border-bottom:1px solid var(--border);margin-bottom:14px;padding-bottom:8px;font-size:16px}.identity-grid{gap:16px;display:flex}.identity-fields{flex-direction:column;flex:1;gap:8px;display:flex}.field-row{flex-wrap:wrap;gap:10px;display:flex}.field{flex-direction:column;flex:1;gap:4px;min-width:80px;display:flex}.field--sm{flex:none;max-width:80px}.field--xs{flex:none;max-width:60px}.field label{color:var(--text-secondary);letter-spacing:.1em;font-size:10px}.field input,.field select,.field textarea{width:100%;padding:4px 8px;font-size:13px}.field textarea{resize:vertical}.ability-grid{grid-template-columns:repeat(6,1fr);gap:10px;display:grid}.ability-block{background:var(--bg-raised);border:1px solid var(--border);border-radius:var(--radius);text-align:center;flex-direction:column;gap:4px;padding:10px 6px;display:flex}.ability-block__label{color:var(--text-secondary);letter-spacing:.1em;font-size:10px}.ability-block__score input{border:none;border-bottom:1px solid var(--border);color:var(--text-primary);font-family:var(--font-display);text-align:center;background:0 0;border-radius:0;width:100%;padding:2px;font-size:28px}.ability-block__mod{color:var(--amber);font-family:var(--font-terminal);font-size:18px}.ability-block__save{color:var(--text-secondary);justify-content:center;align-items:center;gap:4px;font-size:10px;display:flex}.skills-list{grid-template-columns:1fr 1fr;gap:4px;display:grid}.skill-row{border-radius:var(--radius);align-items:center;gap:8px;padding:3px 6px;display:flex}.skill-row:hover{background:var(--bg-raised)}.skill-row__check{accent-color:var(--amber);flex-shrink:0;width:14px;height:14px}.skill-row__label{color:var(--text-primary);flex:1;font-size:12px}.skill-row__label--um5{color:var(--cyan)}.skill-row__total{color:var(--amber);font-family:var(--font-terminal);text-align:right;min-width:28px;font-size:15px}.combat-grid{grid-template-columns:repeat(auto-fill,minmax(100px,1fr));gap:10px;display:grid}.combat-stat{background:var(--bg-raised);border:1px solid var(--border);border-radius:var(--radius);text-align:center;padding:10px}.combat-stat__label{color:var(--text-secondary);letter-spacing:.08em;margin-bottom:4px;font-size:10px}.combat-stat__value{font-family:var(--font-display);color:var(--text-primary);font-size:28px}.combat-stat__value input{border:none;border-bottom:1px solid var(--border);color:var(--text-primary);font-family:var(--font-display);text-align:center;background:0 0;width:100%;padding:2px;font-size:28px}.hp-row{align-items:flex-end;gap:10px;margin-top:10px;display:flex}.hp-row .field{min-width:70px}.weapons-table{border-collapse:collapse;width:100%}.weapons-table th{color:var(--text-secondary);letter-spacing:.08em;text-align:left;border-bottom:1px solid var(--border);padding:4px 8px;font-size:10px}.weapons-table td{padding:4px 8px}.weapons-table td input{border:none;border-bottom:1px solid var(--border);background:0 0;border-radius:0;width:100%;padding:2px 4px;font-size:13px}.currency-row{align-items:center;gap:12px;display:flex}.currency-symbol{color:var(--amber);font-family:var(--font-display);font-size:24px}.currency-value{font-family:var(--font-display);color:var(--text-primary);font-size:32px}.currency-btns{flex-direction:column;gap:2px;display:flex}.currency-btns button{background:var(--bg-raised);border:1px solid var(--border);color:var(--text-primary);border-radius:var(--radius);padding:1px 8px;font-size:16px;line-height:1}.currency-btns button:hover{border-color:var(--amber);color:var(--amber)}.rte{border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.rte__toolbar{background:var(--bg-raised);border-bottom:1px solid var(--border);gap:2px;padding:6px 8px;display:flex}.rte__btn{border-radius:var(--radius);color:var(--text-secondary);background:0 0;border:1px solid #0000;min-width:28px;padding:3px 6px;font-size:12px;font-weight:600;transition:color .15s,border-color .15s}.rte__btn:hover{color:var(--text-primary)}.rte__btn--active{border-color:var(--amber-dim);color:var(--amber)}.rte__content{background:var(--bg-raised);min-height:120px;padding:10px 12px}.rte__content .ProseMirror{color:var(--text-primary);font-family:var(--font-mono);outline:none;font-size:14px;line-height:1.6}.rte__content .ProseMirror h2{font-family:var(--font-display);color:var(--amber);margin:12px 0 6px;font-size:20px}.rte__content .ProseMirror h3{font-family:var(--font-display);color:var(--text-primary);margin:10px 0 4px;font-size:16px}.rte__content .ProseMirror ul{color:var(--text-primary);padding-left:20px}.rte__content .ProseMirror p{margin-bottom:8px}.rte__content .ProseMirror strong{color:var(--text-primary)}.rte__content .ProseMirror em{color:var(--text-secondary)}.rte__content .ProseMirror p.is-editor-empty:first-child:before{color:var(--text-dim);content:attr(data-placeholder);float:left;pointer-events:none;height:0}.faction-rep-panel{padding:20px 24px}.faction-rep-panel__title{font-family:var(--font-display);letter-spacing:.06em;color:var(--amber);margin-bottom:16px;font-size:18px}.faction-rep-list{flex-direction:column;gap:8px;display:flex}.faction-rep-row{background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--radius);justify-content:space-between;align-items:center;padding:10px 14px;display:flex}.faction-rep-row__name{font-family:var(--font-mono);font-size:13px}.faction-rep-row__tier{border-radius:var(--radius);font-family:var(--font-terminal);letter-spacing:.08em;border:1px solid;padding:2px 10px;font-size:14px}.faction-rep-row__tier--clickable{cursor:pointer;transition:opacity .15s}.faction-rep-row__tier--clickable:hover{opacity:.75}.inv-panel{flex-direction:column;height:100%;display:flex;overflow:hidden}.inv-panel__toolbar{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:10px 20px;display:flex}.inv-sort{border:1px solid var(--border);border-radius:var(--radius);color:var(--text-secondary);font-family:var(--font-mono);letter-spacing:.06em;background:0 0;padding:3px 8px;font-size:10px;transition:color .15s,border-color .15s}.inv-sort:hover{color:var(--text-primary);border-color:var(--amber-dim)}.inv-sort--active{color:var(--amber);border-color:var(--amber)}.inv-panel__table-wrap{flex:1;padding:16px 20px;overflow-y:auto}.inv-table{border-collapse:collapse;width:100%}.inv-table th{color:var(--text-secondary);letter-spacing:.08em;text-align:left;border-bottom:1px solid var(--border);padding:6px 10px;font-size:10px}.inv-row td{border-bottom:1px solid var(--border);vertical-align:middle;padding:8px 10px;font-size:13px}.inv-row:last-child td{border-bottom:none}.inv-row td input{background:var(--bg-raised);border:1px solid var(--border);border-radius:var(--radius);width:100%;padding:3px 6px;font-size:13px}.inv-cat{background:var(--bg-raised);border:1px solid var(--border);border-radius:var(--radius);font-family:var(--font-terminal);color:var(--text-secondary);padding:1px 6px;font-size:12px}.char-sheet{flex-direction:column;height:100%;display:flex}.char-sheet__body{flex-direction:column;flex:1;display:flex;overflow:hidden}.char-sheet__tabs{border-bottom:1px solid var(--border);align-items:center;gap:0;padding:0 24px;display:flex}.char-sheet__tab{color:var(--text-secondary);font-family:var(--font-mono);letter-spacing:.08em;background:0 0;border:none;border-bottom:2px solid #0000;margin-bottom:-1px;padding:10px 16px;font-size:12px;transition:color .15s}.char-sheet__tab:hover{color:var(--text-primary)}.char-sheet__tab--active{border-bottom-color:var(--amber);color:var(--amber)}.char-sheet__save{margin-left:auto;padding:5px 14px;font-size:12px}.char-sheet__save--clean{background:var(--bg-raised);color:var(--text-secondary)}.char-sheet__content{flex:1;padding:20px 24px;overflow-y:auto}.char-sheet__two-col{grid-template-columns:1fr 1fr;gap:16px;display:grid}@media (width<=768px){.char-sheet__two-col{grid-template-columns:1fr}.ability-grid{grid-template-columns:repeat(3,1fr)}}.dm-dashboard{flex-direction:column;height:100%;display:flex}.dm-dashboard__grid{flex:1;grid-template-columns:1fr 380px;gap:16px;padding:20px 24px;display:grid;overflow-y:auto}.dm-dashboard__col{flex-direction:column;gap:16px;display:flex}.dm-dashboard__panel{background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--radius);padding:16px}.dm-dashboard__panel-title{font-family:var(--font-display);letter-spacing:.08em;color:var(--amber);border-bottom:1px solid var(--border);margin-bottom:12px;padding-bottom:8px;font-size:15px}@media (width<=1024px){.dm-dashboard__grid{grid-template-columns:1fr}}.tag{background:var(--bg-raised);border:1px solid var(--border);color:var(--text-secondary);font-family:var(--font-terminal);border-radius:2px;padding:1px 6px;font-size:13px;display:inline-block}.tag--clickable{cursor:pointer;transition:border-color .15s,color .15s}.tag--clickable:hover{border-color:var(--amber);color:var(--amber)}.lore-entry{flex-direction:column;gap:12px;padding:20px;display:flex;overflow-y:auto}.lore-entry__header{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.lore-entry__title{font-family:var(--font-display);letter-spacing:.05em;color:var(--amber);flex:1;font-size:26px}.lore-entry__actions{flex-shrink:0;gap:8px;display:flex}.lore-entry__meta{flex-wrap:wrap;gap:4px;display:flex}.lore-entry__content{flex:1}.lore-editor{flex-direction:column;gap:14px;display:flex}.lore-editor__row{gap:12px;display:flex}.lore-editor__field{flex-direction:column;flex:1;gap:6px;display:flex}.lore-editor__field--sm{flex:none;max-width:200px}.lore-editor__field label{color:var(--text-secondary);letter-spacing:.08em;font-size:11px}.lore-editor__field input,.lore-editor__field select,.lore-editor__field textarea{width:100%}.lore-editor__check{color:var(--text-secondary);cursor:pointer;align-items:center;gap:8px;font-size:12px;display:flex}.lore-editor__check input{width:auto}.lore-editor__error{color:var(--rust);font-family:var(--font-terminal);font-size:14px}.lore-editor__footer{justify-content:flex-end;gap:10px;padding-top:8px;display:flex}.world-lore-page{flex-direction:column;height:100%;display:flex}.world-lore{flex:1;grid-template-columns:200px 1fr 1fr;gap:0;display:grid;overflow:hidden}.world-lore__sidebar{border-right:1px solid var(--border);flex-direction:column;gap:12px;padding:16px;display:flex;overflow-y:auto}.world-lore__cats{flex-direction:column;gap:2px;display:flex}.world-lore__cat{color:var(--text-secondary);font-family:var(--font-mono);letter-spacing:.08em;text-align:left;text-transform:uppercase;background:0 0;border:none;border-left:3px solid #0000;padding:8px 10px;font-size:11px;transition:color .15s}.world-lore__cat:hover{color:var(--text-primary)}.world-lore__cat--active{border-left-color:var(--amber);color:var(--amber)}.world-lore__tags{flex-wrap:wrap;gap:4px;display:flex}.world-lore__new{padding:6px 10px;font-size:11px}.world-lore__list{border-right:1px solid var(--border);flex-direction:column;gap:8px;padding:16px;display:flex;overflow-y:auto}.lore-card{background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;padding:12px 14px;transition:border-color .15s}.lore-card:hover{border-color:var(--amber-dim)}.lore-card--active{border-color:var(--amber);box-shadow:0 0 8px var(--amber-glow)}.lore-card__title{font-family:var(--font-display);letter-spacing:.04em;margin-bottom:6px;font-size:16px}.lore-card__tags{flex-wrap:wrap;gap:4px;display:flex}.session-detail{flex-direction:column;gap:20px;display:flex}.session-detail__header{justify-content:space-between;align-items:flex-start;display:flex}.session-detail__num{color:var(--text-secondary);font-family:var(--font-terminal);font-size:15px}.session-detail__title{font-family:var(--font-display);letter-spacing:.04em;color:var(--amber);font-size:28px}.session-detail__date{color:var(--text-secondary);font-family:var(--font-terminal);font-size:15px}.session-detail__section{background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--radius);padding:14px}.session-detail__section h4{color:var(--text-secondary);letter-spacing:.1em;margin-bottom:10px;font-size:11px}.session-detail__section p{color:var(--text-primary);line-height:1.6}.session-detail__section ul{flex-direction:column;gap:4px;list-style:none;display:flex}.session-detail__section ul li:before{content:"> ";color:var(--amber)}.session-editor{flex-direction:column;gap:14px;display:flex}.sessions-page{flex-direction:column;height:100%;display:flex}.sessions-layout{flex:1;grid-template-columns:260px 1fr;display:grid;overflow:hidden}.sessions-list{border-right:1px solid var(--border);flex-direction:column;gap:6px;padding:16px;display:flex;overflow-y:auto}.sessions-list__new{margin-bottom:8px;font-size:11px}.session-card{background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;padding:12px;transition:border-color .15s}.session-card:hover{border-color:var(--amber-dim)}.session-card--active{border-color:var(--amber);background:var(--amber-glow)}.session-card__num{color:var(--text-secondary);font-family:var(--font-terminal);font-size:13px}.session-card__title{font-family:var(--font-display);letter-spacing:.04em;margin:2px 0;font-size:16px}.session-card__date{color:var(--text-secondary);font-size:11px;font-family:var(--font-terminal)}.sessions-detail{padding:20px;overflow-y:auto}.char-card{background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;gap:12px;padding:14px;transition:border-color .15s,box-shadow .15s;display:flex;overflow:hidden}.char-card:hover{border-color:var(--amber-dim);box-shadow:0 0 12px var(--amber-glow)}.char-card__portrait{border-radius:var(--radius);background:var(--bg-raised);flex-shrink:0;width:56px;height:70px;overflow:hidden}.char-card__portrait img{object-fit:cover;width:100%;height:100%}.char-card__portrait-placeholder{color:var(--text-dim);font-family:var(--font-display);justify-content:center;align-items:center;height:100%;font-size:28px;display:flex}.char-card__info{flex-direction:column;flex:1;gap:4px;min-width:0;display:flex}.char-card__name{font-family:var(--font-display);letter-spacing:.04em;white-space:nowrap;text-overflow:ellipsis;font-size:18px;overflow:hidden}.char-card__sub{color:var(--text-secondary);font-size:12px;font-family:var(--font-terminal);font-size:14px}.char-card__hp{margin-top:4px}.char-card__hp-bar{background:var(--bg-raised);border-radius:2px;width:100%;height:4px;overflow:hidden}.char-card__hp-fill{border-radius:2px;height:100%;transition:width .3s}.char-card__hp-label{color:var(--text-secondary);font-size:11px}.char-card__factions{flex-wrap:wrap;gap:4px;margin-top:4px;display:flex}.char-card__faction-dot{border-radius:50%;width:8px;height:8px;display:inline-block}.roster-page{padding:24px}.roster-page__actions{margin-bottom:20px}.roster-grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:16px;display:grid}.npc-card{background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--radius);gap:14px;padding:14px;display:flex}.npc-card--hidden{opacity:.6;border-style:dashed}.npc-card.dm-accent{border-left:3px solid var(--magenta)}.npc-card__portrait{background:var(--bg-raised);border-radius:var(--radius);flex-shrink:0;width:56px;height:70px;overflow:hidden}.npc-card__portrait img{object-fit:cover;width:100%;height:100%}.npc-card__portrait-placeholder{width:100%;height:100%;font-family:var(--font-display);color:var(--text-dim);justify-content:center;align-items:center;font-size:24px;display:flex}.npc-card__body{flex-direction:column;flex:1;gap:3px;min-width:0;display:flex}.npc-card__name{font-family:var(--font-display);letter-spacing:.04em;font-size:18px}.npc-card__meta{color:var(--text-secondary);font-size:12px;font-family:var(--font-terminal);font-size:14px}.npc-card__rel{font-family:var(--font-terminal);letter-spacing:.08em;margin-top:2px;font-size:14px}.npc-card__notes{color:var(--text-secondary);margin-top:4px;font-size:12px;line-height:1.5}.npc-card__actions{gap:4px;margin-top:6px;display:flex}.npc-page{flex-direction:column;gap:20px;padding:24px;display:flex}.npc-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px;display:grid}.quest-page{flex-direction:column;gap:20px;padding:24px;display:flex}.quest-page__toolbar{justify-content:space-between;align-items:center;gap:12px;display:flex}.quest-status-tabs{gap:4px;display:flex}.quest-status-tab{border:1px solid var(--border);border-radius:var(--radius);color:var(--text-secondary);font-family:var(--font-mono);letter-spacing:.08em;background:0 0;padding:5px 14px;font-size:11px;transition:color .15s,border-color .15s}.quest-status-tab:hover{color:var(--text-primary);border-color:var(--amber-dim)}.quest-status-tab--active{color:var(--amber);border-color:var(--amber)}.quest-grid{grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:14px;display:grid}.quest-card{background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--radius);border-left-width:3px;padding:14px}.quest-card--main{border-left-color:var(--magenta)}.quest-card--side{border-left-color:var(--amber)}.quest-card--faction{border-left-color:var(--cyan)}.quest-card__header{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:10px;display:flex}.quest-card__type{font-family:var(--font-terminal);letter-spacing:.1em;font-size:12px}.quest-card__title{font-family:var(--font-display);letter-spacing:.04em;font-size:18px}.quest-card__status{font-family:var(--font-terminal);letter-spacing:.08em;padding:2px 0;font-size:13px}.quest-card__desc{color:var(--text-secondary);margin-bottom:10px;font-size:13px;line-height:1.5}.quest-card__objectives{flex-direction:column;gap:6px;display:flex}.quest-objective{cursor:pointer;align-items:center;gap:8px;font-size:13px;display:flex}.quest-card__hidden-badge{color:var(--magenta-dim);font-family:var(--font-terminal);letter-spacing:.06em;border-top:1px solid var(--border);margin-top:10px;padding-top:8px;font-size:12px}.condition-picker{background:var(--bg-raised);border:1px solid var(--border);border-radius:var(--radius);z-index:100;flex-direction:column;gap:6px;max-height:200px;padding:8px;display:flex;overflow-y:auto}.condition-picker__list{flex-wrap:wrap;gap:4px;display:flex}.condition-picker__item{background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--radius);color:var(--text-secondary);font-family:var(--font-terminal);padding:2px 8px;font-size:13px;transition:color .15s,border-color .15s}.condition-picker__item:hover{border-color:var(--magenta-dim);color:var(--magenta)}.condition-picker__custom{border-top:1px solid var(--border);gap:6px;padding-top:6px;display:flex}.condition-picker__custom input{flex:1;padding:3px 6px;font-size:12px}.combatant-row{background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--radius);align-items:center;gap:10px;padding:8px 10px;transition:border-color .15s;display:flex}.combatant-row--active{border-color:var(--amber);box-shadow:0 0 10px var(--amber-glow)}.combatant-row--dead{opacity:.4}.combatant-row__drag{color:var(--text-dim);cursor:grab;-webkit-user-select:none;user-select:none;flex-shrink:0;font-size:18px}.combatant-row__init{flex-shrink:0}.combatant-row__init-input{background:var(--bg-raised);border:1px solid var(--border);border-radius:var(--radius);color:var(--cyan);font-family:var(--font-display);text-align:center;width:52px;padding:2px 4px;font-size:20px}.combatant-row__info{flex-direction:column;flex:1;gap:4px;min-width:0;display:flex}.combatant-row__name{align-items:center;gap:6px;display:flex}.combatant-row__type-badge{font-family:var(--font-terminal);border-radius:2px;flex-shrink:0;padding:1px 5px;font-size:11px}.combatant-row__type-badge--pc{background:var(--cyan-glow);color:var(--cyan);border:1px solid var(--cyan-dim)}.combatant-row__type-badge--enemy{background:var(--magenta-glow);color:var(--magenta);border:1px solid var(--magenta-dim)}.combatant-row__name-input{border:none;border-bottom:1px solid var(--border);color:var(--text-primary);font-family:var(--font-mono);background:0 0;border-radius:0;flex:1;padding:1px 4px;font-size:14px}.combatant-row__name-input:focus{border-bottom-color:var(--amber)}.combatant-row__conditions{flex-wrap:wrap;align-items:center;gap:4px;display:flex}.combatant-condition{background:var(--magenta-glow);border:1px solid var(--magenta-dim);border-radius:var(--radius);color:var(--magenta);cursor:pointer;font-family:var(--font-terminal);padding:1px 6px;font-size:12px}.combatant-condition:hover{opacity:.7}.combatant-row__cond-btn{border:1px dashed var(--border);border-radius:var(--radius);color:var(--text-dim);background:0 0;padding:1px 6px;font-size:10px;transition:color .15s,border-color .15s}.combatant-row__cond-btn:hover{color:var(--text-secondary);border-color:var(--amber-dim)}.combatant-row__ac{flex-direction:column;flex-shrink:0;align-items:center;gap:2px;display:flex}.combatant-row__stat-label{color:var(--text-dim);letter-spacing:.1em;font-size:9px}.combatant-row__ac-input{background:var(--bg-raised);border:1px solid var(--border);border-radius:var(--radius);color:var(--text-primary);font-family:var(--font-display);text-align:center;width:46px;padding:2px;font-size:18px}.combatant-row__hp{flex-shrink:0;align-items:center;gap:4px;display:flex}.combatant-row__hp-btn{background:var(--bg-raised);border:1px solid var(--border);border-radius:var(--radius);color:var(--text-primary);width:28px;height:28px;font-size:18px;transition:border-color .15s}.combatant-row__hp-btn:hover{border-color:var(--amber);color:var(--amber)}.combatant-row__hp-btn--plus:hover{color:#2ecc71;border-color:#2ecc71}.combatant-row__hp-display{flex-direction:column;align-items:center;gap:2px;min-width:60px;display:flex}.combatant-row__hp-input{color:var(--text-primary);font-family:var(--font-display);text-align:center;background:0 0;border:none;width:100%;padding:0;font-size:20px}.combatant-row__hp-bar{background:var(--bg-raised);border-radius:2px;width:100%;height:3px;overflow:hidden}.combatant-row__hp-max{color:var(--text-dim);font-size:11px}.combatant-row__saves{flex-shrink:0;gap:3px;display:flex}.combatant-row__remove{color:var(--text-dim);background:0 0;border:none;flex-shrink:0;font-size:16px;transition:color .15s}.combatant-row__remove:hover{color:var(--rust)}.initiative-order{border-right:1px solid var(--border);flex-direction:column;flex:1;display:flex;overflow:hidden}.initiative-order__toolbar{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:10px 16px;display:flex}.initiative-order__count{color:var(--text-secondary);font-family:var(--font-terminal);font-size:15px}.initiative-order__list{flex-direction:column;flex:1;gap:4px;padding:8px;display:flex;overflow-y:auto}.enemy-templates{border-left:1px solid var(--border);flex-direction:column;flex-shrink:0;width:280px;display:flex;overflow-y:auto}.enemy-templates__header{border-bottom:1px solid var(--border);font-family:var(--font-display);letter-spacing:.06em;color:var(--magenta);justify-content:space-between;align-items:center;padding:10px 12px;font-size:14px;display:flex}.enemy-templates__form{border-bottom:1px solid var(--border);flex-direction:column;gap:6px;padding:10px;display:flex}.enemy-templates__list{flex-direction:column;gap:4px;padding:8px;display:flex}.enemy-template-row{background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--radius);justify-content:space-between;align-items:center;padding:8px 10px;display:flex}.enemy-template-row__name{font-family:var(--font-mono);font-size:13px}.enemy-template-row__stats{color:var(--text-secondary);font-size:11px;font-family:var(--font-terminal);font-size:13px}.combat-page{flex-direction:column;height:100%;display:flex}.combat-body{flex-direction:column;flex:1;display:flex;overflow:hidden}.combat-new{flex-direction:column;justify-content:center;align-items:center;gap:20px;padding:60px;display:flex}.combat-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:12px 20px;display:flex}.combat-header__name{font-family:var(--font-display);letter-spacing:.06em;color:var(--amber);font-size:22px}.combat-header__round{color:var(--text-secondary);font-family:var(--font-terminal);font-size:16px}.combat-main{flex:1;display:flex;overflow:hidden}.handout-overlay{z-index:2000;background:#000000eb;justify-content:center;align-items:center;padding:40px;animation:.3s ease-out page-in;display:flex;position:fixed;inset:0}.handout-overlay:before{content:"";pointer-events:none;background:repeating-linear-gradient(0deg,#0000,#0000 2px,#f5a62305 2px 4px);position:absolute;inset:0}.handout-overlay__box{background:var(--bg-panel);border:1px solid var(--amber);border-radius:var(--radius-lg);box-shadow:0 0 60px var(--amber-glow), 0 0 120px #f5a6231a;text-align:center;flex-direction:column;align-items:center;gap:16px;width:100%;max-width:700px;max-height:85vh;padding:32px;display:flex;position:relative;overflow-y:auto}.handout-overlay__label{color:var(--text-secondary);font-family:var(--font-terminal);letter-spacing:.15em;font-size:16px}.handout-overlay__title{font-family:var(--font-display);letter-spacing:.08em;color:var(--amber);font-size:36px}.handout-overlay__body{color:var(--text-primary);text-align:left;width:100%;max-width:560px;font-size:15px;line-height:1.7}.handout-overlay__dismiss{letter-spacing:.14em;margin-top:8px;padding:10px 32px;font-size:16px}.handout-page{flex-direction:column;height:100%;display:flex}.handout-body{flex-direction:column;flex:1;gap:16px;padding:20px 24px;display:flex;overflow-y:auto}.handout-toolbar{display:flex}.handout-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px;display:grid}.handout-card{background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;padding:14px;transition:border-color .15s}.handout-card:hover{border-color:var(--amber-dim)}.handout-card__header{justify-content:space-between;align-items:flex-start;gap:8px;margin-bottom:8px;display:flex}.handout-card__title{font-family:var(--font-display);letter-spacing:.04em;font-size:16px}.handout-card__urgency{font-family:var(--font-terminal);flex-shrink:0;font-size:13px}.handout-card__meta{color:var(--text-secondary);font-family:var(--font-terminal);gap:12px;font-size:13px;display:flex}.handout-viewer{z-index:500;background:#000000bf;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.handout-viewer__box{background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--radius-lg);width:700px;max-width:100%;max-height:90vh;animation:.2s ease-out page-in;overflow-y:auto}.handout-viewer__header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:14px 20px;display:flex}.handout-viewer__title{font-family:var(--font-display);color:var(--amber);font-size:20px}.handout-viewer__body{padding:20px;font-size:14px;line-height:1.6}.thread-list{border-right:1px solid var(--border);flex-direction:column;gap:2px;padding:10px;display:flex;overflow-y:auto}.thread-list__divider{color:var(--text-dim);letter-spacing:.1em;padding:8px 6px 4px;font-size:10px}.thread-item{border-radius:var(--radius);cursor:pointer;border-left:3px solid #0000;padding:10px;transition:background .15s}.thread-item:hover{background:var(--bg-raised)}.thread-item--active{background:var(--amber-glow);border-left-color:var(--amber)}.thread-item__name{font-family:var(--font-mono);color:var(--text-primary);font-size:13px}.thread-item__sub{color:var(--text-secondary);font-family:var(--font-terminal);font-size:13px}.message-thread{flex-direction:column;height:100%;display:flex;overflow:hidden}.message-thread__header{border-bottom:1px solid var(--border);color:var(--amber);font-family:var(--font-display);letter-spacing:.06em;padding:12px 20px;font-size:18px}.message-thread__messages{flex-direction:column;flex:1;gap:8px;padding:16px 20px;display:flex;overflow-y:auto}.message-bubble{align-self:flex-start;max-width:70%}.message-bubble--mine{align-self:flex-end}.message-bubble__content{background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--radius);padding:8px 12px;font-size:14px;line-height:1.5}.message-bubble--mine .message-bubble__content{background:var(--amber-glow);border-color:var(--amber-dim)}.message-bubble__time{color:var(--text-dim);font-family:var(--font-terminal);margin-top:3px;padding:0 4px;font-size:12px}.message-thread__input{border-top:1px solid var(--border);gap:10px;padding:12px 20px;display:flex}.message-thread__input input{flex:1}.message-page{flex-direction:column;height:100%;display:flex}.message-body{flex:1;grid-template-columns:240px 1fr;display:grid;overflow:hidden}.message-main{flex-direction:column;display:flex;overflow:hidden}.inv-page{flex-direction:column;height:100%;display:flex}.inv-page__tabs{border-bottom:1px solid var(--border);padding:0 24px;display:flex}.inv-page__tab{color:var(--text-secondary);font-family:var(--font-mono);letter-spacing:.08em;background:0 0;border:none;border-bottom:2px solid #0000;margin-bottom:-1px;padding:10px 16px;font-size:12px;transition:color .15s}.inv-page__tab:hover{color:var(--text-primary)}.inv-page__tab--active{border-bottom-color:var(--amber);color:var(--amber)}
