:root{color-scheme:light;--ink:#1c2d27;--muted:#748077;--forest:#172e27;--forest-2:#234238;--jade:#315d4e;--jade-soft:#e6eee8;--paper:#f3f0e7;--surface:#fffdf8;--line:#e5e1d7;--gold:#b48a48;--red:#a94c3d;--shadow:0 12px 34px rgba(31,44,37,.07);font-family:"Noto Sans TC","Microsoft JhengHei",sans-serif}
*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-size:14px}button,input,select,textarea{font:inherit}button{cursor:pointer}.app-shell{min-height:100vh;display:flex}.sidebar{width:256px;flex:none;background:var(--forest);color:#edf1e9;display:flex;flex-direction:column;min-height:100vh;padding:22px 14px 16px;z-index:5}.brand{display:flex;align-items:center;gap:12px;padding:2px 8px 22px}.brand-seal{width:42px;height:42px;border:1px solid rgba(213,192,143,.8);border-radius:12px;color:#e3ce9d;display:grid;place-items:center;font:600 23px "Noto Serif TC",serif;background:rgba(226,207,158,.08)}.brand strong,.brand span,.sidebar-footer strong,.sidebar-footer small{display:block}.brand strong{font-size:16px;letter-spacing:1px}.brand span{font-size:10px;color:#aab9ae;margin-top:4px}.world-status{margin:0 4px 18px;padding:11px 12px;display:flex;align-items:center;gap:10px;border:1px solid rgba(225,235,223,.1);background:rgba(255,255,255,.045);border-radius:11px}.world-status strong{font-size:11px;font-weight:600}.world-status small{display:block;color:#96a89a;font-size:10px;margin-top:3px}.live-dot{width:8px;height:8px;border-radius:50%;background:#c9a765;box-shadow:0 0 0 4px rgba(201,167,101,.12)}.nav-groups{overflow:auto;flex:1;scrollbar-width:thin;scrollbar-color:#365849 transparent}.nav-group{margin-bottom:17px}.nav-group-title{padding:0 11px 7px;color:#81968a;font-size:10px;letter-spacing:1.2px}.nav-item{width:100%;border:0;background:none;color:#c3d0c6;text-align:left;display:flex;align-items:center;gap:11px;padding:9px 11px;border-radius:9px;margin:2px 0;font-size:12px;transition:.15s}.nav-item:hover{background:rgba(255,255,255,.08);color:#fff}.nav-item.active{background:#dfe9df;color:#203e32;font-weight:700;box-shadow:inset 3px 0 var(--gold)}.nav-icon{width:19px;text-align:center;font-size:15px;color:#d3c194}.nav-item.active .nav-icon{color:#315d4e}.nav-count{margin-left:auto;color:#8ba095;font-size:10px}.sidebar-footer{border-top:1px solid rgba(255,255,255,.11);padding:14px 7px 0;display:flex;align-items:center;gap:9px}.avatar{width:32px;height:32px;display:grid;place-items:center;border-radius:50%;background:#d2c297;color:#254236;font-weight:700}.sidebar-footer strong{font-size:11px}.sidebar-footer small{color:#94a69a;font-size:10px;margin-top:2px}.sidebar-footer .icon-button{margin-left:auto;color:#c1cec5}.main-area{min-width:0;flex:1;display:flex;flex-direction:column}.topbar{height:62px;background:rgba(255,253,248,.94);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 30px;position:sticky;top:0;z-index:3;backdrop-filter:blur(12px)}.topbar-left,.topbar-right{display:flex;align-items:center;gap:18px}.breadcrumb{display:flex;align-items:center;gap:10px;color:#899087;font-size:11px}.breadcrumb b{font-weight:400;color:#c5c3b9}.breadcrumb strong{color:var(--ink);font-size:12px}.global-search{width:min(270px,26vw);height:34px;border:1px solid var(--line);border-radius:8px;background:#faf9f4;display:flex;align-items:center;gap:8px;padding:0 9px;color:#859087}.global-search span{font-size:19px}.global-search input{min-width:0;flex:1;background:none;border:0;outline:0;font-size:11px;color:var(--ink)}kbd{font-size:9px;background:#efede5;border:1px solid #e3e0d6;border-radius:4px;padding:2px 4px}.top-date{color:#7e887f;font-size:10px}.icon-button{border:0;background:transparent;color:#57645b;width:30px;height:30px;border-radius:7px;display:inline-grid;place-items:center;font-size:16px}.icon-button:hover{background:#efeee7}.menu-toggle,.mobile-close{display:none}.page-content{width:100%;max-width:1520px;margin:0 auto;padding:28px 32px 35px;flex:1}.page-footer{padding:13px 32px;border-top:1px solid var(--line);display:flex;justify-content:space-between;color:#92988e;font-size:10px;background:rgba(255,253,248,.52)}
.page-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin:3px 0 22px}.eyebrow{display:block;color:var(--gold);font-size:10px;font-weight:700;letter-spacing:1.7px;margin-bottom:6px}.page-heading h1,.dialog-heading h2{font:600 24px "Noto Serif TC","Microsoft JhengHei",serif;letter-spacing:.4px;margin:0;color:#20352d}.page-heading p{color:#7c857d;margin:7px 0 0;font-size:11px}.heading-actions{display:flex;gap:8px;align-items:center}.button{border:1px solid var(--line);background:var(--surface);border-radius:8px;padding:9px 13px;font-size:11px;font-weight:600;color:#4b5b50;display:inline-flex;align-items:center;gap:7px}.button:hover{border-color:#bdcbbf;background:#f8faf6}.button-primary{background:var(--forest-2);border-color:var(--forest-2);color:#f5f5ed}.button-primary:hover{background:#315d4e;color:#fff}.button-quiet{background:transparent}.button-danger{color:#a14b3e}.select-control{height:34px;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:#5d695f;padding:0 10px;font-size:10px}.panel{background:var(--surface);border:1px solid rgba(223,220,208,.9);border-radius:12px;box-shadow:var(--shadow)}.stat-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:13px;margin-bottom:16px}.stat-card{padding:16px 17px;position:relative;overflow:hidden}.stat-top{display:flex;justify-content:space-between;align-items:center;color:#79847b;font-size:10px}.stat-glyph{width:28px;height:28px;border-radius:8px;display:grid;place-items:center;background:#eaf0e8;color:#426554;font-size:14px}.stat-value{font:600 24px "Noto Serif TC",serif;color:#263d32;margin:11px 0 5px}.stat-foot{font-size:9px;color:#8a938a;display:flex;gap:5px;align-items:center}.trend{color:#558568;font-weight:700}.dashboard-grid{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(260px,.9fr);gap:14px;margin-bottom:14px}.panel-head{display:flex;justify-content:space-between;align-items:center;padding:15px 17px 10px}.panel-head h2{font:600 13px "Noto Serif TC",serif;margin:0}.panel-head p{font-size:9px;color:#8b9288;margin:4px 0 0}.chart-panel{padding-bottom:11px}.chart-legend{display:flex;gap:12px;color:#7c877d;font-size:9px}.legend-dot{display:inline-block;width:6px;height:6px;border-radius:50%;margin-right:4px;background:#638c72}.legend-dot.gold{background:#c6a15e}.chart{height:185px;margin:0 16px;position:relative;border-bottom:1px solid #e9e6de;background:repeating-linear-gradient(to bottom,transparent 0,transparent 44px,#eeece5 45px)}.chart svg{width:100%;height:100%;overflow:visible}.chart-labels{display:flex;justify-content:space-between;margin:8px 18px 0;color:#a1a49b;font-size:8px}.activity-list{padding:0 17px 11px}.activity-item{display:grid;grid-template-columns:24px 1fr auto;gap:9px;align-items:center;padding:11px 0;border-bottom:1px solid #f0eee8}.activity-item:last-child{border-bottom:0}.activity-icon{width:24px;height:24px;display:grid;place-items:center;border-radius:7px;background:#f1eee2;color:#90743f;font-size:12px}.activity-item strong{font-size:10px;font-weight:600;display:block}.activity-item small{font-size:9px;color:#8d958d;display:block;margin-top:3px}.activity-time{font-size:8px;color:#a2a59c}.lower-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:14px}.realm-list{padding:0 16px 15px;display:grid;grid-template-columns:repeat(3,1fr);gap:9px}.realm-card{border:1px solid var(--line);border-radius:9px;padding:12px;background:#faf9f3}.realm-title{font-size:10px;color:#788279}.realm-number{font:600 19px "Noto Serif TC",serif;margin:7px 0 4px;color:#334c3d}.realm-meta{font-size:8px;color:#92998e}.realm-bar{height:4px;background:#e9e8df;margin-top:10px;border-radius:5px;overflow:hidden}.realm-bar i{height:100%;display:block;background:#829c7b;border-radius:5px}.quick-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:0 16px 16px}.quick-action{border:1px solid var(--line);background:#fbfaf5;border-radius:8px;padding:11px;text-align:left;color:#536057;font-size:10px}.quick-action span{display:block;color:#a1844b;font-size:15px;margin-bottom:7px}.quick-action:hover{background:#f1f4ed;border-color:#cbd8ca}
.table-panel{overflow:hidden}.table-toolbar{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:13px 15px;border-bottom:1px solid var(--line)}.table-toolbar-left,.table-toolbar-right{display:flex;align-items:center;gap:8px}.table-search{height:32px;width:220px;max-width:38vw;border:1px solid var(--line);border-radius:7px;padding:0 10px;background:#fcfbf7;outline:0;font-size:10px}.table-search:focus,.field-control:focus{border-color:#8da993;box-shadow:0 0 0 3px rgba(89,130,101,.12)}.result-count{font-size:9px;color:#8b938b}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;min-width:720px}th{font-size:9px;color:#8a9389;text-align:left;font-weight:600;background:#faf9f4;padding:11px 14px;white-space:nowrap}td{font-size:10px;color:#47554b;padding:12px 14px;border-top:1px solid #f0eee8;white-space:nowrap}tbody tr:hover{background:#fbfaf5}.primary-cell{font-weight:600;color:#263c31}.sub-cell{font-size:9px;color:#99a096;margin-top:3px}.status-pill{display:inline-flex;align-items:center;gap:5px;padding:4px 8px;border-radius:20px;font-size:8px;background:#eaf1e9;color:#4c7458}.status-pill::before{content:"";width:5px;height:5px;border-radius:50%;background:currentColor}.status-封存,.status-待審核,.status-待處理,.status-預備{background:#f4efdf;color:#96783d}.status-異常,.status-停用,.status-封禁{background:#f5e9e5;color:#a14f41}.row-actions{display:flex;gap:3px}.row-actions button{border:0;background:transparent;color:#849087;padding:5px 7px;border-radius:5px;font-size:9px}.row-actions button:hover{background:#edf1eb;color:#335d48}.table-footer{display:flex;justify-content:space-between;padding:11px 15px;color:#92988f;font-size:9px;border-top:1px solid #efede5}.empty-state{text-align:center;padding:45px 20px;color:#879087;font-size:11px}.empty-state strong{display:block;color:#45554a;margin-bottom:5px}.module-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:11px;margin-bottom:14px}.summary-chip{padding:13px 15px}.summary-chip span{display:block;font-size:9px;color:#879087}.summary-chip strong{display:block;font:600 17px "Noto Serif TC",serif;color:#345241;margin-top:6px}.notice-bar{padding:10px 13px;background:#f5f1e4;color:#786a4c;border:1px solid #ece4d0;border-radius:9px;font-size:10px;margin-bottom:14px}.notice-bar strong{color:#665638}.record-dialog{border:1px solid #e5e1d7;border-radius:14px;padding:0;width:min(560px,calc(100vw - 28px));background:var(--surface);box-shadow:0 24px 90px rgba(17,33,26,.3);color:var(--ink)}.record-dialog::backdrop{background:rgba(15,29,23,.48);backdrop-filter:blur(2px)}.record-dialog form{padding:21px}.dialog-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:17px}.dialog-heading h2{font-size:19px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.form-field{display:flex;flex-direction:column;gap:6px}.form-field.full{grid-column:1/-1}.form-field label{font-size:9px;color:#7f897f;font-weight:600}.field-control{height:36px;border:1px solid var(--line);border-radius:7px;padding:0 9px;background:#fdfcf8;outline:0;color:#334238;font-size:10px}.form-field textarea.field-control{height:76px;padding:9px;resize:vertical}.dialog-actions{display:flex;justify-content:flex-end;gap:7px;margin-top:21px}.toast-region{position:fixed;right:20px;bottom:20px;z-index:10;display:flex;flex-direction:column;gap:8px}.toast{background:#203b30;color:#f5f4eb;padding:11px 15px;border-radius:8px;box-shadow:0 8px 26px rgba(13,30,22,.2);font-size:10px;animation:toast-in .2s ease}.toast.error{background:#8c4037}@keyframes toast-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.scrim{display:none}
@media(max-width:1120px){.sidebar{width:230px}.topbar{padding:0 20px}.page-content{padding:23px 20px}.dashboard-grid{grid-template-columns:1fr 280px}.stat-grid{gap:9px}.stat-card{padding:13px}.lower-grid{grid-template-columns:1fr}.global-search{width:210px}}
@media(max-width:820px){.sidebar{position:fixed;left:0;top:0;bottom:0;transform:translateX(-105%);transition:transform .22s ease;width:270px;box-shadow:20px 0 50px rgba(0,0,0,.15)}.sidebar.open{transform:translateX(0)}.scrim.show{display:block;position:fixed;inset:0;background:rgba(13,27,21,.38);z-index:4}.menu-toggle,.mobile-close{display:inline-grid}.topbar{height:56px;padding:0 13px}.topbar-left,.topbar-right{gap:8px}.global-search{width:34px;border:0;background:transparent;padding:0;justify-content:center}.global-search span{font-size:21px}.global-search input,.global-search kbd,.top-date{display:none}.page-content{padding:20px 14px}.page-heading{align-items:flex-start}.page-heading h1{font-size:21px}.page-heading p{max-width:65vw;line-height:1.6}.heading-actions{flex-wrap:wrap;justify-content:flex-end}.stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.dashboard-grid{grid-template-columns:1fr}.chart{height:160px}.realm-list{gap:6px;padding-inline:11px}.realm-card{padding:9px}.realm-number{font-size:17px}.page-footer{padding:12px 14px;gap:8px;line-height:1.5}.module-summary{gap:7px}.summary-chip{padding:10px}.table-toolbar{align-items:flex-start;flex-direction:column}.table-toolbar-left,.table-toolbar-right{width:100%;justify-content:space-between}.table-search{max-width:none;flex:1}.form-grid{grid-template-columns:1fr}.form-field.full{grid-column:auto}}
@media(max-width:430px){.breadcrumb{font-size:10px;gap:6px}.breadcrumb>span{display:none}.stat-value{font-size:21px}.stat-top{font-size:9px}.realm-list{grid-template-columns:1fr}.realm-card{display:grid;grid-template-columns:1fr auto;align-items:center}.realm-number{margin:0}.realm-meta{display:none}.realm-bar{grid-column:1/-1;margin-top:8px}.page-heading{gap:8px}.page-heading p{font-size:10px}.heading-actions .button{padding:8px 9px}.page-footer span:last-child{max-width:55%;text-align:right}}
.login-copy{font-size:12px;color:var(--muted);line-height:1.7;margin:0 0 15px}.server-button{font-size:10px;padding:8px 11px;white-space:nowrap}
.spells-table-wrap{overflow-x:hidden}.spells-table{width:100%;min-width:0;table-layout:fixed}.spells-table th,.spells-table td{padding:10px 7px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.spells-table th{font-size:9px}.spells-table td{font-size:10px}.spell-edit-cell{cursor:cell}.spell-edit-cell:hover{background:#f0f4ed;box-shadow:inset 0 0 0 1px #d9e3d7}.spell-text-button{border:1px solid #d7dfd4;border-radius:6px;background:#f4f7f1;color:#315d48;padding:5px 7px;font-size:9px;white-space:nowrap}.spell-text-button:hover{background:#e8f0e7}.spells-table .row-actions{white-space:nowrap}.spells-table .row-actions button{padding:5px 4px;font-size:9px}.spell-inline-editor{width:100%;min-width:0;height:28px;padding:3px 5px;border:1px solid #8da993;border-radius:4px;background:#fff;font-size:10px;color:#263d32}.spell-text-dialog{border:1px solid #e5e1d7;border-radius:14px;padding:0;width:min(920px,calc(100vw - 28px));height:min(82vh,820px);background:var(--surface);box-shadow:0 24px 90px rgba(17,33,26,.3);color:var(--ink)}.spell-text-dialog::backdrop{background:rgba(15,29,23,.5);backdrop-filter:blur(2px)}.spell-text-dialog form{height:100%;padding:22px;display:flex;flex-direction:column}.spell-text-editor{flex:1;min-height:180px;width:100%;box-sizing:border-box;resize:vertical;border:1px solid var(--line);border-radius:9px;padding:15px;background:#fdfcf8;color:#334238;font:14px/1.9 "Microsoft JhengHei",sans-serif;outline:0}.spell-text-editor:focus{border-color:#8da993;box-shadow:0 0 0 3px rgba(89,130,101,.12)}
@media(max-width:820px){.spells-table th,.spells-table td{padding:8px 4px;font-size:8px}.spells-table .row-actions button{font-size:8px;padding-inline:2px}.spell-text-button{font-size:8px;padding:4px 3px}}
.spells-table col.spell-col-name{width:16%}.spells-table col.spell-col-category{width:7%}.spells-table col.spell-col-volume{width:15%}.spells-table col.spell-col-sourcePage{width:5%}.spells-table col.spell-col-function{width:7%}.spells-table col.spell-col-effectType{width:10%}.spells-table col.spell-col-power{width:5%}.spells-table col.spell-col-qiCost{width:5%}.spells-table col.spell-col-durationTurns{width:5%}.spells-table col.spell-col-status{width:7%}.spells-table col.spell-col-text{width:8%}.spells-table col.spell-col-actions{width:10%}
@media(max-width:820px){.spells-table col.spell-col-volume,.spells-table col.spell-col-sourcePage,.spells-table col.spell-col-effectType,.spells-table col.spell-col-qiCost,.spells-table col.spell-col-durationTurns,.spells-table th.spell-col-volume,.spells-table td.spell-col-volume,.spells-table th.spell-col-sourcePage,.spells-table td.spell-col-sourcePage,.spells-table th.spell-col-effectType,.spells-table td.spell-col-effectType,.spells-table th.spell-col-qiCost,.spells-table td.spell-col-qiCost,.spells-table th.spell-col-durationTurns,.spells-table td.spell-col-durationTurns{display:none}.spells-table col.spell-col-name{width:28%}.spells-table col.spell-col-category{width:9%}.spells-table col.spell-col-function{width:14%}.spells-table col.spell-col-power{width:8%}.spells-table col.spell-col-status{width:12%}.spells-table col.spell-col-text{width:13%}.spells-table col.spell-col-actions{width:16%}}
.monsters-table-wrap{width:100%;max-width:100%;overflow-x:hidden}.monsters-table{width:100%;min-width:0;table-layout:fixed}.monsters-table th,.monsters-table td{padding:10px 8px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.monsters-table .monster-col-name{width:15%}.monsters-table .monster-col-kind{width:9%}.monsters-table .monster-col-tier{width:8%}.monsters-table .monster-col-level{width:6%}.monsters-table .monster-col-hp,.monsters-table .monster-col-attack,.monsters-table .monster-col-defense{width:7%}.monsters-table .monster-col-damageType{width:9%}.monsters-table .monster-col-merit,.monsters-table .monster-col-coins{width:8%}.monsters-table .monster-col-status{width:8%}.monsters-table .monster-col-actions{width:18%}.monsters-table .row-actions{white-space:nowrap}.monsters-table .row-actions button{padding:5px 4px;font-size:9px}@media(max-width:1100px){.monsters-table th,.monsters-table td{padding-inline:5px}.monsters-table .monster-col-defense,.monsters-table .monster-col-damageType,.monsters-table .monster-col-coins{display:none}.monsters-table .monster-col-actions{width:23%}}
.monsters-table .monster-col-name{width:14%}.monsters-table .monster-col-actions{width:16%}.sidebar{width:220px}@media(max-width:1120px){.sidebar{width:210px}}@media(max-width:820px){.sidebar{width:240px}}
.monsters-table .monster-col-name{width:18%}.monsters-table .monster-col-kind{width:10%}.monsters-table .monster-col-tier{width:8%}.monsters-table .monster-col-level{width:6%}.monsters-table .monster-col-hp,.monsters-table .monster-col-attack,.monsters-table .monster-col-defense{width:7%}.monsters-table .monster-col-merit{width:9%}.monsters-table .monster-col-coins{width:8%}.monsters-table .monster-col-status{width:8%}.monsters-table .monster-col-actions{width:12%}.monsters-table th{font-size:12px;padding:11px 6px}.monsters-table td{font-size:13px;padding:12px 6px}.monsters-table .status-pill{font-size:10px;padding:5px 8px}.monsters-table .row-actions button{font-size:11px;padding:6px 5px}@media(max-width:1100px){.monsters-table .monster-col-defense,.monsters-table .monster-col-merit,.monsters-table .monster-col-coins{display:none}.monsters-table .monster-col-actions{width:20%}}@media(max-width:820px){.monsters-table th{font-size:11px}.monsters-table td{font-size:12px}.monsters-table .monster-col-level,.monsters-table .monster-col-hp,.monsters-table .monster-col-attack{display:none}.monsters-table .monster-col-actions{width:24%}}
@media(max-width:1100px){.monsters-table .monster-col-name{width:22%}.monsters-table .monster-col-kind{width:12%}.monsters-table .monster-col-tier{width:8%}.monsters-table .monster-col-level{width:7%}.monsters-table .monster-col-hp,.monsters-table .monster-col-attack{width:8%}.monsters-table .monster-col-status{width:12%}.monsters-table .monster-col-actions{width:23%}}@media(max-width:820px){.monsters-table .monster-col-name{width:32%}.monsters-table .monster-col-kind{width:18%}.monsters-table .monster-col-tier{width:14%}.monsters-table .monster-col-status{width:16%}.monsters-table .monster-col-actions{width:20%}}
.monsters-table{width:max-content;max-width:100%;min-width:0;table-layout:fixed}.monsters-table col.monster-col-name{width:110px}.monsters-table col.monster-col-kind{width:96px}.monsters-table col.monster-col-tier{width:78px}.monsters-table col.monster-col-stats{width:350px}.monsters-table col.monster-col-reward{width:180px}.monsters-table col.monster-col-status{width:105px}.monsters-table col.monster-col-actions{width:150px}.monsters-table th,.monsters-table td{font-size:14px;padding:12px 9px;white-space:nowrap}.monsters-table th{font-size:13px}.monsters-table .monster-col-stats,.monsters-table .monster-col-reward{font-variant-numeric:tabular-nums}.monsters-table .row-actions{gap:5px}.monsters-table .row-actions button{font-size:12px;padding:6px 5px}@media(max-width:820px){.monsters-table{width:100%}.monsters-table col.monster-col-name{width:110px}.monsters-table col.monster-col-kind{width:96px}.monsters-table col.monster-col-tier{width:78px}.monsters-table col.monster-col-stats,.monsters-table col.monster-col-reward{display:none}.monsters-table .monster-col-stats,.monsters-table .monster-col-reward{display:none}.monsters-table col.monster-col-status{width:95px}.monsters-table col.monster-col-actions{width:130px}}
.monsters-table-wrap{width:100%;max-width:100%;overflow-x:hidden}.monsters-table{width:max-content;max-width:100%;min-width:0;table-layout:fixed}.monsters-table col.monster-col-name{width:110px}.monsters-table col.monster-col-kind{width:90px}.monsters-table col.monster-col-tier{width:80px}.monsters-table col.monster-col-level{width:60px}.monsters-table col.monster-col-hp,.monsters-table col.monster-col-attack,.monsters-table col.monster-col-defense{width:60px}.monsters-table col.monster-col-damageType{width:90px}.monsters-table col.monster-col-merit{width:110px}.monsters-table col.monster-col-coins{width:90px}.monsters-table col.monster-col-status{width:90px}.monsters-table col.monster-col-actions{width:150px}.monsters-table th,.monsters-table td{font-size:14px;padding:12px 8px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.monsters-table th{font-size:13px}.monsters-table .row-actions{gap:4px}.monsters-table .row-actions button{font-size:12px;padding:6px 5px}@media(max-width:1100px){.monsters-table col.monster-col-defense,.monsters-table col.monster-col-damageType,.monsters-table col.monster-col-coins,.monsters-table th.monster-col-defense,.monsters-table td.monster-col-defense,.monsters-table th.monster-col-damageType,.monsters-table td.monster-col-damageType,.monsters-table th.monster-col-coins,.monsters-table td.monster-col-coins{display:none}}@media(max-width:820px){.monsters-table col.monster-col-level,.monsters-table col.monster-col-hp,.monsters-table col.monster-col-attack,.monsters-table col.monster-col-merit,.monsters-table th.monster-col-level,.monsters-table td.monster-col-level,.monsters-table th.monster-col-hp,.monsters-table td.monster-col-hp,.monsters-table th.monster-col-attack,.monsters-table td.monster-col-attack,.monsters-table th.monster-col-merit,.monsters-table td.monster-col-merit{display:none}.monsters-table{width:100%}.monsters-table col.monster-col-name{width:130px}.monsters-table col.monster-col-kind{width:100px}.monsters-table col.monster-col-tier{width:80px}.monsters-table col.monster-col-coins{width:80px}.monsters-table col.monster-col-status{width:95px}.monsters-table col.monster-col-actions{width:140px}}
.monsters-table{width:max-content;max-width:100%;min-width:0;table-layout:auto}.monsters-table col.monster-col-name,.monsters-table col.monster-col-kind,.monsters-table col.monster-col-tier,.monsters-table col.monster-col-level,.monsters-table col.monster-col-hp,.monsters-table col.monster-col-attack,.monsters-table col.monster-col-defense,.monsters-table col.monster-col-damageType,.monsters-table col.monster-col-merit,.monsters-table col.monster-col-coins,.monsters-table col.monster-col-status,.monsters-table col.monster-col-actions{width:auto!important}.monsters-table th,.monsters-table td{padding-inline:8px;overflow:visible;text-overflow:clip}
.monsters-table{border-collapse:collapse;border:1px solid var(--line)}.monsters-table th,.monsters-table td{border:1px solid #dcd8ce}
.table-wrap{width:100%;max-width:100%;overflow-x:hidden}.table-wrap>table{width:max-content;max-width:100%;min-width:0;table-layout:auto;border-collapse:collapse;border:1px solid var(--line)}.table-wrap>table th,.table-wrap>table td{padding:9px 10px;border:1px solid #dcd8ce;font-size:13px;white-space:nowrap}.table-wrap>table th{font-size:12px}.table-wrap>table td{max-width:220px;overflow:hidden;text-overflow:ellipsis}.table-wrap>table .row-actions{gap:4px;white-space:nowrap}.table-wrap>table .row-actions button{font-size:11px;padding:5px 6px}.table-wrap>table.spells-table{width:max-content;max-width:100%;min-width:0;table-layout:auto}.spells-table col[class^="spell-col-"]{width:auto!important}.spells-table th,.spells-table td{padding:9px 8px;border:1px solid #dcd8ce;font-size:13px;white-space:nowrap}.spells-table th{font-size:12px}.spells-table td{max-width:240px;overflow:hidden;text-overflow:ellipsis}.monsters-table th,.monsters-table td{font-size:14px;padding:11px 9px;border:1px solid #dcd8ce}.monsters-table th{font-size:13px}
@media(max-width:1200px){.spells-table col.spell-col-volume,.spells-table col.spell-col-sourcePage,.spells-table col.spell-col-effectType,.spells-table col.spell-col-qiCost,.spells-table col.spell-col-durationTurns,.spells-table th.spell-col-volume,.spells-table td.spell-col-volume,.spells-table th.spell-col-sourcePage,.spells-table td.spell-col-sourcePage,.spells-table th.spell-col-effectType,.spells-table td.spell-col-effectType,.spells-table th.spell-col-qiCost,.spells-table td.spell-col-qiCost,.spells-table th.spell-col-durationTurns,.spells-table td.spell-col-durationTurns{display:none}}
.table-wrap>table th,.table-wrap>table td{padding:8px 6px;font-size:12px}.table-wrap>table th{font-size:12px}
.monsters-table th,.monsters-table td{padding:11px 9px;font-size:14px}.monsters-table th{font-size:13px}
@media(max-width:1100px){.module-marketGoods th:first-child,.module-marketGoods td:first-child{display:none}}
@media(max-width:1400px){.module-marketGoods th:first-child,.module-marketGoods td:first-child{display:none}.spells-table col.spell-col-volume,.spells-table col.spell-col-sourcePage,.spells-table col.spell-col-effectType,.spells-table col.spell-col-qiCost,.spells-table col.spell-col-durationTurns,.spells-table th.spell-col-volume,.spells-table td.spell-col-volume,.spells-table th.spell-col-sourcePage,.spells-table td.spell-col-sourcePage,.spells-table th.spell-col-effectType,.spells-table td.spell-col-effectType,.spells-table th.spell-col-qiCost,.spells-table td.spell-col-qiCost,.spells-table th.spell-col-durationTurns,.spells-table td.spell-col-durationTurns{display:none}}
.table-wrap>table,.table-wrap>table.spells-table{display:inline-table;width:auto;max-width:100%;min-width:0;table-layout:auto;vertical-align:top}.table-wrap>table th,.table-wrap>table td{font-size:14px;padding:9px 8px}.table-wrap>table th{font-size:13px}.spells-table th,.spells-table td{font-size:14px;padding:9px 8px}.spells-table th{font-size:13px}.monsters-table th,.monsters-table td{font-size:15px;padding:11px 9px}.monsters-table th{font-size:14px}
body{font-size:16px}.nav-item{font-size:14px}.nav-group-title{font-size:11px}.brand strong{font-size:18px}.brand span{font-size:11px}.world-status strong{font-size:13px}.world-status small{font-size:11px}.breadcrumb,.top-date{font-size:12px}.breadcrumb strong{font-size:13px}.global-search input,.button,.select-control,.field-control{font-size:13px}.page-heading p{font-size:14px}.table-search{font-size:13px}.result-count{font-size:11px}.status-pill{font-size:10px}.table-footer,.page-footer{font-size:11px}.summary-chip span{font-size:11px}.summary-chip strong{font-size:20px}.row-actions button{font-size:12px}
.table-wrap>table th,.table-wrap>table td{padding-inline:7px}.spells-table th,.spells-table td{padding-inline:7px}.monsters-table th,.monsters-table td{padding-inline:8px}

.seal-admin-thumb{display:block;width:44px;height:44px;object-fit:contain;background:#fff;border:1px solid var(--line);border-radius:5px;padding:2px}.module-seals td{vertical-align:middle}.module-seals td:first-child{width:62px}.module-seals td:nth-child(3){max-width:190px;white-space:normal}.module-seals td:nth-child(4){max-width:180px;white-space:normal}

.server-gate{max-width:680px;margin:48px auto;padding:36px;text-align:center}.server-gate-icon{font-size:36px;color:var(--jade)}.server-gate h2{margin:12px 0 8px}.server-gate p{color:var(--muted);line-height:1.7;margin:0 auto 22px;max-width:540px}.server-button:disabled,#exportButton:disabled,#topExport:disabled{opacity:.55;cursor:not-allowed}
.temple-buildings-table-wrap td:nth-child(6),.temple-positions-table-wrap td:nth-child(6){max-width:260px;white-space:normal;line-height:1.45}.temple-positions-table-wrap td:nth-child(1),.temple-positions-table-wrap td:nth-child(2){white-space:normal;min-width:100px}.temple-positions-table-wrap td:nth-child(3){min-width:92px;font-weight:700}

/* Keep the long module list inside the viewport and give it its own visible scroll area. */
.sidebar{position:sticky;top:0;height:100vh;height:100dvh;min-height:0;overflow:hidden}
.brand,.world-status,.sidebar-footer{flex:none}
.nav-groups{flex:1 1 auto;min-height:0;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:auto;scrollbar-color:#8aa091 #213d32}
.nav-groups::-webkit-scrollbar{width:9px}
.nav-groups::-webkit-scrollbar-track{background:#213d32;border-radius:8px}
.nav-groups::-webkit-scrollbar-thumb{background:#8aa091;border:2px solid #213d32;border-radius:8px}
.nav-groups::-webkit-scrollbar-thumb:hover{background:#bdcbbd}
.nav-group{flex:none}
@media(max-width:820px){.sidebar{position:fixed;top:0;bottom:0;height:100vh;height:100dvh;min-height:0}.nav-groups{min-height:0}}

.player-accounts-wrap{overflow-x:auto}
.player-accounts-table{width:100%;table-layout:auto}
.player-accounts-table th,.player-accounts-table td{border:1px solid #dcd8ce;white-space:nowrap;font-size:14px;padding:10px 8px}
.player-accounts-table th{font-size:13px}

/* Full-screen sign-in for the admin console. */
.login-screen{position:fixed;inset:0;margin:0;width:100vw;height:100vh;height:100dvh;max-width:none;max-height:none;border:0;padding:28px;overflow:auto;background:radial-gradient(ellipse at 50% 0%,rgba(172,126,48,.14),transparent 38%),radial-gradient(ellipse at 0% 100%,rgba(28,73,56,.2),transparent 42%),#0b0d0d;color:#f3eee2;}
.login-screen[open]{display:grid;place-items:center}
.login-screen::backdrop{background:#0b0d0d}
.login-card{position:relative;width:min(690px,100%);padding:42px 64px 34px;border:1px solid rgba(220,201,151,.22);border-radius:24px;background:linear-gradient(145deg,rgba(25,28,27,.98),rgba(17,20,19,.98));box-shadow:0 26px 100px rgba(0,0,0,.46);text-align:center}
.login-brand-mark{width:116px;height:116px;margin:0 auto 15px;display:grid;place-items:center;overflow:hidden}
.login-brand-mark img{width:100%;height:100%;object-fit:contain;filter:invert(1) sepia(.8) saturate(1.8) hue-rotate(350deg);mix-blend-mode:screen}
.login-brand-name{font:600 30px/1.25 "Noto Serif TC","Microsoft JhengHei",serif;letter-spacing:5px;color:#e5c477}
.login-brand-subtitle{margin-top:7px;color:#b6a777;font-size:12px;letter-spacing:7px}
.login-divider{display:flex;align-items:center;justify-content:center;gap:12px;margin:22px auto 18px;color:#c79e50}
.login-divider span{width:74px;height:1px;background:linear-gradient(90deg,transparent,rgba(199,158,80,.75))}
.login-divider span:last-child{transform:rotate(180deg)}
.login-divider i{font-style:normal;font-size:11px}
.login-eyebrow{color:#bc9c5d;font-size:10px;letter-spacing:2px}
.login-card h1{margin:9px 0 0;font:500 30px/1.35 "Noto Serif TC","Microsoft JhengHei",serif;letter-spacing:1px;color:#f0ecdf}
.login-description{margin:12px 0 28px;color:#b1b3aa;font-size:14px;line-height:1.8}
.login-field{display:block;margin:0 0 17px;text-align:left}
.login-field span{display:block;margin:0 0 8px 2px;color:#c8b988;font-size:13px}
.login-field input{display:block;width:100%;height:54px;border:1px solid #343a36;border-radius:10px;padding:0 16px;background:#202422;color:#f5f1e8;font-size:15px;outline:0;transition:border-color .15s,box-shadow .15s}
.login-field input::placeholder{color:#777d77}
.login-field input:focus{border-color:#b99550;box-shadow:0 0 0 3px rgba(185,149,80,.14)}
.login-error:not([hidden]){margin:-2px 0 12px;padding:10px 12px;border:1px solid rgba(205,115,92,.4);border-radius:8px;background:rgba(131,53,42,.18);color:#edaa98;text-align:left;font-size:12px;line-height:1.5}
.login-submit{width:100%;height:54px;margin-top:7px;border:1px solid #d1ae60;border-radius:10px;display:flex;align-items:center;justify-content:center;gap:12px;background:linear-gradient(120deg,#bd984d,#d7b766);color:#161612;font-weight:700;font-size:15px;letter-spacing:2px;transition:filter .15s,transform .15s}
.login-submit b{font-size:17px;font-weight:500}
.login-submit:hover{filter:brightness(1.08);transform:translateY(-1px)}
.login-footnote{margin:22px 0 0;color:#8f958d;font-size:11px;letter-spacing:.3px}
.login-dismiss{position:absolute;top:14px;right:17px;width:30px;height:30px;border:0;border-radius:50%;background:transparent;color:#8f958d;font-size:22px;cursor:pointer}
.login-dismiss:hover{background:rgba(255,255,255,.08);color:#eee8d9}
@media(max-width:620px){.login-screen{padding:16px}.login-card{padding:34px 23px 26px;border-radius:18px}.login-brand-mark{width:92px;height:92px}.login-brand-name{font-size:26px}.login-card h1{font-size:25px}.login-description{font-size:13px;margin-bottom:23px}.login-field input{height:50px}}
.player-accounts-table td:nth-child(2){font-family:ui-monospace,Consolas,monospace;font-size:12px}
.player-accounts-table .player-short-id{font-family:ui-monospace,Consolas,monospace;font-size:13px;font-weight:700;color:var(--jade)}
.player-accounts-table td:nth-child(4){max-width:220px;overflow:hidden;text-overflow:ellipsis}
.player-accounts-table .row-actions{gap:5px}
.player-accounts-table .row-actions button{font-size:12px;padding:6px 7px}
.creatures-npc-panel{margin-top:18px}
.creatures-npc-panel .panel-head{padding:16px 18px 8px}
.creatures-npc-panel .panel-head h2{margin:0;font-size:18px}
.creatures-npc-panel .panel-head p{margin:5px 0;color:var(--muted);font-size:13px}
.player-password-dialog .login-copy{line-height:1.7}
.creature-tabs{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:18px 0 14px;padding:0 0 10px;border-bottom:1px solid var(--line)}
.creature-tab{display:inline-flex;align-items:center;gap:9px;min-height:42px;padding:8px 15px;border:1px solid var(--line);border-radius:7px;background:var(--surface);color:var(--ink);font:inherit;font-size:15px;font-weight:650;cursor:pointer}
.creature-tab span{display:inline-grid;min-width:22px;height:22px;place-items:center;padding:0 5px;border-radius:11px;background:#eee9dd;color:var(--muted);font-size:12px}
.creature-tab:hover{border-color:var(--jade);color:var(--jade)}
.creature-tab.active{border-color:var(--jade);background:var(--jade);color:#fff}
.creature-tab.active span{background:rgba(255,255,255,.2);color:#fff}
@media(max-width:1000px){.player-accounts-wrap{overflow-x:auto}.player-accounts-table{min-width:940px}}

/* Keep monster columns content-sized and available for direct editing. */
.monsters-table-wrap{overflow-x:auto!important;overflow-y:hidden!important}
.monsters-table{width:max-content!important;max-width:none!important;min-width:0!important;table-layout:auto!important}
.monsters-table col[class^="monster-col-"]{width:auto!important;display:table-column!important}
.monsters-table th,.monsters-table td{display:table-cell!important;width:auto!important;min-width:0!important;max-width:none!important;padding:7px 5px!important;overflow:visible!important;text-overflow:clip!important;white-space:nowrap!important}
.monsters-table .monster-edit-cell{cursor:cell}
.monsters-table .monster-edit-cell:hover{background:#f0f4ed;box-shadow:inset 0 0 0 1px #d9e3d7}
.monsters-table .spell-inline-editor{min-width:52px}
