

#nav {

  width: 975px;

  float: left;

  margin: 13px 0 16px 0;

  padding: 0;

  list-style: none;

  background-color: #666666;

  border-bottom: 1px solid #666666;

  border-top: 1px solid #666666; }

#nav li {

  float: left; }

#nav li a {

  display: block;

  padding: 8px 19px;

  text-decoration: none;

  font-weight: bold;

  font-size:12px;

  color: #ffffff;

  border-right: 1px solid #666666; }

#nav li a:hover {

  color: #ffffff;

  background-color: #333333; }

/* End primary navigation bar styling. */



  #nav1 {

  width: 975px;

  float: left;

  margin: 0 0 3em 0;

  padding: 0;

  list-style: none;

  background-color: #f2f2f2;

  border-bottom: 1px solid #ffffff;

  border-top: 1px solid #ffffff; }

#nav1 li {

  float: left; }

#nav1 li a {

  display: block;

  padding: 8px 15px;

  text-decoration: none;

  font-weight: bold;

  font-size:70%;

  color: #000000;

  border-right: 1px solid #ffffff; }

#nav1 li a:hover {

  color: #c00;

  background-color: #ffffff; }

/* End secondary navigation bar styling. */

   

.myBoxesWhiteBackground {

padding: 10px;

width:450px;

height:200px;

background: rgb(255,255,255);



    -webkit-box-shadow: 0px 1px 0px rgba(50, 50, 50, 0.5);

    -moz-box-shadow: 0px 1px 0px rgba(50, 50, 50, 0.5);

    box-shadow: 0px 1px 0px rgba(50, 50, 50, 0.5);

border: 1px #CDCDCD solid;

border-radius: 5px;

}


#nav1 {



      border-bottom: 1px solid #f2f2f2;



      border-top: 1px solid #f2f2f2; margin-left: 0px;}




   #nav1 li a {




      border-right: 1px solid #f2f2f2; }






a:link {color:blue;}    /* unvisited link */



a:visited {color:blue;} /* visited link */



a:hover {color:red;}   /* mouse over link */



a:active {color:red;}  /* selected link */








BODY {font-family:"Arial"; background-color: #ffffff;  margin:0px;padding:0px;text-align:center;}


p {font-family: var(--font-ui); font-size: 110%; }




#centerwrapper {text-align:left; width:auto; max-width:1200px; margin-left:auto; margin-right:auto;}



@media screen and (max-width: 1000px){

  body, #nav, #nav1, #content,iframe,#centerwrapper,.myBoxesGrayBackground,.myBoxesWhiteBackground,.myBoxesVideoBackground, #metronome{

    max-width: 100%;

    width: 100% !important;

    min-width: 100% !important;

  }

  *:not(.radial-slider *){

    margin-right: 0 !important;

    margin-left: 0 !important;

  }

  p{

    margin-right: 0 !important;

    margin-left: 0 !important;

    width: 100%;

    display: block;

    float: none;

  }

  img{

    width: 100%;

    height: auto;

  }

  #nav1 li a{



    display: block;

    padding-left: 0;

    padding-right: 0;

    text-align: center;

  }

  ul, ol, li{

    /*display: inline;*/

  }

  #nav li{

    text-align: center;

  }

  *:not(.radial-slider *){

    /*border: 1px solid;*/

    float: none !important;

    margin-left: 0 !important;

    margin-right: 0 !important;

    padding-left: 0 !important;

    padding-right: 0 !important;

  }



  #centerwrapper{

    width: 90% !important;

    min-width: 90% !important;

    margin-left: 3% !important;

  }

 .myBoxesWhiteBackground{

    padding: 0 2% !important;

    height: auto !important;

  }

  #nav{

    margin-left: 3% !important;

  }

  #nav li, #nav1 li{

    margin-bottom: 10px;

    margin-top: 10px;

  }

  #nav li a, #nav1 li a{

    font-size: 14px;

  }

  img[src='https://www.paypalobjects.com/en_US/i/scr/pixel.gif'] {

    height: 1px !important;

    overflow: hidden;

    visibility: visible;

    width: 1px !important;

  }



  .myBoxesGrayBackground, .myBoxesWhiteBackground,.myBoxesVideoBackground{

    box-sizing: border-box;

  }

  #centerwrapper{

    margin: auto !important;

  }

  #nav{

    margin-left: 0 !important;

  }

  .myBoxesWhiteBackground{

    margin-top: 0px !important;
    margin-bottom: 20px !important;

  }
  

  #content ul, ol {

  padding-left: 25px !important;

  }
  
  #metro-bpm-slider {
      margin-left:5px !important;
  }

 .ui-slider-vertical label {
    margin-left:28px !important;
}

label.tempo-marking {
      margin-left:68px !important;
  }
  
.popuptext {
       left: 10% !important;
       margin-left: -140px !important;
       margin-bottom:-1900px !important;
}
  
#myPopup {
    width:250px !important;
    padding-left:10px !important;
    padding-right:10px !important;
     }

  ._cavatinaexample {

  width: 184px !important;

  height: 122px !important;

  }
  
 


  
}




<style>
/* Popup container */
.popup {
    position: relative;
    display: inline-block;
    cursor: pointer;
}
/* The actual popup (appears on top) */
.popup .popuptext {
    visibility: hidden;
    width: 800px;
    background-color: #555;
    color: #fff;
    text-align: left;
    border-radius: 6px;
    padding-left: 8px; 
    position: absolute;
    z-index: 1;
    bottom: 20%;
    left: 50%;
    margin-top:-100%;
    margin-left: -80px;
    
}


.popuptext {
    padding: 25px 25px 25px 25px;
    margin-bottom:-600%;
    
}

/* Popup arrow */
.popup .popuptext::after {
    content: "";
    position: absolute;
    top: 100%;
    left: 50%;
    margin-left: -5px;
    border-width: 5px;
    border-style: solid;
    border-color: #555 transparent transparent transparent;
}

/* Toggle this class when clicking on the popup container (hide and show the popup) */
.popup .show {
    visibility: visible;
    -webkit-animation: fadeIn 1s;
    animation: fadeIn 1s
}

/* Add animation (fade in the popup) */
@-webkit-keyframes fadeIn {
    from {opacity: 0;} 
    to {opacity: 1;}
}

@keyframes fadeIn {
    from {opacity: 0;}
    to {opacity: 1;}
}
.ui-button-icon-only .ui-icon{
    margin-left: 0 !important;
}


#metronome{display:block;width:90%;min-width:400px;margin:0 0 15px;font-size:11px;}
#metronome{display: block;}
#metronome *{font-weight:bold;}
#metronome fieldset{border:0;padding:15px 5px 4px;width: 100%;box-sizing: border-box; margin:0;}
#metro-lcol,#metro-rcol{display:table-cell;}
#metro-lcol,#metro-rcol{display:block;}
#metro-rcol{width:150px;flex-basis: 150px; min-width: 150px;} 
#metro-lcol{flex-basis: 100%;} 
#metro-tempo{margin-left:5px;}  
#metro-bpm-input,#metro-bpm-label{font-size:18px;}  
#metro-bpm-input{text-align:right;width:2.5em;}
#metro-bpm-slider{height:430px;margin:12px 4px;color:green;width:16px;}
/* Tempo (vertical) slider knob — gold pill with a dark border, sized for
   the 16px-wide rail. !important needed because jQuery UI sets inline
   width/height + background-image on the handle. */
#metro-bpm-slider .ui-slider-handle{
  width:26px !important;
  height:18px !important;
  background:#fbbf24 !important;
  background-image:none !important;
  border:2px solid #92400e !important;
  border-radius:5px !important;
  box-shadow:0 2px 4px rgba(0,0,0,.25) !important;
  margin-left:-5px !important;
  cursor:grab;
}
#metro-bpm-slider .ui-slider-handle:active{cursor:grabbing;}
/* Beats-per-measure (horizontal) slider knob — keep the default jQuery UI
   dimensions; just swap in the gold-pill color/border for visibility. */
#metro-meter-slider .ui-slider-handle{
  background:#fbbf24 !important;
  background-image:none !important;
  border:2px solid #92400e !important;
  border-radius:5px !important;
  box-shadow:0 2px 4px rgba(0,0,0,.25) !important;
  cursor:grab;
}
#metro-meter-slider .ui-slider-handle:active{cursor:grabbing;}
/* Let a finger DRAG the sliders: without this, iOS Safari claims the touch
   for page scrolling instead of handing it to the slider (pairs with the
   Touch Punch shim loaded after jquery-ui.js). */
#metronome .ui-slider, #metronome .ui-slider .ui-slider-handle { touch-action: none; }
#metro-volume-slider label{font-weight:normal;}
#metro-tappad{border:1px inset;background:black;text-align:center;padding:1em 0;font-weight:normal;margin-top:18px;}
#metro-bpm-btns{margin:8px 5px;}
.metro-bpm-row{display:flex;gap:4px;}
.metro-bpm-row + .metro-bpm-row{margin-top:4px;}
.metro-bpm-step{flex:1;padding:6px 0;font-size:14px;font-weight:bold;color:#fff;background:green;border:1px solid #0a0;border-radius:4px;cursor:pointer;}
.metro-bpm-step:hover{background:#0a0;}
.metro-bpm-step:active{background:#060;}
.metro-props{/*display:table;*/width:100%;margin-top:10px;}  
/*.metro-prop{display:table-row;}*/
.metro-prop .metro-label{display:table-cell;vertical-align:top;max-width:130px;text-align:right;padding-right:6px;}
.metro-prop .metro-input{display:table-cell;vertical-align:top;width:67%;padding-left:10px;}
.metro-prop .metro-input input{vertical-align:middle;}
#metronome .ui-slider.ui-slider-horizontal{margin:2px 10px 2em 0; background: #ccc url("images/ui-bg_highlight-soft_75_cccccc_1x100.png") 50% 50% repeat-x; color:blue;} 
.ui-widget-header{
    background: yellow;
}




#metronome .ui-slider.ui-slider-vertical{margin:5px 3px; background:green;}  
#metronome .ui-slider label{position:absolute;font-size:11px;}
#metronome .ui-slider .tempo-marking{margin-left:68px;font-weight:normal;}
#metronome .ui-slider-horizontal label{width:2em;margin:15px 0 0 -1em;text-align:center;}
#metronome .ui-slider-vertical label{height:0.85em;margin:0 0 0 28px;}
#metronome .ui-slider .pip{position:absolute;background:red;}
#metronome .ui-slider-horizontal .pip{left:50%;top:-3px;width:1px;height:3px;}
/* Pip is appended INSIDE each label by the slider IIFE — left: is relative
   to the label's box. With label margin-left:28px and pip left:-26px the
   pip starts at slider-x=2, and width:12px makes it end at slider-x=14,
   leaving symmetric 2px gaps from both rail edges. top:50% + translateY
   vertically centers the pip with the number text instead of clinging to
   the label's bottom. */
#metronome .ui-slider-vertical .pip{top:calc(50% + 2px);transform:translateY(-50%);left:-26px;width:12px;height:2px;}
table#metro-beatpane{margin:0;width:100%;height:256px;}
#metro-beatpane td{border:1px solid #888;background:#333;color:#ddd;text-align:center;font-weight:normal;}
/* Phase 17k: the real START/STOP button now floats fixed at the viewport
   bottom on desktop so it's always reachable without scrolling (mirrors the
   mobile sticky button). This is still #metro-power itself, so its click
   handler and value-driven START/STOP label are untouched; only positioning
   and styling moved. Hidden on mobile, where #mob-power takes over. z-index
   900 sits above page content but below menus/overlays (>=999) and the
   polyrhythm panel/picker (9000/10000). */
/* Default: button docked inside the brass plate, centered at the bottom.
   When ENTER YOUR OWN RHYTHM is on, JS adds .metro-power-floating to
   restore the previous "always reachable" fixed-at-viewport-bottom
   behavior — see updatePowerButtonMode() below. Styled as a tactile 3D
   button: vertical gradient + side-wall shadow + inset highlight/shadow
   bevel + embossed text. On :active the side-wall collapses and the
   button translates 4px down — looks like it physically presses in. */
#metro-power {
    display: block;
    margin: 28px auto 0;
    width: 240px;
    max-width: calc(100vw - 32px);
    height: 52px;
    border: none;
    border-radius: 12px;
    font-size: 22px;
    font-weight: 700;
    letter-spacing: .06em;
    color: #fff !important;
    text-shadow: 0 1px 2px rgba(0,0,0,.35);
    background: linear-gradient(180deg, #22c55e 0%, #16a34a 50%, #15803d 100%);
    cursor: pointer;
    box-shadow:
      inset 0 1px 0 rgba(255,255,255,.35),
      inset 0 -3px 0 rgba(0,0,0,.18),
      0 4px 0 #14532d,
      0 8px 16px rgba(0,0,0,.35);
    transition: transform .08s, box-shadow .08s, background .15s;
}
#metro-power[value='STOP'] {
    background: linear-gradient(180deg, #ef4444 0%, #dc2626 50%, #b91c1c 100%);
    box-shadow:
      inset 0 1px 0 rgba(255,255,255,.35),
      inset 0 -3px 0 rgba(0,0,0,.18),
      0 4px 0 #7f1d1d,
      0 8px 16px rgba(0,0,0,.35);
}
#metro-power:active {
    transform: translateY(4px);
    box-shadow:
      inset 0 1px 0 rgba(255,255,255,.35),
      inset 0 -3px 0 rgba(0,0,0,.18),
      0 0 0 #14532d,
      0 4px 10px rgba(0,0,0,.30);
}
#metro-power[value='STOP']:active {
    box-shadow:
      inset 0 1px 0 rgba(255,255,255,.35),
      inset 0 -3px 0 rgba(0,0,0,.18),
      0 0 0 #7f1d1d,
      0 4px 10px rgba(0,0,0,.30);
}
#metro-power.metro-power-floating {
    position: fixed;
    bottom: 18px;
    left: 50%;
    transform: translateX(-50%);
    z-index: 900;
    margin: 0;
}
#metro-power.metro-power-floating:active {
    transform: translateX(-50%) translateY(4px);
}
#metronome .flashing{background:#ffe800;color:#333}
#metronome .flashing.flashing-mag{background:#333 !important;color:#ddd !important}
/* "Flashing lights OFF" toggle: neutralize the beat-panel flash (incl. the red
   downbeat) so panels look static. Scoped to #metro-beatpane so the tappad's
   own tap-feedback .flashing is unaffected. */
#metronome.flash-off #metro-beatpane td.flashing,
#metronome.flash-off #metro-beatpane td.flashing:first-child{background:#333 !important;color:#ddd !important;}
/* Display toggles above the beat panels */
#metro-display-toggles{display:flex;flex-wrap:wrap;gap:6px 22px;margin:0 0 10px;font-size:110%;color:#444;font-weight:bold;}
#metro-display-toggles label{display:inline-flex;align-items:center;}
#metro-display-toggles label input{margin-left:6px;}
#metro-display-toggles .metro-toggle-sub{font-weight:normal;font-style:italic;margin-left:4px;}


.metro-prop .metro-input{
  text-align: left;
}
@media screen and (max-width: 1000px){
  #metronome{
    margin-top: 0;
    display: block !important;
  }
  #metro-meter-slider{
      
  }
  #metronome #metro-lcol, #metronome #metro-rcol{
    width: 100%;
    display: block;
  }
  .metro-prop .metro-input, .metro-prop .metro-label{
    /*display: block;*/
    /*width: 100%;*/
    
  }
  .metro-prop .metro-input{
      flex-basis: 70%;
  }
  .metro-prop{
    display: flex;
    align-items: flex-start;  
        justify-content: space-between;
    padding-left: 10px !important;
  }
  .metro-prop:nth-child(2){
    margin-top: 10px;
    align-items: end;  
  }
  #metronome .ui-slider.ui-slider-horizontal{
    display: flex;
    justify-content: space-between;
  }
  #metronome .ui-slider.ui-slider-horizontal label{
    position: absolute;
    top: 14px;
    margin-left: -10px !important;
    /*left: auto !important;*/
  }
  .metro-prop .metro-input{
    padding: 0 10px !important;
    text-align: left;
    box-sizing: border-box;
  }
  .ui-slider-horizontal .ui-slider-handle{
    margin-left: -.6em !important;
  }
  #metro-bpm-input{
    text-align: center;
    width: 50%;
  }
  .voice-count-block select{
    width: 100%;
    min-width: 0;
    margin-left: 10px;
  }
}
/* ── 11" iPad portrait (769–1000px): desktop layout on a narrower screen.
   Phones use the separate mobile UI below 769px, so these rules only
   affect the tablet range. ─────────────────────────────────────────── */
@media screen and (min-width: 769px) and (max-width: 1000px){
  /* Page gutter: #centerwrapper was capped at 90%, leaving gray bars
     beside the white box that the full-width footer doesn't have. Span
     the screen like the footer; the white box's own 2% side padding
     keeps content off the edges. */
  #centerwrapper{ width: 100% !important; min-width: 100% !important; margin: 0 !important; }
  /* START button: the <=1000px margin-strip zeroes the margin:auto that
     centers it — restore the centering. */
  #metro-power{ margin-left: auto !important; margin-right: auto !important; }
  /* PWA install callout: the strip zeroes its margin:auto, so it sat left-aligned
     — restore the horizontal centering. */
  #pwa-install{ margin-left: auto !important; margin-right: auto !important; }
  /* TEMPO column: the strip also zeroes the fieldset's left margin/padding
     and the rail's left margin, so the rail — and its 26px knob, which
     overhangs the 16px rail by 5px — sat flush against the beat pane.
     Restore a left gutter and widen the column slightly to keep the
     BPM row + tempo labels comfortable. */
  #metronome #metro-rcol{ flex-basis: 170px; min-width: 170px; }
  #metro-tempo{ padding-left: 14px !important; }
  /* "120 BPM" row: undo the phone-era 50%-wide input from the old
     <=1000px rules so the number and "BPM" share a line, as on desktop. */
  #metro-bpm-input{ width: 2.5em; text-align: right; padding-right: 5px !important; }
  /* FLASHING LIGHTS OFF / TICKS OFF: the strip zeroes the 6px gap between
     label text and checkbox — restore it, a touch roomier. */
  #metro-display-toggles label input{ margin-left: 8px !important; }
  /* Beats slider: keep the "12" clear of the TEMPO column — pull the rail's
     right end in (the strip zeroes the slider's normal right margin). */
  #metro-meter-slider{ margin-right: 36px !important; }
  /* "Clear all accents": restore the L/R padding the strip zeroes. */
  .metro-clear-accents-btn{ padding-left: 8px !important; padding-right: 8px !important; }
  /* Intro callout "NEW" pill: restore the L/R padding the strip zeroes so the
     text isn't jammed against the rounded edges. */
  .metro-intro-new-tag{ padding-left: 9px !important; padding-right: 9px !important; }
  /* The NEW pill renders ~2/3 of its width left of the tool-list checkmarks on
     iPad; nudge it right to line up (iPad-only — desktop already aligns). */
  .metro-intro-chip-new .metro-intro-new-tag{ margin-left: 24px !important; }
  /* SUBDIVIDE BEAT: keep "TICKS PER BEAT:" + dropdown on one line — bigger
     modes-column share, slimmer trigger, no text wrap, and restore the gap
     before the trigger (strip zeroed it). */
  .modes-stack{ flex-basis: 64%; }
  .metro-right-col{ flex-basis: 36%; }
  .subdivide-block label{ white-space: nowrap; }
  /* The dropdown shrinks to the space left on the line (its label
     ellipsizes) instead of overflowing into the TICK VOLUME column.
     The open .subdiv-panel is absolute and keeps its own width. */
  .subdiv-dropdown{ margin-left: 10px !important; flex: 0 1 auto; min-width: 0; }
  .subdiv-trigger{ width: 250px; max-width: 100%; }
  /* Subdivide panel: restore heading + row side padding the strip zeroes. */
  .subdiv-optgroup{ padding-left: 14px !important; padding-right: 14px !important; }
  .subdiv-row{ padding-left: 14px !important; padding-right: 14px !important; }
  /* TALKING VOICE COUNT: restore the gap between each label and its control.
     (The COUNT select itself is replaced by the .vc-dropdown custom panel
     in this range — see the voice-count styles.) */
  .voice-count-block input[type="checkbox"]{ margin-left: 10px !important; }
  #voice-volume{ margin-left: 10px !important; }
  /* RESET / SAVE MY METRONOME SETTINGS boxes + their buttons: restore the
     auto-margin centering and box padding the strip removes. */
  .prog-setups-block.desktop-setups-ui{ margin-left: auto !important; margin-right: auto !important;
    padding-left: 14px !important; padding-right: 14px !important; }
  .desktop-setups-ui .prog-reset-btn,
  .desktop-setups-ui #prog-setups-save{ margin-left: auto !important; margin-right: auto !important; }
  /* "How setups work" disclosure: the strip zeroes the summary's L/R padding,
     so its ▸ caret sat flush against the box's left edge — restore it. */
  .prog-setups-explainer-body .rl-disclosure-summary{ padding-left: 12px !important; padding-right: 12px !important; }
  /* MY METRONOME SETUPS & PRACTICE ROUTINES launcher ("…saved items — show all"):
     the strip zeroes the row's padding (name sat flush left) and each Load/Start/
     Manage button's L/R padding. Restore both, and widen the gap so the buttons
     aren't crowded. */
  #routine-launcher .rl-row{ padding-left: 10px !important; padding-right: 10px !important; }
  #routine-launcher .rl-btn{ padding-left: 12px !important; padding-right: 12px !important; }
  #routine-launcher .rl-row-btns{ gap: 12px; }
  /* Help & Feedback bar ("Questions, problems, or ideas?"): restore the
     auto-margin centering plus the bar's and its buttons' side padding. */
  .metro-support-bar{ margin-left: auto !important; margin-right: auto !important;
    padding-left: 18px !important; padding-right: 18px !important; }
  .metro-support-btn{ padding-left: 18px !important; padding-right: 18px !important; }
  /* "Power Tools" eyebrow pill above ADVANCED FEATURES: restore its text padding. */
  .metro-adv-eyebrow{ padding-left: 12px !important; padding-right: 12px !important; }
  /* ADVANCED FEATURES cards (PGS / Practice Ladder / Polyrhythm / Enter Your
     Own Rhythm): restore the card side padding, the colored hint boxes' side
     padding (text sat against their left accent bars), and the
     label-to-control gaps — all strip casualties. */
  .metro-advanced .play-go-silent-block,
  .metro-advanced .practice-ladder-block,
  .metro-advanced .polyrhythm-block,
  .metro-advanced .misery-block,
  .metro-advanced .prog-rhythm-block{ padding-left: 22px !important; padding-right: 22px !important; }
  .play-go-silent-hint, .practice-ladder-hint, .polyrhythm-hint, .misery-hint, .prog-rhythm-hint{
    padding-left: 10px !important; padding-right: 10px !important; }
  .play-go-silent-block input[type="checkbox"],
  .polyrhythm-block input[type="checkbox"],
  .misery-block input[type="checkbox"]{ margin-left: 10px !important; margin-right: 10px !important; }
  /* Misery "NAME THIS PASSAGE" text field: restore the L/R text padding the
     strip zeroes so the typed text/placeholder isn't flush against the border. */
  .misery-name-input{ padding-left: 9px !important; padding-right: 9px !important; }
  /* PLAY for / GO SILENT for fields: explicit landscape proportions (the
     flex label was squeezing them taller than wide) and a clearly visible
     resting border — the iOS default border is nearly invisible until the
     field is focused, so draw our own. */
  .play-go-silent-block input[type="number"]{
    margin-left: 10px !important; margin-right: 10px !important;
    flex: 0 0 auto;
    width: 2.5em;             /* 2 digits max (1–99) — was 3.5em, wider than needed */
    padding: 5px 8px !important;
    -webkit-appearance: none;
    appearance: none;
    border: 1.5px solid #60a5fa;
    border-radius: 4px;
    background: #fff;
    text-align: center;
  }
  .polyrhythm-trigger{ margin-left: 10px !important; }
  /* Polyrhythm volume sliders: give each its own line below its two-line
     label instead of jamming beside the text, and make the track long
     enough for fine control. */
  .polyrhythm-block label:has(input[type="range"]){ display: block; }
  /* Drawn track + thumb: iOS keeps the thumb white even with accent-color,
     so opt out of the native look and paint both purple. */
  .polyrhythm-block input[type="range"]{
    display: block; margin: 8px 0 0 !important; width: min(320px, 100%) !important;
    -webkit-appearance: none; appearance: none;
    height: 22px; background: transparent;
  }
  .polyrhythm-block input[type="range"]::-webkit-slider-runnable-track{
    height: 6px; border-radius: 3px; background: #ddd6fe;
  }
  .polyrhythm-block input[type="range"]::-webkit-slider-thumb{
    -webkit-appearance: none;
    width: 22px; height: 22px; border-radius: 50%;
    background: #7c3aed; border: none;
    margin-top: -8px;
    box-shadow: 0 1px 3px rgba(0,0,0,.3);
  }
  /* Practice Ladder number fields (CHANGE BY / EVERY min + sec / FROM /
     UNTIL / REST): pin them back to their compact desktop width, with the
     same clearly visible drawn border as the PGS fields (iOS's native
     border is nearly invisible at rest) — amber to match the section. */
  .practice-ladder-num{
    width: 2.5em !important;             /* 3 digits max (e.g. 480) — was 4em, far too wide */
    padding: 5px 6px !important;
    /* The page-wide <=1000px reset zeroes horizontal margins; restore the gap to
       the surrounding label text, same as the misery fields. */
    margin-left: 6px !important;
    margin-right: 6px !important;
    -webkit-appearance: none;
    appearance: none;
    border: 1.5px solid #fb923c;
    border-radius: 4px;
    background: #fff;
  }
  /* LEVELS OF MISERY number fields (GOAL / STARTING TEMPO / KICK step): same
     drawn-border treatment as the ladder fields, pink to match the section. */
  .misery-num{
    width: 2.5em !important;             /* 3 digits max (e.g. 480) — was 4em, far too wide */
    padding: 5px 6px !important;
    /* The page-wide <=1000px reset zeroes horizontal margins; restore the gap to
       the surrounding label text (the field sits in a flex .misery-line, so this
       margin is what separates it from the words before and after). */
    margin-left: 6px !important;
    margin-right: 6px !important;
    -webkit-appearance: none;
    appearance: none;
    border: 1.5px solid #f472b6;
    border-radius: 4px;
    background: #fff;
  }
  /* "minutes & seconds / measures" unit dropdown: text padding back, plus a
     clear gap from the number field to its left. */
  .practice-ladder-unit{ margin-left: 8px !important; padding-left: 8px !important; padding-right: 8px !important; }
  /* Ladder status readout ("120 → 160 BPM…"): restore its side padding. */
  .practice-ladder-status{ padding-left: 12px !important; padding-right: 12px !important; }
  /* Practice Tools "Show settings & saved routines" toggle (Hands-Free Ladder +
     Daily Practice + Trouble Spot Rehab + Interleaved + Seven Levels): the strip
     zeroes the pill's L/R padding — restore it so the text isn't cramped. */
  .pt-disclosure > summary{ padding-left: 18px !important; padding-right: 18px !important; }
  /* ENTER YOUR OWN RHYTHM → MY RHYTHMS box: restore the box's side padding,
     the "Save the current rhythm…" button's text padding (.prog-add-btn —
     also covers "+ Save current setup…" in MY SETUPS), and the preset rows'
     padding inside the box. */
  .prog-presets-block{ padding-left: 14px !important; padding-right: 14px !important; }
  .prog-add-btn{ padding-left: 10px !important; padding-right: 10px !important; }
  .prog-presets-block .prog-presets-row{ padding-left: 8px !important; padding-right: 4px !important; }
  .prog-presets-block .prog-presets-icon{ padding-left: 8px !important; padding-right: 8px !important; }
  /* PLAYBACK CONTROLS box: restore its side padding + the count-in row's
     indent. */
  .prog-controls{ padding-left: 18px !important; padding-right: 18px !important; }
  .metro-advanced .prog-countin-row{ margin-left: 15px !important; }
  /* Its two volume sliders: drawn track + thumb in the section's teal
     (iOS leaves the native thumb white even with accent-color). */
  .prog-controls input[type="range"]{
    -webkit-appearance: none; appearance: none;
    height: 22px; background: transparent;
  }
  .prog-controls input[type="range"]::-webkit-slider-runnable-track{
    height: 6px; border-radius: 3px; background: #99f6e4;
  }
  .prog-controls input[type="range"]::-webkit-slider-thumb{
    -webkit-appearance: none;
    width: 22px; height: 22px; border-radius: 50%;
    background: #0d9488; border: none;
    margin-top: -8px;
    box-shadow: 0 1px 3px rgba(0,0,0,.3);
  }
  /* Measure editor (ENTER YOUR OWN RHYTHM): restore the editor box's side
     padding (insets Measure #, Measure being constructed, Enter time
     signature, Add a note…), the measure tabs' / dashed "+ Add a measure"
     tab's padding, and the Duplicate / Delete buttons' padding. */
  /* BUILD A RHYTHM HERE toggle bar: restore its L/R padding so the ▸ caret
     isn't flush against the bar's left edge. */
  #prog-build-details > summary{ padding-left: 16px !important; padding-right: 16px !important; }
  .prog-editor{ padding-left: 12px !important; padding-right: 12px !important; }
  .prog-tab{ padding-left: 11px !important; padding-right: 11px !important; }
  .prog-icon-btn{ padding-left: 9px !important; padding-right: 9px !important; }
  /* Time-signature stack: keep both numbers centered (the bottom field is
     a <select>, which needs text-align-last for centering on iOS). */
  .prog-ts-stack .prog-num,
  .prog-ts-stack .prog-den{ padding-left: 4px !important; padding-right: 4px !important; }
  .prog-ts-stack .prog-den{ text-align: center; text-align-last: center; }
  /* Entered-notes box (orange): restore the side padding so the "Empty —
     click a note value above…" message (and note chips) clear the border. */
  .prog-entered{ padding-left: 8px !important; padding-right: 8px !important; }
  /* BUILD SPECIAL FEATURES builders (Build a triplet / polyrhythm / custom
     polyrhythm — all share .prog-tuplet-builder): restore the box's side
     padding (insets the caret titles + every row inside), the
     Duplet…Septuplet type buttons, the "eighth notes" base select, the
     poly number fields, the Top/Bottom voice buttons, and the
     "Add … to measure" CTAs. Mirrors the phone sheet's restore list. */
  .prog-tuplet-builder{ padding-left: 12px !important; padding-right: 12px !important; }
  .prog-tup-type-btn{ padding-left: 10px !important; padding-right: 10px !important; }
  .prog-tup-base-select{ padding-left: 8px !important; padding-right: 8px !important; }
  .prog-poly-num{ padding-left: 4px !important; padding-right: 4px !important; }
  .prog-cpoly-voice-btn{ padding-left: 10px !important; padding-right: 10px !important; }
  .prog-btn{ padding-left: 14px !important; padding-right: 14px !important; }
  /* How-To guide + FAQ accordions (shared .acc-head/.acc-body machinery):
     the strip zeroed the heads' 1.7em caret gutter — text sat on the ▸ —
     and the bodies' standard list indents. */
  .acc-head{ padding-left: 1.7em !important; }
  .acc-body ul, .acc-body ol{ padding-left: 40px !important; padding-right: 6px !important; }
  /* TUNER & WAVEFORM card: center it in the section and restore the card's
     side padding — that's the left/right inset for every text line, the
     Baroque/European chip edges, the ▶ play glyph, the volume row, and the
     whole CUSTOM PITCH area. Then the controls' own internal paddings. */
  #desktop-tuner{
    margin-left: auto !important; margin-right: auto !important;
    padding-left: 16px !important; padding-right: 16px !important;
    /* wider than the desktop 330px so the TUNING PITCH dropdown's longest
       items ("6th string — D2 (Drop D)" etc.) fit without wrapping */
    max-width: 440px;
  }
  .dt-chip{ padding-left: 4px !important; padding-right: 4px !important; }
  .dt-wave-btn{ padding-left: 4px !important; padding-right: 4px !important; }
  .dt-select{ padding-left: 10px !important; padding-right: 10px !important; }
  .dt-num{ padding-left: 10px !important; padding-right: 10px !important; }
  .wave-toggle-glyph{ margin-right: 6px !important; }
  /* MORE FREE TOOLS: "Keep Going" pill text padding, tool-card side
     padding, and the "Free" badge (all four sides — its 3px top/bottom
     was minimal even before the strip ate the sides). */
  .more-tools-eyebrow{ padding-left: 12px !important; padding-right: 12px !important; }
  .tool-card{ padding-left: 24px !important; padding-right: 24px !important; }
  .tool-free{ padding: 4px 10px !important; }
  /* The black #content "stage" spans the full screen width here, so its
     24px rounded corners exposed little points of the gray body at the
     screen edges — square them off (the phone UI does the same). Its 75px
     bottom margin also showed as a blank full-width gray bar above the
     dark support band — close that gap too. */
  #content{ border-radius: 0 !important; margin-bottom: 0 !important; }
  /* Bottom Help & Support bar (the copy after MORE FREE TOOLS): hug one
     line — text + both buttons side by side, box no wider than needed.
     The top bar keeps its 560px. */
  #metro-support-bottom{
    width: fit-content;
    max-width: calc(100% - 24px);
    flex-wrap: nowrap;
    white-space: nowrap;
    /* tighter box: the bar hugs its content, so trimming padding + gaps
       narrows the whole card */
    padding-left: 12px !important;
    padding-right: 12px !important;
    gap: 8px 10px;
  }
  #metro-support-bottom .metro-support-btn{ padding-left: 12px !important; padding-right: 12px !important; }
  /* The band around the bottom bar: dark like the footer below it, with a
     narrower centered gray panel inside — so the gray no longer runs from
     edge to edge between the black stage and the footer. */
  .metro-support-band{ background: #111827; padding: 26px 0 !important; }
  .metro-support-band-inner{
    max-width: 620px;
    /* auto margins need !important here too — the strip zeroes them */
    margin-left: auto !important;
    margin-right: auto !important;
    background: #e5e7eb;
    border-radius: 14px;
    padding: 22px 16px !important;
  }
  .metro-support-band #metro-support-bottom{ margin: 0 auto !important; }
  /* Footer brand icon (musical notes next to "Douglas Niedt"): restore the
     .5rem padding so the orange gradient reads as the rounded rectangle it
     is on desktop, not a sliver hugging the icon. */
  .footer-brand-icon-wrap{ padding-left: .5rem !important; padding-right: .5rem !important; }
  /* Footer links: the ↗ arrows lost their gap from the link text. */
  .footer-link .icon-svg-tiny{ margin-left: .25rem !important; }
  /* SPECIAL FEATURES cards (TremoloMASTER, All-Access Pass): restore the
     1rem card padding — text was flush left, arrows flush right. */
  .footer-special-card{ padding-left: 1rem !important; padding-right: 1rem !important; }
  /* "Zero visitor tracking" / "Sustainable energy website" badges: when the
     text wraps to two lines, keep the green dot on the FIRST line (it was
     vertically centered between the lines), and restore its gap. */
  .footer-status{ align-items: flex-start; }
  .footer-status-dot{
    flex: 0 0 auto;
    margin-right: .5rem !important;
    margin-top: 3px; /* optically centers the 12px dot on the first text line */
  }
  /* Footer: restore the container's side padding. */
  .footer .container{ padding-left: 1.5rem !important; padding-right: 1.5rem !important; }
  /* Tuner volume slider: cap its length — it filled the whole card row —
     and draw the track + thumb in the tuner's blue (iOS keeps the native
     thumb white even with accent-color, same as the other sliders). */
  .dt-vol-slider{
    max-width: 200px;
    -webkit-appearance: none; appearance: none;
    height: 22px; background: transparent;
  }
  .dt-vol-slider::-webkit-slider-runnable-track{
    height: 6px; border-radius: 3px; background: #bfdbfe;
  }
  .dt-vol-slider::-webkit-slider-thumb{
    -webkit-appearance: none;
    width: 22px; height: 22px; border-radius: 50%;
    background: #1e3a8a; border: none;
    margin-top: -8px;
    box-shadow: 0 1px 3px rgba(0,0,0,.3);
  }
}
/* Touch devices (any size): hide the jQuery UI spinner arrows on the BPM
   field — the <=1000px strip breaks their layout, and finger-sized targets
   that small aren't usable anyway. Desktop pointers keep them. */
@media (pointer: coarse){
  #metro-tempo .ui-spinner .ui-spinner-button{ display: none; }
  /* Keyboard-shortcut hint under START — meaningless on a touch screen. */
  #metro-kbd-hint{ display: none; }
}


    a.button3{
display:inline-block;
padding:0.3em 1.2em;
margin:0 0.3em 0.3em 0;
border-radius:2em;
box-sizing: border-box;
text-decoration:none;
font-family: var(--font-ui);
font-weight:300;
color:#FFFFFF;
background-color:#ff0000;
text-align:center;
transition: all 0.2s;
}
a.button3:hover{background-color:blue;
}
@media all and (max-width:30em){
a.button3{
display:block;
margin:0.2em auto;
}
}




aside{
 position: fixed;
 top: 50px;
 right: 10px;
 background: #d3d3d3;
 border-radius: 10px;
 width: calc(calc(calc(100% - 1000px) / 2) - 10px);
 padding: 12px;
 box-sizing: border-box;
 min-width: 220px;
 font-size: 88%;
 max-height: calc(100vh - 100px);
 overflow: auto;
}
div.aside-handle{
    display: none;
}
a.buttoncircle svg{
    max-width: 90%;
}


@media screen and (max-width: 1280px){
    aside{
        width: 20vw;
        right: 5vw;
        box-shadow: 0 10px 50px;
        transform: translateX(300px);
        opacity: 0;
        transition: all .5s ease-in-out;
    }
    aside.shown{
        opacity: 1;
        transform: translateX(0);
    }
    div.aside-handle{
        display: block;
        position: fixed;
        top: 50px;
        background: #fff;
        box-shadow: 0 4px 8px;
        border-radius: 4px;
        background: #fff;
        
        width: 3vw;
        height: 3vw;
        right: 1vw;
        min-width: 25px;
        min-height: 25px;
    }
    div.aside-handle svg{
        width: auto;
        height: 2vw;
        position: absolute;
        left: 0;
        top: 0;
        width: 3vw;
        margin-top: 0.5vw;
        cursor: pointer;
        opacity: 0;
        transform: translateX(-3vw);
        transition: all .5s ease-in-out;
        min-width: 25px;
        min-height: 15px;
    }
    div.aside-handle svg:first-child{
        opacity: 1;
        transform: translateX(0);
    }
    div.aside-handle.active svg:first-child{
        opacity: 0;
        transform: translateX(-3vw);
    }
    div.aside-handle.active svg:nth-child(2){
        opacity: 1;
        transform: translateX(0);
    }
}
@media screen and (max-width: 830px){
    div.aside-handle svg{
        margin-top: 5px;
    }
}
@media screen and (max-width: 635px){
    aside.shown{
        right: calc(1vw + 30px);
    }
}




.title {
  position: relative;
  text-align: center;
  transform: translateZ(0);
  transform-style: preserve-3d;
}

.title .text {
  font-family: sans-serif;
  font-weight: 400;
  font-size: calc(30vw / var(--word-total) );
  line-height: 1.3;
}

.title .write .word {
  color: hsl(0, 0%, 80%);
  text-shadow: 0 0 0.1em currentColor;
  transform-style: preserve-3d;
  -webkit-animation: write linear both;
          animation: write linear both;
}

.title .laser {
  position: absolute;
  top: 0;
  left: 0;
  filter: blur(3px) contrast(7);
  pointer-events: none;
}

.title .laser .word {
  display: inline-block;
}

.title .laser .word {
  color: hsl(120, 100%, 50%);
  text-shadow: 0 0 0.1em currentColor;
  transform: translateZ(5px);
  
  /* Stack on a recolor animation */
  -webkit-animation: laser linear both, recolor linear both;
          animation: laser linear both, recolor linear both;
}

.title .write .word,
.title .laser .word {
  -webkit-animation-duration: 4s;
          animation-duration: 4s;
  -webkit-animation-delay: calc(0.3s + var(--word-index) * 160ms);
          animation-delay: calc(0.3s + var(--word-index) * 160ms);
  -webkit-animation-iteration-count: 1;
          animation-iteration-count: 1;
}

.title:hover .word,
.title:hover .word {
  -webkit-animation-play-state: none;
          animation-play-state: none;
}


@media screen and (max-width: 768px){
    #content{
        margin-top: 20px !important;
    }
    #content > div{
        margin-top: 0 !important;
    }
    #metro-lcol #volume_control{
        margin-left: 0 !important;
    }
    #metronome{
        margin-top: 50px !important;
    }
    #metronome > div{
        display: block !important;
    }
}
/* .title .text .word,
.title .text .word::before {
  animation-play-state: none;
  animation-delay: -0.4s;
} */

@-webkit-keyframes recolor {
  from, 30% { color: hsl(0, 100%, 70%) }
  50% { color: hsl(120, 100%, 70%) }
  70%, to { color: hsl(240, 100%, 70%) }
}

@keyframes recolor {
  from, 30% { color: hsl(0, 100%, 70%) }
  50% { color: hsl(120, 100%, 70%) }
  70%, to { color: hsl(240, 100%, 70%) }
}

@-webkit-keyframes write {
  from, 30% { -webkit-clip-path: polygon(-20% 0%, -10% 0%, -10% 100%, -20% 100%); clip-path: polygon(-20% 0%, -10% 0%, -10% 100%, -20% 100%) }
  70%, to { -webkit-clip-path: polygon(-20% 0%, 120% 0%, 120% 100%, -20% 100%); clip-path: polygon(-20% 0%, 120% 0%, 120% 100%, -20% 100%) }
}

@keyframes write {vol
  from, 30% { -webkit-clip-path: polygon(-20% 0%, -10% 0%, -10% 100%, -20% 100%); clip-path: polygon(-20% 0%, -10% 0%, -10% 100%, -20% 100%) }
  70%, to { -webkit-clip-path: polygon(-20% 0%, 120% 0%, 120% 100%, -20% 100%); clip-path: polygon(-20% 0%, 120% 0%, 120% 100%, -20% 100%) }
}

@-webkit-keyframes laser {
  from, 30% { -webkit-clip-path: polygon(-20% 0%, -10% 0%, -10% 100%, -20% 100%); clip-path: polygon(-20% 0%, -10% 0%, -10% 100%, -20% 100%) }
  70%, to { -webkit-clip-path: polygon(110% 0%, 120% 0%, 120% 100%, 110% 100%); clip-path: polygon(110% 0%, 120% 0%, 120% 100%, 110% 100%) }
}

@keyframes laser {
  from, 30% { -webkit-clip-path: polygon(-20% 0%, -10% 0%, -10% 100%, -20% 100%); clip-path: polygon(-20% 0%, -10% 0%, -10% 100%, -20% 100%) }
  70%, to { -webkit-clip-path: polygon(110% 0%, 120% 0%, 120% 100%, 110% 100%); clip-path: polygon(110% 0%, 120% 0%, 120% 100%, 110% 100%) }
}


/* ============================================================
   HOMEPAGE TYPOGRAPHY ADOPTED - DESKTOP ONLY
   Matches the douglasniedt.com homepage: one workhorse face
   for body, headings, and all UI controls. Scoped to desktop
   via min-width:1001px so the mobile typography stays exactly
   as-is (treated as independent).
   --font-ui is redefined per-viewport: mobile keeps its original
   fallback (Roboto was never loaded so it already resolved to the
   native sans); desktop resolves to Geist.
   Dark canvas, locked hero (.outline/.orbs/.glow), nav branding
   and Opus notation are NOT touched.
   ============================================================ */
:root{
  --font-ui: 'Roboto', sans-serif;            /* mobile/default: original behavior preserved */
}
@media screen and (min-width: 1001px){
  :root{
    --font-ui: "Geist Variable", system-ui, -apple-system, "Segoe UI", Arial, sans-serif;
  }
  html, body, button, input, select, textarea{
    font-family: var(--font-ui) !important;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
  }
}


  /* ===== Theme tokens (from homepage globals.css) ===== */
  :root{
    --background:#ffffff; --foreground:#252525; --border:#eaeaea; --ring:#b5b5b5;
    --primary:#262626; --primary-foreground:#fafafa; --secondary:#f7f7f7; --muted:#f3f3f3;
    --amber-300:#fbbf24; --orange-500:#ea580c;
    --hdr-bg:#4b5563; --hdr-border:#374151; --hdr-text:#ffffff;
    --xmas-bg:#dc2626; --xmas-bg-hover:#b91c1c;
    --mega-bg:#ffffff; --mega-border:#f0f0f0; --mega-accent:#f59e0b;
  }

  /* ===== Desktop header (banner + sticky nav + mega menu) ===== */
  .hdr{position:relative;z-index:50;background:#000;text-align:left}
  .hdr-banner{background:#000}
  .hdr-banner-img{display:block;margin:0 auto;max-width:1000px;width:100%;height:auto}
  .hdr-bar{position:sticky;top:0;z-index:40;background:var(--hdr-bg);border-bottom:1px solid var(--hdr-border);box-shadow:0 4px 10px rgba(0,0,0,.25)}
  .hdr-container{max-width:1400px;margin:0 auto;padding:0 16px;display:flex;align-items:center;justify-content:space-between}
  .nav-desktop{display:flex;align-items:center;justify-content:center;width:100%}
  .nav-btn{display:flex;align-items:center;gap:8px;padding:16px 24px;font-weight:700;font-size:14px;color:var(--hdr-text);text-decoration:none;background:transparent;border:none;cursor:pointer;border-right:1px solid var(--hdr-border);font-family:var(--font-ui)}
  /* Override the page's global a:link/a:visited {color:blue} so nav text stays white */
  .nav-btn:link, .nav-btn:visited, .nav-btn:hover, .nav-btn:active{color:var(--hdr-text)}
  .nav-btn:hover{background:#6b7280}
  /* Keep the trigger label on one line — wrapped+centered text left the chev
     floating far from the short second line. */
  .nav-btn.-trigger{white-space:nowrap}
  .nav-btn.-trigger .chev{margin-left:2px;font-size:26px;line-height:1;transition:transform .15s ease}
  .nav-btn[aria-expanded="true"] .chev{transform:rotate(180deg)}
  .nav-btn.-xmas{background:var(--xmas-bg)}
  .nav-btn.-xmas:hover{background:var(--xmas-bg-hover)}
  /* display:flex/block above defeats the [hidden] attribute the seasonal
     (Christmas) logic relies on — force hidden to win. */
  .nav-btn[hidden], .mob-nav-link[hidden]{display:none !important}
  .ml{margin-left:4px}
  .pill-new{margin-left:8px;display:inline-flex;align-items:center;gap:6px;padding:2px 6px;border-radius:999px;text-transform:uppercase;font-size:10px;font-weight:800;background:var(--amber-300);color:#000}
  .icon-16{width:16px;height:16px;display:inline-block;vertical-align:middle}
  .bolt-emoji{display:inline-flex;align-items:center;justify-content:center;font-size:16px;line-height:1;color:var(--orange-500)}
  .nav-btn .highlight-amber{color:var(--amber-300);font-weight:700}
  .nav-btn .highlight-gold{color:var(--orange-500);font-weight:700}

  /* Mega menu */
  .mega{position:absolute;left:0;top:100%;width:100vw;background:var(--mega-bg);border-top:4px solid var(--mega-accent);box-shadow:0 12px 30px rgba(0,0,0,.25);z-index:50;text-align:left}
  .mega-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:24px;padding:24px;max-width:1400px;margin:0 auto}
  .mega-sec-title{display:flex;align-items:center;gap:8px;font-size:18px;font-weight:800;color:#1f2937;border-bottom:1px solid var(--mega-border);padding-bottom:8px;margin:0 0 12px}
  .mega-link{display:block;text-decoration:none;border-radius:10px;padding:8px}
  .mega-link .title{font-weight:700;color:#1f2937;text-align:left;position:static;transform:none}
  .mega-link .desc{font-size:13px;color:#6b7280;margin-top:4px;text-align:left}
  .mega-link:hover .title{color:#b91c1c}
  .mega-link.-featured{background:linear-gradient(90deg,#faf5ff,#eff6ff);border:1px solid #e9d5ff}
  .mega-link.-featured .title{color:#6b21a8}
  .mega-badge{margin-left:8px;font-size:11px;background:#7c3aed;color:#fff;padding:2px 8px;border-radius:999px}
  .mega-link.-special .title{color:#ea580c;font-family:ui-serif,Georgia,"Times New Roman",serif;letter-spacing:1px}
  .mega-link.-special:hover .title{color:#c2410c}
  .mega-backdrop{position:fixed;inset:0;z-index:30;background:transparent}

  /* Desktop-only header: mobile keeps the existing #mob-hamburger */
  @media screen and (max-width:768px){ .hdr{display:none !important;} }
  /* Hide the legacy desktop banner + text navs (replaced by .hdr) and the "Need more tools" aside */
  .logodiv, #nav, #nav1, .aside-handle, aside { display:none !important; }

  /* ── iPad/tablet (769–1000px): the page-wide mobile reset near the top of this
     file (*:not(.radial-slider *){margin/padding-left/right:0 !important}) strips
     the header's horizontal spacing — nav buttons butt together and the mega
     menu's grid, links, and POPULAR badge lose their padding. Re-assert them
     (!important + later source outranks the reset), tighten the tabs so the row
     wraps into clean centered lines, and drop the mega to 2 columns. ── */
  @media screen and (min-width:769px) and (max-width:1000px){
    .nav-desktop{flex-wrap:wrap;justify-content:center}
    .nav-btn{padding:10px 14px !important;font-size:13px}
    .nav-btn.-trigger .chev{font-size:20px}
    .hdr-container{padding-left:12px !important;padding-right:12px !important}
    /* Mega menu: emulate the Barre Chord Wizard's tablet menu — three columns,
       item names only (descriptions hidden). Everything fits on screen, which
       matters because the menu closes on page scroll: a taller-than-viewport
       menu would vanish the moment the user tried to scroll to its bottom. */
    .mega-grid{grid-template-columns:repeat(3,1fr);gap:0 28px;padding:16px 20px !important;align-items:start}
    .mega-link .desc{display:none}
    .mega-link{padding:6px 8px !important}
    .mega-badge{margin-left:8px !important;padding:2px 8px !important}
    /* Safety net: if it ever is taller than the screen, scroll INSIDE the
       menu (internal scrolling doesn't fire the window scroll that closes it) */
    .mega{max-height:calc(100vh - 140px);overflow-y:auto}
  }

  /* ===== Footer (from homepage) ===== */
  .footer{background-color:#111827;color:#fff;padding:4rem 0;text-align:left}
  .footer .container{max-width:76rem;margin:0 auto;padding:0 1.5rem}
  .footer-grid{display:grid;grid-template-columns:1fr;gap:2rem;margin-bottom:3rem}
  @media (min-width:768px){ .footer-grid{grid-template-columns:repeat(2,minmax(0,1fr))} }
  @media (min-width:1024px){ .footer-grid{grid-template-columns:repeat(4,minmax(0,1fr))} }
  .footer-brand-header{display:flex;align-items:center;gap:.75rem;margin-bottom:1.5rem}
  .footer-brand-icon-wrap{padding:.5rem;border-radius:.75rem;background:linear-gradient(to bottom right,#f97316,#dc2626);display:inline-flex;align-items:center;justify-content:center}
  .footer-brand-name{margin:0;font-size:1.25rem;font-weight:700}
  .footer-brand-tagline{margin:0;font-size:.875rem;color:#fb923c}
  .footer-brand-text{margin:0 0 1.5rem;font-size:.875rem;line-height:1.7;color:#9ca3af}
  .footer-brand-meta{display:flex;align-items:center;font-size:.875rem;color:#9ca3af}
  .footer-column{font-size:.875rem}
  .footer-heading{margin:0 0 1.5rem;font-size:1.125rem;font-weight:600}
  .footer-link-list{list-style:none;margin:0;padding:0}
  .footer-link-list li + li{margin-top:.75rem}
  .footer-link{display:inline-flex;align-items:center;font-size:.875rem;color:#9ca3af;text-decoration:none;transition:color 150ms ease}
  /* Override the page's global a:link/a:visited {color:blue} so footer links read white */
  .footer-link:link, .footer-link:visited{color:#ffffff}
  .footer-link:hover{color:#fb923c}
  .footer-link .icon-svg-tiny{margin-left:.25rem}
  .footer-special-list{display:flex;flex-direction:column;gap:1rem}
  .footer-special-card{display:block;border-radius:.75rem;padding:1rem;border-width:1px;border-style:solid;text-decoration:none;transition:background-color 150ms ease}
  .footer-special-card--purple{background-color:rgba(88,28,135,.3);border-color:rgba(126,34,206,.3)}
  .footer-special-card--purple:hover{background-color:rgba(88,28,135,.4)}
  .footer-special-card--green{background-color:rgba(20,83,45,.3);border-color:rgba(21,128,61,.3)}
  .footer-special-card--green:hover{background-color:rgba(20,83,45,.4)}
  .footer-special-header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:.5rem}
  .footer-special-title{margin:0;font-size:.95rem;font-weight:600}
  .footer-special-title--purple{color:#e9d5ff}
  .footer-special-title--green{color:#bbf7d0}
  .footer-special-icon--purple{margin-top:.25rem;color:rgba(233,213,255,.8)}
  .footer-special-icon--green{margin-top:.25rem;color:rgba(187,247,208,.8)}
  .footer-special-text{margin:0;font-size:.875rem;color:#9ca3af}
  .footer-bottom{border-top:1px solid #1f2937;padding-top:2rem;display:flex;flex-direction:column;gap:1rem;font-size:.875rem;color:#9ca3af}
  @media (min-width:768px){ .footer-bottom{flex-direction:row;align-items:center;justify-content:space-between} }
  .footer-bottom-left{text-align:center}
  @media (min-width:768px){ .footer-bottom-left{text-align:left} }
  .footer-bottom-right{display:flex;flex-direction:column;align-items:center;gap:.5rem}
  @media (min-width:768px){ .footer-bottom-right{flex-direction:row;gap:1.5rem} }
  .footer-status{display:flex;align-items:center}
  .footer-status-dot{width:.75rem;height:.75rem;border-radius:999px;background-color:#22c55e;margin-right:.5rem}
  .footer-co2{white-space:nowrap}
  .footer .icon-svg{width:1.5rem;height:1.5rem}
  .footer .icon-svg-small{width:1rem;height:1rem;margin-right:.5rem}
  .footer .icon-svg-tiny{width:.75rem;height:.75rem}


  .metro-intro{max-width:760px;margin:0 auto;padding:8px 24px 4px;text-align:center;font-family:var(--font-ui)}
  .metro-intro-badge{display:inline-block;background:linear-gradient(to right,#ea580c,#dc2626);color:#fff;padding:6px 14px;border-radius:6px;font-size:13px;font-weight:700;letter-spacing:.04em;margin-bottom:14px;padding-left:14px !important;padding-right:14px !important}
  /* The Practice Tools announcement chip carries a "NEW" pill (crimson-pink,
     matching the misery game's card) in place of the usual checkmark. It's far
     longer than the other chips, so it gets its own centered full-width row. */
  .metro-intro-chips li.metro-intro-chip-new{flex:0 0 100%;justify-content:center;align-items:baseline;gap:8px;margin-top:24px;color:#9d174d;font-weight:600;font-size:14px;line-height:1.55}
  .metro-intro-chips li.metro-intro-chip-new::before{content:none}
  .metro-intro-chip-new .metro-intro-new-text{max-width:680px;text-align:left}
  /* NEW pill now lives at the start of the text block (before "PRACTICE TOOLS:"),
     so its left edge lines up with the checkmarks in the tool list below. The
     !important on margin-right survives the <=1000px padding/margin strip on iPad,
     which would otherwise zero the gap and let "PRACTICE TOOLS" butt the pill. */
  .metro-intro-chip-new .metro-intro-new-tag{display:inline-block;vertical-align:baseline;margin-right:8px !important}
  .metro-intro-chip-new .metro-intro-new-text strong{font-weight:800;letter-spacing:.02em}
  .metro-intro-chip-new .metro-intro-tool-list{list-style:none;margin:5px 0 0;padding:0;display:flex;flex-direction:column;align-items:flex-start;gap:4px}
  .metro-intro-chips .metro-intro-tool-list li{display:flex;align-items:baseline;gap:7px;font-size:14px;font-weight:600;color:#9d174d}
  .metro-intro-chips .metro-intro-tool-list li::before{content:"\2713";color:#db2777;font-weight:800;font-size:13px;line-height:1}
  .metro-intro-new-tag{background:linear-gradient(to right,#db2777,#be185d);color:#fff;font-size:11px;font-weight:800;letter-spacing:.08em;padding:3px 9px;border-radius:999px;line-height:1.2}
  .metro-intro-title{margin:0 0 14px;color:#111827;font-weight:800;font-size:clamp(24px,2.4vw,34px);line-height:1.2}
  .metro-intro-lede{margin:0 0 30px;color:#92400e;font-weight:700;font-size:18px}
  .metro-intro-copy{margin:0 auto 18px;max-width:680px;color:#374151;font-size:16px;line-height:1.6}
  .metro-intro-chips{list-style:none;margin:0 0 34px;padding:0;display:flex;flex-wrap:wrap;justify-content:center;gap:8px 22px}
  .metro-intro-chips li{display:inline-flex;align-items:center;gap:6px;color:#374151;font-size:14px;font-weight:600}
  .metro-intro-chips li::before{content:"\2713";color:#ea580c;font-weight:800;font-size:13px;line-height:1}
  .metro-intro-note{margin:6px 0 0;color:#6b7280;font-size:14px}
  .metro-intro-note a{color:#ea580c;font-weight:600}


  /* Guide / FAQ card */
  .metro-guide{box-sizing:border-box;border-radius:14px;margin-left:auto;margin-right:auto}
  .metro-guide > h2{font-family:var(--font-ui);text-align:left;color:#111827;font-weight:800;font-size:21px;line-height:1.25;margin:6px 0 16px}
  .metro-guide h3{font-family:var(--font-ui);color:#9a3412;font-weight:700;font-size:19px;line-height:1.3;margin:28px 0 8px;text-align:left}
  .metro-guide a{color:#ea580c;font-weight:600}
  @media screen and (min-width:769px){
    .metro-guide{padding-left:56px !important;padding-right:56px !important}
    .metro-guide > p,.metro-guide > h2,.metro-guide > h3{margin-left:0 !important;margin-right:0 !important}
    .metro-guide ul,.metro-guide ol{margin-left:0 !important;margin-right:0 !important;padding-left:24px;color:#374151;line-height:1.6}
    .metro-guide li{margin-top:10px}
  }



  .metro-advanced{margin-top:84px}
  /* Tuner sits in a white card (matching the FAQ card above) so the brass
     plate's bevels + drop shadow read against the dark page stage instead of
     dissolving into the black. The brass #desktop-tuner panel (max-width:620px,
     margin auto) centers within it. Desktop-only — hidden ≤768px below. */
  .metro-tuner-section{
    box-sizing:border-box;
    width:100%;
    max-width:952px;
    margin:50px auto 0;
    padding:28px 20px 40px;
    background:#fff;
    border:1px #CDCDCD solid;
    border-radius:14px;
    box-shadow:0 1px 0 rgba(50,50,50,.5);
  }
  .metro-section-title{font-family:var(--font-ui);font-weight:800;color:#111827;font-size:22px;line-height:1.2;margin:0 0 16px;text-align:center}
  /* stretch (not start) so the two top cards share a row height — lets the
     shorter PLAY–GO SILENT card grow down to match the taller POLYRHYTHM card. */
  .metro-adv-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px;align-items:stretch}
  .metro-adv-grid > .prog-rhythm-block{grid-column:1 / -1}
  @media screen and (max-width:768px){
    .metro-advanced, .metro-tuner-section{display:none !important;}
  }


  /* Advanced Features + Tuner blocks as light cards (sections are desktop-only) */
  /* Fill the (now stretched) left column so the card bottom lines up with the
     taller POLYRHYTHM card on the right. The column holds only this card at
     runtime (Ladder is relocated below), so growing it has no side effects. */
  /* PLAY–GO SILENT no longer flex-grows: ENTER YOUR OWN RHYTHM now sits below it
     in the left column, so PGS stays at its natural height instead of stretching. */
  .metro-advanced .play-go-silent-block,
  .metro-advanced .polyrhythm-block,
  .metro-advanced .prog-rhythm-block{
    background:#ffffff;
    border:1px solid #f0e6d6;
    border-radius:14px;
    padding:20px 22px;
    box-shadow:0 6px 20px rgba(0,0,0,.06);
    box-sizing:border-box;
  }
  /* Tuner: a brass device panel (lighter "satin brass" variation of the console)
     with beveled/shaded edges, so it reads as a related instrument. */
  .metro-tuner-section #desktop-tuner{
    max-width:620px; margin:0 auto;
    box-sizing:border-box;
    padding:24px 28px;
    border-radius:18px;
    border:1px solid #9c7a22;
    background:
      linear-gradient(180deg, #f1dda3 0%, #e1c277 50%, #efddab 100%);
    box-shadow:
      inset 0 2px 3px rgba(255,255,255,.55),
      inset 0 -4px 8px rgba(0,0,0,.22),
      0 18px 40px rgba(0,0,0,.30);
  }
  /* Re-tone the tuner's light-grey text so it reads on brass */
  .metro-tuner-section #desktop-tuner .dt-heading{color:#2c2206;}
  .metro-tuner-section #desktop-tuner .dt-label{color:#5a4612;}
  .metro-tuner-section #desktop-tuner .dt-hint,
  .metro-tuner-section #desktop-tuner .dt-presets-label{color:#6d561e;}
  .metro-tuner-section #desktop-tuner .dt-unit{color:#7a6420;}
  .metro-tuner-section #desktop-tuner .dt-vol-icon{color:#3a2c08;}

  /* Brass console plate — desktop only (mobile keeps the bare beat panel) */
  @media screen and (min-width:769px){
    #metronome{
      box-sizing:border-box;
      margin:12px auto 22px;
      padding:26px 28px 44px !important;
      border-radius:18px;
      border:1px solid #7d5f18;
      background:
        repeating-linear-gradient(90deg, rgba(255,255,255,.045) 0 2px, rgba(0,0,0,.04) 2px 4px),
        linear-gradient(180deg, #e8cd86 0%, #d3ad59 16%, #be9436 50%, #d3ad59 84%, #e8cd86 100%);
      box-shadow:
        inset 0 2px 3px rgba(255,255,255,.5),
        inset 0 -4px 8px rgba(0,0,0,.32),
        0 20px 44px rgba(0,0,0,.42);
    }
    /* Engraved labels on the brass (advanced/tuner sections keep their colors) */
    #metronome legend, #metronome legend strong,
    #metronome .metro-label,
    #metronome .subdivide-title,
    #metronome .voice-count-title{
      color:#2c2206 !important;
      text-shadow:0 1px 0 rgba(255,255,255,.28);
    }
    /* Knob no longer shares its column with the tuner — center it */
    #metronome .metro-right-col{align-items:center;justify-content:center;}
  }


  .prog-controls{margin:8px 0 16px;padding:14px 16px;border:1px solid #e6e8eb;border-radius:10px;background:#fafbfc;}
  .prog-subhead{font-weight:800;font-size:13px;letter-spacing:.05em;text-transform:uppercase;color:#0d9488;margin:0 0 10px;}
  /* Fill meter + "add more notes" message now sit above the entered/tuplet notes */
  .prog-entered-block > .prog-fill{display:flex;width:100%;margin:0 0 8px 0;}
  .prog-entered-actions{margin-top:10px;}


  .metro-advanced label{margin-bottom:16px;}
  .metro-advanced .prog-rhythm-hint p{margin-bottom:12px;}
  .metro-advanced .play-go-silent-title,
  .metro-advanced .polyrhythm-title,
  .metro-advanced .prog-rhythm-title{margin-bottom:16px;}
  .metro-advanced .prog-controls{padding:18px 18px 8px;}
  .metro-advanced .prog-vol-row{margin:6px 0 22px;}
  .metro-advanced .prog-ts-block{margin-bottom:20px;}
  .metro-advanced .prog-countin-row{margin:6px 0 18px 15px;}
  .metro-advanced .prog-addrow{margin-top:16px;}
  .metro-advanced .prog-addrow-hint{margin-top:12px;}
  .metro-advanced .prog-tabs-row{margin-bottom:18px;}
  .metro-advanced .prog-editor-head{margin-bottom:18px;}
  .metro-advanced .prog-entered-block{margin-top:20px;}
  .metro-advanced .prog-entered-actions{margin-top:16px;}
  /* PLAYBACK CONTROLS toggles are inline labels by default — make them block so
     vertical spacing actually applies between them. The secondary toggles (ACCENT,
     COUNT-IN, PAUSE) now live inside the "More playback options" <details>, so
     they're direct children of .prog-ctl-disclosure, not .prog-controls — cover
     both, else margin-top/bottom is silently ignored on the inline labels. */
  .metro-advanced .prog-controls > label,
  .metro-advanced .prog-ctl-disclosure > label{display:block;margin-bottom:18px;}
  /* Extra separation before COUNT-IN; looser items in HEMIOLA AND POLYRHYTHM */
  .metro-advanced .prog-ctl-break{margin-top:34px;}
  /* The wrapping <label>s are display:block (from the rule above), so their
     bounding box covers the FULL row width — a click anywhere on that
     strip toggles the wrapped checkbox. Constrain each label's clickable
     area to its actual content (text + toggle) so clicks in the empty
     horizontal space fall through to the parent. Fixes the COUNT-IN
     checkbox flipping off when the user clicks "away" from the beats
     input on desktop. */
  .metro-advanced .prog-controls > label,
  .metro-advanced .prog-ctl-disclosure > label { width: fit-content; }
  .metro-advanced .polyrhythm-block label{margin-bottom:22px;}
  .metro-advanced .polyrhythm-block .polyrhythm-hint{margin-bottom:18px;}
  .metro-advanced .polyrhythm-show-notation{margin:4px 0 16px;}
  /* "ENTER YOUR OWN RHYTHM" subtitle sits tight under the title */
  .metro-advanced .prog-rhythm-title{margin-bottom:3px;}
  .metro-advanced .prog-rhythm-sub{font-size:13px;color:#444;margin:0 0 14px;}


  .metro-adv-col{display:flex;flex-direction:column;gap:20px;min-width:0;}
  .metro-advanced .practice-ladder-block{
    background:#ffffff;
    border:1px solid #f0e6d6;
    border-top:3px solid #ea580c;
    border-radius:14px;
    padding:20px 22px;
    box-shadow:0 6px 20px rgba(0,0,0,.06);
    box-sizing:border-box;
    text-align:left;                      /* match PGS / Polyrhythm — left-aligned controls */
  }
  .metro-advanced .practice-ladder-title{display:flex;align-items:center;gap:10px;color:#ea580c;font-weight:800;font-size:20px;margin-bottom:16px;}
  /* control text inherits the amber mode color, like the blue labels in PGS */
  .metro-advanced .practice-ladder-block label{color:#ea580c;}
  .metro-adv-icon.ladder{background:#ffedd5;color:#ea580c;}
  .practice-ladder-hint{
    font-size:14px; color:#555; font-style:normal; line-height:1.45;
    margin:0 0 16px; padding:6px 10px;
    background:#fff7ed; border-left:3px solid #ea580c; border-radius:3px;
  }
  /* "Tip:" line inside the hint box — separated from the main text, with the
     label + panel name in upright amber so they stand out from the italic copy. */
  .practice-ladder-hint .pl-hint-tip{margin:8px 0 0;}
  .practice-ladder-hint .pl-hint-tip strong{color:#ea580c;font-style:normal;}
  .practice-ladder-num{width:3em;text-align:center;}   /* 3 digits max (e.g. 480) — was 4em, wider than needed */
  .practice-ladder-unit{margin-left:4px;}
  /* one control per line */
  /* Descendant (not direct-child) so each setting stays on its own line even
     now that the fields live inside the .pt-disclosure dropdown. */
  .metro-advanced .practice-ladder-block label.pl-line{display:block;}
  /* WARNING TICKS / REST: their toggle now sits on the line below the text. Keep a
     small gap from the text above it and clearance below before the next line. */
  .metro-advanced .practice-ladder-block label.pl-warn-line input[type="checkbox"]{
    margin-top:6px;
    margin-bottom:6px;
  }
  .metro-advanced .practice-ladder-block label.pl-warn-line{margin-bottom:24px;}
  /* Extra separation above the first warn line (WARNING TICKS) from the
     "WHEN YOU PRESS STOP" radios above it. */
  .metro-advanced #practice-ladder-stopmode + label.pl-warn-line{margin-top:20px;}
  .practice-ladder-note{font-weight:normal;font-style:italic;color:#777;}
  /* extra breathing room before the WHEN TARGET REACHED group */
  .practice-ladder-reached{margin-top:24px;margin-bottom:12px;}
  .practice-ladder-reached-label{display:block;font-weight:700;margin-bottom:8px;color:#ea580c;}
  /* radios stack tightly; override the loose .metro-advanced label rule */
  .metro-advanced label.practice-ladder-radio{display:block;margin-bottom:8px;font-weight:normal;width:fit-content;}
  .practice-ladder-warning{color:#b45309;background:#fffbeb;border:1px solid #fde68a;border-radius:8px;padding:8px 10px;font-size:13px;margin-bottom:12px;}
  /* width:fit-content — hug the readout text instead of spanning the card
     (the floating .metro-ladder-float variant centers itself, unaffected). */
  .practice-ladder-status{background:#fff7ed;border:1px solid #fed7aa;border-radius:8px;padding:10px 12px;font-weight:700;color:#9a3412;width:fit-content;max-width:100%;box-sizing:border-box;}
  .practice-ladder-status .pl-status-sub{display:block;font-weight:normal;color:#9a3412;font-size:13px;margin-top:3px;}
  /* Flash the tempo readout each time it steps to a new BPM. */
  @keyframes plFlash {
    0%   { background:#fb923c; color:#fff; transform:scale(1.04); }
    100% { background:#fff7ed; color:#9a3412; transform:scale(1); }
  }
  .practice-ladder-status.pl-flash{ animation: plFlash .55s ease-out; }
  /* Pulse the empty TARGET TEMPO field when START is pressed without one set —
     paired with the modal popup so it's obvious where to type. */
  @keyframes plFieldFlash {
    0%,100% { box-shadow: 0 0 0 0 rgba(234,88,12,0); }
    25%     { box-shadow: 0 0 0 4px rgba(234,88,12,.45); border-color:#ea580c; }
  }
  .pl-field-flash{ animation: plFieldFlash .8s ease-out 2; }
  /* Option 1: the SAME status readout, pinned just above the floating START
     button so a running ladder is visible from any scroll position. It reuses
     .practice-ladder-status (amber + the pl-flash step animation); this rule
     only adds fixed positioning, a deeper shadow, and a tap affordance.
     Centered with auto margins — NOT transform — so pl-flash's scale() doesn't
     shift it sideways on each step. font-family (not the `font` shorthand) so
     the base 700 weight survives. */
  .metro-ladder-float{
    position:fixed; left:50%; right:auto; bottom:88px;
    transform:translateX(-50%);              /* reliable centering on mobile */
    max-width:92vw; box-sizing:border-box;
    z-index:901;                /* just above #metro-power.metro-power-floating (900) */
    font-family:inherit; font-size:24px; font-weight:800;
    text-align:center; padding:20px 18px; border-width:3px; border-radius:14px;
    /* The site's mobile chrome forces padding-left/right:0 !important on every
       element; re-assert ours so the text isn't jammed against the border. */
    padding-left:18px !important; padding-right:18px !important;
    /* Dark scheme so it stands off the warm gold brass plate (and the white page
       below). Bright amber border keeps the ladder's identity. Overrides the
       cream/amber inherited from .practice-ladder-status. */
    background:#1c1917; border-color:#f59e0b; color:#ffffff;
    box-shadow:0 12px 32px rgba(0,0,0,.5), 0 0 0 1px rgba(0,0,0,.3);
  }
  .metro-ladder-float .pl-status-sub{ font-size:16px; margin-top:6px; color:#fcd34d; }
  .metro-ladder-float[hidden]{ display:none; }
  /* Floating-readout run controls (hold / resume / manual step), tucked under the
     status text inside the same popup. Light buttons that read on the dark box. */
  .pl-float-text{ cursor:pointer; }
  .pl-float-ctrls{ display:flex; flex-direction:column; gap:8px; margin-top:14px; }
  .pl-float-ctrls[hidden]{ display:none; }
  .pl-float-steps{ display:flex; gap:8px; }
  .pl-float-steps .pl-float-btn{ flex:1; }
  .pl-float-btn{ font-family:inherit; font-size:14px; font-weight:700; color:#fff; background:rgba(255,255,255,.12); border:1px solid #f59e0b; border-radius:9px; padding:10px 12px; padding-left:12px !important; padding-right:12px !important; cursor:pointer; line-height:1.25; }
  .pl-float-btn:hover{ background:rgba(255,255,255,.22); }
  .pl-float-btn-resume{ background:#ea580c; border-color:#ea580c; }
  .pl-float-btn-resume:hover{ background:#c2410c; }
  .pl-float-btn-close{ display:block; width:100%; box-sizing:border-box; margin-top:14px; }
  /* The float gets its OWN step-flash that settles back to the dark resting
     colors (the shared plFlash ends on cream, which would snap-mismatch here). */
  @keyframes plFlashFloat {
    0%   { background:#f59e0b; color:#1c1917; transform:translateX(-50%) scale(1.05); }
    100% { background:#1c1917; color:#ffffff; transform:translateX(-50%) scale(1); }
  }
  .metro-ladder-float.pl-flash{ animation: plFlashFloat .55s ease-out; }
  /* greyed 'measures' option when unavailable (poly/prog on) handled in JS via disabled attr */
  .practice-ladder-unit option:disabled{color:#bbb;}
  /* Toggle switch — same CSS shape as the other mode blocks (Play–Go Silent /
     Polyrhythm / Misery), amber when checked. Covers all three ladder
     checkboxes: TURN ON/OFF, WARNING TICKS, and REST. */
  .practice-ladder-block input[type="checkbox"]{
    --s: 20px;
    height: calc(var(--s) + var(--s)/5);
    width: auto;
    aspect-ratio: 2.25;
    border-radius: var(--s);
    margin: 0 calc(var(--s)/2);
    display: grid;
    cursor: pointer;
    background-color: #ccc;
    box-sizing: content-box;
    overflow: hidden;
    transition: .3s .1s;
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
  }
  .practice-ladder-block input[type="checkbox"]:before{
    content: "";
    padding: calc(var(--s)/10);
    --_g: radial-gradient(circle closest-side at calc(100% - var(--s)/2) 50%,#000 96%,#0000);
    background:
      var(--_g) 0 /var(--_p,var(--s)) 100% no-repeat content-box,
      var(--_g) var(--_p,0)/var(--s)  100% no-repeat content-box,
      #fff;
    mix-blend-mode: darken;
    filter: blur(calc(var(--s)/12)) contrast(11);
    transition: .4s, background-position .4s .1s,
      padding cubic-bezier(0,calc(var(--_i,-1)*200),1,calc(var(--_i,-1)*200)) .25s .1s;
  }
  .practice-ladder-block input[type="checkbox"]:checked{
    background-color: #ea580c;
  }
  .practice-ladder-block input[type="checkbox"]:checked:before{
    padding: calc(var(--s)/10 + .05px) calc(var(--s)/10);
    --_p: 100%;
    --_i: 1;
  }
  .practice-ladder-block input[type="checkbox"]:disabled{opacity:.5;cursor:not-allowed;}


  .metro-advanced .misery-block{
    background:#ffffff;
    border:1px solid #f0e6d6;
    border-top:3px solid #db2777;
    border-radius:14px;
    padding:20px 22px;
    box-shadow:0 10px 28px rgba(0,0,0,.09);
    box-sizing:border-box;
    text-align:left;
  }
  .metro-advanced .misery-title{display:flex;align-items:center;gap:10px;color:#db2777;font-weight:800;font-size:20px;margin-bottom:10px;}
  /* Title text + "(Block Practice)" subline stacked between the two note icons;
     align-items:center on the flex row keeps the icons centered against it. */
  .misery-title-text{text-align:center;}
  .misery-title-sub{display:block;font-size:16px;font-weight:normal;color:#9d174d;}
  /* (.metro-adv-icon.misery chip removed — the title now leads with the
     happy-note image; see .misery-title-note below the coin rules.) */
  .misery-hint{
    font-size:14px;color:#555;line-height:1.45;
    margin:0 0 16px;padding:6px 10px;
    background:#fdf2f8;border-left:3px solid #db2777;border-radius:3px;
  }
  .misery-hint p{margin:0 0 7px;}
  .misery-hint p:last-child{margin-bottom:0;}
  /* one control per line; flex keeps the toggle switch + number fields inline */
  .metro-advanced .misery-block label.misery-line{display:flex;align-items:center;flex-wrap:wrap;margin-bottom:20px;color:#db2777;}
  .misery-num{width:3em;text-align:center;margin:0 6px;}   /* 3 digits max — was 4em */
  .misery-note{font-weight:normal;font-style:italic;color:#777;}
  .misery-kick-text{font-weight:normal;}
  .misery-mode-group{margin:18px 0 24px;}   /* extra gap after "Maximum misery" before USE THE METRONOME */
  .misery-mode-label{display:block;font-weight:700;margin-bottom:8px;color:#db2777;}
  .metro-advanced label.misery-radio{display:block;margin-bottom:8px;font-weight:normal;width:fit-content;color:#db2777;}
  .misery-start-btn{
    display:block;margin-top:28px;padding:12px 26px !important;
    background:#db2777;color:#fff;font-weight:800;font-size:15px;letter-spacing:.04em;
    font-family:inherit;border:none;border-radius:10px;cursor:pointer;
    box-shadow:0 4px 12px rgba(219,39,119,.35);
  }
  .misery-start-btn:hover:not(:disabled){background:#be185d;}
  .misery-start-btn:disabled{opacity:.5;cursor:not-allowed;}
  /* Toggle switch — same CSS shape as the other mode blocks, pink when checked. */
  .misery-block input[type="checkbox"]{
    --s: 20px;
    height: calc(var(--s) + var(--s)/5);
    width: auto;
    aspect-ratio: 2.25;
    border-radius: var(--s);
    margin: 0 calc(var(--s)/2);
    display: grid;
    cursor: pointer;
    background-color: #ccc;
    box-sizing: content-box;
    overflow: hidden;
    transition: .3s .1s;
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
  }
  .misery-block input[type="checkbox"]:before{
    content: "";
    padding: calc(var(--s)/10);
    --_g: radial-gradient(circle closest-side at calc(100% - var(--s)/2) 50%,#000 96%,#0000);
    background:
      var(--_g) 0 /var(--_p,var(--s)) 100% no-repeat content-box,
      var(--_g) var(--_p,0)/var(--s)  100% no-repeat content-box,
      #fff;
    mix-blend-mode: darken;
    filter: blur(calc(var(--s)/12)) contrast(11);
    transition: .4s, background-position .4s .1s,
      padding cubic-bezier(0,calc(var(--_i,-1)*200),1,calc(var(--_i,-1)*200)) .25s .1s;
  }
  .misery-block input[type="checkbox"]:checked{
    background-color: #db2777;
  }
  .misery-block input[type="checkbox"]:checked:before{
    padding: calc(var(--s)/10 + .05px) calc(var(--s)/10);
    --_p: 100%;
    --_i: 1;
  }
  .misery-block input:disabled{opacity:.5;cursor:not-allowed;}

  /* ── The full-screen game overlay ── */
  #misery-game-backdrop{
    display:none;position:fixed;inset:0;z-index:10000;
    background:radial-gradient(circle at 50% 30%, #312e81 0%, #111827 60%, #030712 100%);
    justify-content:center;align-items:center;padding:20px;
    overflow:hidden;   /* Phase B: keep falling confetti from spilling/scrolling */
  }
  #misery-game-backdrop.open{display:flex;}
  #misery-game{
    width:100%;max-width:680px;max-height:94vh;overflow-y:auto;
    background:#1c1917;border:2px solid #f59e0b;border-radius:16px;
    box-shadow:0 24px 70px rgba(0,0,0,.6);
    padding:22px 28px 24px;padding-left:28px !important;padding-right:28px !important;
    box-sizing:border-box;
    text-align:center;color:#e7e5e4;font-family:inherit;
    cursor:move;user-select:none;-webkit-user-select:none;   /* draggable from anywhere */
    touch-action:none;   /* my drag/pinch own touch, so the browser doesn't page-zoom */
    position:relative;   /* so raise-on-touch z-index applies before it's dragged */
  }
  /* Keep the real controls feeling clickable, not draggable. */
  #misery-game button,.misery-summary-card button{cursor:pointer;}
  .misery-game-header{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;text-align:left;margin-bottom:14px;cursor:move;touch-action:none;user-select:none;-webkit-user-select:none;}
  .misery-game-draghint{align-self:center;flex:0 0 auto;font-size:11px;font-weight:700;letter-spacing:.04em;color:#a8a29e;white-space:nowrap;pointer-events:none;}
  #misery-game-title{margin:0;font-size:24px;letter-spacing:.06em;color:#fbbf24;font-weight:900;line-height:1.2;}
  #misery-game-sub{font-size:13px;color:#a8a29e;margin-top:4px;}
  .misery-game-close{background:none;border:none;font-size:30px;color:#a8a29e;cursor:pointer;line-height:1;padding:0 6px !important;flex:0 0 auto;}
  .misery-game-close:hover{color:#fff;}
  #misery-coin-row{display:flex;flex-wrap:wrap;justify-content:center;gap:10px;margin:18px 0 10px;min-height:36px;}
  /* "Happy note" coins: Doug's golden smiling eighth-note image (white
     background keyed out via edge flood-fill, cropped, downscaled to 240 px
     tall ≈ 3× display size) embedded as a data URI so no extra file needs
     uploading. Empty slots are the same note dimmed to a gray ghost. The
     earlier CSS-drawn gold-circle coins are in git history if we revert. */
  .misery-coin{
    width:56px;height:76px;position:relative;flex:0 0 auto;
    background:url("data:image/png;base64,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") center / contain no-repeat;
  }
  .misery-coin.empty{filter:grayscale(1) brightness(.55) opacity(.4);}
  /* Phase B: coin animations. pop = the just-earned coin springs in with a
     gold glow; scatter = forfeited coins tumble away and fade (per-coin
     --dx/--dy/--rot/--d set by JS, staggered so it reads as a spill); wave =
     win celebration — each coin hops in sequence, two passes. Confetti
     rectangles fall the full height of the fixed backdrop. The glow keyframes
     repeat the coin's base box-shadow so it doesn't blink off mid-animation.
     JS skips all of these under prefers-reduced-motion; the media block at the
     end is a belt-and-braces fallback. */
  @keyframes miseryCoinPop{
    0%{transform:scale(0);}
    60%{transform:scale(1.28);filter:drop-shadow(0 0 10px rgba(251,191,36,.85));}
    80%{transform:scale(.94);}
    100%{transform:scale(1);}
  }
  .misery-coin.pop{animation:miseryCoinPop .38s cubic-bezier(.34,1.4,.64,1);}
  @keyframes miseryCoinScatter{
    to{transform:translate(var(--dx,0px),var(--dy,110px)) rotate(var(--rot,300deg)) scale(.5);opacity:0;}
  }
  .misery-coin.scatter{animation:miseryCoinScatter .65s ease-in var(--d,0s) forwards;}
  @keyframes miseryCoinWave{
    0%,100%{transform:translateY(0);}
    30%{transform:translateY(-16px);filter:drop-shadow(0 0 8px rgba(251,191,36,.8));}
    60%{transform:translateY(2px);}
  }
  .misery-coin.wave{animation:miseryCoinWave .9s ease-in-out var(--d,0s) 2;}
  .misery-confetti{
    position:absolute;top:-16px;width:8px;height:13px;border-radius:2px;
    pointer-events:none;opacity:.95;
    animation:miseryConfettiFall var(--t,2.6s) ease-in var(--d,0s) forwards;
  }
  @keyframes miseryConfettiFall{
    to{transform:translate(var(--dx,0px),104vh) rotate(var(--rot,540deg));opacity:.85;}
  }
  @media (prefers-reduced-motion: reduce){
    .misery-coin.pop,.misery-coin.scatter,.misery-coin.wave{animation:none !important;}
    .misery-confetti{display:none;}
  }
  #misery-progress{font-size:34px;font-weight:900;color:#fbbf24;margin:2px 0 10px;}
  /* Gentle-mode GOOD/BAD tally (replaces the coin row + #misery-progress in
     gentle): two horizontal pile rows — fixed head (label over big count) on
     the left, then one note per attempt piling rightward, wrapping freely. */
  #misery-tally{display:flex;flex-direction:column;gap:14px;margin:18px 0 14px;}
  #misery-tally[hidden]{display:none;}
  .misery-tally-row{display:flex;align-items:flex-start;gap:14px;text-align:left;min-height:76px;}
  .misery-tally-head{flex:0 0 80px;display:flex;flex-direction:column;align-items:center;gap:2px;}
  .misery-tally-pile{flex:1;display:flex;flex-wrap:wrap;gap:6px;align-items:flex-start;}
  .misery-tally-label{font-size:13px;font-weight:800;letter-spacing:.08em;}
  .misery-tally-num{font-size:34px;font-weight:900;line-height:1.1;}
  .misery-tally-row.good .misery-tally-label,.misery-tally-row.good .misery-tally-num{color:#86efac;}
  /* BAD row reads "feeling blue": the sad notes are hue-shifted gold→blue and
     the label/count match. The filter lives in its own rule (the rule below
     carrying the sad-note data URI stays image-only), and the pop animation
     needs its own keyframes — `filter` is one property, so the shared pop's
     drop-shadow frame would otherwise wipe the blue tint mid-spring. */
  .misery-tally-row.bad .misery-tally-label,.misery-tally-row.bad .misery-tally-num{color:#93c5fd;}
  /* The sad note's crop is slightly wider-headed than the happy note's, so at
     equal box size it reads bigger — render it ~10% smaller to balance. */
  .misery-tally-row.bad .misery-coin,.misery-title-note.sad{filter:hue-rotate(188deg) saturate(.85) brightness(1.05);background-size:auto 90%;}
  @keyframes miseryCoinPopBad{
    0%{transform:scale(0);filter:hue-rotate(188deg) saturate(.85) brightness(1.05);}
    60%{transform:scale(1.28);filter:hue-rotate(188deg) saturate(.85) brightness(1.05) drop-shadow(0 0 10px rgba(147,197,253,.85));}
    80%{transform:scale(.94);filter:hue-rotate(188deg) saturate(.85) brightness(1.05);}
    100%{transform:scale(1);filter:hue-rotate(188deg) saturate(.85) brightness(1.05);}
  }
  .misery-tally-row.bad .misery-coin.pop{animation-name:miseryCoinPopBad;}
  /* Card-title notes: happy (left, replaces the icon chip) and sad (right of
     the text), icon-sized and gently tilted. Must come after the .misery-coin
     size rule so these dimensions win. The sad span gets its image + blue
     tint from the shared sad-note selectors above. Quick wiggle on hover. */
  .misery-title-note{width:50px;height:66px;flex:0 0 auto;transform:rotate(-8deg);}
  .misery-title-note.sad{transform:rotate(8deg);}
  @keyframes miseryTitleWiggle{
    0%,100%{transform:rotate(-8deg);}
    25%{transform:rotate(6deg);}
    50%{transform:rotate(-10deg);}
    75%{transform:rotate(4deg);}
  }
  @keyframes miseryTitleWiggleSad{
    0%,100%{transform:rotate(8deg);}
    25%{transform:rotate(-6deg);}
    50%{transform:rotate(10deg);}
    75%{transform:rotate(-4deg);}
  }
  .misery-title:hover .misery-title-note{animation:miseryTitleWiggle .6s ease-in-out;}
  .misery-title:hover .misery-title-note.sad{animation:miseryTitleWiggleSad .6s ease-in-out;}
  @media (prefers-reduced-motion: reduce){
    .misery-title:hover .misery-title-note,.misery-title:hover .misery-title-note.sad{animation:none;}
  }
  /* BAD pile: Doug's sad-note image (same keying/export pipeline as the
     happy note). Overrides only background-image; the size/position longhands
     come from the .misery-coin shorthand. */
  .misery-tally-row.bad .misery-coin,.misery-title-note.sad{background-image:url("data:image/png;base64,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");}
  .misery-message{
    min-height:48px;font-size:15px;line-height:1.5;color:#e7e5e4;
    background:#292524;border-radius:10px;
    padding:12px 16px !important;margin:0 0 18px;
  }
  .misery-message.good{color:#86efac;}
  .misery-message.bad{background:#3f1d1d;color:#fca5a5;}
  .misery-message.win{background:#3a2c08;color:#fde68a;font-size:18px;font-weight:800;}
  /* THE MISTAKE POP-UP (Phase E): a centered card that pops over the dimmed game
     when the player records a mistake. The metronome is stopped; RESUME restarts
     it. Anchored to #misery-game-backdrop (position:fixed), so inset:0 covers the
     whole overlay including #misery-game. Paddings carry !important to survive
     the page-wide <=1000px reset that zeroes horizontal padding/margins. */
  #misery-mistake-pop{
    position:absolute;inset:0;z-index:5;
    display:none;justify-content:center;align-items:center;padding:20px;
    background:rgba(3,7,18,.80);
  }
  #misery-mistake-pop:not([hidden]){display:flex;}
  .misery-pop-card{
    width:100%;max-width:440px;box-sizing:border-box;
    background:#3f1d1d;border:2px solid #dc2626;border-radius:16px;
    box-shadow:0 24px 70px rgba(0,0,0,.7);
    padding:26px 28px 24px !important;text-align:center;color:#e7e5e4;
    animation:miseryPopIn .32s cubic-bezier(.34,1.4,.64,1);
  }
  @keyframes miseryPopIn{from{opacity:0;transform:scale(.82) translateY(10px);}to{opacity:1;transform:none;}}
  .misery-pop-head{font-size:21px;font-weight:900;letter-spacing:.04em;color:#fca5a5;margin-bottom:12px;line-height:1.2;}
  .misery-pop-consequence{font-size:15px;line-height:1.5;color:#fca5a5;margin-bottom:14px;}
  .misery-pop-consequence:empty{display:none;}
  .misery-pop-tip{
    font-size:18px;line-height:1.5;font-weight:600;color:#fde68a;
    background:rgba(0,0,0,.30);border-radius:10px;
    padding:16px 18px !important;margin-bottom:20px;
  }
  .misery-pop-resume{
    font-family:inherit;font-weight:800;font-size:17px;letter-spacing:.03em;
    border:none;border-radius:12px;cursor:pointer;color:#fff;background:#16a34a;
    padding:16px 28px !important;box-shadow:0 4px 14px rgba(0,0,0,.45);width:100%;
  }
  .misery-pop-resume:hover:not(:disabled){background:#15803d;}
  .misery-pop-resume:disabled{opacity:.5;cursor:not-allowed;}
  @media (prefers-reduced-motion: reduce){ .misery-pop-card{animation:none;} }

  /* SESSION TALLY BOARD — the end-of-session summary popup (✓ / ✗ / attempts /
     clean %). Reuses the mistake-pop overlay/dim + pop-in, gold-on-dark themed. */
  #misery-summary-pop{
    position:absolute;inset:0;z-index:6;
    display:none;justify-content:center;align-items:center;padding:20px;
    background:rgba(3,7,18,.84);
  }
  #misery-summary-pop:not([hidden]){display:flex;}
  .misery-summary-card{
    width:100%;max-width:460px;box-sizing:border-box;
    background:#1f2937;border:2px solid #fbbf24;border-radius:16px;
    box-shadow:0 24px 70px rgba(0,0,0,.7);
    padding:26px 28px 24px !important;text-align:center;color:#e7e5e4;
    animation:miseryPopIn .32s cubic-bezier(.34,1.4,.64,1);
    cursor:move;user-select:none;-webkit-user-select:none;   /* draggable from anywhere */
    touch-action:none;   /* my drag/pinch own touch, so the browser doesn't page-zoom */
    position:relative;   /* so raise-on-touch z-index applies before it's dragged */
  }
  .misery-summary-head{font-size:23px;font-weight:900;letter-spacing:.03em;line-height:1.2;margin-bottom:6px;color:#fde68a;cursor:move;touch-action:none;user-select:none;-webkit-user-select:none;}
  .misery-summary-head.win{color:#fcd34d;}
  .misery-summary-draghint{font-size:11px;font-weight:700;letter-spacing:.04em;color:#94a3b8;margin-bottom:8px;pointer-events:none;}
  .misery-summary-sub{font-size:15px;line-height:1.5;color:#cbd5e1;margin-bottom:16px;}
  .misery-summary-sub:empty{display:none;}
  .misery-summary-table{width:100%;border-collapse:collapse;margin:0 0 20px;font-size:16px;text-align:left;}
  .misery-summary-table td{padding:8px 6px;border-bottom:1px solid rgba(148,163,184,.22);}
  .misery-summary-table tr:last-child td{border-bottom:none;}
  .misery-summary-table td.misery-summary-label{color:#94a3b8;}
  .misery-summary-table td.misery-summary-val{text-align:right;font-weight:800;font-variant-numeric:tabular-nums;color:#f1f5f9;}
  .misery-summary-table td.misery-summary-val.good{color:#86efac;}
  .misery-summary-table td.misery-summary-val.bad{color:#fca5a5;}
  .misery-summary-done{
    font-family:inherit;font-weight:800;font-size:17px;letter-spacing:.03em;
    border:none;border-radius:12px;cursor:pointer;color:#1f2937;background:#fbbf24;
    padding:16px 28px !important;box-shadow:0 4px 14px rgba(0,0,0,.45);width:100%;
  }
  .misery-summary-done:hover{background:#f59e0b;}
  @media (prefers-reduced-motion: reduce){ .misery-summary-card{animation:none;} }
  #misery-attempt-btns{display:flex;gap:14px;justify-content:center;flex-wrap:wrap;margin-bottom:12px;}
  #misery-attempt-btns[hidden]{display:none;}
  #misery-attempt-btns button{
    font-family:inherit;font-weight:800;font-size:17px;letter-spacing:.03em;
    border:none;border-radius:12px;cursor:pointer;color:#fff;
    padding:16px 28px !important;
    box-shadow:0 4px 14px rgba(0,0,0,.45);
  }
  #misery-perfect{background:#16a34a;}
  #misery-perfect:hover:not(:disabled){background:#15803d;}
  #misery-mistake{background:#dc2626;}
  #misery-mistake:hover:not(:disabled){background:#b91c1c;}
  #misery-attempt-btns button:disabled{opacity:.35;cursor:not-allowed;}
  #misery-undo{background:none;border:none;color:#a8a29e;text-decoration:underline;cursor:pointer;font-size:13px;font-family:inherit;margin-bottom:14px;}
  #misery-undo:hover:not(:disabled){color:#fff;}
  #misery-undo:disabled{opacity:.4;cursor:not-allowed;text-decoration:none;}
  #misery-undo[hidden]{display:none;}
  #misery-pause{
    display:block;margin:0 auto 14px;background:#57534e;color:#fff;border:none;
    border-radius:8px;padding:8px 18px;font-size:13px;font-weight:700;
    cursor:pointer;font-family:inherit;
    /* Survive the page-wide <=1000px *:not(...) reset that zeroes horizontal
       padding/margins: keep the button's own padding and auto-centering. */
    padding-left:18px !important;padding-right:18px !important;
    margin-left:auto !important;margin-right:auto !important;
  }
  #misery-pause:hover{background:#44403c;}
  #misery-pause[hidden]{display:none;}
  #misery-endgame{display:flex;flex-direction:column;gap:10px;align-items:center;margin-bottom:14px;}
  #misery-endgame[hidden]{display:none;}
  #misery-endgame button{
    font-family:inherit;font-weight:800;font-size:15px;border:none;border-radius:10px;cursor:pointer;
    padding:12px 22px !important;color:#1c1917;background:#fbbf24;
  }
  #misery-endgame button:hover{background:#f59e0b;}
  #misery-end-kick[hidden]{display:none;}
  #misery-end-exit{background:#57534e !important;color:#fff !important;}
  #misery-elapsed{font-size:13px;color:#a8a29e;margin-bottom:8px;}
  #misery-stats{font-size:13px;color:#a8a29e;border-top:1px solid #44403c;padding-top:10px;}


  /* #1 Section header */
  .metro-adv-header{text-align:center;margin-bottom:26px}
  .metro-adv-eyebrow{display:inline-block;background:linear-gradient(to right,#ea580c,#dc2626);color:#fff;font-size:11px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;padding:5px 12px;border-radius:6px;margin-bottom:12px}
  .metro-adv-header .metro-section-title{margin:0 0 6px}
  .metro-adv-subtitle{margin:0;color:#6b7280;font-size:15px}

  /* #2 Card-header icon chips (titles become icon + label rows) */
  .metro-advanced .play-go-silent-title,
  .metro-advanced .polyrhythm-title,
  .metro-advanced .prog-rhythm-title{display:flex;align-items:center;gap:10px}
  .metro-adv-icon{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:9px;flex:0 0 auto}
  .metro-adv-icon svg{width:19px;height:19px}
  /* PGS icon is wider than the others to fit the "3 notes ··· 3 dots" pattern
     with breathing room between elements. */
  .metro-adv-icon.pgs{background:#dbeafe;color:#2563eb;width:50px}
  .metro-adv-icon.pgs svg{width:38px;height:19px}
  .metro-adv-icon.poly{background:#ede9fe;color:#7c3aed}
  .metro-adv-icon.prog{background:#ccfbf1;color:#0d9488}
  .metro-advanced .play-go-silent-title{color:#2563eb}

  /* #3 Color-coded top accents + more depth */
  .metro-advanced .play-go-silent-block,
  .metro-advanced .polyrhythm-block,
  .metro-advanced .prog-rhythm-block{border-top-width:3px;box-shadow:0 10px 28px rgba(0,0,0,.09)}
  .metro-advanced .play-go-silent-block{border-top-color:#2563eb}
  .metro-advanced .polyrhythm-block{border-top-color:#7c3aed}
  .metro-advanced .prog-rhythm-block{border-top-color:#0d9488}


  /* Full-width section below the rhythm editor; desktop-only (belt-and-suspenders
     hide on mobile in case it ever sits outside .metro-advanced). */
  .practice-tools-section{grid-column:1 / -1;margin-top:40px;}
  .metro-adv-grid > .practice-tools-section{grid-column:1 / -1}
  /* Phase D: Practice Ladder + Misery cards, relocated into this section, stack
     full-width with spacing (they were grid items with column gap before). */
  .practice-tools-section > .practice-ladder-block,
  .practice-tools-section > .misery-block,
  .practice-tools-section > .nightmare-block,
  .practice-tools-section > #idr-block{margin-bottom:24px;}
  @media screen and (max-width:768px){ .practice-tools-section{display:none !important;} }
  .practice-tools-heading{margin-bottom:4px;}
  .practice-tools-sub{text-align:center;color:#555;font-size:14px;font-style:italic;margin:0 0 20px;}

  /* PRACTICE TOOLS disclosure (desktop) — each tool keeps its title + hint
     visible and collapses the rest (saved routines + settings/fields) under one
     dropdown, closed by default. Reusable: per-tool accent via --pt-accent
     (defaults teal; the Ladder sets amber below). Desktop-only by construction:
     these blocks live in .practice-tools-section / .metro-advanced, both hidden
     on phones (mobile has its own collapsible cards). */
  .pt-disclosure{margin-top:6px;}
  /* Solid, filled in the tool's accent so the toggle reads clearly as a button
       and stays findable once opened (it used to be a thin-bordered white pill
       that vanished among the revealed controls). */
  .pt-disclosure > summary{
    cursor:pointer;list-style:none;user-select:none;
    /* flex + fit-content so the pill hugs its text and stays left-aligned even
       inside a text-align:center block (the interleave tools inherit the page's
       centering). */
    display:flex;width:fit-content;align-items:center;gap:8px;
    font-weight:800;font-size:14px;letter-spacing:.02em;
    color:#fff;
    padding:10px 18px;border:1px solid var(--pt-accent,#0d9488);
    border-radius:8px;background:var(--pt-accent,#0d9488);
    box-shadow:0 1px 3px rgba(0,0,0,.22);
  }
  .pt-disclosure > summary:hover{filter:brightness(1.08);}
  /* Open: keep it filled but mark it as the active/expanded control with a ring
       so it's obvious where the now-visible panel was toggled from. */
  .pt-disclosure[open] > summary{box-shadow:0 0 0 3px rgba(0,0,0,.10),0 1px 3px rgba(0,0,0,.22);}
  .pt-disclosure > summary::-webkit-details-marker{display:none;}
  .pt-disclosure > summary::before{content:"\25B8";display:inline-block;transition:transform .15s ease;}
  .pt-disclosure[open] > summary::before{transform:rotate(90deg);}
  .pt-disclosure[open] > summary{margin-bottom:16px;}
  /* Per-tool accents for the disclosure toggle. */
  .practice-ladder-block{--pt-accent:#ea580c;}
  .misery-block{--pt-accent:#db2777;}
  .nightmare-block{--pt-accent:#4c1d95;}
  #idr-block{--pt-accent:#0d9488;}   /* Daily Practice title is overridden to teal */
  #interleave-block{--pt-accent:#4f46e5;}   /* Performance — indigo */

  .interleave-block{
    background:#ffffff;
    border:1px solid #f0e6d6;
    border-top:3px solid #4f46e5;
    border-radius:14px;
    padding:20px 22px;
    box-shadow:0 10px 28px rgba(0,0,0,.09);
    box-sizing:border-box;
  }
  /* Neutralize the generic .metro-advanced label margin; spacing comes from
     flex gaps on the containers below. */
  .interleave-block label{margin-bottom:0;}
  .metro-adv-icon.interleave{background:#e0e7ff;color:#4f46e5;}
  .interleave-title{display:flex;align-items:center;gap:10px;color:#4f46e5;font-weight:800;font-size:20px;margin-bottom:3px;}
  .interleave-sub{font-size:13px;color:#444;margin:0 0 14px;}
  .interleave-hint{font-size:14px;line-height:1.6;color:#374151;text-align:left;margin:0 0 8px;padding:16px 18px;background:#eef2ff;border-left:4px solid #4f46e5;border-radius:8px;}
  .interleave-hint p.il-hint-instr{font-weight:800;text-transform:uppercase;letter-spacing:.04em;color:#4f46e5;margin:18px 0 8px;}
  .interleave-hint p{margin:0 0 12px;}
  .interleave-hint p:last-child{margin-bottom:0;}
  /* "Why interleaved practice?" essay — a collapsible dropdown on every screen
     (default collapsed; no `open` in the markup). The essay text is held to a
     comfortable reading measure so long desktop/iPad lines stay easy to read. */
  .il-why{margin:0;}
  .il-why-summary{
    display:flex; align-items:center; list-style:none; cursor:pointer;
    /* 16px mixed-case visually matches the 14px UPPERCASE "INSTRUCTIONS" label. */
    font-weight:800; color:#4f46e5; font-size:16px; padding:4px 0; margin-bottom:4px;
  }
  .il-why-summary::-webkit-details-marker{display:none;}
  .il-why-summary::before{content:"\25B8"; display:inline-block; font-size:1.5em; line-height:1; margin-right:8px; transition:transform .15s ease;}
  .il-why[open] > .il-why-summary::before{transform:rotate(90deg);}
  /* Hold the dropdown essay AND the Instructions how-to to a narrow, easy-to-read
     column (~half the full box width on desktop/iPad; no effect on phones, which are
     already narrower than this). */
  .interleave-hint p{max-width:48ch;}
  /* The full-width blocks — Enter Your Own Rhythm, Hands-Free Practice Ladder, and
     Seven Levels of Misery — otherwise run their explanatory callouts edge-to-edge on
     desktop/iPad, which is hard to read. Keep the colored box full-width but cap the
     TEXT to the same narrow measure (matching interleaved practice). The Ladder hint
     is bare text in its div, so its text is wrapped in a <span>. Desktop-only classes
     (phones use their own mob- hints), so no media query is needed. */
  .prog-rhythm-hint p, .misery-hint p, .practice-ladder-hint > span, .practice-ladder-hint > .pl-hint-tip{max-width:48ch;}
  .practice-ladder-hint > span{display:block;}

  /* Example slots */
  .il-examples{margin:20px 0 0;display:flex;flex-direction:column;gap:14px;}
  .il-example{border:1px solid #e6e8eb;border-radius:10px;padding:14px 16px;background:#fafbfc;display:flex;flex-direction:column;gap:10px;}
  .il-example-head{display:flex;align-items:center;justify-content:space-between;}
  .il-example-num{font-weight:800;font-size:13px;letter-spacing:.05em;text-transform:uppercase;color:#4f46e5;}
  .il-remove{border:1px solid #e6c4c4;background:#fff;color:#b91c1c;border-radius:7px;padding:4px 10px;font-size:12px;cursor:pointer;}
  .il-remove:disabled{opacity:.4;cursor:not-allowed;}
  .il-name-field{display:flex;align-items:center;gap:8px;font-size:14px;color:#374151;font-weight:600;}
  .il-name{flex:1;min-width:0;padding:6px 9px;border:1px solid #cfd4da;border-radius:7px;font-size:14px;font-weight:400;}
  .il-field-row{display:flex;align-items:center;gap:20px;flex-wrap:wrap;}
  .il-field{display:inline-flex;align-items:center;gap:6px;font-size:14px;color:#374151;}
  .il-bpm,.il-ticks,.il-goal-input,.il-rest-secs{width:44px;text-align:center;padding:5px 7px;border:1px solid #cfd4da;border-radius:7px;font-size:14px;}   /* narrower + centered (Performance fields) */
  /* Per-excerpt image (Phase C) */
  .il-img-row{align-items:center;}
  .il-img-btn{border:1px solid #c7d2fe;background:#eef2ff;color:#4f46e5;border-radius:7px;padding:5px 12px;font-size:13px;font-weight:700;cursor:pointer;}
  .il-img-thumb{display:inline-flex;align-items:center;gap:6px;}
  .il-img-pic{max-height:46px;max-width:90px;border-radius:6px;border:1px solid #cfd4da;display:block;}
  .il-img-remove{border:1px solid #e6c4c4;background:#fff;color:#b91c1c;border-radius:6px;padding:2px 7px;font-size:12px;line-height:1;cursor:pointer;}
  #il-game-stage{flex:1 1 auto;min-height:80px;overflow:auto;display:flex;align-items:center;align-items:safe center;justify-content:center;justify-content:safe center;margin:12px 0 8px;}
  #il-game-img{display:block;flex:0 0 auto;max-width:none;width:100%;border-radius:10px;border:1px solid #e5e7eb;cursor:zoom-in;}
  #il-game-sizebar{flex:0 0 auto;display:flex;align-items:center;justify-content:center;gap:10px;margin:0 0 6px;}
  #il-game-sizebar[hidden]{display:none;}
  .il-size-label{font-size:12px;color:#6b7280;font-weight:700;}
  #il-size-range{width:160px;max-width:50vw;}
  #il-size-down,#il-size-up{border:1px solid #cfd4da;background:#fff;border-radius:7px;width:32px;height:30px;font-size:16px;font-weight:800;color:#111827;cursor:pointer;}
  #il-game-done{flex:1 1 auto;min-height:0;overflow:auto;}
  /* Full-screen zoom of the excerpt image */
  #il-zoom{position:fixed;inset:0;z-index:100000;background:rgba(0,0,0,.92);display:none;flex-direction:column;}
  #il-zoom.open{display:flex;}
  .il-zoom-bar{flex:0 0 auto;display:flex;align-items:center;justify-content:center;gap:10px;padding:8px;background:rgba(0,0,0,.55);}
  .il-zoom-bar button{background:#fff;border:none;border-radius:8px;height:36px;min-width:40px;font-size:18px;font-weight:800;color:#111827;cursor:pointer;}
  .il-zoom-bar #il-zoom-fit{font-size:14px;padding:0 14px;}
  .il-zoom-bar #il-zoom-close{margin-left:8px;}
  #il-zoom-pct{color:#fff;min-width:56px;text-align:center;font-weight:700;}
  .il-zoom-stage{flex:1 1 auto;overflow:auto;display:flex;align-items:center;align-items:safe center;justify-content:center;justify-content:safe center;cursor:grab;}
  #il-zoom-img{display:block;flex:0 0 auto;}
  /* PDF page picker (Phase C) */
  #il-pdf-picker{position:fixed;inset:0;z-index:100001;background:rgba(17,24,39,.86);display:none;align-items:flex-start;justify-content:center;overflow:auto;padding:20px;box-sizing:border-box;}
  #il-pdf-picker.open{display:flex;}
  .il-pdf-card{background:#fff;border-radius:14px;max-width:900px;width:100%;padding:18px 20px;box-shadow:0 24px 60px rgba(0,0,0,.5);box-sizing:border-box;}
  .il-pdf-head{display:flex;align-items:center;justify-content:space-between;font-weight:800;color:#4f46e5;margin-bottom:14px;}
  .il-pdf-close{background:none;border:none;font-size:22px;color:#9ca3af;cursor:pointer;line-height:1;}
  .il-pdf-grid{display:flex;flex-wrap:wrap;gap:12px;}
  .il-pdf-page{display:flex;flex-direction:column;align-items:center;gap:6px;border:1px solid #cfd4da;border-radius:8px;padding:8px;background:#fafbfc;cursor:pointer;}
  .il-pdf-page:hover{border-color:#4f46e5;box-shadow:inset 0 0 0 1px #4f46e5;}
  .il-pdf-thumb{max-width:150px;max-height:200px;border:1px solid #e5e7eb;background:#fff;}
  .il-pdf-pagenum{font-size:12px;font-weight:700;color:#374151;}
  .il-pdf-note{font-size:12px;color:#6b7280;width:100%;}

  .il-examples-actions{display:flex;align-items:center;gap:14px;margin:14px 0 0;}
  .il-add-btn{border:1px dashed #a5b4fc;background:#eef2ff;color:#4f46e5;border-radius:9px;padding:8px 14px;font-weight:700;font-size:14px;cursor:pointer;}
  .il-add-btn:disabled{opacity:.45;cursor:not-allowed;}
  .il-count-note{font-size:12px;color:#6b7280;}

  .il-options-head{font-weight:800;font-size:15px;letter-spacing:.05em;text-transform:uppercase;color:#4f46e5;margin:24px 0 0;padding-top:18px;border-top:1px solid #e6e8eb;}
  .il-options{display:flex;flex-direction:column;gap:14px;margin:10px 0 18px;}
  .il-line{display:flex;align-items:center;gap:8px;font-size:14px;color:#374151;}
  .il-order-group{display:flex;align-items:center;gap:16px;flex-wrap:wrap;}
  .il-order-label{font-weight:800;font-size:13px;letter-spacing:.05em;text-transform:uppercase;color:#4f46e5;}
  .il-radio{display:inline-flex;align-items:center;gap:6px;font-size:14px;color:#374151;}
  .il-soon{font-style:italic;color:#9ca3af;font-size:12px;}
  .il-goal-note{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:14px;color:#374151;}
  .il-goal-hint{color:#6b7280;font-size:13px;}
  .il-rest-group{display:flex;flex-direction:column;gap:8px;}
  .il-rest-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
  .il-rest-row input:disabled{opacity:.5;}
  .il-rest-row.off{opacity:.55;}
  .il-start-btn{display:inline-flex;align-items:center;background:#4f46e5;color:#fff;border:none;border-radius:10px;padding:12px 20px;font-weight:800;font-size:15px;cursor:pointer;box-shadow:0 6px 16px rgba(79,70,229,.3);}
  .il-start-btn:hover{background:#4338ca;}

  /* ── Interleaved Routines for Daily Practice — setup block (Phase 1). Reuses the
     .interleave-block / .il-* visual classes; only the timer-specific controls below
     are new. ── */
  .idr-time-field,.idr-total-field,.idr-setall{display:flex;align-items:center;gap:6px;flex-wrap:wrap;font-size:14px;color:#374151;}
  .idr-time-label{font-weight:600;color:#374151;}
  .idr-min,.idr-sec,.idr-total-min,.idr-setall-min,.idr-setall-sec{width:56px;padding:5px 7px;border:1px solid #cfd4da;border-radius:7px;font-size:14px;}
  .idr-notes-btn{border:1px solid #c7d2fe;background:#eef2ff;color:#4f46e5;border-radius:7px;padding:5px 12px;font-size:13px;font-weight:700;cursor:pointer;}
  .idr-notes-btn.has{background:#e0e7ff;}
  .idr-notes{width:100%;max-width:48ch;box-sizing:border-box;margin-top:8px;padding:8px 10px;border:1px solid #cfd4da;border-radius:8px;font-size:14px;font-family:inherit;line-height:1.5;resize:vertical;min-height:64px;}
  .idr-notes[hidden]{display:none;}
  .idr-setall-btn{border:1px solid #cfd4da;background:#fff;color:#374151;border-radius:7px;padding:6px 12px;font-size:13px;font-weight:700;cursor:pointer;}
  .idr-metro-row{gap:10px;}
  .idr-metro-label{font-weight:600;color:#374151;font-size:14px;}
  .idr-metro-toggle{border:1px solid #5eead4;background:#f0fdfa;color:#0d9488;border-radius:7px;padding:5px 12px;font-size:13px;font-weight:700;cursor:pointer;}
  .idr-metro-toggle.on{background:#0d9488;color:#fff;border-color:#0d9488;}
  .idr-bpm-field{display:inline-flex;align-items:center;gap:6px;font-size:14px;color:#374151;}
  .idr-bpm-field[hidden]{display:none;}
  .idr-bpm{width:64px;padding:5px 7px;border:1px solid #cfd4da;border-radius:7px;font-size:14px;}
  /* Daily Practice number fields: narrower + centered. Scoped to #idr-block so the
     shared .idr-* fields in Rehab/Performance are untouched. */
  #idr-block .idr-min, #idr-block .idr-sec, #idr-block #idr-total-min,
  #idr-block .idr-setall-min, #idr-block .idr-setall-sec, #idr-block .idr-bpm{
    width:44px; text-align:center;
  }
  .idr-metro-hint{font-style:italic;color:#9ca3af;font-size:12px;}
  .idr-metro-hint[hidden]{display:none;}

  /* ── THE RECURRING NIGHTMARE (midnight violet) — single-passage interval-timer
     trainer. Self-contained card base like the other Practice Tools; reuses the
     .il-example / .idr-* field classes for its passage row, re-tinted violet. ── */
  .metro-advanced .nightmare-block{
    background:#ffffff; border:1px solid #f0e6d6; border-top:3px solid #4c1d95;
    border-radius:14px; padding:20px 22px; box-shadow:0 6px 20px rgba(0,0,0,.06);
    box-sizing:border-box; text-align:left;
  }
  .metro-advanced .nightmare-title{display:flex;align-items:center;gap:10px;color:#4c1d95;font-weight:800;font-size:20px;margin-bottom:14px;}
  /* Subtitle stacked + centered under the title text (icon stays left, centered
     against the two-line block) — same pattern as Misery's "(Block Practice)". */
  .nightmare-title-text{text-align:center;}
  .nightmare-title-sub{display:block;font-weight:normal;font-size:16px;color:#6d28d9;}
  .metro-adv-icon.nightmare{background:#ede9fe;color:#4c1d95;}
  .nightmare-hint{font-size:14px;line-height:1.6;color:#374151;text-align:left;margin:0 0 8px;padding:16px 18px;background:#f5f3ff;border-left:4px solid #4c1d95;border-radius:8px;}
  .nightmare-hint p{margin:0 0 12px;max-width:48ch;}
  .nightmare-hint p:last-child{margin-bottom:0;}
  .nightmare-block .il-example{margin-top:16px;}
  /* Re-tint the borrowed teal toggle + indigo head to the card's violet. */
  .nightmare-block .idr-metro-toggle{border-color:#c4b5fd;background:#f5f3ff;color:#6d28d9;}
  .nightmare-block .idr-metro-toggle.on{background:#6d28d9;color:#fff;border-color:#6d28d9;}
  .nightmare-block .idr-metro-label, .nightmare-block .il-options-head{color:#4c1d95;}
  .nightmare-spacing-group{display:flex;flex-direction:column;gap:12px;margin-top:4px;}
  .nightmare-block .nm-num{width:44px;text-align:center;padding:5px 7px;border:1px solid #cfd4da;border-radius:7px;font-size:14px;}
  .nightmare-block .nm-num:disabled{opacity:.5;}
  .nightmare-estimate{margin-top:2px;font-style:italic;}
  /* ID-scoped (not .metro-advanced) so the violet/running colors travel with the
     block when it's relocated into the mobile card on phones — same pattern as
     #idr-block .il-start-btn. */
  #nightmare-block .nightmare-start-btn{background:#4c1d95;box-shadow:0 6px 16px rgba(76,29,149,.3);margin-top:4px;}
  #nightmare-block .nightmare-start-btn:hover{background:#3b1378;}
  #nightmare-block .nightmare-start-btn.nm-running{background:#b91c1c;box-shadow:0 6px 16px rgba(185,28,28,.3);}
  #nightmare-block .nightmare-start-btn.nm-running:hover{background:#991b1b;}
  /* MY RECURRING NIGHTMARE ROUTINES — recolor the shared (indigo) routine UI to violet. */
  .nm-routines .il-routines-head{color:#4c1d95;}
  .nm-routines .il-add-btn{border-color:#c4b5fd;background:#f5f3ff;color:#6d28d9;}
  .nm-routines .il-rtoolbar-name{color:#4c1d95;}
  .nm-routines .il-rdrop-opt.sel{background:#ede9fe;}
  .nm-routines .il-rdrop-opt:hover{background:#f5f3ff;}
  /* MY HANDS-FREE PRACTICE LADDER ROUTINES — recolor the shared (indigo) routine UI to amber. */
  .ladder-routines .il-routines-head{color:#9a3412;}
  .ladder-routines .il-add-btn{border-color:#fed7aa;background:#fff7ed;color:#c2410c;}
  .ladder-routines .il-rtoolbar{border-color:#fed7aa;background:#fff7ed;}
  .ladder-routines .il-rtoolbar-name{color:#9a3412;}
  .ladder-routines .il-rdrop-opt.sel{background:#ffedd5;}
  .ladder-routines .il-rdrop-opt:hover{background:#fff7ed;}
  /* Breathing room between the routines block and the TURN ON/OFF line below it. */
  #ladder-routines-block{margin-bottom:20px;}

  /* MY "SEVEN LEVELS OF MISERY" BLOCK PRACTICE ROUTINES — recolor the shared (indigo)
     routine UI to the Misery crimson-pink, and style the passage-name field. */
  .misery-routines .il-routines-head{color:#9d174d;}
  .misery-routines .il-add-btn{border-color:#fbcfe8;background:#fdf2f8;color:#be185d;}
  .misery-routines .il-rtoolbar{border-color:#fbcfe8;background:#fdf2f8;}
  .misery-routines .il-rtoolbar-name{color:#9d174d;}
  .misery-routines .il-rdrop-opt.sel{background:#fce7f3;}
  .misery-routines .il-rdrop-opt:hover{background:#fdf2f8;}
  #misery-routines-block{margin-bottom:20px;}
  .metro-advanced .misery-block label.misery-name-line{display:block;margin-bottom:16px;color:#db2777;}
  .misery-name-input{margin-left:10px;padding:6px 9px;border:1px solid #f3a9cb;border-radius:7px;font-size:15px;min-width:260px;max-width:100%;}
  .misery-name-input:disabled{opacity:.5;}
  /* Optional passage image/PDF + per-passage practice notes (mirrors Trouble Spot
     Rehab) — re-tint the borrowed indigo .il-* controls to the Misery crimson-pink. */
  .misery-media{margin:0 0 16px;background:#fdf2f8;border-color:#f9c9e0;gap:8px;}
  .misery-media .il-img-btn,.misery-media .idr-notes-btn{border-color:#f7b6d2;background:#fff;color:#be185d;}
  .misery-media .idr-notes-btn.has{background:#fce7f1;}
  .misery-media .idr-notes{border-color:#f3a9cb;}
  /* Mobile Misery card image/notes thin views — pink-tinted, full-width. */
  #mob-misery-media .il-img-btn,#mob-misery-media .idr-notes-btn{border-color:#f7b6d2;background:#fff;color:#be185d;}
  #mob-misery-media .idr-notes-btn.has{background:#fce7f1;}
  #mob-misery-media .idr-notes{border-color:#f3a9cb;max-width:100%;}
  #mob-misery-media .il-field-row{gap:10px;}

  /* ── Recurring Nightmare — running UI: floating status panel + full-screen ring
     takeover (built in JS). Midnight violet to match the card. ── */
  .nm-panel{position:fixed;right:16px;bottom:16px;z-index:9200;width:300px;max-width:calc(100vw - 24px);background:#fff;border:1px solid #e5e7eb;border-top:3px solid #4c1d95;border-radius:12px;box-shadow:0 18px 48px rgba(0,0,0,.28);font-family:Arial,sans-serif;cursor:move;user-select:none;-webkit-user-select:none;touch-action:none;}
  .nm-panel button{cursor:pointer;}
  .nm-panel[hidden]{display:none;}
  .nm-panel-head{display:flex;align-items:center;justify-content:space-between;gap:8px;background:#4c1d95;color:#fff;padding:9px 12px;border-radius:9px 9px 0 0;font-weight:800;font-size:13px;letter-spacing:.02em;cursor:move;touch-action:none;user-select:none;-webkit-user-select:none;}
  .nm-panel-head button{background:rgba(255,255,255,.18);border:none;color:#fff;border-radius:6px;width:24px;height:24px;font-size:14px;line-height:1;cursor:pointer;}
  .nm-panel-head button:hover{background:rgba(255,255,255,.32);}
  .nm-panel-body{padding:12px 14px;max-height:64vh;overflow:auto;touch-action:none;}
  .nm-panel-name{font-weight:800;font-size:15px;color:#111827;word-break:break-word;margin-bottom:10px;}
  /* RING state inside the panel */
  .nm-ring-eyebrow{font-weight:800;font-size:12px;letter-spacing:.04em;text-transform:uppercase;color:#6d28d9;margin-bottom:6px;}
  .nm-ring-name{font-weight:900;font-size:18px;color:#111827;line-height:1.2;word-break:break-word;margin-bottom:8px;}
  .nm-ring-notes{font-size:13px;color:#374151;white-space:pre-wrap;background:#f5f3ff;border-left:3px solid #4c1d95;border-radius:6px;padding:8px 10px;margin-bottom:8px;}
  .nm-ring-reminder{font-size:12px;line-height:1.5;color:#6b7280;margin-bottom:12px;}
  .nm-btn-block{display:block;width:100%;justify-content:center;text-align:center;font-size:13px;padding:11px 12px;margin-bottom:8px;}
  .nm-panel-clocks{display:flex;gap:10px;}
  .nm-panel-clocks > div{flex:1;text-align:center;background:#f5f3ff;border:1px solid #ddd6fe;border-radius:10px;padding:8px 6px;}
  .nm-clk-lbl{display:block;font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#6b7280;}
  .nm-clk-val{display:block;font-size:22px;font-weight:800;color:#4c1d95;font-variant-numeric:tabular-nums;margin-top:2px;}
  .nm-panel-rings{font-size:13px;color:#6b7280;margin:10px 0;text-align:center;}
  .nm-btn-ghost-sm{display:block;width:100%;border:1px solid #cfd4da;background:#fff;color:#374151;border-radius:8px;padding:7px;font-weight:700;font-size:13px;cursor:pointer;}
  .nm-btn-ghost-sm:hover{background:#f9fafb;}
  .nm-overlay{position:fixed;inset:0;z-index:100002;background:rgba(30,16,64,.93);display:flex;align-items:center;justify-content:center;padding:20px;box-sizing:border-box;overflow:auto;}
  .nm-overlay[hidden]{display:none;}
  .nm-overlay-card{background:#fff;border-radius:16px;max-width:560px;width:100%;padding:26px 28px;box-shadow:0 30px 80px rgba(0,0,0,.5);box-sizing:border-box;text-align:center;}
  .nm-ov-eyebrow{font-weight:800;font-size:13px;letter-spacing:.05em;text-transform:uppercase;color:#6d28d9;margin-bottom:10px;}
  .nm-ov-name{font-weight:900;font-size:26px;color:#111827;line-height:1.2;word-break:break-word;}
  .nm-ov-notes{margin-top:12px;font-size:15px;color:#374151;white-space:pre-wrap;text-align:left;background:#f5f3ff;border-left:4px solid #4c1d95;border-radius:8px;padding:12px 14px;}
  .nm-ov-imgwrap{margin-top:14px;}
  .nm-ov-imgwrap img{max-width:100%;max-height:48vh;border-radius:10px;border:1px solid #e5e7eb;}
  .nm-ov-reminder{margin-top:16px;font-size:14px;line-height:1.55;color:#6b7280;}
  .nm-ov-btns{margin-top:20px;display:flex;gap:24px;justify-content:center;flex-wrap:wrap;}
  .nm-btn-primary{background:#4c1d95;color:#fff;border:none;border-radius:10px;padding:12px 22px;font-weight:800;font-size:15px;cursor:pointer;box-shadow:0 6px 16px rgba(76,29,149,.3);}
  .nm-btn-primary:hover{background:#3b1378;}
  .nm-btn-ghost{background:#fff;color:#4c1d95;border:1px solid #c4b5fd;border-radius:10px;padding:12px 18px;font-weight:700;font-size:14px;cursor:pointer;}
  .nm-btn-ghost:hover{background:#f5f3ff;}
  /* Recurring Nightmare — music window: the passage image in its own draggable,
     corner-resizable, scrollable window (mirrors the IDR player; midnight violet). */
  .nm-music{position:fixed;z-index:9201;width:min(420px, calc(100vw - 16px));height:380px;min-width:200px;min-height:140px;background:#fff;border:1px solid #e5e7eb;border-top:3px solid #4c1d95;border-radius:12px;box-shadow:0 18px 48px rgba(0,0,0,.28);box-sizing:border-box;display:flex;flex-direction:column;overflow:hidden;}
  .nm-music[hidden]{display:none;}
  .nm-music-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 12px;background:#4c1d95;color:#fff;cursor:move;user-select:none;-webkit-user-select:none;touch-action:none;flex:0 0 auto;}
  .nm-music-title{font-weight:800;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-left:14px;}
  .nm-music-head button{background:rgba(255,255,255,.18);border:none;color:#fff;border-radius:6px;width:26px;height:26px;font-size:16px;line-height:1;font-weight:800;cursor:pointer;}
  .nm-music-head button:hover{background:rgba(255,255,255,.32);}
  .nm-music-body{flex:1 1 auto;min-height:0;padding:0;background:#f3f4f6;overflow:auto;cursor:move;touch-action:none;}
  .nm-music-body img{display:block;width:100%;height:auto;}
  .nm-music.min{height:auto !important;min-height:0;}
  .nm-music.min .nm-music-body{display:none;}
  .nm-music.min .nm-rsz{display:none;}
  .nm-rsz{position:absolute;width:22px;height:22px;z-index:6;touch-action:none;}
  .nm-rsz-nw{top:0;left:0;cursor:nwse-resize;}
  .nm-rsz-sw{bottom:0;left:0;cursor:nesw-resize;}
  .nm-rsz-se{bottom:0;right:0;cursor:nwse-resize;}
  .nm-rsz::after{content:"";position:absolute;width:14px;height:14px;background-position:center;background-repeat:no-repeat;background-size:14px 14px;opacity:.9;}
  .nm-rsz-nw::after{top:3px;left:3px;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 15 15'><g fill='none' stroke='%23ffffff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><line x1='3' y1='3' x2='12' y2='12'/><polyline points='3,6.5 3,3 6.5,3'/><polyline points='12,8.5 12,12 8.5,12'/></g></svg>");}
  .nm-rsz-sw::after{bottom:3px;left:3px;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 15 15'><g fill='none' stroke='%234c1d95' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><line x1='12' y1='3' x2='3' y2='12'/><polyline points='8.5,3 12,3 12,6.5'/><polyline points='3,8.5 3,12 6.5,12'/></g></svg>");}
  .nm-rsz-se::after{bottom:3px;right:3px;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 15 15'><g fill='none' stroke='%234c1d95' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><line x1='3' y1='3' x2='12' y2='12'/><polyline points='3,6.5 3,3 6.5,3'/><polyline points='12,8.5 12,12 8.5,12'/></g></svg>");}

  /* Seven Levels of Misery — in-game music window: the passage image in its own
     draggable, corner-resizable, minimizable window over the dark game (mirrors the
     Trouble Spot Rehab / IDR music window). z-index sits ABOVE #misery-game-backdrop
     (10000) so it floats over the modal; it's a child of the backdrop, so it hides
     with the game. The backdrop sets no transform, so this position:fixed child is
     not clipped by the backdrop's overflow:hidden. Amber-on-dark to match the game. */
  #misery-music{position:fixed;z-index:10001;top:64px;right:24px;width:min(380px, calc(100vw - 16px));height:340px;min-width:200px;min-height:140px;background:#1c1917;border:1px solid #f59e0b;border-top:3px solid #f59e0b;border-radius:12px;box-shadow:0 18px 48px rgba(0,0,0,.5);box-sizing:border-box;display:flex;flex-direction:column;overflow:hidden;}
  #misery-music[hidden]{display:none;}
  .misery-music-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 12px;background:#92400e;color:#fde68a;cursor:move;user-select:none;-webkit-user-select:none;touch-action:none;flex:0 0 auto;}
  .misery-music-title{font-weight:800;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-left:14px;}
  .misery-music-head button{background:rgba(255,255,255,.18);border:none;color:#fff;border-radius:6px;width:26px;height:26px;font-size:16px;line-height:1;font-weight:800;cursor:pointer;}
  .misery-music-head button:hover{background:rgba(255,255,255,.32);}
  .misery-music-body{flex:1 1 auto;min-height:0;padding:0;background:#0c0a09;overflow:auto;cursor:move;touch-action:none;}
  .misery-music-body img{display:block;width:100%;height:auto;}
  #misery-music.min{height:auto !important;min-height:0;}
  #misery-music.min .misery-music-body{display:none;}
  #misery-music.min .misery-rsz{display:none;}
  .misery-rsz{position:absolute;width:22px;height:22px;z-index:6;touch-action:none;}
  .misery-rsz-nw{top:0;left:0;cursor:nwse-resize;}
  .misery-rsz-sw{bottom:0;left:0;cursor:nesw-resize;}
  .misery-rsz-se{bottom:0;right:0;cursor:nwse-resize;}
  .misery-rsz::after{content:"";position:absolute;width:14px;height:14px;background-position:center;background-repeat:no-repeat;background-size:14px 14px;opacity:.9;}
  .misery-rsz-nw::after{top:3px;left:3px;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 15 15'><g fill='none' stroke='%23fbbf24' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><line x1='3' y1='3' x2='12' y2='12'/><polyline points='3,6.5 3,3 6.5,3'/><polyline points='12,8.5 12,12 8.5,12'/></g></svg>");}
  .misery-rsz-sw::after{bottom:3px;left:3px;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 15 15'><g fill='none' stroke='%23fbbf24' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><line x1='12' y1='3' x2='3' y2='12'/><polyline points='8.5,3 12,3 12,6.5'/><polyline points='3,8.5 3,12 6.5,12'/></g></svg>");}
  .misery-rsz-se::after{bottom:3px;right:3px;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 15 15'><g fill='none' stroke='%23fbbf24' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><line x1='3' y1='3' x2='12' y2='12'/><polyline points='3,6.5 3,3 6.5,3'/><polyline points='12,8.5 12,12 8.5,12'/></g></svg>");}
  /* Passage practice note shown inside the game (read-only) when the loaded passage has one. */
  #misery-game-note{display:none;margin:0 0 12px;padding:10px 14px;background:#292524;border:1px solid #b45309;border-left:4px solid #f59e0b;border-radius:8px;color:#fde68a;font-size:14px;line-height:1.5;text-align:left;white-space:pre-wrap;word-break:break-word;}
  #misery-game-note.show{display:block;}
  #misery-game-note .misery-game-note-lbl{display:block;font-size:11px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:#f59e0b;margin-bottom:3px;}

  /* ── Interleaved Routines for Daily Practice — floating player (Phase 3). Two
     draggable windows over a pointer-events:none layer so the live metronome below
     stays fully usable. ── */
  .idr-ov{position:fixed;inset:0;z-index:9000;pointer-events:none;}
  .idr-ov[hidden]{display:none;}
  .idr-win{position:fixed;pointer-events:auto;background:#fff;border:1px solid #e5e7eb;border-top:3px solid #0d9488;border-radius:12px;box-shadow:0 18px 48px rgba(0,0,0,.28);box-sizing:border-box;display:flex;flex-direction:column;overflow:hidden;}
  .idr-win-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 12px;background:#0d9488;color:#fff;cursor:move;user-select:none;-webkit-user-select:none;touch-action:none;flex:0 0 auto;}
  .idr-win-title{font-weight:800;font-size:14px;letter-spacing:.02em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  .idr-win-head-btns{display:flex;align-items:center;gap:6px;flex:0 0 auto;}
  .idr-win-head button{background:rgba(255,255,255,.18);border:none;color:#fff;border-radius:6px;width:26px;height:26px;font-size:16px;line-height:1;font-weight:800;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;}
  .idr-win-head button:hover{background:rgba(255,255,255,.32);}
  .idr-win-body{padding:14px 16px;overflow:auto;}
  /* The panel body owns touch so one-finger drag / two-finger pinch work reliably
     (touch-action:none on the panel root alone doesn't suppress pan on a scrollable
     child in every browser). The notes textarea re-enables its own touch below. */
  .idr-panel .idr-win-body{touch-action:none;}
  /* control panel */
  .idr-panel{width:340px;max-width:calc(100vw - 16px);max-height:calc(100vh - 48px);cursor:move;user-select:none;-webkit-user-select:none;touch-action:none;}
  .idr-panel button{cursor:pointer;}
  /* The notes field stays selectable/editable + touch-scrollable even though the panel drags from anywhere. */
  #idr-notes-edit{user-select:text;-webkit-user-select:text;cursor:auto;touch-action:auto;}
  .idr-panel.flash{animation:idrFlash .7s ease;}
  @keyframes idrFlash{0%{background:#fff;}18%{background:#ccfbf1;}100%{background:#fff;}}
  .idr-now-name{font-weight:800;font-size:18px;color:#111827;line-height:1.25;word-break:break-word;}
  .idr-now-pos{font-size:13px;color:#6b7280;margin-top:3px;}
  .idr-clocks{display:flex;gap:12px;margin:14px 0;}
  .idr-clock{flex:1;text-align:center;background:#f0fdfa;border:1px solid #99f6e4;border-radius:10px;padding:8px 6px;}
  .idr-clock-lbl{display:block;font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#6b7280;}
  .idr-clock-val{display:block;font-size:26px;font-weight:800;color:#0d9488;font-variant-numeric:tabular-nums;margin-top:2px;}
  .idr-clock.over .idr-clock-val{color:#b91c1c;}
  .idr-notes-edit-label{display:block;font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#6b7280;margin:0 0 4px;}
  .idr-notes-edit{width:100%;box-sizing:border-box;font-size:14px;line-height:1.5;color:#374151;background:#fffbeb;border:1px solid #fde68a;border-radius:8px;padding:8px 10px;margin:0 0 12px;font-family:inherit;resize:vertical;min-height:60px;max-height:200px;}
  .idr-ctrls{display:flex;gap:8px;}
  .idr-ctrls button{flex:1;border:1px solid #cfd4da;background:#fff;color:#374151;border-radius:9px;padding:9px 6px;font-weight:700;font-size:13px;cursor:pointer;}
  .idr-ctrls button:hover{background:#f3f4f6;}
  #idr-pause{background:#0d9488;color:#fff;border-color:#0d9488;}
  #idr-pause:hover{background:#0f766e;}
  #idr-pause.paused{background:#16a34a;border-color:#16a34a;}
  .idr-done{font-size:15px;color:#166534;font-weight:700;line-height:1.5;}
  /* music window — draggable + corner-resizable + minimizable */
  .idr-music{width:min(420px, calc(100vw - 16px));height:380px;min-width:220px;min-height:160px;}
  .idr-music[hidden]{display:none;}
  .idr-music .idr-win-body{flex:1 1 auto;padding:0;background:#f3f4f6;display:block;overflow:auto;cursor:move;touch-action:none;user-select:none;-webkit-user-select:none;}
  #idr-music-img{display:block;width:100%;height:auto;}
  .idr-music.min{height:auto !important;min-height:0;}
  .idr-music.min .idr-win-body{display:none;}
  #idr-music-title{padding-left:14px;}   /* keep the passage name clear of the upper-left resize arrow */
  /* Custom resize grips — native CSS resize is bottom-right only, so we add our own
     on three corners (NE is skipped: the minimize button lives there). Bigger than the
     native handle and visibly gripped for easy grabbing. */
  .idr-rsz{position:absolute;width:22px;height:22px;z-index:6;touch-action:none;}
  .idr-rsz-nw{top:0;left:0;cursor:nwse-resize;}
  .idr-rsz-sw{bottom:0;left:0;cursor:nesw-resize;}
  /* Diagonal two-headed resize arrows, drawn as SVG so they render crisply and
     identically everywhere (font glyphs vary by platform). White on the upper-left
     grip (over the teal header); teal on the lower-left grip (over the image). */
  .idr-rsz::after{content:"";position:absolute;width:14px;height:14px;background-position:center;background-repeat:no-repeat;background-size:14px 14px;opacity:.9;}
  .idr-rsz-nw::after{top:3px;left:3px;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 15 15'><g fill='none' stroke='%23ffffff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><line x1='3' y1='3' x2='12' y2='12'/><polyline points='3,6.5 3,3 6.5,3'/><polyline points='12,8.5 12,12 8.5,12'/></g></svg>");}
  .idr-rsz-sw::after{bottom:3px;left:3px;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 15 15'><g fill='none' stroke='%230d9488' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><line x1='12' y1='3' x2='3' y2='12'/><polyline points='8.5,3 12,3 12,6.5'/><polyline points='3,8.5 3,12 6.5,12'/></g></svg>");}
  .idr-music.min .idr-rsz{display:none;}
  .idr-done-tip{display:block;margin-top:8px;font-weight:600;color:#374151;}

  /* ── Interleaved Routines for Daily Practice — teal theme overrides (Phase 3.1).
     The setup block reuses the shared indigo .interleave-* / .il-* classes, so we
     recolor just this block to teal to distinguish it from the indigo "for
     Performance" block (ladder is orange, misery pink — teal is clear of all). ── */
  #idr-block{border-top-color:#0d9488;}
  #idr-block .interleave-title{color:#0d9488;}
  #idr-block .metro-adv-icon.interleave{background:#ccfbf1;color:#0d9488;}
  #idr-block .interleave-hint{background:#f0fdfa;border-left-color:#0d9488;}
  #idr-block .il-hint-instr{color:#0d9488;}
  #idr-block .il-why-summary{color:#0d9488;}
  #idr-block .il-routines-head{color:#0d9488;}
  #idr-block .il-example-num{color:#0d9488;}
  #idr-block .il-options-head{color:#0d9488;text-align:left;}
  #idr-block .il-options{text-align:left;}
  #interleave-block .il-options-head{text-align:left;}
  #interleave-block .il-options{text-align:left;}
  #interleave-block .il-start-btn{display:flex;width:fit-content;}   /* left-align (was centered) */
  #idr-block .il-order-label{color:#0d9488;}
  #idr-block .il-add-btn{border-color:#5eead4;background:#f0fdfa;color:#0d9488;}
  #idr-block .il-start-btn{background:#0d9488;box-shadow:0 6px 16px rgba(13,148,136,.3);display:flex;width:fit-content;}   /* left-align (was inline-flex, centered by the page) */
  #idr-block .il-start-btn:hover{background:#0f766e;}
  #idr-block .il-img-btn{border-color:#5eead4;background:#f0fdfa;color:#0d9488;}
  #idr-block .idr-notes-btn{border-color:#5eead4;background:#f0fdfa;color:#0d9488;}
  #idr-block .idr-notes-btn.has{background:#ccfbf1;}
  #idr-block .il-rtoolbar{border-color:#5eead4;background:#f0fdfa;}
  #idr-block .il-rtoolbar-name{color:#0d9488;}
  /* Routine toolbar (Rename / Share / Close / Delete): bigger, more side
     padding, spread further apart than the shared .prog-presets-icon base.
     Same treatment for the Performance block's toolbar (#interleave-block),
     whose toolbar also has a Practice Notes button.
     !important on padding survives the page-wide <=1000px *:not(.radial-slider *)
     reset that zeroes horizontal padding (line ~346). */
  #idr-block .il-rtoolbar-btns,
  #interleave-block .il-rtoolbar-btns,
  #nightmare-block .il-rtoolbar-btns,
  .misery-routines .il-rtoolbar-btns,
  .ladder-routines .il-rtoolbar-btns,
  .il-notes-actions{gap:12px;}
  #idr-block .il-rtoolbar-btns .prog-presets-icon,
  #interleave-block .il-rtoolbar-btns .prog-presets-icon,
  #nightmare-block .il-rtoolbar-btns .prog-presets-icon,
  .misery-routines .il-rtoolbar-btns .prog-presets-icon,
  .ladder-routines .il-rtoolbar-btns .prog-presets-icon,
  .il-notes-actions .prog-presets-icon{padding:7px 14px !important;font-size:13px;}
  #idr-block .il-rdrop-opt.sel{background:#ccfbf1;}
  #idr-block .il-rdrop-opt:hover{background:#f0fdfa;}

  /* ── Interleaved Practice player overlay (Phase A2) — full-screen modal,
        sibling of the Misery backdrop; indigo-themed. ── */
  #il-game-backdrop{display:none;position:fixed;inset:0;z-index:99999;background:rgba(17,24,39,.86);align-items:center;justify-content:center;padding:20px;box-sizing:border-box;}
  #il-game-backdrop.open{display:flex;}
  #il-game{background:#fff;border-radius:18px;max-width:980px;width:min(96vw,980px);max-height:94vh;display:flex;flex-direction:column;overflow:hidden;padding:24px 26px 28px;box-shadow:0 24px 60px rgba(0,0,0,.5);box-sizing:border-box;text-align:center;cursor:move;user-select:none;-webkit-user-select:none;touch-action:none;position:relative;}
  #il-game button{cursor:pointer;}
  .il-game-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;text-align:left;cursor:move;touch-action:none;}
  .il-game-draghint{align-self:center;flex:0 0 auto;font-size:11px;font-weight:700;letter-spacing:.04em;color:#9ca3af;white-space:nowrap;pointer-events:none;}
  /* Interleaved Performance — passage image window (same as Misery/Rehab/IDR; indigo).
     z-index above the il-game backdrop (99999); a child of it, so it hides with the game.
     Uncapped so it can grow past the viewport — drag it to pan to any part. */
  #il-music{position:fixed;z-index:100000;top:64px;right:24px;width:min(420px, calc(100vw - 16px));height:380px;min-width:200px;min-height:140px;background:#fff;border:1px solid #e5e7eb;border-top:3px solid #4f46e5;border-radius:12px;box-shadow:0 18px 48px rgba(0,0,0,.4);box-sizing:border-box;display:flex;flex-direction:column;overflow:hidden;}
  #il-music[hidden]{display:none;}
  .il-music-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 12px;background:#4f46e5;color:#fff;cursor:move;user-select:none;-webkit-user-select:none;touch-action:none;flex:0 0 auto;}
  .il-music-title{font-weight:800;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-left:14px;}
  .il-music-head button{background:rgba(255,255,255,.18);border:none;color:#fff;border-radius:6px;width:26px;height:26px;font-size:16px;line-height:1;font-weight:800;cursor:pointer;}
  .il-music-head button:hover{background:rgba(255,255,255,.32);}
  .il-music-body{flex:1 1 auto;min-height:0;padding:0;background:#f3f4f6;overflow:auto;cursor:move;touch-action:none;}
  .il-music-body img{display:block;width:100%;height:auto;}
  #il-music.min{height:auto !important;min-height:0;}
  #il-music.min .il-music-body{display:none;}
  #il-music.min .il-rsz{display:none;}
  .il-rsz{position:absolute;width:22px;height:22px;z-index:6;touch-action:none;}
  .il-rsz-nw{top:0;left:0;cursor:nwse-resize;}
  .il-rsz-sw{bottom:0;left:0;cursor:nesw-resize;}
  .il-rsz-se{bottom:0;right:0;cursor:nwse-resize;}
  .il-rsz::after{content:"";position:absolute;width:14px;height:14px;background-position:center;background-repeat:no-repeat;background-size:14px 14px;opacity:.9;}
  .il-rsz-nw::after{top:3px;left:3px;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 15 15'><g fill='none' stroke='%23ffffff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><line x1='3' y1='3' x2='12' y2='12'/><polyline points='3,6.5 3,3 6.5,3'/><polyline points='12,8.5 12,12 8.5,12'/></g></svg>");}
  .il-rsz-sw::after{bottom:3px;left:3px;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 15 15'><g fill='none' stroke='%234f46e5' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><line x1='12' y1='3' x2='3' y2='12'/><polyline points='8.5,3 12,3 12,6.5'/><polyline points='3,8.5 3,12 6.5,12'/></g></svg>");}
  .il-rsz-se::after{bottom:3px;right:3px;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 15 15'><g fill='none' stroke='%234f46e5' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><line x1='3' y1='3' x2='12' y2='12'/><polyline points='3,6.5 3,3 6.5,3'/><polyline points='12,8.5 12,12 8.5,12'/></g></svg>");}
  #il-game-title{margin:0;font-size:18px;font-weight:800;color:#4f46e5;letter-spacing:.02em;}
  #il-game-sub{font-size:16px;color:#6b7280;margin-top:3px;}
  .il-game-close{background:none;border:none;font-size:30px;color:#9ca3af;cursor:pointer;line-height:1;padding:0 4px;flex:0 0 auto;}
  .il-game-close:hover{color:#111827;}
  #il-game-passage{font-size:26px;font-weight:800;color:#111827;margin:22px 0 6px;word-break:break-word;}
  #il-game-passage .il-passage-meta{display:block;font-size:13px;font-weight:600;color:#6b7280;margin-top:6px;}
  .il-streak{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin:14px 0 6px;}
  .il-pip{width:18px;height:18px;border-radius:50%;border:2px solid #c7d2fe;background:#eef2ff;box-sizing:border-box;}
  .il-pip.on{background:#4f46e5;border-color:#4f46e5;}
  .il-game-msg{min-height:22px;font-size:16px;color:#374151;margin:10px 0;}
  .il-game-msg.good{color:#15803d;font-weight:700;}
  .il-game-msg.bad{color:#b91c1c;font-weight:700;}
  .il-game-msg.il-msg-big{font-size:22px;font-weight:800;line-height:1.3;}
  #il-game-btns{display:flex;gap:14px;justify-content:center;margin:18px 0 6px;flex-wrap:wrap;}
  #il-perfect,#il-mistake{border:none;border-radius:12px;padding:16px 22px;font-size:16px;font-weight:800;cursor:pointer;color:#fff;flex:1 1 180px;max-width:240px;}
  #il-perfect{background:#16a34a;} #il-perfect:hover{background:#15803d;}
  #il-mistake{background:#dc2626;} #il-mistake:hover{background:#b91c1c;}
  #il-perfect:disabled,#il-mistake:disabled{opacity:.5;cursor:default;}
  #il-game-progress{font-size:15px;color:#6b7280;margin-top:14px;}
  #il-game-done{margin:18px 0 6px;}
  /* The PERFECT / MISTAKE buttons are set [hidden] at end-of-session and during
     between-lap rests, but #il-game-btns{display:flex} was overriding the attribute,
     leaving them on screen (disabled/greyed). Make the hidden attribute win. */
  #il-game-btns[hidden]{display:none !important;}
  /* Tally/summary screen (renderEval adds .il-eval-on to the backdrop): the play-only
     chrome is emptied but its margins / min-height still open a gap above the summary.
     Collapse passage, streak and message so the summary sits just below the header. */
  #il-game-backdrop.il-eval-on #il-game-passage,
  #il-game-backdrop.il-eval-on #il-streak,
  #il-game-backdrop.il-eval-on #il-game-msg{display:none !important;}
  .il-done-title{font-size:22px;font-weight:800;color:#16a34a;margin-bottom:6px;}
  .il-done-note{font-size:16px;color:#374151;line-height:1.5;}
  /* Phone summary: break the perfect/mistake tally onto its own line (drop the
     middle-dot separator). Desktop/iPad keep it on one line. */
  @media screen and (max-width:768px){
    .il-done-note .il-note-sep{display:none;}
    .il-done-note .il-note-tally{display:block;}
  }
  #il-done-exit{background:#4f46e5;color:#fff;border:none;border-radius:10px;padding:12px 22px;font-weight:800;font-size:15px;cursor:pointer;margin-top:14px;}
  #il-done-exit:hover{background:#4338ca;}
  .il-eval-resetrow{text-align:right;margin-top:8px;}
  .il-eval-reset{background:#fff;color:#b91c1c;border:1px solid #e6c4c4;border-radius:10px;padding:9px 14px;font-weight:700;font-size:13px;cursor:pointer;margin-left:8px;}
  .il-eval-reset:hover{background:#fef2f2;}
  .il-eval-confirm{font-size:13px;color:#b91c1c;font-weight:700;margin-right:4px;}
  .il-eval-keep{color:#374151;border-color:#cfd4da;}
  /* End-of-session eval table (Phase A3a) */
  .il-eval-table{width:100%;border-collapse:collapse;margin:16px 0 4px;font-size:15px;}
  .il-eval-table th{text-align:right;color:#6b7280;font-weight:700;padding:5px 6px;border-bottom:1px solid #e5e7eb;}
  .il-eval-table th:first-child{text-align:left;}
  .il-eval-table td{padding:6px;border-bottom:1px solid #f1f3f5;text-align:right;}
  .il-eval-name{text-align:left;font-weight:600;color:#111827;word-break:break-word;}
  .il-eval-num.good{color:#15803d;font-weight:700;}
  .il-eval-num.bad{color:#b91c1c;font-weight:700;}
  .il-eval-row.done .il-eval-name{color:#4f46e5;}
  .il-eval-badge{display:inline-block;font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;color:#4f46e5;background:#e0e7ff;border-radius:6px;padding:1px 6px;margin-left:6px;}
  .il-done-title.il-summary{color:#4f46e5;}
  .il-eval-at{color:#4f46e5;font-weight:700;white-space:nowrap;}
  .il-eval-foot{font-size:12px;color:#6b7280;margin-top:10px;}
  /* MY ROUTINES — save/load list (Phase A3b) */
  .il-routines{margin:20px 0 0;padding:14px 16px;border:1px solid #e6e8eb;border-radius:10px;background:#fafbfc;}
  .il-routines-head{font-weight:800;font-size:17px;letter-spacing:.05em;text-transform:uppercase;color:#4f46e5;text-align:left;}
  .il-routines-tag{display:block;font-weight:400;font-size:14px;letter-spacing:0;text-transform:none;color:#6b7280;margin-top:4px;}
  .il-routines-list{display:flex;flex-direction:column;gap:8px;margin-top:10px;}
  .il-routine-item{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 10px;border:1px solid #e5e7eb;border-radius:8px;background:#fff;}
  .il-routine-item.active{border-color:#4f46e5;box-shadow:inset 0 0 0 1px #4f46e5;}
  .il-routine-info{min-width:0;}
  .il-routine-name{font-weight:700;color:#111827;word-break:break-word;}
  .il-routine-meta{display:block;font-size:12px;color:#6b7280;}
  .il-routine-btns{display:flex;gap:6px;flex:0 0 auto;}
  .il-routine-load,.il-routine-del{border:1px solid #cfd4da;background:#fff;border-radius:7px;padding:5px 12px;font-size:13px;font-weight:700;cursor:pointer;}
  .il-routine-load{color:#4f46e5;border-color:#c7d2fe;}
  .il-routine-del{color:#b91c1c;border-color:#e6c4c4;}
  .il-routines-empty{font-size:13px;color:#6b7280;margin:10px 0 0;text-align:left;}
  /* Dropdown + action toolbar (Phase D), mirroring MY SETUPS */
  /* Capped width (not full-box) so the caret sits beside the text and the
     control reads as a dropdown, not a static label; the options panel
     follows the same width. Caret gets a native-select style "arrow well". */
  .il-rdrop{position:relative;margin-top:10px;max-width:420px;}
  .il-rdrop-trigger{width:100%;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 14px;border:1px solid #cfd4da;border-radius:9px;background:#fff;font-size:15px;font-weight:700;color:#111827;cursor:pointer;text-align:left;}
  /* Full-height shaded "arrow button" (native-select style) so the control is
     obviously a dropdown. Negative margins stretch it to the trigger's edges
     (cancelling the trigger's own 10px/14px padding). */
  .il-rdrop-caret{color:#111827;font-size:21px;line-height:1;flex:0 0 auto;align-self:stretch;display:flex;align-items:center;margin:-10px -14px -10px 0;padding:0 12px;background:#e5e7eb;border-left:1px solid #cfd4da;border-radius:0 8px 8px 0;}
  .il-rdrop-panel{position:absolute;left:0;right:0;top:calc(100% + 4px);z-index:50;background:#fff;border:1px solid #cfd4da;border-radius:9px;box-shadow:0 10px 28px rgba(0,0,0,.16);max-height:300px;overflow-y:auto;padding:4px;}
  .il-rdrop-opt{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;text-align:left;border:none;background:none;padding:9px 10px;border-radius:7px;cursor:pointer;font-size:14px;}
  .il-rdrop-opt:hover{background:#eef2ff;}
  .il-rdrop-opt.sel{background:#e0e7ff;}
  .il-rdrop-optname{font-weight:700;color:#111827;word-break:break-word;}
  .il-rdrop-optmeta{font-size:12px;color:#6b7280;flex:0 0 auto;}
  .il-rtoolbar{display:flex;align-items:center;flex-wrap:wrap;gap:10px;margin-top:12px;padding:10px 12px;border:1px solid #c7d2fe;border-radius:9px;background:#f5f6ff;}
  .il-rtoolbar[hidden]{display:none;}
  .il-rtoolbar-name{font-weight:800;color:#4f46e5;font-size:15px;}
  .il-rtoolbar-btns{display:flex;flex-wrap:wrap;gap:8px;}
  .il-routine-msg{font-size:13px;color:#166534;margin-top:10px;line-height:1.45;}
  /* Practice Notes modal (Phase D2) */
  #il-notes{position:fixed;inset:0;z-index:100001;background:rgba(17,24,39,.86);display:none;align-items:flex-start;justify-content:center;overflow:auto;padding:20px;box-sizing:border-box;}
  #il-notes.open{display:flex;}
  .il-notes-card{background:#fff;border-radius:14px;max-width:640px;width:100%;padding:18px 20px;box-shadow:0 24px 60px rgba(0,0,0,.5);box-sizing:border-box;}
  .il-notes-head{display:flex;align-items:center;justify-content:space-between;gap:10px;font-weight:800;color:#4f46e5;font-size:17px;margin-bottom:14px;}
  .il-notes-close{background:none;border:none;font-size:22px;color:#9ca3af;cursor:pointer;line-height:1;}
  .il-notes-list{display:flex;flex-direction:column;gap:12px;}
  .il-notes-entry{border:1px solid #e5e7eb;border-radius:10px;padding:12px 14px;}
  .il-notes-when{font-weight:700;color:#111827;font-size:14px;}
  .il-notes-stat{font-size:14px;color:#374151;margin:3px 0 8px;}
  .il-notes-note{font-size:14px;color:#374151;white-space:pre-wrap;word-break:break-word;}
  .il-notes-add{color:#9ca3af;font-style:italic;}
  .il-notes-ta{width:100%;box-sizing:border-box;border:1px solid #cfd4da;border-radius:8px;padding:8px;font-size:14px;font-family:inherit;}
  .il-notes-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px;align-items:center;}
  .il-notes-confirm{font-size:13px;color:#b91c1c;font-weight:700;}
  .il-notes-danger{color:#b91c1c;border-color:#e6c4c4;}
  .il-notes-empty{font-size:14px;color:#6b7280;}
  .il-routines-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:12px;}
  .il-routine-new{border:1px solid #cfd4da;background:#fff;color:#374151;border-radius:9px;padding:8px 12px;font-weight:700;font-size:13px;cursor:pointer;}
  /* ── iPad/tablet (max-width:1000px) padding restores for Interleaved Practice ──
     The page-wide mobile reset near the top of this file —
     *:not(.radial-slider *){padding-left:0 !important;padding-right:0 !important} —
     strips horizontal padding from every element below 1000px, jamming the on-page
     section's instruction box, nested cards, inputs and buttons (and the player
     overlay's title / close X / buttons / summary table) flush against their edges.
     Phones <=768px hide the whole section, so for the section this targets the
     769–1000px tablet range; the overlay is always present. Re-assert each element's
     own horizontal padding — !important + ID/class specificity outranks the reset. */
  @media screen and (max-width: 1000px){
    /* On-page setup section — outer card, instruction box, nested cards, dropdown */
    .interleave-block{padding-left:22px !important;padding-right:22px !important;}
    .interleave-hint{padding-left:18px !important;padding-right:18px !important;}
    .il-example,.il-routines{padding-left:16px !important;padding-right:16px !important;}
    .il-rtoolbar{padding-left:12px !important;padding-right:12px !important;}
    .il-routine-item{padding-left:10px !important;padding-right:10px !important;}
    .il-rdrop-trigger{padding-left:14px !important;padding-right:14px !important;}
    .il-rdrop-opt{padding-left:10px !important;padding-right:10px !important;}
    /* On-page buttons */
    .il-start-btn{padding-left:20px !important;padding-right:20px !important;}
    .il-add-btn{padding-left:14px !important;padding-right:14px !important;}
    .il-routine-new,.il-img-btn,.il-routine-load,.il-routine-del{padding-left:12px !important;padding-right:12px !important;}
    .il-remove{padding-left:10px !important;padding-right:10px !important;}
    .il-img-remove{padding-left:7px !important;padding-right:7px !important;}
    /* Daily Practice block buttons — match the il- buttons above */
    .idr-metro-toggle,.idr-notes-btn,.idr-setall-btn{padding-left:12px !important;padding-right:12px !important;}
    /* On-page inputs */
    .il-name{padding-left:9px !important;padding-right:9px !important;}
    .il-bpm,.il-ticks,.il-goal-input,.il-rest-secs{padding-left:7px !important;padding-right:7px !important;}
    .idr-min,.idr-sec,.idr-total-min,.idr-setall-min,.idr-setall-sec,.idr-bpm{padding-left:7px !important;padding-right:7px !important;}
    /* The Recurring Nightmare block — added after the restores above, so it
       missed this list: re-assert the outer card padding, the instruction box
       (the "Got a passage…" paragraphs), and the Timing number fields. Without
       the last one all six .nm-num values jam the left border of their box. */
    .nightmare-block{padding-left:22px !important;padding-right:22px !important;}
    .nightmare-hint{padding-left:18px !important;padding-right:18px !important;}
    .nightmare-block .nm-num{padding-left:7px !important;padding-right:7px !important;}
    /* "Ready to begin?" / "Session complete" overlay buttons — the reset also
       strips their L/R padding, jamming the Begin/Cancel text to the edges. */
    .nm-btn-primary{padding-left:22px !important;padding-right:22px !important;}
    .nm-btn-ghost{padding-left:18px !important;padding-right:18px !important;}
    /* Recurring Nightmare running panel (floating ring/gap states): restore the
       head bar's padding (else "THE RECURRING NIGHTMARE" jams left), the body's
       padding (else the full-width "I'm done…"/"End session" buttons and the
       clock boxes touch the panel border), and the two clock boxes' own side
       padding (Time to next repetition / Time remaining in session). */
    .nm-panel-head{padding-left:12px !important;padding-right:12px !important;}
    .nm-panel-body{padding-left:14px !important;padding-right:14px !important;}
    .nm-panel-clocks > div{padding-left:6px !important;padding-right:6px !important;}
    /* Recurring Nightmare full-screen overlay card ("Ready to begin?" /
       "Session complete"): restore the card padding so the eyebrow, name and
       "You gave …" reminder text don't jam the left/right edges. */
    .nm-overlay-card{padding-left:28px !important;padding-right:28px !important;}
    /* Player overlay (full-screen modal) */
    #il-game{padding-left:26px !important;padding-right:26px !important;}
    .il-game-close{padding-left:4px !important;padding-right:4px !important;}
    #il-perfect,#il-mistake{padding-left:22px !important;padding-right:22px !important;}
    #il-done-exit{padding-left:22px !important;padding-right:22px !important;}
    .il-eval-reset{padding-left:14px !important;padding-right:14px !important;}
    /* Session-summary eval table: "Musical excerpt" was jamming the left edge,
       "All-time" the right; extra right pad on the last column. */
    .il-eval-table th,.il-eval-table td{padding-left:6px !important;padding-right:6px !important;}
    .il-eval-table th:last-child,.il-eval-table td:last-child{padding-right:18px !important;}
    /* Practice Notes viewer (#il-notes): card, each session entry box, and the
       inline edit textarea — restore side padding so the title, note text and
       action buttons don't jam the left edge. */
    .il-notes-card{padding-left:20px !important;padding-right:20px !important;}
    .il-notes-entry{padding-left:14px !important;padding-right:14px !important;}
    .il-notes-ta{padding-left:8px !important;padding-right:8px !important;}
    /* Daily Practice per-passage notes textarea */
    .idr-notes{padding-left:10px !important;padding-right:10px !important;}
    /* Daily Practice floating player (#idr-ov): the reset zeroes the window
       head/body padding, jamming the title, close X, the This-passage / Total-left
       clocks, the notes field and the Prev/Next buttons against the edges.
       Restoring the body padding also insets both clock boxes from the window
       edges (so they read narrower). Body padding is scoped to #idr-panel so the
       music window's image body (intentionally padding:0) is untouched. */
    .idr-win-head{padding-left:12px !important;padding-right:12px !important;}
    #idr-panel .idr-win-body{padding-left:16px !important;padding-right:16px !important;}
    .idr-clock{padding-left:6px !important;padding-right:6px !important;}
    .idr-notes-edit{padding-left:10px !important;padding-right:10px !important;}
    .idr-ctrls button{padding-left:6px !important;padding-right:6px !important;}
  }


  .prog-builders-label{font-weight:800;font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:#6b7280;margin:24px 0 10px;}
  .prog-collapsible > .prog-tuplet-title{cursor:pointer;user-select:none;}
  /* Caret on the LEFT, bigger and more visible — matches the FAQ accordion
     style (.acc-head::before at line ~1328) so the affordance reads as
     "click/tap to expand". */
  .prog-collapsible > .prog-tuplet-title::before{
    content:"\25B8";
    display:inline-block;
    margin-right:10px;
    font-size:1.55em;
    line-height:1;
    color:#0d9488;
    opacity:.9;
    transition:transform .15s ease;
  }
  .prog-collapsible:not(.collapsed) > .prog-tuplet-title::before{content:"\25BE";}
  .prog-collapsible.collapsed > .prog-tuplet-title{margin-bottom:0;}
  .prog-collapsible.collapsed > :not(.prog-tuplet-title){display:none;}


  .more-tools{margin:50px 0 0;text-align:center}
  .more-tools-header{margin-bottom:28px}
  .more-tools-eyebrow{display:inline-block;background:linear-gradient(to right,#ea580c,#dc2626);color:#fff;font-size:11px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;padding:5px 12px;border-radius:6px;margin-bottom:12px}
  .more-tools-title{color:#ffffff;font-weight:800;font-size:clamp(22px,2.4vw,30px);margin:0 0 8px}
  .more-tools-sub{color:#cbd5e1;font-size:15px;margin:0}
  .more-tools-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px;max-width:900px;margin:0 auto;text-align:left}
  .tool-card{position:relative;display:flex;flex-direction:column;background:#fff;border:1px solid #f0e6d6;border-radius:14px;padding:22px 24px;text-decoration:none;box-shadow:0 10px 28px rgba(0,0,0,.18);transition:transform .2s ease, box-shadow .2s ease}
  .tool-card:hover{transform:translateY(-4px);box-shadow:0 18px 42px rgba(0,0,0,.3)}
  .tool-icon{display:inline-flex;align-items:center;justify-content:center;width:42px;height:42px;border-radius:11px;margin-bottom:12px;flex:0 0 auto}
  .tool-icon svg{width:22px;height:22px}
  .tool-icon.tw{background:#fef3c7;color:#d97706}
  .tool-icon.tm{background:#ede9fe;color:#7c3aed}
  .tool-icon.fb{background:#dbeafe;color:#2563eb}
  .tool-icon.nr{background:#ccfbf1;color:#0d9488}
  .tool-free{position:absolute;top:18px;right:18px;background:#16a34a;color:#fff;font-size:11px;font-weight:700;padding:3px 9px;border-radius:999px;letter-spacing:.03em}
  .tool-name{margin:0 0 8px;color:#111827;font-weight:800;font-size:18px;line-height:1.25}
  .tool-desc{margin:0 0 16px;color:#4b5563;font-size:14px;line-height:1.55;flex-grow:1}
  .tool-cta{color:#ea580c;font-weight:700;font-size:14px}
  .tool-card:hover .tool-cta{color:#b91c1c}
  /* Mobile: the dark stage turns light grey, so the header text must darken; cards stack */
  @media screen and (max-width:768px){
    .more-tools-grid{grid-template-columns:1fr}
    .more-tools-title{color:#111827}
    .more-tools-sub{color:#4b5563}
  }


  .acc-head{cursor:pointer;user-select:none;position:relative;padding-left:1.7em;}
  /* Caret hangs in the left padding, so a wrapped heading's 2nd line aligns
     under the first letter of line 1 (not under the caret). */
  .acc-head::before{content:"\25B8";position:absolute;left:0;font-size:1.15em;opacity:.7;}
  .acc-head:not(.collapsed)::before{content:"\25BE";}
  .acc-head:hover{opacity:.82;}
  /* Phones: the <=1000px padding-strip zeroes the caret gutter here too
     (the 769-1000px tablet block restores it for iPad), so the FAQ question
     text sat on top of the caret — and the caret reads small on a phone.
     Restore a wider gutter and enlarge the caret to match. */
  @media screen and (max-width: 768px){
    /* the selector must out-rank the mobile "#content .myBoxesWhiteBackground
       h3 { padding-left:0 !important }" reset (specificity 1,1,1) */
    .acc-head,
    #content .myBoxesWhiteBackground h2.acc-head,
    #content .myBoxesWhiteBackground h3.acc-head{ padding-left: 2em !important; }
    .acc-head::before{ font-size: 1.5em; }
  }
  .acc-body.collapsed{display:none;}
  .metro-howto{margin-left:auto;margin-right:auto;border-radius:14px;text-align:left;}
  /* Force the whole how-to box left-aligned: the page body inherits
     text-align:center, and the site-wide (douglasniedt.com) stylesheet pulled in
     via <base> can directly center h2/h3, beating the inner div's inherited left. */
  .metro-howto h2,.metro-howto h3,.metro-howto p,.metro-howto li{text-align:left;}
  /* Headings carry an inline margin-left:20px; zero it so they sit at the box's
     content edge (margin-left:0), exactly like the FAQ's h2/h3 below. */
  .metro-howto .desktop-instructions h2,
  .metro-howto .desktop-instructions h3{margin-left:0 !important;}
  /* How-To section headings match the FAQ heading's size/weight */
  .metro-howto h2{font-family:var(--font-ui);color:#111827;font-weight:800;font-size:21px;line-height:1.3;}
  /* Desktop + iPad (>=769px): give the how-to box the SAME 56px side padding the
     FAQ card uses (see .metro-guide above), so the instructions carets/text line
     up with the FAQ's carets/text below it instead of sitting ~46px to the left. */
  @media screen and (min-width:769px){
    .metro-howto{padding-left:56px !important;padding-right:56px !important}
  }


  .pwa-install {
    position: relative;
    max-width: 620px;
    margin: 18px auto;
    /* !important survives the mobile-wide padding-strip reset. */
    padding: 14px 42px 14px 16px !important;
    display: flex; flex-wrap: wrap; align-items: center; gap: 8px 14px;
    background: #f0fdfa; border: 1px solid #0d9488; border-radius: 10px;
    text-align: left;
  }
  .pwa-install[hidden] { display: none; }
  .pwa-install-icon { font-size: 26px; line-height: 1; flex: 0 0 auto; }
  .pwa-install-copy { display: flex; flex-direction: column; gap: 2px; flex: 1 1 200px; min-width: 0; }
  .pwa-install-title { font: 700 15px Roboto, sans-serif; color: #0f766e; }
  .pwa-install-sub, .pwa-install-ios { font: 400 13px Roboto, sans-serif; color: #334155; line-height: 1.4; }
  .pwa-install-ios strong { color: #0f766e; }
  /* Inline iOS "Share" glyph in the instruction line, so users can match the
     icon Safari shows in its toolbar. */
  .pwa-share-glyph { color: #0f766e; vertical-align: -3px; margin: 0 1px; }
  .pwa-install-ios[hidden] { display: none; }
  .pwa-install-btn {
    flex: 0 0 auto;
    font: 700 14px Roboto, sans-serif;
    padding: 10px 22px !important;
    border: 1px solid #0d9488; background: #0d9488; color: #fff;
    border-radius: 8px; cursor: pointer;
  }
  .pwa-install-btn:hover { background: #0b7e74; }
  .pwa-install-btn[hidden] { display: none; }
  .pwa-install-dismiss {
    position: absolute; top: 6px; right: 10px;
    background: none; border: none; font-size: 22px; line-height: 1;
    color: #64748b; cursor: pointer; padding: 2px 6px !important;
  }
  .pwa-install-dismiss:hover { color: #0f766e; }
  @media (max-width: 768px) {
    .pwa-install { margin: 14px 12px; }
    .pwa-install-btn { flex: 1 0 100%; }   /* full-width button row on phones */
  }


#navigation_volume_control_holder{
    display: flex;
    gap: 32px;
}
.modes-stack {
    display: flex;
    flex-direction: column;
    flex-basis: 55%;
    min-width: 0;
}
/* Right side of the holder: Spinal Tap knob on top, desktop tuner below.
   (Phase 22c: left column widened to 55% / this narrowed to 45% so a measure's
   entered notes fit on one line; the tuner stays right-aligned in its column.) */
.metro-right-col { flex-basis: 45%; min-width: 0; display: flex; flex-direction: column; }
/* ===== Desktop tuner panel ===== */
#desktop-tuner {
  margin: auto 0 185px auto;
  margin-left: 60px;
   max-width: 330px;
  padding: 14px 16px;
  border: 1px solid #e2e2e2;
  border-radius: 10px;
  background: rgba(255,255,255,0.6);
  text-align: left;
  font-family: Arial, sans-serif;
  color: #333;
}
.dt-heading { font-size: 16px; font-weight: 700; color: #333; text-transform: uppercase; letter-spacing: .06em; margin-bottom: 12px; }
.dt-label { font-size: 11px; color: #888; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; margin: 14px 0 6px; }
.dt-hint { font-size: 11.5px; line-height: 1.35; color: #999; margin: 4px 0 10px; }
.dt-hint.dt-return-note, .mob-tuner-hint.mob-return-note { font-size: 13px; font-weight: 700; color: #555; }
.dt-label.dt-emph-label, .mob-sec-label.mob-emph-label { color: #1e3a8a; font-weight: 700; }
.wave-toggle-glyph { font-size: 1.05em; letter-spacing: .04em; margin-right: 6px; white-space: nowrap; }
.dt-hint-tight { margin: 0 0 6px; }
.dt-presets-label { color: #777; font-weight: 600; margin: 4px 0 8px; }
.dt-refa-row { display: flex; align-items: center; gap: 8px; margin-bottom: 6px; }
.dt-eq { font-size: 15px; font-weight: 700; color: #333; }
.dt-num {
  width: 90px; padding: 8px 10px; border: 1.5px solid #ccc; border-radius: 8px; background: #fff;
  font-size: 15px; font-weight: 700; color: #333; text-align: center; font-family: Arial, sans-serif;
}
.dt-unit { font-size: 13px; font-weight: 700; color: #888; }
.dt-chips { display: flex; gap: 6px; flex-wrap: nowrap; margin-bottom: 6px; }
.dt-chip {
  flex: 1; min-width: 0; display: flex; flex-direction: column; align-items: center; gap: 1px; white-space: nowrap;
  padding: 7px 4px; border-radius: 8px; border: 1.5px solid #ccc; background: #f5f5f5; color: #555;
  cursor: pointer; font-family: Arial, sans-serif;
}
.dt-chip-hz   { font-size: 14px; font-weight: 700; line-height: 1; }
.dt-chip-name { font-size: 10px; font-weight: 600; opacity: .7; line-height: 1; white-space: nowrap; }
.dt-chip.dt-chip-active { background: #1e3a8a; color: #bfdbfe; border-color: #1e3a8a; }
.dt-chip:active { transform: scale(.96); }
.dt-select {
  width: 100%; padding: 9px 10px; border: 1.5px solid #ccc; border-radius: 8px; background: #fff;
  font-size: 14px; font-weight: 700; color: #333; font-family: Arial, sans-serif; cursor: pointer;
}
/* Open-dropdown options + group headers. NOTE: only Chromium (Chrome/Edge)
   renders the select popup itself and honors this; Firefox/Safari defer to the
   OS and ignore most of it (the native styling there still reads fine). */
.dt-select optgroup {
  color: #2563eb;                 /* brighter blue than the navy chips so the headers clearly pop */
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 1px;
}
.dt-select option {
  color: #333;
  font-weight: 400;               /* normal weight so the bold blue group headers stand out */
}
.dt-wave-row { display: flex; gap: 6px; flex-wrap: nowrap; }
.dt-wave-btn {
  flex: 1; min-width: 0; padding: 9px 4px; border-radius: 8px; border: 1.5px solid #ccc; white-space: nowrap;
  background: #f5f5f5; font-size: 12px; font-weight: 700; color: #555; cursor: pointer;
  text-align: center; font-family: Arial, sans-serif;
}
.dt-wave-btn.dt-wave-active { background: #1e3a8a; color: #bfdbfe; border-color: #1e3a8a; }
.dt-wave-btn:active { transform: scale(.96); }
/* Active waveform = "now sounding, tap again to stop": leading stop glyph + live pulse ring.
   Leading stop glyph is mobile-only (.mob-wave-btn): on the narrow nowrap desktop row it
   overflowed the box and shifted the centered layout. Desktop signals "on" via fill + pulse ring. */
.mob-wave-btn.mob-wave-active::before { content: "\25FC"; font-size: .78em; margin-right: 5px; vertical-align: middle; }
@keyframes wavePulse {
  0%   { box-shadow: 0 0 0 0 rgba(30,58,138,.50); }
  70%  { box-shadow: 0 0 0 7px rgba(30,58,138,0); }
  100% { box-shadow: 0 0 0 0 rgba(30,58,138,0); }
}
.dt-wave-btn.dt-wave-active,
.mob-wave-btn.mob-wave-active { animation: wavePulse 1.5s ease-out infinite; }
@media (prefers-reduced-motion: reduce) {
  .dt-wave-btn.dt-wave-active,
  .mob-wave-btn.mob-wave-active { animation: none; }
}
.dt-divider { border-top: 1px solid #d8d8d8; margin: 16px 0 12px; }
.dt-vol-row { display: flex; align-items: center; gap: 8px; margin: 6px 0 2px; }
.dt-vol-icon { font-size: 18px; flex-shrink: 0; }
.dt-vol-slider { flex: 1; cursor: pointer; accent-color: #1e3a8a; }
.dt-custom-input.dt-custom-on { border-color: #1e3a8a; box-shadow: 0 0 0 2px #bfdbfe; }
/* ── TUNING PITCH custom dropdown (iPad 769–1000px) — same pattern as the
   COUNT .vc-dropdown: the native popup is OS-rendered on iPadOS and wraps
   the long "string — note · Hz" labels. Optgroup headers become .dtn-group
   rows. display:none by default — desktop keeps the native select. */
.dtn-dropdown { position: relative; display: none; }
.dtn-trigger {
  display: flex; align-items: center; gap: 8px;
  width: 100%; box-sizing: border-box;
  padding: 9px 10px;
  border: 1.5px solid #ccc; border-radius: 8px; background: #fff;
  font-size: 14px; font-weight: 700; color: #333;
  font-family: Arial, sans-serif; cursor: pointer; text-align: left;
}
.dtn-trigger-label { flex: 1 1 auto; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.dtn-trigger-caret { flex: 0 0 auto; display: inline-flex; align-items: center; color: #1e3a8a; }
.dtn-panel {
  position: absolute; top: calc(100% + 2px); left: 0; z-index: 1000;
  width: max-content; min-width: 100%; max-width: calc(100vw - 40px);
  max-height: 340px; overflow-y: auto;
  background: #fff; border: 1.5px solid #1e3a8a; border-radius: 8px;
  box-shadow: 0 8px 24px rgba(0,0,0,0.20); padding: 4px 0;
}
.dtn-group {
  font-size: 11px; font-weight: 800; letter-spacing: 1px; text-transform: uppercase;
  color: #2563eb; cursor: default; user-select: none;
  /* !important: survives the <=1000px padding-strip (tablet-only control) */
  padding: 8px 12px 4px !important;
}
.dtn-row {
  display: block; width: 100%; box-sizing: border-box; border: 0; background: transparent;
  font-family: Arial, sans-serif; font-size: 14px; color: #333; text-align: left;
  white-space: nowrap; cursor: pointer;
  padding: 8px 12px !important;
}
.dtn-row:hover { background: #eff6ff; }
.dtn-row.selected { background: #dbeafe; font-weight: 700; }
@media screen and (min-width: 769px) and (max-width: 1000px) {
  #dt-tuner-note { display: none; }
  .dtn-dropdown { display: block; margin-bottom: 6px; }
  .dtn-trigger { padding-left: 10px !important; padding-right: 10px !important; }
}


    .play-go-silent-block {
        position: relative;
        text-align: left;
        padding-left: 15px;
        margin-top: 30px;   /* match the POLYRHYTHM card so the two tops line up */
    }
    .play-go-silent-title {
      font-weight: bold;
      font-size: 20px;
      color: blue;
      text-align: left;
      white-space: nowrap;
      margin-bottom: 10px;
    }
    .play-go-silent-hint {
      font-size: 14px;
      color: #555;
      font-style: italic;
      text-align: left;
      line-height: 1.4;
      margin-bottom: 12px;
      padding: 6px 10px;
      background: #f0f4ff;
      border-left: 3px solid #3f80f8;
      border-radius: 3px;
    }
    .play-go-silent-block label{
      display: flex;
      align-items: center;
      margin-bottom: 10px;
      color: blue;

    }
    .play-go-silent-block input[type="number"]{
      margin: 0 10px;
    }
    .play-go-silent-block input[type="checkbox"] {
      --s: 50px; /* adjust this to control the size*/
      
      height: calc(var(--s) + var(--s)/5);
      width: auto; /* some browsers need this */
      aspect-ratio: 2.25;
      border-radius: var(--s);
      margin: 0 calc(var(--s)/2);
      display: grid;
      cursor: pointer;
      background-color:#ccc;
      box-sizing: content-box;
      overflow: hidden;
      transition: .3s .1s;
      -webkit-appearance: none;
      -moz-appearance: none;
      appearance: none;
    }
    .play-go-silent-block input[type="checkbox"]:before{
      content: "";
      padding: calc(var(--s)/10);
      --_g: radial-gradient(circle closest-side at calc(100% - var(--s)/2) 50%,#000 96%,#0000);
      background: 
        var(--_g) 0 /var(--_p,var(--s)) 100% no-repeat content-box,
        var(--_g) var(--_p,0)/var(--s)  100% no-repeat content-box,
        #fff;
      mix-blend-mode: darken;
      filter: blur(calc(var(--s)/12)) contrast(11);
      transition: .4s, background-position .4s .1s,
        padding cubic-bezier(0,calc(var(--_i,-1)*200),1,calc(var(--_i,-1)*200)) .25s .1s;
    }
    .play-go-silent-block input[type="checkbox"]:checked {
      background-color: #3f80f8;
    }
    .play-go-silent-block input:disabled {
      opacity: .5;
      cursor: not-allowed;
    }
    /* Number fields, when the mode is off (or Random is on): a solid grey,
       clearly-inactive look with a "—" placeholder, instead of the faint
       generic disabled style above. */
    .play-go-silent-block input[type="number"]:disabled {
      opacity: 1;
      background: #ececec;
      color: #999;
      cursor: not-allowed;
    }
    /* "—" only while the field is disabled (mode off / Random on); once enabled
       the placeholder goes transparent so the box reads as empty + ready to type. */
    .play-go-silent-block input[type="number"]:disabled::placeholder { color: #999; }
    .play-go-silent-block input[type="number"]:enabled::placeholder  { color: transparent; }
    .play-go-silent-block input[type="checkbox"]:checked:before {
      padding: calc(var(--s)/10 + .05px) calc(var(--s)/10);
      --_p: 100%;
      --_i: 1;
    }


  /* ── VOICE COUNT BLOCK ─────────────────────────────── */
  .voice-count-block {
    position: relative;
    text-align: left;
    padding-left: 15px;
    margin-top: 30px;
  }
  .voice-count-title {
    font-weight: bold;
    font-size: 16px;
    color: #c0392b;
    text-align: left;
    margin-bottom: 10px;
  }
  .voice-count-block label {
    display: flex;
    align-items: center;
    margin-bottom: 10px;
    color: #c0392b;
    font-size: 13px;
  }
  /* Reuse the same toggle-switch CSS variables from play-go-silent */
  .voice-count-block input[type="checkbox"] {
    --s: 20px;
    height: calc(var(--s) + var(--s)/5);
    width: auto;
    aspect-ratio: 2.25;
    border-radius: var(--s);
    margin: 0 calc(var(--s)/2);
    display: grid;
    cursor: pointer;
    background-color: #ccc;
    box-sizing: content-box;
    overflow: hidden;
    transition: .3s .1s;
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
  }
  .voice-count-block input[type="checkbox"]:before {
    content: "";
    padding: calc(var(--s)/10);
    --_g: radial-gradient(circle closest-side at calc(100% - var(--s)/2) 50%,#000 96%,#0000);
    background:
      var(--_g) 0 /var(--_p,var(--s)) 100% no-repeat content-box,
      var(--_g) var(--_p,0)/var(--s)  100% no-repeat content-box,
      #fff;
    mix-blend-mode: darken;
    filter: blur(calc(var(--s)/12)) contrast(11);
    transition: .4s, background-position .4s .1s,
      padding cubic-bezier(0,calc(var(--_i,-1)*200),1,calc(var(--_i,-1)*200)) .25s .1s;
  }
  .voice-count-block input[type="checkbox"]:checked {
    background-color: #c0392b;
  }
  .voice-count-block input[type="checkbox"]:checked:before {
    padding: calc(var(--s)/10 + .05px) calc(var(--s)/10);
    --_p: 100%;
    --_i: 1;
  }
  .voice-count-block select {
    display: inline-block;
    width: 240px;
    min-width: 240px;
    max-width: 100%;
    box-sizing: border-box;
    margin-left: 10px;
    font-size: 12px;
    line-height: 1.3;
    padding: 6px 30px 6px 8px;
    cursor: pointer;
    position: relative;
    z-index: 5;
    background-color: #fff;
    color: #000;
    border: 1px solid #c0392b;
    border-radius: 4px;
    /* Replace native chevron with an open-V SVG in #c0392b (matches the red
       border + section color). Same geometry as the blue chevron in the
       Phase 9 SUBDIVIDE BEAT trigger so the two sections look consistent. */
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
    background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6' fill='none'><path d='M1 1 L5 5 L9 1' stroke='%23c0392b' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/></svg>");
    background-repeat: no-repeat;
    background-position: right 10px center;
    pointer-events: auto;
  }
  /* ── COUNT custom dropdown (iPad 769–1000px) ─────────────────────────────
     The native <select> popup is OS-rendered on iPadOS and wraps the long
     meter-aware labels. In the tablet range the select is hidden and this
     trigger + panel takes over (same pattern as the Phase 9 SUBDIVIDE
     dropdown, in the voice section's red). The panel sizes itself to its
     longest row (white-space:nowrap), so labels can never line-break.
     display:none by default — desktop keeps the native select. */
  .vc-dropdown { position: relative; display: none; }
  .vc-trigger {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    width: 100%;
    box-sizing: border-box;
    padding: 6px 8px;
    font-size: 12px;
    line-height: 1.3;
    font-family: inherit;
    background: #fff;
    color: #000;
    border: 1px solid #c0392b;
    border-radius: 4px;
    cursor: pointer;
    text-align: left;
  }
  .vc-trigger-label { flex: 1 1 auto; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .vc-trigger-caret { flex: 0 0 auto; display: inline-flex; align-items: center; color: #c0392b; }
  .vc-panel {
    position: absolute;
    top: calc(100% + 2px);
    left: 0;
    z-index: 1000;
    width: max-content;
    min-width: 100%;
    max-width: calc(100vw - 40px);
    background: #fff;
    color: #1f2937;
    border: 1px solid #c0392b;
    border-radius: 6px;
    box-shadow: 0 8px 24px rgba(0,0,0,0.20);
    padding: 4px 0;
  }
  .vc-row {
    display: block;
    width: 100%;
    box-sizing: border-box;
    border: 0;
    background: transparent;
    font-family: inherit;
    font-size: 13px;
    color: #1f2937;
    text-align: left;
    white-space: nowrap;
    cursor: pointer;
    /* !important survives the <=1000px padding-strip (this control is only
       ever visible inside that range). */
    padding: 8px 14px !important;
  }
  .vc-row:hover { background: #fdf3f2; }
  .vc-row.selected { background: #fbe4e1; font-weight: 600; }
  @media screen and (min-width: 769px) and (max-width: 1000px) {
    #voice-subdiv { display: none; }
    .vc-dropdown { display: inline-block; flex: 1 1 auto; min-width: 0; margin-left: 10px !important; }
    .vc-trigger { padding-left: 8px !important; padding-right: 8px !important; }

    /* MY SETUPS fragility warning (iPad portrait): the desktop-setups-ui is what
       renders here (the #mob-ui copy is <=768px only), and the page-wide <=1000px
       reset zeroes the amber box's auto margins (un-centering its 320px width) and
       strips the summary/body/tip horizontal padding. Restore both so it stays
       centered with text off the edges, matching desktop. The tip <p> needs the
       #id prefix to outrank the #content .myBoxesWhiteBackground p padding-strip;
       border-box keeps its padding inside the <=1000px p{width:100%}. */
    #desktop-setups-panel .prog-setups-warning { margin-left: auto !important; margin-right: auto !important; }
    #desktop-setups-panel .prog-setups-warning summary { padding-left: 12px !important; padding-right: 12px !important; }
    #desktop-setups-panel .prog-setups-warning-body    { padding-left: 14px !important; padding-right: 14px !important; }
    #desktop-setups-panel .prog-setups-warning-body p.prog-setups-warning-tip { padding-left: 10px !important; padding-right: 10px !important; box-sizing: border-box !important; }
  }
  #voice-bpm-warning {
    display: none;
    color: red;
    font-size: 12px;
    font-weight: bold;
    margin-left: 15px;
    margin-top: 2px;
  }
  /* ── SUBDIVIDE BLOCK (Phase 2: desktop UI) ─────────────────────────────
     Visually parallel to .voice-count-block but in blue (not red) to signal
     that subdivisions are a core metronome feature rather than an optional
     mode like voice counting. The two blocks share the modes-stack column. */
  .subdivide-block {
    position: relative;
    text-align: left;
    padding-left: 15px;
    margin-top: 30px;
  }
  .subdivide-title {
    font-weight: bold;
    font-size: 16px;
    color: blue;
    text-align: left;
    margin-bottom: 10px;
  }
  /* Second line of the SUBDIVIDE BEAT headline — subordinate to the title. */
  .subdivide-subtitle {
    display: block;
    font-weight: normal;
    font-size: 12px;
    color: #374151;
    margin-top: 2px;
  }
  .subdivide-block label {
    display: flex;
    align-items: center;
    margin-bottom: 10px;
    color: blue;
    font-size: 13px;
  }
  /* Phase 9: the old `.subdivide-block select` rule was removed here. It
     styled the native dropdown that has now been replaced by the custom
     component below. The native <select> is kept in the DOM (with class
     .subdivide-hidden-select) but is no longer visible. */
  #subdivide-bpm-warning {
    display: none;
    color: red;
    font-size: 12px;
    font-weight: bold;
    margin-left: 15px;
    margin-top: 2px;
  }
  /* Phase 17a: polyrhythm BPM-ceiling warning. Same styling as the subdivide
     warning; shown when BPM exceeds the selected ratio's ceiling, at which
     point the cross-rhythm is dropped and only the primary beat ticks. */
  #polyrhythm-bpm-warning {
    display: none;
    color: red;
    font-size: 12px;
    font-weight: bold;
    margin-left: 15px;
    margin-top: 6px;
  }
  /* ── Phase 9: custom dropdown for subdivide-select ──────────────────────
     The native <select> stays in the DOM (visually hidden) as the engine's
     single source of truth. This component is a pure visual mirror that
     reads from / writes to the hidden select and dispatches 'change' on it
     so the existing Phase 2 IIFE and Phase 3 mobile sync keep working
     untouched. */
  .subdivide-hidden-select {
    position: absolute;
    width: 1px; height: 1px;
    padding: 0; margin: -1px;
    overflow: hidden;
    clip: rect(0,0,0,0);
    white-space: nowrap;
    border: 0;
  }
  .subdiv-dropdown {
    position: relative;
    display: inline-block;
    margin-left: 10px;
  }
  .subdiv-trigger {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    width: 280px;
    box-sizing: border-box;
    padding: 5px 8px;
    font-size: 12px;
    line-height: 1.3;
    font-family: inherit;
    background: #fff;
    color: #000;
    border: 1px solid blue;
    border-radius: 4px;
    cursor: pointer;
    text-align: left;
  }
  .subdiv-trigger:hover:not(:disabled) { background: #f0f7ff; }
  .subdiv-trigger:focus {
    outline: 2px solid #2563eb;
    outline-offset: 1px;
  }
  /* Phase 17a: greyed when POLYRHYTHM MODE is active (mutual exclusivity).
     Mirrors .polyrhythm-trigger:disabled so the two related controls share a
     disabled treatment. The stored selection still shows through at .5 alpha
     so the user can see what will resume when polyrhythm is turned back off. */
  .subdiv-trigger:disabled {
    opacity: .5;
    cursor: not-allowed;
    border-color: #999;
    color: #777;
  }
  .subdiv-trigger:disabled .subdiv-trigger-caret { color: #999; }
  .subdiv-trigger-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 56px;
    height: 24px;
    flex: 0 0 auto;
  }
  .subdiv-trigger-icon svg {
    max-width: 56px;
    max-height: 24px;
    width: auto;
    height: auto;
  }
  .subdiv-trigger-label {
    flex: 1 1 auto;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
  .subdiv-trigger-caret {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 12px;
    height: 12px;
    color: #2563eb;
  }
  .subdiv-panel {
    position: absolute;
    top: calc(100% + 2px);
    left: 0;
    z-index: 1000;
    width: 340px;
    max-height: 440px;
    overflow-y: auto;
    background: #fff;
    color: #1f2937;
    border: 1px solid #2563eb;
    border-radius: 6px;
    box-shadow: 0 8px 24px rgba(0,0,0,0.20);
    padding: 4px 0;
  }
  .subdiv-optgroup {
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: 1px;
    font-weight: 700;
    color: #2563eb;
    padding: 8px 14px 4px 14px;
    cursor: default;
    user-select: none;
  }
  .subdiv-row {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 6px 14px;
    cursor: pointer;
    font-size: 13px;
    color: #1f2937;
    user-select: none;
  }
  .subdiv-row:hover,
  .subdiv-row.active {
    background: #eff6ff;
  }
  .subdiv-row.selected {
    background: #dbeafe;
    font-weight: 600;
  }
  .subdiv-row-icon {
    width: 70px;
    height: 30px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 auto;
  }
  .subdiv-row-icon svg {
    max-width: 70px;
    max-height: 30px;
    width: auto;
    height: auto;
  }
  .subdiv-row-label {
    flex: 1 1 auto;
  }

  /* ── Triplet patterns: bigger icon slots to match the visual scale of
     non-triplets (same compensation as Phase 10 mobile).
     Sheet rows scaled at source_height × (30 / 115); trigger at × (24 / 115).
     ────────────────────────────────────────────────────────────────── */
  .subdiv-row[data-value="3"]  .subdiv-row-icon,
  .subdiv-row[data-value="3"]  .subdiv-row-icon svg  { height: 39px; max-height: 39px; }
  .subdiv-row[data-value="12"] .subdiv-row-icon,
  .subdiv-row[data-value="12"] .subdiv-row-icon svg  { height: 42px; max-height: 42px; }
  .subdiv-row[data-value="13"] .subdiv-row-icon,
  .subdiv-row[data-value="13"] .subdiv-row-icon svg  { height: 44px; max-height: 44px; }
  .subdiv-row[data-value="14"] .subdiv-row-icon,
  .subdiv-row[data-value="14"] .subdiv-row-icon svg  { height: 42px; max-height: 42px; }

  .subdiv-trigger[data-value="3"]  .subdiv-trigger-icon,
  .subdiv-trigger[data-value="3"]  .subdiv-trigger-icon svg  { height: 31px; max-height: 31px; }
  .subdiv-trigger[data-value="12"] .subdiv-trigger-icon,
  .subdiv-trigger[data-value="12"] .subdiv-trigger-icon svg  { height: 33px; max-height: 33px; }
  .subdiv-trigger[data-value="13"] .subdiv-trigger-icon,
  .subdiv-trigger[data-value="13"] .subdiv-trigger-icon svg  { height: 35px; max-height: 35px; }
  .subdiv-trigger[data-value="14"] .subdiv-trigger-icon,
  .subdiv-trigger[data-value="14"] .subdiv-trigger-icon svg  { height: 34px; max-height: 34px; }


  /* ═══════════════════════ POLYRHYTHM (Phase 16) ════════════════════════════
     The .polyrhythm-block mirrors .play-go-silent-block / .voice-count-block
     structurally and visually — same toggle switch CSS, same title + hint
     layout — but in violet (#7c3aed) to distinguish it from PLAY-GO-SILENT
     (blue) and VOICE COUNT (red). The picker modal is full-screen overlay
     with a centered card; Phase 19 will turn it into a mobile bottom sheet
     by overriding a few flex/transform properties below the mobile media
     query. */
  .polyrhythm-block {
    position: relative;
    text-align: left;
    padding-left: 15px;
    margin-top: 30px;
  }
  .polyrhythm-title {
    font-weight: bold;
    font-size: 20px;
    color: #7c3aed;
    text-align: left;
    margin-bottom: 10px;
  }
  .polyrhythm-hint {
    font-size: 14px;
    color: #555;
    font-style: italic;
    text-align: left;
    line-height: 1.4;
    margin-bottom: 12px;
    padding: 6px 10px;
    background: #f5f3ff;
    border-left: 3px solid #7c3aed;
    border-radius: 3px;
  }
  /* Phase 17h: one sentence per paragraph inside the hint box, with a little
     breathing room between them so each point reads distinctly. */
  .polyrhythm-hint p {
    margin: 0 0 7px 0;
  }
  .polyrhythm-hint p:last-child {
    margin-bottom: 0;
  }
  /* Phase 19 — exclusivity lock for the beat-accent picker while Polyrhythm
     Mode is on (desktop #metro-accent-prop, mobile #mob-accent-section). The
     accent audio is already silenced in the scheduler; this greys out and
     blocks the UI to match. Underlying accent selections are preserved and
     resume when polyrhythm turns off. !important keeps pointer-events winning
     over the mobile-wide reset and the dark-section pill styles. */
  .poly-accent-locked { opacity: .42 !important; pointer-events: none !important; }
  .polyrhythm-block label {
    display: flex;
    align-items: center;
    margin-bottom: 10px;
    color: #7c3aed;
  }
  /* Toggle switch — same CSS shape as .play-go-silent-block and
     .voice-count-block but tinted green when checked. */
  .polyrhythm-block input[type="checkbox"] {
    --s: 20px;
    height: calc(var(--s) + var(--s)/5);
    width: auto;
    aspect-ratio: 2.25;
    border-radius: var(--s);
    margin: 0 calc(var(--s)/2);
    display: grid;
    cursor: pointer;
    background-color: #ccc;
    box-sizing: content-box;
    overflow: hidden;
    transition: .3s .1s;
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
  }
  .polyrhythm-block input[type="checkbox"]:before {
    content: "";
    padding: calc(var(--s)/10);
    --_g: radial-gradient(circle closest-side at calc(100% - var(--s)/2) 50%,#000 96%,#0000);
    background:
      var(--_g) 0 /var(--_p,var(--s)) 100% no-repeat content-box,
      var(--_g) var(--_p,0)/var(--s)  100% no-repeat content-box,
      #fff;
    mix-blend-mode: darken;
    filter: blur(calc(var(--s)/12)) contrast(11);
    transition: .4s, background-position .4s .1s,
      padding cubic-bezier(0,calc(var(--_i,-1)*200),1,calc(var(--_i,-1)*200)) .25s .1s;
  }
  .polyrhythm-block input[type="checkbox"]:checked {
    background-color: #7c3aed;
  }
  .polyrhythm-block input[type="checkbox"]:checked:before {
    padding: calc(var(--s)/10 + .05px) calc(var(--s)/10);
    --_p: 100%;
    --_i: 1;
  }
  .polyrhythm-block input:disabled {
    opacity: .5;
    cursor: not-allowed;
  }

  /* ═══════════════════ PROGRAMMABLE RHYTHM (Phase 22a) ═══════════════════
     Mirrors .polyrhythm-block structurally (title + hint + toggle switch) but
     in teal (#0d9488) to set it apart from POLYRHYTHM (violet), PLAY-GO-SILENT
     (blue), and VOICE COUNT (red). Lives in .modes-stack → desktop-only. */
  .prog-rhythm-block {
    position: relative;
    text-align: left;
    padding-left: 15px;
    margin-top: 30px;
  }
  .prog-rhythm-title {
    font-weight: bold;
    font-size: 20px;
    color: #0d9488;
    text-align: left;
    margin-bottom: 10px;
  }
  .prog-rhythm-hint {
    font-size: 14px;
    color: #555;
    font-style: italic;
    text-align: left;
    line-height: 1.4;
    margin-bottom: 12px;
    padding: 6px 10px;
    /* Neutral gray so this reads as plain "how it works" explanation, distinct
       from the teal MY RHYTHMS control box (.prog-presets-block) below it. */
    background: #f3f4f6;
    border-left: 3px solid #9ca3af;
    border-radius: 3px;
  }
  .prog-rhythm-hint p { margin: 0 0 7px 0; }
  .prog-rhythm-hint p:last-child { margin-bottom: 0; }
  /* The 4-paragraph "how it works" copy is collapsed by default to save scroll;
     the subtitle above already teases the feature. Teal toggle (not the blue
     setups pill) so it stays on-theme inside the gray hint box. */
  .prog-hint-disclosure > summary {
    cursor: pointer; list-style: none; user-select: none;
    font-style: normal; font-weight: 700; color: #0d9488; font-size: 14px;
  }
  .prog-hint-disclosure > summary::-webkit-details-marker { display: none; }
  .prog-hint-disclosure > summary::before { content: "\25B8"; display: inline-block; margin-right: 8px; transition: transform .15s ease; }
  .prog-hint-disclosure[open] > summary::before { transform: rotate(90deg); }
  .prog-hint-disclosure[open] > summary { margin-bottom: 8px; }
  /* Prominent collapsible header for the measure editor + special-figure
     builders. Closed by default to cut scroll; the teal bar doubles as a clear
     "start building" call-to-action. showWarning() and preset loads auto-open
     it (see the rhythm engine + presets IIFEs). */
  #prog-build-details > summary {
    cursor: pointer; list-style: none; user-select: none;
    display: flex; align-items: center; gap: 10px;
    font-weight: 800; font-size: 16px; letter-spacing: .03em;
    color: #fff; background: #0d9488;
    padding: 12px 16px; border-radius: 8px; margin: 8px 0 0;
  }
  #prog-build-details > summary:hover { background: #0f766e; }
  #prog-build-details[open] > summary { margin-bottom: 16px; }
  #prog-build-details > summary::-webkit-details-marker { display: none; }
  #prog-build-details > summary::before { content: "\25B8"; display: inline-block; transition: transform .15s ease; }
  #prog-build-details[open] > summary::before { transform: rotate(90deg); }
  /* Secondary playback settings collapse under the always-visible TURN ON/OFF
     switch. Modest teal toggle (these are sub-controls, not a section header). */
  .prog-ctl-disclosure { margin-top: 6px; }
  .prog-ctl-disclosure > summary {
    cursor: pointer; list-style: none; user-select: none;
    font-weight: 700; color: #0d9488; font-size: 14px;
  }
  .prog-ctl-disclosure > summary::-webkit-details-marker { display: none; }
  .prog-ctl-disclosure > summary::before { content: "\25B8"; display: inline-block; margin-right: 8px; transition: transform .15s ease; }
  .prog-ctl-disclosure[open] > summary::before { transform: rotate(90deg); }
  .prog-ctl-disclosure[open] > summary { margin-bottom: 12px; }
  .prog-rhythm-block > label {
    display: flex;
    align-items: center;
    margin-bottom: 12px;
    color: #0d9488;
  }
  /* Toggle switch — identical CSS shape to the other mode blocks, tinted teal. */
  .prog-rhythm-block input[type="checkbox"] {
    --s: 20px;
    height: calc(var(--s) + var(--s)/5);
    width: auto;
    aspect-ratio: 2.25;
    border-radius: var(--s);
    margin: 0 calc(var(--s)/2);
    display: grid;
    cursor: pointer;
    background-color: #ccc;
    box-sizing: content-box;
    overflow: hidden;
    transition: .3s .1s;
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
  }
  .prog-rhythm-block input[type="checkbox"]:before {
    content: "";
    padding: calc(var(--s)/10);
    --_g: radial-gradient(circle closest-side at calc(100% - var(--s)/2) 50%,#000 96%,#0000);
    background:
      var(--_g) 0 /var(--_p,var(--s)) 100% no-repeat content-box,
      var(--_g) var(--_p,0)/var(--s)  100% no-repeat content-box,
      #fff;
    mix-blend-mode: darken;
    filter: blur(calc(var(--s)/12)) contrast(11);
    transition: .4s, background-position .4s .1s,
      padding cubic-bezier(0,calc(var(--_i,-1)*200),1,calc(var(--_i,-1)*200)) .25s .1s;
  }
  .prog-rhythm-block input[type="checkbox"]:checked {
    background-color: #0d9488;
  }
  .prog-rhythm-block input[type="checkbox"]:checked:before {
    padding: calc(var(--s)/10 + .05px) calc(var(--s)/10);
    --_p: 100%;
    --_i: 1;
  }
  /* Phase 22f: global playback volume sliders (pulse vs. entered rhythm) */
  .prog-vol-row { display: flex; flex-wrap: wrap; gap: 6px 22px; margin: 2px 0 14px; }
  .prog-vol-label { display: inline-flex; align-items: center; gap: 8px; font-size: 12px; font-weight: bold; color: #0d9488; }
  .prog-vol-label input[type="range"] { width: 110px; cursor: pointer; accent-color: #0d9488; }

  /* ── Phase 22c: measure tabs + single-measure editor box ───────────────── */
  /* measure selector tabs */
  .prog-tabs-row { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 4px 0 12px; }
  .prog-tabs-label { font-size: 12px; font-weight: bold; color: #0d9488; }
  .prog-tabs { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; }
  .prog-tab {
    font-family: inherit; font-size: 13px; min-width: 30px;
    padding: 5px 11px; border: 1px solid #0d9488; border-radius: 4px;
    background: #fff; color: #0d9488; cursor: pointer;
  }
  .prog-tab:hover { background: #ccfbf1; }
  .prog-tab.prog-tab-active { background: #0d9488; color: #fff; font-weight: bold; }
  .prog-tab.prog-tab-bad { border-color: #b45309; color: #b45309; }
  .prog-tab.prog-tab-active.prog-tab-bad { background: #b45309; border-color: #b45309; color: #fff; }
  .prog-tab-add { border-style: dashed; }

  /* editor box */
  .prog-editor {
    border: 1px solid #99f6e4; border-left: 3px solid #0d9488; border-radius: 5px;
    background: #f0fdfa; padding: 12px;
  }
  .prog-editor-head { display: flex; align-items: center; flex-wrap: wrap; gap: 8px 12px; margin-bottom: 12px; }
  .prog-editor-title { font-weight: bold; font-size: 15px; color: #0d9488; }
  .prog-editor-tools { display: inline-flex; gap: 6px; }
  .prog-editing-title { font-size: 16px; font-weight: 800; color: #134e4a; }
  .prog-icon-btn {
    font-family: inherit; font-size: 12px; padding: 4px 9px;
    border: 1px solid #0d9488; border-radius: 4px; background: #fff; color: #0d9488; cursor: pointer;
  }
  .prog-icon-btn:hover:not(:disabled) { background: #ccfbf1; }
  .prog-icon-btn:disabled { opacity: .4; cursor: not-allowed; border-color: #999; color: #777; }
  .prog-del { color: #b91c1c; border-color: #b91c1c; }
  .prog-del:hover:not(:disabled) { background: #fee2e2; }

  /* vertical time signature (its own row at the top of the editor) */
  .prog-ts-block { display: flex; align-items: center; gap: 8px; margin-bottom: 12px; }
  .prog-ts-label { font-size: 11px; color: #555; line-height: 1.15; text-align: right; }
  .prog-ts-stack { display: flex; flex-direction: column; align-items: center; }
  .prog-ts-stack .prog-num {
    width: 48px; padding: 2px 4px; font-size: 17px; text-align: center;
    border: 1px solid #0d9488; border-radius: 3px 3px 0 0;
  }
  .prog-ts-stack .prog-den {
    width: 48px; padding: 2px 4px; font-size: 17px; text-align: center;
    border: 1px solid #0d9488; border-top: 0; border-radius: 0 0 3px 3px;
    color: #0d9488; background: #fff; cursor: pointer;
  }
  /* entered-notes display — full width, at the bottom of the editor */
  .prog-entered-block { margin-top: 12px; }
  .prog-entered-head { display: flex; align-items: center; margin-bottom: 4px; }
  .prog-entered-label {
    font-size: 13px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .06em;
    color: #ea580c;
  }
  /* Reset the hint inside the label so "— click a note to delete it" stays
     in sentence case (the label's uppercase + bold would otherwise cascade). */
  .prog-entered-hint {
    font-style: italic;
    color: #999;
    font-weight: normal;
    text-transform: none;
    letter-spacing: normal;
    font-size: 11px;
  }
  /* Editing-relevant rule, moved here from the subtitle so it sits where notes
     are entered (shared desktop + phone-popup editor). Own line under the label. */
  .prog-entered-note {
    font-size: 12px; color: #6b7280; font-style: italic;
    line-height: 1.4; margin: 2px 0 8px; text-align: left;
  }
  .prog-entered-note strong { font-style: normal; color: #0d9488; }
  .prog-entered {
    display: flex; flex-wrap: wrap; align-items: flex-end; gap: 5px;
    min-height: 52px; padding: 6px; background: #fff;
    border: 3px solid #ea580c; border-radius: 4px;
    box-shadow: inset 0 1px 3px rgba(234,88,12,.12);
  }
  .prog-entered-empty { font-size: 12px; color: #999; font-style: italic; align-self: center; }
  /* Pulse the main measure field while empty so the user sees where their
     notes will land. Orange (#ea580c) for contrast against the teal-tinted
     editor background. Dialed-back values between v1 (too subtle) and
     v2 (too much): alpha .55, spread 9px, 1.8s cycle. */
  #prog-entered:has(.prog-entered-empty) {
    animation: progEnteredPulse 1.8s ease-in-out infinite;
  }
  @keyframes progEnteredPulse {
    0%   { box-shadow: inset 0 1px 3px rgba(234,88,12,.12), 0 0 0 0   rgba(234,88,12,.55); }
    70%  { box-shadow: inset 0 1px 3px rgba(234,88,12,.12), 0 0 0 9px rgba(234,88,12,0);   }
    100% { box-shadow: inset 0 1px 3px rgba(234,88,12,.12), 0 0 0 0   rgba(234,88,12,0);   }
  }

  /* glyph chips (entered notes) */
  .prog-chip {
    display: inline-flex; align-items: center; justify-content: center;
    padding: 1px 3px; border: 1px solid transparent; border-radius: 5px;
    background: transparent; color: #0f766e; cursor: pointer;
  }
  .prog-chip svg { display: block; height: 42px; }
  .prog-chip:hover { background: #fee2e2; border-color: #b91c1c; color: #b91c1c; }
  .prog-chip-rest { color: #666; }
  /* tie arc between/around tied note chips (Phase 22g) */
  .prog-tie { display: inline-flex; align-items: flex-end; color: #0f766e; }
  .prog-tie svg { display: block; height: 16px; margin-bottom: 2px; }

  /* add-note rows */
  .prog-addrow { display: flex; align-items: center; flex-wrap: wrap; gap: 6px; margin-top: 8px; }
  .prog-addrow-label { font-size: 12px; color: #555; min-width: 66px; }
  .prog-addrow-hint { font-size: 11px; color: #888; font-style: italic; margin-top: 6px; }
  .prog-addrow-sep { flex: 1; min-width: 12px; }
  .prog-noteval { display: inline-flex; flex-wrap: wrap; gap: 4px; }
  .prog-note-btn {
    display: inline-flex; align-items: center; justify-content: center;
    min-width: 40px; height: 52px; padding: 0 4px;
    border: 1px solid #0d9488; border-radius: 4px; background: #fff; color: #0d9488; cursor: pointer;
  }
  .prog-note-btn svg { display: block; height: 46px; }
  .prog-note-btn:hover { background: #ccfbf1; }
  .prog-note-btn.prog-note-active { background: #0d9488; color: #fff; }
  .prog-add-btn {
    font-family: inherit; font-size: 12px;
    padding: 6px 10px; border: 1px solid #0d9488; border-radius: 4px;
    background: #fff; color: #0d9488; cursor: pointer;
  }
  .prog-add-btn:hover { background: #ccfbf1; }
  .prog-add-undo, .prog-add-clear { border-color: #b45309; color: #b45309; }
  .prog-add-undo:hover, .prog-add-clear:hover { background: #fffbeb; }
  /* Make the "Save…" CTAs stand out from the small editor buttons:
     larger, bold, and a filled scheme color (teal = rhythms, blue = setups). */
  #prog-presets-save,
  #prog-setups-save,
  #mob-prog-setups-save {
    font-size: 15px !important; font-weight: 700; line-height: 1.3;
    padding: 11px 16px; border-radius: 6px; color: #fff;
  }
  #prog-presets-save { background: #0d9488; border-color: #0d9488; }
  #prog-presets-save:hover { background: #0f766e; }
  #prog-setups-save, #mob-prog-setups-save { background: #2563eb; border-color: #2563eb; }
  #prog-setups-save:hover, #mob-prog-setups-save:hover { background: #1d4ed8; }
  .prog-fill { display: inline-flex; align-items: center; flex-wrap: wrap; gap: 6px; margin-left: auto; font-size: 12px; color: #555; }
  .prog-fill-bar { width: 80px; height: 8px; background: #e5e7eb; border-radius: 4px; overflow: hidden; flex: 0 0 auto; }
  .prog-fill-bar > span { display: block; height: 100%; background: #0d9488; }
  .prog-fill-status { font-weight: bold; text-transform: uppercase; font-size: 11px; }   /* still used by the tuplet builder */
  .prog-fill.ok    .prog-fill-status { color: #0d9488; }
  .prog-fill.short .prog-fill-status { color: #b45309; }
  .prog-fill.over  .prog-fill-status { color: #b91c1c; }
  .prog-fill.over  .prog-fill-bar > span { background: #b91c1c; }
  /* Phase 22m: plain-language fill message + inline "still need / remove" glyphs */
  .prog-fill-msg { font-size: 12px; }
  .prog-fill.ok    .prog-fill-msg { color: #0d9488; font-weight: bold; }
  .prog-fill.short .prog-fill-msg { color: #b45309; }
  .prog-fill.over  .prog-fill-msg { color: #b91c1c; }
  .prog-fill-need svg { height: 30px; width: auto; vertical-align: -3px; margin: 0 2px; }
  /* the notehead sits ~20 viewBox units (≈3px at 30px tall) above the glyph's
     bottom edge, so a -3px nudge from baseline lands the notehead ON the text line */
  .prog-entered-head { flex-wrap: wrap; row-gap: 4px; }

  /* MY SETUPS — full-scope preset list. Blue scheme to differentiate
     from MY RHYTHMS (teal). Same row layout + button styles inherited
     from the prog-presets-* classes. */
  .prog-setups-block {
    margin: 48px auto 4px;
    padding: 12px 14px 14px;
    background: #eff6ff;
    border: 1px solid #bfdbfe;
    border-left: 3px solid #2563eb;
    border-radius: 6px;
    max-width: 500px;
  }
  /* MY METRONOME SETUPS & PRACTICE ROUTINES launcher — aggregated index of every
     saved setup/routine, grouped by tool. Blue to match the setups scheme. */
  #routine-launcher { max-width: 500px; }
  #routine-launcher .prog-setups-subhead { font-size: 26px; line-height: 1.2; }
  .routine-launcher .rl-lead { font-size: 17px; font-weight: 800; color: #1e3a8a; margin: 0 0 10px; }
  .routine-launcher .rl-help { margin: 0 0 5px; }
  /* Collapsible disclosure around the grouped list (desktop compaction). */
  .rl-disclosure { margin-top: 10px; }
  .rl-disclosure-summary {
    cursor: pointer; list-style: none;
    font-weight: 800; font-size: 14px; color: #1e40af;
    padding: 9px 12px; border: 1px solid #bfdbfe; border-radius: 8px;
    background: #eff6ff; user-select: none;
  }
  .rl-disclosure-summary:hover { background: #dbeafe; }
  .rl-disclosure-summary::-webkit-details-marker { display: none; }
  .rl-disclosure-summary::before { content: '\25B8'; display: inline-block; margin-right: 8px; transition: transform .15s ease; }
  .rl-disclosure[open] > .rl-disclosure-summary::before { transform: rotate(90deg); }
  .rl-disclosure[open] > .rl-disclosure-summary { margin-bottom: 12px; }
  .rl-groups { display: flex; flex-direction: column; gap: 14px; margin-top: 0; }
  .rl-group-head { font-weight: 800; font-size: 13px; letter-spacing: .04em; text-transform: uppercase; color: #1e40af; margin-bottom: 6px; text-align: left; }
  .rl-group-detail { display: block; text-transform: none; letter-spacing: 0; font-weight: 600; font-size: 12px; color: #475569; margin-top: 2px; }
  .rl-empty { font-size: 13px; color: #9ca3af; font-style: italic; text-align: left; }
  .rl-row { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 8px 10px; border: 1px solid #dbeafe; border-radius: 8px; background: #fff; margin-bottom: 6px; }
  .rl-row:last-child { margin-bottom: 0; }
  .rl-row-name { font-weight: 700; color: #111827; font-size: 14px; min-width: 0; word-break: break-word; text-align: left; }
  .rl-row-btns { display: flex; gap: 6px; flex: 0 0 auto; }
  .rl-btn { border: 1px solid #bfdbfe; background: #eff6ff; color: #1e40af; border-radius: 7px; padding: 5px 10px; font-size: 13px; font-weight: 700; cursor: pointer; white-space: nowrap; }
  .rl-btn:hover { background: #dbeafe; }
  .rl-btn.rl-btn-start { border-color: #6ee7b7; background: #ecfdf5; color: #047857; }
  .rl-btn.rl-btn-start:hover { background: #d1fae5; }
  .rl-btn.rl-btn-manage { border-color: #cbd5e1; background: #f8fafc; color: #334155; }
  .rl-btn.rl-btn-manage:hover { background: #eef2f7; }
  /* Manage expander row (setups only): the Rename/Edit/Share/Delete toolbar that
     drops in under a setup row. Reuses .prog-presets-row + .prog-presets-icon; we
     just relax the row layout and hide it until its row's Manage button opens it. */
  .rl-manage-row { flex-wrap: wrap; gap: 8px; justify-content: flex-end; align-items: center; margin: 2px 0 8px; padding: 6px 10px 8px; border: none !important; background: none !important; }
  .rl-manage-row:not(.open) { display: none !important; }   /* beat .prog-presets-row{display:flex} (equal specificity, defined later) */
  .rl-manage-row.open { display: flex !important; }
  .prog-setups-subhead {
    font-weight: 800;
    font-size: 13px;
    letter-spacing: .05em;
    text-transform: uppercase;
    color: #1e40af;
    margin: 0 0 10px;
  }
  .prog-setups-list { display: flex; flex-direction: column; gap: 4px; margin: 6px 0 0; }
  .prog-setups-empty { font-size: 12px; color: #6b7280; font-style: italic; margin: 8px 0 4px; }
  .prog-setups-actions { margin-top: 22px; }
  /* Back up & restore — same divider + label treatment as the reset block so
     the two data-management groups read as a set, distinct from Save. */
  .prog-setups-backup {
    margin-top: 12px; padding-top: 10px; border-top: 1px solid #e2e8f0;
    display: flex; flex-direction: column; gap: 6px; align-items: stretch;
  }
  /* Desktop: extra breathing room above BACK UP & RESTORE so it's clearly its
     own group below the saved-setups list. */
  #desktop-setups-panel .prog-setups-backup { margin-top: 28px; }
  .prog-setups-backup-msg { font-size: 12px; margin: 2px 0 0; line-height: 1.35; }
  /* BACK UP & RESTORE now lives under its own collapsible disclosure, so the
     <summary> is the visual separator — drop the section's own top divider /
     extra margin, and give the relocated fragility-warning some breathing room
     below the disclosure. */
  #desktop-setups-panel .rl-disclosure .prog-setups-backup {
    margin-top: 8px; padding-top: 0; border-top: none;
  }
  .prog-setups-backup-note { font-size: 13px; color: #475569; margin: 0 0 8px; text-align: center; }
  #desktop-setups-panel > .prog-setups-warning-slot { margin-top: 18px; }
  /* The "— covers all your saved rhythms & setups" sub-text sits on the light
     card (not a dark reset button), where the default faint #cbd5e1 washes out.
     Match it to the "BACK UP & RESTORE" label's color/weight instead. */
  .prog-setups-backup .prog-reset-label .prog-reset-sub {
    color: inherit; font-weight: inherit; font-style: normal;
  }
  /* "Back to normal" buttons — solid slate, set off by a divider + RESET label
     so they're clearly distinct from the teal Save button and easy to spot. */
  .prog-setups-reset {
    margin-top: 12px; padding-top: 10px; border-top: 1px solid #e2e8f0;
    display: flex; flex-direction: column; gap: 6px; align-items: stretch;
  }
  .prog-reset-label {
    font-size: 14px; font-weight: 700; letter-spacing: .06em;
    text-transform: uppercase; color: #64748b; margin-bottom: 2px;
  }
  .prog-reset-btn {
    font-family: inherit; font-size: 12px; font-weight: 600;
    padding: 8px 12px; border: 1px solid #334155; border-radius: 4px;
    background: #475569; color: #fff; cursor: pointer; text-align: left;
  }
  .prog-reset-btn:hover { background: #334155; border-color: #1e293b; }
  /* Inline SVG icons on the backup/restore buttons — drawn, not font glyphs,
     so they render crisply and identically on every platform (the old ⬇︎/⬆︎
     text arrows were tiny and ambiguous, especially on iOS). Stroke follows
     the button's text color. margin needs !important to survive the
     <=1000px padding-strip's margin-right:0. */
  .prog-reset-ico {
    width: 17px; height: 17px;
    vertical-align: -4px;
    margin-right: 6px !important;
  }
  .prog-reset-sub { color: #cbd5e1; font-style: italic; font-weight: 400; }
  /* Desktop SAVE MY METRONOME SETTINGS: give the save / backup / reset buttons a
     uniform, narrower width, centered in the block, with centered text. Targets
     .desktop-setups-ui (both the brass-plate RESET block and the relocated panel
     below it carry that class); it's hidden on mobile, so this is desktop-only. */
  .desktop-setups-ui .prog-setups-warning,
  .desktop-setups-ui .prog-presets-select,
  .desktop-setups-ui #prog-setups-save,
  .desktop-setups-ui .prog-reset-btn {
    width: 320px;
    max-width: 100%;
    margin-left: auto;
    margin-right: auto;
  }
  /* the Save CTA is an inline button by default — make it block so the
     320px width + auto margins actually center it like the others */
  .desktop-setups-ui #prog-setups-save { display: block; }
  .desktop-setups-ui .prog-reset-btn   { text-align: center; }
  .desktop-setups-ui .prog-reset-label { text-align: center; }
  /* RESET box: pull the box edges in toward its 320px buttons (desktop +
     iPad). The SAVE MY METRONOME SETTINGS panel below keeps the 500px. */
  #desktop-prog-setups-block { max-width: 380px; }
  /* Now a standalone section heading below the brass plate (not the old compact
     disclosure), so size it up. Scoped to the panel so the mobile collapsible
     summary keeps the smaller size. */
  #desktop-setups-panel .prog-setups-subhead { font-size: 18px; }
  /* Reuse the prog-presets-row look but tinted blue for visual cohesion
     with the MY SETUPS section. */
  .prog-setups-block .prog-presets-row { border-color: #dbeafe; }
  .prog-setups-block .prog-presets-row:hover { background: #eff6ff; border-color: #93c5fd; }
  .prog-setups-block .prog-presets-load    { color: #1e40af; }
  .prog-setups-block .prog-presets-load:hover { color: #1e3a8a; }
  .prog-setups-block .prog-presets-icon    { color: #1e40af; border-color: #dbeafe; }
  .prog-setups-block .prog-presets-icon:hover { background: #dbeafe; }
  .prog-setups-block .prog-presets-icon[data-action="delete"] { color: #b91c1c; border-color: #fecaca; }
  .prog-setups-block .prog-presets-icon[data-action="delete"]:hover { background: #fee2e2; }
  /* Active-preset highlight, recolored blue to match the MY SETUPS scheme. */
  .prog-setups-block .prog-presets-row.is-active {
    background: #eff6ff;
    border-color: #93c5fd;
    box-shadow: inset 4px 0 0 #1e40af;
  }
  .prog-setups-block .prog-presets-row.is-active:hover { background: #dbeafe; }
  .prog-setups-block .prog-presets-active-badge { background: #1e40af; }
  @media (min-width: 769px) {
    .prog-setups-block .prog-presets-row .prog-presets-load { flex: 0 1 auto; max-width: 60%; }
  }

  /* MY SETUPS — "SAVE MY METRONOME SETTINGS" heading is a clickable
     disclosure that expands to show the explainer text. Closed by
     default to keep the section's footprint small. */
  .prog-setups-explainer { margin: 0; }
  .prog-setups-explainer summary.prog-setups-subhead {
    cursor: pointer;
    list-style: none;
    user-select: none;
    margin: 0 0 4px;
    padding: 8px 12px;
    /* Button look so it reads as a clickable disclosure, like the
       "Important…" warning below it. Blue to match the MY SETUPS scheme. */
    border: 1px solid #93c5fd;
    background: #fff;
    border-radius: 6px;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 4px;
  }
  .prog-setups-explainer summary.prog-setups-subhead::-webkit-details-marker { display: none; }
  .prog-setups-explainer summary.prog-setups-subhead::before {
    content: "\25B8";
    display: inline-block;
    width: 0.8em;
    color: #1e40af;
    font-size: 20px;
    line-height: 1;
  }
  .prog-setups-explainer[open] summary.prog-setups-subhead::before { content: "\25BE"; }
  .prog-setups-explainer summary.prog-setups-subhead:hover { color: #1e3a8a; background: #dbeafe; border-color: #60a5fa; }
  .prog-setups-explainer-body {
    text-align: left;
    margin: 6px 0 10px;
    padding: 4px 6px 6px;
    font-weight: normal;
    font-size: 13px;
    color: #1f2937;
    text-transform: none;
    letter-spacing: 0;
    line-height: 1.5;
  }
  .prog-setups-explainer-body p { margin: 0 0 10px; }
  .prog-setups-explainer-body p:last-child { margin-bottom: 0; }

  /* MY SETUPS — fragility warning ("how to keep your saved setups safe"). */
  /* Used both inline (under MY SETUPS subhead) and inside the Save modal. */
  .prog-setups-warning {
    margin: 6px 0 10px;
    border: 1px solid #fcd34d;
    background: #fffbeb;
    border-radius: 6px;
    font-size: 13px;
    color: #78350f;
    text-align: left;
  }
  .prog-setups-warning summary {
    cursor: pointer;
    padding: 8px 12px;
    font-weight: 700;
    list-style: none;
    user-select: none;
    text-align: center;
  }
  .prog-setups-warning summary::-webkit-details-marker { display: none; }
  .prog-setups-warning summary::before {
    content: "\25B8";
    color: #92400e;
    display: inline-block;
    width: 0.8em;
    font-size: 20px;
    line-height: 1;
    vertical-align: -2px;
    margin-right: 4px;
  }
  .prog-setups-warning[open] summary::before { content: "\25BE"; }
  .prog-setups-warning summary:hover { background: #fef3c7; }
  /* Bigger disclosure carets, launcher on down — many customers are older
     adults and the text-sized (14px) triangles were easy to miss. One size
     for every expander from MY SETUPS & PRACTICE ROUTINES downward. */
  .rl-disclosure-summary::before,
  .pt-disclosure > summary::before,
  .prog-hint-disclosure > summary::before,
  #prog-build-details > summary::before,
  .prog-ctl-disclosure > summary::before,
  .prog-setups-explainer summary.prog-setups-subhead::before,
  .prog-setups-warning summary::before,
  .il-why-summary::before {
    font-size: 26px;
    line-height: 1;
    vertical-align: -4px;
  }
  /* "Manage ▸" caret in the launcher rows (span injected by the launcher JS). */
  .rl-btn-manage .rl-mng-caret { font-size: 20px; line-height: 1; vertical-align: -3px; margin-left: 2px; }
  .prog-setups-warning-body { padding: 0 14px 12px; text-align: left; }
  .prog-setups-warning-body p { margin: 8px 0 4px; line-height: 1.45; }
  .prog-setups-warning-body ul { margin: 0 0 8px; padding-left: 22px; }
  .prog-setups-warning-body li { margin: 3px 0; line-height: 1.45; }
  .prog-setups-warning-body p.prog-setups-warning-tip {
    margin-top: 12px;
    padding: 8px 10px;
    background: #fef3c7;
    border-left: 3px solid #d97706;
    border-radius: 4px;
  }
  /* Modal variant — tighter margins so it fits well after the checkbox list. */
  .progPreset-modal-body .prog-setups-warning { margin: 14px 0 0; }
  /* Inline Save-modal tip (one-liner above the details). */
  .progPreset-modal-body .prog-setups-warning-pretip {
    margin: 10px 0 0;
    font-size: 12px;
    color: #92400e;
    line-height: 1.45;
  }

  /* MY RHYTHMS — preset list inside .prog-rhythm-block (Phase 12) ────── */
  .prog-presets-tagline {
    font-weight: normal;
    font-size: 12px;
    letter-spacing: normal;
    text-transform: none;
    color: #6b7280;
    font-style: italic;
    margin-left: 8px;
  }
  .prog-presets-block {
    margin: 16px 0 4px;
    padding: 12px 14px 14px;
    background: #f0fdfa;
    border: 1px solid #99f6e4;
    border-left: 3px solid #0d9488;
    border-radius: 6px;
  }
  .prog-presets-list { display: flex; flex-direction: column; gap: 4px; margin: 6px 0 0; }
  .prog-presets-empty { font-size: 12px; color: #6b7280; font-style: italic; margin: 8px 0 4px; }
  .prog-presets-row {
    display: flex; align-items: center; gap: 6px;
    padding: 4px 4px 4px 8px;
    border: 1px solid #ccfbf1;
    border-radius: 5px;
    background: #fff;
    transition: background .12s, border-color .12s;
  }
  .prog-presets-row:hover { background: #ecfdf5; border-color: #99f6e4; }
  .prog-presets-load {
    flex: 1 1 auto;
    text-align: left;
    background: none;
    border: none;
    font-family: inherit; font-size: 13px; font-weight: 600;
    color: #0d9488;
    cursor: pointer;
    padding: 6px 4px;
    min-width: 0;
    overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
  }
  .prog-presets-load:hover { color: #115e59; }
  .prog-presets-icon {
    flex: 0 0 auto;
    font-family: inherit; font-size: 11px; font-weight: 600;
    padding: 4px 8px;
    border: 1px solid #d1fae5;
    border-radius: 4px;
    background: #fff;
    color: #0d9488;
    cursor: pointer;
  }
  .prog-presets-icon:hover { background: #ccfbf1; }
  .prog-presets-icon[data-action="delete"] { color: #b91c1c; border-color: #fecaca; }
  .prog-presets-icon[data-action="delete"]:hover { background: #fee2e2; }
  /* Phase 24: the page-wide <=1000px padding-strip zeroes horizontal padding on
     everything. Restore it for the Active badge (the action buttons already have
     their own !important override) and for the practice-log modal cards + their
     Edit/Delete buttons. Specificity beats the *:not(...) reset; scoped to
     <=1000px so desktop is untouched. */
  @media screen and (max-width: 1000px) {
    .prog-presets-row .prog-presets-active-badge { padding-left: 7px !important; padding-right: 7px !important; }
    .progPreset-modal-body .ladder-log-card { padding-left: 12px !important; padding-right: 12px !important; }
    .progPreset-modal-body .ladder-log-card .prog-presets-icon { padding-left: 8px !important; padding-right: 8px !important; }
  }
  .prog-presets-actions { margin-top: 24px; display: flex; flex-direction: column; gap: 6px; align-items: flex-start; }
  /* Save button relocated to the top of the editor: no top gap (it's the first
     thing in the editor), with breathing room above the Measure # tabs. */
  .prog-editor-save { margin-top: 0; margin-bottom: 16px; }
  /* Compact mode (>=3 presets): named dropdown + action toolbar (constant height). */
  .prog-presets-select {
    display: block; width: 100%; max-width: 340px; box-sizing: border-box;
    margin: 6px 0; padding: 8px 40px 8px 10px;
    font-family: inherit; font-size: 14px; font-weight: 600;
    color: #0d9488; background: #fff;
    border: 1px solid #99f6e4; border-radius: 6px; cursor: pointer;
    text-align: center; text-align-last: center;
    /* Native select arrow is tiny and unstylable — replace it with a big
       chevron (18px SVG) and narrow the box so it sits near the text. */
    appearance: none; -webkit-appearance: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='12' viewBox='0 0 18 12'%3E%3Cpath d='M2 2l7 8 7-8' fill='none' stroke='%23374151' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
    background-repeat: no-repeat; background-position: right 12px center; background-size: 18px 12px;
  }
  .prog-setups-block .prog-presets-select { color: #1e40af; border-color: #bfdbfe; }
  /* Custom dropdown (desktop MY SETUPS) — a trigger button + a floating card we
     fully control, since a native <select> popup can't take a border/padding.
     Trigger matches the 320px width of the other controls; the panel is an
     overlaying white card with a clear border, shadow, and extra bottom
     padding so the list reads as a distinct block. */
  .prog-cdrop { position: relative; }
  .prog-cdrop-trigger {
    display: flex; align-items: center; justify-content: center; gap: 4px;
    width: 320px; max-width: 100%; margin: 6px auto;
    padding: 9px 12px; font-family: inherit; font-size: 13px; font-weight: 600;
    color: #1e40af; background: #fff;
    border: 1px solid #60a5fa; border-radius: 6px; cursor: pointer;
  }
  .prog-cdrop-trigger:hover { background: #f8fbff; border-color: #2563eb; }
  .prog-cdrop-trigger[aria-expanded="true"] { border-color: #2563eb; box-shadow: 0 0 0 2px #dbeafe; }
  .prog-cdrop-label { flex: 0 1 auto; min-width: 0; text-align: center; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  /* Caret matches the SAVE MY METRONOME SETTINGS disclosure above it: same
     ▸ glyph, left of the text, 20px, #1e40af. Rotates 90° to point down
     (= the disclosure's open ▾) while the dropdown is expanded. */
  .prog-cdrop-caret { flex: 0 0 auto; width: .8em; color: #1e40af; font-size: 20px; line-height: 1; }
  .prog-cdrop-trigger[aria-expanded="true"] .prog-cdrop-caret { transform: rotate(90deg); }
  .prog-cdrop-panel {
    position: absolute; left: 50%; transform: translateX(-50%); top: calc(100% + 4px);
    width: 320px; max-width: 100%; box-sizing: border-box;
    display: flex; flex-direction: column; gap: 2px;
    max-height: 320px; overflow-y: auto;
    padding: 8px 8px 12px;
    background: #fff; border: 2px solid #60a5fa; border-bottom-width: 4px; border-radius: 8px;
    box-shadow: 0 10px 28px rgba(15, 23, 42, .22);
    z-index: 60;
  }
  /* display:flex above would override the [hidden] attribute's display:none,
     leaving the panel permanently open — restore the hide explicitly. */
  .prog-cdrop-panel[hidden] { display: none; }
  .prog-cdrop-opt {
    display: block; width: 100%; text-align: left;
    padding: 8px 10px; font-family: inherit; font-size: 13px;
    color: #1e40af; background: transparent; border: 0; border-radius: 4px; cursor: pointer;
  }
  .prog-cdrop-opt:hover { background: #eff6ff; }
  .prog-cdrop-opt[aria-selected="true"] { font-weight: 700; background: #dbeafe; }
  .prog-presets-row.prog-presets-toolbar {
    border: none !important; background: none !important; padding: 0;
    gap: 6px; flex-wrap: wrap;
  }
  .prog-presets-row.prog-presets-toolbar .prog-presets-icon { margin-left: 0 !important; }
  /* name of the currently-loaded preset that the toolbar buttons act on */
  .prog-presets-row.prog-presets-toolbar .prog-presets-toolbar-name {
    font-weight: 700; font-size: 13px; color: #0d9488; margin-right: auto;
    overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 55%;
  }
  .prog-setups-block .prog-presets-toolbar-name { color: #1e40af; }
  /* Setups + MY RHYTHMS toolbars: the loaded preset name takes its own line;
     the buttons (Close, Log, Rename, Share, Edit, Delete) wrap onto the line
     below — at EVERY width, not just phones — so a long name is never shortened. */
  .prog-setups-block .prog-presets-row.prog-presets-toolbar .prog-presets-toolbar-name,
  .prog-presets-block .prog-presets-row.prog-presets-toolbar .prog-presets-toolbar-name {
    flex: 1 1 100%; max-width: 100%; white-space: normal; overflow: visible; overflow-wrap: anywhere;
  }
  /* Center the wrapped button row (the full-width name above is unaffected). */
  .prog-setups-block .prog-presets-row.prog-presets-toolbar,
  .prog-presets-block .prog-presets-row.prog-presets-toolbar { justify-content: center; }
  /* MY RHYTHMS list rows (the ≤2-saved form, before it switches to a dropdown
     at 3+): the preset name is a full-width .prog-presets-load button on its own
     line — never shortened — and the Rename/Share/Edit/Delete buttons wrap onto
     the line below. At EVERY width, matching the toolbar form above. */
  .prog-presets-block .prog-presets-row { flex-wrap: wrap; }
  .prog-presets-block .prog-presets-row .prog-presets-load {
    flex: 1 1 100%; max-width: 100%; white-space: normal; overflow: visible; text-overflow: clip;
  }
  /* Mobile: roomier list rows + action buttons so they're not cramped at the edges. */
  @media (max-width: 768px) {
    .prog-presets-row  { padding-left: 12px; padding-right: 12px; }
    .prog-presets-icon { padding-left: 12px; padding-right: 12px; }
  }
  /* SAVE MY METRONOME SETTINGS, <=1000px (phones + iPad portrait): the
     site-wide padding-strip zeroes the L/R padding on the preset name, the
     Rename/Share/Edit/Delete buttons, and the dropdown options — text sits
     flush against its box and the buttons read as one crowded clump. Restore
     the paddings (!important to outrank the strip) and widen the button gap. */
  @media screen and (max-width: 1000px) {
    .prog-setups-block .prog-presets-row  { gap: 10px; padding-left: 10px !important; padding-right: 10px !important; }
    .prog-setups-block .prog-presets-load { padding-left: 4px !important; padding-right: 4px !important; }
    .prog-setups-block .prog-presets-icon { padding-left: 10px !important; padding-right: 10px !important; }
    .prog-setups-block .prog-cdrop-opt    { padding-left: 10px !important; padding-right: 10px !important; }
    /* The strip also zeroes margin-right:auto on the loaded setup's name,
       which is what pushes the buttons to the right edge — restore it. */
    .prog-setups-block .prog-presets-toolbar-name { margin-right: auto !important; }
  }
  /* Phones (<=768px), SAVE MY METRONOME SETTINGS: long preset names were
     ellipsis-truncated to leave room for the four action buttons on the same
     line. Instead give the name the whole first line — wrapping onto more
     lines if needed so the full name is always readable — and let the
     Rename/Share/Edit/Delete buttons wrap onto their own line below.
     Desktop and iPad portrait keep the one-line row. */
  @media screen and (max-width: 768px) {
    .prog-setups-block .prog-presets-row { flex-wrap: wrap; }
    .prog-setups-block .prog-presets-load,
    .prog-setups-block .prog-presets-toolbar .prog-presets-toolbar-name {
      flex: 1 1 100%;
      max-width: 100%;
      white-space: normal;
      overflow: visible;
      overflow-wrap: anywhere; /* a long name with no spaces still wraps */
    }
  }
  /* Scope badge on each preset row — shows "Rhythm" or "Setup" so the user
     can tell at a glance what a preset captures when there are many. */
  .prog-presets-badge {
    flex: 0 0 auto;
    font-family: inherit;
    font-size: 9px;
    font-weight: 700;
    letter-spacing: .04em;
    text-transform: uppercase;
    padding: 2px 7px;
    border-radius: 3px;
    color: #fff;
    margin-right: 4px;
  }
  .prog-presets-badge[data-scope="rhythm"] { background: #0d9488; }
  .prog-presets-badge[data-scope="full"]   { background: #1e40af; }
  /* Desktop only: let the name shrink to its content (instead of filling
     the row) so the Rename / Share / Delete buttons sit immediately to its
     right rather than being pushed to the far right edge. Mobile keeps the
     name growing (icons stay on the right, far enough for big tap targets). */
  @media (min-width: 769px) {
    .prog-presets-row .prog-presets-load { flex: 0 1 auto; max-width: 60%; }
    /* Right-align the action cluster: margin-left:auto on the first action
       button absorbs the free space, pushing Rename/Share/Edit/Delete to the
       right edge (Delete flush right) and opening a gap after the preset name.
       Same buttons + widths per row ⇒ the columns line up vertically. The
       ACTIVE pill comes before Rename, so it stays beside the name. */
    .prog-presets-row .prog-presets-icon[data-action="rename"] { margin-left: auto; }
    /* MY RHYTHMS only: cap the box width so the right edge pulls in toward the
       content (stays left-aligned via its 0 side-margins), removing the wide
       blank gap between rhythm names and their right-aligned buttons. Tune the
       px value to taste. MY SETUPS uses .prog-setups-block, so it's unaffected. */
    .prog-presets-block { max-width: 460px; }
  }
  /* Active (last-loaded) preset — the row stays highlighted with an ACTIVE
     pill so it's obvious which saved preset is currently loaded. The marker
     persists until another preset is loaded (or this one is deleted). Teal =
     MY RHYTHMS; the blue override in the MY SETUPS block recolors it there. */
  .prog-presets-row.is-active {
    background: #ecfdf5;
    border-color: #5eead4;
    box-shadow: inset 4px 0 0 #0d9488;
  }
  .prog-presets-row.is-active:hover { background: #d8fbf0; }
  .prog-presets-active-badge {
    flex: 0 0 auto;
    font-family: inherit;
    font-size: 9px;
    font-weight: 700;
    letter-spacing: .05em;
    text-transform: uppercase;
    padding: 2px 7px;
    border-radius: 3px;
    color: #fff;
    background: #0d9488;
    white-space: nowrap;
  }

  .prog-rhythm-warning {
    font-size: 12px; color: #b91c1c;
    background: #fee2e2; border-left: 3px solid #b91c1c; border-radius: 3px;
    padding: 6px 10px; margin-top: 8px;
  }
  .prog-rhythm-warning[hidden] { display: none; }

  /* ── Phase 22d: Build-a-tuplet sub-builder + tuplet chips ──────────────── */
  .prog-tuplet-builder {
    margin-top: 16px; padding: 12px;
    border: 1px solid #99f6e4; border-left: 3px solid #0d9488; border-radius: 5px; background: #f0fdfa;
  }
  .prog-tuplet-title { font-weight: bold; font-size: 14px; color: #0d9488; margin-bottom: 10px; }
  .prog-tuplet-sub { font-weight: normal; font-size: 11px; color: #777; font-style: italic; }
  .prog-tup-type-btn {
    font-family: inherit; font-size: 12px; padding: 5px 10px;
    border: 1px solid #0d9488; border-radius: 4px; background: #fff; color: #0d9488; cursor: pointer;
  }
  .prog-tup-type-btn:hover { background: #ccfbf1; }
  .prog-tup-type-btn.prog-tup-type-active { background: #0d9488; color: #fff; font-weight: bold; }
  .prog-tup-base-select {
    font-family: inherit; font-size: 13px; padding: 4px 8px;
    border: 1px solid #0d9488; border-radius: 4px; color: #0d9488; background: #fff; cursor: pointer;
  }
  /* Build-a-polyrhythm (Phase 22h) */
  .prog-poly-num { width: 44px; padding: 3px 4px; font-size: 14px; text-align: center; border: 1px solid #0d9488; border-radius: 3px; }
  .prog-poly-colon { font-size: 17px; font-weight: bold; color: #0d9488; }
  .prog-poly-hint { font-size: 11px; color: #888; font-style: italic; }
  /* Phase 22i: "Ratio" heading + the two stacked, left-labeled number fields */
  .prog-poly-head { font-weight: bold; font-size: 13px; color: #0d9488; margin: 12px 0 6px; }
  .prog-poly-field { display: flex; align-items: center; gap: 8px; margin: 5px 0; }
  .prog-poly-flabel { flex: 0 0 280px; max-width: 280px; font-size: 12px; color: #444; line-height: 1.25; cursor: pointer; }
  .prog-poly-typelabel { min-width: 0; }
  .prog-poly-preview { font-size: 12px; color: #0d9488; font-weight: bold; }
  .prog-chip-poly { display: inline-flex; flex-direction: column; align-items: center; gap: 1px; padding: 2px 6px; border: 1px solid #0d9488; border-radius: 5px; background: #ccfbf1; color: #0f766e; cursor: pointer; }
  .prog-chip-poly:hover { background: #fee2e2; border-color: #b91c1c; color: #b91c1c; }
  .prog-poly-ratio { font-size: 11px; font-weight: bold; line-height: 1; }
  .prog-poly-grid { display: block; height: 26px; width: 36px; }
  /* Build-a-custom-polyrhythm (Phase 22i) */
  .prog-cpoly-voice-btn { font-family: inherit; font-size: 12px; padding: 5px 10px; border: 1px solid #0d9488; border-radius: 4px; background: #fff; color: #0d9488; cursor: pointer; }
  .prog-cpoly-voice-btn:hover { background: #ccfbf1; }
  .prog-cpoly-voice-btn.prog-cpoly-voice-active { background: #0d9488; color: #fff; font-weight: bold; }
  .prog-cpoly-voices { margin: 8px 0; }
  .prog-cpoly-voice { margin-bottom: 8px; }
  .prog-cpoly-vhead { font-size: 11px; color: #555; margin-bottom: 3px; }
  .prog-cpoly-vlabel { font-weight: bold; color: #0d9488; }
  .prog-cpoly-dur { margin-left: 10px; font-style: italic; color: #777; }
  #prog-cpoly-top.prog-cpoly-editing, #prog-cpoly-bot.prog-cpoly-editing { border-color: #0d9488; box-shadow: 0 0 0 2px rgba(13,148,136,.3); }
  /* committed custom-poly chip: two stacked rows of small glyphs */
  .prog-chip-cpoly { display: inline-flex; flex-direction: column; align-items: center; gap: 2px; padding: 2px 5px; border: 1px solid #0d9488; border-radius: 5px; background: #ccfbf1; color: #0f766e; cursor: pointer; }
  .prog-chip-cpoly:hover { background: #fee2e2; border-color: #b91c1c; color: #b91c1c; }
  .prog-chip-cpoly .prog-cpoly-row { display: inline-flex; align-items: flex-end; gap: 2px; }
  .prog-chip-cpoly .prog-cpoly-row svg { height: 18px; }
  .prog-chip-cpoly .prog-cpoly-rowdiv { align-self: stretch; height: 1px; background: currentColor; opacity: .4; }
  /* tuplet inside a committed custom-poly voice: inner notes are spread across the
     span (positioned like the other glyphs); a bracket strip sits above them */
  .prog-cpoly-vcol { display: flex; flex-direction: column; align-items: stretch; }
  .prog-cpoly-brk { position: relative; height: 14px; }
  .prog-cpoly-tupbr { position: absolute; bottom: 0; height: 6px; border: 1.4px solid currentColor; border-bottom: none; box-sizing: border-box; }
  .prog-cpoly-tupbr-num { position: absolute; top: -8px; left: 50%; transform: translateX(-50%); font-size: 10px; font-weight: bold; line-height: 1; }
  /* tuplet builder destination banner (armed for a custom-poly voice) */
  .prog-tup-dest { font-size: 12px; color: #0d9488; font-weight: bold; margin: 4px 0; }
  /* measure-editor navigation buttons (jump to a sub-builder) — set apart from the inline note-modifiers */
  .prog-navrow { margin: 2px 0 8px; padding-top: 6px; border-top: 1px dashed #99f6e4; }
  .prog-nav-btn { font-weight: bold; border-color: #0d9488; color: #0d9488; }
  .prog-linkbtn { font-family: inherit; font-size: 12px; color: #0d9488; background: none; border: none; padding: 0; text-decoration: underline; cursor: pointer; }
  .prog-linkbtn:hover { color: #0f766e; }
  /* even-ratio polyrhythm chip: top voice carries a Sibelius-style tuplet bracket */
  .prog-poly-topwrap { display: flex; flex-direction: column; align-items: stretch; gap: 1px; }
  .prog-poly-bracket { display: flex; align-items: center; justify-content: center; gap: 3px; height: 12px; }
  .prog-poly-bracket-line { flex: 1 1 auto; height: 6px; border-top: 1.4px solid currentColor; }
  .prog-poly-bracket-line.l { border-left: 1.4px solid currentColor; }
  .prog-poly-bracket-line.r { border-right: 1.4px solid currentColor; }
  .prog-poly-bracket-num { font-size: 10px; font-weight: bold; line-height: 1; }
  /* time-proportional voice row: glyphs absolutely placed at their onset */
  .prog-prow { position: relative; display: block; height: 44px; }
  .prog-prow-note { position: absolute; bottom: 0; }
  .prog-prow-note svg { height: 42px; display: block; }
  /* a committed tuplet shown as one chip inside a measure: number over inner glyphs */
  .prog-chip-tuplet {
    display: inline-flex; flex-direction: column; align-items: center;
    padding: 1px 5px; border: 1px solid #0d9488; border-radius: 5px; background: #ccfbf1; color: #0f766e;
  }
  .prog-chip-tuplet:hover { background: #fee2e2; border-color: #b91c1c; color: #b91c1c; }
  .prog-tuplet-num { font-size: 10px; font-weight: bold; line-height: 1.2; }
  .prog-tuplet-inner { display: inline-flex; align-items: flex-end; gap: 1px; }
  .prog-chip-tuplet svg { height: 42px; }

  /* RATIO trigger button — chevron-styled, green border, opens the picker. */
  .polyrhythm-trigger {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    margin-left: 10px;
    padding: 5px 10px 5px 12px;
    font-family: inherit;
    font-size: 13px;
    color: #7c3aed;
    background: white;
    border: 1.5px solid #7c3aed;
    border-radius: 4px;
    cursor: pointer;
    min-width: 200px;
    text-align: left;
  }
  .polyrhythm-trigger:disabled {
    opacity: .5;
    cursor: not-allowed;
    border-color: #999;
    color: #777;
  }
  .polyrhythm-trigger:hover:not(:disabled) {
    background: #f5f3ff;
  }
  .polyrhythm-trigger:focus-visible {
    outline: 2px solid #7c3aed;
    outline-offset: 2px;
  }
  .polyrhythm-trigger-arrow {
    margin-left: auto;
    font-size: 20px;   /* was 9px — barely visible */
    line-height: 1;
    color: #7c3aed;
  }
  .polyrhythm-trigger:disabled .polyrhythm-trigger-arrow {
    color: #999;
  }

  /* Floating notation panel — fixed position so the user can drag it next
     to whatever they want to watch alongside the notation (flashing beats,
     BPM input, meter, etc.). The handle bar is the drag affordance; the
     SVG area is a click target that reopens the picker. Position is
     persisted in localStorage so the panel returns to the same spot
     across page reloads. Hidden when polyrhythm is off or no ratio set. */
  .polyrhythm-notation-display {
    position: fixed;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    z-index: 9000;          /* above main UI, below picker modal (10000) */
    background: white;
    border: 2px solid #7c3aed;
    border-radius: 8px;
    box-shadow: 0 4px 18px rgba(0, 0, 0, 0.18);
    max-width: 560px;
    margin: 0;
    user-select: none;
    -webkit-user-select: none;
  }
  .polyrhythm-notation-display[hidden] { display: none; }
  .polyrhythm-notation-handle {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 5px 12px;
    background: #7c3aed;
    color: white;
    cursor: grab;
    border-top-left-radius: 6px;
    border-top-right-radius: 6px;
    font-size: 13px;
    touch-action: none;
  }
  .polyrhythm-notation-handle:active,
  .polyrhythm-notation-handle.dragging {
    cursor: grabbing;
  }
  .polyrhythm-grip {
    font-size: 14px;
    letter-spacing: -3px;
    opacity: 0.85;
    line-height: 1;
  }
  .polyrhythm-handle-label {
    flex: 1;
    font-weight: bold;
    letter-spacing: 0.3px;
    font-size: 13px;
  }
  .polyrhythm-handle-hint {
    font-size: 10px;
    opacity: 0.75;
    font-style: italic;
  }
  /* X close button in the handle bar — hides the panel without changing
     any audio state. A small "Show notation panel" restore button (see
     .polyrhythm-show-notation below) appears in the polyrhythm-block so
     the user can bring the panel back. */
  .polyrhythm-notation-close {
    background: none;
    border: none;
    color: white;
    font-size: 20px;
    line-height: 1;
    cursor: pointer;
    padding: 0 6px;
    margin-left: 2px;
    border-radius: 3px;
    opacity: 0.85;
    font-family: inherit;
  }
  .polyrhythm-notation-close:hover {
    background: rgba(255, 255, 255, 0.2);
    opacity: 1;
  }
  .polyrhythm-notation-close:focus-visible {
    outline: 2px solid white;
    outline-offset: -1px;
  }
  /* Restore button — dashed border distinguishes it from the primary RATIO
     trigger; visible only when the floating panel has been dismissed. */
  .polyrhythm-show-notation {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    margin: 0 0 10px 15px;
    padding: 4px 12px;
    font-family: inherit;
    font-size: 12px;
    color: #7c3aed;
    background: white;
    border: 1px dashed #7c3aed;
    border-radius: 4px;
    cursor: pointer;
  }
  .polyrhythm-show-notation:hover {
    background: #f5f3ff;
    border-style: solid;
  }
  .polyrhythm-show-notation:focus-visible {
    outline: 2px solid #7c3aed;
    outline-offset: 2px;
  }
  .polyrhythm-show-notation[hidden] { display: none; }

  .polyrhythm-notation-trigger {
    display: block;
    width: 100%;
    background: white;
    border: none;                       /* container has the border now */
    border-radius: 0 0 6px 6px;
    padding: 10px 12px 4px;
    cursor: pointer;
    transition: background .15s;
    font-family: inherit;
  }
  .polyrhythm-notation-trigger:hover {
    background: #f5f3ff;
  }
  .polyrhythm-notation-trigger:focus-visible {
    outline: 2px solid #7c3aed;
    outline-offset: -2px;
  }
  #polyrhythm-notation-svg {
    display: flex;
    justify-content: center;
    align-items: center;
    overflow-x: auto;
  }
  #polyrhythm-notation-svg svg {
    height: 135px;
    width: auto;
    max-width: 100%;
    flex: 0 0 auto;
  }
  .polyrhythm-notation-hint {
    font-size: 10px;
    color: #888;
    text-align: center;
    margin-top: 4px;
    font-style: italic;
  }

  /* ── Programmed-rhythm score popup (Phase 22j) ──────────────────────────── */
  /* Classic "centered fixed element" CSS pattern. top/right/bottom/left
     all zero stretches the element to fill the viewport; width/height
     constraints + margin:auto on all sides shrinks it to content and
     centers it both ways. Works on every browser, no JS needed.
     Drag code (pointerDown) sets margin:0 + right:auto + bottom:auto +
     explicit left/top to convert to absolute viewport coordinates. */
  .prog-score-display {
    position: fixed; z-index: 9000;
    top: 0; right: 0; bottom: 0; left: 0;
    margin: auto;
    width: max-content; height: max-content;
    max-width: min(900px, calc(100vw - 16px));
    max-height: 92vh;
    background: white; border: 2px solid #0d9488; border-radius: 8px;
    box-shadow: 0 4px 18px rgba(0,0,0,.18);
    user-select: none; -webkit-user-select: none;
  }
  .prog-score-display[hidden] { display: none; }
  .prog-score-handle {
    display: flex; align-items: center; gap: 8px; padding: 5px 12px;
    background: #0d9488; color: white; cursor: grab; touch-action: none;
    border-top-left-radius: 6px; border-top-right-radius: 6px; font-size: 13px;
  }
  .prog-score-handle.dragging { cursor: grabbing; }
  .prog-score-grip { font-size: 14px; letter-spacing: -3px; opacity: .85; line-height: 1; }
  .prog-score-handle-label { flex: 1; font-weight: bold; letter-spacing: .3px; font-size: 13px; }
  .prog-score-handle-hint { font-size: 10px; opacity: .75; font-style: italic; margin-right: 14px; }
  .prog-score-close {
    background: none; border: none; color: white; font-size: 22px; line-height: 1;
    cursor: pointer; padding: 6px 14px; margin-left: 4px; border-radius: 3px; opacity: .85; font-family: inherit;
    min-width: 40px; min-height: 32px;
  }
  .prog-score-close:hover { background: rgba(255,255,255,.2); opacity: 1; }
  .prog-score-close:focus-visible { outline: 2px solid white; outline-offset: -1px; }
  .prog-score-body {
    display: flex; flex-wrap: wrap; align-items: flex-start; gap: 14px 0;
    padding: 12px; max-width: 900px; max-height: 78vh; overflow: auto;
    background: white; border-radius: 0 0 6px 6px;
  }
  .prog-score-measure {
    display: inline-flex; align-items: flex-start; gap: 8px;
    padding: 4px 12px; border-left: 2px solid #0d9488;
    max-width: 100%;        /* don't exceed body width — forces wrap inside */
  }
  .prog-score-measure:last-child { border-right: 2px solid #0d9488; }
  .prog-score-ts {
    display: inline-flex; flex-direction: column; align-items: center; justify-content: flex-end;
    font-weight: bold; font-size: 17px; line-height: .95; color: #0f766e;
  }
  .prog-score-notes {
    display: flex; flex-wrap: wrap; align-items: flex-end;
    gap: 6px 5px;        /* small row-gap for wrapped lines */
    min-width: 0;        /* allow shrinking so wrap can engage */
    flex: 1 1 auto;
  }
  .prog-score-body .prog-chip { pointer-events: none; }   /* read-only display */
  /* Phase 23: live playback readout + highlight */
  .prog-score-status { padding: 5px 12px; font-size: 13px; font-weight: bold; color: #0f766e; background: #ccfbf1; border-bottom: 1px solid #99f6e4; }
  .prog-score-status[hidden] { display: none; }
  .prog-ci-num { display: inline-block; min-width: 1.5em; text-align: center; opacity: .4; }
  .prog-ci-num.on { opacity: 1; color: #0d9488; font-size: 1.25em; }
  .prog-score-dim .prog-score-measure { opacity: .35; }
  .prog-score-measure.prog-viz-on { background: #ccfbf1; border-radius: 0 4px 4px 0; }
  .prog-chip.prog-viz-chip-on { animation: progChipPulse .32s ease-out; }
  @keyframes progChipPulse { 0% { transform: scale(1.22); } 100% { transform: scale(1); } }
  /* individual top-voice note pulse inside a polyrhythm as it sounds */
  .prog-prow-note.prog-viz-note-on { animation: progNotePulse .3s ease-out; transform-origin: center bottom; }
  @keyframes progNotePulse { 0% { transform: scale(1.4); } 100% { transform: scale(1); } }
  /* Play-range (Phase 23b): panel control + clickable / excluded measures */
  .prog-playrange-label { font-weight: bold; color: #0d9488; }
  .prog-play-sel { font-family: inherit; font-size: 12px; padding: 2px 4px; border: 1px solid #0d9488; border-radius: 3px; margin: 0 2px; }
  .prog-playrange-dash { color: #0d9488; }
  .prog-playrange-readout { font-style: italic; color: #777; margin-left: 8px; }
  .prog-score-measure { cursor: pointer; }
  .prog-score-measure:hover { outline: 1px dashed #0d9488; outline-offset: -2px; }
  .prog-score-excluded { opacity: .3; }
  .prog-score-empty { font-size: 12px; color: #999; font-style: italic; align-self: center; padding: 0 6px; }
  /* count-in row (Phase 22k) */
  .prog-countin-row { margin: 2px 0 10px 15px; font-size: 12px; color: #555; transition: opacity .15s; }
  .prog-countin-input { width: 46px; padding: 2px 4px; font-size: 13px; text-align: center; border: 1px solid #0d9488; border-radius: 3px; margin-left: 6px; }
  .prog-countin-hint { font-size: 11px; color: #888; font-style: italic; margin-left: 8px; }
  /* dashed restore button in the programmed panel — visible only when dismissed */
  .prog-score-restore {
    display: inline-flex; align-items: center; gap: 4px; margin: 8px 0; padding: 4px 12px;
    font-family: inherit; font-size: 12px; color: #0d9488; background: white;
    border: 1px dashed #0d9488; border-radius: 4px; cursor: pointer;
  }
  .prog-score-restore:hover { background: #f0fdfa; border-style: solid; }
  .prog-score-restore[hidden] { display: none; }

  /* ── Picker modal ─────────────────────────────────────────────────────── */
  #polyrhythm-picker-backdrop {
    display: none;
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, 0.55);
    z-index: 10000;
    justify-content: center;
    align-items: center;
    padding: 20px;
  }
  #polyrhythm-picker-backdrop.open {
    display: flex;
  }
  #polyrhythm-picker {
    background: white;
    width: 100%;
    max-width: 920px;
    max-height: 90vh;
    border-radius: 12px;
    display: flex;
    flex-direction: column;
    box-shadow: 0 20px 60px rgba(0, 0, 0, 0.45);
    overflow: hidden;
    font-family: inherit;
  }
  .polyrhythm-picker-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    /* !important so the horizontal padding survives the mobile-wide
       *:not(.radial-slider *){padding-left/right:0 !important} reset at <=1000px. */
    padding: 14px 30px !important;
    border-bottom: 1px solid #e0e8e0;
    background: #f4faf5;
  }
  .polyrhythm-picker-header h2 {
    margin: 0;
    font-size: 18px;
    color: #7c3aed;
    letter-spacing: 0.5px;
  }
  .polyrhythm-picker-close {
    background: none;
    border: none;
    font-size: 28px;
    line-height: 1;
    cursor: pointer;
    color: #666;
    padding: 0 6px;
    border-radius: 4px;
  }
  .polyrhythm-picker-close:hover {
    color: #7c3aed;
    background: #eef7f0;
  }
  .polyrhythm-picker-hint {
    font-size: 12px;
    color: #555;
    font-style: italic;
    margin: 0;
    padding: 8px 30px !important;
    background: #fafbfa;
    border-bottom: 1px solid #e8ece8;
  }
  #polyrhythm-picker-list {
    flex: 1;
    overflow-y: auto;
    padding: 6px 0;
    background: white;
  }
  /* Section headings inside the picker list ("HEMIOLA", "POLYRHYTHM RATIOS") —
     same size/colour as the old modal title so both sections read as peers. */
  .polyrhythm-section-heading {
    margin: 0;
    padding: 18px 30px 6px;
    font-size: 18px;
    font-weight: bold;
    letter-spacing: 0.5px;
    color: #7c3aed;
  }
  /* Dimmed label for a control that's inert in the current mode (e.g. the
     SECONDARY/cross volume while a hemiola — which has no cross rhythm — is
     active). The input itself is also set disabled in JS. */
  .poly-ctl-disabled { opacity: .45; }
  .polyrhythm-row {
    padding: 12px 30px !important;
    border-bottom: 1px solid #f0f0f0;
  }
  .polyrhythm-row:last-child {
    border-bottom: none;
  }
  .polyrhythm-row-title {
    font-weight: bold;
    font-size: 15px;
    color: #2a4a6a;
    margin-bottom: 8px;
  }
  .polyrhythm-row-title .ratio-meta {
    font-weight: normal;
    font-size: 12px;
    color: #888;
    margin-left: 8px;
  }
  .polyrhythm-row-variants {
    display: flex;
    gap: 16px;
    align-items: center;
    flex-wrap: nowrap;
    overflow-x: auto;
    padding: 4px 2px;
  }
  /* Phase 17m: custom ratio entry block at the bottom of the picker modal. */
  #polyrhythm-custom {
    border-top: 1px solid #e0e8e0;
    background: #faf9ff;
    padding: 14px 30px 18px !important;
  }
  .polyrhythm-custom-title {
    font-weight: bold;
    font-size: 15px;
    color: #7c3aed;
    margin-bottom: 10px;
  }
  .polyrhythm-custom-row {
    display: flex;
    align-items: flex-end;
    gap: 12px;
    flex-wrap: wrap;
  }
  .polyrhythm-custom-field {
    display: flex;
    flex-direction: column;
    gap: 4px;
    font-size: 12px;
    color: #555;
  }
  .polyrhythm-custom-field input {
    width: 72px;
    font-size: 18px;
    text-align: center;
    padding: 6px 4px;
    border: 1.5px solid #c9b8f0;
    border-radius: 6px;
    background: #fff;
  }
  .polyrhythm-custom-field input:focus {
    outline: none;
    border-color: #7c3aed;
  }
  .polyrhythm-custom-colon {
    font-size: 24px;
    font-weight: bold;
    color: #7c3aed;
    padding-bottom: 4px;
  }
  .polyrhythm-custom-apply {
    background: #7c3aed;
    color: #fff;
    border: none;
    border-radius: 6px;
    font-size: 14px;
    font-weight: 700;
    padding: 11px 22px !important;
    cursor: pointer;
    transition: background .15s;
  }
  .polyrhythm-custom-apply:hover { background: #6d28d9; }
  .polyrhythm-custom-apply:active { transform: scale(.98); }
  .polyrhythm-custom-msg {
    font-size: 12px;
    font-weight: bold;
    color: #c0392b;
    min-height: 16px;
    margin-top: 8px;
  }
  .polyrhythm-custom-help {
    font-size: 11px;
    color: #888;
    font-style: italic;
    margin-top: 2px;
  }
  .polyrhythm-variant {
    flex: 0 0 auto;
    cursor: pointer;
    padding: 4px 8px;
    border: 2px solid transparent;
    border-radius: 6px;
    background: white;
    transition: border-color 0.15s, background 0.15s;
    min-width: 110px;
  }
  .polyrhythm-variant:hover {
    border-color: #7c3aed;
    background: #f5f3ff;
  }
  .polyrhythm-variant svg {
    height: 80px;
    width: auto;
    display: block;
  }
  /* The "6/8 then 3/4" export left more vertical padding (taller viewBox), so at
     the fixed 80px it renders ~21% smaller than "3/4 then 6/8". Bump just that row
     so the notation matches. Tuned to these files: 80 × 317.48/250.85 ≈ 101. */
  .polyrhythm-row[data-ratio="Canarios"] .polyrhythm-variant svg { height: 101px; }
  .polyrhythm-row.active {
    background: #f5f3ff;
  }
  .polyrhythm-row.active .polyrhythm-row-title {
    color: #7c3aed;
  }
  .polyrhythm-row.active .polyrhythm-variant.active-variant {
    border-color: #7c3aed;
    background: #e0f4e6;
  }

  /* ═══════════════════════ POLYRHYTHM — Mobile card (Phase 19) ════════════════
     Styles for the #mob-poly-* card declared in #mob-ui. These IDs/classes only
     exist in the mobile DOM, so the rules are harmless on desktop. Violet theme
     (#7c3aed) matches the desktop block; the toggle checkboxes reuse the
     .polyrhythm-block checkbox CSS via a wrapping label (same trick as Voice/PGS).
     ──────────────────────────────────────────────────────────────────────────── */
  .mob-poly-color { color: #7c3aed; }
  .mob-poly-hint {
    font-size: 14px;
    color: #5b21b6;
    line-height: 1.45;
    margin-bottom: 14px !important;
    padding: 8px 10px !important;
    background: #f5f3ff;
    border-left: 3px solid #7c3aed;
    border-radius: 4px;
    font-style: italic;
    text-align: left;
  }
  .mob-poly-hint p { margin: 0 0 7px 0; }
  .mob-poly-hint p:last-child { margin-bottom: 0; }
  /* RATIO trigger — occupies the same row slot the desktop trigger would, in the
     soft-gray-on-violet style that parallels the mobile Subdivide trigger. */
  .mob-poly-trigger {
    flex: 1;
    min-height: 38px;
    min-width: 0;
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 4px 10px !important;
    background: #f1edfb;
    color: #5b21b6;
    border: 1.5px solid #7c3aed;
    border-radius: 8px;
    cursor: pointer;
    text-align: left;
    font-family: Arial, sans-serif;
    font-size: 13px;
    font-weight: 700;
    -webkit-tap-highlight-color: transparent;
  }
  .mob-poly-trigger:active   { background: #e7defb; transform: scale(.99); }
  .mob-poly-trigger:focus    { outline: 2px solid #7c3aed; outline-offset: 1px; }
  .mob-poly-trigger:disabled { opacity: .42; cursor: not-allowed; }
  .mob-poly-trigger-label {
    flex: 1 1 auto;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
  .mob-poly-trigger-caret {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 14px;
    height: 14px;
    color: #7c3aed;
  }
  .mob-poly-range { flex: 1; accent-color: #7c3aed; cursor: pointer; }
  .mob-poly-range:disabled { opacity: .42; }
  /* "Show notation panel" restore button — appears in the card only after the
     floating notation panel is dismissed via its X. Dashed violet to read as a
     secondary action; !important padding/margin survive the mobile-wide reset. */
  .mob-poly-show-notation {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    margin: 0 0 14px !important;
    padding: 8px 14px !important;
    font-family: Arial, sans-serif;
    font-size: 12px;
    font-weight: 700;
    color: #5b21b6;
    background: #f1edfb;
    border: 1.5px dashed #7c3aed;
    border-radius: 8px;
    cursor: pointer;
    -webkit-tap-highlight-color: transparent;
  }
  .mob-poly-show-notation:active { background: #e7defb; transform: scale(.99); }
  .mob-poly-show-notation:focus  { outline: 2px solid #7c3aed; outline-offset: 1px; }
  .mob-poly-show-notation[hidden] { display: none; }

  /* ── Repurpose the shared desktop picker as a bottom sheet on phones ────────
     The #polyrhythm-picker-backdrop is a top-level element (not inside the
     mobile-hidden controls column), so the same DOM serves both layouts. On
     mobile we anchor the card to the bottom edge and slide it up, matching the
     Sound / Subdivide bottom sheets. All picker behavior (rows, variants, custom
     M:N, close) is unchanged. */
  @media screen and (max-width: 768px) {
    #polyrhythm-picker-backdrop {
      align-items: flex-end;
      padding: 0;
    }
    #polyrhythm-picker {
      width: 100%;
      max-width: 100%;
      max-height: 88vh;
      border-radius: 20px 20px 0 0;
      transform: translateY(100%);
      transition: transform .3s cubic-bezier(.32,.72,0,1);
    }
    #polyrhythm-picker-backdrop.open #polyrhythm-picker {
      transform: translateY(0);
    }

    /* Floating notation panel on phones: pinned near the top by default so it
       sits by the flashing beats when you scroll up (drag to move, position
       persists per device). Content-width, capped to the viewport; slightly
       smaller staff than desktop. The !important paddings restore the
       handle/body insets the mobile-wide *:not(.radial-slider *) reset strips. */
    .polyrhythm-notation-display {
      top: 64px;
      left: 8px;
      right: auto;
      max-width: calc(100vw - 16px);
      transform: none;        /* reset the desktop centering transform on mobile */
    }
    .polyrhythm-notation-handle  { padding: 6px 12px !important; }
    .polyrhythm-notation-trigger { padding: 10px 12px 4px !important; }
    .polyrhythm-notation-close   { padding: 0 6px !important; }
    #polyrhythm-notation-svg svg { height: 105px; }
  }

  /* ═══════════ PROGRAMMABLE RHYTHM — Mobile card (Phase 11) ════════════════
     Styles for the #mob-prog-* card in #mob-ui. Teal scheme (#0d9488) matches
     the desktop .prog-rhythm-block; the toggle checkboxes reuse the
     .prog-rhythm-block checkbox CSS via a wrapping label (same trick as
     Voice/PGS/Polyrhythm). Full-screen editor sheet styles ship in Phase 11
     Task #3. ─────────────────────────────────────────────────────────────── */
  .mob-prog-color { color: #0d9488; }
  .mob-prog-range { flex: 1; min-width: 0; }
  .mob-prog-hint {
    font-size: 14px;
    color: #115e59;
    line-height: 1.45;
    margin-bottom: 14px !important;
    padding: 8px 10px !important;
    background: #f0fdfa;
    border-left: 3px solid #0d9488;
    border-radius: 4px;
    font-style: italic;
    text-align: left;
  }
  /* Matches the desktop .prog-subhead (line ~1214) — uppercase teal heading
     above the playback controls block. text-align: left overrides the page's
     inherited text-align: center from #content. */
  .mob-prog-subhead {
    font-weight: 800;
    font-size: 12px;
    letter-spacing: .05em;
    text-transform: uppercase;
    color: #0d9488;
    margin: 4px 0 10px;
    text-align: left;
  }
  /* !important needed to beat the mobile-wide
     *:not(.radial-slider *) { padding-left/right: 0 !important } reset at
     line ~336 — same trick .mob-poly-trigger uses. */
  .mob-prog-edit-btn {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 12px 28px !important;
    background: #0d9488;
    color: #fff;
    border: none;
    border-radius: 6px;
    font: 600 14px/1 'Roboto', sans-serif;
    cursor: pointer;
    -webkit-tap-highlight-color: transparent;
  }
  .mob-prog-edit-btn:active { background: #0b7e74; transform: scale(.99); }
  .mob-prog-edit-btn:focus  { outline: 2px solid #0d9488; outline-offset: 1px; }
  .mob-prog-warning {
    font-size: 11px;
    color: red;
    font-weight: bold;
    padding: 6px 10px 0;
  }
  .mob-prog-warning[hidden] { display: none; }

  /* The floating "The rhythm you entered" popup loses its horizontal
     padding (handle + body + each measure cell + status row) to the
     mobile-wide *:not(.radial-slider *) reset. Restore each on mobile
     so the score notes and barlines aren't flush against the edges. */
  .prog-score-handle  { padding: 5px 12px !important; }
  .prog-score-body    { padding: 12px !important; max-height: 70vh; }
  .prog-score-measure { padding: 2px 12px !important; }
  .prog-score-status  { padding: 5px 12px !important; }
  /* Mobile sizing (Task #6): the popup width is already capped per viewport
     by the min() max-width on .prog-score-display above. Just ensure the X
     tap target meets iOS HIG (44px). */
  .prog-score-close { min-width: 44px !important; min-height: 44px !important; }
  /* Restore button (moved into the mobile card body): its desktop padding
     was 4px 12px — also stripped horizontally. Give it a comfortable
     mobile tap target. */
  .prog-score-restore { padding: 8px 14px !important; font-size: 13px; margin-top: 4px !important; }

  /* Full-screen editor sheet — same shape as #mob-info-overlay but teal. */
  #mob-prog-backdrop {
    position: fixed;
    top: 0; left: 0; right: 0; bottom: 0;
    z-index: 1000;
    display: none;
    flex-direction: column;
    background: #fff;
  }
  #mob-prog-backdrop.open {
    display: flex;
    animation: slideInRight .25s ease-out;
  }
  #mob-prog-sheet-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 14px 16px !important;
    border-bottom: 1px solid #0b7e74;
    font-size: 15px;
    font-weight: 700;
    background: #0d9488;
    color: #fff;
    flex-shrink: 0;
  }
  #mob-prog-close {
    background: none;
    border: none;
    color: #fff;
    font-size: 20px;
    cursor: pointer;
    padding: 4px 8px !important;
    line-height: 1;
    min-width: 44px;
    min-height: 44px;
  }
  #mob-prog-sheet-body {
    flex: 1;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
    /* Extra bottom padding so the last builder ("Build a custom polyrhythm") can
       scroll clear of the fixed #mob-sticky-wrap START bar (~86px), which is
       raised above the sheet while editing. Matches the page's body padding. */
    padding: 16px 16px 110px !important;
  }
  .mob-prog-sheet-placeholder {
    font-size: 13px;
    color: #6b7280;
    font-style: italic;
    margin: 0;
    line-height: 1.5;
  }

  /* Sheet body needs left-align (the page inherits text-align: center from
     #content; the editor lives in a left-aligned .metro-advanced on desktop). */
  #mob-prog-sheet-body { text-align: left; }

  /* When #prog-editor is moved into the sheet by openProgEditor(), the
     inner buttons lose their horizontal padding from the mobile-wide
     *:not(.radial-slider *) { padding-left/right: 0 !important } reset.
     Restore via sheet-scoped overrides so this never affects desktop. */
  #mob-prog-sheet-body #prog-editor     { padding: 12px !important; }
  #mob-prog-sheet-body .prog-tab        { padding: 5px 11px !important; }
  #mob-prog-sheet-body .prog-icon-btn   { padding: 4px 9px !important; }
  #mob-prog-sheet-body .prog-add-btn    { padding: 6px 10px !important; }
  #mob-prog-sheet-body .prog-note-btn   { padding: 0 4px !important; }
  #mob-prog-sheet-body .prog-num        { padding: 2px 4px !important; }

  /* Task #5: same padding restores for sub-builder inner controls. */
  #mob-prog-sheet-body .prog-tuplet-builder  { padding: 12px !important; }
  #mob-prog-sheet-body .prog-tup-type-btn    { padding: 5px 10px !important; }
  #mob-prog-sheet-body .prog-tup-base-select { padding: 4px 8px !important; }
  #mob-prog-sheet-body .prog-cpoly-voice-btn { padding: 5px 10px !important; }
  #mob-prog-sheet-body .prog-poly-num        { padding: 3px 4px !important; }
  /* .prog-btn ("Add tuplet/polyrhythm/cpoly to measure") has no desktop CSS
     padding — it's a default-styled button. Give it a comfortable mobile
     tap target. */
  #mob-prog-sheet-body .prog-btn             { padding: 8px 14px !important; font-weight: 600; }

  /* The polyrhythm field label is flex-basis: 280px on desktop — too wide
     to leave room for the number input on a phone. Let it shrink. */
  #mob-prog-sheet-body .prog-poly-flabel { flex: 1 1 auto !important; max-width: none !important; }

  /* All .prog-entered fields (main #prog-entered + cpoly top/bot voices):
     the global mobile padding-strip leaves the contents (empty placeholder
     + entered glyphs) flush against the left border. Restore horizontal
     padding via sheet-scoped overrides. */
  #mob-prog-sheet-body .prog-entered { padding: 6px 14px !important; }

  /* Task #14 — MY RHYTHMS section inside mobile (either the card body OR
     the editor sheet): bigger tap targets per iOS HIG (≥44px), padding
     restored against the mobile-wide padding-strip. */
  #mob-prog-body .prog-presets-block,
  #mob-prog-sheet-body .prog-presets-block   { padding: 12px 14px 14px !important; margin: 12px 0 !important; }
  #mob-prog-body .prog-presets-row,
  #mob-prog-sheet-body .prog-presets-row     { padding: 4px 4px 4px 10px !important; min-height: 48px; }
  #mob-prog-body .prog-presets-load,
  #mob-prog-sheet-body .prog-presets-load    { padding: 12px 4px !important; min-height: 44px; font-size: 14px; }
  #mob-prog-body .prog-presets-icon,
  #mob-prog-sheet-body .prog-presets-icon    { padding: 10px 12px !important; min-height: 44px; min-width: 56px; font-size: 12px; }
  #mob-prog-body #prog-presets-save,
  #mob-prog-sheet-body #prog-presets-save    { padding: 12px 18px !important; min-height: 44px; font-size: 14px; }
  /* Phone: stack each MY RHYTHMS row — preset name on its own line, then the
     Rename / Share / Edit / Delete buttons evenly spaced on the next line. */
  #mob-prog-body .prog-presets-row,
  #mob-prog-sheet-body .prog-presets-row     { flex-wrap: wrap !important; row-gap: 10px; column-gap: 10px; }
  #mob-prog-body .prog-presets-row .prog-presets-load,
  #mob-prog-sheet-body .prog-presets-row .prog-presets-load,
  #mob-prog-body .prog-presets-row .prog-presets-toolbar-name,
  #mob-prog-sheet-body .prog-presets-row .prog-presets-toolbar-name {
    flex: 0 0 100% !important; max-width: 100% !important;
    white-space: normal !important; overflow: visible !important; text-overflow: clip !important;
  }
  #mob-prog-body .prog-presets-row .prog-presets-icon,
  #mob-prog-sheet-body .prog-presets-row .prog-presets-icon { flex: 1 1 0 !important; text-align: center; }
  #mob-prog-body .prog-presets-row .prog-presets-icon[data-action="rename"],
  #mob-prog-sheet-body .prog-presets-row .prog-presets-icon[data-action="rename"] { margin-left: 0 !important; }

  /* SAVE MY METRONOME SETTINGS (mobile): the global padding-strip zeroes the
     section's own L/R padding plus its inner blocks/buttons, leaving everything
     flush against the blue border (and the warning box spanning edge-to-edge,
     so it reads "too wide"). Restore the desktop horizontal paddings here. */
  #mob-prog-setups-block                              { padding-left: 14px !important; padding-right: 14px !important; }
  #mob-prog-setups-block .prog-setups-explainer-body  { padding-left: 6px  !important; padding-right: 6px  !important; }
  #mob-prog-setups-block .prog-setups-warning summary { padding-left: 12px !important; padding-right: 12px !important; }
  #mob-prog-setups-block .prog-setups-warning-body    { padding-left: 14px !important; padding-right: 14px !important; }
  #mob-prog-setups-block .prog-setups-warning-body ul { padding-left: 22px !important; }
  /* The tip is a <p>, so the generic "#content .myBoxesWhiteBackground p
     {padding-left/right:0 !important}" rule (specificity 1,1,1) zeroes it.
     Prefix #mob-ui to reach (2,1,0) and win. */
  #mob-ui #mob-prog-setups-block .prog-setups-warning-tip { padding-left: 14px !important; padding-right: 14px !important; box-sizing: border-box !important; }
  #mob-prog-setups-block .prog-add-btn                { padding-left: 14px !important; padding-right: 14px !important; }
  #mob-prog-setups-block .prog-reset-btn              { padding-left: 14px !important; padding-right: 14px !important; }
  /* Custom dropdown (mobile): full-width to match the other mobile controls,
     instead of the desktop's fixed 320px. */
  #mob-prog-setups-block .prog-cdrop-trigger,
  #mob-prog-setups-block .prog-cdrop-panel            { width: 100% !important; }

  /* MY METRONOME SETUPS & PRACTICE ROUTINES launcher (mobile): the padding-strip
     zeroes its L/R padding too — restore it (mirroring the SAVE panel above) so the
     disclosure button and its contents aren't flush to the blue border. Left-align
     the summary, indent the expanded content, and give Load/Start more room + gap. */
  #mob-routine-launcher                              { padding-left: 14px !important; padding-right: 14px !important; }
  #mob-routine-launcher .prog-setups-explainer-body  { padding-left: 6px !important; padding-right: 6px !important; }
  #mob-routine-launcher summary.prog-setups-subhead  { justify-content: flex-start; text-align: left; padding-left: 12px !important; padding-right: 12px !important; }
  #mob-routine-launcher .rl-groups                   { padding-left: 6px; padding-right: 6px; }
  #mob-routine-launcher .rl-btn                      { padding-left: 16px !important; padding-right: 16px !important; }
  #mob-routine-launcher .rl-row-btns                 { gap: 12px; }
  /* Restore each row's L/R padding (stripped on mobile) so the setup/routine name
     isn't flush left and the Start button isn't flush against the row's right edge. */
  #mob-routine-launcher .rl-row                      { padding-left: 12px !important; padding-right: 12px !important; }
  /* Left-align the SAVE MY METRONOME SETTINGS disclosure + its saved-setups dropdown,
     and restore the disclosure's own L/R padding so its caret isn't flush to the border. */
  #mob-prog-setups-block summary.prog-setups-subhead { justify-content: flex-start; text-align: left; padding-left: 12px !important; padding-right: 12px !important; }
  #mob-prog-setups-block .prog-cdrop-trigger         { justify-content: flex-start; }
  #mob-prog-setups-block .prog-cdrop-label           { text-align: left; }

  /* Repeated reset buttons under the mobile SUBDIVIDE BEAT (dark) section:
     lighten the divider + label for the black background, and restore the
     buttons' horizontal padding past the mobile padding-strip. */
  #mob-subdiv-reset                       { border-top-color: rgba(255,255,255,.18); }
  #mob-subdiv-reset .prog-reset-label     { color: #cbd5e1; }
  #mob-subdiv-reset .prog-reset-btn       { padding-left: 14px !important; padding-right: 14px !important; }

  /* Same warning lives inside the "Save current setup…" modal (the
     .progPreset-modal-body variant). The global padding-strip zeroes its
     dropdown body + tip sides too, so restore them on mobile here. */
  .progPreset-modal-body .prog-setups-warning summary { padding-left: 12px !important; padding-right: 12px !important; }
  .progPreset-modal-body .prog-setups-warning-body    { padding-left: 14px !important; padding-right: 14px !important; }
  .progPreset-modal-body .prog-setups-warning-body ul { padding-left: 22px !important; }
  /* p{width:100%} (max-width:1000px) + default content-box pushes padding-right
     into overflow, so the text looks flush-right. border-box keeps it inside. */
  .progPreset-modal-body .prog-setups-warning-tip     { padding-left: 14px !important; padding-right: 14px !important; box-sizing: border-box !important; }

  /* Mobile affordance for the sub-builder collapsible rows: make the title
     look like a tappable button (tinted bg, subtle border) and append an
     inline "tap to open / tap to close" hint after the existing sub text
     that swaps based on the collapsed state. */
  #mob-prog-sheet-body .prog-collapsible > .prog-tuplet-title {
    background: #ccfbf1;
    padding: 10px 12px !important;
    border-radius: 6px;
    border: 1px solid #99f6e4;
  }
  #mob-prog-sheet-body .prog-collapsible.collapsed > .prog-tuplet-title::after {
    content: " — tap to open";
    font-size: 11px;
    font-weight: normal;
    font-style: italic;
    color: #0f766e;
    opacity: .85;
  }
  #mob-prog-sheet-body .prog-collapsible:not(.collapsed) > .prog-tuplet-title::after {
    content: " — tap to close";
    font-size: 11px;
    font-weight: normal;
    font-style: italic;
    color: #0f766e;
    opacity: .85;
  }

  /* Long-press hygiene (Jaimie feedback): suppress the native long-press
     text-selection / callout menu ("Copy / Share / Select all") on the mobile
     interactive surfaces — it was firing on buttons that have no long-press
     function. Editable inputs re-enable selection below so typing a tempo or
     custom ratio still works. The mega-menu nav lives outside these containers,
     so link long-press (copy/open link) is intentionally left untouched. */
  @media screen and (max-width: 768px) {
    #mob-ui, #mob-ui-tuner, #mob-sticky-wrap, #mob-sound-backdrop, #mob-subdiv-backdrop,
    #polyrhythm-picker-backdrop, #polyrhythm-notation-display {
      -webkit-touch-callout: none;
      -webkit-user-select: none;
      -moz-user-select: none;
      user-select: none;
    }
    #mob-ui input, #mob-ui-tuner input, #polyrhythm-picker-backdrop input {
      -webkit-touch-callout: default;
      -webkit-user-select: text;
      -moz-user-select: text;
      user-select: text;
    }
  }


/* ── SWING / NOTES INÉGALES amount control (Phase 11) ───────────────────────
   One cream inset panel (legible on both the desktop console and the dark
   mobile section) holding a swing-amount slider, preset chips, a ratio/%/name
   readout, and an inégales teaching note. Desktop (#swing-control) and mobile
   (#mob-swing-control) share these classes; window.SwingControl keeps them in
   lockstep and shows/hides them based on the active feel. */
.swing-control, .mob-swing-control{
  box-sizing:border-box; margin:10px 0 4px; padding:12px 14px;
  background:#fff8e8; border:1px solid #e0cf9c; border-radius:10px;
  color:#3a2c08; font-family:var(--font-ui); text-align:left;
}
.swing-control[hidden], .mob-swing-control[hidden]{display:none;}
.swing-control-head{display:flex; align-items:baseline; justify-content:space-between; gap:10px; margin-bottom:8px;}
.swing-control-title{font-size:12px; font-weight:800; letter-spacing:.06em; text-transform:uppercase; color:#5a4612;}
.swing-readout{font-weight:700; font-variant-numeric:tabular-nums; color:#9a3412; font-size:13px; white-space:nowrap;}
.swing-slider{width:100%; margin:2px 0; accent-color:#ea580c; cursor:pointer;}
.swing-scale{display:flex; justify-content:space-between; font-size:10px; color:#8a7740; margin:0 1px 8px;}
.swing-chips{display:flex; flex-wrap:wrap; gap:6px;}
.swing-chip{display:flex; flex-direction:column; align-items:center; line-height:1.1;
  background:#fff; border:1px solid #cdab5f; border-radius:8px; padding:4px 9px;
  font-family:var(--font-ui); color:#5a4612; cursor:pointer;}
.swing-chip:hover{border-color:#ea580c;}
.swing-chip.active{background:#ea580c; border-color:#ea580c; color:#fff;}
.swing-chip-ratio{font-size:13px; font-weight:800;}
.swing-chip-name{font-size:10px; opacity:.85;}
.swing-note{margin:10px 0 0; font-size:12px; line-height:1.5; color:#5a4612;}
.swing-note strong{color:#9a3412;}
.swing-note[hidden]{display:none;}
/* Mobile: roomier card (more left/right breathing room) and chips spaced much
   further apart, with their own left/right padding, for comfortable tapping.
   Scoped under #mob-ui + !important so these win over the later mobile-CSS
   block's broad padding rules. */
#mob-ui .mob-swing-control{padding:16px 24px 20px !important;}
#mob-ui .mob-swing-control .swing-chips{gap:16px 20px !important; margin-top:6px;}
#mob-ui .mob-swing-control .swing-chip{padding:9px 20px !important;}


    #volume_control{
        margin-left: auto;
        margin-right: auto;
    }
    #volume_control .label{
        font-size: 1.5em;
        font-weight: 700;
        margin-top: 15px;
        margin-bottom: 10px;
    }
    #metronome{
        background: 
    radial-gradient(circle, white, transparent 50%),
    repeating-linear-gradient(3deg, rgb(0 0 0 / 3%) 0%, transparent 3%), 
    repeating-linear-gradient(1deg, rgb(0 0 0 / 3%) 0%, transparent 1%), 
    repeating-linear-gradient(0deg, rgb(0 0 0 / 3%) 0%, transparent 3%),
    repeating-linear-gradient(-1deg, rgb(0 0 0 / 3%) 0%, transparent 1%), 
    repeating-linear-gradient(-3deg, rgba(0 0 0 / 3%) 0%, transparent 3%),
    radial-gradient(circle, white, #ebcd74);
    }
    .app {
      min-width: 100%;
      /*min-height: 100%;*/
      display: flex;
      flex-direction: column;
      align-items: center;
      justify-content: center;
    }
    
    .label {
      font-size: 1.6rem;
      margin-bottom: 2rem;
      font-weight: 700;
      letter-spacing: 0.1em;
    }
    
    .radial-slider {
      width: 150px;
      height: 150px;
      position: relative;
      user-select: none;
    }
    .radial-slider .knob {
      width: 80%;
      height: 80%;
      position: relative;
      margin: 10%;
      cursor: pointer;
    }
    .radial-slider .teeth {
      display: flex;
      align-items: center;
      justify-content: center;
      border-radius: 100%;
      width: 100%;
      height: 100%;
      transform: rotateZ(var(--angle));
      filter: blur(3px) contrast(7);
      background: white;
    }
    .radial-slider .teeth::after {
      content: "";
      width: 90%;
      height: 90%;
      border-radius: 100%;
      background: radial-gradient(black 65%, transparent 66%) no-repeat, repeating-conic-gradient(black 0%, 2.5%, transparent 2.5%, transparent 5%);
    }
    .radial-slider .cap {
      display: flex;
      border-radius: 100%;
      width: 76%;
      height: 76%;
      position: absolute;
      top: 12%;
      left: 12%;
      box-shadow: 0 0 2px 1px #c7a472;
      background: repeating-conic-gradient(from 15deg, #3e2206 0%, #3e2206 4%, #f4ebd0 5%, #f4ebd0 15%, #3e2206 16%, #3e2206 34%, #f4ebd0 35%, #f4ebd0 45%, #3e2206 46%, #3e2206 50%);
    }
    .radial-slider .cap::after {
      content: "";
      border-radius: 100%;
      width: 90%;
      height: 90%;
      margin: 5%;
      background: repeating-radial-gradient(transparent 0%, rgba(244, 235, 208, 0.15) 2%, transparent 4%), repeating-conic-gradient(from 15deg, #4d3718 0%, #c7a472 5%, #4d3718 16%, #4d3718 34%, #c7a472 45%, #4d3718 50%);
      box-shadow: inset 0 0 7px 0px #c7a472;
    }
    .radial-slider .indicator {
      top: 60%;
      left: 48%;
      transform-origin: 50% -50%;
      position: absolute;
      transform: rotateZ(var(--angle));
      width: 4%;
      height: 20%;
      background: black;
      box-shadow: 0 0 2px white;
      border-radius: 30%/10%;
      pointer-events: none;
    }
    .radial-slider .numbers {
      position: absolute;
      top: 0;
      left: 0;
      width: 100%;
      height: 100%;
      font-size: 1rem;
      pointer-events: none;
    }
    .radial-slider .numbers .number {
      transform: translateY(-50%) rotateZ(var(--angle)) translateX(-0.4em);
      transform-origin: center;
      position: absolute;
      top: 50%;
      left: 0%;
      width: 100%;
    }
    .radial-slider .numbers .number div {
      transform: rotateZ(calc(-1 * var(--angle)));
      /*display: inline-flex;*/
      width: 1.5em;
      justify-content: center;
      margin-left: -0.3em !important;
    }
    .radial-slider .numbers .number div.line {
      background: black;
      width: 0.07em;
      height: 0.6em;
      transform: rotateZ(90deg) translateY(-0.5em) translateX(0.2em);
      color: transparent;
      margin: 0 !important;
    }
    
    .tribute {
      margin-top: 1rem;
      display: flex;
      flex-direction: column;
      align-items: center;
      margin-top: -5px !important;
    }
    .tribute a {
      margin-top: 0.5rem;
      display: block;
      width: 100px;
      height: 50px;
      background: url("data:image/png;base64,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");
      background-size: contain;
      background-repeat: no-repeat;
    }
    /* Explicit "Why 11?" link under the Spinal Tap logo. Must out-specify
       .tribute a above, which turns anchors into the 100x50 logo image. */
    .tribute a.tribute-why {
      width: auto;
      height: auto;
      background: none;
      margin-top: 6px;
      font-family: Arial, sans-serif;
      font-size: 12px;
      color: #1d4ed8;
      text-decoration: underline;
      white-space: nowrap;
    }
    .tribute a.tribute-why:hover { color: #2563eb; }


/* ── Desktop vs. mobile instructions toggle ── */
/* Default (desktop): show desktop instructions, hide mobile instructions */
.mobile-instructions { display: none; }
/* On phone-width screens: hide desktop instructions, show mobile instructions */
@media screen and (max-width: 768px) {
  .desktop-instructions { display: none !important; }
  .mobile-instructions  { display: block !important; }
}


/* Instructions Table of Contents (Phase 12) */
.instructions-toc {
  margin: 16px 20px 28px !important;
  padding: 14px 18px !important;
  background: #f0fdfa;
  border-left: 4px solid #0d9488;
  border-radius: 6px;
}
.instructions-toc-title {
  font-weight: 700;
  color: #0d9488;
  margin: 0 0 10px !important;
  font-size: 14px;
  text-transform: uppercase;
  letter-spacing: .05em;
}
.instructions-toc-list {
  list-style: none !important;
  margin: 0 !important;
  padding: 0 !important;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 6px 30px;
}
.instructions-toc-list li { margin: 0 !important; }
.instructions-toc-list a {
  color: #0d9488;
  text-decoration: none;
  font-size: 14px;
  font-weight: 600;
}
.instructions-toc-list a:hover { text-decoration: underline; color: #115e59; }
@media (max-width: 768px) {
  .instructions-toc { margin: 8px 0 20px !important; padding: 12px 14px !important; }
  .instructions-toc-list { grid-template-columns: 1fr; }
}


    .end-left {
  /*margin-left: -300px;*/
  /*padding-right: 10px;*/
  /*background: red;*/
  left: 210%;
}

.end-right {
  /*margin-left: 50px;*/
  /*padding-left: 10px;*/
  /*box-sizing: border-box;*/
  /*background: blue;*/
  left: -210%;
}

.outline {
  position: absolute;
}

.outline {
  color: black;
  -webkit-text-fill-color: transparent;
  /* Will override color (regardless of order) */
  -webkit-text-stroke-width: 2px;
  -webkit-text-stroke-color: orange;
  font-size: 64px;
  font-family: "Arvo", serif;
  padding-top:0px;
}

.orbs {
  font-family: "Raleway", sans-serif;
  font-weight: 100;
  display: block;
  font-size: 70px;
  padding-top:40px;
  
  display: flex;
  justify-content: center;
  width: 100%;
  height: 140px;
}

.orbs span {
  color: red;
  display: inline;
  text-align: center;
  border-radius: 50%;
  text-shadow: 0 0 20px orange, 1px 1px 20px orange, 2px 2px 20px orange, -1px -1px 20px orange, -2px -2px 20px orange;
  position: absolute;
  /*left: 12%;*/
}
.orbs span:first-child {
  /*margin-left: -210px;*/
}
.orbs span:not(:first-child) {
  /*margin-left: -35px;*/
}

.glow {
  opacity: 0;
  font-family: "Arvo", serif;
  font-weight: 300;
  color: orange;
  /*margin-left: -222.5px;*/
  margin-top:80px;
  font-size: 40px;
  /*position: absolute;*/
  display: block;
  /*top: 600px;*/
  /*left:45%;*/
  left: 0;
  right: 0;
  text-align: center;
  width: 100%;
}


@media screen and (max-width: 1000px){
    .orbs{
        font-size: 6vw;
        height: 21vw;
        padding-top: 4vw;
    }
    .glow{
        top: -4vw;
        position: relative;
        font-size: 5vw;
    }
    .outline{
        font-size: 7vw;
    }
}
@media screen and (max-width: 600px){
    .glow{
        top: -2vw;
    }
}


/* ── Hide the JS-driven animated block on mobile (unreliable) ─────────────── */
@media screen and (max-width: 768px) {
  div:has(> .animated-block) { display: none !important; }
}


    #metro-beatpane td.flashing:first-child{
        background-color: red;
        color: yellow;
    }


  .metro-props {
    display: flex;
    width: 100%;
    margin-top: 10px;
    flex-direction: column;
  }

  .metro-prop {
    display: grid;
    flex-direction: row;
    width: 100%;
    grid-template-columns: 30% 1fr;
  }

  .metro-prop:nth-child(2) {
    display: grid;
    flex-direction: row;
    width: 100%;
    grid-template-columns: calc(30% - 30px) 30px 1fr;
  }
  /* 11" iPad portrait (769–1000px): stack each label ABOVE its control so
     the beats slider spans the full column — the 1–12 numbers spread to
     near-desktop spacing. Box-under-number alignment follows automatically:
     positionAccentCheckboxes() measures real on-screen positions. */
  @media screen and (min-width: 769px) and (max-width: 1000px){
    .metro-prop, .metro-prop:nth-child(2){ display: block; }
    .metro-prop .metro-label{ display: block; max-width: none; text-align: left; }
    .metro-prop .metro-input{ display: block; width: auto; }
  }
  .ekwoster-checkboxes {
    position: relative;
    display: block;
    width: calc(100% - 10px);
    max-width: calc(100% - 10px);
    height: 28px;
    margin: 8px 10px 0 0;
    padding: 0;
    box-sizing: border-box;
    overflow: visible;
  }
  .ek-cell {
    position: absolute;
    top: 0;
    left: 0;
    display: block;
    transform: translateX(-50%);
    white-space: nowrap;
  }
  .ekwoster-checkboxes input {
    margin: 0;
    display: block;
  }
  /* "Clear all accents" button — was the None checkbox + label; rewritten as
     a small outlined button so the affordance reads as an action, not a state.
     Muted styling + nowrap. Pushed right via margin-left so its left edge
     lines up roughly with the first accent checkbox / "1" under the slider.
     Default state is dimmed (no accents = nothing to clear); the :has()
     sibling rule activates it the moment any accent checkbox is checked. */
  .metro-clear-accents-btn {
    margin-top: -2px;
    margin-left: 25px;
    padding: 2px 6px;
    font-family: inherit;
    font-size: 10px;
    color: #888;
    background: transparent;
    border: 1px solid #ccc;
    border-radius: 3px;
    cursor: pointer;
    white-space: nowrap;
    opacity: 0.4;
    pointer-events: none;
  }
  .ekwoster-checkboxes:has(input:checked) + .metro-clear-accents-btn {
    opacity: 1;
    pointer-events: auto;
    /* Active = clearly clickable: black text + a stronger, darker border
       (idle state stays the dimmed gray above). */
    color: #000;
    border: 2px solid #555;
  }
  .metro-clear-accents-btn:hover:not(:disabled) { color: #555; border-color: #888; }
  .metro-clear-accents-btn:disabled { opacity: 0.4; cursor: not-allowed; pointer-events: none; }
  
  /*dialog styles*/
  [role="dialog"] .ui-widget-header{
    display: flex;
    justify-content: space-between;
    border: 0;
    padding: 10px 0;
  }
  [role="dialog"] .ui-widget-header button{
    border: 0;
    background-color: transparent;
    font-size: 0;
  }
  [role="dialog"] .ui-widget-content{
    border: 0;
    padding: 15px 10px;
    border-top: 1px solid rgba(0, 0, 0, .2);
  }
  [role="dialog"] .ui-resizable-handle{
      display: none !important;
  }
  #metronome-dialog{
      display: none;
  }
  #metronome-dialog > div{
      text-align: left;
  }
  #metronome-dialog > div label{
      display: block;
      margin-bottom: 5px;
  }
  #metronome-dialog > div select{
      display: block;
      width: 100%;
      margin-bottom: 15px;
  }
  #metronome-dialog > div button{
    display: block;
    background: green;
    color: white;
    text-transform: uppercase;
    width: 100%;
    border: 0;
    padding: 10px;
  }


/* ── Default: all mobile elements hidden (shown only under mobile media query) ── */
#mob-hamburger   { display: none !important; }
#mob-nav-overlay { display: none; }
#mob-ui          { display: none; }
#mob-ui-tuner    { display: none; }
#mob-sticky-wrap { display: none; }
#mob-sound-backdrop { display: none; }
#mob-subdiv-backdrop { display: none; }
#mob-vc-backdrop { display: none; }
#mob-tuner-backdrop { display: none; }

/* ── Explicit desktop kill-switch — overrides everything on screens > 768px ── */
@media screen and (min-width: 769px) {
  #mob-hamburger,
  #mob-nav-overlay,
  #mob-ui,
  #mob-ui-tuner,
  #mob-sticky-wrap,
  #mob-sound-backdrop,
  #mob-subdiv-backdrop,
  #mob-vc-backdrop,
  #mob-tuner-backdrop { display: none !important; }
  /* Phase 17j: clearance so the fixed floating START/STOP never covers the
     last of the page content at full scroll. */
  body { padding-bottom: 96px; }
}

@media screen and (max-width: 768px) {

  /* ── Hide desktop-only elements ── */
  .logodiv, #nav, #nav1, .aside-handle, aside { display: none !important; }
  .myBoxesWhiteBackground[style*="margin-top: 30px"] > h1,
  .myBoxesWhiteBackground[style*="margin-top: 30px"] > h2,
  .myBoxesWhiteBackground[style*="margin-top: 30px"] > br,
  .myBoxesWhiteBackground[style*="margin-top: 30px"] > p  { display: none !important; }
  /* Phase 11 baseline restore: yesterday's desktop UI refactor (new intro
     headline card, How-To wrapper, More Free Tools cross-promo, adopted
     site footer) added sections that aren't covered by the older hide
     rules above. Keep mobile matching the deployed Google-review baseline.
     (FAQ card .metro-guide stays visible on mobile — kept intentionally.) */
  .metro-intro, .metro-howto,
  .more-tools, .footer                { display: none !important; }
  /* FAQ on mobile: questions left-align (they currently inherit the page's
     centered text), and add generous bottom padding so BOTH the collapsed
     last-question header AND the expanded last list item ("6. …performance
     of ensemble music, duets, and chamber music.") sit comfortably above
     the fixed-at-bottom #mob-sticky-wrap START button (~86px tall). Compound
     class selector .myBoxesWhiteBackground.metro-guide beats the later
     .myBoxesWhiteBackground { padding: 0 !important } reset further below. */
  .metro-guide h3                                  { text-align: left !important; }
  .myBoxesWhiteBackground.metro-guide              { padding-bottom: 30px !important; }
  #metro-rcol, .metro-props, #navigation_volume_control_holder,
  #metro-power, #metro-kbd-hint, .desktop-setups-ui { display: none !important; }
  #metro-beat                  { border: 0 !important; padding: 0 !important; margin: 0 !important; }
  #metro-beat legend           { display: none !important; }
  /* Desktop-only display toggles (flashing/ticks off) — mobile has its own
     "Ticks off" mute and users can scroll away from the panels. */
  #metro-display-toggles       { display: none !important; }
  #metronome                   { background: transparent !important; margin: 0 !important;
                                  padding: 0 !important; min-width: 0 !important; }
  #metronome > div             { display: block !important; }
  /* …but the desktop-only direct children of #metronome must STAY hidden on
     mobile. The reset above (#metronome > div, specificity 1,1,0 !important)
     otherwise outranks the earlier #metro-kbd-hint (1,0,0) / .desktop-setups-ui
     (0,1,0) hide and re-shows them — the keyboard hint, desktop START, and the
     brass-plate RESET block were leaking under the beat panels. These selectors
     match (2,0,0)/(1,1,0)-after, so the hide wins. */
  #metronome > #metro-power,
  #metronome > #metro-kbd-hint,
  #metronome > .desktop-setups-ui { display: none !important; }
  /* Beat pane: wrap cells into musically-aware groupings with adaptive height,
     so total beatpane height stays ~180px regardless of beat count:
       1–4 beats   → 1 row × 180px tall
       5,7,8       → 2 rows × 90px (4 cols)
       6           → 2 rows × 90px (3 cols: 3+3, musical 6/8)
       9           → 3 rows × 60px (3 cols: 3+3+3, musical 9/8)
       10,11,12    → 3 rows × 60px (4 cols)
     Partial rows left-align (justify-content: flex-start on tr).
     data-rows + data-cols attributes set by function t() in the metronome JS. */
  table#metro-beatpane         { display: block !important;
                                  width: 100% !important;
                                  height: 180px !important; }
  #metro-beatpane tbody        { display: block !important;
                                  width: 100% !important; }
  #metro-beatpane tr           { display: flex !important;
                                  flex-wrap: wrap !important;
                                  width: 100% !important;
                                  justify-content: flex-start;   /* left-align partial rows */
                                  align-content: flex-start; }
  /* Each cell is itself a flex container so the number centers both horizontally
     AND vertically (default vertical-align: middle on td no longer applies once
     the row is display: flex). */
  #metro-beatpane td           { box-sizing: border-box !important;
                                  border: 1px solid #555 !important;
                                  pointer-events: none !important;
                                  display: flex !important;
                                  align-items: center !important;
                                  justify-content: center !important; }
  /* Cell WIDTH — depends only on column count */
  #metro-beatpane[data-cols="1"] td { flex: 0 0 100%    !important; width: 100%    !important; }
  #metro-beatpane[data-cols="2"] td { flex: 0 0 50%     !important; width: 50%     !important; }
  #metro-beatpane[data-cols="3"] td { flex: 0 0 33.333% !important; width: 33.333% !important; }
  #metro-beatpane[data-cols="4"] td { flex: 0 0 25%     !important; width: 25%     !important; }
  /* Cell HEIGHT + font-size — depends only on row count */
  #metro-beatpane[data-rows="1"] td { height: 180px !important; font-size: 66px !important; }
  #metro-beatpane[data-rows="2"] td { height:  90px !important; font-size: 44px !important; }
  #metro-beatpane[data-rows="3"] td { height:  60px !important; font-size: 30px !important; }
  #content                     { margin: 0 !important; padding: 0 !important;
                                  width: 100% !important; background-color: #f0f0f0 !important;
                                  border-radius: 0 !important; box-shadow: none !important; }
  .myBoxesWhiteBackground      { margin: 0 !important; padding: 0 !important;
                                  box-shadow: none !important; border: none !important;
                                  width: 100% !important; border-radius: 0 !important;
                                  height: auto !important; }
  #centerwrapper               { padding-top: 52px !important; width: 100% !important;
                                  margin: 0 !important; }

  /* ── Show mobile elements ── */
  #mob-hamburger   { display: flex !important; }
  #mob-ui          { display: block !important; }
  #mob-ui-tuner    { display: block !important; }
  #mob-sticky-wrap { display: flex !important; }
}

/* ═════════════════════════════════════════════════════════════════════════════════
   HAMBURGER HEADER BAR
   ═════════════════════════════════════════════════════════════════════════════════ */
#mob-hamburger {
  position: fixed;
  top: 0; left: 0; right: 0;
  z-index: 999;
  height: 48px;
  background: #1a1a1a;
  color: #fff;
  align-items: center;
  gap: 12px;
  padding: 0 14px !important;
  box-shadow: 0 2px 8px rgba(0,0,0,.4);
}
#mob-ham-btn {
  background: none;
  border: none;
  color: #fff;
  padding: 8px !important;
  cursor: pointer;
  display: flex;
  align-items: center;
  flex-shrink: 0;
  line-height: 1;
}
#mob-site-title {
  font-size: 16px;
  font-weight: 600;
  color: #fff;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* ═════════════════════════════════════════════════════════════════════════════════
   NAV OVERLAY (slide-in from left)
   ═════════════════════════════════════════════════════════════════════════════════ */
#mob-nav-overlay {
  position: fixed;
  top: 0; left: 0; right: 0; bottom: 0;
  z-index: 1000;
  background: rgba(0,0,0,.52);
  flex-direction: column;
  align-items: flex-start;
}
#mob-nav-overlay.open { display: flex; }
#mob-nav-inner {
  background: #1a1a1a;           /* dark, matches the rest of the mobile app */
  width: min(320px, 85vw);
  height: 100%;
  overflow-y: auto;
  display: flex;
  flex-direction: column;
  animation: slideInLeft .25s ease-out;
  /* the page's global body{text-align:center} leaks in here otherwise —
     menu items must read left-aligned like every other site menu */
  text-align: left;
}
@keyframes slideInLeft {
  from { transform: translateX(-100%); }
  to   { transform: translateX(0); }
}
#mob-nav-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 14px 16px !important;
  border-bottom: 1px solid #333;
  font-size: 15px;
  font-weight: 700;
  background: #1a1a1a;
  color: #fff;
  flex-shrink: 0;
}
#mob-nav-close {
  background: none;
  border: none;
  color: #fff;
  font-size: 20px;
  cursor: pointer;
  padding: 4px 8px !important;
  line-height: 1;
}
/* ── Sectioned mobile nav body (mega-menu style) ─────────────────────────── */
#mob-nav-body {
  flex: 1;
  overflow-y: auto;
  padding: 8px 20px 24px !important;
  -webkit-overflow-scrolling: touch;
}
.mob-nav-heading {
  color: #fde68a;                /* amber */
  font-weight: 800;
  font-size: 14px;
  margin: 12px 0 6px 0 !important;
  text-transform: none;
  letter-spacing: 0;
}
.mob-nav-section {
  border-top: 1px solid #2a2a2a;
  padding-top: 12px;
  margin-top: 12px;
}
.mob-nav-sec-title {
  color: #fde68a;
  font-weight: 800;
  font-size: 14px;
  margin: 0 0 8px 0 !important;
  display: flex;
  align-items: center;
  gap: 8px;
}
a.mob-nav-item {
  display: block;
  padding: 6px 0 6px 24px !important;
  font-size: 14px;
  color: #d1d5db;
  text-decoration: none;
}
a.mob-nav-item:hover,
a.mob-nav-item:active { color: #fff; }
a.mob-nav-item.-special {
  color: #fdba74;                /* amber-orange highlight for the AI Wizard */
  font-weight: 800;
}
a.mob-nav-item.-featured { font-weight: 700; }
.mob-nav-badge {
  background: #7c3aed;           /* purple POPULAR badge */
  color: #fff;
  /* !important survives the <=1000px padding/margin strip, which was
     squashing the POPULAR pill flush against its text */
  padding: 2px 8px !important;
  border-radius: 999px;
  font-size: 11px;
  margin-left: 6px !important;
  font-weight: 700;
}
/* Quick-access top-level links below the sections */
a.mob-nav-link {
  display: block;
  padding: 10px 0 !important;
  color: #fff;
  text-decoration: none;
  font-size: 15px;
  border-top: 1px solid #2a2a2a;
}
a.mob-nav-link:first-of-type { margin-top: 16px; }
a.mob-nav-link:hover,
a.mob-nav-link:active { color: #fde68a; }
a.mob-nav-link.strong { font-weight: 700; }
.mob-nav-link-icon { display: inline-block; margin-right: 4px; }
.mob-nav-new {
  background: #7c3aed;
  color: #fff;
  padding: 2px 8px;
  border-radius: 999px;
  font-size: 11px;
  margin-left: 6px;
  font-weight: 700;
}

/* ═════════════════════════════════════════════════════════════════════════════════
   INFO BUTTON + INFO OVERLAY (mobile-only instructions modal)
   ═════════════════════════════════════════════════════════════════════════════════ */
#mob-info-btn {
  background: none;
  border: none;
  color: #fff;
  padding: 8px !important;
  margin-left: auto;       /* push to the far right of the header, opposite the hamburger */
  cursor: pointer;
  display: flex;
  align-items: center;
  flex-shrink: 0;
  line-height: 1;
}
#mob-info-overlay {
  position: fixed;
  top: 0; left: 0; right: 0; bottom: 0;
  z-index: 1000;
  display: none;
  flex-direction: column;
  background: #fff;
}
#mob-info-overlay.open {
  display: flex;
  animation: slideInRight .25s ease-out;
}
@keyframes slideInRight {
  from { transform: translateX(100%); }
  to   { transform: translateX(0); }
}
#mob-info-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 14px 16px !important;
  border-bottom: 1px solid #333;
  font-size: 15px;
  font-weight: 700;
  background: #1a1a1a;
  color: #fff;
  flex-shrink: 0;
}
#mob-info-close {
  background: none;
  border: none;
  color: #fff;
  font-size: 20px;
  cursor: pointer;
  padding: 4px 8px !important;
  line-height: 1;
}
#mob-info-body {
  flex: 1;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  padding: 0 24px !important;          /* horizontal breathing room — applied on the scroll container so no inner element can collapse it */
}
/* Override the inline 70px margins on .mobile-instructions when inside the overlay
   (the page-level mobile margin reset doesn't apply here because the block is no
   longer a direct child of #content). */
#mob-info-body .mobile-instructions {
  margin-left: 0 !important;
  margin-right: 0 !important;
  padding: 16px 0 24px 0 !important;   /* only top/bottom — horizontal lives on #mob-info-body */
}
#mob-info-body .mobile-instructions ul,
#mob-info-body .mobile-instructions ol {
  margin-left: 0 !important;
  margin-right: 0 !important;
  padding-left: 20px !important;
}
#mob-info-body .mobile-instructions h2 {
  margin-left: 0 !important;
  margin-top: 0 !important;
}

/* ═════════════════════════════════════════════════════════════════════════════════
   MOBILE UI ROOT
   ═════════════════════════════════════════════════════════════════════════════════ */
#mob-ui, #mob-ui-tuner { background: #f0f0f0; }

/* ═════════════════════════════════════════════════════════════════════════════════
   BPM ZONE — spinning disk
   ═════════════════════════════════════════════════════════════════════════════════ */
#mob-bpm-zone {
  background: #111;
  padding: 20px 16px 18px !important;
  text-align: center;
}
#mob-disk-hint {
  font-size: 11px;
  color: #fff;
  letter-spacing: .03em;
  margin-bottom: 10px !important;
}
#mob-disk-wrap {
  display: flex;
  justify-content: center;
  padding-bottom: 14px !important;
}
#mob-disk-outer {
  position: relative;
  width: 220px; height: 220px;
  border-radius: 50%;
  touch-action: none;
  flex-shrink: 0;
  box-shadow: 0 6px 28px rgba(0,0,0,.7), 0 0 0 2px #333;
}
#mob-disk-grip {
  position: absolute;
  top: 0; left: 0;
  width: 100%; height: 100%;
  border-radius: 50%;
  will-change: transform;
  display: block;
}
#mob-disk-center {
  position: absolute;
  top: 50%; left: 50%;
  transform: translate(-50%, -50%);
  width: 142px; height: 142px;
  border-radius: 50%;
  background: radial-gradient(circle at 38% 32%, #2c2c2c, #0f0f0f 80%);
  box-shadow: inset 0 2px 10px rgba(0,0,0,.65), 0 2px 4px rgba(255,255,255,.04);
  display: flex; flex-direction: column;
  align-items: center; justify-content: center;
  z-index: 1;
}
#mob-disk-center #mob-bpm-display {
  display: block;
  width: 100%;
  font-size: 50px;
  font-weight: 700;
  color: #fff;
  line-height: 1;
  letter-spacing: -2px;
  text-align: center;

  background: transparent;
  border: none;
  outline: none;
  -moz-appearance: textfield;
  appearance: textfield;
  font-family: Arial, sans-serif;
  padding: 0 !important;
  margin: 0 !important;
  cursor: pointer;
}
#mob-disk-center #mob-bpm-display::-webkit-outer-spin-button,
#mob-disk-center #mob-bpm-display::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
#mob-disk-center #mob-bpm-display:focus { color: #ffe800; }
#mob-disk-center #mob-bpm-unit {
  font-size: 13px;
  color: #fff;
  letter-spacing: .14em;
  margin-top: 2px !important;
}
#mob-disk-center #mob-tempo-name {
  font-size: 12px;
  color: #4ade80;
  margin-top: 3px !important;
  font-style: italic;
  min-height: 15px;
  max-width: 126px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  padding: 0 6px !important;
}
#mob-bpm-btns {
  display: flex;
  gap: 8px;
  margin-top: 12px !important;
  justify-content: center;
}
.mob-bpm-step, #mob-tap-btn {
  padding: 12px 0 !important;
  border-radius: 10px;
  border: 1px solid #333;
  font-size: 14px;
  font-weight: 700;
  cursor: pointer;
  background: #2a2a2a;
  color: #ccc;
  flex: 1;
  max-width: 64px;
  font-family: Arial, sans-serif;
}
#mob-tap-section {
  margin-top: 12px !important;
}
#mob-tap-btn {
  width: auto;
  max-width: 100%;
  padding: 10px 28px !important;
  font-size: 13px;
  font-weight: 600;
  background: #3a3a3a;
  color: #aaa;
  border: 1px solid #444;
  border-radius: 10px;
  font-family: Arial, sans-serif;
  cursor: pointer;
  transition: background-color 120ms ease, color 120ms ease, border-color 120ms ease, transform 80ms ease;
}
#mob-tap-btn:active { background: #4a4a4a; }
/* JS-driven explicit flash on each tap — bright blue matches the accent-pill "on" color */
#mob-tap-btn.tapping {
  background: #3b82f6;
  color: #fff;
  border-color: #3b82f6;
  transform: scale(0.96);
}
.mob-bpm-step:active { background: #3a3a3a; }

/* ═════════════════════════════════════════════════════════════════════════════════
   SECTIONS
   ═════════════════════════════════════════════════════════════════════════════════ */
.mob-section {
  background: #fafafa;
  padding: 14px 16px !important;
  border-bottom: 1px solid #e0e0e0;
}
/* Tinted variant — warmer cream background marks a section as a distinct
   category (currently used for the A=440 tuner so it visibly belongs to a
   different group of tools than the neutral metronome sections above). */
.mob-section-tinted {
  background: #fff8e8;
}
.mob-sec-label {
  font-size: 11px;
  color: #888;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
  margin-bottom: 10px !important;
  display: block;
}
.mob-sec-hint { font-weight: 400 !important; text-transform: none !important;
                letter-spacing: 0 !important; color: #aaa; }

/* ── Section break: thin horizontal rule between major UI areas ──────────
   Used to separate the tuner from the metronome stack above it without
   creating a blank rectangle that reads as a tappable field. A fixed-height
   div with the line drawn as a centered 1px background stripe; the rest of
   the box is transparent so the parent's bg shows through. We use a fixed
   height (not margin) because the bottom divider is the last child of
   #mob-ui — a margin-based approach would let the bottom margin collapse
   out of the container, exposing whatever sits behind it. */
.mob-section-divider {
  height: 45px;                       /* 22px above + 1px line + 22px below */
  background-image: linear-gradient(to right, transparent 0%, #b0b0b0 22%, #b0b0b0 78%, transparent 100%);
  background-size: 100% 1px;
  background-position: center;
  background-repeat: no-repeat;
}

/* ── Section heading: a bigger, bolder label that introduces a whole new
   category of feature (the tuner, for now). Distinct from .mob-sec-label,
   which is a small chip-style field label inside a section. */
.mob-sec-heading {
  display: block;
  font-size: 16px;
  font-weight: 700;
  color: #333;
  text-transform: uppercase;
  letter-spacing: .06em;
  margin-bottom: 14px !important;
}

/* ═════════════════════════════════════════════════════════════════════════════════
   BEATS STEPPER
   ═════════════════════════════════════════════════════════════════════════════════ */
.mob-stepper {
  display: inline-flex;
  align-items: center;
  border: 1.5px solid #ddd;
  border-radius: 10px;
  overflow: hidden;
}
.mob-step-btn {
  width: 48px;
  height: 48px;
  background: #f4f4f4;
  border: none;
  font-size: 24px;
  cursor: pointer;
  color: #333;
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: Arial, sans-serif;
  padding: 0 !important;
}
.mob-step-btn:active { background: #e0e0e0; }
#mob-meter-val {
  width: 56px;
  text-align: center;
  font-size: 24px;
  font-weight: 700;
  color: #111;
  border-left: 1.5px solid #ddd;
  border-right: 1.5px solid #ddd;
  height: 48px;
  line-height: 48px;
}

/* ═════════════════════════════════════════════════════════════════════════════════
   ACCENT PILLS
   ═════════════════════════════════════════════════════════════════════════════════ */
#mob-accent-grid {
  display: inline-flex;                /* inline-flex: gets centered by parent's text-align (same trick the BPM stepper uses) */
  flex-wrap: wrap;
  gap: 8px !important;
  justify-content: center;             /* center pills within each row (matters if a row is partial) */
  max-width: 100%;                     /* safety: don't overflow if viewport is < 208px wide */
  vertical-align: top;                 /* avoid baseline shift from being inline */
}
/* Explicit widths force the wrap to happen at the right column count. Cols
   is set by JS to mirror the BPM flashing-panel rule (3 for 6/9 meters,
   N for 1-4, otherwise 4). Width = N pills × 46 + (N-1) gaps × 8. */
#mob-accent-grid[data-cols="1"] { width:  46px; }
#mob-accent-grid[data-cols="2"] { width: 100px; }
#mob-accent-grid[data-cols="3"] { width: 154px; }
#mob-accent-grid[data-cols="4"] { width: 208px; }
.mob-accent-pill {
  width: 46px;
  height: 46px;
  border-radius: 10px;
  border: 1.5px solid #ccc;
  background: #f5f5f5;
  color: #555;
  font-size: 16px;
  font-weight: 700;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  position: relative;
  -webkit-user-select: none;
  user-select: none;
  -webkit-touch-callout: none;
  padding: 0 !important;
  font-family: Arial, sans-serif;
}
.mob-accent-pill.on {
  background: #1e40af;
  color: #bfdbfe;
  border-color: #1e40af;
}
.mob-accent-pill:active { transform: scale(.92); }
/* amber dot = custom sound assigned */
.mob-accent-pill.custom-sound::after {
  content: '';
  position: absolute;
  bottom: 5px;
  right: 5px;
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: #f59e0b;
}

/* ═════════════════════════════════════════════════════════════════════════════════
   DARK CORE SECTIONS — Beats Per Measure + Accent Beats merge into the BPM zone
   ═════════════════════════════════════════════════════════════════════════════════ */
.mob-section-dark {
  background: #111;
  border-bottom: 1.5px solid transparent;  /* hide the #e0e0e0 divider so dark sections merge */
}
.mob-section-dark .mob-sec-label { color: #ccc; }
.mob-section-dark .mob-sec-hint  { color: #888; }

/* Beats-per-measure stepper, dark variant — palette mirrors the BPM-zone buttons */
.mob-section-dark .mob-stepper { border: 1.5px solid #333; }
.mob-section-dark .mob-step-btn {
  background: #2a2a2a;
  color: #ccc;
}
.mob-section-dark .mob-step-btn:active { background: #3a3a3a; }
.mob-section-dark #mob-meter-val {
  background: #1a1a1a;
  color: #fff;
  border-left:  1.5px solid #333;
  border-right: 1.5px solid #333;
}

/* Accent pills, dark variant — .on and .disabled states already work on dark */
.mob-section-dark .mob-accent-pill {
  background: #2a2a2a;
  color: #aaa;
  border: 1.5px solid #444;
}
/* Brighter blue for the .on state so it clearly pops against the dark section
   (the base #1e40af reads as just another dark tone on #111) */
.mob-section-dark .mob-accent-pill.on {
  background: #3b82f6;
  color: #fff;
  border-color: #3b82f6;
}

/* ═════════════════════════════════════════════════════════════════════════════════
   VOLUME SLIDER
   ═════════════════════════════════════════════════════════════════════════════════ */
.mob-vol-row {
  display: flex;
  align-items: center;
  gap: 10px !important;
}
.mob-vol-icon { font-size: 20px; flex-shrink: 0; }

/* Mute toggle button (left side of volume row).
   Tapping toggles audible ticks; beat panels keep flashing either way.
   Independent of voice volume (voice has its own gain node). */
.mob-vol-mute {
  background: none;
  border: none;
  cursor: pointer;
  padding: 0 !important;
  margin: 0 !important;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 2px;
  flex-shrink: 0;
  font-family: inherit;
  color: inherit;
  -webkit-tap-highlight-color: transparent;
}
.mob-vol-mute-icon { font-size: 20px; line-height: 1; }
.mob-vol-mute-label {
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 0.04em;
  color: #666;
  white-space: nowrap;
  text-transform: uppercase;
}
.mob-vol-mute:active .mob-vol-mute-label { color: #111; }

/* iOS-only "no sound" troubleshooting hint under the volume row (hidden
   attribute is removed by JS on iPhone/iPad only). Same quiet-gray hint
   voice as .mob-sec-hint, but block-level with a little breathing room. */
.mob-ios-sound-hint {
  margin-top: 8px;
  font-size: 11px;
  line-height: 1.45;
  color: #999;
}
.mob-ios-sound-hint strong { color: #777; }
#mob-volume {
  flex: 1;
  accent-color: #16a34a;
  height: 28px;
  cursor: pointer;
}

/* ═════════════════════════════════════════════════════════════════════════════════
   WAVEFORM ROW
   ═════════════════════════════════════════════════════════════════════════════════ */
#mob-wave-row { display: flex; gap: 6px !important; flex-wrap: wrap; }
#mob-vol-row { margin: 8px 0 10px; }
#mob-vol-slider { flex: 1; cursor: pointer; accent-color: #1e3a8a; height: 28px; }
.mob-wave-btn {
  flex: 1;
  min-width: 56px;
  padding: 10px 4px !important;
  border-radius: 8px;
  border: 1.5px solid #ccc;
  background: #f5f5f5;
  font-size: 12px;
  font-weight: 700;
  color: #555;
  cursor: pointer;
  text-align: center;
  font-family: Arial, sans-serif;
}
.mob-wave-btn.mob-wave-active {
  background: #1e3a8a;
  color: #bfdbfe;
  border-color: #1e3a8a;
}
.mob-wave-btn:active { transform: scale(.94); }

/* ── TUNER: reference-A field + chips + tuning-pitch dropdown ───────────
   Sits above the waveform row in the mobile tuner section. The number field
   accepts any A=N; the chips are quick presets; the select chooses which
   pitch (A4 reference or an open string) the engine sounds. The mobile
   universal reset strips horizontal padding with !important, so padding on
   these controls must also use !important. */
#mob-refa-row, #mob-custom-row { display: flex; justify-content: center; align-items: center; gap: 8px; margin-bottom: 10px; }
.mob-refa-eq { font-size: 15px; font-weight: 700; color: #333; }
.mob-refa-input {
  width: 96px;
  padding: 10px 10px !important;
  border: 1.5px solid #ccc;
  border-radius: 8px;
  background: #fff;
  font-size: 16px;            /* >=16px so iOS does not zoom in on focus */
  font-weight: 700;
  color: #333;
  text-align: center;
  font-family: Arial, sans-serif;
}
.mob-refa-hz { font-size: 13px; font-weight: 700; color: #888; }
#mob-refa-chips { display: flex; gap: 6px; flex-wrap: wrap; margin-bottom: 22px; }
.mob-refa-chip {
  flex: 1;
  min-width: 52px;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 1px;
  padding: 7px 4px !important;
  border-radius: 8px;
  border: 1.5px solid #ccc;
  background: #f5f5f5;
  color: #555;
  cursor: pointer;
  text-align: center;
  font-family: Arial, sans-serif;
}
.mob-chip-hz   { font-size: 15px; font-weight: 700; line-height: 1; }
.mob-chip-name { font-size: 9.5px; font-weight: 600; opacity: .7; line-height: 1; white-space: nowrap; }
.mob-refa-chip.mob-refa-chip-active {
  background: #1e3a8a;
  color: #bfdbfe;
  border-color: #1e3a8a;
}
.mob-refa-chip:active { transform: scale(.94); }
.mob-tuner-select {
  width: 100%;
  padding: 11px 12px !important;
  border: 1.5px solid #ccc;
  border-radius: 8px;
  background: #fff;
  font-size: 16px;            /* >=16px so iOS does not zoom in on focus */
  font-weight: 700;
  color: #333;
  font-family: Arial, sans-serif;
  margin-bottom: 14px;
  cursor: pointer;
}
/* Small captions: the "Tap to enter new value" hint, the "Common presets"
   header, and the sine/low-pitch note. Quiet so they sit below the uppercase
   section sub-labels in the visual hierarchy. */
.mob-tuner-hint {
  font-size: 11.5px;
  line-height: 1.35;
  color: #999;
  margin: 4px 0 12px;
  font-family: Arial, sans-serif;
}
.mob-presets-label { color: #777; font-weight: 600; margin: 4px 0 8px; }
.mob-wave-hint     { margin: 8px 0 0; }
.mob-refa-hint     { margin: 0 0 4px; }
/* Faint rule setting the custom-pitch field apart from the waveform controls. */
.mob-tuner-divider { border-top: 1px solid #e8dcc0; margin: 18px 0 14px; }
/* Highlight the custom field while it is the live pitch source. */
.mob-custom-input.mob-custom-on { border-color: #1e3a8a; box-shadow: 0 0 0 2px #bfdbfe; }

/* ═════════════════════════════════════════════════════════════════════════════════
   MODE CARDS (Play-Go-Silent / Voice Count)
   ═════════════════════════════════════════════════════════════════════════════════ */
.mob-mode-card {
  background: #fafafa;
  border-bottom: 1px solid #e0e0e0;
  overflow: hidden;
}
.mob-mode-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 15px 16px !important;
  width: 100%;
  background: none;
  border: none;
  cursor: pointer;
  text-align: left;
  font-family: Arial, sans-serif;
}
.mob-mode-title { font-size: 16px; font-weight: 700; }
.mob-pgs-color  { color: #1e40af; }
.mob-vc-color   { color: #c0392b; }
.mob-ladder-color { color: #ea580c; }
.mob-misery-color { color: #db2777; }
.mob-misery-sub { display: block; font-size: 16px; font-weight: normal; color: #9d174d; }
.mob-il-color { color: #4f46e5; }
.mob-idr-color { color: #0d9488; }
.mob-rehab-color { color: #6d28d9; }
.mob-rehab-sub { display: block; font-size: 16px; font-weight: normal; color: #7c3aed; }
/* Sub-line under the mobile PRACTICE TOOLS heading (tucked up under it). */
.mob-practice-tools-sub { display: block; font-size: 12px; font-style: italic; color: #666; margin: -8px 0 0; }
/* Interleaved Practice reuses the REAL desktop #interleave-block inside the mobile
   dropdown (Phase A4). Strip its desktop card chrome so it blends into the
   mob-mode-body, hide its in-block title (the card header already names it), and
   make its START button full-width like the other mobile cards. */
@media screen and (max-width: 768px) {
  #mob-il-body .interleave-block,
  #mob-idr-body .interleave-block,
  #mob-rehab-body .nightmare-block { border: none !important; box-shadow: none !important; background: transparent !important; border-radius: 0 !important; padding: 0 !important; margin: 0 !important; }
  #mob-il-body .interleave-title,
  #mob-idr-body .interleave-title,
  #mob-rehab-body .nightmare-title { display: none !important; }
  /* The desktop "Show settings & saved routines" dropdown is forced open inside
     the mobile Rehab / Daily-Practice cards (placeRehab / placeIdr), so hide its
     toggle there — those cards have their own collapse. */
  #mob-rehab-body .pt-disclosure > summary,
  #mob-idr-body .pt-disclosure > summary,
  #mob-il-body .pt-disclosure > summary { display: none !important; }
  #mob-il-body .il-start-btn,
  #mob-idr-body .il-start-btn,
  #mob-rehab-body .il-start-btn { width: 100% !important; justify-content: center !important; }
}
.mob-ladder-unit-sel { padding: 6px 8px; border: 1px solid #ddd; border-radius: 8px; font-size: 15px; background: #fff; flex: 0 1 auto; min-width: 0; max-width: 100%; }
/* Long-option selects (When reached / When you press stop): stack the label
   above a full-width select so the option text never runs off a narrow screen. */
.mob-mode-row.mob-ladder-stack { flex-direction: column; align-items: stretch; gap: 4px !important; }
.mob-ladder-stack .mob-field-label { text-align: left; }
.mob-ladder-stack .mob-ladder-unit-sel { width: 100%; max-width: 100%; box-sizing: border-box; }
.mob-mode-chevron {
  font-size: 16px;
  color: #aaa;
  transition: transform .25s;
  flex-shrink: 0;
}
.mob-mode-header[aria-expanded="true"] .mob-mode-chevron { transform: rotate(90deg); }
.mob-mode-body {
  padding: 14px 16px 18px !important;
  border-top: 1px solid #f0f0f0;
}
.mob-pgs-hint {
  font-size: 14px;
  color: #1e40af;
  line-height: 1.4;
  text-align: left;
  margin-bottom: 14px !important;
  padding: 8px 10px !important;
  background: #eff6ff;
  border-left: 3px solid #1e40af;
  border-radius: 4px;
  font-style: italic;
}
/* Practice Ladder reuses the PGS hint box but in amber. */
.mob-ladder-hint { color: #7c2d12; background: #fff7ed; border-left-color: #ea580c; font-style: normal; }
/* Seven Levels of Misery reuses the PGS hint box but in pink. */
.mob-misery-hint { color: #9d174d; background: #fdf2f8; border-left-color: #db2777; font-style: normal; }
/* Mobile START THE GAME launcher — full-width pink, echoing desktop .misery-start-btn. */
.mob-misery-start {
  display: block; width: 100%; margin-top: 4px;
  padding: 14px 18px !important;
  background: #db2777; color: #fff; font-weight: 800; font-size: 16px; letter-spacing: .04em;
  font-family: Arial, sans-serif; border: none; border-radius: 10px; cursor: pointer;
  box-shadow: 0 4px 12px rgba(219,39,119,.35);
}
.mob-misery-start:disabled { opacity: .5; cursor: not-allowed; }
.mob-mode-row {
  display: flex;
  align-items: center;
  gap: 10px !important;
  margin-bottom: 14px !important;
}
.mob-mode-row:last-child { margin-bottom: 0 !important; }
.mob-field-label { font-size: 13px; font-weight: 700; flex-shrink: 0; }
/* Polyrhythm volume rows: stack the (longer) label above a full-width slider. */
.mob-mode-row.mob-vol-stack { flex-direction: column; align-items: stretch; gap: 4px !important; }
.mob-vol-stack .mob-field-label { line-height: 1.25; text-align: left; }
.mob-vol-stack .mob-poly-range { flex: none; width: 100%; }
.mob-num-input {
  width: 64px;
  height: 38px;
  border: 1.5px solid #ccc;
  border-radius: 8px;
  text-align: center;
  font-size: 18px;
  font-weight: 700;
  color: #111;
  padding: 0 !important;
  font-family: Arial, sans-serif;
}
.mob-num-input:focus   { border-color: #2563eb; outline: none; }
.mob-num-input:disabled { opacity: 1; background: #ececec; color: #999; border-color: #ddd; cursor: not-allowed; }
.mob-num-input:disabled::placeholder { color: #999; }
.mob-num-input:enabled::placeholder  { color: transparent; }
.mob-subdiv-sel {
  flex: 1;
  height: 38px;
  border: 1.5px solid #c0392b;
  border-radius: 8px;
  font-size: 12px;
  padding: 0 8px !important;
  color: #111;
  background: #fff;
  min-width: 0;
}
.mob-vc-range { flex: 1; accent-color: #c0392b; cursor: pointer; }

/* ═════════════════════════════════════════════════════════════════════════════════
   STICKY START / STOP
   ═════════════════════════════════════════════════════════════════════════════════ */
#mob-sticky-wrap {
  position: fixed;
  bottom: 0; left: 0; right: 0;
  z-index: 998;
  padding: 10px 16px 18px !important;
  background: linear-gradient(transparent, rgba(240,240,240,.97) 32%);
  justify-content: center;
}
/* When the ENTER YOUR OWN RHYTHM editor sheet is open, raise the sticky
   START/STOP wrapper above the sheet (1000), score popup (9000), and
   shared modal backdrop (10000) so the user can preview a loaded preset
   without first closing the editor (Option A). */
#mob-sticky-wrap.above-prog-sheet { z-index: 10001; }
#mob-power {
  width: 100%;
  max-width: 520px;
  height: 58px;
  border-radius: 16px;
  border: none;
  font-size: 20px;
  font-weight: 700;
  letter-spacing: .06em;
  cursor: pointer;
  padding: 0 !important;
  font-family: Arial, sans-serif;
  transition: background .15s, transform .1s;
}
#mob-power.mob-start { background: #16a34a; color: #fff; }
#mob-power.mob-stop  { background: #dc2626; color: #fff; }
#mob-power:active    { transform: scale(.97); }

/* ═════════════════════════════════════════════════════════════════════════════════
   SOUND PICKER BOTTOM SHEET
   ═════════════════════════════════════════════════════════════════════════════════ */
#mob-sound-backdrop {
  position: fixed;
  top: 0; left: 0; right: 0; bottom: 0;
  z-index: 1100;
  background: rgba(0,0,0,.5);
  align-items: flex-end;
}
#mob-sound-backdrop.open { display: flex; }
#mob-sound-sheet {
  background: #fff;
  width: 100%;
  max-height: 72vh;
  border-radius: 20px 20px 0 0;
  padding: 16px 16px 24px !important;
  overflow-y: auto;
  transform: translateY(100%);
  transition: transform .3s cubic-bezier(.32,.72,0,1);
}
#mob-sound-backdrop.open #mob-sound-sheet { transform: translateY(0); }
#mob-sheet-handle {
  width: 56px; height: 6px;
  border-radius: 3px;
  margin: 0 auto 14px !important;
}
#mob-sheet-title {
  font-size: 16px;
  font-weight: 700;
  color: #111;
  margin-bottom: 14px !important;
}
#mob-sound-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 8px !important;
}
.mob-sound-item {
  padding: 11px 4px !important;
  border-radius: 8px;
  border: 1.5px solid #e0e0e0;
  font-size: 12px;
  font-weight: 700;
  text-align: center;
  color: #333;
  background: #f8f8f8;
  cursor: pointer;
  -webkit-user-select: none;
  user-select: none;
  font-family: Arial, sans-serif;
}
.mob-sound-item.selected {
  border-color: #1e40af;
  background: #eff6ff;
  color: #1e40af;
}
.mob-sound-item:active { transform: scale(.94); }
#mob-sheet-hint {
  font-size: 11px;
  color: #bbb;
  text-align: center;
  margin-top: 12px !important;
}

/* ═════════════════════════════════════════════════════════════════════════════════
   SUBDIVIDE BEAT — Mobile dropdown (Phase 10)

   The hidden <select id="mob-subdivide-select"> is the source of truth and
   stays in the DOM (Phase 3 sync depends on it). This block styles:
     1. The trigger button that replaces the visible <select> in .mob-mode-row.
     2. The bottom sheet that opens when the trigger is tapped — same visual
        language as #mob-sound-sheet so the two pickers feel like one feature.
     3. The rows inside the sheet (icon + label, 52px tap target, 90×40 icons).
   ═════════════════════════════════════════════════════════════════════════════════ */

/* ── Trigger button (occupies the same row slot the native select had) ──── */
.mob-subdiv-trigger {
  flex: 1;
  min-height: 38px;                  /* min, not fixed, so triplet icons (taller) can grow the button */
  min-width: 0;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 4px 8px !important;       /* vertical padding gives icon-overflow room when a triplet is selected */
  background: #e5e7eb;               /* soft gray — pure white reads as jarring on the #111 section */
  color: #111;
  border: 1.5px solid #2563eb;       /* blue = core feature */
  border-radius: 8px;
  cursor: pointer;
  text-align: left;
  font-family: Arial, sans-serif;
  font-size: 12px;
  -webkit-tap-highlight-color: transparent;
}
.mob-subdiv-trigger:active { background: #dbeafe; transform: scale(.99); }
.mob-subdiv-trigger:focus  { outline: 2px solid #2563eb; outline-offset: 1px; }
/* Phase 19: greyed while Polyrhythm Mode is on — the two modes are mutually
   exclusive (matches the desktop subdivide trigger's disabled state). */
.mob-subdiv-trigger:disabled { opacity: .42; cursor: not-allowed; }
.mob-subdiv-trigger-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 64px;
  height: 32px;
  flex: 0 0 auto;
}
.mob-subdiv-trigger-icon svg {
  max-width: 64px;
  max-height: 32px;
  width: auto;
  height: auto;
}
.mob-subdiv-trigger-label {
  flex: 1 1 auto;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.mob-subdiv-trigger-caret {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 14px;
  height: 14px;
  color: #2563eb;
  transition: transform .2s ease;
}
.mob-subdiv-trigger[aria-expanded="true"] .mob-subdiv-trigger-caret {
  transform: rotate(180deg);
}

/* ── Bottom sheet (mirrors #mob-sound-backdrop / #mob-sound-sheet) ──────── */
#mob-subdiv-backdrop {
  position: fixed;
  top: 0; left: 0; right: 0; bottom: 0;
  z-index: 1100;
  background: rgba(0,0,0,.5);
  align-items: flex-end;
}
#mob-subdiv-backdrop.open { display: flex; }
#mob-subdiv-sheet {
  background: #fff;
  width: 100%;
  max-height: 72vh;
  border-radius: 20px 20px 0 0;
  padding: 16px 16px 24px !important;
  overflow-y: auto;
  transform: translateY(100%);
  transition: transform .3s cubic-bezier(.32,.72,0,1);
}
#mob-subdiv-backdrop.open #mob-subdiv-sheet { transform: translateY(0); }

/* Sheet chrome — same dimensions as the sound-sheet chrome but class-scoped
   so the two sheets remain independent if one needs to change later. */
#mob-subdiv-sheet .mob-sheet-handle {
  width: 56px; height: 6px;
  border-radius: 3px;
  margin: 0 auto 14px !important;
}
#mob-subdiv-sheet .mob-sheet-title {
  font-size: 16px;
  font-weight: 700;
  color: #2563eb;                    /* blue = core feature */
  margin-bottom: 14px !important;
}
#mob-subdiv-sheet .mob-sheet-hint {
  font-size: 11px;
  color: #bbb;
  text-align: center;
  margin-top: 12px !important;
}

/* The page body has text-align: center which cascades in by default; force
   left alignment on the row list so option labels start at a consistent
   column (matches the desktop dropdown). The .mob-sheet-hint rule above
   keeps its own explicit text-align: center. */
#mob-subdiv-list { text-align: left; }

/* ── Rows inside the sheet ──────────────────────────────────────────────── */
.mob-subdiv-optgroup {
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 1px;
  font-weight: 700;
  color: #2563eb;
  padding: 12px 8px 6px 8px;
  cursor: default;
  user-select: none;
}
.mob-subdiv-optgroup:first-child { padding-top: 4px; }
.mob-subdiv-row {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 8px 8px;
  min-height: 52px;                  /* > 44px iOS HIG */
  cursor: pointer;
  font-size: 14px;
  color: #1f2937;
  user-select: none;
  border-radius: 8px;
  border: 1.5px solid transparent;   /* reserve space so .selected doesn't shift layout */
  box-sizing: border-box;
  -webkit-tap-highlight-color: transparent;
}
.mob-subdiv-row:active { background: #eff6ff; }
.mob-subdiv-row.selected {
  background: #dbeafe;
  border-color: #2563eb;
  font-weight: 600;
}
.mob-subdiv-row-icon {
  width: 90px;
  height: 40px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
}
.mob-subdiv-row-icon svg {
  max-width: 90px;
  max-height: 40px;
  width: auto;
  height: auto;
}
.mob-subdiv-row-label {
  flex: 1 1 auto;
}

/* ── Triplet patterns: bigger icon slots to match the visual scale of
   non-triplets ─────────────────────────────────────────────────────────────
   Triplet source SVGs are taller than non-triplet groups (148–166 units
   vs 115) because the "3" marker sits above the beam. At the default
   max-height of 40, that taller bounding box forces the notes to render
   smaller than non-triplets. We give each triplet pattern a container
   height equal to source_height × (40 / 115) so its noteheads render at
   the same scale as the 8th/16th-note baseline. */
.mob-subdiv-row[data-value="3"]  .mob-subdiv-row-icon,
.mob-subdiv-row[data-value="3"]  .mob-subdiv-row-icon svg { height: 52px; max-height: 52px; }
.mob-subdiv-row[data-value="12"] .mob-subdiv-row-icon,
.mob-subdiv-row[data-value="12"] .mob-subdiv-row-icon svg { height: 56px; max-height: 56px; }
.mob-subdiv-row[data-value="13"] .mob-subdiv-row-icon,
.mob-subdiv-row[data-value="13"] .mob-subdiv-row-icon svg { height: 58px; max-height: 58px; }
.mob-subdiv-row[data-value="14"] .mob-subdiv-row-icon,
.mob-subdiv-row[data-value="14"] .mob-subdiv-row-icon svg { height: 56px; max-height: 56px; }

/* Same compensation on the trigger button. The trigger uses min-height
   (not a fixed height) so it grows by a few pixels when a triplet is
   selected, instead of clipping the icon. */
.mob-subdiv-trigger[data-value="3"]  .mob-subdiv-trigger-icon,
.mob-subdiv-trigger[data-value="3"]  .mob-subdiv-trigger-icon svg { height: 42px; max-height: 42px; }
.mob-subdiv-trigger[data-value="12"] .mob-subdiv-trigger-icon,
.mob-subdiv-trigger[data-value="12"] .mob-subdiv-trigger-icon svg { height: 45px; max-height: 45px; }
.mob-subdiv-trigger[data-value="13"] .mob-subdiv-trigger-icon,
.mob-subdiv-trigger[data-value="13"] .mob-subdiv-trigger-icon svg { height: 46px; max-height: 46px; }
.mob-subdiv-trigger[data-value="14"] .mob-subdiv-trigger-icon,
.mob-subdiv-trigger[data-value="14"] .mob-subdiv-trigger-icon svg { height: 45px; max-height: 45px; }

/* ═════════════════════════════════════════════════════════════════════════════════
   TALKING VOICE COUNT — Mobile dropdown (custom bottom sheet)

   Same approach as the SUBDIVIDE BEAT mobile dropdown above, themed red
   (#c0392b) to match the voice-count section. Replaces the native <select>
   (#mob-vc-subdiv, now visually hidden) so the meter-aware count labels can
   wrap with a hanging indent: the note glyph sits in its own fixed icon
   column and the label is a flex column that wraps within itself, so wrapped
   lines align under the label text rather than under the glyph — something a
   native OS picker can't do.
   ═════════════════════════════════════════════════════════════════════════════════ */

/* ── Trigger button (occupies the same row slot the native select had) ──── */
.mob-vc-trigger {
  flex: 1;
  min-height: 38px;
  min-width: 0;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 4px 8px !important;
  background: #f1e6e6;               /* soft red-tinted gray (vs subdivide's blue-gray) */
  color: #111;
  border: 1.5px solid #c0392b;       /* red = voice count */
  border-radius: 8px;
  cursor: pointer;
  text-align: left;
  font-family: Arial, sans-serif;
  font-size: 12px;
  -webkit-tap-highlight-color: transparent;
}
.mob-vc-trigger:active { background: #f7d9d9; transform: scale(.99); }
.mob-vc-trigger:focus  { outline: 2px solid #c0392b; outline-offset: 1px; }
.mob-vc-trigger-icon {
  flex: 0 0 auto;
  width: 22px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 18px;
  line-height: 1;
}
.mob-vc-trigger-label {
  flex: 1 1 auto;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;               /* the closed trigger stays one line; the sheet shows the full label */
}
.mob-vc-trigger-caret {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 14px;
  height: 14px;
  color: #c0392b;
  transition: transform .2s ease;
}
.mob-vc-trigger[aria-expanded="true"] .mob-vc-trigger-caret {
  transform: rotate(180deg);
}

/* ── Bottom sheet (mirrors #mob-subdiv-backdrop / #mob-subdiv-sheet) ──────── */
#mob-vc-backdrop {
  position: fixed;
  top: 0; left: 0; right: 0; bottom: 0;
  z-index: 1100;
  background: rgba(0,0,0,.5);
  align-items: flex-end;
}
#mob-vc-backdrop.open { display: flex; }
#mob-vc-sheet {
  background: #fff;
  width: 100%;
  max-height: 72vh;
  border-radius: 20px 20px 0 0;
  padding: 16px 16px 24px !important;
  overflow-y: auto;
  transform: translateY(100%);
  transition: transform .3s cubic-bezier(.32,.72,0,1);
}
#mob-vc-backdrop.open #mob-vc-sheet { transform: translateY(0); }
#mob-vc-sheet .mob-sheet-handle {
  width: 56px; height: 6px;
  border-radius: 3px;
  margin: 0 auto 14px !important;
}
#mob-vc-sheet .mob-sheet-title {
  font-size: 16px;
  font-weight: 700;
  color: #c0392b;                    /* red = voice count */
  margin-bottom: 14px !important;
}
#mob-vc-sheet .mob-sheet-hint {
  font-size: 11px;
  color: #bbb;
  text-align: center;
  margin-top: 12px !important;
}
#mob-vc-list { text-align: left; }

/* ── Rows inside the sheet ──────────────────────────────────────────────── */
.mob-vc-row {
  display: flex;
  align-items: flex-start;           /* top-align so the glyph stays with line 1 when the label wraps */
  gap: 10px;
  padding: 10px 8px;
  min-height: 52px;                  /* > 44px iOS HIG */
  cursor: pointer;
  font-size: 14px;
  color: #1f2937;
  user-select: none;
  border-radius: 8px;
  border: 1.5px solid transparent;   /* reserve space so .selected doesn't shift layout */
  box-sizing: border-box;
  -webkit-tap-highlight-color: transparent;
}
.mob-vc-row:active { background: #fdedec; }
.mob-vc-row.selected {
  background: #fdeaea;
  border-color: #c0392b;
  font-weight: 600;
}
.mob-vc-row-icon {
  flex: 0 0 auto;
  width: 24px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 22px;
  line-height: 1;                    /* tighter than the label's 1.45 — the taller line box was dropping the glyph below line 1 */
  margin-top: -3px;                  /* optical nudge up: the note glyphs (♩♪♬) render low within their em box */
}
.mob-vc-row-label {
  flex: 1 1 auto;                     /* wraps within this column → hanging indent past the icon */
  line-height: 1.45;
}

/* ═════════════════════════════════════════════════════════════════════════════════
   TUNING PITCH — Mobile dropdown (custom bottom sheet)

   Same approach as the SUBDIVIDE / VOICE COUNT mobile dropdowns. Replaces the
   native <select> (#mob-tuner-note, now hidden) so the "string — note · freq Hz"
   labels lay out under our control: optgroup headers like the native picker, with
   rows indented under them so a wrapped frequency lines up under the option text
   (under the "6" in "6th"), not under the group header. No icon column — these
   options have no glyph. Themed with the tuner's blue (#1e3a8a, its A=N chips).
   ═════════════════════════════════════════════════════════════════════════════════ */

/* ── Trigger button (replaces the native select in the TUNING PITCH slot) ── */
.mob-tuner-trigger {
  width: 100%;
  min-height: 44px;
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 14px;               /* matches the spacing the native select had */
  padding: 10px 12px !important;
  background: #fff;
  color: #333;
  border: 1.5px solid #ccc;          /* neutral, like the select it replaces */
  border-radius: 8px;
  cursor: pointer;
  text-align: left;
  font-family: Arial, sans-serif;
  font-size: 14px;
  font-weight: 700;
  -webkit-tap-highlight-color: transparent;
}
.mob-tuner-trigger:active { background: #f3f4f6; transform: scale(.995); }
.mob-tuner-trigger:focus  { outline: 2px solid #1e3a8a; outline-offset: 1px; }
.mob-tuner-trigger-label {
  flex: 1 1 auto;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;               /* closed trigger stays one line; the sheet shows full labels */
}
.mob-tuner-trigger-caret {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 14px;
  height: 14px;
  color: #1e3a8a;
  transition: transform .2s ease;
}
.mob-tuner-trigger[aria-expanded="true"] .mob-tuner-trigger-caret {
  transform: rotate(180deg);
}

/* ── Bottom sheet (mirrors #mob-subdiv-backdrop / #mob-subdiv-sheet) ──────── */
#mob-tuner-backdrop {
  position: fixed;
  top: 0; left: 0; right: 0; bottom: 0;
  z-index: 1100;
  background: rgba(0,0,0,.5);
  align-items: flex-end;
}
#mob-tuner-backdrop.open { display: flex; }
#mob-tuner-sheet {
  background: #fff;
  width: 100%;
  max-height: 72vh;
  border-radius: 20px 20px 0 0;
  padding: 16px 16px 24px !important;
  overflow-y: auto;
  transform: translateY(100%);
  transition: transform .3s cubic-bezier(.32,.72,0,1);
}
#mob-tuner-backdrop.open #mob-tuner-sheet { transform: translateY(0); }
#mob-tuner-sheet .mob-sheet-handle {
  width: 56px; height: 6px;
  border-radius: 3px;
  margin: 0 auto 14px !important;
  cursor: pointer;
}
/* Generic affordance: every sheet's gray drag-handle bar is tap-to-close.
   The JS at the end of file delegates click on .mob-sheet-handle to the
   nearest [role="dialog"] backdrop and triggers its existing close path. */
/* Generic affordance: every sheet's gray drag-handle bar is tap-to-close.
   The JS at the end of the file delegates click on .mob-sheet-handle to
   the nearest [role="dialog"] backdrop and triggers its existing close
   path. The visible bar is small; we use a ::before pseudo to make the
   tap target ~44px tall (iOS HIG) so a finger tap reliably lands on it. */
.mob-sheet-handle {
  cursor: pointer;
  position: relative;
  background: #999 !important;       /* a touch darker so it reads as interactive */
}
.mob-sheet-handle::after {
  content: "tap bar to close";
  position: absolute;
  top: 10px; left: 50%; transform: translateX(-50%);
  font-size: 10px; font-style: italic; color: #999;
  white-space: nowrap;
  pointer-events: none;
}
.mob-sheet-handle::before {
  content: "";
  position: absolute;
  top: -18px; left: -40px; right: -40px; bottom: -8px;
  /* invisible expanded tap target */
}
#mob-tuner-sheet .mob-sheet-title {
  font-size: 16px;
  font-weight: 700;
  color: #1e3a8a;
  margin-bottom: 8px !important;
}
#mob-tuner-sheet .mob-sheet-hint {
  font-size: 11px;
  color: #bbb;
  text-align: center;
  margin-top: 12px !important;
}
#mob-tuner-list { text-align: left; }

/* Optgroup headers (Reference / Standard guitar tuning / Alternate guitar tunings) */
.mob-tuner-optgroup {
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 1px;
  font-weight: 700;
  color: #1e3a8a;
  padding: 12px 8px 6px 8px !important;
  padding: 12px 8px 6px 8px;
  cursor: default;
  user-select: none;
}
.mob-tuner-optgroup:first-child { padding-top: 4px; }

/* Rows — indented under the headers so a wrapped frequency aligns under the
   option text, not under the group header. No icon column (no glyph here). */
.mob-tuner-row {
  padding: 11px 8px 11px 22px !important;
  min-height: 44px;                  /* iOS HIG tap target */
  cursor: pointer;
  font-size: 14px;
  color: #1f2937;
  user-select: none;
  border-radius: 8px;
  border: 1.5px solid transparent;   /* reserve space so .selected doesn't shift layout */
  box-sizing: border-box;
  line-height: 1.4;
  -webkit-tap-highlight-color: transparent;
}
.mob-tuner-row:active { background: #eef2fb; }
.mob-tuner-row.selected {
  background: #e8edf9;
  border-color: #1e3a8a;
  font-weight: 600;
}

/* ── Mobile fixes: content sections below the metronome ── */
@media screen and (max-width: 768px) {

  /* Kill horizontal waggling caused by overflowing elements */
  html, body { overflow-x: hidden !important; }

  /* Metronome Controls div (has inline margin-left/right:70px) */
  #content > div[style*="margin-left:70px"],
  #content > div[style*="margin-left: 70px"] {
    margin-left: 0 !important;
    margin-right: 0 !important;
    padding-left: 16px !important;
    padding-right: 16px !important;
    box-sizing: border-box !important;
    width: 100% !important;
  }

  /* Give the FAQ and Purchase boxes themselves left/right padding */
  #content .myBoxesWhiteBackground {
    padding-left: 16px !important;
    padding-right: 16px !important;
    box-sizing: border-box !important;
  }

  /* The first .myBoxesWhiteBackground (identified by inline margin-top: 30px)
     contains the mob-ui block. On desktop it's the white framing around the
     metronome controls. On mobile it should disappear visually — match
     mob-ui's gray bg and remove the 16px horizontal padding so mob-ui spans
     the full body width. Without this override, the wrapper's bg and inset
     show as a mismatched "extra box" below the bottom divider. */
  #content .myBoxesWhiteBackground[style*="margin-top: 30px"] {
    background-color: #f0f0f0 !important;
    padding-left: 0 !important;
    padding-right: 0 !important;
  }

  /* FAQ box (inline margin-top: 50px) needs its original top padding restored —
     the generic .myBoxesWhiteBackground rule above nukes all padding, leaving
     its heading butted against the box top. */
  #content .myBoxesWhiteBackground[style*="margin-top: 50px"] {
    padding-top: 16px !important;
  }

  /* .ekwoster-metronome wraps 40+ <audio> elements and a #metronome-dialog
     modal (which sits behind a jQuery UI dialog and is opened on demand).
     It's the only normal-flow element between #mob-ui and the wrapper's
     closing tag, so any unexpected height below mob-ui traces back here.
     Audio elements still play normally when their container is hidden. */
  .ekwoster-metronome { display: none !important; }

  /* Reset large inline margins on inner text elements */
  #content .myBoxesWhiteBackground p,
  #content .myBoxesWhiteBackground h1,
  #content .myBoxesWhiteBackground h2,
  #content .myBoxesWhiteBackground h3 {
    margin-left: 0 !important;
    margin-right: 0 !important;
    padding-left: 0 !important;
    padding-right: 0 !important;
  }

  /* Restore list indentation so bullets/numbers aren't flush against edge */
  #content .myBoxesWhiteBackground ul,
  #content .myBoxesWhiteBackground ol,
  #content > div[style*="margin-left:70px"] ul,
  #content > div[style*="margin-left:70px"] ol {
    margin-left: 0 !important;
    margin-right: 0 !important;
    padding-left: 20px !important;
  }

  /* Woman image: remove float, center, scale to screen */
  #content .myBoxesWhiteBackground [style*="float"] {
    float: none !important;
    display: block !important;
    margin: 0 auto 16px auto !important;
    width: 100% !important;
  }
  #content .myBoxesWhiteBackground img {
    max-width: 100% !important;
    height: auto !important;
    display: block !important;
    margin: 0 auto !important;
  }

  /* Bottom clearance so sticky START button doesn't cover last line */
  #content > div:last-of-type {
    padding-bottom: 100px !important;
  }
}


  .metro-support-bar {
    max-width: 560px; margin: 28px auto; padding: 14px 18px;
    display: flex; flex-wrap: wrap; align-items: center; justify-content: center;
    gap: 10px 14px; text-align: center;
    background: #f8fafc; border: 1px solid #e2e8f0; border-radius: 8px;
  }
  .metro-support-text { font: 600 14px Roboto, sans-serif; color: #334155; margin-right: 4px; }
  .metro-support-btn {
    font: 600 14px Roboto, sans-serif; padding: 9px 18px;
    border-radius: 6px; cursor: pointer;
    border: 1px solid #0d9488; background: #0d9488; color: #fff;
  }
  .metro-support-btn:hover { background: #0b7e74; border-color: #0b7e74; }
  .metro-support-btn-alt { background: #fff; color: #0d9488; }
  .metro-support-btn-alt:hover { background: #f0fdfa; }
  @media (max-width: 768px) {
    .metro-support-bar { margin: 20px 12px; padding: 12px 14px; }
    /* Stack: question on its own row, the two buttons side-by-side below it. */
    .metro-support-text { flex: 0 0 100%; margin-right: 0; }
    /* !important to restore horizontal padding past the mobile-wide
       *:not(.radial-slider *){padding-left/right:0 !important} reset. */
    .metro-support-btn { padding-left: 30px !important; padding-right: 30px !important; }
    /* Bottom bar (last element on the page, after the STORE button): tighten
       the gap to the button above it, and add page bottom-clearance so the
       fixed #mob-sticky-wrap START bar (~86px) doesn't cover the last of the
       page content when scrolled all the way down. Padding (not margin) so it
       can't collapse. */
    /* The bottom support bar is redundant on mobile — an in-#mob-ui copy now
       sits after the SAVE MY METRONOME SETTINGS block — so hide it here. */
    #metro-support-bottom { display: none !important; }
    body { padding-bottom: 110px; }
  }
  /* Top instances are platform-specific: the desktop-only bar (before POWER
     TOOLS) is hidden on mobile; the mobile-only bar lives inside #mob-ui, so
     it's hidden on desktop automatically. The bottom bar shows on both. */
  @media (max-width: 768px) { .metro-support-bar.metro-support-desktop { display: none !important; } }
  /* Contact form modal — reuses the .progPreset-modal-* shell for the card. */
  .metro-contact-field { margin-top: 12px; text-align: left; }
  .metro-contact-field label { display: block; font: 600 13px Roboto, sans-serif; color: #374151; margin-bottom: 4px; }
  .metro-contact-field select,
  .metro-contact-field textarea,
  .metro-contact-field input {
    width: 100%; box-sizing: border-box; font: 14px Roboto, sans-serif;
    padding: 9px 10px; border: 1px solid #d1d5db; border-radius: 6px;
  }
  /* Keep a clear left/right text inset in the Help & support / Send feedback
     fields on desktop, and survive the <=1000px padding strip on iPad (which
     zeroes horizontal padding with !important, so this override needs it too). */
  .metro-contact-field select,
  .metro-contact-field textarea,
  .metro-contact-field input { padding-left: 12px !important; padding-right: 12px !important; }
  .metro-contact-field textarea { min-height: 120px; resize: vertical; }
  .metro-contact-field select:focus,
  .metro-contact-field textarea:focus,
  .metro-contact-field input:focus { outline: 2px solid #0d9488; outline-offset: 1px; }
  /* Honeypot — off-screen, never seen or tabbed to by humans; bots fill it. */
  .metro-contact-hp { position: absolute !important; left: -9999px !important; width: 1px; height: 1px; overflow: hidden; }
  .metro-contact-status { margin-top: 12px; font: 600 13px Roboto, sans-serif; min-height: 18px; color: #555; }
  .metro-contact-status.ok  { color: #15803d; }
  .metro-contact-status.err { color: #b91c1c; }
  .metro-contact-mailto {
    background: none; border: none; padding: 0; cursor: pointer;
    color: #0d9488; font: 600 13px Roboto, sans-serif; text-decoration: underline;
  }


  .progPreset-modal-backdrop {
    position: fixed; inset: 0;
    background: rgba(0,0,0,.55);
    z-index: 10000;
    display: none;
    align-items: center;
    justify-content: center;
    padding: 16px;
  }
  .progPreset-modal-backdrop:not([hidden]) { display: flex; }
  .progPreset-modal-card {
    background: #fff;
    border-radius: 10px;
    padding: 22px 22px 18px !important;
    width: 100%;
    max-width: 460px;
    max-height: calc(100vh - 32px);
    display: flex;
    flex-direction: column;
    box-shadow: 0 18px 56px rgba(0,0,0,.35);
    font-family: var(--font-ui, 'Roboto', sans-serif);
    color: #1f2937;
  }
  /* Body scrolls so tall content (e.g. an expanded fragility warning)
     stays reachable instead of being clipped beneath the action buttons. */
  .progPreset-modal-body {
    overflow-y: auto;
    flex: 1 1 auto;
    min-height: 0;
  }
  .progPreset-modal-title,
  .progPreset-modal-actions { flex: 0 0 auto; }
  .progPreset-modal-title {
    font-weight: 700;
    font-size: 17px;
    color: #0d9488;
    margin: 0 0 10px !important;
  }
  .progPreset-modal-message {
    font-size: 14px;
    color: #374151;
    margin: 0 0 12px !important;
    line-height: 1.45;
    text-align: left;
  }
  .progPreset-modal-input {
    width: 100%;
    padding: 9px 11px !important;
    font: inherit;
    font-size: 15px;
    border: 1.5px solid #0d9488;
    border-radius: 5px;
    box-sizing: border-box;
    color: #1f2937;
    background: #fff;
  }
  .progPreset-modal-input:focus { outline: 2px solid #0d9488; outline-offset: 1px; }
  .progPreset-modal-url-row {
    display: flex;
    gap: 8px;
    align-items: stretch;
    margin: 6px 0 4px;
  }
  .progPreset-modal-url-row .progPreset-modal-input { font-size: 12px; font-family: monospace; }
  .progPreset-modal-copy {
    flex: 0 0 auto;
    padding: 8px 14px !important;
    background: #0d9488;
    color: #fff;
    border: none;
    border-radius: 5px;
    font: 600 13px/1 'Roboto', sans-serif;
    cursor: pointer;
    -webkit-tap-highlight-color: transparent;
  }
  .progPreset-modal-copy:active { background: #0b7e74; }
  .progPreset-modal-copy.copied { background: #15803d; }
  .progPreset-modal-actions {
    display: flex;
    gap: 8px;
    justify-content: flex-end;
    margin-top: 16px;
  }
  .progPreset-modal-btn {
    padding: 8px 16px !important;
    font: 600 14px/1 'Roboto', sans-serif;
    border-radius: 5px;
    cursor: pointer;
    -webkit-tap-highlight-color: transparent;
    border: 1.5px solid transparent;
    min-width: 72px;
  }
  .progPreset-modal-btn-cancel  { background: #fff; border-color: #d1d5db; color: #374151; }
  .progPreset-modal-btn-cancel:active  { background: #f3f4f6; }
  .progPreset-modal-btn-confirm { background: #0d9488; color: #fff; }
  .progPreset-modal-btn-confirm:active { background: #0b7e74; }
  .progPreset-modal-btn-danger  { background: #dc2626; color: #fff; }
  .progPreset-modal-btn-danger:active  { background: #b91c1c; }
