:root{font-family:Avenir Next,Avenir,Segoe UI,sans-serif;color:#f2f4ef;background:#101719;font-synthesis:none;--muted: #a0aeab;--accent: #d5f67a;--line: #34413f}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button,select,summary{cursor:pointer}button,input,select{min-height:48px}button:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible,a:focus-visible{outline:3px solid var(--accent);outline-offset:5px}button:disabled{opacity:.4;cursor:default}[hidden]{display:none!important}.app{max-width:1160px;padding:0 40px;margin:auto}.masthead{height:100px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:9px;color:inherit;text-decoration:none;font-size:35px;font-weight:800;letter-spacing:-2px}.brand svg{width:38px;fill:none;stroke:var(--accent);stroke-width:3.2;stroke-linecap:round}.brand-dot,.accent{color:var(--accent)}.family{font-size:10px;font-weight:600;letter-spacing:1.5px;color:#c0cbc6}.family span{padding:0 9px;color:var(--muted)}.intro{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:45px 0 34px}.eyebrow{font-size:10px;letter-spacing:1.7px;font-weight:700;color:var(--muted)}.intro .eyebrow{color:var(--accent);margin:0 0 12px}h1{margin:0;font-size:clamp(32px,4.5vw,52px);font-weight:600;line-height:1.08;letter-spacing:-2px}.intro>p{font-size:14px;line-height:1.8;color:var(--muted)}.practice{display:grid;grid-template-columns:.9fr 1.1fr;border:1px solid var(--line);border-radius:20px;overflow:hidden}.counter-panel{padding:28px;background:#192321;display:flex;flex-direction:column}.panel-top{display:flex;align-items:center;justify-content:space-between;gap:10px}.state-pill{font-size:11px;padding:6px 10px;border:1px solid #48584f;border-radius:20px;color:#c5d2ca}.count-block{text-align:center;padding:19px 0 23px}#count{display:block;font-size:clamp(85px,11vw,140px);letter-spacing:-7px;font-weight:600;line-height:1.2;font-variant-numeric:tabular-nums}.count-label{color:var(--accent);font-size:11px;font-weight:600;letter-spacing:4px}.progress-label{display:flex;justify-content:space-between;font-size:12px;color:#bdc9c3;margin-bottom:9px}.progress-label span:last-child{color:var(--accent)}progress{width:100%;height:5px;border:none;border-radius:5px;overflow:hidden;background:#37473d;accent-color:var(--accent)}progress::-webkit-progress-bar{background:#37473d}progress::-webkit-progress-value{background:var(--accent);border-radius:5px}progress::-moz-progress-bar{background:var(--accent)}.metrics{display:grid;grid-template-columns:1fr 1fr;margin-top:28px;gap:20px}.metrics>div{display:flex;flex-direction:column;gap:7px}.metrics>div+div{border-left:1px solid var(--line);padding-left:24px}#elapsed{font-size:29px;line-height:48px;font-variant-numeric:tabular-nums;letter-spacing:-1px}input{width:100%;min-width:0;color:inherit;background:#222e28;border:1px solid #5a6a59;border-radius:8px;padding:2px 10px;font-size:27px;font-variant-numeric:tabular-nums}input:disabled{background:transparent;border-color:transparent;padding-left:0;opacity:1}.quiet{color:var(--muted);font-size:11px;margin:12px 0 21px}.controls{display:grid;grid-template-columns:1.7fr 1fr 1fr;gap:8px;margin-top:auto}button{color:#e0e7dd;background:transparent;border:1px solid #687563;border-radius:9px;padding:12px;font-size:13px;font-weight:600;transition:background .15s}button:not(:disabled):hover{background:#354638}button.primary{display:flex;justify-content:space-between;align-items:center;color:#17220e;border-color:var(--accent);background:var(--accent)}button.primary:not(:disabled):hover{background:#e7ffa9}.result{padding:16px 0 0;color:var(--accent);line-height:1.6;font-size:14px}.camera-panel{padding:20px;background:#141d1f;border-left:1px solid var(--line)}.camera-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;gap:8px}.camera-top .eyebrow{display:flex;align-items:center;gap:7px;letter-spacing:1px}.camera-dot{width:6px;height:6px;border-radius:100%;background:#899790}.camera-dot.active{background:var(--accent);box-shadow:0 0 8px #d5f64455}select{border:1px solid var(--line);border-radius:7px;background:#192325;color:#cbd5cf;padding:0 9px;font-size:11px}.viewfinder{position:relative;height:330px;overflow:hidden;border-radius:11px;background:#0c1214;border:1px solid #283637}video,canvas{width:100%;height:100%;object-fit:contain;position:absolute;inset:0}.mirrored{transform:scaleX(-1)}.camera-empty{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;flex-direction:column;text-align:center;background:radial-gradient(ellipse at center,#1e2a28,#10191b)}.camera-empty svg{width:150px;height:150px;margin-bottom:10px;stroke:#8b9c8d;fill:none;stroke-width:2;stroke-linecap:round}.camera-empty .frame{stroke:#495e50}.camera-empty .rope{stroke:#d5f67a;opacity:.8}.camera-empty strong{font-size:15px;font-weight:500}.camera-empty>span{margin-top:10px;font-size:12px;line-height:1.65;color:var(--muted)}.tracking{position:absolute;bottom:12px;left:12px;background:#101719e8;padding:7px 10px;border:1px solid #4b5b51;color:#cbd5cf;border-radius:30px;font-size:10px}.tracking.visible{color:var(--accent);border-color:#6a8049}.countdown{position:absolute;inset:0;background:#0c1214ba;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--accent)}.countdown strong{font-size:130px;line-height:1.2;font-weight:600}.countdown span{font-size:12px;letter-spacing:2px}.countdown span:last-child{letter-spacing:0;color:#eff5e7}.status{font-size:13px;line-height:1.65;color:#d1dcd4;min-height:43px;margin:14px 0 8px}.status.error{color:#ffc2a2}.privacy{font-size:10px;color:var(--muted);margin:0;line-height:1.6}.privacy span{color:var(--accent);margin-right:5px}.history-section{padding:35px 0 0}.section-heading{display:flex;justify-content:space-between;align-items:center;gap:12px}h2{font-size:21px;font-weight:500;letter-spacing:-.5px;margin:0}.section-heading .eyebrow{font-size:9px}.history-empty{padding:24px 0;color:var(--muted);font-size:13px;border-bottom:1px solid var(--line);margin:0}.history-list{list-style:none;margin:16px 0 0;padding:0}.history-list li{display:flex;align-items:center;gap:16px;border-bottom:1px solid var(--line);padding:14px 0}.history-check{display:grid;place-items:center;width:36px;height:36px;border-radius:50%;background:#293925;color:var(--accent)}.history-list strong{font-size:14px;font-weight:500}.history-list time{display:block;font-size:11px;margin-top:4px;color:var(--muted)}.history-duration{margin-left:auto;font-size:22px;font-variant-numeric:tabular-nums}.storage-warning{color:#ffc2a2;font-size:12px}.tips{color:var(--muted);margin:26px 0 40px;max-width:700px;font-size:12px;line-height:1.8}.tips summary{color:#d0dbd3;min-height:44px;padding:10px 0;font-size:13px}footer{padding:22px 0 max(24px,env(safe-area-inset-bottom));border-top:1px solid var(--line);display:flex;justify-content:space-between;gap:10px;color:var(--muted);font-size:10px}footer span:last-child{font-size:9px;letter-spacing:1.5px}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}@media(max-width:740px){.app{padding:0 20px}.masthead{height:66px}.family{font-size:8px;letter-spacing:1px;max-width:150px;text-align:right;line-height:1.8}.family span{padding:0 4px}.intro{padding:20px 0}.intro>p{display:none}.intro .eyebrow{font-size:9px}.practice{grid-template-columns:1fr}.camera-panel{order:-1;padding:14px;border-left:none;border-bottom:1px solid var(--line)}.camera-top{margin-bottom:9px}.viewfinder{height:190px}.tracking{top:12px;bottom:auto}.camera-empty svg{width:85px;height:85px;margin:0 0 4px}.camera-empty>span{margin-top:7px}.status{margin:10px 0 6px;min-height:0;font-size:12px}.privacy{font-size:9px}.counter-panel{padding:21px}.count-block{padding:2px 0 14px}#count{font-size:88px;letter-spacing:-4px}.count-label{font-size:9px}.metrics{margin-top:20px}.quiet{margin-bottom:16px}.section-heading{align-items:start}.section-heading .eyebrow{max-width:90px;text-align:right;line-height:1.6}h2{font-size:19px}.history-section{padding-top:30px}}@media(max-width:360px){.app{padding:0 12px}.counter-panel{padding:16px}.controls{gap:5px}#elapsed{font-size:25px}}@media(prefers-reduced-motion:reduce){*{transition:none!important}}
