@import "https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;600;700;800&display=swap";.app-container{background-color:var(--bg-primary);min-height:100vh;color:var(--text-primary);flex-direction:column;align-items:center;gap:1.5rem;padding:1rem;display:flex}.header{text-align:center;flex-shrink:0;margin-bottom:.5rem}h1{letter-spacing:-.02em;margin-bottom:.2rem;font-size:clamp(1.5rem,4vw,2.5rem);font-weight:800}.subtitle{color:var(--text-secondary);max-width:400px;font-size:.85rem}.camera-section{flex-direction:column;gap:1.5rem;width:100%;max-width:800px;display:flex}.camera-view-module{flex-direction:column;width:100%;display:flex}.camera-wrapper{background-color:#000;border:1px solid #ffffff0d;border-radius:20px;justify-content:center;align-items:center;width:100%;max-width:100%;height:60vh;min-height:200px;max-height:600px;margin:0 auto;display:flex;position:relative;overflow:hidden;box-shadow:0 10px 30px -5px #00000080}.camera-container{justify-content:center;align-items:center;width:100%;height:100%;display:flex;position:relative;overflow:hidden}.camera-wrapper.is-landscape{aspect-ratio:4/3;width:100%;height:auto;max-height:80vh}.camera-wrapper.is-portrait{aspect-ratio:3/4;width:auto;max-width:100%;max-height:70vh}.camera-video,.camera-canvas{object-fit:contain;width:100%;height:100%;position:absolute;top:0;left:0}.camera-canvas{background:0 0}.camera-video{background:#000}.camera-container.needs-rotation .camera-video,.camera-container.needs-rotation .camera-canvas{width:auto;height:100%}.permission-request-overlay{z-index:1001;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);background:#0f172ae6;justify-content:center;align-items:center;width:100%;height:100%;display:flex;position:absolute;top:0;left:0}.permission-card{text-align:center;background:#1e293bb3;border:1px solid #ffffff1a;border-radius:24px;flex-direction:column;align-items:center;gap:1.25rem;width:90%;max-width:320px;padding:2.5rem 2rem;display:flex}.permission-card h2{color:#fff;margin:0;font-size:1.25rem;font-weight:700}.permission-card p{color:var(--text-secondary);margin:0;font-size:.9rem;line-height:1.5}.permission-btn{background:var(--accent-primary);color:#fff;letter-spacing:.02em;border-radius:14px;width:100%;padding:1rem;font-size:.95rem;font-weight:700;box-shadow:0 4px 15px #6366f14d}.permission-btn.primary{background:linear-gradient(135deg, var(--accent-primary) 0%, var(--accent-secondary) 100%);text-transform:uppercase;letter-spacing:.1em;padding:1.25rem;font-size:1.1rem}.permission-btn:hover{filter:brightness(1.1);transform:translateY(-2px);box-shadow:0 8px 20px #6366f166}.retry-btn{color:#fff;background:#ffffff1a;border:1px solid #fff3;border-radius:8px;margin-top:1rem;padding:.5rem 1rem;font-size:.8rem;font-weight:600}.loading-message{color:var(--accent-primary);text-transform:uppercase;letter-spacing:.1em;z-index:100;font-size:.9rem;font-weight:600;animation:2s infinite pulse;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.error-message{color:#ef4444;text-align:center;z-index:1002;background:#ef44441a;flex-direction:column;justify-content:center;align-items:center;width:100%;height:100%;padding:2rem;font-weight:600;display:flex;position:absolute;top:0;left:0}.hud-top{align-items:center;gap:1rem;display:flex}.rep-counter{background:#6366f11a;border:1px solid #6366f133;border-radius:12px;align-items:center;gap:.5rem;padding:.5rem 1rem;display:flex}.rep-label{color:var(--accent-primary);text-transform:uppercase;letter-spacing:.05em;font-size:.65rem;font-weight:700}.rep-value{color:#fff;font-size:2rem;font-weight:800;line-height:1}.fps-badge{color:var(--success);background:#0f172a99;border:1px solid #10b98133;border-radius:100px;padding:6px 12px;font-size:.7rem;font-weight:600}.feedback-inline{flex:1;align-items:center;display:flex}.feedback-message-compact{text-align:center;border-radius:12px;width:100%;padding:.75rem 1rem;font-size:.85rem;font-weight:700;line-height:1.2}.status-badge{letter-spacing:.02em;border-radius:100px;align-items:center;gap:.5rem;padding:8px 16px;font-size:.8rem;font-weight:500;display:inline-flex}.pulse{animation:2s cubic-bezier(.4,0,.6,1) infinite pulse}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.result-overlay{text-align:center;background:#0f172ae6;justify-content:center;align-items:center;padding:2rem;display:flex}.result-card{flex-direction:column;gap:1rem;width:100%;max-width:320px;padding:3rem 2rem;display:flex}.result-title{color:var(--success);font-size:1.5rem;font-weight:700}.result-stat{flex-direction:column;display:flex}.stat-value{font-size:5rem;font-weight:800;line-height:1}.stat-label{color:var(--text-secondary);font-weight:600}.btn-primary{background:linear-gradient(135deg, var(--accent-primary) 0%, var(--accent-secondary) 100%);color:#fff;margin-top:1rem;font-weight:700}.btn-primary:hover{filter:brightness(1.1);transform:translateY(-2px);box-shadow:0 10px 15px -3px #6366f14d}.camera-toolbar{z-index:5;justify-content:center;gap:.5rem;width:100%;margin-top:.25rem;padding:.25rem;display:flex}.camera-btn{color:var(--text-primary);letter-spacing:.05em;cursor:pointer;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);text-align:center;background:#ffffff0d;border:1px solid #ffffff1a;border-radius:8px;flex:1;max-width:120px;padding:.4rem .8rem;font-size:.7rem;font-weight:600;transition:all .2s}.camera-btn:hover{border-color:var(--accent-primary);background:#ffffff1a}.camera-btn.active{background:var(--accent-primary);color:#fff;border-color:var(--accent-primary);box-shadow:0 0 15px #6366f14d}.footer-info{color:var(--text-secondary);text-align:center;opacity:.7;margin-top:auto;font-size:.8rem}.exercise-select{color:#fff;cursor:pointer;appearance:none;background:#0f172acc url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='white' viewBox='0 0 16 16'%3E%3Cpath d='M7.247 11.14 2.451 5.658C1.885 5.013 2.345 4 3.204 4h9.592a1 1 0 0 1 .753 1.659l-4.796 5.48a1 1 0 0 1-1.506 0z'/%3E%3C/svg%3E") right 1rem center no-repeat;border:1px solid #ffffff1a;border-radius:12px;flex:1;min-width:140px;padding:.75rem 2.5rem .75rem 1rem;font-family:inherit;font-size:.9rem;font-weight:600;transition:all .2s}.exercise-select:focus{border-color:var(--accent-primary);outline:none;box-shadow:0 0 0 2px #6366f133}.exercise-select option{background:var(--bg-dark);color:#fff}.text-success{color:var(--success)}.text-warning{color:var(--warning)}.text-danger{color:var(--danger)}.exercise-controls{z-index:5;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#0f172a66;border-radius:20px;flex-direction:column;gap:1rem;padding:1rem;display:flex}.exercise-tips h4{color:var(--accent-secondary);text-transform:uppercase;letter-spacing:.05em;margin-bottom:.3rem;font-size:.8rem}.exercise-tips ul{flex-direction:column;gap:.2rem;padding:0;list-style:none;display:flex}.exercise-tips li{color:var(--text-secondary);align-items:center;gap:.4rem;font-size:.8rem;display:flex}.exercise-tips li:before{content:"•";color:var(--accent-primary)}.orientation-selector{background:#ffffff0d;border-radius:16px;flex-direction:column;gap:.75rem;padding:1rem;display:flex}.selector-label{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em;font-size:.75rem;font-weight:700}.orientation-options{flex-wrap:wrap;gap:.5rem;display:flex}.option-btn{min-width:80px;color:var(--text-secondary);cursor:pointer;background:#ffffff08;border:1px solid #ffffff1a;border-radius:8px;flex:1;padding:8px;font-size:.75rem;font-weight:600;transition:all .2s}.option-btn:hover{background:#ffffff14;border-color:#fff3}.option-btn.active{background:var(--accent-secondary);color:#fff;border-color:var(--accent-secondary);box-shadow:0 4px 10px #f43f5e4d}.start-btn{letter-spacing:.1em;width:100%;padding:.8rem;font-size:.9rem}.session-controls{z-index:102;border-radius:20px;width:100%;margin-top:-.5rem;padding:.5rem}.session-toolbar{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.session-toggle-btn{letter-spacing:.05em;cursor:pointer;text-transform:uppercase;border:none;border-radius:12px;min-width:140px;padding:.75rem 1.5rem;font-size:.9rem;font-weight:800;transition:all .2s}.session-toggle-btn.start{background:var(--accent-primary);color:#fff;box-shadow:0 4px 15px #6366f166}.session-toggle-btn.stop{color:#ef4444;background:#ef44441a;border:1px solid #ef44444d}.session-toggle-btn.stop:hover{background:#ef444433;border-color:#ef4444}.hud-content{flex-direction:column;flex:1;gap:.5rem;width:100%;display:flex}.status-container,.result-container{width:100%}.result-card-compact{border-radius:12px;align-items:center;gap:1rem;padding:.5rem 1rem;display:flex}.result-title-compact{color:var(--success);font-size:.8rem;font-weight:700}.stat-value-compact{font-size:1.5rem;font-weight:800}.stat-label-compact{color:var(--text-secondary);font-size:.7rem}.btn-primary-compact{background:var(--success);color:#fff;border:none;border-radius:8px;padding:.4rem .8rem;font-size:.75rem;font-weight:600}.system-info-compact{opacity:.3;font-family:monospace;font-size:9px;position:absolute;bottom:.5rem;right:1.5rem}.history-section{border-radius:20px;width:100%;max-width:800px;margin-top:1rem;padding:1.5rem}.history-section h3{margin-bottom:.5rem;font-size:1rem}.history-list{flex-direction:column;gap:.5rem;min-height:0;display:flex;overflow-y:auto}.history-item{background:#ffffff08;border:1px solid #ffffff0d;border-radius:12px;flex-direction:column;gap:0;padding:0;transition:all .3s cubic-bezier(.4,0,.2,1);display:flex;overflow:hidden}.history-item.expandable{cursor:pointer}.history-item.expandable:hover{background:#ffffff0f;border-color:#6366f14d}.history-item.expanded{border-color:var(--accent-primary);background:#0f172a99;box-shadow:0 4px 20px #0006}.history-item-main{align-items:center;gap:1rem;width:100%;padding:.75rem 1rem;display:flex}.item-index{color:var(--accent-primary);min-width:24px;font-size:.8rem;font-weight:700}.item-name{flex:1;font-size:.95rem;font-weight:600}.item-reps{color:var(--success);text-align:right;flex-direction:column;align-items:flex-end;font-weight:700;display:flex}.item-summary-small{color:var(--text-secondary);margin-top:2px;font-size:.7rem;font-weight:500}.item-right{align-items:center;gap:.75rem;margin-left:.5rem;display:flex}.item-date{color:var(--text-secondary);white-space:nowrap;font-size:.75rem}.expand-icon{color:var(--text-secondary);opacity:.5;font-size:.6rem;transition:transform .3s}.expand-icon.rotated{color:var(--accent-primary);opacity:1;transform:rotate(180deg)}.history-item-details{background:#0003;border-top:1px solid #ffffff0d;padding:.75rem 1rem 1rem;animation:.3s ease-out slideDown}@keyframes slideDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.details-header{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid #ffffff1a;grid-template-columns:40px 1fr 1fr;margin-bottom:.5rem;padding-bottom:.5rem;font-size:.65rem;font-weight:700;display:grid}.detail-row{border-bottom:1px solid #ffffff08;grid-template-columns:40px 1fr 1fr;padding:.4rem 0;font-size:.85rem;display:grid}.detail-row:last-child{border-bottom:none}.detail-index{color:var(--text-secondary);font-size:.75rem}.detail-height{color:#fff;font-weight:600}.detail-time{color:var(--accent-primary);font-weight:500}.no-history{text-align:center;color:var(--text-secondary);padding:1rem}.active-session{border:2px solid var(--accent-primary);animation:2s infinite border-pulse}@keyframes border-pulse{0%{border-color:#6366f14d}50%{border-color:#6366f1}to{border-color:#6366f14d}}.exercise-select-m3{--md-outlined-select-text-field-container-background-color:#0f172acc;--md-outlined-select-text-field-outline-color:#ffffff1a;--md-outlined-select-text-field-hover-outline-color:var(--accent-primary);--md-outlined-select-text-field-focus-outline-color:var(--accent-primary);--md-outlined-select-text-field-input-text-color:#fff;--md-outlined-select-text-field-input-text-font:"Outfit", sans-serif;--md-outlined-select-text-field-input-text-weight:600;--md-outlined-select-text-field-container-shape:12px;--md-sys-color-primary:var(--accent-primary);flex:1;min-width:180px}.session-toggle-m3{--md-filled-button-container-color:var(--accent-primary);--md-filled-button-label-text-color:#fff;--md-filled-button-label-text-font:"Outfit", sans-serif;--md-filled-button-label-text-weight:800;--md-filled-button-label-text-size:.9rem;min-width:160px;font-family:Outfit,sans-serif}.session-toggle-m3.stop{--md-outlined-button-outline-color:#ef44444d;--md-outlined-button-label-text-color:#ef4444;--md-outlined-button-label-text-font:"Outfit", sans-serif;--md-outlined-button-label-text-weight:800;--md-outlined-button-label-text-size:.9rem}.session-toggle-m3.stop:hover{--md-outlined-button-outline-color:#ef4444;background-color:#ef44440d}.option-btn-m3{--md-outlined-button-label-text-font:"Outfit", sans-serif;--md-outlined-button-label-text-weight:600;--md-outlined-button-label-text-size:.75rem;--md-filled-button-label-text-font:"Outfit", sans-serif;--md-filled-button-label-text-weight:600;--md-filled-button-label-text-size:.75rem;--md-filled-button-container-color:var(--accent-secondary);flex:1;min-width:90px}.history-header{align-items:center;gap:.5rem;margin-bottom:.75rem;display:flex}.history-title-icon{color:var(--accent-primary);font-size:20px}.history-list-m3{background:0 0;flex-direction:column;gap:.5rem;padding:0;display:flex}.history-item-wrapper{background:#ffffff05;border:1px solid #ffffff0d;border-radius:12px;margin-bottom:.5rem;transition:all .3s cubic-bezier(.4,0,.2,1);overflow:hidden}.history-item-wrapper.expandable{cursor:pointer}.history-item-wrapper:hover{background:#ffffff0a}.history-item-wrapper.expanded{border-color:var(--accent-primary);background:#0f172a80;box-shadow:0 4px 20px #0000004d}.history-item-wrapper md-list-item{--md-list-item-container-color:transparent;--md-list-item-hover-state-layer-color:#ffffff0d;--md-list-item-focus-state-layer-color:#ffffff0d;--md-list-item-pressed-state-layer-color:#ffffff1a;--md-list-item-label-text-font:"Outfit", sans-serif;--md-list-item-label-text-weight:600;--md-list-item-supporting-text-font:"Outfit", sans-serif;--md-list-item-supporting-text-color:var(--text-secondary)}.item-index{color:var(--accent-primary);margin-right:12px;font-size:.8rem;font-weight:700}.item-name{color:#fff;font-size:.95rem;font-weight:600}.item-supporting-text{align-items:center;gap:8px;margin-top:2px;display:flex}.item-date{color:var(--text-secondary);font-size:.75rem}.item-summary-small{color:var(--accent-secondary);font-size:.7rem;font-weight:500}.item-right{align-items:center;gap:12px;display:flex}.item-reps{color:var(--success);font-size:.95rem;font-weight:700}.expand-icon-m3{color:var(--text-secondary);font-size:20px;transition:transform .3s}.expand-icon-m3.rotated{color:var(--accent-primary);transform:rotate(180deg)}.btn-primary-compact-m3{--md-filled-button-container-color:var(--success);--md-filled-button-label-text-font:"Outfit", sans-serif;--md-filled-button-label-text-weight:700;--md-filled-button-label-text-size:.75rem;--md-filled-button-container-shape:12px}.retry-btn-m3{--md-outlined-button-label-text-color:#fff;--md-outlined-button-outline-color:#fff3;margin-top:1rem}md-filled-button,md-outlined-button,md-elevated-button,md-filled-icon-button,md-outlined-icon-button,md-icon-button{--md-filled-button-label-text-font:"Outfit", sans-serif;--md-outlined-button-label-text-font:"Outfit", sans-serif;--md-elevated-button-label-text-font:"Outfit", sans-serif;--md-filled-button-label-text-weight:700;--md-outlined-button-label-text-weight:700;--md-elevated-button-label-text-weight:700;font-family:Outfit,sans-serif}@media (width<=480px){.session-toolbar{flex-direction:column;align-items:stretch;gap:.75rem;width:100%}.exercise-select-m3,.session-toggle-m3{flex:auto;width:100%;min-width:100%}.result-card-compact{text-align:center;flex-direction:column;align-items:stretch;gap:.75rem}.result-stat-compact{justify-content:center;margin-bottom:.25rem}.btn-primary-compact-m3{width:100%}}@media (width<=400px){.option-btn-m3{flex:45%;min-width:80px}}:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg-dark:#0f172a;--bg-card:#1e293b80;--accent-primary:#6366f1;--accent-secondary:#818cf8;--text-primary:#f8fafc;--text-secondary:#94a3b8;--success:#10b981;--warning:#f59e0b;--danger:#ef4444;--md-sys-color-primary:var(--accent-primary);--md-sys-color-on-primary:#fff;--md-sys-color-primary-container:#6366f126;--md-sys-color-on-primary-container:var(--accent-secondary);--md-sys-color-secondary:var(--accent-secondary);--md-sys-color-on-secondary:#fff;--md-sys-color-surface:#1e293b;--md-sys-color-on-surface:var(--text-primary);--md-sys-color-surface-container:#1e293b;--md-sys-color-surface-container-high:#334155;--md-sys-color-surface-variant:#1e293bcc;--md-sys-color-on-surface-variant:var(--text-secondary);--md-sys-color-background:var(--bg-dark);--md-sys-color-on-background:var(--text-primary);--md-sys-color-outline:#ffffff1f;--md-sys-color-outline-variant:#ffffff0f;--md-sys-color-error:var(--danger);--md-sys-color-on-error:#fff;--md-sys-typescale-body-large-font:"Outfit", Inter, sans-serif;--md-sys-typescale-label-large-font:"Outfit", Inter, sans-serif;--md-sys-shape-corner-extra-large:20px;--md-sys-shape-corner-medium:12px;--md-sys-shape-corner-full:9999px;--md-outlined-select-text-field-container-shape:12px;--md-outlined-select-menu-container-shape:12px;--md-filled-button-container-shape:12px;--md-outlined-button-container-shape:12px;--md-filled-icon-button-container-shape:50%;--md-circular-progress-active-indicator-color:var(--accent-primary);color:var(--text-primary);background-color:var(--bg-dark);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Outfit,Inter,system-ui,Avenir,Helvetica,Arial,sans-serif;font-weight:400;line-height:1.5}*{box-sizing:border-box;margin:0;padding:0}body{background:radial-gradient(circle at 50% -20%, #1e293b 0%, var(--bg-dark) 80%);min-height:100vh;margin:0;overflow-x:hidden}#root{width:100%;min-height:100vh}.glass{background:var(--bg-card);-webkit-backdrop-filter:blur(16px)saturate(120%);border:1px solid #ffffff14;border-radius:20px}.glass-dark{-webkit-backdrop-filter:blur(12px);background:#0f172acc;border:1px solid #ffffff0d}.gradient-text{background:linear-gradient(135deg, var(--accent-primary) 0%, var(--accent-secondary) 100%);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text}.soft-shadow{box-shadow:0 20px 25px -5px #0003,0 10px 10px -5px #0000001a}button{cursor:pointer;border:none;border-radius:12px;padding:12px 24px;font-family:inherit;font-weight:600;transition:all .2s cubic-bezier(.4,0,.2,1)}button:active{transform:scale(.96)}
