.admin-panel{position:fixed;inset:0;z-index:300;background:#111717;color:#e2e4dd;font:16px/1.5 var(--sans,system-ui);overflow:auto;--admin-gold:#c5a66e;--admin-line:#344141;--admin-muted:#a5b3b0;cursor:default}.admin-panel[hidden]{display:none}.admin-panel *{box-sizing:border-box}.admin-panel h1,.admin-panel h2,.admin-panel h3{font-family:var(--serif,Georgia);font-weight:400;letter-spacing:.02em;color:#ebdec4;margin:0}.admin-panel h1{font-size:1.4rem}.admin-panel h2{font-size:1.3rem}.admin-panel h3{font-size:1.05rem;margin-bottom:.7rem}.admin-panel p{margin:.5rem 0 1rem}.admin-panel button,.admin-panel input,.admin-panel select,.admin-panel textarea{font:inherit;letter-spacing:normal;border-radius:3px;box-shadow:none;text-shadow:none;min-width:0}.admin-panel button{padding:.5rem .75rem;background:#24302f;border:1px solid #4b605b;color:#e6e5d9;min-height:38px;cursor:pointer}.admin-panel button:hover:not(:disabled){background:#35433e;border-color:#c5a66e}.admin-panel button:focus-visible,.admin-panel input:focus-visible,.admin-panel select:focus-visible,.admin-panel textarea:focus-visible{outline:2px solid #e0c481;outline-offset:3px}.admin-panel button:disabled{opacity:.4;cursor:not-allowed}.admin-panel .primary{background:#b49a66;color:#141b1a;border-color:#d2b67a;font-weight:600}.admin-panel .danger{color:#f3b1a0;border-color:#9d665e}.admin-panel input,.admin-panel select,.admin-panel textarea{color:#e3e8e3;background:#111b1c;border:1px solid #455653;padding:.6rem;width:100%;min-height:40px}.admin-panel input[type=checkbox]{width:19px;min-height:19px;accent-color:#bd9c60}.admin-panel textarea{min-height:105px;resize:vertical;font:14px/1.55 ui-monospace,monospace}.admin-top{position:sticky;top:0;z-index:5;display:flex;justify-content:space-between;gap:20px;padding:16px 24px;background:#101718;border-bottom:1px solid #b09664}.admin-top small{display:block;color:var(--admin-muted);font-size:13px}.admin-toolbar,.admin-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.admin-layout{display:grid;grid-template-columns:210px minmax(0,1fr);min-height:calc(100vh - 90px)}.admin-nav{background:#172120;border-right:1px solid var(--admin-line);padding:20px 12px}.admin-nav p{color:var(--admin-muted);font-size:12px;letter-spacing:.14em;text-transform:uppercase;margin:20px 10px 8px}.admin-nav button{width:100%;display:flex;justify-content:space-between;text-align:left;background:none;border:1px solid transparent;margin:2px 0;font-size:14px}.admin-nav button.active{background:#2b3933;color:#efd6a1;border-color:#6f7256}.admin-nav .sub{padding-left:23px;font-size:13px;color:#b9c5bd}.admin-nav small{font-size:12px;color:#a2b1a5}.admin-main{padding:24px;min-width:0}.admin-heading{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:16px}.admin-filter{display:grid;grid-template-columns:minmax(180px,2fr) repeat(3,minmax(120px,1fr));gap:10px;margin-bottom:18px}.admin-filter label{font-size:13px;color:var(--admin-muted)}.admin-workspace{display:grid;grid-template-columns:minmax(240px,.75fr) minmax(400px,1.6fr);gap:20px;align-items:start}.admin-list{border:1px solid var(--admin-line);border-radius:4px;max-height:calc(100vh - 265px);overflow:auto}.admin-list button{display:grid;grid-template-columns:48px 1fr auto;align-items:center;width:100%;gap:12px;border:0;border-bottom:1px solid #34413c;border-radius:0;background:#182221;text-align:left;padding:12px}.admin-list button.active{background:#2e3a33;box-shadow:inset 3px 0 #c4a46b}.admin-list button small{display:block;color:#aabbad;font-size:12px;overflow-wrap:anywhere}.admin-list strong{font-weight:500;font-size:15px}.admin-thumb{height:48px;width:48px;object-fit:contain;background:#101717;display:block}.admin-badge{border:1px solid #54685d;color:#c1ceb5;font-size:12px;padding:2px 6px;white-space:nowrap;border-radius:2px}.admin-badge.draft{color:#e4c77e;border-color:#8e7743}.admin-badge.archived,.admin-badge.deleted{color:#adacaa;border-color:#5e6563}.admin-badge.error,.admin-badge.missing{color:#f0b3a5;border-color:#935f53}.admin-editor{border:1px solid var(--admin-line);border-radius:4px;background:#182221;min-width:0}.admin-editor-head{padding:18px 20px;border-bottom:1px solid var(--admin-line);display:flex;justify-content:space-between;align-items:flex-start;gap:16px}.admin-editor-head code{font-size:13px;color:#b9c6bd;overflow-wrap:anywhere}.admin-tabs{display:flex;flex-wrap:wrap;gap:6px;padding:12px 20px;border-bottom:1px solid var(--admin-line)}.admin-tabs button{font-size:14px;background:transparent}.admin-tabs button.active{color:#edd69e;border-color:#ae965f}.admin-editor-body{padding:20px}.admin-fields{display:grid;grid-template-columns:1fr 1fr;gap:14px}.admin-fields label{display:flex;flex-direction:column;gap:5px;font-size:14px;color:#bac8c2}.admin-fields label.wide{grid-column:1/-1}.admin-fields label.check{flex-direction:row;align-items:center;padding-top:20px}.admin-fields label small{font-size:12px;color:#a4b2ab}.admin-json{margin:18px 0;border-top:1px solid #435048;padding-top:12px}.admin-json summary{cursor:pointer;color:#d4c398;margin-bottom:10px}.admin-json textarea{min-height:200px}.admin-footer{position:sticky;bottom:0;z-index:3;padding:14px 20px;background:#182320f5;border-top:1px solid #526252}.admin-footer p{margin:8px 0 0;color:#afc0b4;font-size:13px}.admin-help{color:var(--admin-muted);font-size:14px;max-width:70ch}.admin-notice{margin:0;padding:10px 24px;background:#29382f;color:#d8e7ca;border-bottom:1px solid #52674d;position:sticky;top:85px;z-index:4}.admin-notice:empty{display:none}.admin-notice.error{background:#452c26;color:#ffd4c4}.admin-empty{padding:25px;color:#aabbaf;border:1px dashed #455951}.admin-preview{padding:20px;background:#101a19;border:1px solid #7d6b47}.admin-preview-art{display:block;width:100%;height:220px;object-fit:contain;margin:auto auto 15px;background:repeating-conic-gradient(#1b2724 0% 25%,#23312d 0% 50%) 50%/22px 22px}.admin-preview p{white-space:pre-line;font-family:var(--serif,Georgia);color:#e0d3b8}.admin-diff{margin-top:20px;border-top:1px solid #4a5a50;padding-top:12px}.admin-diff ul{font-size:13px;line-height:1.7;padding-left:20px;overflow-wrap:anywhere}.admin-diff del{color:#cfab9f}.admin-diff ins{color:#b4d0a5;text-decoration:none}.admin-validate{background:#101917;padding:14px;border-left:3px solid #8b9d70;margin:15px 0}.admin-validate.error{border-color:#c2846c}.admin-validate ul{padding-left:20px;font-size:14px}.admin-effect{border:1px solid #42574b;padding:12px;margin:12px 0;display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px}.admin-effect label{font-size:13px;color:#b7c8bb}.admin-effect button{align-self:end}.admin-animation-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:12px;margin-top:18px}.admin-pose{padding:12px;background:#111b1a;border:1px solid #3f5045;min-width:0}.admin-pose canvas{height:170px;width:100%;object-fit:contain;display:block;background:repeating-conic-gradient(#202e28 0% 25%,#27382f 0% 50%) 50%/18px 18px}.admin-pose strong{display:block;font-size:13px;margin:8px 0;overflow-wrap:anywhere}.admin-pose p{font-size:13px;color:#becab9;line-height:1.4}.admin-pose button{font-size:13px;width:100%;margin-top:6px;padding:5px}.admin-pose.review{border-color:#958149}.admin-pose.missing{border-color:#a36554}.admin-summary{display:flex;flex-wrap:wrap;gap:10px;padding:12px;background:#101a18}.admin-summary span{font-size:14px}.admin-summary b{color:#e8ce8f}.admin-history{width:100%;border-collapse:collapse}.admin-history td,.admin-history th{padding:12px 10px;border-bottom:1px solid #435348;text-align:left;vertical-align:top;font-size:14px}.admin-history code{font-size:12px;overflow-wrap:anywhere}.admin-confirm{position:fixed;z-index:500;inset:0;background:#000b;display:grid;place-items:center;padding:18px}.admin-confirm article{width:min(850px,100%);max-height:90vh;overflow:auto;padding:24px;background:#17211e;border:1px solid #b49a66;box-shadow:0 12px 50px #000a}.admin-compare{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin:18px 0}.admin-compare canvas,.admin-compare img{display:block;height:260px;width:100%;object-fit:contain;background:repeating-conic-gradient(#202e28 0% 25%,#27382f 0% 50%) 50%/22px 22px}.admin-compare h3{font:14px var(--sans,system-ui);margin:6px 0}.admin-file{display:block;padding:12px 0;font-size:14px}.admin-file input{margin-top:6px}.admin-panel .arena-builder,.admin-panel .travel-trial{max-width:1200px}.admin-panel .arena-hero .hero-orb{border:0;background:none}.admin-panel .arena-heroes{overflow:auto}.admin-panel .arena-builder{grid-template-columns:minmax(0,2fr) minmax(240px,1fr)}.admin-panel .arena-weapon-card .catalog-art{max-height:100px}.admin-panel .admin-testing{border:1px solid #52604b;padding:20px;background:#18231e}.admin-launching{padding:24px}.admin-panel code{font-family:ui-monospace,monospace}.admin-panel [hidden]{display:none!important}.admin-return{border-color:#b8985b!important;color:#ead19f!important}.admin-panel .admin-full{grid-template-columns:1fr}.admin-player-only{opacity:.85}
@media(min-width:1600px){.admin-workspace{grid-template-columns:340px minmax(0,1fr)}.admin-fields{grid-template-columns:repeat(3,1fr)}}
.admin-skill-fields{grid-column:1/-1;border:1px solid #435b4d;padding:14px;display:grid;grid-template-columns:repeat(auto-fit,minmax(135px,1fr));gap:12px}.admin-skill-fields legend{color:#e2d0a5;padding:0 6px}.admin-modal-error{color:#ffc1ad;background:#4a302a;padding:10px}.content-load-warning{display:block;max-width:420px;color:#edb69d}
.content-loading{min-height:80vh;display:grid;place-items:center;color:#dcc696;font:20px Georgia,serif;margin:0;padding:24px;text-align:center;background:#101717}
@media(max-width:1000px){.admin-layout{grid-template-columns:170px minmax(0,1fr)}.admin-main{padding:16px}.admin-workspace{grid-template-columns:1fr}.admin-list{max-height:250px}.admin-filter{grid-template-columns:1fr 1fr}.admin-top{padding:12px 16px}.admin-panel .arena-builder{grid-template-columns:1fr}.admin-editor-head{padding:15px}.admin-notice{position:static}}
@media(max-width:600px){.admin-layout{display:block}.admin-nav{display:flex;overflow:auto;padding:8px;border-right:0}.admin-nav p,.admin-nav .sub{display:none}.admin-nav button{width:auto;white-space:nowrap}.admin-top{align-items:flex-start}.admin-top h1{font-size:1.05rem}.admin-top small{font-size:12px}.admin-top .admin-toolbar{justify-content:flex-end}.admin-main{padding:12px}.admin-fields,.admin-filter,.admin-effect,.admin-compare{grid-template-columns:1fr}.admin-compare canvas,.admin-compare img{height:200px}.admin-animation-grid{grid-template-columns:1fr 1fr}.admin-footer{position:static}.admin-toolbar button,.admin-actions button{font-size:14px}.admin-heading{flex-wrap:wrap}.admin-history td{padding:8px;font-size:13px}.admin-pose canvas{height:140px}}
.model-test-setup{border:1px solid #65513a;margin:0 0 1.2rem;padding:1rem;background:#161d1b;color:#e4d6b8}.model-test-setup legend{color:#eac991;padding:0 .4rem}.model-test-setup label{display:flex;align-items:flex-start;gap:.6rem;font-size:1rem}.model-test-setup input{flex:0 0 auto;width:auto}.model-test-setup p{font-size:.9rem;line-height:1.5;color:#bfb6a5}.model-test-toolbar{position:absolute;right:.65rem;top:.65rem;z-index:6;width:min(330px,43%);padding:.75rem;background:#111918ed;border:1px solid #85714c;color:#e9dfc7;box-shadow:0 5px 18px #0009;font-size:.875rem;max-height:calc(100% - 1.3rem);overflow:auto}.model-test-toolbar p{margin:0 0 .65rem;color:#e6c588}.model-test-toolbar button{padding:.35rem .55rem;font-size:.875rem;margin:.2rem}.model-test-fields{display:grid;grid-template-columns:1fr 1fr;gap:.6rem}.model-test-fields label{display:flex;flex-direction:column;gap:.25rem}.model-test-fields select{width:100%;min-width:0;color:#e9dfc7;background:#252b25;border:1px solid #655b44;padding:.3rem;font:inherit}.model-test-fields input{width:100%;min-width:0;accent-color:#c3a765}.model-test-fields+div{margin-top:.6rem}@media(max-width:700px){.model-test-toolbar{width:39%;font-size:.8rem;padding:.4rem}.model-test-fields{grid-template-columns:1fr;gap:.35rem}.model-test-toolbar button{font-size:.8rem}}

/* Recordings are lazy-loaded: the library never downloads every voice file. */
.admin-voices{display:grid;gap:16px}.admin-voices h3,.admin-voices p{margin:0}.admin-voice-lines{display:grid;gap:12px}.admin-voice-line{border:1px solid #74634c66;border-radius:5px;background:#191a19;padding:15px;display:grid;gap:12px}.admin-voice-line[hidden],.admin-voice-empty[hidden]{display:none}.admin-voice-line header{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.admin-voice-line code{color:#b6a283}.admin-voice-line p{line-height:1.6;white-space:pre-wrap}.admin-voice-preview{display:grid;gap:6px}.admin-voices audio,.admin-voice-compare audio{width:100%;max-width:430px;height:36px;color-scheme:dark}.admin-voice-compare{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px}.admin-voice-compare section{display:grid;align-content:start;gap:12px}.admin-voice-compare input{width:100%}.admin-voice-compare small{display:block;overflow-wrap:anywhere}.admin-confirm blockquote{margin:12px 0 20px;padding:12px;border-left:2px solid #9e885f;background:#ffffff06;white-space:pre-wrap}.admin-voices .admin-toolbar label{display:grid;gap:6px;flex:1}@media(max-width:750px){.admin-voice-compare{grid-template-columns:1fr}}

/* The grip editor shares the real animated preview and server content history. */
.weapon-mount-fields{display:grid;grid-template-columns:1fr 1fr;gap:.65rem;margin:.8rem 0}.weapon-mount-fields label{display:flex;flex-direction:column;gap:.3rem}.weapon-mount-fields input,.weapon-mount-fields select{width:100%;min-width:0;padding:.45rem;color:#e9dfc7;background:#252b25;border:1px solid #655b44;font:inherit}.weapon-mount-fields input[type=checkbox]{width:auto;align-self:flex-start}.weapon-mount-fields input[aria-invalid=true]{border-color:#e18c76}.weapon-mount-fields fieldset,.mount-wide{grid-column:1/-1}.weapon-mount-fields fieldset{padding:.6rem;border:1px solid #655b44}.weapon-mount-fields small{display:block;color:#b9b4a8;margin-top:.4rem;font-size:.8rem}.mount-axis-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.5rem}.model-test-toolbar.has-mount-editor{width:min(380px,43%)}.weapon-mount-live{border-top:1px solid #655b44;margin-top:.6rem;padding-top:.6rem}.weapon-mount-live summary{font-weight:bold;color:#e6c588;cursor:pointer}.weapon-mount-live p{font-size:.85rem;line-height:1.35;margin:.5rem 0}.mount-save-actions{display:flex;flex-wrap:wrap}#mount-preview-notice{color:#e9dfc7}.weapon-mount-fields legend{color:#e6c588;padding:0 .3rem}
/* Skeletal animation library and shared live model editor. */
.admin-actor-3d,.admin-motion-record{padding:1.1rem;background:linear-gradient(135deg,#1c2926,#121b19);border:1px solid #8a7046;margin-bottom:1.1rem;border-radius:3px}.admin-3d-heading{display:flex;gap:.8rem;align-items:center;flex-wrap:wrap}.admin-3d-heading h3{margin:.3rem 0}.admin-3d-badge{font-size:.72rem;letter-spacing:.12em;color:#e9c989;border:1px solid #876d42;padding:.3rem .5rem}.admin-model-preview{display:block;width:100%;height:240px;background:radial-gradient(ellipse at 50% 72%,#3b4035,#101916 68%);border:1px solid #4e5846;margin:.9rem 0}.admin-actor-3d label,.admin-motion-record label,.animation-binding-live>label{display:flex;flex-direction:column;gap:.3rem;margin:.65rem 0}.admin-binding-summary{display:grid;grid-template-columns:1fr 1fr;gap:.3rem .8rem;margin-top:.9rem}.admin-binding-summary>div{border-bottom:1px solid #4f4939;padding:.4rem 0;min-width:0}.admin-binding-summary span,.admin-binding-summary strong{display:block;overflow-wrap:anywhere}.admin-binding-summary span{font-size:.78rem;color:#b3b7a4}.admin-binding-summary strong{font-size:.85rem;font-weight:400;color:#e8d7b2}.model-test-toolbar.has-binding-editor{width:min(420px,43%)}.has-binding-editor .native-model-action{display:none}.animation-binding-live{border-top:1px solid #8a7046;padding-top:.6rem;margin-top:.7rem}.animation-binding-live h3{color:#e8cc93;margin:.35rem 0}.animation-binding-live input,.animation-binding-live select{box-sizing:border-box;max-width:100%;width:100%;padding:.45rem;color:#f1e6ce;background:#222d27;border:1px solid #8c7955;font:inherit}.animation-binding-live input[type=checkbox]{width:auto;align-self:flex-start}.animation-binding-live button:disabled{opacity:.45;cursor:wait}.animation-binding-live :is(button,input,select):focus-visible,.admin-actor-3d :is(button,select):focus-visible{outline:2px solid #e9c989;outline-offset:2px}.animation-binding-live .admin-help{color:#bbb6a5;font-size:.78rem;line-height:1.4}.animation-binding-live #animation-binding-notice{font-size:.82rem;line-height:1.4;color:#ead6ab;min-height:2rem;overflow-wrap:anywhere}.has-binding-editor .weapon-mount-live{margin-top:1rem}.admin-actor-3d .admin-actions{flex-wrap:wrap}@media(max-width:850px){.admin-binding-summary{grid-template-columns:1fr}.model-test-toolbar.has-binding-editor{width:43%;font-size:.8rem}.animation-binding-live .model-test-fields{grid-template-columns:1fr}}@media(max-width:560px){.admin-model-preview{height:180px}.model-test-toolbar.has-binding-editor{width:48%;right:.3rem;top:.3rem;max-height:calc(100% - .6rem);padding:.4rem}}

.model-action-wide{grid-column:1/-1}.model-action-wide small{font-size:.75rem;color:#c5bda9;line-height:1.35}

.admin-list button:has([data-model-card]){grid-template-columns:64px minmax(0,1fr) auto}.admin-thumb[data-model-card]{width:64px;height:64px}.admin-model-preview{object-fit:contain}

/* Direct actor assignments and handle selection share the editor's brass palette. */
.admin-actor-weapons{border-top:1px solid #776343;margin-top:18px;padding-top:16px}
.weapon-grip-picker{border:1px solid #776343;background:#101a18;padding:14px;margin:14px 0;border-radius:4px;color:#e7ddc5}
.weapon-grip-picker h4{margin:0 0 6px;font-size:17px;color:#e5c58c}
.weapon-grip-picker p,.weapon-grip-picker small{font-size:13px;line-height:1.5;color:#c9c8b9}
.weapon-grip-image{position:relative;width:min(100%,270px);aspect-ratio:1;margin:8px auto;background:radial-gradient(ellipse,#35413a,#111a18);border:1px solid #615940;overflow:hidden}
.weapon-grip-image canvas{display:block;width:100%;height:100%;cursor:crosshair;touch-action:manipulation}
.weapon-grip-marker{position:absolute;left:8%;right:8%;height:2px;background:#f2c76f;box-shadow:0 0 8px #e3b75a;pointer-events:none}
.weapon-grip-marker:after{content:'GRIP';position:absolute;right:0;top:4px;color:#f9d992;font:10px sans-serif;letter-spacing:1px;background:#101a18;padding:2px 4px}
.weapon-grip-picker label{display:grid;gap:6px;font-size:13px}.weapon-grip-picker input[type=range]{width:100%;accent-color:#d4b275}
.weapon-grip-picker .admin-actions{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0}
.weapon-grip-picker button{padding:9px 12px;border:1px solid #ad935a;background:#263632;color:#f3dfb1;border-radius:3px;cursor:pointer;font:inherit}
.weapon-grip-picker button:hover{background:#3b4d43}.weapon-grip-picker button:focus-visible{outline:2px solid #f2c76f;outline-offset:3px}
.weapon-grip-picker button:disabled,.weapon-grip-picker[data-grip-disabled]{opacity:.55;cursor:wait}
