*{box-sizing:border-box}html{background:#12151b;color:#fff}body{--accent:#eee;--secondary:#aaa;--pulse:0;margin:0;font:600 clamp(14px,1.22vw,24px)/1.25 -apple-system,BlinkMacSystemFont,'Segoe UI',Arial,sans-serif;min-height:100vh}#background{position:fixed;inset:-3%;width:106%;height:106%;filter:blur(3px);opacity:.64;z-index:0;pointer-events:none}.app{position:relative;z-index:2;min-height:100vh;padding:2.5vh 4vw;background:radial-gradient(ellipse at center,#00000020,#00000080)}header{height:9vh;display:flex;align-items:center;justify-content:space-between}.brand{display:flex;align-items:center;gap:14px;opacity:.7;letter-spacing:.05em;font-size:1.35em}.brand img{width:8vh;height:8vh;object-fit:contain}button{font:inherit;color:inherit;background:#00000035;border:1px solid #ffffff35;border-radius:10px;min-height:38px;padding:.4em .7em;cursor:pointer;touch-action:manipulation}button:hover{background:#ffffff18}button:focus-visible{outline:3px solid var(--accent);outline-offset:4px;background:#ffffff20}main{display:grid;grid-template-columns:36% 60%;gap:4%;min-height:76vh;align-items:center}.settings{padding:1.5vh 1vw;display:flex;flex-direction:column;gap:1.8vh;background:#00000030;border-radius:20px;box-shadow:0 18px 30px #00000050}.stats{display:flex;justify-content:space-around;gap:12px;margin-bottom:1vh}.diamond{position:relative;width:13vw;height:12vw;max-width:198px;max-height:180px;clip-path:polygon(50% 0,100% 50%,50% 100%,0 50%);background:var(--accent);padding:1px;transform:scale(calc(1 - var(--p,0)*.012))}.diamond>div{width:100%;height:100%;clip-path:inherit;background:#15171eeb;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px}.diamond strong{font-size:clamp(23px,2.6vw,52px);font-variant-numeric:tabular-nums}.diamond span{font-size:.72em;letter-spacing:.13em}.pair{display:grid;grid-template-columns:1fr 1fr;gap:16px}.pair>div{text-align:center}.pair>div+div{border-left:1px solid #ffffff30;padding-left:16px}.pair h2{font-size:1.75em;font-weight:900;margin:0 0 .15em}.caption{font-size:.68em;display:block;white-space:nowrap;margin-bottom:8px}.stepper{display:flex;align-items:center;justify-content:space-between;gap:8px}.stepper output{min-width:2em;text-align:center;font-weight:800;white-space:nowrap}.pair output{font-size:1.65em;flex:1;min-width:1em}.stepper button{font-size:1.1em;padding:.25em .45em;line-height:1;min-width:32px}.setting{display:flex;justify-content:space-between;align-items:center;gap:10px}.setting>span{font-size:.74em;letter-spacing:.04em}.setting>button{min-width:45%}.meter{font-size:1.55em}.accent{display:flex;align-items:center;gap:9px;background:none;border:0;text-align:left;padding:4px 0;font-size:.86em}.check{display:grid;place-items:center;width:20px;height:20px;border:1px solid #ffffff55;border-radius:4px;background:#ee201660;font-size:13px}.accent[aria-pressed=false] .check{color:transparent;background:#ffffff10}.performance{display:flex;flex-direction:column;align-items:center;gap:1.8vh}#status{font-size:1em;letter-spacing:.12em;color:var(--accent);height:1.5em;font-weight:800}.dial{position:relative;width:min(48vw,55vh);height:min(48vw,55vh);border-radius:50%;background:#00000020}.ring{position:absolute;inset:0;border-radius:50%;border:min(10.5vw,12.1vh) solid var(--accent);opacity:calc(.35 + var(--pulse)*.17);box-shadow:0 15px 25px #00000050;transform:scale(calc(1 - var(--pulse)*.008));pointer-events:none}.center{position:absolute;inset:23%;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:.7vh;text-shadow:0 3px 8px #000}.center #start{border:0;background:none;font-size:clamp(42px,6vw,110px);padding:0;width:75%;line-height:1.1;min-height:0}.center strong{font-size:clamp(36px,4.4vw,90px);font-weight:900;font-variant-numeric:tabular-nums}.center>span{font-size:.85em;letter-spacing:.2em}.dial-adjust{position:absolute;top:50%;transform:translateY(-50%);height:18%;width:18%;font-size:clamp(28px,3.6vw,70px);font-weight:900;padding:0;border:0;border-radius:50%;background:none}.minus{left:2%}.plus{right:2%}.beats{display:flex;justify-content:center;gap:18px;height:22px;align-items:center}.beat{width:20px;height:20px;background:#ffffff30;border-radius:50%}.beat.active{background:var(--accent)}.tempo-row{display:flex;align-items:center;gap:16px}.tempo-row button{font-size:.85em}.tempo-row #tap{font-size:1.1em;font-weight:800;letter-spacing:.12em;padding:.4em 1.5em}footer{height:7vh;min-height:54px;display:flex;align-items:center;justify-content:space-between;gap:15px;border-radius:12px;background:#00000060;padding:8px 16px;font-size:.75em}footer .keys{font-size:.85em;opacity:.7}#skin{min-width:230px}#clock{font-size:1.7em;font-weight:800;white-space:nowrap;font-variant-numeric:tabular-nums}#message{height:2em;max-width:95%;margin-top:6px;font-size:.68em;opacity:.65;overflow:hidden}.hands{position:fixed;inset:0;pointer-events:none;z-index:1;overflow:hidden}.hands img{position:absolute;width:33vw;max-width:430px;top:44%;right:-5%;opacity:0;will-change:transform;transform:translateX(130%)}.hands #leftHand{left:-5%;right:auto;transform:translateX(-130%) scaleX(-1)}[hidden]{display:none!important}.modal{position:fixed;inset:0;background:#000b;z-index:10;display:grid;place-items:center;padding:20px}.about-card{max-width:500px;padding:28px;background:#1b1e26;border:1px solid #ffffff40;border-radius:22px;text-align:center;font-size:16px}.about-card img{width:100px;height:100px}.about-card button{margin-top:10px}button:disabled{opacity:.4}@media(max-aspect-ratio:1/1){.app{padding:18px}main{grid-template-columns:1fr;gap:28px}.settings{padding:20px}.diamond{width:35vw;height:32vw}.performance{padding:10px 0 28px}.dial{width:78vw;height:78vw}.ring{border-width:17.1vw}.center #start{font-size:18vw}.center strong{font-size:12vw}.brand img{width:55px;height:55px}.brand strong{font-size:18px}.hands img{width:60vw}footer{height:auto;flex-wrap:wrap;padding:14px}footer .keys{display:none}#skin{min-width:190px}#clock{font-size:22px}.caption{font-size:12px}.settings{max-width:600px;width:100%;margin:auto}.setting>span{font-size:14px}.stepper button{min-height:40px;min-width:40px}.setting .meter{font-size:24px}}
/* Mobile 2.5: one screen for playing, separate settings sheet. */
.mobile-only,.mobile-settings-header,.mobile-summary{display:none}.settings-panel{display:flex;flex-direction:column;gap:1.8vh}
@media(max-width:900px),(max-height:520px){
 html,body{height:100%;overflow:hidden;overscroll-behavior:none}
 .app{height:100vh;height:100dvh;min-height:0;padding:calc(8px + env(safe-area-inset-top)) max(12px,env(safe-area-inset-right)) calc(6px + env(safe-area-inset-bottom)) max(12px,env(safe-area-inset-left));display:grid;grid-template-rows:42px 52px minmax(0,1fr)44px 24px;gap:6px;font-size:15px}
 header{height:auto;grid-row:1;gap:8px}.brand{gap:8px}.brand img{width:35px;height:35px}.brand strong{font-size:15px;letter-spacing:.03em}#fullscreen{display:none}.mobile-only{display:block}#openSettings{min-height:40px;padding:6px 10px;font-size:13px}
 main,.settings{display:contents}.stats{grid-row:2;display:flex;margin:0;gap:10px;justify-content:center;align-items:center;height:52px}.diamond{width:46%;max-width:210px;height:48px;max-height:48px;clip-path:none;padding:1px;border-radius:10px;background:#ffffff45}.diamond>div{clip-path:none;border-radius:9px;flex-direction:row;gap:9px;background:#11151de8}.diamond strong{font-size:23px}.diamond span{font-size:10px;letter-spacing:.07em}
 .settings-panel{display:none}.settings-open .app:before{content:'';position:fixed;inset:0;background:#000a;z-index:4}
 .settings-open .settings-panel{position:fixed;z-index:5;inset:auto 0 0;display:flex;gap:15px;background:#161a23;border:1px solid #ffffff30;border-radius:22px 22px 0 0;padding:18px 20px calc(20px + env(safe-area-inset-bottom));max-height:88vh;max-height:88dvh;overflow-y:auto;box-shadow:0 -15px 50px #0009}
 .mobile-settings-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px}.mobile-settings-header strong{font-size:20px}.mobile-settings-header button{font-size:14px;min-height:42px}.settings-panel .caption{font-size:12px}.settings-panel .pair h2{font-size:24px}.settings-panel .setting>span{font-size:13px}.settings-panel .accent{font-size:14px}.settings-panel .stepper button{min-width:42px;min-height:42px}.settings-panel .meter{font-size:25px}.settings-panel .setting>button{font-size:15px;min-height:44px}
 .performance{grid-row:3;min-height:0;padding:0;display:flex;flex-direction:column;justify-content:center;gap:7px}.mobile-summary{display:block;text-align:center;font-size:12px;opacity:.8;height:16px}#status{font-size:13px;height:18px;flex-shrink:0}
 .dial{--diameter:min(75vw,calc(100dvh - 335px));width:var(--diameter);height:var(--diameter);min-height:0;flex-shrink:0}.ring{border-width:calc(var(--diameter)*.22)}.center #start{font-size:calc(var(--diameter)*.17);width:80%;min-height:44px}.center strong{font-size:calc(var(--diameter)*.14)}.center>span{font-size:12px}.center{gap:3px}.dial-adjust{font-size:calc(var(--diameter)*.085);min-height:0}.beats{height:20px;gap:14px;flex-shrink:0}.beat{width:15px;height:15px}.tempo-row{gap:10px;flex-shrink:0}.tempo-row button{font-size:13px;min-width:64px;min-height:40px}.tempo-row #tap{font-size:16px;min-width:85px;padding:6px 18px}
 footer{grid-row:4;flex-wrap:nowrap;min-height:0;height:44px;padding:3px 8px;gap:8px;font-size:12px}footer .keys{display:none}#skin{min-width:0;max-width:68%;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px;padding:7px 5px;min-height:36px}#about{font-size:10px;padding:5px;min-height:36px}#clock{font-size:16px;flex-shrink:0}
 #message{grid-row:5;margin:0;max-width:none;height:24px;font-size:10px;line-height:12px;overflow:hidden;text-align:center;align-self:center;opacity:.8}.hands img{width:55vw;top:40%}.about-card{max-height:90dvh;overflow:auto;padding:20px;font-size:13px}.about-card img{width:64px;height:64px}
}
@media(max-height:520px) and (min-aspect-ratio:1/1){
 .app{grid-template-columns:36% minmax(0,1fr);grid-template-rows:36px minmax(0,1fr)40px 20px;gap:4px 14px;padding:6px 16px}
 header{grid-column:1/-1;grid-row:1}.brand img{height:30px;width:30px}.stats{grid-column:1;grid-row:2;flex-direction:column;align-self:center;gap:12px;height:auto}.diamond{width:100%;height:58px;max-height:58px;max-width:220px}.diamond strong{font-size:25px}.performance{grid-column:2;grid-row:2;gap:3px}.dial{--diameter:min(31vw,calc(100dvh - 215px))}.mobile-summary{height:13px;font-size:10px}#status{height:16px;font-size:11px}.tempo-row button{min-height:32px;font-size:11px}.tempo-row #tap{font-size:13px;min-height:32px}.beat{width:11px;height:11px}.beats{height:13px}footer{grid-column:1/-1;grid-row:3;height:40px}#message{grid-column:1/-1;grid-row:4;height:20px}
}

@media(min-width:901px) and (min-height:521px){.app{padding-bottom:2vh}}

/* Compound meters: readable groups of three, including narrow phones. */
.beats.compound{gap:7px}.beats.compound .group-start{margin-left:13px}.beats.compound .beat{flex-shrink:0}
@media(max-width:900px),(max-height:520px){.beats.compound{gap:5px}.beats.compound .beat{width:13px;height:13px}.beats.compound .group-start{margin-left:9px}}
@media(max-height:520px) and (min-aspect-ratio:1/1){.beats.compound{gap:4px}.beats.compound .beat{width:10px;height:10px}.beats.compound .group-start{margin-left:7px}}

/* No focus frame on first load; retain rounded focus for keyboard/remote users. */
.center #start{appearance:none;-webkit-appearance:none;border-radius:50%;-webkit-tap-highlight-color:transparent}
.center #start:focus-visible{background:transparent;outline:3px solid var(--accent);outline-offset:5px}

/* 2.11: deterministic numerals and a font-independent fullscreen control. */
@font-face{font-family:LMMetronomeCounter;src:url('assets/counter-bold.woff') format('woff');font-weight:700;font-style:normal;font-display:swap}
.diamond strong{font-family:LMMetronomeCounter,monospace;font-weight:700;line-height:1.1;white-space:nowrap;letter-spacing:-.04em;max-width:64%;font-size:clamp(18px,1.9vw,34px);flex-shrink:0}
.diamond>div{gap:5px}.diamond span{line-height:1.2}
#fullscreen{display:inline-flex;align-items:center;justify-content:center;min-width:44px;min-height:44px;padding:9px;line-height:1}
#fullscreen svg{display:block;width:24px;height:24px;flex-shrink:0}
@media(max-width:900px),(max-height:520px){.diamond strong{font-size:23px;max-width:62%}#fullscreen{display:none}}
/* 2.12: phone landscape, including the space occupied by Safari toolbars. */
@media(max-height:520px) and (min-aspect-ratio:6/5){
 html,body{height:100%;overflow:hidden}
 .app{height:var(--lm-visible-height,100vh);height:var(--lm-visible-height,100dvh);padding:5px max(12px,env(safe-area-inset-right)) 4px max(12px,env(safe-area-inset-left));grid-template-columns:minmax(125px,24%) minmax(0,1fr);grid-template-rows:32px minmax(0,1fr)34px 14px;gap:4px 16px}
 header{grid-row:1;grid-column:1/-1;height:32px;min-height:0}.brand img{width:28px;height:28px}.brand strong{display:none!important}.lm-metronome-tools{max-width:none;font-size:11px}#openSettings{min-height:30px;font-size:12px;padding:4px 9px}
 .stats{grid-row:2;grid-column:1;align-self:center;flex-direction:column;justify-content:center;gap:10px;height:auto;min-height:0;margin:0}
 .diamond{width:100%;height:48px;max-height:48px;max-width:200px}.diamond strong{font-size:22px}.diamond span{font-size:10px}
 .performance{grid-row:2;grid-column:2;display:grid;grid-template-columns:minmax(0,1fr)92px;grid-template-rows:17px minmax(0,1fr)12px;gap:3px 10px;justify-items:center;align-items:center;min-height:0;padding:0}
 #status{grid-column:1;grid-row:1;font-size:11px;line-height:15px;height:17px;margin:0}
 .dial{grid-column:1;grid-row:2;--diameter:min(35vw,calc(var(--lm-visible-height,100vh) - 135px));width:var(--diameter);height:var(--diameter);min-width:0;min-height:0}
 .ring{border-width:calc(var(--diameter)*.22)}.center{gap:1px}.center #start{font-size:calc(var(--diameter)*.20);min-height:0;line-height:1}.center strong{font-size:calc(var(--diameter)*.17);line-height:1.1}.center>span{font-size:9px;line-height:1}.dial-adjust{font-size:calc(var(--diameter)*.12)}
 .mobile-summary{display:none}.beats{grid-column:1;grid-row:3;height:12px;gap:9px}.beat{width:9px;height:9px}.beats.compound{gap:3px}.beats.compound .beat{width:7px;height:7px}.beats.compound .group-start{margin-left:5px}
 .tempo-row{grid-column:2;grid-row:1/4;display:flex;flex-direction:column;gap:7px;align-self:center;width:92px}.tempo-row button,.tempo-row #tap{width:92px;min-width:0;min-height:32px;font-size:12px;padding:5px 6px}.tempo-row #tap{font-size:15px}
 footer{grid-row:3;grid-column:1/-1;height:34px;min-height:0;gap:9px;padding:2px 8px;flex-wrap:nowrap}footer .lm-metronome-footer-link,footer .keys{display:none}#skin{max-width:none;min-width:0;flex:1;min-height:28px;padding:3px 6px;font-size:11px}#about{min-height:28px;font-size:10px;padding:3px 7px}#clock{font-size:14px}
 #message{grid-row:4;grid-column:1/-1;font-size:9px;line-height:12px;height:14px;white-space:nowrap;text-overflow:ellipsis}
 .settings-open .settings-panel{max-height:calc(var(--lm-visible-height,100vh) - 12px);padding:10px 18px;gap:10px}.mobile-settings-header{margin:0}.about-card{max-height:calc(var(--lm-visible-height,100vh) - 16px)}
}
@media(max-height:520px) and (min-aspect-ratio:6/5){header .lm-metronome-tools{max-width:none!important;font-size:10px!important;white-space:nowrap}}
