:root{color:#17211d;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#eef3ef;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}html{min-height:100%}body{min-width:320px;min-height:100svh;margin:0}button{cursor:pointer}#root{min-height:100svh}.app{gap:16px;width:min(100%,980px);margin:0 auto;padding:20px;display:grid}.app-header{text-align:left;justify-content:space-between;align-items:end;gap:16px;display:flex}.eyebrow{color:#4f6f64;text-transform:uppercase;margin:0 0 4px;font-size:.8rem;font-weight:700}.app-header h1{color:#17211d;margin:0;font-size:2rem;line-height:1.15}.disclaimer{color:#66736e;max-width:360px;margin:0;font-size:.88rem;line-height:1.6}.camera-shell{aspect-ratio:4/3;background:#0d1412;border:1px solid #d7dfda;border-radius:8px;width:100%;position:relative;overflow:hidden}.camera-video,.pose-canvas{object-fit:contain;width:100%;height:100%;position:absolute;inset:0}.camera-video{transform:scaleX(-1)}.pose-canvas{pointer-events:none;transform:scaleX(-1)}.camera-overlay{z-index:2;pointer-events:none;text-align:center;background:linear-gradient(#0d141214,#0d141247);place-content:center;gap:8px;padding:20px;display:grid;position:absolute;inset:0}.overlay-main{color:#fff;text-shadow:0 4px 24px #0000008c;margin:0;font-size:100px;font-weight:900;line-height:1}.overlay-sub{color:#ffffffeb;text-shadow:0 2px 12px #0000008c;margin:0;font-size:1.2rem;font-weight:800}.overlay-good .overlay-main{color:#7df0bd}.overlay-bad .overlay-main{color:#ff8a78}.overlay-complete .overlay-main,.overlay-countdown .overlay-main{color:#fff}.status-panel{text-align:left;background:#f7faf8;border:1px solid #d7dfda;border-radius:8px;grid-template-columns:1.1fr 1fr auto auto;align-items:center;gap:12px;padding:14px;display:grid}.label{color:#68756f;margin:0 0 4px;font-size:.76rem;font-weight:700}.status,.timer{color:#17211d;margin:0;font-weight:800}.status{font-size:1.08rem}.status-good{color:#147a54}.status-complete{color:#1264a3}.status-hips-low,.status-hips-high,.status-neck-low{color:#b73b2f}.timer{font-variant-numeric:tabular-nums;font-size:1.45rem}.metrics{color:#66736e;gap:2px;font-size:.76rem;display:grid}.metrics strong{color:#17211d;font-size:1.1rem}.error{color:#9d352b;grid-column:1/-1;margin:0;font-size:.86rem}.test-mode-toggle{color:#42504a;white-space:nowrap;align-items:center;gap:8px;font-size:.9rem;font-weight:800;display:inline-flex}.test-mode-toggle input{accent-color:#1d6f55;width:18px;height:18px}.test-mode-toggle input:disabled{cursor:not-allowed;opacity:.55}.primary-button{color:#fff;min-width:96px;min-height:44px;font:inherit;background:#1d6f55;border:0;border-radius:8px;font-weight:800}.primary-button:focus-visible{outline-offset:3px;outline:3px solid #1d6f554d}.streak-panel{background:#fff;border:1px solid #d7dfda;border-radius:8px;gap:14px;padding:14px;display:grid}.streak-summary{justify-content:space-between;align-items:end;gap:12px;display:flex}.streak-count{color:#17211d;margin:0;font-weight:900;line-height:1}.streak-count span{font-variant-numeric:tabular-nums;font-size:2.4rem}.streak-hint{color:#66736e;margin:0;font-size:.9rem;font-weight:800}.stamp-grid{grid-template-columns:repeat(10,minmax(0,1fr));gap:8px;display:grid}.stamp{aspect-ratio:1;color:#84918b;background:#f2f5f3;border:1px solid #d7dfda;border-radius:999px;place-items:center;font-size:.78rem;font-weight:800;display:grid}.stamp-completed{color:#fff;background:#1d6f55;border-color:#1d6f55;box-shadow:inset 0 0 0 3px #ffffff38}.stamp-today{outline-offset:2px;outline:3px solid #1d6f5538}@media (width<=720px){.app{gap:12px;padding:12px}.app-header{gap:8px;display:grid}.app-header h1{font-size:1.55rem}.disclaimer{max-width:none}.camera-shell{aspect-ratio:3/4}.overlay-main{font-size:82px}.status-panel{grid-template-columns:1fr 1fr}.metrics{grid-column:auto}.primary-button{grid-column:1/-1;width:100%}.test-mode-toggle{grid-column:1/-1}.streak-summary{align-items:start}.stamp-grid{grid-template-columns:repeat(6,minmax(0,1fr))}}
