/* ===== COMPONENTS: login, modal, gallery, cards, buttons, forms ===== */

/* LOGIN */
#login-screen{display:none;align-items:center;justify-content:center;min-height:100vh;flex-direction:column;}
#login-screen.active{display:flex;}
.login-emblem{text-align:center;margin-bottom:2.5rem;animation:fadeDown .8s ease both;}
.login-emblem .sigil{font-size:4rem;line-height:1;filter:drop-shadow(0 0 20px rgba(139,0,0,.6));animation:pulse-glow 4s ease-in-out infinite;}
@keyframes pulse-glow{0%,100%{filter:drop-shadow(0 0 20px rgba(139,0,0,.4))}50%{filter:drop-shadow(0 0 40px rgba(139,0,0,.8))}}
.login-emblem h1{font-family:'Cinzel Decorative',serif;font-size:2.2rem;color:var(--bone);letter-spacing:.1em;margin-top:.5rem;text-shadow:0 0 30px rgba(201,168,76,.3);}
.login-emblem .subtitle{font-family:'Cinzel',serif;font-size:.75rem;letter-spacing:.4em;text-transform:uppercase;color:var(--silver);margin-top:.5rem;}
.login-box{background:linear-gradient(135deg,rgba(30,17,24,.95),rgba(18,9,14,.98));border:1px solid rgba(139,0,0,.3);border-top:2px solid var(--blood);padding:2.5rem 3rem;width:100%;max-width:420px;position:relative;box-shadow:0 20px 60px rgba(0,0,0,.8),inset 0 1px 0 rgba(201,168,76,.1);animation:fadeUp .8s ease .2s both;}
.login-box::before{content:'';position:absolute;top:-1px;left:20%;right:20%;height:2px;background:linear-gradient(90deg,transparent,var(--gold),transparent);}
.login-tabs{display:flex;border-bottom:1px solid rgba(139,0,0,.3);margin-bottom:2rem;}
.login-tab{flex:1;padding:.6rem;font-family:'Cinzel',serif;font-size:.8rem;letter-spacing:.15em;text-transform:uppercase;background:none;border:none;color:var(--silver);cursor:pointer;transition:color .3s;border-bottom:2px solid transparent;margin-bottom:-1px;}
.login-tab.active{color:var(--bone);border-bottom-color:var(--blood);}
.login-tab:hover{color:var(--pale);}
.login-form{display:none;}.login-form.active{display:block;}
.field-group{margin-bottom:1.4rem;}
.field-label{display:block;font-family:'Cinzel',serif;font-size:.65rem;letter-spacing:.3em;text-transform:uppercase;color:var(--silver);margin-bottom:.5rem;}
.field-input{width:100%;background:rgba(0,0,0,.4);border:1px solid rgba(139,0,0,.25);border-bottom-color:rgba(139,0,0,.5);color:var(--bone);font-family:'EB Garamond',serif;font-size:1rem;padding:.65rem .9rem;outline:none;transition:border-color .3s,box-shadow .3s;}
.field-input:focus{border-color:rgba(139,0,0,.7);box-shadow:0 0 15px rgba(139,0,0,.15);}
.field-input::placeholder{color:rgba(168,152,128,.35);}
.btn-primary{width:100%;padding:.8rem;background:linear-gradient(135deg,var(--blood),#5a0000);border:1px solid rgba(139,0,0,.5);color:var(--bone);font-family:'Cinzel',serif;font-size:.8rem;letter-spacing:.3em;text-transform:uppercase;cursor:pointer;margin-top:.5rem;transition:all .3s;position:relative;overflow:hidden;}
.btn-primary::before{content:'';position:absolute;inset:0;background:linear-gradient(135deg,rgba(255,255,255,.05),transparent);opacity:0;transition:opacity .3s;}
.btn-primary:hover{box-shadow:0 0 20px rgba(139,0,0,.4);transform:translateY(-1px);}
.btn-primary:hover::before{opacity:1;}
.btn-primary:active{transform:translateY(0);}
.error-msg{color:#ff6b6b;font-size:.85rem;margin-top:.8rem;text-align:center;min-height:1.2em;}
/* Password strength indicator under password inputs. Three tiers; weak
   is reddish, medium is amber, strong is green. Hidden when empty. */
.pw-strength{font-family:'EB Garamond',serif;font-size:.78rem;margin-top:.35rem;padding:.25rem .5rem;border-left:3px solid transparent;line-height:1.4;color:var(--silver);background:rgba(0,0,0,.18);display:none;}
.pw-strength:not(:empty){display:block;}
.pw-strength-weak{border-left-color:#dc2626;color:#fca5a5;}
.pw-strength-medium{border-left-color:#d97706;color:#fcd34d;}
.pw-strength-strong{border-left-color:#16a34a;color:#86efac;}

/* Forgot / reset password */
.login-forgot{text-align:right;margin-top:.4rem;}
.login-forgot button{background:none;border:none;color:var(--silver);font-family:'Cinzel',serif;font-size:.6rem;letter-spacing:.15em;text-transform:uppercase;cursor:pointer;opacity:.6;transition:opacity .3s;text-decoration:underline;text-underline-offset:3px;}
.login-forgot button:hover{opacity:1;}
#forgot-form{display:none;}
#forgot-form.active{display:block;}
.token-box{background:rgba(0,0,0,.5);border:1px solid rgba(201,168,76,.25);padding:1rem;margin-top:1rem;font-family:monospace;font-size:.85rem;color:var(--gold);letter-spacing:.05em;word-break:break-all;position:relative;}
.token-box-label{font-family:'Cinzel',serif;font-size:.55rem;letter-spacing:.3em;text-transform:uppercase;color:var(--silver);margin-bottom:.4rem;}
.token-copy-btn{position:absolute;top:.6rem;right:.6rem;background:rgba(201,168,76,.1);border:1px solid rgba(201,168,76,.25);color:var(--gold);font-family:'Cinzel',serif;font-size:.55rem;letter-spacing:.1em;padding:.25rem .5rem;cursor:pointer;transition:all .3s;}
.token-copy-btn:hover{background:rgba(201,168,76,.2);}
#reset-form{display:none;}
#reset-form.active{display:block;}

/* Ghost / utility buttons */
.btn-ghost{background:none;border:1px solid rgba(139,0,0,.35);color:var(--silver);font-family:'Cinzel',serif;font-size:.65rem;letter-spacing:.2em;text-transform:uppercase;padding:.4rem 1rem;cursor:pointer;transition:all .3s;}
.btn-ghost:hover{border-color:var(--blood);color:var(--pale);}

/* Theme scheme buttons */
.theme-scheme-btn{background:none;border:1px solid rgba(139,0,0,.25);color:var(--silver);font-family:'Cinzel',serif;font-size:.6rem;letter-spacing:.15em;text-transform:uppercase;padding:.35rem .9rem;cursor:pointer;transition:all .25s;border-radius:2px;}
.theme-scheme-btn:hover{border-color:rgba(139,0,0,.5);color:var(--pale);}
.theme-scheme-btn.active{background:rgba(139,0,0,.12);border-color:var(--blood);color:var(--bone);}

/* Version rows */
.version-row{display:flex;flex-direction:column;gap:.35rem;padding:.6rem .7rem;border:1px solid rgba(139,0,0,.15);background:rgba(30,17,24,.4);transition:background .2s;}
.version-row.active-version{border-color:var(--gold);background:rgba(201,168,76,.06);}
.version-row-label{font-family:'Cinzel',serif;font-size:.75rem;letter-spacing:.08em;color:var(--bone);word-break:break-word;}
.version-row.active-version .version-row-label{color:var(--gold);}
.version-row-meta{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;}
.version-row-date{font-family:'EB Garamond',serif;font-size:.75rem;color:var(--silver);opacity:.6;flex-shrink:0;}
.version-row-actions{display:flex;gap:.35rem;flex-shrink:0;margin-left:auto;}
.btn-ver{background:none;border:1px solid rgba(139,0,0,.2);color:var(--silver);font-family:'Cinzel',serif;font-size:.52rem;letter-spacing:.1em;text-transform:uppercase;padding:.18rem .5rem;cursor:pointer;transition:all .2s;}
.btn-ver:hover{border-color:rgba(139,0,0,.5);color:var(--pale);}
.btn-ver.danger:hover{border-color:#f87171;color:#f87171;}

/* Duplicate character resolution modal — opens on top of the new-sheet modal */
#duplicate-modal-overlay{z-index:250;}

/* User-uploaded image protection — paired with contextmenu/dragstart suppression in ui.js. */
#portrait-img,
.sheet-card-portrait,
.gallery-thumb-sm,
.admin-sheet-row-portrait,
.gallery-modal-grid img{
  -webkit-user-drag:none;
  -webkit-touch-callout:none;
  user-select:none;
}
.duplicate-choice-btn{display:flex;flex-direction:column;gap:.25rem;text-align:left;background:rgba(30,17,24,.5);border:1px solid rgba(139,0,0,.2);padding:.7rem 1rem;cursor:pointer;transition:all .2s;width:100%;}
/* Other text companion input */
.other-companion{animation:fadeDown .2s ease;}
.duplicate-choice-btn:hover{background:rgba(139,0,0,.1);border-color:rgba(139,0,0,.5);}
.dup-btn-title{font-family:'Cinzel',serif;font-size:.68rem;letter-spacing:.12em;text-transform:uppercase;color:var(--bone);}
.dup-btn-desc{font-family:'EB Garamond',serif;font-size:.85rem;color:var(--silver);line-height:1.4;}

/* Sheet type search in modal */
.type-search-wrap{position:relative;}
.type-search-input{width:100%;}
.type-dropdown{display:none;position:absolute;left:0;right:0;top:100%;background:var(--shadow,#12090e);border:1px solid rgba(139,0,0,.3);border-top:none;z-index:100;max-height:220px;overflow-y:auto;}
.type-dropdown.open{display:block;}
.type-dropdown-item{padding:.5rem .8rem;font-family:'EB Garamond',serif;font-size:.9rem;color:var(--silver);cursor:pointer;display:flex;align-items:center;gap:.5rem;}
.type-dropdown-item:hover,.type-dropdown-item.focused{background:rgba(139,0,0,.1);color:var(--bone);}
.type-dropdown-item.selected{color:var(--gold);}

/* Merits & Flaws structured entries */
.mf-entry{margin-bottom:.6rem;border-bottom:1px solid rgba(139,0,0,.1);padding-bottom:.4rem;}
.mf-entry:last-child{border-bottom:none;}
.mf-top{display:flex;align-items:center;gap:.4rem;min-width:0;}
.mf-name{flex:1 1 0;min-width:0;background:none;border:none;border-bottom:1px solid rgba(139,0,0,.2);color:var(--bone);font-family:'EB Garamond',serif;font-size:.9rem;padding:.1rem .2rem;outline:none;overflow:hidden;text-overflow:ellipsis;}
.mf-name:focus{border-bottom-color:var(--blood);}
.mf-cost{width:3rem;flex-shrink:0;background:none;border:none;border-bottom:1px solid rgba(139,0,0,.2);color:var(--gold);font-family:'EB Garamond',serif;font-size:.85rem;padding:.1rem .2rem;outline:none;text-align:center;}
.mf-cost:focus{border-bottom-color:var(--blood);}
.mf-cost::placeholder{color:rgba(201,168,76,.3);}
.mf-desc{width:100%;margin-top:.3rem;background:rgba(0,0,0,.15);border:none;border-left:2px solid rgba(139,0,0,.2);color:var(--silver);font-family:'EB Garamond',serif;font-size:.82rem;padding:.3rem .5rem;outline:none;resize:vertical;min-height:2.5rem;line-height:1.4;font-style:italic;}
.mf-desc:focus{border-left-color:var(--blood);}
.mf-desc::placeholder{color:rgba(168,152,128,.2);}
.mf-remove{background:none;border:none;color:rgba(248,113,113,.35);cursor:pointer;font-size:.8rem;flex-shrink:0;padding:0 .15rem;transition:color .2s;}
.mf-remove:hover{color:#f87171;}
.mf-add{display:flex;align-items:center;gap:.5rem;margin-top:.5rem;cursor:pointer;opacity:.45;transition:opacity .2s;}
.mf-add:hover{opacity:.85;}
.mf-add-icon{font-size:.8rem;color:var(--silver);}
.mf-add-label{font-family:'Cinzel',serif;font-size:.52rem;letter-spacing:.2em;text-transform:uppercase;color:var(--silver);}

/* TOS checkbox + modal */
.tos-check-row{display:flex;align-items:flex-start;gap:.6rem;margin:.8rem 0 1.2rem;}
.tos-checkbox{width:16px;height:16px;accent-color:var(--blood);flex-shrink:0;margin-top:.15rem;cursor:pointer;}
.tos-check-label{font-family:'EB Garamond',serif;font-size:.9rem;color:var(--silver);line-height:1.4;cursor:default;}
.tos-link{background:none;border:none;padding:0;color:var(--gold);font-family:'EB Garamond',serif;font-size:.9rem;cursor:pointer;text-decoration:underline;text-underline-offset:2px;}
.tos-link:hover{color:var(--bone);}
.tos-body{max-height:60vh;overflow-y:auto;padding-right:.5rem;font-family:'EB Garamond',serif;font-size:.92rem;color:var(--silver);line-height:1.65;}
.tos-body p{margin-bottom:.9rem;}
.tos-body ul{margin:.3rem 0 .9rem 1.4rem;}
.tos-body ul li{margin-bottom:.3rem;}
.tos-section-title{font-family:'Cinzel',serif;font-size:.65rem;letter-spacing:.3em;text-transform:uppercase;color:var(--blood-bright);margin:1.4rem 0 .5rem;}
.tos-section-title:first-child{margin-top:0;}
.tos-updated{font-family:'Cinzel',serif;font-size:.55rem;letter-spacing:.2em;text-transform:uppercase;color:var(--silver);opacity:.5;margin-top:1.2rem;}

/* Bulk actions */
.bulk-select-all{background:none;border:none;color:var(--silver);font-family:'Cinzel',serif;font-size:.58rem;letter-spacing:.15em;text-transform:uppercase;cursor:pointer;text-decoration:underline;text-underline-offset:2px;padding:0;transition:color .2s;}
.bulk-select-all:hover{color:var(--pale);}
.btn-vis.bulk{background:none;border:1px solid rgba(139,0,0,.25);color:var(--silver);font-family:'Cinzel',serif;font-size:.58rem;letter-spacing:.12em;text-transform:uppercase;padding:.3rem .7rem;cursor:pointer;transition:all .2s;}
.btn-vis.bulk:hover{border-color:rgba(139,0,0,.55);color:var(--pale);}

/* Card selection state */
.sheet-card.selectable{cursor:pointer;}
.sheet-card.selectable:not(.selected):hover{outline:2px solid rgba(139,0,0,.3);}
.sheet-card.selected{outline:2px solid var(--gold);outline-offset:1px;}
.sheet-card .card-checkbox{display:none;position:absolute;top:.7rem;left:.7rem;width:18px;height:18px;accent-color:var(--blood);cursor:pointer;z-index:10;}
.sheets-grid.bulk-mode .card-checkbox{display:block;}
.sheets-grid.bulk-mode .sheet-card{cursor:pointer;user-select:none;}

/* Add button */
.btn-add{display:flex;align-items:center;gap:.5rem;padding:.5rem 1.2rem;background:linear-gradient(135deg,rgba(139,0,0,.2),rgba(139,0,0,.08));border:1px solid rgba(139,0,0,.4);color:var(--pale);font-family:'Cinzel',serif;font-size:.65rem;letter-spacing:.2em;text-transform:uppercase;cursor:pointer;transition:all .3s;}
.btn-add:hover{background:linear-gradient(135deg,rgba(139,0,0,.4),rgba(139,0,0,.2));border-color:var(--blood-bright);}

/* SHEET CARDS (base) */
.sheet-card{background:linear-gradient(135deg,rgba(30,17,24,.9),rgba(18,9,14,.95));border:1px solid rgba(139,0,0,.2);border-top:2px solid rgba(139,0,0,.5);cursor:pointer;transition:all .3s;position:relative;overflow:hidden;animation:fadeUp .4s ease both;display:flex;flex-direction:column;}
.sheet-card::before{content:'';position:absolute;inset:0;background:linear-gradient(135deg,rgba(139,0,0,.05),transparent);opacity:0;transition:opacity .3s;}
.sheet-card:hover{border-color:rgba(139,0,0,.5);box-shadow:0 8px 30px rgba(0,0,0,.5),0 0 20px rgba(139,0,0,.08);transform:translateY(-2px);}
.sheet-card:hover::before{opacity:1;}
.sheet-type-badge{font-family:'Cinzel',serif;font-size:.52rem;letter-spacing:.2em;text-transform:uppercase;padding:.12rem .45rem;border:1px solid;display:inline-block;}
.sheet-card-top-bar{display:flex;align-items:center;justify-content:space-between;padding:.5rem .6rem;gap:.4rem;position:relative;z-index:2;}
.sheet-card-portrait-wrap{position:relative;flex-shrink:0;}
.sheet-card-clickzone{cursor:pointer;display:flex;flex-direction:column;flex:1;}
.sheet-card-info-overlay{background:rgba(18,9,14,.75);backdrop-filter:blur(6px);padding:.55rem .7rem .5rem;position:absolute;bottom:0;left:0;right:0;z-index:2;}
.sheet-card-no-portrait{padding:1rem 1rem 0;display:flex;align-items:center;gap:.6rem;flex-shrink:0;}
.sheet-clan-badge{font-size:1.8rem;filter:drop-shadow(0 0 8px rgba(139,0,0,.4));}
.sheet-name{font-family:'Cinzel',serif;font-size:.95rem;color:var(--bone);margin-bottom:.2rem;line-height:1.2;}
.sheet-meta{font-size:.75rem;color:var(--silver);margin-bottom:.1rem;line-height:1.3;}
.sheet-divider{height:1px;background:linear-gradient(90deg,rgba(139,0,0,.3),transparent);margin:1rem 0;}
.sheet-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:.5rem;}
.stat-mini{text-align:center;}
.stat-mini-label{font-family:'Cinzel',serif;font-size:.55rem;letter-spacing:.15em;text-transform:uppercase;color:var(--silver);margin-bottom:.2rem;}
.stat-mini-dots{display:flex;justify-content:center;gap:2px;}
.dot{width:8px;height:8px;border-radius:50%;border:1px solid rgba(139,0,0,.5);background:transparent;}
.dot.filled{background:var(--blood-bright);border-color:var(--blood-bright);box-shadow:0 0 4px rgba(192,57,43,.6);}
.sheet-card-actions{display:flex;gap:.5rem;padding:.5rem .7rem .6rem;margin-top:0;opacity:.4;transition:opacity .3s;pointer-events:auto;}
.sheet-card:hover .sheet-card-actions{opacity:1;}.sheet-card.selected .sheet-card-actions{opacity:.4;}
.sheet-card-actions button{pointer-events:auto;position:relative;z-index:10;}
.btn-action{flex:1;padding:.35rem;background:none;border:1px solid rgba(139,0,0,.3);color:var(--silver);font-family:'Cinzel',serif;font-size:.6rem;letter-spacing:.15em;text-transform:uppercase;cursor:pointer;transition:all .3s;}
.btn-action:hover{border-color:var(--blood);color:var(--pale);background:rgba(139,0,0,.1);}
.btn-action.danger:hover{border-color:#f44;color:#f66;background:rgba(255,0,0,.05);}
.empty-state{text-align:center;padding:4rem 2rem;color:var(--silver);}
.empty-state .empty-icon{font-size:3rem;margin-bottom:1rem;opacity:.4;}
.empty-state p{font-size:.9rem;margin-bottom:.3rem;}
.empty-state .hint{font-size:.75rem;opacity:.6;}

/* Sheet card owner tag */
.sheet-owner-tag{font-size:.7rem;color:var(--silver);opacity:.6;margin-bottom:.3rem;font-style:italic;}
.sheet-card-portrait{width:100%;height:300px;object-fit:contain;object-position:center center;display:block;flex-shrink:0;background:rgba(0,0,0,.3);}

/* SHEET NAV / SAVE / BACK buttons */
.btn-back{background:none;border:none;color:var(--silver);font-family:'Cinzel',serif;font-size:.65rem;letter-spacing:.2em;text-transform:uppercase;cursor:pointer;transition:color .3s;display:flex;align-items:center;gap:.4rem;}
.btn-back:hover{color:var(--pale);}
.btn-save{padding:.5rem 1.5rem;background:linear-gradient(135deg,var(--blood),#5a0000);border:1px solid var(--blood);color:var(--bone);font-family:'Cinzel',serif;font-size:.65rem;letter-spacing:.2em;text-transform:uppercase;cursor:pointer;transition:all .3s;}
.btn-save:hover{box-shadow:0 0 15px rgba(139,0,0,.4);}
.btn-save.saved{background:linear-gradient(135deg,#1a4a1a,#0d2a0d);border-color:#2a5a2a;}

/* MODAL */
.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.8);display:none;align-items:center;justify-content:center;z-index:200;backdrop-filter:blur(4px);}
.modal-overlay.active{display:flex;}
.modal{background:linear-gradient(135deg,var(--dusk),var(--shadow));border:1px solid rgba(139,0,0,.3);border-top:2px solid var(--blood);padding:2.5rem;width:100%;max-width:500px;animation:fadeUp .3s ease;max-height:90vh;overflow-y:auto;}
.modal-title{font-family:'Cinzel',serif;font-size:1rem;color:var(--bone);margin-bottom:1.5rem;letter-spacing:.05em;}
.report-scope-callout{background:rgba(248,113,113,.08);border:1px solid rgba(248,113,113,.35);border-left:3px solid #f87171;padding:.7rem .9rem;margin-bottom:1.2rem;font-family:'EB Garamond',serif;}
.report-scope-line{font-size:.85rem;color:var(--pale);line-height:1.45;}
.report-scope-line strong{color:#fca5a5;}
.report-scope-details{margin-top:.5rem;}
.report-scope-details summary{cursor:pointer;font-family:'Cinzel',serif;font-size:.55rem;letter-spacing:.15em;text-transform:uppercase;color:#fca5a5;opacity:.85;padding:.2rem 0;}
.report-scope-details summary:hover{opacity:1;}
.report-scope-details[open] summary{margin-bottom:.5rem;}
.report-scope-grid{display:grid;grid-template-columns:1fr 1fr;gap:.8rem;}
.report-scope-yes,.report-scope-no{background:rgba(0,0,0,.25);padding:.55rem .7rem;border-radius:2px;}
.report-scope-h{font-family:'Cinzel',serif;font-size:.55rem;letter-spacing:.15em;text-transform:uppercase;margin-bottom:.4rem;}
.report-scope-yes .report-scope-h{color:#86efac;}
.report-scope-no .report-scope-h{color:#fca5a5;}
.report-scope-grid ul{margin:0;padding-left:1rem;font-size:.78rem;color:var(--pale);line-height:1.5;}
.report-scope-grid li{margin-bottom:.2rem;}
.report-scope-redirect{margin-top:.5rem;padding-top:.4rem;border-top:1px dashed rgba(168,152,128,.2);font-size:.78rem;color:var(--silver);line-height:1.4;}
.report-scope-redirect strong{color:var(--gold);}
@media (max-width:560px){
  .report-scope-grid{grid-template-columns:1fr;}
}
.modal-actions{display:flex;gap:1rem;margin-top:1.5rem;}
.btn-secondary{flex:1;padding:.65rem;background:none;border:1px solid rgba(139,0,0,.3);color:var(--silver);font-family:'Cinzel',serif;font-size:.7rem;letter-spacing:.2em;text-transform:uppercase;cursor:pointer;transition:all .3s;}
.btn-secondary:hover{border-color:var(--blood);color:var(--pale);}
.type-toggle{display:flex;border:1px solid rgba(139,0,0,.25);margin-bottom:1.4rem;overflow:hidden;}
.type-btn{flex:1;padding:.6rem .3rem;font-family:'Cinzel',serif;font-size:.62rem;letter-spacing:.1em;text-transform:uppercase;background:none;border:none;color:var(--silver);cursor:pointer;transition:all .3s;border-bottom:2px solid transparent;}
.type-btn:hover{color:var(--pale);}
.modal-type-fields{display:none;}
.modal-type-fields.active{display:block;}

/* Change Type modal */
.type-opt{display:block;cursor:pointer;}
.type-opt input{display:none;}
.type-opt-inner{display:flex;align-items:center;gap:.6rem;padding:.5rem .8rem;border:1px solid rgba(139,0,0,.2);color:var(--silver);font-family:'Cinzel',serif;font-size:.7rem;letter-spacing:.1em;text-transform:uppercase;transition:all .2s;}
.type-opt-inner:hover{border-color:rgba(139,0,0,.5);color:var(--pale);}
.type-opt input:checked + .type-opt-inner{border-color:var(--gold);color:var(--gold);background:rgba(201,168,76,.07);}
.type-opt-sigil{font-size:1rem;width:1.2rem;text-align:center;}

/* READ-ONLY MODE */
.readonly-banner{background:linear-gradient(90deg,rgba(201,168,76,.08),rgba(201,168,76,.04));border-bottom:1px solid rgba(201,168,76,.2);padding:.6rem 2.5rem;font-family:'Cinzel',serif;font-size:.65rem;letter-spacing:.25em;text-transform:uppercase;color:var(--gold);display:flex;align-items:center;justify-content:space-between;gap:1rem;}
.readonly-banner span{opacity:.7;}
.sheet-field-input[readonly]{opacity:.75;cursor:default;border-bottom-style:dashed;}
.sheet-textarea[readonly]{opacity:.75;cursor:default;resize:none;}
body.readonly .attr-dot{cursor:default;pointer-events:none;}
body.readonly .health-box{cursor:default;pointer-events:none;}
body.readonly .wp-box{cursor:default;pointer-events:none;}
body.readonly .rage-box{cursor:default;pointer-events:none;}
body.readonly .gnosis-box{cursor:default;pointer-events:none;}
body.readonly .glam-box{cursor:default;pointer-events:none;}
body.readonly .ban-box{cursor:default;pointer-events:none;}
body.readonly .nightmare-box{cursor:default;pointer-events:none;}
body.readonly .renown-pip{cursor:default;pointer-events:none;}
body.readonly .discipline-name-input{pointer-events:none;opacity:.75;}

/* In read-only sheet views, render readonly inputs / textareas / disabled
   selects as plain text (no field box, no underline) so the sheet reads
   like a document instead of a non-interactive form. Text remains
   selectable for copy. */
body.readonly .sheet-body input[readonly],
body.readonly .sheet-body textarea[readonly]{
  border:none !important;
  border-bottom:none !important;
  background:transparent !important;
  padding:0 !important;
  box-shadow:none !important;
  cursor:text;
}
body.readonly .sheet-body input[readonly]:focus,
body.readonly .sheet-body textarea[readonly]:focus{outline:none !important;}
body.readonly .sheet-body select:disabled{
  appearance:none;
  -webkit-appearance:none;
  -moz-appearance:none;
  background:transparent !important;
  border:none !important;
  border-bottom:none !important;
  padding:0 !important;
  color:inherit !important;
  opacity:1;
  pointer-events:none;
}
/* Drop the dashed/dotted hint borders that several field types add on
   their own selectors. */
body.readonly .sheet-body .dnd-atk-type,
body.readonly .sheet-body .dnd-feat-source,
body.readonly .sheet-body .dnd-class-lvl,
body.readonly .sheet-body .dnd-class-sep{border:none !important;}
/* Empty disabled inputs / textareas would render as zero-width text — give
   them a thin placeholder dash so you can see "this field had no value".
   Skip when the field naturally has hint text (placeholder attribute). */
body.readonly .sheet-body input[readonly]:placeholder-shown,
body.readonly .sheet-body textarea[readonly]:placeholder-shown{color:var(--silver);opacity:.5;}

/* VISIBILITY / SHARE TOGGLE */
.visibility-label{display:flex;align-items:center;}
.visibility-select{background:rgba(0,0,0,.35);border:1px solid rgba(139,0,0,.3);color:var(--silver);font-family:'Cinzel',serif;font-size:.58rem;letter-spacing:.12em;text-transform:uppercase;padding:.35rem .6rem;cursor:pointer;outline:none;transition:border-color .3s;}
.visibility-select:hover,.visibility-select:focus{border-color:var(--blood);color:var(--pale);}
.visibility-select option{background:var(--dusk);color:var(--bone);font-family:'Cinzel',serif;}
.toggle-track{width:32px;height:16px;background:rgba(139,0,0,.2);border:1px solid rgba(139,0,0,.35);border-radius:8px;position:relative;transition:all .3s;flex-shrink:0;}
.toggle-track::after{content:'';position:absolute;top:2px;left:2px;width:10px;height:10px;border-radius:50%;background:var(--silver);transition:all .3s;}

/* BROWSE inputs */
.browse-search-input{background:rgba(0,0,0,.4);border:1px solid rgba(139,0,0,.25);color:var(--bone);font-family:'EB Garamond',serif;font-size:.9rem;padding:.4rem .8rem;outline:none;width:220px;transition:border-color .3s;}
.browse-search-input:focus{border-color:rgba(139,0,0,.5);}
.browse-search-input::placeholder{color:rgba(168,152,128,.35);}
.browse-type-select{background:rgba(0,0,0,.4);border:1px solid rgba(139,0,0,.25);color:var(--silver);font-family:'Cinzel',serif;font-size:.6rem;letter-spacing:.1em;text-transform:uppercase;padding:.4rem .7rem;cursor:pointer;outline:none;transition:border-color .3s;}
.browse-type-select:focus,.browse-type-select:hover{border-color:var(--blood);color:var(--pale);}
.browse-type-select option{background:var(--dusk);color:var(--bone);font-family:'Cinzel',serif;text-transform:uppercase;letter-spacing:.1em;}

/* ACCOUNT sections */
.account-section{background:linear-gradient(135deg,rgba(30,17,24,.8),rgba(18,9,14,.9));border:1px solid rgba(139,0,0,.2);padding:1.8rem;margin-bottom:1.5rem;}
.account-section-title{font-family:'Cinzel',serif;font-size:.65rem;letter-spacing:.45em;text-transform:uppercase;color:var(--blood-bright);margin-bottom:1.4rem;padding-bottom:.7rem;border-bottom:1px solid rgba(139,0,0,.15);}
.account-row{display:flex;align-items:center;justify-content:space-between;padding:.6rem 0;border-bottom:1px solid rgba(139,0,0,.08);gap:1rem;}
.account-row:last-child{border-bottom:none;}
.account-row-label{font-family:'Cinzel',serif;font-size:.65rem;letter-spacing:.2em;text-transform:uppercase;color:var(--silver);}
.account-row-value{color:var(--bone);font-size:.95rem;}
.account-row-value.muted{color:var(--silver);font-style:italic;font-size:.85rem;}
.btn-sm{padding:.35rem .9rem;background:none;border:1px solid rgba(139,0,0,.35);color:var(--silver);font-family:'Cinzel',serif;font-size:.6rem;letter-spacing:.15em;text-transform:uppercase;cursor:pointer;transition:all .3s;white-space:nowrap;}
.btn-sm:hover{border-color:var(--blood);color:var(--pale);background:rgba(139,0,0,.08);}
.btn-sm.danger{border-color:rgba(220,38,38,.3);}
.btn-sm.danger:hover{border-color:#f44;color:#f66;background:rgba(220,38,38,.05);}
.btn-sm.success{border-color:rgba(22,163,74,.35);}
.btn-sm.success:hover{border-color:var(--wolf-mid);color:var(--wolf-bright);background:rgba(22,163,74,.08);}
.inline-form{display:flex;gap:.6rem;align-items:center;flex-wrap:wrap;margin-top:.8rem;}
.inline-input{background:rgba(0,0,0,.4);border:1px solid rgba(139,0,0,.25);border-bottom-color:rgba(139,0,0,.5);color:var(--bone);font-family:'EB Garamond',serif;font-size:.95rem;padding:.45rem .7rem;outline:none;transition:border-color .3s;flex:1;min-width:150px;}
.inline-input:focus{border-color:rgba(139,0,0,.65);}
.inline-input::placeholder{color:rgba(168,152,128,.35);}
.form-feedback{font-size:.8rem;margin-top:.5rem;min-height:1.1em;}
.form-feedback.ok{color:var(--wolf-bright);}
.form-feedback.err{color:#f87171;}

/* Stats bar in account */
.stat-bar-row{display:flex;align-items:center;gap:1rem;margin-bottom:.5rem;}
.stat-bar-label{font-family:'Cinzel',serif;font-size:.6rem;letter-spacing:.2em;text-transform:uppercase;color:var(--silver);min-width:90px;}
.stat-bar-track{flex:1;height:4px;background:rgba(139,0,0,.15);border-radius:2px;overflow:hidden;}
.stat-bar-fill{height:100%;background:var(--blood-bright);border-radius:2px;transition:width .5s ease;}
.stat-bar-num{font-size:.8rem;color:var(--silver);min-width:24px;text-align:right;}

/* ADMIN tables and controls */
.admin-stat-pill{background:rgba(201,168,76,.07);border:1px solid rgba(201,168,76,.2);padding:.4rem 1.2rem;font-family:'Cinzel',serif;font-size:.65rem;letter-spacing:.15em;text-transform:uppercase;color:var(--gold);text-align:center;}
.admin-stat-pill strong{display:block;font-size:1.2rem;color:var(--bone);}
.admin-user-table{width:100%;border-collapse:collapse;font-size:.85rem;}
.admin-user-table th{font-family:'Cinzel',serif;font-size:.6rem;letter-spacing:.2em;text-transform:uppercase;color:var(--silver);border-bottom:1px solid rgba(139,0,0,.2);padding:.6rem 1rem;text-align:left;}
.admin-user-table td{padding:.6rem 1rem;border-bottom:1px solid rgba(139,0,0,.08);vertical-align:middle;}
.admin-user-table tr:hover td{background:rgba(139,0,0,.04);}
.role-badge{display:inline-block;padding:.15rem .55rem;font-family:'Cinzel',serif;font-size:.55rem;letter-spacing:.15em;text-transform:uppercase;border-radius:2px;}
.role-badge.superadmin{background:rgba(201,168,76,.15);color:var(--gold);border:1px solid rgba(201,168,76,.4);}
.role-badge.admin{background:rgba(139,0,0,.15);color:var(--blood-bright);border:1px solid rgba(139,0,0,.3);}
.role-badge.user{background:rgba(168,152,128,.1);color:var(--silver);border:1px solid rgba(168,152,128,.2);}
.admin-actions{display:flex;gap:.4rem;align-items:center;}
.btn-admin-sm{background:none;border:1px solid rgba(139,0,0,.3);color:var(--silver);font-family:'Cinzel',serif;font-size:.55rem;letter-spacing:.1em;text-transform:uppercase;padding:.2rem .6rem;cursor:pointer;transition:all .25s;}
.btn-admin-sm:hover{border-color:var(--blood);color:var(--pale);}
.btn-admin-sm.danger{border-color:rgba(139,0,0,.4);}
.btn-admin-sm.danger:hover{background:rgba(139,0,0,.15);color:#ff6b6b;}
.btn-admin-sm.promote{border-color:rgba(201,168,76,.3);}
.btn-admin-sm.promote:hover{background:rgba(201,168,76,.1);color:var(--gold);}
.admin-search{background:rgba(0,0,0,.35);border:1px solid rgba(139,0,0,.2);color:var(--bone);font-family:'EB Garamond',serif;font-size:.9rem;padding:.4rem .8rem;outline:none;width:260px;margin:.8rem 2rem;}
.admin-search:focus{border-color:rgba(139,0,0,.5);}
.admin-tab{background:none;border:none;border-bottom:2px solid transparent;color:var(--silver);font-family:'Cinzel',serif;font-size:.62rem;letter-spacing:.2em;text-transform:uppercase;padding:.6rem 1.2rem;cursor:pointer;transition:all .2s;margin-bottom:-1px;}
.admin-tab:hover{color:var(--pale);}
.admin-tab.active{color:var(--bone);border-bottom-color:var(--blood);}
.reports-badge{display:inline-block;background:#b91c1c;color:#fff;font-size:.55rem;font-family:'Cinzel',serif;padding:.1rem .35rem;border-radius:9px;margin-left:.35rem;vertical-align:middle;}

/* Admin sheet list rows */
.admin-sheet-row{display:flex;align-items:center;gap:.8rem;padding:.6rem .8rem;border:1px solid rgba(139,0,0,.12);background:rgba(30,17,24,.4);transition:background .2s;cursor:pointer;}
.admin-sheet-row:hover{background:rgba(139,0,0,.08);}
.admin-sheet-row-portrait{width:36px;height:36px;object-fit:cover;border:1px solid rgba(139,0,0,.2);flex-shrink:0;background:rgba(139,0,0,.06);}
.admin-sheet-row-portrait-placeholder{width:36px;height:36px;display:flex;align-items:center;justify-content:center;font-size:1.1rem;border:1px solid rgba(139,0,0,.15);background:rgba(139,0,0,.06);flex-shrink:0;}
.admin-sheet-row-info{flex:1;min-width:0;}
.admin-sheet-row-name{font-family:'Cinzel',serif;font-size:.75rem;color:var(--bone);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.admin-sheet-row-meta{font-family:'EB Garamond',serif;font-size:.78rem;color:var(--silver);margin-top:.1rem;}
.admin-sheet-row-vis{font-family:'Cinzel',serif;font-size:.52rem;letter-spacing:.12em;text-transform:uppercase;padding:.12rem .4rem;border:1px solid;flex-shrink:0;}
.admin-sheet-row-vis.public{color:#4ade80;border-color:rgba(74,222,128,.3);}
.admin-sheet-row-vis.unlisted{color:var(--gold);border-color:rgba(201,168,76,.3);}
.admin-sheet-row-vis.private{color:#f87171;border-color:rgba(248,113,113,.3);}

/* GALLERY MODAL */
.gallery-modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.88);display:none;align-items:center;justify-content:center;z-index:300;backdrop-filter:blur(6px);}
.gallery-modal-overlay.active{display:flex;}
.gallery-modal{background:linear-gradient(135deg,var(--dusk),var(--shadow));border:1px solid rgba(139,0,0,.3);border-top:2px solid var(--blood);padding:2rem;width:100%;max-width:700px;max-height:88vh;display:flex;flex-direction:column;gap:1rem;animation:fadeUp .3s ease;}
.gallery-modal-header{display:flex;align-items:center;justify-content:space-between;flex-shrink:0;}
.gallery-modal-title{font-family:'Cinzel',serif;font-size:.9rem;color:var(--bone);}
.gallery-modal-close{background:none;border:none;color:var(--silver);font-size:1.2rem;cursor:pointer;line-height:1;padding:.2rem .5rem;transition:color .2s;}
.gallery-modal-close:hover{color:var(--pale);}
.gallery-modal-toolbar{display:flex;align-items:center;gap:.8rem;flex-shrink:0;padding-bottom:1rem;border-bottom:1px solid rgba(139,0,0,.15);flex-wrap:wrap;}
.gallery-modal-upload-label{display:inline-block;padding:.4rem 1rem;background:linear-gradient(135deg,rgba(139,0,0,.2),rgba(139,0,0,.08));border:1px solid rgba(139,0,0,.4);color:var(--pale);font-family:'Cinzel',serif;font-size:.6rem;letter-spacing:.2em;text-transform:uppercase;cursor:pointer;transition:all .3s;}
.gallery-modal-upload-label:hover{border-color:var(--blood-bright);background:linear-gradient(135deg,rgba(139,0,0,.35),rgba(139,0,0,.15));}
#gallery-modal-file-input{display:none;}
.gallery-modal-status{font-size:.8rem;color:var(--silver);}
.gallery-modal-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:.8rem;overflow-y:auto;flex:1;}
.gallery-modal-grid::-webkit-scrollbar{width:4px;}
.gallery-modal-grid::-webkit-scrollbar-thumb{background:rgba(139,0,0,.4);border-radius:2px;}
.gallery-item{position:relative;cursor:pointer;border:2px solid transparent;transition:all .25s;}
.gallery-item:hover{border-color:rgba(168,152,128,.4);}
.gallery-item.is-portrait{border-color:var(--gold);box-shadow:0 0 10px rgba(201,168,76,.25);}
.gallery-item img{width:100%;height:120px;object-fit:cover;object-position:center top;display:block;}
.gallery-item-label{position:absolute;bottom:0;left:0;right:0;background:rgba(0,0,0,.72);font-family:'Cinzel',serif;font-size:.45rem;letter-spacing:.15em;text-transform:uppercase;text-align:center;padding:.2rem 0;color:var(--gold);opacity:0;transition:opacity .2s;}
.gallery-item.is-portrait .gallery-item-label,.gallery-item:hover .gallery-item-label{opacity:1;}
.gallery-item-del{position:absolute;top:3px;right:3px;background:rgba(0,0,0,.78);border:none;color:#f87171;font-size:.7rem;width:20px;height:20px;cursor:pointer;display:none;align-items:center;justify-content:center;border-radius:2px;}
.gallery-item:hover .gallery-item-del{display:flex;}
.gallery-item-del:hover{background:rgba(220,38,38,.65);}
.gallery-empty{grid-column:1/-1;text-align:center;padding:2.5rem 1rem;color:var(--silver);font-size:.85rem;opacity:.55;}
.gallery-modal-footer{display:flex;gap:.8rem;flex-shrink:0;padding-top:1rem;border-top:1px solid rgba(139,0,0,.15);}

/* ===== DICE ROLLER ===== */
.dice-panel{position:fixed;top:auto;left:auto;right:24px;bottom:24px;width:320px;max-width:calc(100vw - 32px);max-height:calc(100vh - 48px);background:var(--shadow);border:1px solid rgba(201,168,76,.35);box-shadow:0 12px 40px rgba(0,0,0,.65),0 0 24px rgba(201,168,76,.08);z-index:9990;flex-direction:column;font-family:'EB Garamond',serif;color:var(--pale);border-radius:2px;overflow:hidden;}
.dice-panel-handle{display:flex;align-items:center;justify-content:space-between;padding:.55rem .8rem;background:linear-gradient(180deg,rgba(201,168,76,.12),rgba(201,168,76,.04));border-bottom:1px solid rgba(201,168,76,.25);cursor:move;user-select:none;font-family:'Cinzel',serif;font-size:.65rem;letter-spacing:.25em;text-transform:uppercase;color:var(--gold);}
.dice-close{background:none;border:none;color:var(--silver);font-size:1rem;cursor:pointer;padding:0 .2rem;line-height:1;}
.dice-close:hover{color:var(--gold);}
.dice-panel-body{display:flex;flex-direction:column;gap:.6rem;padding:.7rem .8rem;overflow-y:auto;}
.dice-desc-input{width:100%;background:rgba(0,0,0,.4);border:1px solid rgba(168,152,128,.25);color:var(--pale);padding:.4rem .6rem;font-family:'EB Garamond',serif;font-style:italic;font-size:.82rem;border-radius:2px;}
.dice-desc-input::placeholder{color:var(--silver);opacity:.55;font-style:italic;}
.dice-desc-input:focus{outline:none;border-color:var(--gold);font-style:normal;}
.dice-result-desc{font-family:'EB Garamond',serif;font-style:italic;font-size:.85rem;color:var(--gold);margin-bottom:.25rem;}
.dice-history-desc{font-family:'EB Garamond',serif;font-style:italic;font-size:.78rem;color:var(--gold);margin-bottom:.1rem;}
.dice-quickrow{display:flex;flex-wrap:wrap;gap:.3rem;}
.dice-btn{flex:1 1 auto;min-width:36px;background:rgba(201,168,76,.06);border:1px solid rgba(201,168,76,.3);color:var(--pale);padding:.25rem .15rem;cursor:pointer;border-radius:2px;transition:background .12s,border-color .12s,color .12s;display:flex;align-items:center;justify-content:center;}
.dice-btn:hover{background:rgba(201,168,76,.15);border-color:var(--gold);color:var(--gold);}
.dice-icon{width:28px;height:28px;display:block;}
.dice-pool{min-height:34px;display:flex;flex-wrap:wrap;gap:.3rem;padding:.4rem .5rem;background:rgba(0,0,0,.3);border:1px solid rgba(168,152,128,.18);border-radius:2px;align-items:center;}
.dice-pool-empty{color:var(--silver);font-size:.72rem;font-style:italic;opacity:.65;}
.dice-pool-chip{display:inline-flex;align-items:center;gap:.15rem;background:rgba(201,168,76,.12);border:1px solid rgba(201,168,76,.35);padding:.15rem .35rem;border-radius:2px;font-size:.72rem;color:var(--pale);}
.dice-pool-chip strong{font-family:'Cinzel',serif;letter-spacing:.05em;color:var(--gold);font-weight:500;}
.dice-pool-chip.dice-pool-mod{color:var(--gold);font-family:'Cinzel',serif;letter-spacing:.05em;padding:.2rem .45rem;}
.dice-chip-btn{background:none;border:none;color:var(--silver);cursor:pointer;font-size:.85rem;line-height:1;padding:0 .15rem;}
.dice-chip-btn:hover{color:var(--gold);}
.dice-chip-x:hover{color:var(--rage-bright);}
.dice-modrow{display:flex;gap:.35rem;align-items:center;flex-wrap:nowrap;}
.dice-cmdrow{display:flex;gap:.4rem;align-items:center;flex-wrap:wrap;}
.dice-clearrow{display:flex;justify-content:flex-end;}
.dice-modlabel{font-family:'Cinzel',serif;font-size:.55rem;letter-spacing:.15em;text-transform:uppercase;color:var(--silver);flex-shrink:0;}
.dice-mod-input{flex:1 1 0;min-width:0;background:rgba(0,0,0,.4);border:1px solid rgba(168,152,128,.25);color:var(--pale);padding:.3rem .4rem;font-family:'EB Garamond',serif;font-size:.85rem;border-radius:2px;width:auto;text-align:center;}
.dice-mod-input:focus,.dice-cmd-input:focus{outline:none;border-color:var(--gold);}
.dice-cmd-input{flex:1;background:rgba(0,0,0,.4);border:1px solid rgba(168,152,128,.25);color:var(--pale);padding:.4rem .6rem;font-family:'EB Garamond',serif;font-size:.85rem;border-radius:2px;}
.dice-clearbtn{background:none;border:1px solid rgba(168,152,128,.3);color:var(--silver);font-family:'Cinzel',serif;font-size:.55rem;letter-spacing:.18em;text-transform:uppercase;padding:.3rem .5rem;cursor:pointer;border-radius:2px;}
.dice-clearbtn:hover{color:var(--gold);border-color:var(--gold);}
.dice-rollbtn{background:linear-gradient(180deg,rgba(201,168,76,.25),rgba(201,168,76,.12));border:1px solid var(--gold);color:var(--gold);font-family:'Cinzel',serif;font-size:.7rem;letter-spacing:.25em;text-transform:uppercase;padding:.4rem 1rem;cursor:pointer;border-radius:2px;}
.dice-rollbtn:hover{background:linear-gradient(180deg,rgba(201,168,76,.4),rgba(201,168,76,.2));color:var(--bone);}
.dice-result{min-height:32px;padding:.5rem .6rem;background:rgba(0,0,0,.3);border:1px solid rgba(201,168,76,.18);border-radius:2px;}
.dice-result:empty{display:none;}
.dice-result-cmd{font-family:'Cinzel',serif;font-size:.6rem;letter-spacing:.18em;text-transform:uppercase;color:var(--silver);margin-bottom:.3rem;}
.dice-result-breakdown{display:flex;flex-wrap:wrap;gap:.4rem;align-items:center;margin-bottom:.4rem;}
.dice-result-grp{display:inline-flex;align-items:center;flex-wrap:wrap;gap:.2rem;}
.dice-result-grp-label{font-family:'Cinzel',serif;font-size:.55rem;letter-spacing:.15em;text-transform:uppercase;color:var(--silver);margin-right:.2rem;}
.dice-roll{display:inline-block;min-width:22px;text-align:center;padding:.1rem .3rem;background:rgba(201,168,76,.1);border:1px solid rgba(201,168,76,.3);font-family:'Cinzel',serif;font-size:.75rem;color:var(--gold);border-radius:2px;}
.dice-roll.is-hit{background:rgba(34,197,94,.18);border-color:rgba(74,222,128,.65);color:#bbf7d0;font-weight:700;box-shadow:0 0 4px rgba(74,222,128,.25);}
.dice-result-target-tag{font-family:'Cinzel',serif;font-size:.5rem;letter-spacing:.15em;text-transform:uppercase;color:var(--silver);opacity:.75;padding:.1rem .4rem;border:1px solid rgba(168,152,128,.3);border-radius:2px;margin-left:.4rem;}
.dice-result-success strong{color:#86efac;}
.dice-result-total-secondary{font-family:'Cinzel',serif;font-size:.55rem;letter-spacing:.15em;text-transform:uppercase;color:var(--silver);opacity:.6;margin-left:auto;}
.dice-result-mod{font-family:'Cinzel',serif;color:var(--gold);font-size:.8rem;letter-spacing:.05em;}
.dice-result-auto{font-family:'Cinzel',serif;color:var(--gold);font-size:.6rem;letter-spacing:.15em;text-transform:uppercase;padding:.15rem .45rem;border:1px solid rgba(201,168,76,.45);border-radius:2px;background:rgba(201,168,76,.08);}
.dice-pool-chip.dice-pool-auto{color:var(--gold);font-family:'Cinzel',serif;font-size:.55rem;letter-spacing:.12em;text-transform:uppercase;padding:.2rem .45rem;background:rgba(201,168,76,.06);border-style:dashed;}
.dice-pool-chip.dice-pool-target{color:var(--silver);font-family:'Cinzel',serif;font-size:.55rem;letter-spacing:.15em;text-transform:uppercase;padding:.2rem .45rem;background:rgba(168,152,128,.08);border-color:rgba(168,152,128,.35);}
.dice-result-total{display:flex;justify-content:space-between;align-items:baseline;border-top:1px solid rgba(201,168,76,.18);padding-top:.35rem;}
.dice-result-total span{font-family:'Cinzel',serif;font-size:.6rem;letter-spacing:.25em;text-transform:uppercase;color:var(--silver);}
.dice-result-total strong{font-family:'Cinzel',serif;font-size:1.4rem;color:var(--gold);}
.dice-history-header{display:flex;justify-content:space-between;align-items:baseline;font-family:'Cinzel',serif;font-size:.6rem;letter-spacing:.25em;text-transform:uppercase;color:var(--silver);border-top:1px solid rgba(139,0,0,.18);padding-top:.5rem;}
.dice-history-clear{background:none;border:none;color:var(--silver);font-family:'Cinzel',serif;font-size:.5rem;letter-spacing:.18em;text-transform:uppercase;cursor:pointer;padding:0;}
.dice-history-clear:hover{color:var(--rage-bright);}
.dice-history{max-height:160px;overflow-y:auto;display:flex;flex-direction:column;gap:.25rem;}
.dice-history-empty{color:var(--silver);font-size:.7rem;font-style:italic;opacity:.55;padding:.4rem 0;}
.dice-history-item{padding:.3rem .4rem;background:rgba(0,0,0,.25);border-left:2px solid rgba(201,168,76,.3);font-size:.72rem;}
.dice-history-row1{display:flex;justify-content:space-between;font-family:'Cinzel',serif;letter-spacing:.1em;font-size:.6rem;text-transform:uppercase;}
.dice-history-cmd{color:var(--gold);}
.dice-history-time{color:var(--silver);opacity:.65;}
.dice-history-row2{color:var(--pale);opacity:.85;margin-top:.15rem;}
.dice-history-row2 strong{color:var(--gold);}
@media (max-width:640px){
  /* Mobile: dock full-width and cap at viewport. !important so a stray
     inline left/right from a previous desktop drag can't unanchor the
     panel and let it snap to its natural (overflowing) content width. */
  .dice-panel{right:8px !important;bottom:8px !important;left:8px !important;top:auto !important;width:auto !important;max-width:calc(100vw - 16px);}
  .dice-panel-handle{cursor:default;}
}

/* ===== LANDING + SECTION TOGGLE ===== */
.landing-hero{text-align:center;padding:3rem 1.5rem 1.5rem;}
.landing-hero h2{font-family:'Cinzel',serif;font-size:.7rem;letter-spacing:.35em;text-transform:uppercase;color:var(--silver);opacity:.7;margin-bottom:.5rem;}
.landing-title{font-family:'Cinzel',serif;font-size:1.8rem;letter-spacing:.15em;color:var(--gold);margin-bottom:1rem;}
.landing-sub{font-family:'EB Garamond',serif;font-size:.95rem;color:var(--pale);opacity:.75;max-width:560px;margin:0 auto;line-height:1.5;}
.landing-cards{display:flex;gap:1.5rem;justify-content:center;align-items:stretch;flex-wrap:wrap;padding:1.5rem;max-width:920px;margin:0 auto;}
.landing-card{flex:1 1 320px;max-width:420px;background:rgba(201,168,76,.04);border:1px solid rgba(201,168,76,.25);color:var(--pale);font-family:'EB Garamond',serif;padding:2.5rem 1.8rem;cursor:pointer;text-align:center;border-radius:3px;transition:background .15s,border-color .15s,transform .12s;display:flex;flex-direction:column;align-items:center;gap:.6rem;}
.landing-card:hover{background:rgba(201,168,76,.12);border-color:var(--gold);transform:translateY(-2px);}
.landing-card-icon{font-size:2.4rem;color:var(--gold);line-height:1;}
.landing-card-title{font-family:'Cinzel',serif;font-size:1.1rem;letter-spacing:.18em;text-transform:uppercase;color:var(--gold);}
.landing-card-sub{font-size:.92rem;opacity:.75;max-width:300px;line-height:1.45;}

.nav-left{display:flex;align-items:center;gap:1rem;flex-shrink:0;}
.section-toggle{display:flex;justify-content:center;padding:1rem 1rem .25rem;}
.section-toggle.nav-toggle{padding:0;flex-shrink:0;}
.section-toggle-btn{background:rgba(0,0,0,.3);border:1px solid rgba(168,152,128,.25);color:var(--silver);font-family:'Cinzel',serif;font-size:.6rem;letter-spacing:.2em;text-transform:uppercase;padding:.55rem 1.4rem;cursor:pointer;transition:background .12s,color .12s,border-color .12s;}
.nav-toggle .section-toggle-btn{padding:.4rem .9rem;font-size:.55rem;letter-spacing:.15em;}
.section-toggle-btn:first-child{border-radius:3px 0 0 3px;border-right-width:0;}
.section-toggle-btn:last-child{border-radius:0 3px 3px 0;}
.section-toggle-btn:hover:not(.active){background:rgba(201,168,76,.08);color:var(--pale);}
.section-toggle-btn.active{background:linear-gradient(180deg,rgba(201,168,76,.25),rgba(201,168,76,.12));color:var(--gold);border-color:var(--gold);cursor:default;}
.section-toggle-btn.active:first-child{border-right-width:1px;}
.section-toggle-btn.active:first-child + .section-toggle-btn{border-left-color:transparent;}

/* ===== CHRONICLE CARDS ===== */
.chronicles-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1.5rem;}
.chronicle-card{background:linear-gradient(135deg,rgba(30,17,24,.9),rgba(18,9,14,.95));border:1px solid rgba(201,168,76,.25);border-top:2px solid rgba(201,168,76,.45);cursor:pointer;transition:all .25s;position:relative;overflow:hidden;display:flex;flex-direction:column;animation:fadeUp .35s ease both;}
.chronicle-card::before{content:'';position:absolute;inset:0;background:linear-gradient(135deg,rgba(201,168,76,.05),transparent);opacity:0;transition:opacity .25s;pointer-events:none;}
.chronicle-card:hover{border-color:rgba(201,168,76,.55);box-shadow:0 8px 30px rgba(0,0,0,.5),0 0 20px rgba(201,168,76,.06);transform:translateY(-2px);}
.chronicle-card:hover::before{opacity:1;}
.chronicle-card-clickzone{display:flex;align-items:center;gap:.9rem;padding:1.1rem 1.1rem .7rem;position:relative;z-index:1;}
.chronicle-card-icon{flex-shrink:0;width:56px;height:56px;display:flex;align-items:center;justify-content:center;background:rgba(201,168,76,.08);border:1px solid rgba(201,168,76,.3);font-size:1.6rem;color:var(--gold);border-radius:2px;}
.chronicle-card-body{flex:1;min-width:0;}
.chronicle-card-name{font-family:'Cinzel',serif;font-size:.95rem;letter-spacing:.08em;color:var(--gold);margin-bottom:.2rem;overflow:hidden;text-overflow:ellipsis;}
.chronicle-card-meta{font-family:'Cinzel',serif;font-size:.5rem;letter-spacing:.18em;text-transform:uppercase;color:var(--silver);opacity:.75;}
.chronicle-card-actions{display:flex;gap:.4rem;padding:.6rem 1rem 1rem;position:relative;z-index:1;flex-wrap:wrap;}
.chronicle-card-actions .btn-action{flex:1 1 auto;font-size:.55rem;padding:.4rem .6rem;}
.chronicle-card-actions .btn-action.chat-primary{flex:2 1 auto;background:linear-gradient(180deg,rgba(201,168,76,.22),rgba(201,168,76,.1));border-color:var(--gold);color:var(--gold);}
.chronicle-card-actions .btn-action.chat-primary:hover{background:linear-gradient(180deg,rgba(201,168,76,.35),rgba(201,168,76,.18));}
.chronicle-card-actions .btn-action.danger{color:#f87171;opacity:.7;}
.chronicle-card-actions .btn-action.danger:hover{opacity:1;background:rgba(220,38,38,.12);border-color:rgba(248,113,113,.4);}

@media (max-width:640px){
  .landing-title{font-size:1.4rem;}
  .landing-cards{gap:1rem;padding:1rem;}
  .landing-card{padding:1.8rem 1.2rem;}
  .section-toggle-btn{padding:.45rem .9rem;font-size:.55rem;letter-spacing:.15em;}
}

/* ===== SHEET: TABS + VERSIONS PANEL ===== */
.sheet-tabs{display:flex;gap:0;padding:0 2.5rem;border-bottom:1px solid rgba(139,0,0,.18);background:rgba(0,0,0,.18);}
/* In read-only mode the Versions tab isn't actionable (viewer can't manage
   linked chronicles or create versions), but Sheet/Profile/Spells remain
   useful info — so hide only the Versions button rather than the row. */
body.readonly #sheet-tab-versions{display:none;}
.sheet-tab{background:none;border:none;border-bottom:2px solid transparent;color:var(--silver);font-family:'Cinzel',serif;font-size:.65rem;letter-spacing:.22em;text-transform:uppercase;padding:.85rem 1.4rem;cursor:pointer;transition:color .15s,border-color .15s;}
.sheet-tab:hover:not(.active){color:var(--pale);}
.sheet-tab.active{color:var(--gold);border-bottom-color:var(--gold);cursor:default;}
@media(max-width:640px){.sheet-tabs{padding:0 1rem;}.sheet-tab{padding:.6rem .9rem;font-size:.55rem;letter-spacing:.18em;}}
/* D&D sub-tab strip — secondary tab row under the basics header. Smaller
   than the main tabs, accent-coloured to match the D&D system tint, and
   positioned just below the portrait/basics box. */
.dnd-subtabs{display:flex;gap:0;padding:.4rem 2.5rem 0;border-bottom:1px solid rgba(180,83,9,.2);margin-bottom:1rem;}
.dnd-subtab{background:none;border:none;border-bottom:2px solid transparent;color:var(--silver);font-family:'Cinzel',serif;font-size:.55rem;letter-spacing:.2em;text-transform:uppercase;padding:.55rem 1.1rem;cursor:pointer;transition:color .15s,border-color .15s;}
.dnd-subtab:hover:not(.active){color:var(--pale);}
.dnd-subtab.active{color:#f59e0b;border-bottom-color:#f59e0b;cursor:default;}
@media(max-width:640px){.dnd-subtabs{padding:.3rem 1rem 0;}.dnd-subtab{padding:.45rem .7rem;font-size:.5rem;letter-spacing:.15em;}}

.sheet-versions-panel{padding:1.8rem 2.5rem 3rem;max-width:880px;margin:0 auto;display:flex;flex-direction:column;gap:2rem;}
.sheet-versions-inline{padding:1rem 1.2rem;background:rgba(201,168,76,.04);border:1px solid rgba(201,168,76,.2);border-radius:2px;}
.sheet-version-create{display:flex;gap:.5rem;align-items:center;}
.version-row-chron{display:inline-flex;align-items:center;gap:.25rem;margin-left:.6rem;padding:.1rem .45rem;font-family:'Cinzel',serif;font-size:.5rem;letter-spacing:.12em;text-transform:uppercase;border:1px solid transparent;border-radius:2px;vertical-align:middle;}
.version-row-chron.is-linked{color:var(--gold);background:rgba(201,168,76,.1);border-color:rgba(201,168,76,.35);}
.version-row-chron.is-pending{color:#fb923c;background:rgba(251,146,60,.08);border-color:rgba(251,146,60,.35);border-style:dashed;}
.version-row-chron.is-offsite{color:var(--silver);background:rgba(168,152,128,.06);border-color:rgba(168,152,128,.2);opacity:.85;}
@media(max-width:640px){.sheet-versions-panel{padding:1rem;}}

/* ===== SHEET: LINKED CHRONICLES ===== */
.sheet-linked-chronicles{margin-top:1rem;padding:.8rem 1rem;background:rgba(201,168,76,.04);border:1px solid rgba(201,168,76,.2);border-radius:2px;}
.sheet-linked-header{display:flex;align-items:baseline;gap:.7rem;flex-wrap:wrap;margin-bottom:.6rem;}
.sheet-linked-title{font-family:'Cinzel',serif;font-size:.62rem;letter-spacing:.22em;text-transform:uppercase;color:var(--gold);}
.sheet-linked-hint{font-family:'EB Garamond',serif;font-style:italic;font-size:.78rem;color:var(--silver);opacity:.65;}
.sheet-linked-list{display:flex;flex-wrap:wrap;gap:.4rem;margin-bottom:.5rem;min-height:1.6rem;}
.sheet-linked-empty{font-family:'EB Garamond',serif;font-size:.82rem;color:var(--silver);opacity:.55;font-style:italic;}
.sheet-linked-chip{display:inline-flex;align-items:center;gap:.35rem;padding:.3rem .55rem;background:rgba(201,168,76,.1);border:1px solid rgba(201,168,76,.3);border-radius:2px;font-family:'EB Garamond',serif;font-size:.85rem;color:var(--pale);}
.sheet-linked-chip.is-pending{border-style:dashed;opacity:.85;}
.sheet-linked-chip-status{font-family:'Cinzel',serif;font-size:.48rem;letter-spacing:.15em;text-transform:uppercase;opacity:.8;}
.sheet-linked-chip-version{font-family:'Cinzel',serif;font-size:.55rem;letter-spacing:.1em;color:var(--silver);opacity:.75;}
.sheet-linked-chip.is-pending .sheet-linked-chip-status{color:#fb923c;}
.sheet-linked-chip:not(.is-pending) .sheet-linked-chip-status{color:var(--gold);}
.sheet-linked-chip-x{background:none;border:none;color:var(--silver);font-size:.85rem;cursor:pointer;padding:0 .15rem;line-height:1;}
.sheet-linked-chip-x:hover{color:#f87171;}
.sheet-linked-chip-lock{font-size:.75rem;opacity:.85;cursor:help;}
.sheet-linked-chip-pending{font-family:'Cinzel',serif;font-size:.48rem;letter-spacing:.15em;text-transform:uppercase;color:#fb923c;opacity:.95;cursor:help;}
.sheet-linked-chip.has-pending-changes{border-color:rgba(251,146,60,.5);background:rgba(251,146,60,.08);}
.sheet-linked-add{display:flex;gap:.4rem;align-items:center;}
.sheet-linked-picker{flex:1;background:rgba(0,0,0,.4);border:1px solid rgba(168,152,128,.25);color:var(--pale);padding:.35rem .5rem;font-family:'EB Garamond',serif;font-size:.85rem;border-radius:2px;}
.sheet-linked-picker:focus{outline:none;border-color:var(--gold);}

.sheet-profile-section{padding:1rem 1.2rem;background:rgba(201,168,76,.04);border:1px solid rgba(201,168,76,.2);border-radius:2px;display:flex;flex-direction:column;gap:.6rem;}
.sheet-profile-textarea{width:100%;background:rgba(0,0,0,.4);border:1px solid rgba(168,152,128,.25);color:var(--pale);padding:.6rem .7rem;font-family:'EB Garamond',serif;font-size:.92rem;line-height:1.5;border-radius:2px;resize:vertical;min-height:120px;}
.sheet-profile-textarea:focus{outline:none;border-color:var(--gold);}

.chat-char-link{background:none;border:none;padding:0;font:inherit;color:inherit;cursor:pointer;text-decoration:none;}
.chat-char-link:hover{text-decoration:underline;}
.chat-profile-header{display:flex;align-items:center;gap:.8rem;margin-bottom:1rem;padding-bottom:.8rem;border-bottom:1px solid rgba(201,168,76,.18);}
.chat-profile-sigil{width:48px;height:48px;flex-shrink:0;background:rgba(201,168,76,.1);border:1px solid rgba(201,168,76,.4);display:flex;align-items:center;justify-content:center;font-size:1.6rem;color:var(--gold);border-radius:2px;}
.chat-profile-titles{flex:1;min-width:0;display:flex;flex-direction:column;gap:.15rem;}
.chat-profile-name{font-family:'Cinzel',serif;font-size:1.05rem;letter-spacing:.08em;color:var(--gold);}
.chat-profile-version{font-family:'EB Garamond',serif;font-style:italic;color:var(--silver);font-size:.85rem;}
.chat-profile-owner{font-family:'Cinzel',serif;font-size:.5rem;letter-spacing:.18em;text-transform:uppercase;color:var(--silver);opacity:.7;}
.chat-profile-text{font-family:'EB Garamond',serif;font-size:.95rem;line-height:1.55;color:var(--pale);white-space:pre-wrap;word-wrap:break-word;margin-bottom:.8rem;}
.chat-profile-empty{font-family:'EB Garamond',serif;font-style:italic;color:var(--silver);opacity:.55;text-align:center;padding:1.5rem 0;margin-bottom:.8rem;}

/* ===== CHAT ===== */
/* Chat screen is a flex column locked to the viewport so the composer
   stays anchored at the bottom and only the message list scrolls. */
#chat-screen.active{display:flex;flex-direction:column;height:100vh;min-height:0;overflow:hidden;}
#chat-screen > .top-nav,#chat-screen > .account-nav{flex-shrink:0;}
.chat-body{flex:1;min-height:0;display:flex;font-family:'EB Garamond',serif;color:var(--pale);}
.chat-sidebar{width:260px;flex-shrink:0;background:rgba(0,0,0,.25);border-right:1px solid rgba(139,0,0,.2);display:flex;flex-direction:column;overflow:hidden;}
.chat-sidebar-header{padding:.7rem .8rem;border-bottom:1px solid rgba(201,168,76,.18);}
.chat-sidebar-title{font-family:'Cinzel',serif;font-size:.72rem;letter-spacing:.18em;text-transform:uppercase;color:var(--gold);}
.chat-onboarding-banner{display:flex;flex-direction:column;gap:.4rem;padding:.6rem .7rem;background:rgba(201,168,76,.08);border-bottom:1px solid rgba(201,168,76,.25);font-family:'EB Garamond',serif;font-size:.78rem;color:var(--pale);line-height:1.4;}
.chat-onboarding-btn{background:rgba(201,168,76,.15);border:1px solid var(--gold);color:var(--gold);font-family:'Cinzel',serif;font-size:.5rem;letter-spacing:.18em;text-transform:uppercase;padding:.3rem .6rem;cursor:pointer;border-radius:2px;align-self:flex-start;}
.chat-onboarding-btn:hover{background:rgba(201,168,76,.28);}
.chat-tree{flex:1;overflow-y:auto;padding:.4rem 0;}
.chat-tree-empty{padding:1rem .8rem;color:var(--silver);font-size:.78rem;font-style:italic;opacity:.65;}
.chat-tree-row{display:flex;align-items:center;gap:.3rem;padding:.3rem .6rem;cursor:pointer;font-size:.85rem;line-height:1.2;border-left:2px solid transparent;}
.chat-tree-row:hover{background:rgba(201,168,76,.06);}
.chat-tree-current{background:rgba(201,168,76,.12);border-left-color:var(--gold);}
.chat-tree-arrow{display:inline-block;width:14px;text-align:center;color:var(--silver);font-size:.7rem;cursor:pointer;}
.chat-tree-arrow-blank{visibility:hidden;}
.chat-tree-icon{font-size:.78rem;width:18px;text-align:center;flex-shrink:0;}
.chat-tree-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.chat-tree-folder .chat-tree-name{color:var(--gold);font-family:'Cinzel',serif;font-size:.65rem;letter-spacing:.12em;text-transform:uppercase;}
.chat-tree-menu{background:none;border:none;color:var(--silver);font-size:1rem;padding:0 .3rem;cursor:pointer;opacity:0;line-height:1;}
.chat-tree-row:hover .chat-tree-menu{opacity:.7;}
.chat-tree-menu:hover{opacity:1;color:var(--gold);}
.chat-tree-unread{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--gold);box-shadow:0 0 6px rgba(201,168,76,.6);margin-left:.2rem;flex-shrink:0;}
.chat-tree-muted-icon{font-size:.7rem;opacity:.55;margin-left:.15rem;flex-shrink:0;}
.chat-tree-gm-icon{font-size:.7rem;opacity:.85;margin-right:.05rem;flex-shrink:0;}
.chat-editor-row.chat-editor-row-inline{flex-direction:row;align-items:center;gap:.5rem;}
.chat-editor-inline-label{font-family:'EB Garamond',serif;font-size:.82rem;color:var(--silver);line-height:1.4;}
.chat-tree-mention{display:inline-block;font-family:'Cinzel',serif;font-size:.6rem;font-weight:700;color:#f87171;background:rgba(248,113,113,.12);border:1px solid rgba(248,113,113,.55);border-radius:2px;padding:0 .25rem;margin-left:.2rem;line-height:1.1;flex-shrink:0;box-shadow:0 0 6px rgba(248,113,113,.35);}
.chat-tree-row.has-unread:not(.chat-tree-current) .chat-tree-name{color:var(--gold);font-weight:500;}
.chat-tree-row.has-mention:not(.chat-tree-current) .chat-tree-name{color:#fca5a5;font-weight:600;}
.chat-tree-row.is-muted .chat-tree-name{opacity:.55;}
.chat-tree-row.is-muted.has-unread .chat-tree-name{opacity:.7;}

/* In-message @mention rendering + "mentions me" full-message highlight */
.chat-mention{color:var(--gold);font-weight:600;background:rgba(201,168,76,.12);border-radius:2px;padding:0 .2rem;}
.chat-msg-mentions-me{background:linear-gradient(90deg,rgba(248,113,113,.08),transparent 75%);border-left:2px solid #f87171;padding-left:.5rem;margin-left:-.5rem;}
.chat-msg-mentions-me .chat-msg-text{color:var(--bone);}
.chat-msg-mentions-me .chat-mention{background:rgba(248,113,113,.18);color:#fca5a5;border:1px solid rgba(248,113,113,.4);}
.chat-tree-controls{display:flex;gap:.3rem;padding:.5rem .6rem;border-bottom:1px solid rgba(139,0,0,.15);}
.chat-tree-add{flex:1;background:rgba(201,168,76,.06);border:1px solid rgba(201,168,76,.3);color:var(--pale);font-family:'Cinzel',serif;font-size:.55rem;letter-spacing:.15em;text-transform:uppercase;padding:.35rem .3rem;cursor:pointer;border-radius:2px;}
.chat-tree-add:hover{background:rgba(201,168,76,.15);color:var(--gold);border-color:var(--gold);}
.chat-search-bar{position:relative;padding:.4rem .6rem;border-bottom:1px solid rgba(139,0,0,.15);}
.chat-search-bar input{width:100%;background:rgba(0,0,0,.4);border:1px solid rgba(168,152,128,.25);color:var(--pale);padding:.35rem .55rem;padding-right:1.6rem;font-family:'EB Garamond',serif;font-size:.85rem;border-radius:2px;box-sizing:border-box;}
.chat-search-bar input:focus{outline:none;border-color:var(--gold);}
.chat-search-clear{position:absolute;right:.85rem;top:50%;transform:translateY(-50%);background:none;border:none;color:var(--silver);font-size:1.2rem;line-height:1;cursor:pointer;padding:0 .25rem;opacity:.7;}
.chat-search-clear:hover{opacity:1;color:var(--pale);}
.chat-search-results{flex:1;overflow-y:auto;padding:.3rem 0;}
.chat-search-status{padding:.6rem .8rem;font-family:'EB Garamond',serif;font-size:.82rem;color:var(--silver);opacity:.7;font-style:italic;}
.chat-search-capped{border-top:1px dashed rgba(168,152,128,.2);margin-top:.2rem;}
.chat-search-hit{padding:.45rem .7rem;border-bottom:1px solid rgba(168,152,128,.1);cursor:pointer;}
.chat-search-hit:hover{background:rgba(139,0,0,.12);}
.chat-search-hit-meta{display:flex;justify-content:space-between;align-items:baseline;gap:.4rem;font-family:'Cinzel',serif;font-size:.55rem;letter-spacing:.12em;text-transform:uppercase;color:var(--gold);opacity:.85;margin-bottom:.15rem;}
.chat-search-channel{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.chat-search-when{color:var(--silver);opacity:.6;flex-shrink:0;}
.chat-search-hit-who{font-family:'EB Garamond',serif;font-size:.78rem;color:var(--silver);opacity:.85;margin-bottom:.15rem;}
.chat-search-char{color:var(--pale);font-weight:600;}
.chat-search-player{opacity:.7;}
.chat-search-kind{font-size:.78rem;}
.chat-search-deleted{color:#a55;font-style:italic;font-size:.72rem;}
.chat-search-hit-snippet{font-family:'EB Garamond',serif;font-size:.82rem;color:var(--pale);line-height:1.35;}
.chat-search-hit-snippet mark{background:rgba(212,175,55,.35);color:var(--pale);padding:0 .15em;border-radius:1px;}
.chat-msg-flash{animation:chat-msg-flash 2s ease-out;}
@keyframes chat-msg-flash{0%{background:rgba(212,175,55,.4);}100%{background:transparent;}}

/* DM screen */
#dm-screen.active{display:flex;flex-direction:column;height:100vh;min-height:0;overflow:hidden;}
.dm-tabs{display:flex;border-bottom:1px solid rgba(139,0,0,.2);}
.dm-tab{flex:1;background:transparent;border:none;border-bottom:2px solid transparent;color:var(--silver);font-family:'Cinzel',serif;font-size:.62rem;letter-spacing:.12em;text-transform:uppercase;padding:.55rem .3rem;cursor:pointer;opacity:.7;display:flex;align-items:center;justify-content:center;gap:.3rem;}
.dm-tab:hover{opacity:1;color:var(--pale);}
.dm-tab-active{opacity:1;color:var(--gold);border-bottom-color:var(--gold);background:rgba(201,168,76,.06);}
.dm-tab-badge{background:#f87171;color:#1a1410;font-size:.55rem;padding:.05rem .3rem;border-radius:8px;min-width:1rem;text-align:center;font-weight:700;}
.dm-privacy-banner{padding:.55rem .7rem;border-bottom:1px solid;font-family:'EB Garamond',serif;font-size:.78rem;line-height:1.4;}
.dm-privacy-ooc{background:rgba(110,180,140,.08);border-bottom-color:rgba(110,180,140,.25);color:#a5d6b8;}
.dm-privacy-ic{background:rgba(248,113,113,.08);border-bottom-color:rgba(248,113,113,.25);color:#fca5a5;}
.dm-privacy-strip{padding:.3rem .8rem;background:rgba(110,180,140,.06);border-bottom:1px solid rgba(110,180,140,.18);font-family:'Cinzel',serif;font-size:.55rem;letter-spacing:.15em;text-transform:uppercase;color:#a5d6b8;text-align:center;}
.dm-privacy-strip-ic{background:rgba(248,113,113,.06);border-bottom-color:rgba(248,113,113,.18);color:#fca5a5;}
.dm-thread-list{flex:1;overflow-y:auto;padding:.3rem 0;}
.dm-thread{padding:.55rem .7rem;border-bottom:1px solid rgba(168,152,128,.08);cursor:pointer;}
.dm-thread:hover{background:rgba(139,0,0,.1);}
.dm-thread-current{background:rgba(201,168,76,.08);border-left:2px solid var(--gold);}
.dm-thread.has-unread{background:rgba(248,113,113,.05);}
.dm-thread-row1{display:flex;align-items:baseline;gap:.4rem;}
.dm-thread-other{flex:1;font-family:'Cinzel',serif;font-size:.78rem;letter-spacing:.05em;color:var(--pale);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.dm-thread-when{font-family:'EB Garamond',serif;font-size:.7rem;color:var(--silver);opacity:.55;flex-shrink:0;}
.dm-thread-preview{font-family:'EB Garamond',serif;font-size:.78rem;color:var(--silver);opacity:.7;margin-top:.15rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.dm-thread-preview-empty{font-style:italic;opacity:.45;}
.dm-thread-mod-tag{font-family:'Cinzel',serif;font-size:.5rem;letter-spacing:.15em;background:rgba(201,168,76,.15);color:var(--gold);padding:.05rem .3rem;border-radius:2px;border:1px solid rgba(201,168,76,.4);flex-shrink:0;}
.dm-thread-mod{border-left:2px dashed rgba(201,168,76,.4);}
.dm-mod-watermark{font-family:'Cinzel',serif;font-size:.55rem;letter-spacing:.18em;text-transform:uppercase;color:#fca5a5;margin-left:.4rem;padding:.05rem .35rem;border:1px solid rgba(248,113,113,.4);border-radius:2px;}
.dm-composer-mod{padding:.6rem;background:rgba(0,0,0,.25);}
.nav-dm-badge{display:inline-block;background:#f87171;color:#1a1410;font-family:'Cinzel',serif;font-size:.5rem;font-weight:700;padding:.05rem .3rem;border-radius:8px;margin-left:.35rem;min-width:1rem;text-align:center;}
.dm-return-link{margin-top:.4rem;}
.dm-return-link-btn{background:rgba(201,168,76,.08);border:1px solid rgba(201,168,76,.3);color:var(--silver);font-family:'EB Garamond',serif;font-size:.78rem;padding:.3rem .55rem;border-radius:2px;cursor:pointer;width:100%;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.dm-return-link-btn:hover{background:rgba(201,168,76,.18);color:var(--gold);border-color:var(--gold);}
.dm-return-link-btn strong{color:var(--pale);}

/* Chat safety-flag traffic lights */
.chat-safety-controls{display:flex;align-items:center;gap:.25rem;margin-left:auto;}
.chat-safety-light{background:none;border:none;font-size:1.1rem;line-height:1;padding:.1rem .15rem;cursor:pointer;opacity:.3;filter:saturate(.5);transition:opacity .15s,filter .15s;}
.chat-safety-light:hover{opacity:.8;filter:saturate(1);}
.chat-safety-light:disabled{cursor:default;}
.chat-safety-light-on{opacity:1;filter:saturate(1) drop-shadow(0 0 4px currentColor);}
.chat-safety-green{color:#6eb48c;}
.chat-safety-amber{color:#e0a83e;}
.chat-safety-red{color:#e05050;}
.chat-safety-clear{background:rgba(110,180,140,.12);border:1px solid rgba(110,180,140,.4);color:#a5d6b8;font-family:'Cinzel',serif;font-size:.52rem;letter-spacing:.12em;text-transform:uppercase;padding:.25rem .5rem;cursor:pointer;border-radius:2px;margin-left:.3rem;}
.chat-safety-clear:hover{background:rgba(110,180,140,.22);color:#c5e8d2;}
.chat-safety-clear-st{background:rgba(224,168,62,.12);border-color:rgba(224,168,62,.45);color:#f0c878;}
.chat-safety-clear-st:hover{background:rgba(224,168,62,.22);color:#fad898;}
.chat-safety-banner{display:flex;flex-direction:column;gap:.4rem;padding:.55rem .85rem;border-bottom:1px solid;font-family:'EB Garamond',serif;font-size:.85rem;line-height:1.4;}
.chat-safety-banner-row{display:flex;align-items:center;gap:.6rem;}
.chat-safety-banner-edit{margin-left:auto;background:rgba(0,0,0,.25);border:1px solid currentColor;color:inherit;font-family:'Cinzel',serif;font-size:.55rem;letter-spacing:.12em;text-transform:uppercase;padding:.25rem .6rem;cursor:pointer;border-radius:2px;opacity:.85;}
.chat-safety-banner-edit:hover{opacity:1;background:rgba(0,0,0,.4);}
.chat-safety-banner-note{padding:.4rem .55rem;background:rgba(0,0,0,.3);border-left:2px solid currentColor;font-size:.8rem;border-radius:0 2px 2px 0;}
.chat-safety-banner-note-label{font-family:'Cinzel',serif;font-size:.55rem;letter-spacing:.12em;text-transform:uppercase;opacity:.7;margin-right:.35rem;}
.chat-safety-banner-amber{background:rgba(224,168,62,.1);border-bottom-color:rgba(224,168,62,.4);color:#f0c878;}
.chat-safety-banner-red{background:rgba(224,80,80,.12);border-bottom-color:rgba(224,80,80,.5);color:#fca5a5;}

/* Inline safety-event messages in the chat stream (kind:'safety') */
.chat-safety-event{display:flex;align-items:center;gap:.5rem;padding:.4rem .6rem;border-left:3px solid;background:rgba(0,0,0,.2);font-family:'EB Garamond',serif;font-size:.82rem;line-height:1.35;flex-wrap:wrap;border-radius:0 2px 2px 0;margin:.2rem 0;}
.chat-safety-event-amber{border-left-color:#e0a83e;color:#f0c878;}
.chat-safety-event-red{border-left-color:#e05050;color:#fca5a5;}
.chat-safety-event-clear{border-left-color:#6eb48c;color:#a5d6b8;}
.chat-safety-event-icon{font-size:1rem;flex-shrink:0;}
.chat-safety-event-text{flex:1;min-width:0;}
.chat-safety-event-time{font-size:.7rem;opacity:.55;font-family:'EB Garamond',serif;}
.chat-safety-event-note{flex-basis:100%;margin-top:.35rem;padding:.35rem .5rem;background:rgba(0,0,0,.3);border-left:2px solid currentColor;font-size:.78rem;}
.chat-safety-event-note-label{font-family:'Cinzel',serif;font-size:.5rem;letter-spacing:.12em;text-transform:uppercase;opacity:.7;margin-right:.3rem;}
.chat-safety-event-edit{background:rgba(0,0,0,.3);border:1px solid currentColor;color:inherit;font-family:'Cinzel',serif;font-size:.5rem;letter-spacing:.12em;text-transform:uppercase;padding:.2rem .5rem;cursor:pointer;border-radius:2px;opacity:.85;}
.chat-safety-event-edit:hover{opacity:1;background:rgba(0,0,0,.5);}
.chat-safety-only-banner{padding:.4rem .7rem;background:rgba(201,168,76,.08);border:1px solid rgba(201,168,76,.3);border-radius:2px;font-family:'EB Garamond',serif;font-size:.78rem;color:var(--gold);text-align:center;margin-bottom:.6rem;}
.chat-link-btn{background:none;border:none;color:var(--gold);text-decoration:underline;cursor:pointer;font:inherit;padding:0;}
.chat-link-btn:hover{color:var(--pale);}
.chat-safety-banner-icon{font-size:1.2rem;flex-shrink:0;}
.chat-safety-banner-text{flex:1;}
.chat-tree-safety{font-size:.6rem;line-height:1;margin-right:.2rem;flex-shrink:0;}
.chat-tree-safety-amber{color:#e0a83e;}
.chat-tree-safety-red{color:#e05050;}
.chat-composer-blocked{background:rgba(224,80,80,.08);border-top:2px solid rgba(224,80,80,.4);}
.chat-composer-red-notice{padding:.7rem 1rem;text-align:center;font-family:'EB Garamond',serif;font-size:.85rem;color:#fca5a5;font-style:italic;}

.chat-main{flex:1;display:flex;flex-direction:column;min-width:0;min-height:0;}
.chat-main-empty{flex:1;display:flex;align-items:center;justify-content:center;color:var(--silver);font-style:italic;opacity:.5;}
.chat-main-header{padding:.6rem 1rem;border-bottom:1px solid rgba(201,168,76,.18);display:flex;align-items:baseline;gap:.8rem;}
.chat-main-title{font-family:'Cinzel',serif;font-size:.95rem;letter-spacing:.08em;color:var(--gold);}
.chat-main-mode{font-family:'Cinzel',serif;font-size:.5rem;letter-spacing:.2em;text-transform:uppercase;color:var(--silver);opacity:.6;}

.chat-messages{flex:1;min-height:0;overflow-y:auto;padding:1rem;display:flex;flex-direction:column;gap:.6rem;}
.chat-msg-empty{color:var(--silver);font-style:italic;opacity:.55;text-align:center;padding:2rem 0;}
.chat-msg{display:flex;gap:.7rem;}
.chat-msg-ic{align-items:flex-start;}
.chat-msg-ooc{padding-left:.5rem;border-left:2px solid rgba(168,152,128,.2);}
.chat-msg-portrait{width:42px;height:42px;flex-shrink:0;background:rgba(201,168,76,.08);border:1px solid rgba(201,168,76,.35);display:flex;align-items:center;justify-content:center;font-size:1.3rem;color:var(--gold);border-radius:2px;}
.chat-msg-body{flex:1;min-width:0;}
.chat-msg-header{display:flex;align-items:baseline;gap:.5rem;flex-wrap:wrap;margin-bottom:.15rem;}
.chat-msg-ic .chat-msg-name{font-family:'Cinzel',serif;font-size:.8rem;letter-spacing:.05em;color:var(--gold);}
.chat-msg-ooc .chat-msg-name{font-family:'EB Garamond',serif;font-style:italic;font-size:.78rem;color:var(--silver);}
.chat-msg-player{font-family:'Cinzel',serif;font-size:.5rem;letter-spacing:.18em;text-transform:uppercase;color:var(--silver);opacity:.55;}
.chat-msg-time{font-family:'Cinzel',serif;font-size:.5rem;letter-spacing:.15em;color:var(--silver);opacity:.5;margin-left:auto;}
.chat-msg-text{font-family:'EB Garamond',serif;font-size:.92rem;line-height:1.4;color:var(--pale);white-space:pre-wrap;word-wrap:break-word;}
.chat-msg-ooc .chat-msg-text{font-size:.85rem;color:var(--pale);opacity:.85;font-style:italic;}
.chat-msg-edited{font-family:'Cinzel',serif;font-size:.5rem;letter-spacing:.15em;text-transform:uppercase;color:var(--silver);opacity:.55;margin-left:.3rem;font-style:italic;}
.chat-msg-deleted{font-style:italic;opacity:.45;color:var(--silver);}
.chat-msg-is-deleted .chat-msg-portrait,.chat-msg-is-deleted .chat-msg-name,.chat-msg-is-deleted .chat-msg-player{opacity:.45;}
.chat-msg-actions{display:inline-flex;gap:.3rem;margin-left:auto;opacity:0;transition:opacity .12s;}
.chat-msg:hover .chat-msg-actions{opacity:1;}
.chat-msg-act{background:none;border:1px solid rgba(168,152,128,.25);color:var(--silver);font-family:'Cinzel',serif;font-size:.48rem;letter-spacing:.15em;text-transform:uppercase;padding:.2rem .5rem;cursor:pointer;border-radius:2px;}
.chat-msg-act:hover{color:var(--gold);border-color:var(--gold);}
.chat-msg-act-danger:hover{color:#f87171;border-color:rgba(248,113,113,.45);}
.chat-msg-act-primary{color:var(--gold);border-color:var(--gold);}
.chat-msg-edit-input{width:100%;background:rgba(0,0,0,.4);border:1px solid rgba(201,168,76,.4);color:var(--pale);padding:.45rem .6rem;font-family:'EB Garamond',serif;font-size:.92rem;border-radius:2px;resize:vertical;min-height:50px;}
.chat-msg-edit-input:focus{outline:none;border-color:var(--gold);}
.chat-msg-edit-actions{display:flex;justify-content:flex-end;gap:.4rem;margin-top:.4rem;}

.chat-history-title{font-family:'Cinzel',serif;font-size:.85rem;letter-spacing:.18em;text-transform:uppercase;color:var(--gold);margin-bottom:.25rem;}
.chat-history-sub{font-family:'EB Garamond',serif;font-style:italic;color:var(--silver);font-size:.85rem;margin-bottom:1rem;opacity:.7;}
.chat-history-entry{padding:.6rem .8rem;border-left:2px solid rgba(201,168,76,.3);background:rgba(0,0,0,.2);margin-bottom:.4rem;}
.chat-history-entry.chat-history-deleted{border-left-color:rgba(248,113,113,.5);}
.chat-history-meta{display:flex;justify-content:space-between;align-items:baseline;gap:1rem;font-family:'Cinzel',serif;font-size:.5rem;letter-spacing:.18em;text-transform:uppercase;color:var(--silver);opacity:.75;margin-bottom:.3rem;}
.chat-history-text{font-family:'EB Garamond',serif;font-size:.9rem;color:var(--pale);white-space:pre-wrap;word-wrap:break-word;}

.chat-msg-roll .chat-msg-body{background:rgba(201,168,76,.06);border:1px solid rgba(201,168,76,.25);border-radius:2px;padding:.5rem .7rem;}
.chat-roll-desc{font-family:'EB Garamond',serif;font-style:italic;color:var(--gold);font-size:.85rem;margin-bottom:.2rem;}
.chat-roll-cmd{font-family:'Cinzel',serif;font-size:.6rem;letter-spacing:.18em;text-transform:uppercase;color:var(--silver);margin-bottom:.4rem;}
.chat-roll-breakdown{display:flex;flex-wrap:wrap;gap:.4rem;align-items:center;margin-bottom:.4rem;}
.chat-roll-grp{display:inline-flex;align-items:center;flex-wrap:wrap;gap:.2rem;}
.chat-roll-label{font-family:'Cinzel',serif;font-size:.55rem;letter-spacing:.15em;text-transform:uppercase;color:var(--silver);margin-right:.2rem;}
.chat-roll-die{display:inline-block;min-width:22px;text-align:center;padding:.1rem .3rem;background:rgba(201,168,76,.12);border:1px solid rgba(201,168,76,.35);font-family:'Cinzel',serif;font-size:.75rem;color:var(--gold);border-radius:2px;}
.chat-roll-die.is-hit{background:rgba(34,197,94,.18);border-color:rgba(74,222,128,.65);color:#bbf7d0;font-weight:700;box-shadow:0 0 4px rgba(74,222,128,.25);}
.chat-roll-target-tag{font-family:'Cinzel',serif;font-size:.5rem;letter-spacing:.15em;text-transform:uppercase;color:var(--silver);opacity:.75;padding:.1rem .4rem;border:1px solid rgba(168,152,128,.3);border-radius:2px;margin-left:.4rem;}
.chat-roll-success strong{color:#86efac;}
.chat-roll-total-secondary{font-family:'Cinzel',serif;font-size:.55rem;letter-spacing:.15em;text-transform:uppercase;color:var(--silver);opacity:.6;margin-left:auto;}
.chat-roll-mod{font-family:'Cinzel',serif;color:var(--gold);font-size:.8rem;letter-spacing:.05em;}
.chat-roll-auto{font-family:'Cinzel',serif;color:var(--gold);font-size:.6rem;letter-spacing:.15em;text-transform:uppercase;padding:.15rem .45rem;border:1px solid rgba(201,168,76,.45);border-radius:2px;background:rgba(201,168,76,.08);}
.chat-roll-total{display:flex;justify-content:flex-start;align-items:baseline;gap:.5rem;border-top:1px solid rgba(201,168,76,.18);padding-top:.3rem;}
.chat-roll-total span{font-family:'Cinzel',serif;font-size:.55rem;letter-spacing:.25em;text-transform:uppercase;color:var(--silver);}
.chat-roll-total strong{font-family:'Cinzel',serif;font-size:1.2rem;color:var(--gold);}

.chat-composer{padding:.6rem 1rem .8rem;border-top:1px solid rgba(139,0,0,.18);background:rgba(0,0,0,.18);}
.chat-composer-mode{display:flex;gap:1rem;margin-bottom:.45rem;font-family:'Cinzel',serif;font-size:.55rem;letter-spacing:.15em;text-transform:uppercase;color:var(--silver);}
.chat-composer-mode label{display:flex;align-items:center;gap:.3rem;cursor:pointer;}
.chat-composer-row{display:flex;gap:.5rem;align-items:flex-end;}
.chat-composer-character{background:rgba(0,0,0,.4);border:1px solid rgba(168,152,128,.25);color:var(--pale);padding:.4rem .5rem;font-family:'EB Garamond',serif;font-size:.85rem;border-radius:2px;flex-shrink:0;max-width:170px;}
.chat-composer-text{flex:1;background:rgba(0,0,0,.4);border:1px solid rgba(168,152,128,.25);color:var(--pale);padding:.5rem .65rem;font-family:'EB Garamond',serif;font-size:.92rem;border-radius:2px;resize:vertical;min-height:42px;max-height:200px;}
.chat-composer-text:focus,.chat-composer-character:focus{outline:none;border-color:var(--gold);}
.chat-send-btn{background:linear-gradient(180deg,rgba(201,168,76,.25),rgba(201,168,76,.12));border:1px solid var(--gold);color:var(--gold);font-family:'Cinzel',serif;font-size:.65rem;letter-spacing:.22em;text-transform:uppercase;padding:.5rem 1.1rem;cursor:pointer;border-radius:2px;flex-shrink:0;}
.chat-send-btn:hover{background:linear-gradient(180deg,rgba(201,168,76,.4),rgba(201,168,76,.2));color:var(--bone);}

.chat-menu{position:fixed;z-index:9990;background:var(--shadow);border:1px solid rgba(201,168,76,.35);box-shadow:0 8px 24px rgba(0,0,0,.6);min-width:140px;flex-direction:column;border-radius:2px;}
.chat-menu.chat-menu-wide{min-width:280px;max-width:340px;}
.chat-menu button{background:none;border:none;color:var(--pale);font-family:'EB Garamond',serif;font-size:.85rem;padding:.5rem .8rem;text-align:left;cursor:pointer;display:flex;flex-direction:column;gap:.15rem;}
.chat-menu button:hover{background:rgba(201,168,76,.12);color:var(--gold);}
.chat-menu-section-label{font-family:'Cinzel',serif;font-size:.55rem;letter-spacing:.15em;text-transform:uppercase;color:var(--silver);opacity:.65;padding:.4rem .8rem 0;margin-top:.2rem;border-top:1px solid rgba(168,152,128,.12);}
.chat-menu-section-label:first-child{border-top:none;margin-top:0;padding-top:.55rem;}
.chat-menu-radio{font-family:'EB Garamond',serif;font-size:.82rem !important;padding:.3rem .8rem !important;}
.chat-menu-radio-on{color:var(--gold) !important;}
.chat-menu-hint{font-size:.72rem;color:var(--silver);opacity:.65;font-style:italic;}
.chat-user-link{background:none;border:none;padding:0;font:inherit;color:inherit;cursor:pointer;text-decoration:none;}
.chat-user-link:hover{text-decoration:underline;color:var(--gold);}

/* @mention autocomplete dropdown */
.chat-mention-dropdown{position:fixed;z-index:9991;background:var(--shadow);border:1px solid rgba(201,168,76,.4);box-shadow:0 8px 24px rgba(0,0,0,.6);min-width:200px;max-width:340px;max-height:240px;overflow-y:auto;flex-direction:column;border-radius:2px;}
.chat-mention-item{display:flex;justify-content:space-between;align-items:baseline;background:none;border:none;color:var(--pale);font-family:'EB Garamond',serif;font-size:.85rem;padding:.4rem .7rem;text-align:left;cursor:pointer;gap:.6rem;width:100%;}
.chat-mention-item:hover,.chat-mention-item.active{background:rgba(201,168,76,.15);color:var(--gold);}
.chat-mention-item-hint{font-family:'Cinzel',serif;font-size:.5rem;letter-spacing:.15em;text-transform:uppercase;color:var(--silver);opacity:.7;flex-shrink:0;}

/* Reaction picker + chips */
.chat-reaction-picker{position:fixed;z-index:9990;background:var(--shadow);border:1px solid rgba(201,168,76,.4);box-shadow:0 8px 24px rgba(0,0,0,.6);padding:.35rem;display:flex;gap:.2rem;border-radius:2px;flex-wrap:wrap;max-width:280px;}
.chat-reaction-picker button{background:none;border:1px solid transparent;font-size:1.1rem;line-height:1;padding:.25rem .4rem;cursor:pointer;border-radius:2px;}
.chat-reaction-picker button:hover{background:rgba(201,168,76,.15);border-color:rgba(201,168,76,.45);}
.chat-msg-reactions{display:flex;flex-wrap:wrap;gap:.3rem;margin-top:.35rem;}
.chat-reaction-chip{display:inline-flex;align-items:center;gap:.25rem;padding:.1rem .45rem;background:rgba(168,152,128,.08);border:1px solid rgba(168,152,128,.25);border-radius:10px;font-size:.9rem;cursor:pointer;line-height:1.2;}
.chat-reaction-chip:hover{background:rgba(201,168,76,.15);border-color:rgba(201,168,76,.4);}
.chat-reaction-chip.is-mine{background:rgba(201,168,76,.22);border-color:var(--gold);}
.chat-reaction-chip-count{font-family:'Cinzel',serif;font-size:.55rem;letter-spacing:.08em;color:var(--silver);opacity:.85;}
.chat-reaction-chip.is-mine .chat-reaction-chip-count{color:var(--gold);opacity:1;}
.chat-menu .chat-menu-danger{color:#f87171;}
.chat-menu .chat-menu-danger:hover{background:rgba(220,38,38,.15);color:#fca5a5;}

.chat-editor-title{font-family:'Cinzel',serif;font-size:.85rem;letter-spacing:.18em;text-transform:uppercase;color:var(--gold);margin-bottom:1rem;}
.chat-editor-row{display:flex;flex-direction:column;gap:.25rem;margin-bottom:.8rem;}
.chat-editor-row > span{font-family:'Cinzel',serif;font-size:.55rem;letter-spacing:.18em;text-transform:uppercase;color:var(--silver);}
.chat-editor-row input,.chat-editor-row select{background:rgba(0,0,0,.4);border:1px solid rgba(168,152,128,.25);color:var(--pale);padding:.45rem .6rem;font-family:'EB Garamond',serif;font-size:.9rem;border-radius:2px;}
.chat-editor-row input:focus,.chat-editor-row select:focus{outline:none;border-color:var(--gold);}
.chat-editor-actions{display:flex;justify-content:flex-end;gap:.5rem;margin-top:1rem;}
.chat-perm-row{display:flex;align-items:center;gap:.5rem;padding:.4rem .5rem;background:rgba(0,0,0,.25);border:1px solid rgba(168,152,128,.18);border-radius:2px;}
.chat-perm-row-type{font-size:.85rem;flex-shrink:0;}
.chat-perm-row-id{flex:1;font-family:'EB Garamond',serif;font-size:.85rem;color:var(--pale);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.chat-perm-level{background:rgba(0,0,0,.4);border:1px solid rgba(168,152,128,.25);color:var(--pale);padding:.2rem .4rem;font-family:'EB Garamond',serif;font-size:.78rem;border-radius:2px;}
.chat-perm-level:focus{outline:none;border-color:var(--gold);}

@media (max-width:720px){
  .chat-body{flex-direction:column;}
  .chat-sidebar{width:auto;max-height:35vh;border-right:none;border-bottom:1px solid rgba(139,0,0,.2);}
  .chat-composer-character{max-width:none;flex:1;}
  .chat-composer-row{flex-wrap:wrap;}
}
