*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--font: "Inter", -apple-system, BlinkMacSystemFont, sans-serif;--bg: #f5f6fa;--bg-card: #ffffff;--bg-sidebar: #ffffff;--bg-header: #ffffff;--bg-input: #f8f9fc;--bg-hover: #f0f1ff;--bg-active: #ede9fe;--text: #1a1d2e;--text-muted: #6b7280;--text-light: #9ca3af;--border: #e5e7eb;--border-focus:#6366f1;--primary: #6366f1;--primary-dark:#4f46e5;--primary-bg: #eef2ff;--success: #10b981;--success-bg: #ecfdf5;--danger: #ef4444;--danger-bg: #fef2f2;--warning: #f59e0b;--warning-bg: #fffbeb;--pink-bg: #fce7f3;--pink-color: #ec4899;--shadow-sm: 0 1px 3px rgba(0,0,0,.06), 0 1px 2px rgba(0,0,0,.04);--shadow: 0 4px 12px rgba(0,0,0,.08);--shadow-lg: 0 8px 30px rgba(0,0,0,.12);--radius: 12px;--radius-sm: 8px;--radius-lg: 16px;--sidebar-w: 240px;--header-h: 64px;color-scheme:light}[data-theme=dark]{--bg: #0f1117;--bg-card: #1a1d2e;--bg-sidebar: #141621;--bg-header: #141621;--bg-input: #1f2235;--bg-hover: #1f2235;--bg-active: #2d2b55;--text: #f0f1ff;--text-muted: #9ca3af;--text-light: #6b7280;--border: #2a2d3e;--border-focus:#818cf8;--primary: #818cf8;--primary-dark:#6366f1;--primary-bg: #1e1b4b;--success: #34d399;--success-bg: #064e3b;--danger: #f87171;--danger-bg: #450a0a;--warning: #fbbf24;--warning-bg: #451a03;--pink-bg: #4a1942;--pink-color: #f472b6;--shadow-sm: 0 1px 3px rgba(0,0,0,.3);--shadow: 0 4px 12px rgba(0,0,0,.4);--shadow-lg: 0 8px 30px rgba(0,0,0,.5);color-scheme:dark}html{height:100%;color-scheme:inherit}body{min-height:100%;height:100%;font-family:var(--font);background:var(--bg);color:var(--text);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased;transition:background .25s ease,color .25s ease}#root{min-height:100vh;background:var(--bg);color:var(--text);display:flex;flex-direction:column}.app-layout{display:flex;min-height:100vh;background:var(--bg)}.sidebar{width:var(--sidebar-w);min-height:100vh;background:var(--bg-sidebar);border-right:1px solid var(--border);display:flex;flex-direction:column;position:fixed;top:0;left:0;bottom:0;z-index:100;transition:background .25s ease,border-color .25s ease}.main-content{margin-left:var(--sidebar-w);flex:1;display:flex;flex-direction:column;min-height:100vh;background:var(--bg);transition:background .25s ease}.header{height:var(--header-h);background:var(--bg-header);border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;padding:0 24px;position:sticky;top:0;z-index:50;transition:background .25s ease,border-color .25s ease}.page-body{flex:1;padding:28px 28px 16px;overflow-x:hidden;overflow-y:auto;background:var(--bg);transition:background .25s ease}.sidebar-logo{padding:20px 16px 16px;border-bottom:1px solid var(--border);display:flex;flex-direction:column;align-items:flex-start;gap:0}.sidebar-brand{display:flex;flex-direction:column;align-items:center;width:100%;padding:4px 0 2px;gap:6px}.sidebar-brand-icon{width:52px;height:52px;border-radius:12px;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#0d1b2e,#1a2744);box-shadow:0 4px 14px #2196f340;padding:4px;overflow:hidden}.sidebar-brand-name{font-size:17px;font-weight:800;color:var(--primary);letter-spacing:-.5px;line-height:1}.sidebar-brand-sub{font-size:9px;font-weight:700;color:var(--text-muted);letter-spacing:2px;text-transform:uppercase;line-height:1}.sidebar-brand-sub.admin{color:#2196f3}.sidebar-logo-text{font-size:18px;font-weight:700;color:var(--primary);letter-spacing:-.3px}.sidebar-logo-sub{font-size:11px;color:var(--text-muted);margin-top:2px;font-weight:500;letter-spacing:.5px;text-transform:uppercase}.sidebar-nav{padding:12px 10px;flex:1;display:flex;flex-direction:column;gap:2px}.nav-item{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:var(--radius-sm);cursor:pointer;color:var(--text-muted);font-weight:500;font-size:13.5px;transition:all .15s ease;text-decoration:none;border:none;background:none;width:100%;text-align:left}.nav-item:hover{background:var(--bg-hover);color:var(--text)}.nav-item.active{background:var(--bg-active);color:var(--primary);font-weight:600}.nav-item svg{flex-shrink:0;opacity:.8}.nav-item.active svg{opacity:1}.header-title{font-size:16px;font-weight:600;color:var(--text)}.header-actions{display:flex;align-items:center;gap:10px}.theme-toggle{width:36px;height:36px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--bg-input);color:var(--text-muted);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s ease}.theme-toggle:hover{background:var(--bg-hover);color:var(--primary);border-color:var(--primary)}.cards-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:16px;margin-bottom:28px}.stat-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:20px;transition:box-shadow .2s ease,transform .2s ease,background .25s ease;cursor:default}.stat-card:hover{box-shadow:var(--shadow);transform:translateY(-1px)}.stat-card.featured{border-color:var(--primary);background:var(--primary-bg)}.stat-card-icon{width:38px;height:38px;border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;margin-bottom:12px}.stat-card-label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.6px;color:var(--text-muted);margin-bottom:6px}.stat-card-value{font-size:26px;font-weight:700;color:var(--text);line-height:1.1}.stat-card.featured .stat-card-value{color:var(--primary);font-size:32px}.stat-card-sub{font-size:12px;color:var(--text-muted);margin-top:4px}.section-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:24px;margin-bottom:20px;transition:background .25s ease,border-color .25s ease}.section-title{font-size:15px;font-weight:600;color:var(--text);margin-bottom:18px;display:flex;align-items:center;gap:8px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:9px 18px;border-radius:var(--radius-sm);font-size:13.5px;font-weight:600;cursor:pointer;border:none;transition:all .15s ease;font-family:var(--font);white-space:nowrap}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none!important}.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover:not(:disabled){background:var(--primary-dark);transform:translateY(-1px);box-shadow:0 4px 12px #6366f159}.btn-success{background:var(--success);color:#fff}.btn-success:hover:not(:disabled){opacity:.9;transform:translateY(-1px);box-shadow:0 4px 12px #10b98159}.btn-danger{background:var(--danger);color:#fff}.btn-danger:hover:not(:disabled){opacity:.9;transform:translateY(-1px)}.btn-outline{background:transparent;color:var(--text-muted);border:1px solid var(--border)}.btn-outline:hover:not(:disabled){background:var(--bg-hover);border-color:var(--primary);color:var(--primary)}.btn-excel{background:#217346;color:#fff}.btn-excel:hover:not(:disabled){background:#1a5c38;transform:translateY(-1px);box-shadow:0 4px 12px #21734659}.btn-lg{padding:12px 28px;font-size:15px;border-radius:10px}.btn-sm{padding:5px 12px;font-size:12px}.form-row{display:flex;gap:14px;flex-wrap:wrap;align-items:flex-end}.form-group{display:flex;flex-direction:column;gap:6px}label{font-size:12px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px}input[type=date],input[type=time],input[type=month],input[type=text],textarea,select{padding:9px 12px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--bg-input);color:var(--text);font-family:var(--font);font-size:13.5px;transition:border-color .15s ease,box-shadow .15s ease,background .25s ease,color .25s ease;outline:none;min-width:140px;color-scheme:inherit}input:focus,select:focus,textarea:focus{border-color:var(--border-focus);box-shadow:0 0 0 3px #6366f126}.timer-display{font-size:48px;font-weight:700;color:var(--primary);font-variant-numeric:tabular-nums;letter-spacing:-1px;line-height:1}.timer-label{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.6px;color:var(--text-muted);margin-bottom:8px}.active-session-banner{background:var(--success-bg);border:1px solid var(--success);border-radius:var(--radius);padding:16px 20px;display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:20px;flex-wrap:wrap;transition:background .25s ease}.active-dot{width:8px;height:8px;background:var(--success);border-radius:50%;display:inline-block;margin-right:6px;animation:pulse 1.5s infinite}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(1.3)}}.table-wrapper{overflow-x:auto;border-radius:var(--radius-sm);border:1px solid var(--border)}table{width:100%;border-collapse:collapse;background:var(--bg-card)}thead th{background:var(--bg-input);padding:11px 14px;text-align:left;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--text-muted);border-bottom:1px solid var(--border);white-space:nowrap}tbody tr{border-bottom:1px solid var(--border);transition:background .12s ease}tbody tr:last-child{border-bottom:none}tbody tr:hover{background:var(--bg-hover)}tbody td{padding:11px 14px;font-size:13.5px;color:var(--text);background:transparent}.badge{display:inline-flex;align-items:center;padding:3px 9px;border-radius:20px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.4px}.badge-success{background:var(--success-bg);color:var(--success)}.badge-warning{background:var(--warning-bg);color:var(--warning)}.filter-bar{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:16px;align-items:center}.search-input{flex:1;min-width:200px;padding:9px 12px 9px 36px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--bg-input);color:var(--text);font-family:var(--font);font-size:13.5px;outline:none;transition:border-color .15s ease,box-shadow .15s ease,background .25s ease,color .25s ease;color-scheme:inherit}.search-input:focus{border-color:var(--border-focus);box-shadow:0 0 0 3px #6366f126}.search-wrapper{position:relative;flex:1;min-width:200px}.search-icon{position:absolute;left:10px;top:50%;transform:translateY(-50%);color:var(--text-light);pointer-events:none}.info-box{background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius-sm);padding:14px 16px;font-size:12.5px;color:var(--text-muted);margin-top:8px;line-height:1.7;transition:background .25s ease,border-color .25s ease}.info-box strong{color:var(--text)}.mini-card{padding:14px;background:var(--bg);border-radius:var(--radius-sm);border:1px solid var(--border);transition:background .25s ease,border-color .25s ease}.mini-card-label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--text-muted);margin-bottom:6px}.mini-card-value{font-size:18px;font-weight:700;color:var(--text);font-variant-numeric:tabular-nums}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:200;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);animation:fadeIn .15s ease}.modal{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:28px;width:420px;max-width:calc(100vw - 32px);box-shadow:var(--shadow-lg);animation:slideUp .2s ease}.modal-title{font-size:16px;font-weight:700;color:var(--text);margin-bottom:20px}.modal-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:20px}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.empty-state{text-align:center;padding:48px 24px;color:var(--text-muted)}.empty-state svg{opacity:.3;margin-bottom:12px}.empty-state p{font-size:14px}.alert{border-radius:var(--radius-sm);padding:12px 16px;font-size:13.5px;display:flex;align-items:center;gap:8px}.alert-danger{background:var(--danger-bg);border:1px solid var(--danger);color:var(--danger)}.alert-success{background:var(--success-bg);border:1px solid var(--success);color:var(--success)}.footer{text-align:center;padding:14px 24px;font-size:12px;color:var(--text-muted);border-top:1px solid var(--border);background:var(--bg-header);transition:background .25s ease,border-color .25s ease}.footer a{color:var(--primary);text-decoration:none;font-weight:600;transition:opacity .15s}.footer a:hover{opacity:.8;text-decoration:underline}.menu-btn{display:none;background:none;border:none;cursor:pointer;color:var(--text-muted);padding:4px;border-radius:6px;transition:background .15s;flex-shrink:0}.menu-btn:hover{background:var(--bg-hover);color:var(--text)}.admin-badge{font-size:10px;padding:1px 6px;border-radius:99px;background:#6366f126;color:var(--primary);font-weight:700;text-transform:uppercase}.sidebar-overlay{display:none}@media (max-width: 768px){:root{--sidebar-w: 0px}.menu-btn{display:flex;align-items:center;justify-content:center}.sidebar{position:fixed;top:0;left:0;bottom:0;z-index:200;transform:translate(-100%);width:240px;transition:transform .25s ease}.sidebar.open{transform:translate(0);box-shadow:var(--shadow-lg)}.sidebar-overlay{display:block;position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;z-index:199}.main-content{margin-left:0}.header{padding:0 12px}.header-title{font-size:15px}.header-username{display:none}.page-body{padding:12px}.cards-grid{grid-template-columns:1fr 1fr;gap:10px}.stat-card{padding:14px}.stat-card-value{font-size:22px}.section-card{padding:14px}.page-split{flex-direction:column}.page-split-char{display:none}.page-split-form{width:100%}.timer-display{font-size:36px}table{font-size:12px}th,td{padding:8px 10px!important}.history-filters{flex-direction:column;gap:8px}.auth-card{margin:12px;padding:24px 18px;width:auto;max-width:100%}.auth-page{padding:0;align-items:flex-start}.section-card>div[style*=overflow]{overflow-x:auto}.ci-card{padding:16px}.ci-results-grid{grid-template-columns:1fr!important}.btn-lg{padding:11px 20px;font-size:14px}}@media (max-width: 400px){.cards-grid{grid-template-columns:1fr}.timer-display{font-size:28px}.header-actions{gap:6px}.admin-badge{display:none}}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--text-light)}.text-success{color:var(--success)}.text-danger{color:var(--danger)}.text-muted{color:var(--text-muted)}.text-primary{color:var(--primary)}.flex{display:flex}.items-center{align-items:center}.gap-2{gap:8px}.mt-1{margin-top:4px}.mt-2{margin-top:8px}.mb-2{margin-bottom:8px}.font-mono{font-variant-numeric:tabular-nums}.ci-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:28px;margin-bottom:16px;box-shadow:var(--shadow-sm);transition:background .25s ease,border-color .25s ease}.ci-header{display:flex;align-items:center;gap:14px;margin-bottom:20px}.ci-header-icon{width:42px;height:42px;border-radius:10px;background:var(--primary-bg);color:var(--primary);display:flex;align-items:center;justify-content:center;flex-shrink:0}.ci-header-title{font-size:16px;font-weight:700;color:var(--text);letter-spacing:-.2px}.ci-header-sub{font-size:12px;color:var(--text-muted);margin-top:1px}.ci-divider{height:1px;background:var(--border);margin-bottom:22px}.ci-fields{display:flex;flex-direction:column;gap:20px}.ci-field{display:flex;flex-direction:column;gap:7px;flex:1}.ci-label{display:flex;align-items:center;gap:6px;font-size:11.5px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--text-muted)}.ci-label-icon{color:var(--primary);display:flex;align-items:center}.ci-control{position:relative}.ci-control--error .ci-input,.ci-control--error .ci-select{border-color:var(--danger)!important;box-shadow:0 0 0 3px #ef44441f!important}.ci-input,.ci-select{width:100%;padding:11px 14px;border-radius:10px;border:1.5px solid var(--border);background:var(--bg-input);color:var(--text);font-family:var(--font);font-size:14px;font-weight:500;outline:none;transition:border-color .15s ease,box-shadow .15s ease,background .25s ease,color .25s ease;color-scheme:inherit;-webkit-appearance:none;-moz-appearance:none;appearance:none;min-width:0}.ci-input::placeholder{color:var(--text-light);font-weight:400}.ci-input:focus,.ci-select:focus{border-color:var(--primary);box-shadow:0 0 0 3.5px #6366f124;background:var(--bg-card)}[data-theme=dark] .ci-input:focus,[data-theme=dark] .ci-select:focus{box-shadow:0 0 0 3.5px #818cf82e}.ci-select{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%239ca3af' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:34px;cursor:pointer}.ci-row{display:flex;gap:12px}.ci-row>*{flex:1 1 0;min-width:0}.ci-prefix-wrap{position:relative;display:flex;align-items:center}.ci-prefix{position:absolute;left:14px;font-size:14px;font-weight:600;color:var(--text-muted);pointer-events:none;z-index:1}.ci-input--prefixed{padding-left:30px}.ci-suffix-wrap{position:relative;display:flex;align-items:center}.ci-suffix{position:absolute;right:13px;font-size:12px;font-weight:600;color:var(--text-light);pointer-events:none}.ci-input--suffixed{padding-right:38px}.ci-error{display:flex;align-items:center;gap:5px;font-size:11.5px;color:var(--danger);font-weight:500}.ci-actions{display:flex;gap:10px;margin-top:24px}.ci-btn-calculate{flex:1;display:flex;align-items:center;justify-content:center;gap:8px;padding:12px 20px;border-radius:10px;border:none;background:var(--primary);color:#fff;font-family:var(--font);font-size:14px;font-weight:700;cursor:pointer;letter-spacing:.1px;transition:background .15s ease,transform .15s ease,box-shadow .15s ease}.ci-btn-calculate:hover{background:var(--primary-dark);transform:translateY(-1px);box-shadow:0 6px 18px #6366f161}.ci-btn-calculate:active{transform:translateY(0)}[data-theme=dark] .ci-btn-calculate:hover{box-shadow:0 6px 18px #818cf84d}.ci-btn-clear{width:46px;height:46px;border-radius:10px;border:1.5px solid var(--border);background:var(--bg-input);color:var(--text-muted);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s ease;flex-shrink:0}.ci-btn-clear:hover{background:var(--danger-bg);border-color:var(--danger);color:var(--danger);transform:rotate(-20deg)}.ci-results{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow-sm);margin-bottom:0}.ci-result-rows{padding:4px 0}.ci-result-row{display:flex;justify-content:space-between;align-items:center;padding:10px 24px;gap:12px;border-bottom:1px solid var(--border);transition:background .1s ease}.ci-result-row:last-child{border-bottom:none}.ci-result-row:hover{background:var(--bg-hover)}.ci-result-label{font-size:13px;color:var(--text-muted);font-weight:500}.ci-result-value{font-size:13.5px;color:var(--text);font-weight:600;font-variant-numeric:tabular-nums}.ci-earnings{background:var(--primary-bg);border-top:1px solid var(--border);padding:16px 24px}.ci-earnings-inner{display:flex;align-items:center;gap:14px}.ci-earnings-icon{width:36px;height:36px;border-radius:8px;background:var(--primary);color:#fff;display:flex;align-items:center;justify-content:center;flex-shrink:0}.ci-earnings-label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--primary);margin-bottom:2px}.ci-earnings-value{font-size:20px;font-weight:800;color:var(--primary);font-variant-numeric:tabular-nums;letter-spacing:-.3px}.ci-final{background:var(--primary);padding:22px 24px;text-align:center}[data-theme=dark] .ci-final{background:var(--primary-dark)}.ci-final-label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:1px;color:#ffffffa6;margin-bottom:2px}.ci-final-sub{font-size:12px;color:#ffffff80;margin-bottom:6px}.ci-final-value{font-size:36px;font-weight:800;color:#fff;font-variant-numeric:tabular-nums;letter-spacing:-1px;line-height:1.1;margin-bottom:6px}.ci-final-eq{font-size:12px;color:#ffffff80;font-variant-numeric:tabular-nums}:root{--char-shadow: rgba(0,0,0,.12)}[data-theme=dark]{--char-shadow: rgba(0,0,0,.35)}.page-split{display:flex;gap:24px;align-items:flex-start;min-height:calc(100vh - var(--header-h) - 92px)}.page-split-form{flex:0 1 560px;width:100%;min-width:0;max-width:560px}.page-split-char{flex:1 1 0;min-width:0;display:flex;flex-direction:column;align-items:center;justify-content:center;position:sticky;top:4px;align-self:flex-start;min-height:calc(100vh - var(--header-h) - 92px);overflow:visible;z-index:1}@media (max-width: 1100px){.page-split{flex-direction:column;min-height:0}.page-split-form{max-width:100%;flex:none}.page-split-char{position:static;width:100%;min-height:360px;margin:8px auto 0;flex:none}.char-wrap{width:clamp(240px,58vw,340px)}}.char-wrap{width:clamp(280px,78%,420px);max-width:100%;position:relative;-webkit-user-select:none;user-select:none}.char-svg{width:100%;height:auto;overflow:visible}.char-bubble{margin-top:10px;margin-left:auto;margin-right:auto;background:var(--bg-card);border:1.5px solid var(--border);border-radius:16px 16px 16px 4px;padding:8px 14px;font-size:12px;font-weight:600;color:var(--text-muted);text-align:center;box-shadow:var(--shadow-sm);animation:bubblePop .3s cubic-bezier(.34,1.56,.64,1);max-width:240px}@keyframes bubblePop{0%{opacity:0;transform:scale(.85) translateY(6px)}to{opacity:1;transform:scale(1) translateY(0)}}[data-theme=dark] .char-skin{fill:#d4a574}[data-theme=dark] .char-skin-dark{fill:#c49060}.char-coffee,.char-laptop,.char-calendar,.char-money,.char-clock,.char-calcprop,.char-celebrate{display:none}.char-wrap.char-state-idle .char-coffee,.char-wrap.char-state-date .char-coffee,.char-wrap.char-state-date .char-calendar,.char-wrap.char-state-working .char-laptop,.char-wrap.char-state-typing .char-laptop,.char-wrap.char-state-calendar .char-calendar,.char-wrap.char-state-money .char-money,.char-wrap.char-state-clock .char-clock,.char-wrap.char-state-calculating .char-calcprop,.char-wrap.char-state-result .char-celebrate{display:block}@keyframes charFloat{0%,to{transform:translateY(0)}50%{transform:translateY(-7px)}}@keyframes charBreathe{0%,to{transform:scaleY(1)}50%{transform:scaleY(1.03)}}@keyframes charBlink{0%,92%,to{transform:scaleY(1)}96%{transform:scaleY(.08)}}.char-wrap{animation:charFloat 3.6s ease-in-out infinite}.char-body{animation:charBreathe 3.6s ease-in-out infinite;transform-origin:center bottom}.char-eye-l,.char-eye-r{animation:charBlink 4.5s ease-in-out infinite;transform-origin:center center}.char-eye-r{animation-delay:.1s}@keyframes ledPulse{0%,to{opacity:1}50%{opacity:.3}}.char-led{animation:ledPulse 1.8s ease-in-out infinite}@keyframes coffeeHold{0%,to{transform:rotate(0) translateY(0)}50%{transform:rotate(3deg) translateY(-3px)}}@keyframes steamRise{0%{opacity:0;transform:translateY(0) scaleX(1)}40%{opacity:1}to{opacity:0;transform:translateY(-12px) scaleX(1.4)}}.char-wrap.char-state-idle .char-arm-left{animation:coffeeHold 3s ease-in-out infinite;transform-origin:57px 152px}.char-wrap.char-state-idle .char-steam1{animation:steamRise 2s ease-out infinite 0s}.char-wrap.char-state-idle .char-steam2{animation:steamRise 2s ease-out infinite .5s}.char-wrap.char-state-idle .char-steam3{animation:steamRise 2s ease-out infinite 1s}@keyframes armRaiseLeft{0%,to{transform:rotate(-35deg) translateY(-8px)}50%{transform:rotate(-30deg) translateY(-10px)}}@keyframes calendarBob{0%,to{transform:translateY(0)}50%{transform:translateY(-4px)}}.char-wrap.char-state-date .char-arm-left{animation:armRaiseLeft 2s ease-in-out infinite;transform-origin:57px 152px}.char-wrap.char-state-date .char-calendar{animation:calendarBob 2s ease-in-out infinite}@keyframes armForwardL{0%,to{transform:rotate(20deg) translate(10px)}50%{transform:rotate(18deg) translate(12px)}}@keyframes armForwardR{0%,to{transform:rotate(-20deg) translate(-10px)}50%{transform:rotate(-18deg) translate(-12px)}}@keyframes laptopOpen{0%{transform-origin:center bottom;transform:rotateX(90deg)}to{transform-origin:center bottom;transform:rotateX(0)}}.char-wrap.char-state-working .char-arm-left{animation:armForwardL .6s ease forwards,coffeeHold 3s .6s ease-in-out infinite;transform-origin:57px 152px}.char-wrap.char-state-working .char-arm-right{animation:armForwardR .6s ease forwards;transform-origin:163px 152px}.char-wrap.char-state-working .char-lid{opacity:1}@keyframes typingL{0%,to{transform:rotate(22deg) translate(10px) translateY(0)}25%{transform:rotate(22deg) translate(10px) translateY(-5px)}75%{transform:rotate(22deg) translate(10px) translateY(3px)}}@keyframes typingR{0%,25%{transform:rotate(-22deg) translate(-10px) translateY(3px)}50%,to{transform:rotate(-22deg) translate(-10px) translateY(0)}75%{transform:rotate(-22deg) translate(-10px) translateY(-5px)}}@keyframes codeLine{0%,to{width:40px}33%{width:55px}66%{width:25px}}@keyframes cursorBlink{0%,49%{opacity:1}50%,to{opacity:0}}.char-wrap.char-state-typing .char-arm-left{animation:typingL .5s ease-in-out infinite;transform-origin:57px 152px}.char-wrap.char-state-typing .char-arm-right{animation:typingR .5s ease-in-out infinite;transform-origin:163px 152px}.char-wrap.char-state-typing .char-code1{animation:codeLine 1.2s ease-in-out infinite}.char-wrap.char-state-typing .char-code2{animation:codeLine 1.2s ease-in-out infinite .3s}.char-wrap.char-state-typing .char-code3{animation:codeLine 1.2s ease-in-out infinite .6s}.char-wrap.char-state-typing .char-cursor{animation:cursorBlink .8s step-end infinite}@keyframes armRelaxL{0%,to{transform:rotate(5deg)}50%{transform:rotate(8deg)}}@keyframes armRelaxR{0%,to{transform:rotate(-5deg)}50%{transform:rotate(-8deg)}}@keyframes stretchHead{0%,to{transform:rotate(0)}50%{transform:rotate(6deg)}}.char-wrap.char-state-done .char-arm-left{animation:armRelaxL 4s ease-in-out infinite;transform-origin:57px 152px}.char-wrap.char-state-done .char-arm-right{animation:armRelaxR 4s ease-in-out infinite;transform-origin:163px 152px}.char-wrap.char-state-done .char-head{animation:stretchHead 4s ease-in-out infinite;transform-origin:110px 148px}@keyframes pointLeft{0%,to{transform:rotate(-28deg) translateY(-6px)}50%{transform:rotate(-24deg) translateY(-9px)}}.char-wrap.char-state-calendar .char-arm-left{animation:pointLeft 2s ease-in-out infinite;transform-origin:57px 152px}@keyframes moneyShrug{0%,to{transform:rotate(-15deg) translateY(0)}50%{transform:rotate(-20deg) translateY(-6px)}}@keyframes sparkleFloat{0%{opacity:1;transform:translateY(0) rotate(0)}to{opacity:0;transform:translateY(-20px) rotate(20deg)}}.char-wrap.char-state-money .char-arm-left{animation:moneyShrug 1.8s ease-in-out infinite;transform-origin:57px 152px}.char-wrap.char-state-money .char-sparkle1{animation:sparkleFloat 1.5s ease-out infinite}.char-wrap.char-state-money .char-sparkle2{animation:sparkleFloat 1.5s ease-out infinite .5s}@keyframes clockPeek{0%,to{transform:rotate(-40deg) translateY(-10px)}50%{transform:rotate(-35deg) translateY(-13px)}}.char-wrap.char-state-clock .char-arm-left{animation:clockPeek 2s ease-in-out infinite;transform-origin:57px 152px}.char-hour-hand{animation:none}.char-min-hand{animation:spinSlow 6s linear infinite;transform-origin:79px 244px}@keyframes spinSlow{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes calcTap{0%,to{transform:rotate(25deg) translate(8px) translateY(0)}50%{transform:rotate(25deg) translate(8px) translateY(-4px)}}.char-wrap.char-state-calculating .char-arm-left{animation:calcTap .4s ease-in-out infinite;transform-origin:57px 152px}.char-wrap.char-state-calculating .char-arm-right{animation:calcTap .4s ease-in-out infinite .2s;transform-origin:163px 152px}@keyframes armsUp{0%,to{transform:rotate(-60deg) translateY(-10px)}50%{transform:rotate(-55deg) translateY(-14px)}}@keyframes armsUpR{0%,to{transform:rotate(60deg) translateY(-10px)}50%{transform:rotate(55deg) translateY(-14px)}}@keyframes confettiFly1{0%{opacity:1;transform:translate(0) rotate(0) scale(1)}to{opacity:0;transform:translate(-20px,-40px) rotate(-30deg) scale(.7)}}@keyframes confettiFly2{0%{opacity:1;transform:translate(0) rotate(0) scale(1)}to{opacity:0;transform:translate(25px,-35px) rotate(20deg) scale(.8)}}@keyframes confettiFly3{0%{opacity:1;transform:translate(0) scale(1)}to{opacity:0;transform:translate(15px,-28px) scale(.6)}}@keyframes confettiFly4{0%{opacity:1;transform:translate(0) scale(1)}to{opacity:0;transform:translate(-10px,-32px) scale(.7)}}@keyframes bigSmile{0%,to{d:path("M99 120 Q110 130 121 120")}50%{d:path("M96 118 Q110 132 124 118")}}.char-wrap.char-state-result .char-arm-left{animation:armsUp 1.2s ease-in-out infinite;transform-origin:57px 152px}.char-wrap.char-state-result .char-arm-right{animation:armsUpR 1.2s ease-in-out infinite;transform-origin:163px 152px}.char-wrap.char-state-result .char-confetti1{animation:confettiFly1 1.4s ease-out infinite}.char-wrap.char-state-result .char-confetti2{animation:confettiFly2 1.6s ease-out infinite .2s}.char-wrap.char-state-result .char-confetti3{animation:confettiFly3 1.3s ease-out infinite .5s}.char-wrap.char-state-result .char-confetti4{animation:confettiFly4 1.5s ease-out infinite .8s}.char-wrap.char-state-result .char-mouth{d:path("M96 118 Q110 132 124 118");stroke:#c0392b}.char-wrap.char-state-result .char-brow-l,.char-wrap.char-state-result .char-brow-r{transform:translateY(-3px)}@keyframes mouthOh{0%,to{d:path("M103 122 Q110 128 117 122")}50%{d:path("M103 120 Q110 130 117 120")}}.char-wrap.char-state-money .char-mouth{animation:mouthOh 1.5s ease-in-out infinite}.char-wrap.char-state-calculating .char-brow-l{transform:rotate(-8deg) translateY(-1px);transform-origin:94px 84px}.char-wrap.char-state-calculating .char-brow-r{transform:rotate(8deg) translateY(-1px);transform-origin:126px 84px}.char-arm-left,.char-arm-right,.char-head,.char-coffee,.char-laptop,.char-calendar,.char-money,.char-clock,.char-calcprop,.char-celebrate{transition:opacity .35s ease}@keyframes charStatePop{0%{transform:translateY(0) scale(1)}30%{transform:translateY(-12px) scale(1.04)}60%{transform:translateY(-6px) scale(1.01)}to{transform:translateY(0) scale(1)}}.char-wrap.char-state-working,.char-wrap.char-state-result{animation:charStatePop .5s cubic-bezier(.34,1.56,.64,1),charFloat 3.6s .5s ease-in-out infinite}.auth-page{min-height:100vh;background:var(--bg);display:flex;align-items:center;justify-content:center;padding:24px 16px}.auth-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:36px 32px;width:100%;max-width:400px;box-shadow:var(--shadow-lg)}.auth-logo{display:flex;align-items:center;gap:12px;margin-bottom:24px}.auth-title{font-size:22px;font-weight:700;color:var(--text);margin-bottom:6px}.auth-sub{font-size:13px;color:var(--text-muted);margin-bottom:24px}.auth-form{display:flex;flex-direction:column;gap:16px}.auth-field{display:flex;flex-direction:column;gap:6px}.auth-field label{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--text-muted)}.auth-input-wrap{position:relative;display:flex;align-items:center}.auth-input-icon{position:absolute;left:12px;color:var(--text-light);pointer-events:none}.auth-input-wrap input{width:100%;padding:10px 12px 10px 36px;border-radius:var(--radius-sm);border:1.5px solid var(--border);background:var(--bg-input);color:var(--text);font-family:var(--font);font-size:14px;outline:none;transition:border-color .15s,box-shadow .15s;color-scheme:inherit;min-width:0}.auth-input-wrap input:focus{border-color:var(--border-focus);box-shadow:0 0 0 3px #6366f126}.auth-submit{width:100%;padding:12px;font-size:15px;margin-top:4px}.auth-switch{text-align:center;margin-top:20px;font-size:13px;color:var(--text-muted)}.auth-switch a{color:var(--primary);font-weight:600;text-decoration:none}.auth-switch a:hover{text-decoration:underline}.btn-google{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;padding:11px 16px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--text);font-size:14px;font-weight:500;cursor:pointer;transition:background .15s,border-color .15s;margin-bottom:4px}.btn-google:hover:not(:disabled){background:var(--surface-hover, rgba(255,255,255,.05));border-color:var(--primary)}.btn-google:disabled{opacity:.6;cursor:not-allowed}.auth-divider{display:flex;align-items:center;gap:12px;margin:16px 0 4px;color:var(--text-muted);font-size:12px}.auth-divider:before,.auth-divider:after{content:"";flex:1;height:1px;background:var(--border)}
