@import url("https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Outfit:wght@500;600;700;800&display=swap");:root{--color-bg:#fafafa;--color-surface:#ffffff;--color-surface-hover:#f5f5f5;--color-card:#ffffff;--color-dark:#0a0a0a;--color-dark-secondary:#1a1a1a;--color-text:#0a0a0a;--color-text-secondary:#525252;--color-text-muted:#a3a3a3;--color-text-inverse:#ffffff;--color-border:#e5e5e5;--color-border-light:#f0f0f0;--color-border-focus:#0a0a0a;--color-primary:#f97316;--color-primary-rgb:249,115,22;--color-primary-hover:#ea580c;--color-primary-light:#fff7ed;--color-primary-subtle:#fdba74;--color-success:#22c55e;--color-success-hover:#16a34a;--color-success-light:#f0fdf4;--color-success-subtle:#86efac;--color-danger:#ef4444;--color-danger-hover:#dc2626;--color-danger-light:#fef2f2;--color-danger-subtle:#fca5a5;--color-info:#3b82f6;--color-info-light:#eff6ff;--color-warning:#f59e0b;--color-warning-light:#fffbeb;--font-body:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;--font-heading:"Outfit","Inter",sans-serif;--text-xs:0.75rem;--text-sm:0.875rem;--text-base:1rem;--text-lg:1.125rem;--text-xl:1.25rem;--text-2xl:1.5rem;--text-3xl:1.875rem;--text-4xl:2.25rem;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--space-10:40px;--space-12:48px;--space-16:64px;--radius-sm:6px;--radius-md:10px;--radius-lg:14px;--radius-xl:20px;--radius-2xl:28px;--radius-full:9999px;--shadow-xs:0 1px 2px rgba(0,0,0,0.04);--shadow-sm:0 1px 3px rgba(0,0,0,0.06),0 1px 2px rgba(0,0,0,0.04);--shadow-md:0 4px 6px -1px rgba(0,0,0,0.07),0 2px 4px -2px rgba(0,0,0,0.05);--shadow-lg:0 10px 15px -3px rgba(0,0,0,0.08),0 4px 6px -4px rgba(0,0,0,0.04);--shadow-xl:0 20px 25px -5px rgba(0,0,0,0.08),0 8px 10px -6px rgba(0,0,0,0.04);--transition-fast:150ms cubic-bezier(0.4,0,0.2,1);--transition-base:200ms cubic-bezier(0.4,0,0.2,1);--transition-slow:300ms cubic-bezier(0.4,0,0.2,1);--transition-spring:500ms cubic-bezier(0.34,1.56,0.64,1);--navbar-height:72px;--sidebar-width:260px;--max-width:480px;--max-width-lg:1200px}*,:after,:before{margin:0;padding:0;box-sizing:border-box}html{font-size:16px;-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{font-family:var(--font-body);color:var(--color-text);background:var(--color-bg);line-height:1.6;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;min-height:100dvh}img,svg{display:block;max-width:100%}a{color:inherit;text-decoration:none}button{font-family:inherit;cursor:pointer;border:none;background:none}input,select,textarea{font-family:inherit;font-size:inherit}ol,ul{list-style:none}h1,h2,h3,h4{font-family:var(--font-heading);font-weight:700;line-height:1.2;color:var(--color-text)}h1{font-size:var(--text-3xl)}h2{font-size:var(--text-2xl)}h3{font-size:var(--text-xl)}h4{font-size:var(--text-lg)}.text-sm{font-size:var(--text-sm)}.text-xs{font-size:var(--text-xs)}.text-muted{color:var(--color-text-muted)}.text-secondary{color:var(--color-text-secondary)}.text-center{text-align:center}.text-right{text-align:right}.font-semibold{font-weight:600}.font-bold{font-weight:700}.container{max-width:var(--max-width)}.container,.container-lg{width:100%;margin:0 auto;padding:0 var(--space-4)}.container-lg{max-width:var(--max-width-lg)}.page{min-height:100dvh;padding-bottom:calc(var(--navbar-height) + var(--space-6))}.page-admin{min-height:100dvh;padding-bottom:var(--space-6)}.flex{display:flex}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-end{justify-content:flex-end}.gap-1{gap:var(--space-1)}.gap-2{gap:var(--space-2)}.gap-3{gap:var(--space-3)}.gap-4{gap:var(--space-4)}.gap-6{gap:var(--space-6)}.gap-8{gap:var(--space-8)}.flex-1{flex:1 1}.w-full{width:100%}.grid{display:grid}.grid-2{grid-template-columns:repeat(2,1fr)}.grid-3{grid-template-columns:repeat(3,1fr)}.grid-4{grid-template-columns:repeat(4,1fr)}.mt-1{margin-top:var(--space-1)}.mt-2{margin-top:var(--space-2)}.mt-3{margin-top:var(--space-3)}.mt-4{margin-top:var(--space-4)}.mt-6{margin-top:var(--space-6)}.mt-8{margin-top:var(--space-8)}.mb-2{margin-bottom:var(--space-2)}.mb-3{margin-bottom:var(--space-3)}.mb-4{margin-bottom:var(--space-4)}.mb-6{margin-bottom:var(--space-6)}.mb-8{margin-bottom:var(--space-8)}.p-3{padding:var(--space-3)}.p-4{padding:var(--space-4)}.p-6{padding:var(--space-6)}.p-8{padding:var(--space-8)}.card{background:var(--color-card);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-5);box-shadow:var(--shadow-xs);transition:box-shadow var(--transition-base),border-color var(--transition-base)}.card:hover{box-shadow:var(--shadow-sm)}.card-dark{background:var(--color-dark);border-color:#262626;color:var(--color-text-inverse)}.card-flat{background:var(--color-surface-hover);border:none;box-shadow:none}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);padding:12px 24px;border-radius:var(--radius-md);font-weight:600;font-size:var(--text-base);line-height:1;transition:all var(--transition-fast);white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;user-select:none}.btn:after{background:rgba(255,255,255,0);transition:background var(--transition-fast)}.btn:active:after{background:rgba(0,0,0,.1)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--color-dark);color:var(--color-text-inverse)}.btn-primary:hover:not(:disabled){background:var(--color-dark-secondary);transform:translateY(-1px);box-shadow:var(--shadow-md)}.btn-accent{background:var(--color-primary);color:var(--color-text-inverse)}.btn-accent:hover:not(:disabled){background:var(--color-primary-hover);transform:translateY(-1px);box-shadow:var(--shadow-md)}.btn-success{background:var(--color-success);color:var(--color-text-inverse)}.btn-success:hover:not(:disabled){background:var(--color-success-hover);transform:translateY(-1px);box-shadow:var(--shadow-md)}.btn-danger{background:var(--color-danger);color:var(--color-text-inverse)}.btn-danger:hover:not(:disabled){background:var(--color-danger-hover);transform:translateY(-1px);box-shadow:var(--shadow-md)}.btn-outline{background:transparent;border:1.5px solid var(--color-border);color:var(--color-text)}.btn-outline:hover:not(:disabled){border-color:var(--color-dark);background:var(--color-surface-hover)}.btn-ghost{background:transparent;color:var(--color-text-secondary)}.btn-ghost:hover:not(:disabled){background:var(--color-surface-hover);color:var(--color-text)}.btn-sm{padding:8px 16px;font-size:var(--text-sm);border-radius:var(--radius-sm)}.btn-lg{padding:16px 32px;font-size:var(--text-lg);border-radius:var(--radius-lg)}.btn-xl{padding:20px 40px;font-size:var(--text-xl);border-radius:var(--radius-xl);font-weight:700}.btn-block{width:100%}.btn-icon{padding:10px;border-radius:var(--radius-md)}.form-group{display:flex;flex-direction:column;gap:var(--space-2)}.form-label{font-size:var(--text-sm);font-weight:600;color:var(--color-text)}.form-input{width:100%;padding:12px 16px;border:1.5px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--text-base);color:var(--color-text);background:var(--color-surface);transition:border-color var(--transition-fast),box-shadow var(--transition-fast);outline:none}.form-input:focus{border-color:var(--color-border-focus);box-shadow:0 0 0 3px rgba(10,10,10,.08)}.form-input:disabled{background:var(--color-surface-hover);color:var(--color-text-muted);cursor:not-allowed}.form-input::placeholder{color:var(--color-text-muted)}.form-input-lg{padding:16px 20px;font-size:var(--text-lg);border-radius:var(--radius-lg)}.form-select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='%23525252' viewBox='0 0 16 16'%3E%3Cpath d='M8 11.5l-5-5h10l-5 5z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 16px center;padding-right:44px}.form-checkbox-wrapper{display:flex;align-items:center;gap:var(--space-3);cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.form-checkbox{width:20px;height:20px;accent-color:var(--color-dark);cursor:pointer}.form-error{color:var(--color-danger);display:flex;align-items:center;gap:var(--space-1)}.form-error,.form-hint{font-size:var(--text-sm)}.form-hint{color:var(--color-text-muted)}.otp-wrapper{position:relative;display:flex;justify-content:center}.otp-real-input{position:absolute;inset:0;width:100%;height:100%;opacity:0;font-size:20px;z-index:2;cursor:pointer;-webkit-text-size-adjust:none}.otp-display{gap:var(--space-2);pointer-events:none;z-index:1}.otp-box,.otp-display{display:flex;justify-content:center}.otp-box{width:52px;height:62px;align-items:center;font-size:var(--text-2xl);font-weight:700;font-family:var(--font-heading);border:2px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-text);transition:border-color var(--transition-fast),box-shadow var(--transition-fast),transform var(--transition-fast)}.otp-box-active{border-color:var(--color-dark);box-shadow:0 0 0 3px rgba(10,10,10,.1);transform:scale(1.05)}.otp-box-filled{border-color:var(--color-dark);background:var(--color-surface-hover)}.badge{display:inline-flex;align-items:center;padding:4px 10px;border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:600;line-height:1}.badge-dark{background:var(--color-dark);color:var(--color-text-inverse)}.badge-success{background:var(--color-success-light);color:var(--color-success-hover)}.badge-danger{background:var(--color-danger-light);color:var(--color-danger-hover)}.badge-warning{background:var(--color-warning-light);color:#b45309}.badge-info{background:var(--color-info-light);color:#2563eb}.badge-neutral{background:var(--color-surface-hover);color:var(--color-text-secondary)}.table-wrapper{overflow-x:auto;border:1px solid var(--color-border);border-radius:var(--radius-lg)}.table{width:100%;border-collapse:collapse;font-size:var(--text-sm)}.table th{text-align:left;padding:12px 16px;font-weight:600;color:var(--color-text-secondary);background:var(--color-surface-hover);border-bottom:1px solid var(--color-border);white-space:nowrap}.table td{padding:12px 16px;border-bottom:1px solid var(--color-border-light);vertical-align:middle}.table tr:last-child td{border-bottom:none}.table tr:hover td{background:var(--color-surface-hover)}.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.5);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:flex-end;justify-content:center;z-index:1000;padding:var(--space-4);animation:fadeIn var(--transition-base) ease}.modal-content{background:var(--color-surface);border-radius:var(--radius-xl) var(--radius-xl) 0 0;padding:var(--space-6);width:100%;max-width:var(--max-width);max-height:90dvh;overflow-y:auto;animation:slideUp var(--transition-slow) var(--transition-spring)}.modal-handle{width:40px;height:4px;background:var(--color-border);border-radius:var(--radius-full);margin:0 auto var(--space-5)}.modal-title{font-family:var(--font-heading);font-size:var(--text-xl);font-weight:700;margin-bottom:var(--space-4)}.modal-actions{display:flex;gap:var(--space-3);margin-top:var(--space-6)}.modal-actions .btn{flex:1 1}.modal-content.modal-lg{max-width:900px}@media (min-width:768px){.modal-overlay{align-items:center}.modal-content{border-radius:var(--radius-xl);max-width:500px}.modal-content.modal-lg{max-width:900px}}.toast-container{position:fixed;top:calc(env(safe-area-inset-top, 0px) + var(--space-4));left:50%;transform:translateX(-50%);z-index:9999;display:flex;flex-direction:column;gap:var(--space-2);width:calc(100% - var(--space-8));max-width:420px;pointer-events:none}.toast{display:flex;align-items:center;gap:var(--space-3);padding:14px 18px;border-radius:var(--radius-md);font-size:var(--text-sm);font-weight:500;box-shadow:var(--shadow-lg);animation:slideDown var(--transition-slow) ease;pointer-events:auto}.toast-success{border-left:4px solid var(--color-success)}.toast-error,.toast-success{background:var(--color-dark);color:var(--color-text-inverse)}.toast-error{border-left:4px solid var(--color-danger)}.toast-info{background:var(--color-dark);color:var(--color-text-inverse);border-left:4px solid var(--color-info)}.navbar{position:fixed;bottom:0;left:0;right:0;height:var(--navbar-height);background:var(--color-surface);border-top:1px solid var(--color-border);justify-content:space-around;z-index:100;padding-bottom:env(safe-area-inset-bottom,0);box-shadow:0 -2px 10px rgba(0,0,0,.04)}.navbar,.navbar-item{display:flex;align-items:center}.navbar-item{flex-direction:column;gap:4px;padding:8px 16px;color:var(--color-text-muted);font-size:11px;font-weight:500;transition:color var(--transition-fast);text-decoration:none;position:relative}.navbar-item.active{color:var(--color-dark)}.navbar-item.active:before{content:"";position:absolute;top:0;left:50%;transform:translateX(-50%);width:24px;height:3px;background:var(--color-primary);border-radius:0 0 var(--radius-full) var(--radius-full)}.navbar-icon{width:24px;height:24px}.admin-layout{display:flex;min-height:100dvh}.admin-sidebar{width:var(--sidebar-width);background:var(--color-dark);color:var(--color-text-inverse);padding:var(--space-6) 0;display:flex;flex-direction:column;position:fixed;top:0;left:0;bottom:0;z-index:200;transition:transform var(--transition-slow);overflow-y:auto}.admin-sidebar-logo{padding:0 var(--space-6) var(--space-6);border-bottom:1px solid #262626;margin-bottom:var(--space-4)}.admin-sidebar-logo h2{color:var(--color-text-inverse);font-family:var(--font-heading);font-size:var(--text-xl);font-weight:800}.admin-sidebar-logo span{color:var(--color-primary)}.sidebar-nav{flex:1 1;padding:0 var(--space-3)}.sidebar-link{display:flex;align-items:center;gap:var(--space-3);padding:10px 16px;border-radius:var(--radius-md);color:#a3a3a3;font-size:var(--text-sm);font-weight:500;transition:all var(--transition-fast);margin-bottom:2px;text-decoration:none}.sidebar-link:hover{background:#1a1a1a;color:var(--color-text-inverse)}.sidebar-link.active{background:#262626;color:var(--color-text-inverse)}.sidebar-link .sidebar-icon{width:20px;height:20px;opacity:.7}.sidebar-link.active .sidebar-icon{opacity:1}.sidebar-section-title{font-size:var(--text-xs);font-weight:600;color:#525252;text-transform:uppercase;letter-spacing:.08em;padding:var(--space-4) var(--space-4) var(--space-2)}.admin-main{flex:1 1;min-width:0;margin-left:var(--sidebar-width);padding:var(--space-8);min-height:100dvh}.admin-topbar{display:none;position:fixed;top:0;left:0;right:0;height:56px;background:var(--color-dark);color:var(--color-text-inverse);z-index:150;align-items:center;padding:0 var(--space-4);gap:var(--space-3)}.admin-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:190}@media (max-width:1023px){body,html{max-width:100vw;overflow-x:hidden}.admin-sidebar{transform:translateX(-100%)}.admin-sidebar.open{transform:translateX(0)}.admin-overlay.open{display:block}.admin-topbar{display:flex}.admin-main{margin-left:0;padding:calc(56px + var(--space-4)) var(--space-4) var(--space-4)}.admin-layout,.admin-main{overflow-x:hidden}.admin-main .table{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%}.admin-main .table td,.admin-main .table th{padding:10px 12px}.admin-main .card>.table:only-child{border-radius:inherit}}.timer-display{font-size:var(--text-4xl);font-weight:800;letter-spacing:-.02em;text-align:center;color:var(--color-text);padding:var(--space-4) 0}.timer-btn,.timer-display{font-family:var(--font-heading)}.timer-btn{width:140px;height:140px;border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-2);font-size:var(--text-xl);font-weight:700;color:var(--color-text-inverse);border:none;cursor:pointer;transition:transform var(--transition-fast),box-shadow var(--transition-fast);position:relative}.timer-btn:active{transform:scale(.95)}.timer-btn-start{background:var(--color-success);box-shadow:0 8px 30px rgba(34,197,94,.35)}.timer-btn-start:hover{box-shadow:0 12px 40px rgba(34,197,94,.45);transform:scale(1.03)}.timer-btn-stop{background:var(--color-danger);box-shadow:0 8px 30px rgba(239,68,68,.35);animation:pulse-danger 2s ease-in-out infinite}.timer-btn-stop:hover{box-shadow:0 12px 40px rgba(239,68,68,.45)}.timer-btn-icon{width:36px;height:36px}.calendar{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-4)}.calendar-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-4)}.calendar-title{font-family:var(--font-heading);font-weight:700;font-size:var(--text-lg)}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);grid-gap:2px;gap:2px}.calendar-day-name{text-align:center;font-size:var(--text-xs);font-weight:600;color:var(--color-text-muted);padding:var(--space-2)}.calendar-day{aspect-ratio:1;display:flex;flex-direction:column;align-items:center;justify-content:center;border-radius:var(--radius-md);font-size:var(--text-sm);font-weight:500;cursor:pointer;transition:all var(--transition-fast);position:relative}.calendar-day:hover{background:var(--color-surface-hover)}.calendar-day.today{font-weight:700;border:2px solid var(--color-dark)}.calendar-day.selected{background:var(--color-dark);color:var(--color-text-inverse)}.calendar-day.has-entries:after{content:"";position:absolute;bottom:4px;width:6px;height:6px;border-radius:50%;background:var(--color-primary)}.calendar-day.selected.has-entries:after{background:var(--color-text-inverse)}.calendar-day.other-month{color:var(--color-text-muted);opacity:.5}.stat-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-5)}.stat-value{font-family:var(--font-heading);font-size:var(--text-3xl);font-weight:800;color:var(--color-text);line-height:1}.stat-label{font-size:var(--text-sm);color:var(--color-text-muted);margin-top:var(--space-1)}.entry-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-4);display:flex;align-items:center;gap:var(--space-4);transition:all var(--transition-fast)}.entry-card:hover{border-color:var(--color-dark);box-shadow:var(--shadow-sm)}.entry-time{font-family:var(--font-heading);font-weight:700;font-size:var(--text-lg);color:var(--color-text);white-space:nowrap}.entry-details{flex:1 1;min-width:0}.entry-details-title{font-weight:600;font-size:var(--text-sm);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.entry-details-sub{font-size:var(--text-xs);color:var(--color-text-muted);margin-top:2px}.entry-hours{font-family:var(--font-heading);font-weight:700;font-size:var(--text-lg);color:var(--color-primary);white-space:nowrap}.empty-state{text-align:center;padding:var(--space-12) var(--space-4);color:var(--color-text-muted)}.empty-state-icon{opacity:.5}.empty-state-title{font-family:var(--font-heading);font-weight:700;font-size:var(--text-lg);color:var(--color-text-secondary);margin-bottom:var(--space-2)}.spinner{width:36px;height:36px;border-top-color:var(--color-dark);animation:spin .8s linear infinite}.spinner-sm{width:20px;height:20px}.section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-4);flex-wrap:wrap;gap:var(--space-3)}.section-title{font-family:var(--font-heading);font-weight:700;font-size:var(--text-xl)}.status-dot{display:inline-block;width:8px;height:8px;border-radius:50%}.status-dot-active{background:var(--color-success);box-shadow:0 0 0 3px var(--color-success-light)}.status-dot-inactive{background:var(--color-text-muted)}.status-dot-running{background:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-light);animation:pulse-dot 2s ease-in-out infinite}.status-dot-danger{background:var(--color-danger);box-shadow:0 0 0 3px var(--color-danger-light)}.status-dot-warning{background:var(--color-warning);box-shadow:0 0 0 3px var(--color-warning-light)}.tabs{display:flex;gap:var(--space-1);border-bottom:1px solid var(--color-border);margin-bottom:var(--space-4);overflow-x:auto}.tab{padding:var(--space-3) var(--space-4);font-size:var(--text-sm);font-weight:600;color:var(--color-text-muted);transition:all var(--transition-fast);white-space:nowrap;cursor:pointer;background:none;border:none;border-bottom:2px solid transparent}.tab.active,.tab:hover{color:var(--color-text)}.tab.active{border-bottom-color:var(--color-dark)}@keyframes pulse-dot{0%,to{opacity:1}50%{opacity:.5}}@keyframes fadeSlideUp{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.animate-fade-in{animation:fadeIn var(--transition-slow) ease}.animate-slide-up,.stagger>*{animation:fadeSlideUp var(--transition-slow) ease both}.stagger>:first-child{animation-delay:0s}.stagger>:nth-child(2){animation-delay:50ms}.stagger>:nth-child(3){animation-delay:.1s}.stagger>:nth-child(4){animation-delay:.15s}.stagger>:nth-child(5){animation-delay:.2s}.stagger>:nth-child(6){animation-delay:.25s}@media (min-width:768px){.container{max-width:640px}h1{font-size:var(--text-4xl)}.timer-btn{width:160px;height:160px}.grid-2-md{grid-template-columns:repeat(2,1fr)}.grid-3-md{grid-template-columns:repeat(3,1fr)}}@media (min-width:1024px){.hide-desktop{display:none}.grid-2-lg{grid-template-columns:repeat(2,1fr)}.grid-3-lg{grid-template-columns:repeat(3,1fr)}.grid-4-lg{grid-template-columns:repeat(4,1fr)}}@media (max-width:1023px){.hide-mobile{display:none!important}}@media (max-width:767px){.grid-2,.grid-3,.grid-4{grid-template-columns:1fr}.hide-sm{display:none!important}}::selection{background:var(--color-dark);color:var(--color-text-inverse)}.filter-bar{display:flex;gap:var(--space-3);flex-wrap:wrap;margin-bottom:var(--space-4)}.filter-bar .form-input,.filter-bar .form-select{flex:1 1;min-width:180px}@media (max-width:767px){.filter-bar{flex-direction:column}.filter-bar .form-input,.filter-bar .form-select{min-width:100%}}.accordion-item{border:1px solid var(--color-border);border-radius:var(--radius-lg);overflow:hidden;margin-bottom:var(--space-3)}.accordion-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-4);cursor:pointer;background:var(--color-surface);transition:background var(--transition-fast);width:100%;border:none;text-align:left;font-family:inherit;font-size:var(--text-base);font-weight:600;color:var(--color-text)}.accordion-header:hover{background:var(--color-surface-hover)}.accordion-chevron{transition:transform var(--transition-fast)}.accordion-item.open .accordion-chevron{transform:rotate(180deg)}.accordion-body{padding:0 var(--space-4) var(--space-4)}@keyframes pageEnter{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.page-admin>:not(.section-header):not(.filter-bar):not(.tabs){animation:pageEnter .4s cubic-bezier(.16,1,.3,1) both}.page-admin>.section-header{animation:pageEnter .3s cubic-bezier(.16,1,.3,1) both}.page-admin>.filter-bar{animation:pageEnter .3s cubic-bezier(.16,1,.3,1) .05s both}.page-admin>.tabs{animation:pageEnter .3s cubic-bezier(.16,1,.3,1) .08s both}.stagger>*{opacity:0;animation:pageEnter .4s cubic-bezier(.16,1,.3,1) both}.stagger>:first-child{animation-delay:.05s}.stagger>:nth-child(2){animation-delay:.1s}.stagger>:nth-child(3){animation-delay:.15s}.stagger>:nth-child(4){animation-delay:.2s}.stagger>:nth-child(5){animation-delay:.25s}.stagger>:nth-child(6){animation-delay:.3s}.stagger>:nth-child(7){animation-delay:.35s}.stagger>:nth-child(8){animation-delay:.4s}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.animate-fade-in{animation:fadeIn .3s ease both}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.animate-slide-up{animation:slideUp .4s cubic-bezier(.16,1,.3,1) both}@keyframes slideDown{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}@keyframes scaleIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.animate-scale-in{animation:scaleIn .25s cubic-bezier(.16,1,.3,1) both}@keyframes pulse-danger{0%,to{box-shadow:0 8px 30px rgba(239,68,68,.35)}50%{box-shadow:0 8px 40px rgba(239,68,68,.55)}}@keyframes pulse-success{0%,to{box-shadow:0 0 0 0 rgba(34,197,94,.4)}50%{box-shadow:0 0 0 8px rgba(34,197,94,0)}}@keyframes pulse-primary{0%,to{box-shadow:0 0 0 0 rgba(249,115,22,.4)}50%{box-shadow:0 0 0 8px rgba(249,115,22,0)}}.pulse-success{animation:pulse-success 2s ease-in-out infinite}.pulse-primary{animation:pulse-primary 2s ease-in-out infinite}@keyframes spin{to{transform:rotate(1turn)}}.spinner{width:24px;height:24px;border:3px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;animation:spin .7s linear infinite}.spinner-sm{width:16px;height:16px;border-width:2px}.loading-screen{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100dvh;gap:var(--space-4);background:var(--color-bg)}.loading-screen-text{font-size:var(--text-sm);color:var(--color-text-muted)}.card-hover{transition:transform var(--transition-base),box-shadow var(--transition-base)}.card-hover:hover{transform:translateY(-2px);box-shadow:var(--shadow-md)}@keyframes countUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.stat-value{animation:countUp .5s cubic-bezier(.16,1,.3,1) both}.table tbody tr{animation:fadeIn .3s ease both}.table tbody tr:first-child{animation-delay:.02s}.table tbody tr:nth-child(2){animation-delay:.04s}.table tbody tr:nth-child(3){animation-delay:.06s}.table tbody tr:nth-child(4){animation-delay:.08s}.table tbody tr:nth-child(5){animation-delay:.1s}.table tbody tr:nth-child(6){animation-delay:.12s}.table tbody tr:nth-child(7){animation-delay:.14s}.table tbody tr:nth-child(8){animation-delay:.16s}.table tbody tr:nth-child(9){animation-delay:.18s}.table tbody tr:nth-child(10){animation-delay:.2s}@keyframes barGrow{0%{transform:scaleY(0);transform-origin:bottom}to{transform:scaleY(1);transform-origin:bottom}}.tab,.tabs{position:relative}.tab{transition:color var(--transition-fast),border-color var(--transition-fast)}.tab.active{animation:fadeIn .3s ease both}@keyframes progressGrow{0%{width:0}}.progress-animated{animation:progressGrow .8s cubic-bezier(.16,1,.3,1) both}@keyframes ripple{to{transform:scale(4);opacity:0}}.btn{position:relative;overflow:hidden}.btn:after{content:"";position:absolute;inset:0;background:rgba(255,255,255,.15);border-radius:inherit;opacity:0;transition:opacity var(--transition-fast)}.btn:active:after{opacity:1}.empty-state{animation:fadeIn .4s ease both}.empty-state-icon{font-size:48px;margin-bottom:var(--space-4);animation:slideUp .5s cubic-bezier(.16,1,.3,1) both}@keyframes statusPulse{0%,to{opacity:1}50%{opacity:.5}}.status-dot-running{animation:statusPulse 1.5s ease-in-out infinite}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.skeleton{background:linear-gradient(90deg,var(--color-surface-hover) 25%,var(--color-border-light) 50%,var(--color-surface-hover) 75%);background-size:200% 100%;animation:shimmer 1.5s ease-in-out infinite;border-radius:var(--radius-md)}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:var(--radius-full)}::-webkit-scrollbar-thumb:hover{background:var(--color-text-muted)}.page-transition-enter{animation:pageEnter .35s cubic-bezier(.16,1,.3,1) both}@keyframes badgeBounce{0%,to{transform:scale(1)}50%{transform:scale(1.15)}}.badge-updated{animation:badgeBounce .4s cubic-bezier(.34,1.56,.64,1)}.billing-badges-row{display:flex;flex-wrap:wrap;gap:var(--space-2);padding-left:36px}.billing-badge{display:inline-flex;align-items:center;padding:2px 8px;border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:500;white-space:nowrap;border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text-secondary)}.billing-badge-matieres{border-color:#93c5fd;color:#1d4ed8;background:#eff6ff}.billing-badge-cadres{border-color:#c4b5fd;color:#6d28d9;background:#f5f3ff}.billing-badge-grilles{border-color:#6ee7b7;color:#047857;background:#ecfdf5}.billing-badge-isolants{border-color:#fcd34d;color:#92400e;background:#fffbeb}.billing-badge-mo{border-color:#fdba74;color:#c2410c;background:#fff7ed}.billing-badge-divers{border-color:#d1d5db;color:#374151;background:#f3f4f6}.billing-badge-total{border-color:var(--color-primary);color:#fff;background:var(--color-primary);font-weight:700}.billing-total-client{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-3) var(--space-4);background:var(--color-dark);color:var(--color-text-inverse);border-radius:var(--radius-lg);padding:var(--space-4) var(--space-5);margin-bottom:var(--space-6);box-shadow:var(--shadow-md)}.billing-total-client .btc-label{font-family:var(--font-heading);font-weight:700;font-size:var(--text-lg);color:#fff}.billing-total-client .btc-breakdown{display:flex;flex-wrap:wrap;gap:var(--space-2)}.billing-total-client .btc-grand{margin-left:auto;display:flex;align-items:baseline;gap:var(--space-2);white-space:nowrap}.billing-total-client .btc-grand-label{font-size:var(--text-sm);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.06em}.billing-total-client .btc-grand-value{font-family:var(--font-heading);font-weight:800;font-size:var(--text-2xl);color:var(--color-primary)}.billing-section-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);flex-wrap:wrap;margin-bottom:var(--space-3)}.billing-empty-hint{font-size:var(--text-sm);color:var(--color-text-muted);background:var(--color-surface-hover);border:1px dashed var(--color-border);border-radius:var(--radius-md);padding:var(--space-3) var(--space-4)}.billing-remove-btn{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:var(--radius-sm);color:var(--color-text-muted);background:transparent;transition:color var(--transition-fast),background var(--transition-fast)}.billing-remove-btn:hover{color:var(--color-danger);background:var(--color-danger-light)}.billing-materials-table td{vertical-align:middle}.material-picker-list{max-height:50vh;overflow-y:auto;display:flex;flex-direction:column;gap:var(--space-3)}.material-picker-group-title{font-size:var(--text-xs);font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-muted);padding:var(--space-1) var(--space-1) var(--space-2)}.material-picker-item{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);width:100%;text-align:left;padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);margin-bottom:var(--space-2);transition:border-color var(--transition-fast),background var(--transition-fast)}.material-picker-item:hover{border-color:var(--color-primary-subtle);background:var(--color-primary-light)}.material-picker-add{flex-shrink:0;font-size:var(--text-xs);font-weight:700;color:var(--color-primary)}.pricing-tabs{display:flex;gap:0;border-bottom:2px solid var(--color-border);margin-bottom:var(--space-6)}.pricing-tab{padding:var(--space-3) var(--space-5);font-size:var(--text-sm);font-weight:600;color:var(--color-text-muted);background:none;border:none;border-bottom:2px solid transparent;margin-bottom:-2px;cursor:pointer;transition:color var(--transition-fast),border-color var(--transition-fast)}.pricing-tab:hover{color:var(--color-text)}.pricing-tab.active{color:var(--color-primary);border-bottom-color:var(--color-primary)}.material-category-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-3) var(--space-4);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);cursor:pointer;transition:background var(--transition-fast)}.material-category-header:hover{background:var(--color-surface-hover)}.material-category-body{padding:var(--space-3) 0}.billing-worksite-card{background:var(--color-card);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-5);margin-bottom:var(--space-4);transition:box-shadow var(--transition-fast)}.billing-worksite-card:hover{box-shadow:var(--shadow-md)}.billing-worksite-card .card-header{display:flex;align-items:center;justify-content:space-between;cursor:pointer}.billing-ws-header{gap:var(--space-3)}.billing-ws-left{min-width:0;flex:1 1 auto}.billing-ws-right{display:flex;flex-direction:column;align-items:flex-end;flex-shrink:0;gap:2px}.billing-ws-total-value{font-family:var(--font-heading);font-weight:800;font-size:1.35rem;color:var(--color-text);letter-spacing:-.02em;white-space:nowrap}.billing-ws-margin{font-size:var(--text-xs);color:#059669;font-weight:500;white-space:nowrap}.billing-badges-subtle .billing-badge-sub{opacity:.7;font-size:.68rem;padding:1px 6px;font-weight:400}.billing-ws-delta{font-size:var(--text-xs);font-weight:600;white-space:nowrap}.billing-ws-delta.is-positive{color:var(--color-success)}.billing-ws-delta.is-negative{color:var(--color-danger)}.billing-worksite-card .card-body{margin-top:var(--space-4);padding-top:var(--space-4);border-top:1px solid var(--color-border-light)}.billing-estimate-block{margin-top:var(--space-4);padding:var(--space-4);background-color:rgba(var(--color-primary-rgb),.03);border-left:4px dashed rgba(var(--color-primary-rgb),.3);border-radius:0 var(--radius-md) var(--radius-md) 0}.billing-estimate-content{display:flex;flex-direction:column;gap:var(--space-2);margin-top:var(--space-2)}.billing-estimate-row{display:flex;align-items:center;justify-content:space-between;font-size:var(--text-sm)}.billing-estimate-label{color:var(--color-text-muted);font-weight:500}.billing-estimate-value{font-weight:600;color:var(--color-text)}.billing-estimate-input{width:120px;padding:var(--space-1) var(--space-2);text-align:right;border-color:rgba(var(--color-primary-rgb),.3)}.billing-estimate-input:focus{border-color:var(--color-primary);box-shadow:0 0 0 2px var(--color-primary-light)}.billing-estimate-delta-row{margin-top:var(--space-2);padding-top:var(--space-2);border-top:1px dashed var(--color-border)}.billing-estimate-delta{font-weight:700}.billing-estimate-delta.is-positive{color:var(--color-success)}.billing-estimate-delta.is-negative{color:var(--color-danger)}.quantity-input{width:80px;padding:var(--space-1) var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:var(--text-sm);text-align:right;font-family:var(--font-body)}.quantity-input:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 2px var(--color-primary-light)}.quantity-input.is-invalid{border-color:var(--color-danger);box-shadow:0 0 0 2px var(--color-danger-light)}.billing-filters{display:flex;flex-wrap:wrap;gap:var(--space-3);align-items:center;margin-bottom:var(--space-6)}.billing-filters input[type=date],.billing-filters select{padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--text-sm);font-family:var(--font-body);background:var(--color-surface)}.billing-summary-modal{max-width:100%;width:100%;max-height:85vh;overflow-y:auto;overflow-x:auto}.billing-summary-table{width:100%;border-collapse:collapse;font-size:var(--text-sm)}.billing-summary-table td,.billing-summary-table th{padding:var(--space-2) var(--space-3);text-align:right;border-bottom:1px solid var(--color-border-light)}.billing-summary-table td.margin-col,.billing-summary-table th.margin-col{display:none;opacity:0;transition:opacity .35s ease-in-out}.billing-summary-table td.margin-col.show,.billing-summary-table th.margin-col.show{display:table-cell;animation:fadeInSummary .35s ease-in-out forwards}@keyframes fadeInSummary{0%{opacity:0}to{opacity:1}}.billing-summary-table td:first-child,.billing-summary-table th:first-child{text-align:left}.billing-summary-table tfoot td{font-weight:700;border-top:2px solid var(--color-border);color:var(--color-primary)}.rate-history-panel{background:var(--color-surface-hover);border-radius:var(--radius-sm);padding:var(--space-3);margin-top:var(--space-2)}.rate-history-panel table{width:100%;font-size:var(--text-xs)}.billing-actions{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-bottom:var(--space-4)}@media (max-width:768px){.billing-badges-row{padding-left:0}.billing-filters{flex-direction:column;align-items:stretch}.billing-filters .form-input,.billing-filters select{min-width:0!important;width:100%}.billing-filters .flex{width:100%}.billing-actions .btn,.billing-filters input[type=date]{flex:1 1}.billing-summary-modal{max-width:100%}.billing-summary-table{font-size:var(--text-xs)}.billing-worksite-card{padding:var(--space-3)}.billing-ws-header{flex-wrap:wrap}.billing-ws-right{flex-direction:row;align-items:center;gap:var(--space-2);width:100%;margin-top:var(--space-2);padding-top:var(--space-2);border-top:1px solid var(--color-border-light)}.billing-ws-total-value{font-size:1.1rem}.billing-total-client{flex-direction:column;align-items:flex-start;gap:var(--space-3)}.billing-total-client .btc-grand{margin-left:0;align-self:stretch;justify-content:space-between;padding-top:var(--space-3);border-top:1px solid rgba(255,255,255,.12);width:100%}.billing-section-head .btn{flex:1 1}}@media (max-width:767px){.accordion-header{flex-wrap:wrap;row-gap:var(--space-2)}.accordion-header>.flex:last-child{margin-left:auto}.admin-worksite-row{flex-wrap:wrap}.admin-worksite-actions{width:100%;justify-content:flex-end;flex-wrap:wrap}.pricing-tabs{overflow-x:auto}}.error-fallback{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:60vh;text-align:center;padding:var(--space-8);animation:fadeIn .3s ease}.error-fallback-icon{font-size:48px;margin-bottom:var(--space-4)}.error-fallback-title{font-family:var(--font-heading);font-size:var(--text-xl);margin-bottom:var(--space-2)}.error-fallback-text{color:var(--color-text-secondary);margin-bottom:var(--space-6);max-width:400px}.skeleton-page{padding:var(--space-6) var(--space-4);max-width:var(--max-width-lg);margin:0 auto}.skeleton-table{background:var(--color-surface);border-radius:var(--radius-lg);border:1px solid var(--color-border);overflow:hidden;padding:var(--space-4)}.skeleton-header{display:flex;gap:var(--space-4);padding-bottom:var(--space-3);border-bottom:1px solid var(--color-border);margin-bottom:var(--space-3)}.skeleton-row-inner{display:flex;gap:var(--space-4);padding:var(--space-2) 0}.skeleton-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-4);display:flex;flex-direction:column;gap:var(--space-3);margin-bottom:var(--space-3)}.skeleton-stats{display:grid;grid-template-columns:repeat(2,1fr);grid-gap:var(--space-4);gap:var(--space-4);margin-bottom:var(--space-6)}@media (min-width:1024px){.skeleton-stats{grid-template-columns:repeat(4,1fr)}}.toast-icon{flex-shrink:0}.toast-message{flex:1 1;min-width:0}.toast-close{flex-shrink:0;background:none;border:none;color:rgba(255,255,255,.6);font-size:18px;line-height:1;padding:0 2px;cursor:pointer;transition:color var(--transition-fast)}.toast-close:hover{color:#fff}.form-input.is-invalid{border-color:var(--color-danger);box-shadow:0 0 0 3px rgba(239,68,68,.1)}.form-input.is-invalid:focus{border-color:var(--color-danger);box-shadow:0 0 0 3px rgba(239,68,68,.15)}.connection-error{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-12) var(--space-4);text-align:center;animation:fadeIn .3s ease}.connection-error-icon{font-size:48px;margin-bottom:var(--space-4);opacity:.7}.connection-error-title{font-family:var(--font-heading);font-weight:700;font-size:var(--text-lg);color:var(--color-text-secondary);margin-bottom:var(--space-2)}.connection-error-text{color:var(--color-text-muted);margin-bottom:var(--space-4);max-width:360px}@media print{.admin-overlay,.admin-sidebar,.admin-topbar,.billing-actions,.billing-filters,.btn{display:none!important}.page-admin{padding:0!important;margin:0!important}body:has(.modal-overlay) .page-admin>:not(.modal-overlay){display:none!important}body:has(.modal-overlay) .admin-sidebar,body:has(.modal-overlay) .admin-topbar{display:none!important}body:has(.modal-overlay) .modal-overlay{position:relative!important;background:none!important;-webkit-backdrop-filter:none!important;backdrop-filter:none!important;padding:0!important;margin:0!important;display:block!important;z-index:auto!important;overflow:visible!important}body:has(.modal-overlay) .modal-content{background:transparent!important;border:none!important;border-radius:0!important;box-shadow:none!important;padding:0!important;margin:0!important;max-width:100%!important;max-height:none!important;overflow:visible!important}body:has(.modal-overlay) .modal-actions,body:has(.modal-overlay) .modal-handle{display:none!important}.billing-worksite-card{page-break-inside:avoid;break-inside:avoid;border:1px solid #ccc;box-shadow:none}.billing-badge{border:1px solid #999;background:transparent!important;color:#000!important}.admin-layout{display:block!important}}.text-lg{font-size:var(--text-lg)}.text-xl{font-size:var(--text-xl)}.text-2xl{font-size:var(--text-2xl)}.text-3xl{font-size:var(--text-3xl)}.text-4xl{font-size:var(--text-4xl)}.text-primary{color:var(--color-primary)}.text-success{color:var(--color-success-hover)}.text-danger{color:var(--color-danger)}.text-warning{color:var(--color-warning)}.text-info{color:var(--color-info)}.uppercase{text-transform:uppercase;letter-spacing:.04em}.rounded-sm{border-radius:var(--radius-sm)}.rounded-md{border-radius:var(--radius-md)}.rounded-lg{border-radius:var(--radius-lg)}.rounded-full{border-radius:var(--radius-full)}.max-w-sm{max-width:384px}.max-w-md{max-width:448px}.mb-0{margin-bottom:0}.mb-1{margin-bottom:var(--space-1)}@media (min-width:768px){.md\:flex-row{flex-direction:row}}