@import url('https://fonts.googleapis.com/css2?family=Cinzel:wght@500;600;700&family=DM+Sans:wght@400;500;600;700&display=swap');
:root{color-scheme:dark;--bg:#0c1316;--panel:#162025;--panel2:#1c292e;--line:#344348;--text:#ede8d8;--muted:#9caeaf;--gold:#d7b67a;--amber:#c89657;--violet:#9d90c6;--green:#78b8a0;--red:#bb7771;font-family:'DM Sans',system-ui,sans-serif;font-synthesis:none}
*{box-sizing:border-box}body{margin:0;min-height:100vh;background:radial-gradient(ellipse at 12% -10%,#1e3437 0,transparent 48%),radial-gradient(ellipse at 95% 10%,#262536 0,transparent 35%),var(--bg);color:var(--text)}
button,input{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.36}button:focus-visible,input:focus-visible{outline:2px solid var(--gold);outline-offset:3px}
h1,h2,h3,p{margin:0}h1,h2,h3,.brand-name{font-family:'Cinzel',Georgia,serif}h1{font-size:clamp(2rem,3.6vw,3.25rem);line-height:1.12;letter-spacing:.018em}h2{font-size:1.34rem}h3{font-size:1.09rem}p{line-height:1.6;color:var(--muted)}small{color:var(--muted)}
.topbar{display:flex;align-items:center;gap:14px;padding:18px max(24px,calc((100vw - 1440px)/2));border-bottom:1px solid #344246;background:rgba(11,18,21,.64)}
.brandmark{height:43px;width:43px;border:1px solid var(--gold);display:grid;place-items:center;color:var(--gold);font-size:27px;transform:rotate(-10deg);border-radius:4px}.brand-name{font-size:1.27rem;font-weight:700;letter-spacing:.08em}.brand-name em{color:var(--gold);font-style:normal}.brand-sub{font-size:.68rem;text-transform:uppercase;letter-spacing:.22em;color:var(--muted);margin-top:3px}.build-tag{margin-left:auto;border:1px solid #485357;padding:7px 11px;color:#b2c1c0;letter-spacing:.16em;font-size:.68rem}.build-separator{color:var(--gold);margin:0 5px}
.shell{max-width:1488px;padding:42px 24px 72px;margin:auto}.eyebrow{font-size:.68rem;font-weight:700;letter-spacing:.22em;color:var(--gold);text-transform:uppercase;margin-bottom:12px}.intro{max-width:780px;margin:0 0 34px}.intro p{max-width:675px;margin-top:16px}.intro-pills{display:flex;flex-wrap:wrap;gap:10px;margin-top:20px}.intro-pills span{padding:7px 12px;background:#19262a;border:1px solid #364548;border-radius:30px;color:#bacbc5;font-size:.74rem;letter-spacing:.045em}
.setup-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px}.guild-editor{background:linear-gradient(155deg,rgba(29,40,46,.96),rgba(19,29,34,.96));border:1px solid var(--line);border-radius:8px;padding:24px;min-width:0}.guild-editor:last-child{border-color:#494057}.guild-title{display:flex;justify-content:space-between;align-items:end;margin-bottom:28px}.guild-title h2{font-size:1.55rem}.roster-count{font-family:'Cinzel',serif;font-size:1.9rem;color:var(--gold)}.roster-count span{font:500 .72rem 'DM Sans';margin-left:4px;color:var(--muted)}
.section-caption{font-size:.72rem;letter-spacing:.11em;text-transform:uppercase;color:#d2d5ca;font-weight:700;display:flex;justify-content:space-between;gap:12px;margin-bottom:11px}.section-caption span{font-size:.67rem;letter-spacing:0;text-transform:none;color:var(--muted);font-weight:400}.available-label{margin-top:28px}.selected-list{display:grid;gap:7px}.selected-row{min-height:62px;display:flex;gap:13px;align-items:center;padding:9px 10px;border:1px solid #405055;border-radius:4px;background:#233036}.formation-index{font:.8rem 'Cinzel',serif;color:var(--gold);min-width:16px}.roster-token{height:37px;width:37px;display:grid;place-items:center;background:hsl(var(--npc-hue) 25% 24%);border:1px solid hsl(var(--npc-hue) 25% 51%);border-radius:4px;color:#e8d7b9;font-size:1.3rem}.selected-name{min-width:0;flex:1}.selected-name strong,.reserve-title strong{display:block;font-size:.84rem}.selected-name small,.reserve-title small{display:block;font-size:.7rem;margin-top:4px}.row-actions{display:flex;gap:4px}.icon-btn{border:1px solid #46565a;color:#dce0da;background:#2a3940;border-radius:3px;padding:2px 7px;font-size:1rem}.icon-btn:hover:not(:disabled){border-color:var(--gold)}.icon-btn.remove{color:#e4a49a}.empty-hint{padding:26px;text-align:center;border:1px dashed #60716e}
.reserve-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.reserve-card{border:1px solid #3b4a4e;background:#18272a;border-radius:5px;padding:12px;transition:background .2s,border-color .2s}.reserve-card:hover{border-color:#67756d;background:#223237}.reserve-card.already-selected{opacity:.62}.reserve-title{display:flex;align-items:center;gap:9px}.reserve-title>div{flex:1;min-width:0}.reserve-glyph{height:29px;width:29px;display:grid;place-items:center;color:#f1d6a4;background:hsl(var(--npc-hue) 32% 24%);border-radius:3px;font-size:1.06rem}.reserve-add{border:1px solid #7f8d80;background:transparent;color:#f4e0b4;padding:6px 9px;font-size:.7rem;border-radius:3px}.reserve-card p{font-size:.75rem;margin:12px 0;color:#acb9b4;min-height:36px}.stat-strip{display:flex;flex-wrap:wrap;gap:5px}.stat-strip span{background:#28383c;border:1px solid #3c4b50;color:#d8d9ca;padding:3px 5px;border-radius:2px;font-size:.66rem}
.launch-panel{display:flex;align-items:center;justify-content:space-between;gap:35px;padding:30px;margin:26px 0 10px;border:1px solid #706344;border-radius:7px;background:linear-gradient(110deg,#27332f,#171f23)}.launch-panel h3{font-size:1.35rem}.launch-panel p{font-size:.85rem;max-width:590px;margin:10px 0 16px}.seed-row{display:flex;align-items:center;flex-wrap:wrap;gap:10px}.seed-row label{color:#d3dccf;font-size:.75rem}.seed-row input{background:#111b1f;border:1px solid #506159;border-radius:3px;color:var(--text);padding:9px 11px;width:min(245px,100%);font-size:.85rem}.btn-small{border:1px solid #63716a;background:#243237;color:#e8e2cf;padding:9px 13px;font-size:.79rem;border-radius:3px;transition:background .2s}.btn-small:hover{background:#364548}.launch-btn{flex-shrink:0;border:1px solid #e4c68f;background:linear-gradient(110deg,#c8a56b,#dfc392);box-shadow:0 6px 26px #0006;color:#162022;letter-spacing:.08em;font-weight:800;padding:19px 25px;border-radius:3px;display:flex;gap:15px;align-items:center}.launch-btn:hover{filter:brightness(1.09)}.site-footer{text-align:center;color:#657d7b;font-size:.7rem;letter-spacing:.04em;padding-top:30px}
.combat-shell{max-width:1520px;padding-top:30px}.fight-header{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:24px}.fight-header h1{font-size:2.25rem}.fight-header p{font-size:.78rem;margin-top:8px}.playback-toolbar{border:1px solid #475750;background:#1c2b2b;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:14px;padding:10px 16px;border-radius:6px 6px 0 0}.playback-left,.playback-actions{display:flex;align-items:center;gap:12px}.playback-left strong{font-size:.73rem;letter-spacing:.15em}.live-dot{width:7px;height:7px;background:var(--green);box-shadow:0 0 10px #5ccfb7;border-radius:100%}.event-counter{font-size:.72rem;color:var(--muted)}.playback-actions button{padding:7px 12px;background:#243638;color:#dedecf;border:1px solid #4b605e;border-radius:3px;font-size:.78rem}.playback-actions button:hover:not(:disabled){background:#3e5656}.speed-choices{display:flex;gap:0}.speed-choices button{border-radius:0}.speed-choices button+button{border-left:0}.speed-choices button.chosen{background:var(--gold);color:#202522;border-color:var(--gold)}.playback-actions button.skip-btn{border-color:#847157;color:#edd5a3}
.combat-layout{display:grid;grid-template-columns:minmax(180px,1fr) minmax(360px,2.2fr) minmax(180px,1fr);min-height:610px;background:#111c20;border:1px solid #475750;border-top:0}.squad-panel{padding:23px 14px;background:linear-gradient(180deg,#1c2c31,#142125);min-width:0}.violet-panel{background:linear-gradient(180deg,#242a35,#171e26);border-left:1px solid #3c454b}.amber-panel{border-right:1px solid #3c4c4e}.panel-kicker{font-size:.63rem;color:#c9b68a;letter-spacing:.15em;margin-bottom:5px}.squad-panel h2{font-size:1.45rem;margin-bottom:18px}.amber-panel h2{color:#edc892}.violet-panel h2{color:#d4bff5}.combat-cards{display:grid;gap:9px}.combat-card{border:1px solid #3f5153;background:#263638;padding:12px 11px;border-radius:4px;transition:opacity .25s,border-color .25s}.violet-panel .combat-card{background:#282c39;border-color:#45455b}.combat-card.is-active{border-color:var(--gold);box-shadow:0 0 0 1px #cbaf7e55,inset 0 0 25px #bca07414}.combat-card.is-dead{filter:grayscale(.95);opacity:.4}.combat-card-head{display:flex;gap:9px;align-items:center;margin-bottom:10px}.combat-glyph{height:31px;width:31px;display:grid;place-items:center;border:1px solid hsl(var(--npc-hue) 29% 51%);background:hsl(var(--npc-hue) 24% 26%);color:#eddcb4;font-size:1.05rem;border-radius:3px}.combat-card-head strong{display:block;font-size:.81rem}.combat-card-head small{display:block;font-size:.68rem;margin-top:3px}.health-track{height:6px;border-radius:4px;background:#514d4b;overflow:hidden}.health-fill{height:100%;background:linear-gradient(90deg,#9c4747,#d37f6b);transition:width .14s linear}.mini-stats{display:flex;justify-content:space-between;flex-wrap:wrap;gap:3px;margin-top:7px;color:#d1c6b3;font-size:.63rem}.mini-stats .p-value{color:#f4c580}.mini-stats .m-value{color:#aebdf2}
.duel-stage{position:relative;overflow:hidden;display:flex;flex-direction:column;align-items:center;padding:32px 20px;background:radial-gradient(ellipse at 50% 56%,#38444770,transparent 62%),repeating-linear-gradient(65deg,transparent,transparent 35px,#ffffff05 36px,#ffffff05 37px);min-width:0}.stage-aura{pointer-events:none;position:absolute;bottom:80px;width:80%;height:50px;border-radius:50%;background:#dfbb8640;filter:blur(30px)}.stage-label{font-size:.7rem;color:#b7a788;letter-spacing:.22em;position:relative}.duel-portraits{width:100%;display:flex;align-items:center;justify-content:space-around;gap:14px;flex:1;min-height:270px;position:relative}.fighter-slot{position:relative;flex:1;min-width:0;height:245px;display:flex;align-items:center;justify-content:center}.fighter-empty{color:#536163;letter-spacing:.1em;font-size:.76rem}.fighter-person{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;z-index:2}.fighter-person .portrait{max-width:205px;width:100%;height:220px}.clash-symbol{font-size:2rem;color:#c4ab76;text-shadow:0 0 25px #d3ba8d88;z-index:3;opacity:.72}.portrait{position:relative;aspect-ratio:110/130;background:radial-gradient(circle at 50% 35%,hsl(var(--npc-hue) 33% 38% / .5),transparent 60%),linear-gradient(155deg,hsl(var(--npc-hue) 24% 25%),#101a20);border:1px solid hsl(var(--npc-hue) 28% 52%);border-radius:45% 45% 4px 4px;box-shadow:0 12px 45px #0007, inset 0 0 24px #ffffff0b;display:flex;align-items:end;justify-content:center;overflow:hidden}.portrait svg{height:100%;width:100%}.portrait-shine{position:absolute;inset:0;pointer-events:none;background:linear-gradient(130deg,#fff1,transparent 34%)}.enter-player{animation:from-left .45s cubic-bezier(.17,.67,.22,1)}.enter-enemy{animation:from-right .45s cubic-bezier(.17,.67,.22,1)}.fighter-person.retiring{animation:leave-portrait .3s ease-in forwards;pointer-events:none}.fight-names{display:flex;justify-content:space-around;width:100%;gap:10px;color:#e7d5b2;font-family:'Cinzel',serif;font-size:.97rem;text-align:center;margin-top:-8px;position:relative}.fight-names span{flex:1}.action-narrative{z-index:4;width:min(460px,100%);text-align:center;padding:25px 12px 12px;margin-top:12px;border-top:1px solid #6e765d88;min-height:155px}.ability-flash{color:#edc787;font-size:.75rem;min-height:18px;text-transform:uppercase;letter-spacing:.12em;font-weight:700}.damage-number{font-family:'Cinzel',serif;font-size:2.6rem;color:#ecb479;min-height:48px;font-weight:700;text-shadow:0 4px 20px #d9896550}.damage-number.critical{color:#fa837c}.action-narrative p{color:#c4d0c8;font-size:.83rem;max-width:400px;margin:auto}.result-overlay{position:absolute;inset:22% 10% auto;background:#111c20f1;border:1px solid #ad946a;padding:27px 12px;text-align:center;z-index:10;box-shadow:0 14px 65px #000c}.result-overlay[hidden]{display:none}.result-overlay h2{font-size:1.55rem;color:#efce8c;margin:10px 0}.result-overlay p{font-size:.81rem}.result-crest{font-size:2.6rem;color:var(--gold)}
.report-panel{border:1px solid #3b4a4a;border-top:0;background:#1a282b;padding:20px}.report-header{display:flex;justify-content:space-between;align-items:center;gap:12px}.report-header h3{font-size:1.08rem}.report-header h3 span{font:.72rem 'DM Sans';color:#879e99;margin-left:8px}.report-header .eyebrow{margin-bottom:6px}.live-log{background:#111d21;border:1px solid #39494b;border-radius:4px;margin-top:15px;max-height:260px;min-height:90px;overflow:auto;padding:8px 12px;scrollbar-color:#5d746e #1b292d}.live-log[hidden]{display:none}.log-entry{display:flex;gap:12px;padding:7px 6px;font-size:.79rem;color:#c1cbc5;border-bottom:1px solid #263539}.log-entry:last-child{border-bottom:0}.log-entry.log-defeat{color:#e8a69e}.log-turn{color:#ac9670;font:600 .75rem 'DM Sans';min-width:39px}
.summary-panel{margin-top:24px;background:linear-gradient(130deg,#1e302f,#182327);border:1px solid #5b6250;border-radius:6px;padding:28px}.summary-head{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:24px}.summary-head h2{font-size:1.6rem}.summary-head p{margin-top:7px;font-size:.8rem}.summary-head code{color:#e7cf98}.summary-actions{display:flex;gap:8px;flex-wrap:wrap}.primary-small{background:var(--gold);color:#202922;border:1px solid #eacb93;padding:10px 16px;border-radius:3px;font-weight:700;font-size:.78rem}.table-overflow{overflow:auto}.stats-table{border-collapse:collapse;width:100%;font-size:.83rem}.stats-table th,.stats-table td{border-bottom:1px solid #3a4b48;padding:12px;text-align:right}.stats-table th:first-child{text-align:left}.stats-table thead th{color:var(--gold);font-size:.68rem;letter-spacing:.13em}.stats-table tbody th{font-weight:500;color:#c9d5ca}.stats-table td{font-variant-numeric:tabular-nums;color:#e4dac5}
.log-detail{flex:1;min-width:0}.log-detail summary{cursor:pointer;list-style-position:inside}.log-detail summary:hover{color:#f2dfb8}.log-detail pre{white-space:pre-wrap;overflow-wrap:anywhere;background:#0b161a;border:1px solid #344b4a;border-radius:4px;margin:9px 0 3px;padding:12px;color:#a6c7c0;font:11px/1.55 ui-monospace,SFMono-Regular,Consolas,monospace}
.fighter-person.fell{animation:fall-portrait .3s ease-out forwards;pointer-events:none}@keyframes fall-portrait{to{transform:translateY(34px) rotate(8deg);filter:grayscale(1);opacity:0}}@keyframes from-left{from{transform:translateX(-170px) scale(.27);opacity:.06}to{transform:translateX(0) scale(1);opacity:1}}@keyframes from-right{from{transform:translateX(170px) scale(.27);opacity:.06}to{transform:translateX(0) scale(1);opacity:1}}@keyframes leave-portrait{to{transform:translateY(18px) scale(.2);opacity:0}}
@media(max-width:1140px){.reserve-grid{grid-template-columns:1fr}.combat-layout{grid-template-columns:minmax(150px,1fr) minmax(280px,1.7fr) minmax(150px,1fr)}.squad-panel{padding:15px 9px}.combat-card{padding:10px 7px}.duel-stage{padding:24px 9px}.shell{padding:30px 18px 55px}}
@media(max-width:780px){.topbar{padding:14px 18px}.build-tag{font-size:.57rem}.setup-grid{grid-template-columns:1fr}.reserve-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.launch-panel{align-items:stretch;flex-direction:column}.launch-btn{justify-content:center}.combat-layout{grid-template-columns:1fr 1fr}.duel-stage{grid-column:1/-1;grid-row:1;min-height:470px}.squad-panel{grid-row:2}.amber-panel{border-right:1px solid #3c4c4e}.violet-panel{border-left:0}.combat-cards{grid-template-columns:1fr}.fight-header h1{font-size:1.75rem}.duel-portraits{min-height:235px}.fighter-slot{height:220px}}
@media(max-width:520px){.shell{padding:24px 12px 45px}.brand-name{font-size:1.05rem}.build-tag{display:none}.guild-editor{padding:14px}.reserve-grid{grid-template-columns:1fr}.fight-header{align-items:flex-start}.combat-layout{grid-template-columns:1fr 1fr}.panel-kicker{font-size:.55rem}.squad-panel h2{font-size:1rem}.combat-card-head{gap:4px}.combat-glyph{height:27px;width:27px}.combat-card-head strong{font-size:.72rem}.mini-stats{font-size:.57rem}.playback-toolbar{justify-content:center}.playback-left{width:100%;justify-content:center}.playback-actions{gap:5px}.playback-actions button{padding:6px}.fighter-person .portrait{height:170px}.duel-stage{min-height:405px}.fighter-slot{height:180px}.clash-symbol{font-size:1.4rem}.summary-head{display:block}.summary-actions{margin-top:18px}.summary-panel{padding:18px}.launch-btn{font-size:.76rem}.section-caption span{display:none}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}


/* Champions' Gambit team-builder additions; replay layout is from Spy & Conquer. */
.prototype-setup {display:grid;grid-template-columns:minmax(340px,.95fr) minmax(450px,1.35fr);gap:18px;align-items:start}
.prototype-setup > * {min-width:0}
.team-panel .selected-list {margin:10px 0 20px}
.roster-picker {display:grid;gap:8px;max-height:420px;overflow:auto;padding-right:4px}
.pick-row {display:flex;align-items:center;gap:9px;background:rgba(9,16,18,.57);padding:10px 9px;border:1px solid rgba(190,213,198,.12);border-radius:8px}
.pick-row .roster-token {font-size:24px;min-width:33px;text-align:center}
.pick-info {min-width:0;flex:1;display:flex;flex-direction:column;gap:3px}
.pick-info small {font-size:11px;opacity:.72}
.pick-row .btn-small {padding:6px 9px;white-space:nowrap}
.workshop-note {color:#c0c7bd;font-size:12px;line-height:1.55;margin:8px 0}
.points-badge {display:inline-block;padding:9px 11px;background:#273b35;border:1px solid #587f67;color:#d4f1d6;border-radius:7px;font-weight:700;font-size:12px;white-space:nowrap}
.editor-tabs {display:flex;gap:7px;flex-wrap:wrap;margin:17px 0 20px}
.editor-tabs button {cursor:pointer;border:1px solid #41534e;background:#152625;color:#c8d1c8;border-radius:6px;padding:7px;font-size:12px}
.editor-tabs button.selected {background:#405848;color:#fff;border-color:#b0d8aa}
.subheading {margin:23px 0 12px;font-size:17px;font-family:Georgia,serif;color:#f0e4c8}
.subheading small {font-family:system-ui,sans-serif;font-weight:400;font-size:11px;opacity:.7;display:block;margin-top:4px}
.allocation-grid {display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:11px}
.allocation-cell {display:flex;flex-direction:column;gap:5px;font-size:12px;color:#bfc8b8}
.allocation-cell input {min-width:0;width:100%;background:#172423;border:1px solid #50665e;border-radius:5px;padding:9px 7px;color:#f0e4c8;font-size:15px}
.gear-grid {display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 14px}
.gear-line {display:grid;grid-template-rows:auto auto auto;gap:4px;color:#e9dbbe;font-size:12px;text-transform:capitalize;min-width:0}
.gear-line select,.preset-label input,#npc-opponent {background:#1b2928;color:#f0e4c8;border:1px solid #50665e;border-radius:5px;padding:8px;width:100%;min-width:0}
.gear-line small {color:#9bbaad;text-transform:none;font-size:11px;line-height:1.4}
.presets {display:grid;gap:6px;margin:10px 0 18px}
.preset-row {display:flex;align-items:center;gap:9px}
.preset-row span {flex:1;min-width:0;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.preset-label {display:block;font-size:12px;margin:13px 0;color:#c2cabf}
.preset-label input {display:block;margin-top:7px}
.build-report-grid {display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px}
.build-detail {border:1px solid #4b665b;border-radius:8px;margin-bottom:9px;padding:11px;background:#182724}
.build-detail summary {cursor:pointer;color:#f1e2bd;font-weight:650}
.build-detail p {font-size:12px;line-height:1.7;color:#bbc9c0;overflow-wrap:anywhere}
.build-stats {display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;font-size:12px;margin:12px 0}
.build-stats span {background:#23362d;padding:8px;border-radius:5px}
.fighter-editor h2 {overflow-wrap:anywhere}
@media(max-width:1100px){.prototype-setup{grid-template-columns:1fr}.roster-picker{max-height:260px}}
@media(max-width:640px){.allocation-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.gear-grid,.build-report-grid{grid-template-columns:1fr}.pick-row{flex-wrap:wrap}.pick-info{min-width:140px}}


/* Champions' Gambit Battle Lab — client-only batch combat */
.lab-control-panel,.lab-results,.lab-progress-panel{
  margin:2rem 0;padding:1.5rem;border:1px solid rgba(184,164,112,.38);
  background:linear-gradient(135deg,rgba(29,44,44,.97),rgba(20,29,34,.97));
  border-radius:18px;color:#ebeee8;box-shadow:0 10px 36px rgba(0,0,0,.13);
}
.lab-control-panel h2,.lab-detail h3{margin:.35rem 0 .6rem;color:#f1e3b5;}
.lab-control-panel p,.lab-results p,.lab-progress-panel p{line-height:1.65;}
.lab-controls{display:grid;grid-template-columns: minmax(190px,2fr) minmax(110px,1fr) minmax(180px,1.6fr);
  gap:1rem;align-items:end;margin:1.35rem 0;}
.lab-controls label{display:flex;flex-direction:column;gap:.45rem;font-size:.9rem;font-weight:600;}
.lab-controls select,.lab-inspect-row input{
  display:block;width:100%;border:1px solid #7a8079;border-radius:8px;
  background:#f8f7ef;color:#192d2c;padding:.7rem;font:inherit;}
.lab-controls .lab-checkbox{display:flex;flex-direction:row;align-items:center;gap:.65rem;min-height:45px;}
.lab-checkbox input{accent-color:#caa755;width:20px;height:20px;}
.lab-control-panel .launch-btn,.lab-result-actions .launch-btn{width:auto;max-width:100%;}
.lab-progress-panel{max-width:760px;margin:4rem auto;text-align:center;padding:2rem;}
.lab-progress-track,.lab-ratio-track{width:100%;height:16px;border-radius:999px;overflow:hidden;background:#586566;margin:1.25rem 0;}
.lab-progress-fill{height:100%;background:#d9b865;transition:width .15s ease;}
.lab-metrics{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;margin:1.35rem 0;}
.lab-metrics>div{border:1px solid #5c625e;border-radius:12px;padding:1rem;background:rgba(255,255,255,.045);}
.lab-metrics small{display:block;color:#bfc9c1;line-height:1.45;margin-bottom:.6rem;}
.lab-metrics strong{display:block;font-size:clamp(1.3rem,2.2vw,2rem);color:#edd397;}
.lab-ratio-track{display:flex;margin-top:0;}
.lab-ratio-track span:first-child{background:#b5cd8e;}
.lab-ratio-track span:nth-child(2){background:#d59b85;}
.lab-detail{margin:1.6rem 0;padding:1rem 0;border-top:1px solid #535e58;}
.lab-detail .stats-table{width:100%;border-collapse:collapse;}
.lab-detail .stats-table th,.lab-detail .stats-table td{padding:.7rem .85rem;text-align:left;}
.lab-detail .stats-table tbody tr:nth-child(odd){background:rgba(255,255,255,.06);}
.lab-detail .stats-table th{color:#f1e3b5;}
.lab-inspect-row,.lab-result-actions{display:flex;flex-wrap:wrap;gap:.9rem;align-items:end;margin:1rem 0;}
.lab-inspect-row label{display:flex;flex-direction:column;gap:.4rem;}
.lab-inspect-row input{max-width:165px;}
.lab-warning{border-left:3px solid #e4b374;padding:.65rem 1rem;background:rgba(188,122,41,.15);}
@media(max-width:850px){
  .lab-controls{grid-template-columns:1fr 1fr;}
  .lab-checkbox{grid-column:1/-1;}
  .lab-metrics{grid-template-columns:repeat(2,minmax(0,1fr));}
}
@media(max-width:500px){
  .lab-controls{grid-template-columns:1fr;}
  .lab-metrics{grid-template-columns:repeat(2,minmax(0,1fr));}
  .lab-control-panel,.lab-results{padding:1rem;}
}
