@import "https://fonts.googleapis.com/css2?family=Manrope:wght@400;500;600;700;800&family=Space+Grotesk:wght@500;700&display=swap";:root{--color-bg:#f6f4ed;--color-bg-accent:#efe7d8;--color-surface:#fffcf7d6;--color-hero:#e7f5ef;--color-border-soft:#171f2614;--color-border-strong:#171f2624;--color-text:#10161d;--color-text-soft:#596371;--color-primary:#0ca778;--color-primary-strong:#0b624c;--color-success:#0a8d66;--color-warning-strong:#c4642a;--shadow-card:0 18px 40px #10161d14;--shadow-xl:0 24px 72px #10161d24;--font-body:"Manrope", "Segoe UI", sans-serif;--font-heading:"Space Grotesk", "Aptos", sans-serif;font-family:var(--font-body);color:var(--color-text);background:radial-gradient(circle at top, #ffb74d29, transparent 28%), linear-gradient(180deg, var(--color-bg-accent), var(--color-bg));font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:500;line-height:1.5}*{box-sizing:border-box}html{scroll-behavior:smooth}body{min-width:320px;min-height:100vh;margin:0}body:before{content:"";pointer-events:none;background-image:linear-gradient(#10161d05 1px,#0000 1px),linear-gradient(90deg,#10161d05 1px,#0000 1px);background-size:32px 32px;position:fixed;inset:0;-webkit-mask-image:linear-gradient(#00000073,#0000 82%);mask-image:linear-gradient(#00000073,#0000 82%)}button,input,textarea,select{font:inherit}button{appearance:none}img,svg,video{max-width:100%;display:block}a{color:inherit}h1,h2,h3,h4,h5,h6{font-family:var(--font-heading);letter-spacing:-.04em;color:var(--color-text)}p{margin:0}#root,.app-shell{min-height:100svh}.boot-screen,.auth-layout,.dashboard{width:min(100%,30rem);margin:0 auto}.boot-screen{text-align:left;align-content:center;gap:1rem;min-height:100svh;padding:2rem 1.5rem;display:grid}.boot-screen__badge,.auth-card__badge,.eyebrow{width:fit-content;color:var(--color-primary-strong);letter-spacing:.08em;text-transform:uppercase;background:#0b624c1f;border:1px solid #0b624c2e;border-radius:999px;align-items:center;gap:.5rem;padding:.45rem .8rem;font-size:.76rem;font-weight:700;display:inline-flex}.boot-screen__title,.auth-card__title,.dashboard__title{margin:0}.boot-screen__text,.auth-card__text,.dashboard__subtitle,.panel__subtitle,.scanner-modal__text,.empty-state p,.toast__description,.result-card__meta,.stats-highlight__meta{color:var(--color-text-soft)}.auth-layout{align-content:center;min-height:100svh;padding:1.25rem;display:grid;position:relative}.auth-layout__backdrop{pointer-events:none;background:radial-gradient(circle at 0 0,#0ca77842,#0000 34%),radial-gradient(circle at 100% 100%,#ffb74d38,#0000 28%);position:absolute;inset:0}.auth-card{z-index:1;box-shadow:var(--shadow-xl);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:#ffffffe0;border:1px solid #ffffffa6;border-radius:1.8rem;gap:1rem;padding:1.5rem;display:grid;position:relative}.auth-form,.stats-grid,.dashboard,.result-card,.empty-state{gap:1rem;display:grid}.dashboard{padding:1.5rem 1.25rem 7rem}.dashboard__header{justify-content:space-between;align-items:flex-start;gap:1rem;display:flex}.dashboard__title{margin-top:.9rem;font-size:clamp(2rem,7vw,2.8rem);line-height:.98}.dashboard-loading{background:var(--color-surface);border:1px solid var(--color-border-soft);border-radius:1.4rem;justify-items:center;gap:.9rem;padding:1.4rem;display:grid}.panel{background:var(--color-surface);border:1px solid var(--color-border-soft);box-shadow:var(--shadow-card);border-radius:1.5rem;gap:1rem;padding:1.2rem;display:grid}.panel__header{justify-content:space-between;align-items:flex-start;gap:1rem;display:flex}.panel__title{margin:0;font-size:1.05rem}.panel__subtitle{margin:.3rem 0 0;font-size:.92rem}.panel__aside{background:var(--color-hero);min-width:2.8rem;height:2.8rem;color:var(--color-primary-strong);border-radius:.95rem;justify-content:center;align-items:center;padding:0 .8rem;font-weight:800;display:inline-flex}.stats-highlight{gap:.4rem;display:grid}.stats-highlight__value{font-family:var(--font-heading);color:var(--color-text);font-size:clamp(1.8rem,7vw,2.7rem);line-height:.95}.delta-pill{background:var(--color-hero);border-radius:999px;width:fit-content;padding:.65rem .85rem;font-size:.92rem;font-weight:700;display:inline-flex}.stats-summary{gap:.75rem;display:grid}.stats-summary__item{border-top:1px solid var(--color-border-soft);justify-content:space-between;align-items:baseline;gap:1rem;padding-top:.75rem;display:flex}.stats-summary__label{color:var(--color-text-soft);font-size:.88rem}.stats-summary__value{text-align:right;color:var(--color-text);font-size:.95rem}.is-positive{color:var(--color-success)}.is-negative{color:var(--color-warning-strong)}.chart-card{height:14rem}.chart-card__svg{width:100%;height:100%;overflow:visible}.chart-card__grid{stroke:#1c21291a;stroke-dasharray:4 6}.chart-card__axis,.chart-card__label{fill:var(--color-text-soft);font-size:.72rem;font-family:var(--font-body)}.chart-card__area{fill:url(#hoursChartGradient)}.chart-card__line{fill:none;stroke:var(--color-primary);stroke-width:3px;stroke-linecap:round;stroke-linejoin:round}.chart-card__dot{fill:var(--color-primary);stroke:#fff;stroke-width:2px}.inline-alert{border:1px solid #0000;border-radius:1rem;padding:.9rem 1rem;font-size:.94rem}.inline-alert--error{color:#8e2b25;background:#e0574c1f;border-color:#e0574c2e}.inline-alert--info{color:var(--color-primary-strong);background:#0b624c17;border-color:#0b624c24}.button{min-height:3.25rem;font:inherit;cursor:pointer;border:0;border-radius:1rem;justify-content:center;align-items:center;gap:.65rem;padding:.9rem 1.15rem;font-weight:700;transition:transform .18s,box-shadow .18s,background-color .18s,color .18s;display:inline-flex}.button:hover{transform:translateY(-1px)}.button:disabled{opacity:.72;cursor:wait;transform:none}.button--block{width:100%}.button--primary{background:linear-gradient(135deg, var(--color-primary), #169f7f);color:#fff;box-shadow:0 18px 36px #0ca7783d}.button--secondary{color:var(--color-text);background:#0d111714}.button--ghost{border:1px solid var(--color-border-strong);min-height:2.9rem;color:var(--color-text);background:0 0;padding-inline:1rem}.button__spinner,.spinner{border:2px solid #ffffff59;border-top-color:currentColor;border-radius:999px;width:1rem;height:1rem;animation:.8s linear infinite spin}.spinner{border-color:#0ca7782e;border-top-color:var(--color-primary);width:1.25rem;height:1.25rem}.text-field{gap:.45rem;display:grid}.text-field__label{font-size:.92rem;font-weight:600}.text-field__input{box-sizing:border-box;border:1px solid var(--color-border-strong);width:100%;min-height:3.25rem;font:inherit;color:var(--color-text);background:#fcfbf7d1;border-radius:1rem;padding:.9rem 1rem}.text-field__input:focus{border-color:var(--color-primary);outline:2px solid #0ca7782e}.scan-fab-wrap{inset-inline:0;bottom:max(1.2rem, env(safe-area-inset-bottom));pointer-events:none;z-index:30;justify-content:center;display:flex;position:fixed}.scan-fab{pointer-events:auto;border-radius:999px;place-items:center;gap:.3rem;width:5.25rem;height:5.25rem;padding:0;display:grid;box-shadow:0 24px 48px #0ca7784d}.scan-fab__icon{width:1.65rem;height:1.65rem;position:relative}.scan-fab__icon span{border:2px solid #fff;width:.45rem;height:.45rem;position:absolute}.scan-fab__icon span:first-child{border-bottom:0;border-right:0;top:0;left:0}.scan-fab__icon span:nth-child(2){border-bottom:0;border-left:0;top:0;right:0}.scan-fab__icon span:nth-child(3){border-top:0;border-right:0;bottom:0;left:0}.scan-fab__icon span:nth-child(4){border-top:0;border-left:0;bottom:0;right:0}.scan-fab__label{letter-spacing:.08em;text-transform:uppercase;font-size:.72rem}.scanner-modal{z-index:40;color:#fff;background:radial-gradient(circle at top,#0ca77829,#0000 30%),#060a10fa;grid-template-rows:auto 1fr auto;display:grid;position:fixed;inset:0}.scanner-modal__topbar,.scanner-modal__footer{padding:1rem 1rem max(1rem, env(safe-area-inset-bottom))}.scanner-modal__topbar{justify-content:space-between;align-items:center;display:flex}.icon-button{color:#fff;min-height:2.75rem;font:inherit;cursor:pointer;background:#ffffff14;border:1px solid #ffffff29;border-radius:999px;padding:.75rem 1rem}.icon-button--active{background:#ffb74d2e;border-color:#ffb74d42}.scanner-modal__placeholder{width:5.4rem}.scanner-modal__viewport{padding:0 1rem;position:relative}.scanner-modal__reader{background:#ffffff0f;border-radius:1.75rem;width:100%;height:100%;min-height:58svh;overflow:hidden}.scanner-modal__reader video{object-fit:cover;border-radius:1.75rem;width:100%!important;height:100%!important}.scanner-modal__reader>div{border:0!important}.scanner-modal__reader section{display:none!important}.scanner-modal__frame{aspect-ratio:1;border:2px solid #ffffffd6;border-radius:1.6rem;max-width:min(100vw - 4.8rem,22rem);position:absolute;inset:50% 2.4rem auto;transform:translateY(-50%);box-shadow:0 0 0 999px #05080c47,inset 0 0 0 1px #ffffff38}.scanner-modal__footer{gap:.9rem;display:grid}.scanner-modal__title{font-family:var(--font-heading);margin:0;font-size:1.25rem}.result-card__title,.empty-state strong,.toast__title{font-size:1.02rem}.result-badge{border-radius:999px;width:fit-content;padding:.45rem .75rem;font-size:.8rem;font-weight:700;display:inline-flex}.result-badge--success{color:var(--color-success);background:#0ca7781f}.result-badge--neutral{color:#1a6aa8;background:#1a6aa81f}.empty-state{padding:.3rem 0}.toast{left:50%;bottom:calc(7rem + env(safe-area-inset-bottom));width:min(100vw - 2rem,25rem);box-shadow:var(--shadow-xl);z-index:50;border:1px solid #0000;border-radius:1.2rem;padding:1rem;animation:.18s toast-in;position:fixed;transform:translate(-50%)}.toast--success{background:#f4fffb;border-color:#0ca77833}.toast--error{background:#fff7f5;border-color:#e0574c2e}.toast__description{margin:.35rem 0 .9rem}.toast__close{color:var(--color-text-soft);font:inherit;cursor:pointer;background:0 0;border:0;padding:0;font-weight:700}@media (width>=768px){.dashboard{width:min(100%,70rem);padding:2rem 2rem 8rem}.stats-grid{grid-template-columns:repeat(3,minmax(0,1fr));align-items:stretch}.auth-layout,.boot-screen{width:min(100%,72rem)}.auth-card{max-width:29rem;padding:2rem}.panel{padding:1.4rem}.scanner-modal__footer{width:min(100%,30rem);margin:0 auto}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,12px)}to{opacity:1;transform:translate(-50%)}}
