:root{--ff-bg:#f7f7f5;--ff-ink:#1f2529;--ff-muted:#6f7478;--ff-primary:#d5a900;--duxster-gold:#ffcc00;--duxster-gold-dark:#d5a900;--duxster-black:#111;--ff-field:#76a77b;--ff-field-dark:#5f9067;--ff-line:rgba(255,255,255,.86);--ff-danger:#c94b58}
body{background:var(--ff-bg);color:var(--ff-ink)}.navbar-brand{letter-spacing:-.02em}.brand-mark{width:56px;height:56px;border-radius:18px;display:grid;place-items:center;background:#e8f1fb;color:var(--ff-primary);font-size:1.5rem}.auth-shell{min-height:100vh;display:grid;place-items:center;padding:2rem}.auth-card{width:min(440px,100%);border-radius:1.25rem}.card{border-radius:1rem}.empty-state{background:linear-gradient(135deg,#fff,#edf5ff)}
.field-wrap{background:#e7edf2;border-radius:.9rem;overflow:auto;padding:.45rem}.field-wrap svg{width:100%;min-width:760px;height:auto;display:block;border-radius:.65rem;touch-action:none;box-shadow:inset 0 0 0 1px rgba(20,40,50,.08)}
.performer-dot{cursor:grab}.performer-dot:active{cursor:grabbing}.performer-dot .dot-ring{transition:.12s ease}.performer-dot:hover .dot-ring{stroke-width:3}.field-label{font-size:12px;font-weight:700;fill:rgba(255,255,255,.88);user-select:none}.field-small-label{font-size:9px;font-weight:600;fill:rgba(255,255,255,.68);user-select:none}.performer-label{font-size:9px;font-weight:800;fill:#17212b;text-anchor:middle;dominant-baseline:central;pointer-events:none}.performer-tag{font-size:8px;font-weight:700;fill:#fff;text-anchor:middle;pointer-events:none;text-shadow:0 1px 2px rgba(0,0,0,.7)}
.path-arrow{stroke:#163953;stroke-width:1.6;stroke-opacity:.68;fill:none;pointer-events:none}.path-arrow.warn{stroke:#a56500}.path-arrow.danger{stroke:#b42336;stroke-width:2.4}.collision-ring{fill:none;stroke:#e43d52;stroke-width:3;stroke-dasharray:4 3;pointer-events:none}.hash-tick{stroke:rgba(255,255,255,.64);stroke-width:1}.sideline{stroke:#fff;stroke-width:3}.yard-line{stroke:rgba(255,255,255,.82);stroke-width:1.4}.yard-line.midfield{stroke-width:2.6}.minor-line{stroke:rgba(255,255,255,.22);stroke-width:.7}.end-zone-shade{fill:rgba(255,255,255,.055)}
.legend-dot{display:inline-block;width:.78rem;height:.78rem;border-radius:50%;border:1px solid #43515d;margin-right:.35rem;vertical-align:-.05rem}.legend-musician{background:#fff}.legend-percussion{background:#ffd166}.legend-guard{background:#f7a8c4}.designer-toolbar .form-control,.designer-toolbar .form-select{min-height:31px}.set-list{max-height:420px;overflow:auto}.set-loader.active small{color:rgba(255,255,255,.72)!important}.movement-table{max-height:280px;overflow:auto}.move-row{display:grid;grid-template-columns:52px 1fr auto;gap:.6rem;align-items:center;padding:.55rem .85rem;border-top:1px solid #edf0f2;font-size:.78rem}.move-row .meter{height:5px;background:#e9eef2;border-radius:4px;overflow:hidden;margin-top:.22rem}.move-row .meter span{display:block;height:100%;background:#73a57c}.move-row.warn .meter span{background:#d29a38}.move-row.danger .meter span{background:#c94b58}.move-row strong{font-size:.78rem}.roster-group-title{text-transform:uppercase;letter-spacing:.08em;font-size:.68rem;font-weight:800;color:#7d8993;margin-top:1rem}.music-now{min-width:180px}.form-lock{opacity:.68}.field-toast{position:absolute;right:1rem;top:1rem;z-index:3}.field-wrap{position:relative}
@media(max-width:1199px){.set-list{max-height:300px}.field-wrap svg{min-width:680px}}
.performer-dot.selected .dot-ring{stroke:#245fa4;stroke-width:4}.waypoint-dot{fill:#fff;stroke:#245fa4;stroke-width:2;pointer-events:all;cursor:grab}.waypoint-dot:active{cursor:grabbing}.lasso-rect{fill:rgba(36,95,164,.12);stroke:#245fa4;stroke-width:1.5;stroke-dasharray:6 4;pointer-events:none}.path-arrow{stroke-linejoin:round;stroke-linecap:round}.field-mini-toast{position:fixed;right:1.25rem;bottom:1.25rem;z-index:2000;max-width:360px}.waypoint-help{min-height:30px}

/* Milestone 6 music timeline */
.waveform-shell{border:1px solid var(--bs-border-color);border-radius:.65rem;padding:.65rem;background:#f8fafb}
#waveformCanvas{display:block;width:100%;height:110px;border-radius:.4rem;cursor:crosshair;background:#f5f8fa}
.show-timeline{border-top:1px solid var(--bs-border-color);padding-top:.75rem}
.timeline-lane{display:grid;grid-template-columns:minmax(120px,180px) 1fr;gap:.65rem;align-items:center}
.timeline-label{font-size:.78rem;color:#52616b;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.timeline-track{height:28px;position:relative;background:#eef3f6;border-radius:999px;border:1px solid #dbe3e8}
.timeline-marker{position:absolute;top:50%;transform:translate(-50%,-50%);width:24px;height:24px;border:0;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.18);font-size:.68rem;font-weight:700;color:#274c68;padding:0}
.timeline-marker:hover{background:#e9f2f8}
@media (max-width:768px){.timeline-lane{grid-template-columns:1fr}.timeline-label{margin-bottom:-.35rem}}
.waveform-shell{position:relative}
.waveform-playhead{position:absolute;top:.65rem;bottom:2rem;width:2px;background:rgba(180,35,55,.75);left:.65rem;pointer-events:none;z-index:2;display:none}
.smart-preview-dot{pointer-events:none}.smart-preview-label{font-size:8px;font-weight:700;fill:#0d6efd}.smart-preview-dot circle{filter:drop-shadow(0 1px 1px rgba(13,110,253,.18))}#candidatePanel .badge{min-width:46px}.solver-section-limit{font-variant-numeric:tabular-nums}

/* Milestone 8 performer and rehearsal experience */
.performer-shell{max-width:980px}.coordinate-callout{font-size:clamp(1.05rem,4vw,1.55rem);font-weight:800;background:#eef5ff;border-radius:.85rem;padding:1rem;color:#24496d}.personal-field{width:100%;height:auto;display:block;border-radius:.7rem;box-shadow:inset 0 0 0 1px rgba(20,40,50,.08)}.personal-key{display:inline-block;width:.72rem;height:.72rem;border-radius:50%;margin-right:.3rem}.personal-key.prev{background:#6c757d}.personal-key.current{background:#0d6efd}.personal-key.next{background:#fd7e14}.performer-set-list{max-height:520px;overflow:auto}.performer-set-row{padding:.85rem 1rem}.performer-set-row.active .badge{background:rgba(255,255,255,.18)!important;color:#fff!important}.tab-pane>.card,.tab-pane .card{border-radius:1rem}@media(max-width:576px){.performer-shell{padding-top:.75rem!important}.coordinate-callout{padding:.8rem}.performer-set-list{max-height:none}}

/* Milestone 9 Duxster brand system */
.duxster-navbar-brand{display:flex;align-items:center;gap:.5rem;font-weight:800;color:#111!important;letter-spacing:-.025em}.duxster-header-icon{width:36px;height:36px;object-fit:contain}.duxster-auth-shell{background:radial-gradient(circle at 20% 10%,#fff6bf 0,rgba(255,246,191,0) 38%),linear-gradient(135deg,#f7f7f5,#fff)}.auth-layout{width:min(1080px,100%);display:grid;grid-template-columns:minmax(0,1.15fr) minmax(360px,.85fr);gap:2rem;align-items:center}.duxster-login-hero{padding:2rem 1rem}.duxster-login-logo{display:block;width:min(650px,100%);height:auto;margin-bottom:1.25rem}.duxster-login-hero h1{font-size:clamp(2rem,4vw,3.4rem);line-height:1.02;max-width:760px;font-weight:900;letter-spacing:-.045em;color:#111}.duxster-login-hero p{font-size:1.08rem;max-width:650px;color:#5c6063}.duxster-hero-pills{display:flex;flex-wrap:wrap;gap:.6rem;margin-top:1.4rem}.duxster-hero-pills span{background:#111;color:#fff;border:2px solid var(--duxster-gold);border-radius:999px;padding:.48rem .8rem;font-size:.84rem;font-weight:700}.duxster-hero-pills i{color:var(--duxster-gold);margin-right:.35rem}.duxster-login-mark{width:82px;height:82px;object-fit:contain}.btn-primary{--bs-btn-bg:#111;--bs-btn-border-color:#111;--bs-btn-hover-bg:#292929;--bs-btn-hover-border-color:#292929;--bs-btn-active-bg:#000;--bs-btn-active-border-color:#000}.text-primary{color:var(--duxster-gold-dark)!important}.auth-card{border-top:5px solid var(--duxster-gold)!important}@media(max-width:900px){.auth-layout{grid-template-columns:1fr;max-width:520px}.duxster-login-hero{text-align:center;padding:.5rem}.duxster-login-logo{margin-inline:auto}.duxster-login-hero h1{font-size:2rem}.duxster-login-hero p{margin-inline:auto}.duxster-hero-pills{justify-content:center}}

/* Milestone 9.2 field interaction hardening */
#field{touch-action:none;-webkit-user-select:none;user-select:none}.performer-dot{cursor:grab;pointer-events:all}.performer-dot:active{cursor:grabbing}.performer-dot text{pointer-events:none}

/* Milestone 10 compact editor workspace */
.editor-shell{font-size:.84rem}.editor-show-title{font-size:1.08rem;font-weight:800;max-width:42vw}.editor-titlebar .btn-sm,.editor-actions .btn-sm{font-size:.75rem;padding:.28rem .48rem}.editor-workspace{--bs-gutter-x:.6rem}.editor-canvas-card{border-radius:.75rem}.editor-setbar{min-height:34px}.editor-setbar .form-control,.editor-setbar .form-select,.editor-setbar .input-group-text{font-size:.76rem;min-height:30px}.set-name-control{width:180px}.count-control{width:125px}.movement-control{width:190px}.music-time-control{width:155px}.editor-field-actions .btn{min-height:30px}.editor-detail-panel{background:#f6f7f8;border:1px solid #e6e8ea}.editor-label{font-size:.7rem;font-weight:700;color:#59636b;text-transform:uppercase;letter-spacing:.035em}.hold-control{max-width:84px}.field-stage{position:relative}.field-stage-controls{position:absolute;right:.85rem;top:.85rem;z-index:8;display:flex;gap:.3rem}.field-stage-controls .btn{opacity:.92;box-shadow:0 1px 4px rgba(0,0,0,.18)}.field-wrap{padding:.3rem;border-radius:.65rem}.editor-canvas-card .field-wrap svg{min-width:0;width:100%;max-height:60vh;display:block}.editor-field-footer{min-height:27px}.waypoint-help-text{max-width:65%}.editor-legend{white-space:nowrap}.editor-legend .legend-dot{width:.62rem;height:.62rem;margin-right:.2rem}.editor-tools-rail{position:sticky;top:4.35rem;max-height:calc(100vh - 5rem);overflow-y:auto;overscroll-behavior:contain;padding-bottom:.5rem;scrollbar-width:thin}.editor-tools-accordion{border-radius:.75rem;overflow:hidden}.editor-tools-accordion .accordion-item{border-color:#e7e8e9}.editor-tools-accordion .accordion-button{font-size:.78rem;font-weight:750;padding:.48rem .65rem;min-height:36px}.editor-tools-accordion .accordion-button:not(.collapsed){background:#fff8d7;color:#202124;box-shadow:none}.editor-tools-accordion .accordion-button:focus{box-shadow:none}.editor-tools-accordion .accordion-button::after{width:.82rem;height:.82rem;background-size:.82rem}.editor-tools-accordion .accordion-body{font-size:.76rem}.editor-tools-accordion .form-control,.editor-tools-accordion .form-select,.editor-tools-accordion .input-group-text,.editor-tools-accordion .btn-sm{font-size:.73rem}.editor-tools-accordion .set-list{max-height:210px}.editor-tools-accordion .set-loader{font-size:.76rem}.editor-tools-accordion .set-loader small{font-size:.67rem}.editor-tools-accordion .movement-table{max-height:230px}.editor-tools-accordion .move-row{grid-template-columns:42px 1fr auto;padding:.4rem .55rem;font-size:.69rem;gap:.4rem}.editor-tools-accordion .move-row strong{font-size:.7rem}.editor-hint{font-size:.67rem}.editor-music-card .editor-collapse-trigger{font-size:.78rem;font-weight:700}.editor-music-card audio{height:30px;min-width:260px}.editor-music-card .waveform-shell{padding:.4rem}.editor-music-card #waveformCanvas{height:88px}.editor-music-card .show-timeline{font-size:.75rem}.editor-music-card .timeline-track{height:24px}.editor-music-card .timeline-marker{width:21px;height:21px;font-size:.62rem}

.field-stage:fullscreen,.field-stage:-webkit-full-screen{background:#111;padding:1rem;display:flex;align-items:center;justify-content:center;width:100vw;height:100vh}.field-stage:fullscreen .field-wrap,.field-stage:-webkit-full-screen .field-wrap{background:#111;width:100%;height:100%;padding:0;display:flex;align-items:center;justify-content:center}.field-stage:fullscreen #field,.field-stage:-webkit-full-screen #field{width:100%;height:100%;max-height:none;min-width:0;object-fit:contain}.field-stage:fullscreen .field-stage-controls,.field-stage:-webkit-full-screen .field-stage-controls{position:fixed;right:1rem;top:1rem}

@media(max-width:1199.98px){.editor-show-title{max-width:32vw}.set-name-control{width:155px}.count-control{width:112px}.movement-control{width:160px}.music-time-control{width:140px}.editor-tools-rail{top:4rem}.editor-canvas-card .field-wrap svg{max-height:56vh}}
@media(max-width:991.98px){.editor-tools-rail{position:static;max-height:none;overflow:visible}.editor-show-title{max-width:55vw}.editor-canvas-card .field-wrap svg{max-height:none}.waypoint-help-text{max-width:100%}.editor-tools-accordion .set-list{max-height:260px}}
@media(max-width:767.98px){.editor-shell{font-size:.8rem}.editor-titlebar{align-items:flex-start!important}.editor-actions{width:100%}.set-name-control{width:100%}.count-control{width:120px}.movement-control{flex:1;min-width:145px}.music-time-control{width:145px}.editor-field-actions{width:100%;margin-left:0!important}.editor-canvas-card .field-wrap{overflow:auto}.editor-canvas-card .field-wrap svg{min-width:680px}.field-fullscreen-btn span{display:none!important}}

/* Milestone 11 curved path controls */
.path-editor-controls #pathMode{width:118px}.curve-amount-wrap{width:135px}.curve-handle{fill:#fff4b8;stroke:#8a6400;stroke-width:2;cursor:grab;pointer-events:all}.curve-handle:active{cursor:grabbing}.curve-guide{stroke:#8a6400;stroke-width:1.2;stroke-dasharray:4 3;opacity:.7;pointer-events:none}.path-arrow.curved{fill:none}.path-editor-controls .input-group-text,.path-editor-controls .form-control,.path-editor-controls .form-select{font-size:.7rem}

/* Milestone 15 brand system */
:root{--duxster-gold:#ffcc00;--duxster-gold-dark:#c99e00;--duxster-black:#080808;--duxster-paper:#fff;--duxster-surface:#f4f5f6}
body{background:var(--duxster-surface)}
.navbar{box-shadow:0 1px 0 rgba(0,0,0,.04)}
.duxster-navbar-brand{gap:.4rem}.duxster-header-icon{width:40px;height:40px;object-fit:contain}.duxster-navbar-brand span{font-weight:900}
.dashboard-brand-strip{display:flex;align-items:center;min-height:54px;border-bottom:1px solid rgba(0,0,0,.06)}.dashboard-brand-strip img{width:min(300px,55vw);height:58px;object-fit:contain;object-position:left center}
.duxster-brand-card{border-top:5px solid var(--duxster-gold)!important}
.duxster-auth-shell{background:linear-gradient(120deg,#fff 0%,#fff 55%,#fff7cf 100%)}
.duxster-login-hero{position:relative}.duxster-login-hero:after{content:"";position:absolute;left:1rem;right:10%;bottom:.75rem;height:5px;background:linear-gradient(90deg,var(--duxster-gold),transparent);border-radius:999px}.duxster-login-logo{width:min(720px,100%);max-height:255px;object-fit:contain;object-position:left center}.duxster-login-mark{width:92px;height:92px;object-fit:contain}
.btn-primary{--bs-btn-bg:#111;--bs-btn-border-color:#111;--bs-btn-hover-bg:#000;--bs-btn-hover-border-color:#000;--bs-btn-active-bg:#000;--bs-btn-active-border-color:#000}.btn-outline-primary{--bs-btn-color:#8d7000;--bs-btn-border-color:#d5a900;--bs-btn-hover-bg:#ffcc00;--bs-btn-hover-border-color:#ffcc00;--bs-btn-hover-color:#111;--bs-btn-active-bg:#ffcc00;--bs-btn-active-border-color:#ffcc00;--bs-btn-active-color:#111}
.export-menu{min-width:270px}.export-menu .form-switch{padding-left:2.7em}.export-menu .form-check-input:checked{background-color:#111;border-color:#111}
@media(max-width:900px){.dashboard-brand-strip{display:none}.duxster-login-logo{object-position:center}}

/* Milestone 15.1 interface refresh */
:root{--dux-topbar-h:66px;--dux-sidebar-w:220px;--dux-sidebar:#202932;--dux-sidebar-2:#172029;--dux-card-border:#e7e9eb;--dux-soft:#f6f7f8}
.duxster-app-page{background:#f7f8f9;font-size:.94rem}.duxster-topbar{height:var(--dux-topbar-h);background:#fff;border-bottom:1px solid #e5e7e9;z-index:1035}.duxster-topbar-inner{height:100%;display:flex;align-items:center;padding:0 1.25rem;gap:1.25rem}.duxster-topbar-brand{display:flex;align-items:center;min-width:180px}.duxster-topbar-brand img{width:158px;height:48px;object-fit:contain;object-position:left center}.duxster-top-links{height:100%;align-items:center;gap:.15rem}.duxster-top-links a{height:100%;display:flex;align-items:center;padding:0 .9rem;text-decoration:none;color:#65707a;font-size:.86rem;font-weight:700;position:relative}.duxster-top-links a:hover,.duxster-top-links a.active{color:#111}.duxster-top-links a.active:after{content:"";position:absolute;left:.8rem;right:.8rem;bottom:0;height:3px;background:var(--duxster-gold);border-radius:3px 3px 0 0}.duxster-org-button{background:#f6f7f8;border:1px solid #e6e8ea;color:#39424a}.duxster-user-button{display:flex;align-items:center;gap:.5rem;border:0;background:transparent;padding:.25rem .4rem;font-size:.8rem;color:#4f5a63}.duxster-user-button:after{margin-left:.2rem}.duxster-avatar{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:#edf0f3;color:#26323c;font-size:.78rem;font-weight:800}.duxster-sidebar-toggle{font-size:1rem;padding:.3rem .45rem}.duxster-editor-back{font-size:.78rem;text-decoration:none;color:#66727d;font-weight:700}
.duxster-sidebar{position:fixed;left:0;top:var(--dux-topbar-h);bottom:0;width:var(--dux-sidebar-w);z-index:1020;background:linear-gradient(180deg,var(--dux-sidebar),var(--dux-sidebar-2));flex-direction:column;padding:.8rem}.duxster-side-label{font-size:.62rem;text-transform:uppercase;letter-spacing:.12em;color:#71808d;font-weight:800;padding:1.15rem .8rem .4rem}.duxster-side-item{display:flex;align-items:center;gap:.78rem;color:#b9c2ca;text-decoration:none;padding:.72rem .8rem;border-radius:.55rem;font-size:.86rem;font-weight:650;margin-bottom:.15rem}.duxster-side-item i{width:18px;text-align:center;font-size:.95rem}.duxster-side-item:hover{background:rgba(255,255,255,.07);color:#fff}.duxster-side-item.active{background:#37434e;color:#fff;box-shadow:inset 3px 0 0 var(--duxster-gold)}.duxster-app-main{margin-left:var(--dux-sidebar-w);min-height:calc(100vh - var(--dux-topbar-h))}.duxster-mobile-nav{width:285px}.duxster-mobile-nav .offcanvas-header img{width:155px;height:45px;object-fit:contain}.duxster-mobile-nav .offcanvas-body{background:var(--dux-sidebar-2)}
.duxster-dashboard{padding:2.1rem 2.3rem 3rem;max-width:1180px;margin:0 auto}.duxster-page-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:2rem;margin-bottom:1.5rem}.duxster-page-heading h1{font-size:1.8rem;letter-spacing:-.035em;font-weight:850;margin:.15rem 0}.duxster-page-heading p{color:#7a838b;margin:0;font-size:.88rem}.duxster-eyebrow{text-transform:uppercase;letter-spacing:.09em;font-size:.65rem;font-weight:800;color:#9b7a00}.duxster-new-show{font-size:.82rem;font-weight:800;padding:.65rem 1rem;border-radius:.55rem;box-shadow:0 4px 12px rgba(255,204,0,.18)}.duxster-show-list{display:flex;flex-direction:column;gap:.75rem}.duxster-show-card{display:grid;grid-template-columns:118px minmax(0,1fr) auto;align-items:center;gap:1.1rem;background:#fff;border:1px solid var(--dux-card-border);border-radius:.8rem;padding:.75rem;box-shadow:0 3px 12px rgba(20,31,42,.035);transition:.15s ease}.duxster-show-card:hover{transform:translateY(-1px);box-shadow:0 7px 22px rgba(20,31,42,.075);border-color:#dbdddf}.duxster-show-thumb{height:72px;border-radius:.55rem;background:#6f9f75;position:relative;overflow:hidden;display:block;border:1px solid rgba(0,0,0,.06)}.duxster-show-thumb:before,.duxster-show-thumb:after{content:"";position:absolute;left:0;right:0;height:1px;background:rgba(255,255,255,.72)}.duxster-show-thumb:before{top:24px}.duxster-show-thumb:after{top:48px}.duxster-show-thumb .yard{position:absolute;top:0;bottom:0;width:1px;background:rgba(255,255,255,.55)}.duxster-show-thumb .y1{left:17%}.duxster-show-thumb .y2{left:33%}.duxster-show-thumb .y3{left:50%;width:2px}.duxster-show-thumb .y4{left:67%}.duxster-show-thumb .y5{left:83%}.duxster-show-thumb i{position:absolute;width:4px;height:4px;border-radius:50%;background:#fff;top:calc(31px + (var(--i) % 3)*5px);left:calc(11px + var(--i)*8px);box-shadow:0 0 0 1px rgba(0,0,0,.15)}.duxster-show-info h2{font-size:1rem;font-weight:800;margin:0;letter-spacing:-.015em}.duxster-status-badge{font-size:.58rem;text-transform:uppercase;letter-spacing:.06em;background:#f1f3f4;color:#727b82;padding:.22rem .42rem;border-radius:999px;font-weight:750}.duxster-show-season{font-size:.75rem;color:#899198;margin:.18rem 0 .45rem}.duxster-show-stats{display:flex;gap:1rem;flex-wrap:wrap;font-size:.72rem;color:#67717a}.duxster-show-stats i{color:#a88600;margin-right:.3rem}.duxster-show-actions{display:flex;align-items:center;gap:.3rem}.duxster-show-actions .btn{font-size:.7rem}.duxster-empty-dashboard{background:#fff;border:1px solid var(--dux-card-border);border-radius:1rem;padding:4rem 2rem;text-align:center}.duxster-empty-dashboard h2{font-size:1.1rem;font-weight:800}.duxster-empty-dashboard p{font-size:.85rem;color:#7b858d}.duxster-empty-icon{width:64px;height:64px;margin:0 auto 1rem;border-radius:20px;display:grid;place-items:center;background:#fff7cf;color:#9e7c00;font-size:1.5rem}
/* Login redesign */
.duxster-public-page{background:#080808}.duxster-login-screen{min-height:100vh;display:grid;grid-template-columns:minmax(390px,44%) 1fr;background:#0a0a0a}.duxster-login-panel{background:linear-gradient(145deg,#050505 0%,#111 72%,#171300 100%);color:#fff;position:relative;z-index:2;border-right:5px solid var(--duxster-gold);box-shadow:18px 0 45px rgba(0,0,0,.28)}.duxster-login-panel:after{content:"";position:absolute;right:-17px;top:0;bottom:0;width:30px;background:var(--duxster-gold);clip-path:polygon(60% 0,100% 0,42% 100%,0 100%)}.duxster-login-panel-inner{min-height:100vh;padding:clamp(2rem,5vw,4.8rem);display:flex;flex-direction:column;justify-content:center;max-width:620px;margin-left:auto}.duxster-login-wordmark{width:min(440px,90%);height:auto;object-fit:contain;object-position:left center;margin-bottom:1rem;filter:drop-shadow(0 8px 18px rgba(0,0,0,.25))}.duxster-login-copy h1{font-size:clamp(1.65rem,3vw,2.55rem);font-weight:900;letter-spacing:-.04em;line-height:1.02;margin-bottom:.8rem}.duxster-login-copy p{max-width:500px;color:#b9b9b9;font-size:.92rem;line-height:1.55}.duxster-login-form-wrap{max-width:430px;margin-top:1rem}.duxster-sso-btn{background:#fff;color:#171717;border:1px solid #fff;font-weight:700;font-size:.82rem}.duxster-sso-btn:hover{background:#ececec;border-color:#ececec}.duxster-login-divider{display:flex;align-items:center;gap:.65rem;color:#777;font-size:.68rem;margin:.75rem 0}.duxster-login-divider:before,.duxster-login-divider:after{content:"";height:1px;background:#303030;flex:1}.duxster-auth-input .input-group-text,.duxster-auth-input .form-control{background:#151515;border-color:#333;color:#fff;min-height:44px;font-size:.82rem}.duxster-auth-input .input-group-text{color:#a6a6a6}.duxster-auth-input .form-control::placeholder{color:#777}.duxster-auth-input .form-control:focus{box-shadow:0 0 0 .16rem rgba(255,204,0,.12);border-color:#a98700;background:#151515;color:#fff}.duxster-create-btn{border:1px solid var(--duxster-gold);color:var(--duxster-gold);font-weight:800;font-size:.82rem}.duxster-create-btn:hover{background:var(--duxster-gold);color:#111}.duxster-login-footer{margin-top:1.3rem;color:#696969;font-size:.64rem;text-transform:uppercase;letter-spacing:.12em}.duxster-login-visual{position:relative;overflow:hidden;background:linear-gradient(180deg,#e6e7e8 0%,#adb2b6 35%,#555b5f 100%);min-height:100vh}.duxster-login-visual:before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 78% 13%,rgba(255,255,255,.92) 0 2%,rgba(255,255,255,.35) 3%,transparent 13%),linear-gradient(90deg,rgba(0,0,0,.1),transparent 40%);mix-blend-mode:screen}.duxster-stadium-glow{position:absolute;left:0;right:0;top:0;height:42%;background:linear-gradient(180deg,rgba(255,255,255,.7),rgba(255,255,255,0))}.duxster-field-perspective{position:absolute;left:-15%;right:-15%;bottom:-8%;height:58%;background:repeating-linear-gradient(90deg,transparent 0 9.7%,rgba(255,255,255,.4) 10%,transparent 10.3%),repeating-linear-gradient(0deg,#666d70 0 11%,#777e81 11.5% 12%,#666d70 12.5% 24%);transform:perspective(700px) rotateX(58deg);transform-origin:center bottom;opacity:.9}.duxster-conductor{position:absolute;left:50%;bottom:21%;transform:translateX(-50%);font-size:8.5rem;color:#17191a;text-shadow:0 5px 12px rgba(0,0,0,.32);z-index:3}.duxster-conductor-arm{position:absolute;width:105px;height:12px;background:#17191a;top:38px;border-radius:9px}.duxster-conductor-arm.left{right:58%;transform:rotate(-31deg);transform-origin:right center}.duxster-conductor-arm.right{left:58%;transform:rotate(31deg);transform-origin:left center}.duxster-band-row{position:absolute;left:14%;right:10%;display:flex;justify-content:space-around;z-index:2}.duxster-band-row span{display:block;width:13px;height:42px;background:#252829;border-radius:7px 7px 3px 3px;position:relative;box-shadow:0 6px 8px rgba(0,0,0,.18)}.duxster-band-row span:before{content:"";position:absolute;width:12px;height:12px;border-radius:50%;background:#17191a;left:.5px;top:-9px}.duxster-band-row.row-one{bottom:32%;transform:scale(.8)}.duxster-band-row.row-two{bottom:26%;transform:scale(.9)}.duxster-band-row.row-three{bottom:19%}.duxster-visual-caption{position:absolute;right:2.2rem;bottom:2rem;z-index:5;color:#fff;text-align:right;text-shadow:0 2px 8px rgba(0,0,0,.55)}.duxster-visual-caption strong{display:block;font-size:1rem}.duxster-visual-caption span{font-size:.72rem;opacity:.85}
@media(max-width:991.98px){.duxster-app-main{margin-left:0}.duxster-dashboard{padding:1.5rem}.duxster-topbar-brand{min-width:145px}.duxster-topbar-brand img{width:140px}.duxster-login-screen{grid-template-columns:1fr}.duxster-login-visual{display:none}.duxster-login-panel{border-right:0}.duxster-login-panel:after{display:none}.duxster-login-panel-inner{margin:0 auto;min-height:100vh;width:min(560px,100%)}.duxster-login-wordmark{margin-inline:auto}.duxster-login-copy{text-align:center}.duxster-login-copy p{margin-inline:auto}.duxster-login-form-wrap{margin-inline:auto;width:100%}.duxster-login-footer{text-align:center}}
@media(max-width:767.98px){.duxster-topbar-inner{padding:0 .7rem;gap:.55rem}.duxster-topbar-brand{min-width:auto}.duxster-topbar-brand img{width:125px}.duxster-dashboard{padding:1.1rem .85rem 2rem}.duxster-page-heading{align-items:flex-start}.duxster-page-heading h1{font-size:1.5rem}.duxster-page-heading p{display:none}.duxster-show-card{grid-template-columns:82px minmax(0,1fr);gap:.8rem}.duxster-show-thumb{height:58px}.duxster-show-actions{grid-column:1/-1;justify-content:flex-end;border-top:1px solid #eff0f1;padding-top:.55rem}.duxster-show-stats{gap:.6rem}.duxster-login-panel-inner{padding:2rem 1.35rem}.duxster-login-wordmark{width:min(390px,100%)}}

/* Milestone 15.1.1 login hero photo patch */
.duxster-login-visual{position:relative;overflow:hidden;background:#0c0c0d;min-height:100vh;display:block}
.duxster-login-photo{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center center;filter:grayscale(100%)}
.duxster-login-photo-overlay{position:absolute;inset:0;background:linear-gradient(90deg,rgba(0,0,0,.18) 0%,rgba(0,0,0,.02) 28%,rgba(0,0,0,.2) 100%),radial-gradient(circle at 18% 14%,rgba(255,255,255,.35),transparent 22%),radial-gradient(circle at 87% 12%,rgba(255,255,255,.28),transparent 18%)}
.duxster-visual-caption{position:absolute;right:2.2rem;bottom:2rem;z-index:5;color:#fff;text-align:right;text-shadow:0 2px 8px rgba(0,0,0,.55)}
.duxster-visual-caption strong{display:block;font-size:1rem}
.duxster-visual-caption span{font-size:.72rem;opacity:.9}


/* Milestone 18 / V2.1 movement realism */
.movement-envelope{pointer-events:none}.movement-target{pointer-events:none}.physics-row small{font-size:.64rem}.move-row.physics-row{grid-template-columns:52px 1fr auto}.move-row.physics-row.warn{background:rgba(208,138,0,.06)}.move-row.physics-row.danger{background:rgba(201,75,88,.07)}.move-row.physics-row.warn strong{color:#9a6500}.move-row.physics-row.danger strong{color:#b42336}.performer-dot .dot-ring{transition:stroke .12s ease,stroke-width .12s ease}

/* Milestone 19 / V2.2 bands + audit */
.duxster-band-card{grid-template-columns:86px minmax(0,1fr) auto}.duxster-band-thumb{height:72px;width:86px;border-radius:.65rem;background:linear-gradient(145deg,#181f26,#2e3943);color:#ffcc00;display:grid;place-items:center;text-decoration:none;font-size:1.65rem;border:1px solid rgba(0,0,0,.08)}.duxster-band-thumb:hover{color:#ffd633}.audit-stat{font-variant-numeric:tabular-nums}
@media(max-width:767.98px){.duxster-band-card{grid-template-columns:70px minmax(0,1fr)}.duxster-band-thumb{width:70px;height:58px}}

/* Milestone 20 parade module */
.parade-grid{display:grid;grid-template-columns:repeat(var(--files),minmax(72px,1fr));gap:.4rem;overflow:auto;padding:.5rem;background:#f3f4f5;border-radius:.75rem}.parade-point{min-height:74px;border:1px dashed #c9ced3;border-radius:.5rem;background:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:.25rem;position:relative}.parade-point.occupied{border-style:solid;border-color:#d1aa00;background:#fffbed}.parade-point strong{font-size:.78rem}.parade-point small{font-size:.62rem;color:#6d747a}.parade-coord{position:absolute;top:3px;left:5px;font-size:.52rem;color:#a0a6ab}

/* Milestone 21 / V2.4 parade editor */
.parade-editor-page{max-width:1500px}.parade-legend{display:flex;gap:.9rem;flex-wrap:wrap;font-size:.7rem;color:#65717b}.legend-box{display:inline-block;width:12px;height:12px;border-radius:3px;margin-right:.3rem;vertical-align:-2px;border:1px solid rgba(0,0,0,.12)}
.family-brass{background:#fff1b8!important;border-color:#d3a900!important}.family-woodwind{background:#dbeafe!important;border-color:#79a9dd!important}.family-percussion{background:#fee2e2!important;border-color:#d78888!important}.family-guard{background:#f3e8ff!important;border-color:#b887d7!important}.family-drum-major{background:#dcfce7!important;border-color:#70b88a!important}.family-other{background:#f3f4f6!important;border-color:#aeb4ba!important}
.parade-main-grid{min-width:0;flex:1;background:#f3f4f5;border-radius:.75rem;padding:.55rem}.parade-rank-wrap{display:flex;align-items:center;gap:.35rem;margin:.35rem 0}.parade-rank-label{width:26px;font-size:.58rem;font-weight:800;color:#78828a;text-align:right}.parade-rank-row{display:grid;grid-template-columns:repeat(var(--rank-slots),minmax(62px,1fr));gap:.38rem}.parade-rank-row.centered{margin-left:auto;margin-right:auto}.parade-rank-row.left-aligned{margin-right:auto}.parade-point,.parade-special-point{min-height:64px;border:1px dashed #c8ced3;border-radius:.5rem;background:#fff;display:flex;align-items:stretch;justify-content:center;position:relative}.parade-point.occupied{border-style:solid}.parade-member{width:100%;min-height:62px;border:1px solid transparent;border-radius:.45rem;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:.28rem;cursor:grab;position:relative;user-select:none}.parade-member:active{cursor:grabbing}.parade-member.dragging{opacity:.45}.parade-member strong{font-size:.74rem}.parade-member small{font-size:.58rem;color:#5f6870}.parade-member .parade-lock{position:absolute;right:4px;bottom:3px;font-size:.52rem;color:#68737c}.parade-dropzone.drag-over{outline:3px solid #0d6efd;outline-offset:1px;background:#eef6ff!important}.parade-coord{position:absolute;top:2px;left:4px;font-size:.48rem;color:#a0a6ab;pointer-events:none;z-index:2}
.parade-special-zone{padding:.35rem .5rem}.parade-special-row{display:grid;grid-template-columns:repeat(var(--special-slots),minmax(58px,82px));gap:.45rem;justify-content:center}.parade-special-point{min-height:58px;min-width:58px}.zone-label{text-align:center;font-size:.56rem;font-weight:800;letter-spacing:.09em;color:#869099;margin-bottom:.28rem}.guard-zone{margin-block:var(--guard-gap,12px)}.drum-major-zone{margin-bottom:12px}.parade-body-shell{display:flex;align-items:stretch;gap:var(--guard-gap,18px)}.parade-side-guard{width:82px;display:flex;flex-direction:column;gap:.45rem;justify-content:center}.parade-side-guard .parade-special-point{min-height:62px}.parade-rank-settings{max-height:250px;overflow:auto;padding-right:.25rem}.rank-slot-input{width:70px}
@media(max-width:1199px){.parade-body-shell{gap:10px}.parade-side-guard{width:70px}.parade-rank-row{grid-template-columns:repeat(var(--rank-slots),minmax(56px,1fr))}.parade-member strong{font-size:.68rem}}
@media(max-width:767px){.parade-body-shell{overflow:auto}.parade-main-grid{min-width:720px}.parade-special-zone{overflow:auto}.parade-special-row{justify-content:start;min-width:max-content}.parade-side-guard{min-width:66px}}

/* Parade mobile compact formation view */
@media (max-width:767.98px){
  .parade-editor-page{padding-left:.55rem!important;padding-right:.55rem!important}
  .parade-editor-page .card-body{padding:.65rem}
  .parade-legend{gap:.45rem .7rem;margin-bottom:.55rem!important;font-size:.62rem}
  .parade-body-shell{overflow-x:auto;overflow-y:visible;gap:6px;padding-bottom:.25rem;-webkit-overflow-scrolling:touch}
  .parade-main-grid{
    --mobile-slot:clamp(42px,calc((100vw - 78px)/var(--parade-max-files)),54px);
    min-width:calc((var(--parade-max-files) * var(--mobile-slot)) + ((var(--parade-max-files) - 1) * 5px) + 24px);
    width:max-content;
    padding:.3rem;
    border-radius:.6rem;
  }
  .parade-rank-wrap{gap:.2rem;margin:.22rem 0}
  .parade-rank-label{width:18px;min-width:18px;font-size:.48rem}
  .parade-rank-row{
    width:100%!important;
    grid-template-columns:repeat(var(--rank-slots),var(--mobile-slot));
    gap:5px;
  }
  .parade-rank-row.centered{justify-content:center}
  .parade-rank-row.left-aligned{justify-content:start}
  .parade-point,
  .parade-special-point{
    width:var(--mobile-slot);
    min-width:var(--mobile-slot);
    height:var(--mobile-slot);
    min-height:var(--mobile-slot);
    aspect-ratio:1;
    border-radius:50%;
    padding:0;
    overflow:visible;
  }
  .parade-member{
    width:100%;height:100%;min-height:0;
    border-radius:50%;
    padding:0;
    display:flex;align-items:center;justify-content:center;
  }
  .parade-member strong{font-size:clamp(.66rem,2.8vw,.8rem);line-height:1}
  .parade-member small{display:none}
  .parade-member .parade-lock{right:2px;bottom:1px;font-size:.46rem;background:rgba(255,255,255,.82);border-radius:50%;width:14px;height:14px;display:grid;place-items:center}
  .parade-coord{display:none}
  .parade-special-zone{padding:.2rem .25rem;overflow-x:auto;-webkit-overflow-scrolling:touch}
  .parade-special-row{grid-template-columns:repeat(var(--special-slots),var(--mobile-slot));gap:5px;justify-content:center;min-width:max-content;margin-inline:auto}
  .parade-side-guard{min-width:var(--mobile-slot);width:var(--mobile-slot);gap:5px}
  .parade-side-guard .parade-special-point{min-height:var(--mobile-slot)}
  .zone-label{font-size:.48rem;margin-bottom:.15rem}
  .drum-major-zone{margin-bottom:6px!important}
  .guard-zone{margin-block:6px!important}
  .parade-dropzone.drag-over{outline-width:2px;outline-offset:1px}
  .parade-editor-page .duxster-page-heading{gap:.6rem;margin-bottom:.8rem}
  .parade-editor-page .duxster-page-heading h1{font-size:1.3rem}
  .parade-editor-page .duxster-page-heading p{display:block;font-size:.68rem}
  .parade-editor-page .duxster-page-heading .d-flex{flex-wrap:wrap}
}

@media (max-width:420px){
  .parade-main-grid{--mobile-slot:clamp(40px,calc((100vw - 70px)/var(--parade-max-files)),52px)}
}

/* Parade mobile hotfix: keep drum-major and guard special rows horizontal.
   The original mobile slot variable lived only on .parade-main-grid, while
   special zones are siblings. Define it at the page level so all parade
   placement zones share the same responsive slot size. */
@media (max-width:767.98px){
  .parade-editor-page{
    --mobile-slot:clamp(42px,calc((100vw - 78px)/var(--parade-max-files)),54px);
  }
  .parade-main-grid{
    --mobile-slot:inherit;
  }
  .parade-special-zone{
    width:100%;
    overflow-x:auto;
    overflow-y:visible;
  }
  .parade-special-row{
    display:grid;
    grid-auto-flow:column;
    grid-template-columns:repeat(var(--special-slots),var(--mobile-slot));
    grid-auto-columns:var(--mobile-slot);
    width:max-content;
    min-width:0;
    max-width:none;
    justify-content:center;
    margin-inline:auto;
  }
}
@media (max-width:430px){
  .parade-editor-page{
    --mobile-slot:clamp(40px,calc((100vw - 70px)/var(--parade-max-files)),52px);
  }
}

/* Parade mobile layout correction v21.3
   Keep the main body responsive to its own --parade-max-files value.
   Special rows use a separate fixed-responsive slot size so they remain
   horizontal without affecting the main rank grid. */
@media (max-width:767.98px){
  .parade-main-grid{
    --mobile-slot:clamp(42px,calc((100vw - 78px)/var(--parade-max-files)),54px);
  }
  .parade-special-row{
    --special-mobile-slot:clamp(42px,12vw,54px);
    display:grid;
    grid-auto-flow:row;
    grid-template-columns:repeat(var(--special-slots),var(--special-mobile-slot));
    grid-auto-columns:unset;
    gap:5px;
    width:max-content;
    min-width:max-content;
    justify-content:center;
    margin-inline:auto;
  }
  .parade-special-row .parade-special-point{
    width:var(--special-mobile-slot);
    min-width:var(--special-mobile-slot);
    height:var(--special-mobile-slot);
    min-height:var(--special-mobile-slot);
  }
}
@media (max-width:430px){
  .parade-main-grid{
    --mobile-slot:clamp(40px,calc((100vw - 70px)/var(--parade-max-files)),52px);
  }
  .parade-special-row{
    --special-mobile-slot:clamp(40px,11.5vw,50px);
  }
}

/* Milestone 22 / V2.5 parade geometry refresh */
.parade-main-grid{--parade-point-size:clamp(72px,7.2vw,104px)}
.parade-rank-row{
  grid-template-columns:repeat(var(--rank-slots),var(--parade-point-size));
  width:max-content!important;
  max-width:100%;
}
.parade-rank-row.centered{justify-content:center;margin-left:auto;margin-right:auto}
.parade-rank-row.left-aligned{justify-content:start;margin-right:auto}
.parade-point,.parade-special-point{
  width:var(--parade-point-size);
  min-width:var(--parade-point-size);
  height:var(--parade-point-size);
  min-height:var(--parade-point-size);
  aspect-ratio:1/1;
}
.parade-member{min-height:0;height:100%}
.parade-special-row{grid-template-columns:repeat(var(--special-slots),var(--parade-point-size))}
.parade-guard-grid{
  display:grid;
  grid-template-columns:repeat(var(--guard-cols),var(--parade-point-size));
  gap:.45rem;
  justify-content:center;
  width:max-content;
  max-width:100%;
  margin-inline:auto;
}
.parade-guard-grid.vertical{align-items:center}
.parade-guard-grid .parade-special-point{width:var(--parade-point-size);min-width:var(--parade-point-size);height:var(--parade-point-size);min-height:var(--parade-point-size)}

@media(max-width:1199px) and (min-width:768px){
  .parade-main-grid{--parade-point-size:clamp(66px,7vw,88px)}
}

@media(max-width:767.98px){
  .parade-main-grid{
    --mobile-slot:clamp(42px,calc((100vw - 78px)/var(--parade-max-files)),54px);
    --parade-point-size:var(--mobile-slot);
  }
  .parade-rank-row{
    grid-template-columns:repeat(var(--rank-slots),var(--mobile-slot));
    width:max-content!important;
    max-width:none;
  }
  .parade-point{
    width:var(--mobile-slot);min-width:var(--mobile-slot);height:var(--mobile-slot);min-height:var(--mobile-slot);
    border-radius:50%;
  }
  .parade-member{border-radius:50%}
  .parade-special-zone{--special-mobile-slot:clamp(42px,12vw,54px)}
  .parade-special-row{
    grid-template-columns:repeat(var(--special-slots),var(--special-mobile-slot));
    width:max-content;
  }
  .parade-special-row .parade-special-point,
  .parade-guard-grid .parade-special-point{
    width:var(--special-mobile-slot);min-width:var(--special-mobile-slot);height:var(--special-mobile-slot);min-height:var(--special-mobile-slot);border-radius:50%;
  }
  .parade-guard-grid{
    --parade-point-size:var(--special-mobile-slot);
    grid-template-columns:repeat(var(--guard-cols),var(--special-mobile-slot));
    gap:5px;
    width:max-content;
    min-width:max-content;
  }
  .parade-guard-grid .parade-member{border-radius:50%}
}
@media(max-width:430px){
  .parade-main-grid{--mobile-slot:clamp(40px,calc((100vw - 70px)/var(--parade-max-files)),52px)}
  .parade-special-zone{--special-mobile-slot:clamp(40px,11.5vw,50px)}
}

/* Parade mobile grid final correction v22.1
   The main body owns --parade-max-files. Keep body ranks horizontal and
   independent from the special DM/guard layout rules. */
@media (max-width:767.98px){
  .parade-main-grid{
    --mobile-slot:clamp(42px,calc((100vw - 78px)/var(--parade-max-files)),54px);
    --parade-point-size:var(--mobile-slot);
    min-width:calc((var(--parade-max-files) * var(--mobile-slot)) + ((var(--parade-max-files) - 1) * 5px) + 24px);
  }
  .parade-main-grid .parade-rank-row{
    display:grid!important;
    grid-template-columns:repeat(var(--rank-slots),var(--mobile-slot))!important;
    grid-auto-flow:column;
    gap:5px!important;
    width:max-content!important;
    max-width:none!important;
  }
  .parade-main-grid .parade-rank-row.centered{
    justify-content:center!important;
    margin-left:auto!important;
    margin-right:auto!important;
  }
  .parade-main-grid .parade-rank-row.left-aligned{
    justify-content:start!important;
    margin-left:0!important;
    margin-right:auto!important;
  }
  .parade-main-grid .parade-point{
    width:var(--mobile-slot)!important;
    min-width:var(--mobile-slot)!important;
    height:var(--mobile-slot)!important;
    min-height:var(--mobile-slot)!important;
    aspect-ratio:1/1!important;
    border-radius:50%!important;
  }

  /* Drum majors are always a centered horizontal row. */
  .drum-major-zone{
    --special-mobile-slot:clamp(42px,12vw,54px);
  }
  .drum-major-zone .parade-special-row{
    display:grid!important;
    grid-template-columns:repeat(var(--special-slots),var(--special-mobile-slot))!important;
    grid-auto-flow:column;
    gap:5px!important;
    justify-content:center!important;
    width:max-content!important;
    min-width:max-content!important;
    margin-inline:auto!important;
  }
  .drum-major-zone .parade-special-point{
    width:var(--special-mobile-slot)!important;
    min-width:var(--special-mobile-slot)!important;
    height:var(--special-mobile-slot)!important;
    min-height:var(--special-mobile-slot)!important;
    border-radius:50%!important;
  }

  /* Guard grids honor their explicit horizontal/vertical geometry. */
  .guard-zone{
    --special-mobile-slot:clamp(42px,12vw,54px);
  }
  .guard-zone .parade-guard-grid{
    display:grid!important;
    gap:5px!important;
    width:max-content!important;
    min-width:max-content!important;
    margin-inline:auto!important;
  }
  .guard-zone .parade-guard-grid.horizontal{
    grid-template-columns:repeat(var(--guard-cols),var(--special-mobile-slot))!important;
    grid-auto-flow:row!important;
  }
  .guard-zone .parade-guard-grid.vertical{
    grid-template-columns:repeat(var(--guard-cols),var(--special-mobile-slot))!important;
    grid-auto-flow:row!important;
  }
  .guard-zone .parade-special-point{
    width:var(--special-mobile-slot)!important;
    min-width:var(--special-mobile-slot)!important;
    height:var(--special-mobile-slot)!important;
    min-height:var(--special-mobile-slot)!important;
    border-radius:50%!important;
  }
}
@media (max-width:430px){
  .parade-main-grid{
    --mobile-slot:clamp(40px,calc((100vw - 70px)/var(--parade-max-files)),52px);
  }
  .drum-major-zone,.guard-zone{
    --special-mobile-slot:clamp(40px,11.5vw,50px);
  }
}


/* V2.5.2 parade breakpoint isolation.
   Desktop owns square geometry. Mobile owns circular geometry. */
@media (min-width:768px){
  .parade-editor-page{--parade-desktop-point-size:clamp(72px,7.2vw,104px)}
  .parade-main-grid{--parade-point-size:var(--parade-desktop-point-size)!important;min-width:0!important}
  .parade-main-grid .parade-rank-row{
    display:grid!important;
    grid-template-columns:repeat(var(--rank-slots),var(--parade-desktop-point-size))!important;
    grid-auto-flow:row!important;
    gap:.38rem!important;
    width:max-content!important;
  }
  .parade-main-grid .parade-point,
  .drum-major-zone .parade-special-point,
  .guard-zone .parade-special-point{
    width:var(--parade-desktop-point-size)!important;
    min-width:var(--parade-desktop-point-size)!important;
    height:var(--parade-desktop-point-size)!important;
    min-height:var(--parade-desktop-point-size)!important;
    aspect-ratio:1/1!important;
    border-radius:.5rem!important;
  }
  .drum-major-zone .parade-special-row{
    display:grid!important;
    grid-template-columns:repeat(var(--special-slots),var(--parade-desktop-point-size))!important;
    grid-auto-flow:row!important;
    gap:.45rem!important;
    justify-content:center!important;
    width:max-content!important;
    margin-inline:auto!important;
  }
  .guard-zone .parade-guard-grid{
    display:grid!important;
    gap:.45rem!important;
    justify-content:center!important;
    width:max-content!important;
    margin-inline:auto!important;
  }
  .guard-zone .parade-guard-grid.horizontal,
  .guard-zone .parade-guard-grid.vertical{
    grid-template-columns:repeat(var(--guard-cols),var(--parade-desktop-point-size))!important;
    grid-auto-flow:row!important;
  }
}
@media (max-width:767.98px){
  .parade-main-grid .parade-point,
  .drum-major-zone .parade-special-point,
  .guard-zone .parade-special-point{border-radius:50%!important}
}

/* UX: unsaved indicator */
.unsaved-dot{display:inline-block;width:.5rem;height:.5rem;border-radius:50%;background:#f0ad00;margin-left:.3rem;vertical-align:.08rem}

/* ======================================================================
   Duxster Studio layout (drill editor)
   Regions: bar / stage (+tool strip, status) / inspector (tabs) / dock
   ====================================================================== */
.studio-shell{--st-bg:#e8ebee;--st-panel:#fff;--st-line:#dce0e4;--st-ink:#1f262c;--st-mute:#69747e;--st-gold:#ffcc00;--st-dark:#161c20;
  font-size:.82rem;color:var(--st-ink);background:var(--st-bg);padding:.5rem .6rem!important;display:flex;flex-direction:column;gap:.5rem;min-width:0}
.studio-shell .alert{margin:0;padding:.4rem .7rem}
.studio-bar{display:flex;align-items:center;justify-content:space-between;gap:.5rem .9rem;flex-wrap:wrap;background:var(--st-panel);border:1px solid var(--st-line);border-radius:.7rem;padding:.35rem .6rem}
.studio-bar-left,.studio-bar-right{display:flex;align-items:center;gap:.5rem;min-width:0}
.studio-bar-right{flex-wrap:wrap;justify-content:flex-end}
.studio-title{font-size:1.02rem;font-weight:800;margin:0;max-width:34vw}
.studio-save-note{font-size:.72rem;color:var(--st-mute);white-space:nowrap}
.studio-save-note.is-dirty{color:#a56500;font-weight:700}
.studio-group{display:flex;align-items:center;gap:.25rem;padding-right:.55rem;border-right:1px solid var(--st-line)}
.studio-bar .btn-sm{font-size:.75rem;padding:.28rem .5rem}

.studio-main{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:.5rem;align-items:stretch;min-height:0}
.studio-stage-col{display:flex;flex-direction:column;gap:.4rem;min-width:0;min-height:0}
.studio-stagebar{display:flex;flex-wrap:wrap;align-items:center;gap:.35rem .8rem;background:var(--st-panel);border:1px solid var(--st-line);border-radius:.6rem;padding:.3rem .5rem}
.studio-tools{display:flex;align-items:center;gap:.3rem}
.studio-tools+.studio-tools{padding-left:.8rem;border-left:1px solid var(--st-line)}
.studio-tools-label{font-size:.6rem;letter-spacing:.09em;text-transform:uppercase;color:var(--st-mute);font-weight:800}
.studio-stagebar .btn{font-size:.74rem;padding:.25rem .5rem}
.studio-stagebar .btn.active{background:var(--st-dark);color:var(--st-gold);border-color:var(--st-dark)}
.studio-snap-step{width:86px}

.studio-shell .field-stage{position:relative;background:var(--st-dark);border-radius:.7rem;padding:.5rem;flex:1 1 auto;min-height:0;display:flex;aspect-ratio:var(--field-aspect,1.5)}
.studio-shell .field-wrap{flex:1 1 auto;min-width:0;min-height:0;background:transparent;padding:0;overflow:auto;border-radius:.5rem}
.studio-shell .field-wrap svg{display:block;width:100%;height:auto;min-width:680px;border-radius:.45rem;box-shadow:0 0 0 1px rgba(255,255,255,.06),0 10px 28px rgba(0,0,0,.35)}
.studio-shell .field-stage-controls #fieldPreviewOverlay,.studio-shell .field-stage-controls #fieldFullShowOverlay{display:none}
.studio-shell .field-stage:fullscreen .field-stage-controls #fieldPreviewOverlay,.studio-shell .field-stage:fullscreen .field-stage-controls #fieldFullShowOverlay{display:inline-flex}
.studio-shell .field-stage:fullscreen{aspect-ratio:auto}

.studio-statusbar{display:flex;align-items:center;justify-content:space-between;gap:.4rem .8rem;flex-wrap:wrap;min-height:36px;background:var(--st-panel);border:1px solid var(--st-line);border-radius:.6rem;padding:.25rem .55rem}
.studio-selected{display:flex;align-items:center;gap:.5rem;min-width:0}
.studio-pathbar{display:none}
.studio-main.has-selection .studio-pathbar{display:flex}
.studio-statusbar .editor-legend{display:none!important}

.studio-inspector{display:flex;flex-direction:column;min-height:0;background:var(--st-panel);border:1px solid var(--st-line);border-radius:.7rem;overflow:hidden}
.studio-tabs{display:flex;margin:0;padding:0;list-style:none;border-bottom:1px solid var(--st-line);background:#f4f5f6;flex:0 0 auto}
.studio-tabs .nav-item{flex:1 1 0}
.studio-tab{width:100%;display:flex;align-items:center;justify-content:center;gap:.4rem;border:0;background:transparent;padding:.62rem .4rem;font-weight:700;font-size:.78rem;color:var(--st-mute);border-bottom:3px solid transparent;margin-bottom:-1px}
.studio-tab:hover{color:var(--st-ink)}
.studio-tab.active{color:var(--st-ink);background:#fff;border-bottom-color:var(--st-gold)}
.studio-panes{flex:1 1 auto;min-height:0;overflow-y:auto}
.studio-pane{padding:.75rem .85rem}
.studio-pane-flush{padding:0}
.studio-section{padding-bottom:.85rem;margin-bottom:.85rem;border-bottom:1px solid #eceff1}
.studio-section:last-child{border-bottom:0;margin-bottom:0;padding-bottom:0}
.studio-section-title{font-size:.64rem;font-weight:800;letter-spacing:.09em;text-transform:uppercase;color:var(--st-mute);margin-bottom:.5rem}
.studio-section-hint{text-transform:none;letter-spacing:0;font-weight:500;margin-left:.35rem}
.studio-stack{display:flex;flex-direction:column;gap:.5rem}
.studio-split{display:grid;grid-template-columns:1fr 1fr;gap:.5rem}
.studio-label{font-size:.64rem;font-weight:800;color:var(--st-mute);text-transform:uppercase;letter-spacing:.06em;margin-bottom:.2rem}
.studio-help{font-size:.72rem;color:var(--st-mute);line-height:1.35}
.studio-auto{display:flex;align-items:center;justify-content:space-between;gap:.5rem;background:#fffbe6;border:1px solid #f0e3a6;border-radius:.55rem;padding:.4rem .55rem}
.studio-inspector .set-name-control,.studio-inspector .count-control,.studio-inspector .movement-control,.studio-inspector .music-time-control{width:100%!important;max-width:none!important}
.studio-main:not(.has-selection) .studio-needs-selection .btn-group,.studio-main:not(.has-selection) .studio-needs-selection .form-check{opacity:.45}
.studio-pane .form-select,.studio-pane .form-control{font-size:.8rem}
#pane-analyze .movement-table{max-height:none}

.studio-dock{background:var(--st-panel);border:1px solid var(--st-line);border-radius:.7rem;padding:.45rem .55rem;display:flex;flex-direction:column;gap:.45rem;min-width:0}
.studio-transport{display:flex;align-items:center;gap:.5rem .7rem;flex-wrap:wrap}
.studio-transport-play{display:flex;gap:.3rem}
.studio-readout{font-variant-numeric:tabular-nums;font-weight:600;font-size:.76rem;background:var(--st-dark);color:#dfe6eb;border-radius:.45rem;padding:.32rem .65rem;min-width:200px;white-space:nowrap}
.studio-readout b{color:var(--st-gold);font-weight:800}
.studio-audio{display:flex;align-items:center;gap:.5rem;flex:1 1 340px;min-width:0}
.studio-audio audio{flex:1 1 auto;min-width:140px;height:32px}
.studio-audio-title{font-weight:700;font-size:.76rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:170px}
.studio-audio .music-now{min-width:0}
.studio-timeline{overflow:hidden}
.studio-timeline.is-collapsed{max-height:0;margin:-.45rem 0 0;visibility:hidden}
.studio-timeline-inner{border-top:1px solid var(--st-line);padding-top:.45rem}
.studio-dock .set-filmstrip-shell{margin:0!important}

@media(min-width:1200px){
  .studio-shell{height:calc(100dvh - var(--dux-topbar-h,66px));min-height:620px;overflow:hidden}
  .studio-main{flex:1 1 auto}
  .studio-shell .field-stage{aspect-ratio:auto}
  .studio-shell .field-wrap{position:relative;overflow:hidden}
  .studio-shell .field-wrap svg{position:absolute;inset:0;width:100%;height:100%;min-width:0;box-shadow:none}
}
@media(min-width:1700px){.studio-main{grid-template-columns:minmax(0,1fr) 380px}}
@media(max-width:1199.98px){
  .studio-shell .field-stage{aspect-ratio:auto;flex:none}
  .studio-shell .field-wrap{overflow-x:auto;overflow-y:hidden}
  .studio-main{grid-template-columns:1fr}
  .studio-panes{overflow:visible}
  .studio-title{max-width:48vw}
}
@media(max-width:767.98px){
  .studio-group{border-right:0;padding-right:0}
  .studio-tools+.studio-tools{border-left:0;padding-left:0}
  .studio-readout{min-width:0;flex:1 1 100%}
}

.studio-tab-badge{display:inline-grid;place-items:center;min-width:1.15rem;height:1.15rem;padding:0 .3rem;border-radius:999px;background:#c94b58;color:#fff;font-size:.66rem;font-weight:800}
.studio-tab-badge.d-none{display:none!important}

/* ===== Duxster Sports ===== */
.legend-player{background:#fff}.legend-opponent{background:#e5484d}.legend-ball{background:#f08c00}
.field-mark{pointer-events:none}
/* Marching-band-only controls are hidden in the sports edition (code retained for future reuse). */
.duxster-editor-page .studio-audio,
.duxster-editor-page .music-time-control,
.duxster-editor-page #musicPanel,
.duxster-editor-page #inlineMovementTiming,
.duxster-editor-page .waveform-shell,
.duxster-editor-page #studioTimelineToggle,
.duxster-editor-page div:has(> #movementMode),
.duxster-editor-page #propagateTimeline{display:none!important}
.play-switcher{background:transparent}
