/* Minuteur visuel */
.vt { display: flex; flex-direction: column; align-items: center; gap: clamp(8px, 1.6vh, 16px); text-align: center; width: 100%; }
.vt-show { display: flex; flex-direction: column; align-items: center; gap: clamp(4px, 1vh, 10px); }
.vt-disc { --vt-size: calc(clamp(220px, min(44vh, 34vw), 400px) * var(--cs, 1)); width: var(--vt-size); height: var(--vt-size); border-radius: 50%; touch-action: none; cursor: grab; -webkit-tap-highlight-color: transparent; outline: none; }
.vt-disc:focus-visible { box-shadow: 0 0 0 3px var(--white); }
.vt-disc:active { cursor: grabbing; }
.vt[data-state="run"] .vt-disc { cursor: default; }
.vt-disc svg { display: block; width: 100%; height: 100%; overflow: visible; }
.vt-face { fill: var(--frame); }
.vt-well { fill: color-mix(in srgb, var(--white) 8%, transparent); }
.vt-sector { fill: var(--white); }
.vt-hub { fill: var(--white); }
.vt-ticks line { stroke: var(--white); stroke-width: .5; stroke-linecap: round; opacity: .7; }
.vt-ticks line.vt-big { stroke-width: 1; opacity: 1; }
.vt-nums text { fill: var(--white); font-family: var(--f-display); font-size: 6.2px; text-anchor: middle; dominant-baseline: central; }
.vt-scale { display: none; }
.vt[data-dial="5"] .vt-scale[data-vt-scale="5"], .vt[data-dial="20"] .vt-scale[data-vt-scale="20"], .vt[data-dial="60"] .vt-scale[data-vt-scale="60"] { display: inline; }
.vt-time { margin: 0; font-family: var(--f-display); font-size: calc(clamp(34px, 5.2vh, 52px) * var(--cs, 1)); line-height: 1; font-variant-numeric: tabular-nums; }
/* Chiffres masqués : la place reste (le disque ne bouge pas), le temps glisse sous le disque. */
.vt-time { overflow: hidden; }
.vt-time > span { display: inline-block; transition: transform .45s var(--ease); }
.vt.vt-nodig .vt-time > span { transform: translateY(-110%); }
.vt-sentence { font-size: clamp(20px, 1.9vw, 26px); line-height: 1.5; text-wrap: balance; }
.vt-sentence .vt-dur { width: 3.6em; }
.vt[data-state="run"] .vt-sentence .iw { pointer-events: none; opacity: .5; }
.vt-actions { margin-top: 0; flex-wrap: nowrap; }
.vt-actions .btn-wide { white-space: nowrap; }
.vt-bar .chip-btn { padding: 0 18px; }
/* Fin : le moyeu bat doucement (un léger agrandissement, pas un fondu). */
.hero.vt-done .vt-hub { transform-origin: 50px 50px; animation: vtBeat 1s var(--ease) 3; }
@keyframes vtBeat { 50% { transform: scale(2.2); } }
@media (max-width: 720px) {
  .vt-disc { --vt-size: calc(clamp(200px, min(74vw, 38vh), 330px) * var(--cs, 1)); }
  .vt-sentence { font-size: 19px; }
  .vt-sentence .vt-dur { width: 3.3em; }
  .vt-actions .btn-wide { flex: 1 1 0; padding: 0 12px; }
}
@media (max-width: 520px) { .vt-bar .chip-btn { padding: 0 16px; } .vt-bar .vt-sep, .vt-bar .vt-digits-btn { display: none; } }
.vt-time { cursor: pointer; -webkit-tap-highlight-color: transparent; }
@media (max-width: 720px) and (max-height: 760px) {
  .vt-disc { --vt-size: calc(clamp(180px, min(70vw, 33vh), 300px) * var(--cs, 1)); }
  .vt, .vt-show { gap: 6px; }
}
/* Plein écran : le disque prend la hauteur libre ; la phrase s'efface. */
.hero.is-fs .vt-sentence { display: none; }
.hero.is-fs .vt-show.zoomable > * { zoom: 1; }
.hero.is-fs .vt-disc { --vt-size: calc(clamp(240px, 62vh, 760px) * var(--cs, 1)); }
.hero.is-fs .vt-time { font-size: calc(clamp(34px, 6vh, 64px) * var(--cs, 1)); }
@media (prefers-reduced-motion: reduce) { .hero.vt-done .vt-hub { animation: none; } }
