:root{--primary-color:#4a7cfe;--primary-light:#7ba3ff;--primary-dark:#3a62d4;--primary-ultra-light:#e8f0fe;--secondary-color:#e8a54b;--secondary-light:#f5c06a;--secondary-dark:#d4891a;--secondary-ultra-light:#fcf0e0;--success:#4caf50;--warning:#ff9800;--danger:#f44336;--info:#2196f3;--status-active:#4a7cfe;--status-low:#e8a54b;--status-expired:#e57373;--status-paused:#9e9e9e;--status-done:#607d8b;--payment-paid:#4caf50;--payment-pending:#e8a54b;--payment-overdue:#e57373;--text-primary:#2c3e50;--text-secondary:#64748b;--text-muted:#94a3b8;--text-color:#2c3e50;--background-color:#e8ecf2;--bg-pattern:url("data:image/svg+xml;charset=utf-8,%3Csvg width='60' height='60' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M30 0v60M0 30h60' fill='none' stroke='rgba(74,124,254,0.025)'/%3E%3C/svg%3E");--card-bg:#f8fafc;--card-bg-transparent:#f8fafcfa;--border-color:#dee4eb;--divider:#eef2f6;--sidebar-bg:#4a7cfe;--sidebar-bg-dark:#3a62d4;--sidebar-text:#fff;--sidebar-active:#ffffff38;--sidebar-hover:#ffffff1a;--font-family:"Noto Sans TC",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;--font-size-xs:14px;--font-size-sm:16px;--font-size-base:16px;--font-size-md:18px;--font-size-lg:20px;--font-size-xl:24px;--icon-size-lg:48px;--spacing-xs:4px;--spacing-sm:8px;--spacing-md:16px;--spacing-lg:24px;--spacing-xl:32px;--radius:12px;--radius-sm:8px;--radius-md:12px;--radius-lg:16px;--radius-xl:24px;--radius-full:9999px;--border-radius:12px;--shadow:0 4px 20px #4a7cfe14;--shadow-sm:0 2px 8px #4a7cfe0f;--shadow-md:0 4px 20px #4a7cfe14;--shadow-lg:0 8px 32px #4a7cfe1f;--sidebar-width:85px;--sidebar-collapsed-width:60px;--bottom-bar-height:64px;--transition:0.2s cubic-bezier(0.4,0,0.2,1);--transition-slow:0.35s cubic-bezier(0.4,0,0.2,1);--transition-bounce:0.25s cubic-bezier(0.34,1.56,0.64,1);--transition-fast:0.15s cubic-bezier(0.4,0,0.2,1);--focus-ring:0 0 0 3px #4a7cfe59;--focus-ring-offset:2px;--tap-highlight:#0000}*,:after,:before{box-sizing:border-box}html{font-size:16px;scroll-behavior:smooth}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:linear-gradient(165deg,#eef2f7,#e8ecf2 40%,#e3e9f0);background-attachment:fixed;color:var(--text-primary);font-family:var(--font-family);font-size:var(--font-size-sm);height:100%;letter-spacing:.01em;line-height:1.5;margin:0;padding:0}#root{height:100vh;width:100%}a{color:inherit;text-decoration:none}button{-webkit-tap-highlight-color:var(--tap-highlight);tap-highlight-color:var(--tap-highlight);cursor:pointer;font-family:var(--font-family);transition:background var(--transition),color var(--transition),transform var(--transition),box-shadow var(--transition)}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}button:focus-visible{box-shadow:var(--focus-ring);outline:none}button:active:not(:disabled){transform:scale(.98)}input,select,textarea{font-family:var(--font-family);transition:border-color var(--transition),box-shadow var(--transition)}input:focus,select:focus,textarea:focus{outline:none}input:focus-visible,select:focus-visible,textarea:focus-visible{box-shadow:0 0 0 3px #4a7cfe33}::-webkit-scrollbar{height:6px;width:6px}::-webkit-scrollbar-track{background:var(--divider);border-radius:3px}::-webkit-scrollbar-thumb{background:var(--primary-light);border-radius:3px;opacity:.6}::-webkit-scrollbar-thumb:hover{background:var(--primary-color)}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInScale{0%{opacity:0;transform:scale(.97)}to{opacity:1;transform:scale(1)}}@keyframes slideUp{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}@keyframes slideUpStagger{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.85;transform:scale(1.08)}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.page-fade-in{animation:fadeIn .4s cubic-bezier(.4,0,.2,1) both}.card{background:var(--card-bg);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);padding:var(--spacing-md);transition:box-shadow var(--transition),transform var(--transition)}.card:hover{box-shadow:var(--shadow-md)}.card:focus-visible{box-shadow:var(--shadow-md),var(--focus-ring);outline:none}[role=button].card,a.card{cursor:pointer}.badge{align-items:center;border-radius:var(--radius-full);display:inline-flex;font-size:var(--font-size-xs);font-weight:600;padding:2px 10px}.badge-success{background:#e8f5e9;color:var(--status-active)}.badge-warning{background:#fff3e0;color:var(--warning)}.badge-danger{background:#ffebee;color:var(--danger)}.badge-muted{background:#f5f5f5;color:var(--text-secondary)}.status-active{background:#e8f5e9;color:#2e7d32}.status-low{background:#fff3e0;color:#e65100}.status-expired{background:#ffebee;color:#c62828}.status-paused{background:#f5f5f5;color:#616161}.status-done{background:#eceff1;color:#455a64}.badge-payment.payment-paid{background:#e8f5e9;color:#2e7d32}.badge-payment.payment-unpaid{background:#ffebee;color:#c62828}.page-title{align-items:center;display:flex}.page-container{animation:fadeIn .35s cubic-bezier(.4,0,.2,1) both;box-sizing:border-box;margin:0 auto;max-width:1200px;padding:var(--spacing-md);width:100%}@media (max-width:480px){.page-container{padding:var(--spacing-sm)}}[tabindex]:focus-visible,a:focus-visible{border-radius:var(--radius-sm);box-shadow:var(--focus-ring);outline:none}.layout{background:var(--background-color);display:flex;height:100vh;overflow:hidden;position:relative;width:100%}.main-content{flex:1 1;margin-left:85px;min-height:100vh;overflow-x:hidden;overflow-y:auto;padding:20px;position:relative;scrollbar-color:#4a7cfe59 #4a7cfe14;scrollbar-width:thin;transition:margin var(--transition-slow);z-index:1}.sidebar{-ms-overflow-style:none;background:linear-gradient(180deg,var(--sidebar-bg) 0,var(--sidebar-bg-dark) 100%);box-shadow:4px 0 20px #4a7cfe26;display:flex;flex-direction:column;height:100vh;left:0;overflow:visible;position:fixed;scrollbar-width:none;top:0;transition:width var(--transition-slow),box-shadow var(--transition-slow);width:85px;z-index:9999}.sidebar::-webkit-scrollbar{display:block;width:6px}.sidebar::-webkit-scrollbar-track{background:#ffffff1a;border-radius:3px}.sidebar::-webkit-scrollbar-thumb{background:#ffffff4d;border-radius:3px}.sidebar::-webkit-scrollbar-thumb:hover{background:#fff6}.sidebar.collapsed{width:70px}.sidebar-logo{align-items:center;border-bottom:1px solid #ffffff1a;display:flex;justify-content:center;overflow:visible;padding:5px}.app-logo{height:80px;object-fit:contain;padding:0;transform-origin:center;transition:width var(--transition),height var(--transition);width:80px}.sidebar.collapsed .app-logo{height:50px;width:50px}.sidebar-nav{flex:1 1;overflow:visible;padding:1rem 0;width:100%}.sidebar-nav ul{align-items:center;display:flex;flex-direction:column;list-style:none;margin:0;padding:0}.sidebar-nav li{display:flex;justify-content:center;margin-bottom:10px;position:relative;width:100%}.sidebar-nav li a,.sidebar-nav li button{-webkit-tap-highlight-color:transparent;align-items:center;background:none;border:none;color:var(--sidebar-text);cursor:pointer;display:flex;flex-direction:column;font-family:var(--font-family);font-size:var(--font-size-xs);font-weight:500;justify-content:center;min-height:52px;padding:14px 0;text-decoration:none;transition:background var(--transition),color var(--transition);width:100%}.sidebar-nav li a:hover,.sidebar-nav li button:hover{background-color:var(--sidebar-hover)}.sidebar-nav li a:active,.sidebar-nav li button:active{opacity:.9}.sidebar-nav li.active a,.sidebar-nav li.active button{background-color:var(--sidebar-active)}.sidebar-nav li a:focus-visible,.sidebar-nav li button:focus-visible{box-shadow:inset 0 0 0 2px #ffffff80;outline:none}.menu-icon{align-items:center;color:var(--sidebar-text);display:flex;font-size:var(--font-size-lg);justify-content:center;transition:transform var(--transition)}.menu-icon svg{display:block;height:1.2em;width:1.2em}.sidebar-nav .nav-tooltip{background:var(--primary-dark);border-radius:var(--radius-md);box-shadow:0 4px 12px #0003;color:#fff;font-size:var(--font-size-xs);font-weight:500;left:100%;margin-left:12px;opacity:0;padding:6px 12px;pointer-events:none;position:absolute;top:50%;transform:translateY(-50%);transition:opacity .2s ease,visibility .2s ease;visibility:hidden;white-space:nowrap;z-index:10001}.sidebar-nav li a:focus-visible .nav-tooltip,.sidebar-nav li a:hover .nav-tooltip{opacity:1;visibility:visible}.sidebar-nav .nav-label{display:none}@media screen and (orientation:portrait){.layout{flex-direction:column}.main-content{margin-left:0;padding-bottom:calc(var(--bottom-bar-height) + 8px + env(safe-area-inset-bottom, 0px))}.sidebar{bottom:0;box-shadow:0 -4px 24px #4a7cfe2e;box-sizing:border-box;flex-direction:row;height:calc(var(--bottom-bar-height) + env(safe-area-inset-bottom, 0px));left:0;min-height:var(--bottom-bar-height);overflow:hidden;padding-bottom:env(safe-area-inset-bottom,0);right:0;top:auto}.sidebar,.sidebar.collapsed{width:100%}.sidebar-logo{display:none}.sidebar-nav{display:flex;height:var(--bottom-bar-height);justify-content:center}.sidebar-nav,.sidebar-nav ul{align-items:center;padding:0;width:100%}.sidebar-nav ul{display:grid;grid-template-columns:repeat(6,1fr);height:100%;list-style:none;margin:0}.sidebar-nav li,.sidebar-nav li a,.sidebar-nav li button{align-items:center;display:flex;height:100%;justify-content:center}.sidebar-nav li a,.sidebar-nav li button{-webkit-tap-highlight-color:transparent;tap-highlight-color:#0000;border-radius:var(--radius-md);box-sizing:border-box;flex-direction:column;font-size:var(--font-size-xs);min-height:var(--bottom-bar-height);outline:none;padding:0;width:100%}.sidebar-nav li a:focus-visible,.sidebar-nav li button:focus-visible{outline:2px solid #fffc;outline-offset:-2px}.sidebar-nav .menu-icon{align-items:center!important;display:flex!important;flex-shrink:0;font-size:var(--font-size-xl)!important;justify-content:center!important;line-height:1!important;margin:0!important}.sidebar-nav .menu-icon svg{display:block!important;height:24px!important;min-height:24px!important;min-width:24px!important;vertical-align:middle!important;width:24px!important}.sidebar-nav .nav-tooltip{display:none}.sidebar-nav li.active a,.sidebar-nav li.active button{background:#ffffff38}}@media (max-width:768px) and (orientation:landscape){.sidebar{width:var(--sidebar-collapsed-width)}.sidebar-logo-text{opacity:0}.sidebar-nav .nav-tooltip{display:none}.main-content{margin-left:var(--sidebar-collapsed-width)}}.page-container:after{content:"";display:block;height:160px}.child-avatar-container{align-items:center;bottom:20px;cursor:pointer;display:flex;justify-content:center;position:fixed;right:20px;transition:transform var(--transition-bounce);z-index:100}.child-avatar-container:hover{transform:scale(1.06)}.child-avatar-container:active{transform:scale(.98)}.child-avatar-container:focus-visible{border-radius:50%;box-shadow:var(--focus-ring);outline:none}.child-avatar-emoji{align-items:center;display:flex;font-size:var(--font-size-xl);justify-content:center}.child-avatar-emoji,.child-avatar-image{border-radius:50%;height:115px;width:115px}.child-avatar-image{object-fit:contain}.child-avatar-bubble{word-wrap:break-word;animation:child-avatar-bubble-appear .3s ease-out;background:#fffffffa;border:2px solid var(--primary-light);border-radius:20px;bottom:120px;box-shadow:0 6px 20px #6b4fa033;color:var(--text-primary);font-size:1.15rem;font-weight:500;line-height:1.5;max-width:300px;min-width:180px;overflow-wrap:break-word;padding:20px 22px;position:absolute;right:0;white-space:normal;z-index:101}.child-avatar-bubble:after{border:8px solid #0000;border-top-color:#fffffffa;bottom:-8px;content:"";position:absolute;right:20px}@keyframes child-avatar-bubble-appear{0%{opacity:0;transform:translateY(12px) scale(.92)}to{opacity:1;transform:translateY(0) scale(1)}}@media (max-width:768px){.child-avatar-emoji,.child-avatar-image{height:90px;width:90px}.child-avatar-bubble{bottom:95px;font-size:1.05rem;max-width:260px;padding:16px 18px}}@media screen and (orientation:portrait){.child-avatar-container{bottom:calc(var(--bottom-bar-height) + 12px + env(safe-area-inset-bottom, 0px));right:16px}.child-avatar-emoji{font-size:var(--font-size-lg)}.child-avatar-emoji,.child-avatar-image{height:100px;width:100px}.child-avatar-bubble{bottom:108px;font-size:1.05rem;max-width:260px;padding:16px 18px}}@media (max-width:640px){.child-avatar-container{bottom:10px;right:10px}.child-avatar-emoji,.child-avatar-image{height:90px;width:90px}.child-avatar-bubble{bottom:98px;font-size:1rem;max-width:240px;padding:14px 16px}}@media (max-width:640px) and (orientation:portrait){.child-avatar-container{bottom:calc(var(--bottom-bar-height) + 5px + env(safe-area-inset-bottom, 0px));right:5px}.child-avatar-emoji,.child-avatar-image{height:100px;width:100px}.child-avatar-bubble{bottom:108px;font-size:1rem;max-width:240px;padding:14px 16px}}.offline-modal-overlay{align-items:center;animation:offline-fadeIn .3s ease-out;background:#0009;bottom:0;display:flex;justify-content:center;left:0;padding:20px;position:fixed;right:0;top:0;z-index:1000000}.offline-modal{animation:offline-slideUp .3s ease-out;background:#fff;border-radius:var(--radius-lg);box-shadow:0 20px 40px #0003;max-width:420px;width:100%}.offline-modal-header{padding:20px 24px 0}.offline-modal-header h2{color:var(--text-primary);font-size:var(--font-size-lg);font-weight:600;margin:0}.offline-modal-content{padding:20px 24px 24px}.offline-icon-large{align-items:center;display:flex;justify-content:center;margin-bottom:16px}.offline-description{color:var(--text-secondary);font-size:var(--font-size-sm);line-height:1.6;margin-bottom:var(--spacing-lg);text-align:center}.offline-modal-actions{display:flex;flex-direction:column;gap:10px}.offline-btn-primary{background:linear-gradient(135deg,var(--primary-color),var(--primary-dark));border:none;border-radius:var(--radius-sm);color:#fff;cursor:pointer;font-size:var(--font-size-sm);font-weight:500;padding:12px var(--spacing-lg);transition:all .2s ease}.offline-btn-primary:hover{box-shadow:0 4px 12px #4a7cfe4d;opacity:.95}.offline-btn-secondary{background:#0000;border:1px solid var(--divider);border-radius:var(--radius-sm);color:var(--text-secondary);cursor:pointer;font-size:var(--font-size-sm);padding:12px var(--spacing-lg);transition:all .2s ease}.offline-btn-secondary:hover{background:#0000000a}.offline-no-data-overlay{align-items:center;background:#000000b3;bottom:0;display:flex;justify-content:center;left:0;padding:20px;position:fixed;right:0;top:0;z-index:1000001}@keyframes offline-fadeIn{0%{opacity:0}to{opacity:1}}@keyframes offline-slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.install-prompt-overlay{align-items:center;animation:fadeIn .25s ease-out;background:#0009;display:flex;height:100%;justify-content:center;left:0;position:fixed;top:0;width:100%;z-index:9999}.install-prompt-container{animation:slideUp .3s cubic-bezier(.4,0,.2,1);background:var(--card-bg);border-radius:var(--radius-xl);box-shadow:var(--shadow-lg),0 16px 48px #0003;max-height:90vh;max-width:90%;overflow-y:auto;padding:var(--spacing-lg);width:420px}.install-instructions-container{text-align:left;width:480px}.install-prompt-title{color:var(--primary-color);font-size:var(--font-size-lg);font-weight:700;margin:0 0 16px}.pwa-benefits{margin:16px 0;text-align:left}.pwa-benefits h3{color:var(--text-primary);font-size:var(--font-size-md);margin:0 0 12px}.benefits-list{list-style:none;margin:0;padding:0}.benefits-list li{align-items:center;border-bottom:1px solid var(--divider);display:flex;font-size:var(--font-size-sm);gap:10px;line-height:1.4;padding:8px 0}.benefit-icon{display:inline-flex;flex-shrink:0}.benefits-list li:last-child{border-bottom:none}.install-actions{margin:20px 0}.manual-install,.one-click-install{text-align:center}.primary-button{background:var(--primary-color);border:none;border-radius:var(--radius-md);color:#fff;cursor:pointer;font-size:1rem;font-weight:600;padding:12px 28px;transition:background var(--transition),transform var(--transition)}.primary-button:hover{background:var(--primary-dark);box-shadow:0 4px 12px #4a7cfe4d}.primary-button:focus-visible{box-shadow:0 0 0 3px #4a7cfe59;outline:none}.install-note{color:#666;font-size:.85rem;margin-top:8px}.browser-info{background:var(--divider);border-radius:var(--radius-md);margin:var(--spacing-md) 0;padding:var(--spacing-md)}.browser-info p{font-size:.95rem;margin:0}.install-instructions{margin:16px 0}.instruction-steps ol{margin:0;padding-left:20px}.instruction-steps li{font-size:.95rem;line-height:1.5;margin-bottom:8px}.install-prompt-buttons{display:flex;flex-wrap:wrap;gap:12px;justify-content:center;margin-top:20px}.install-prompt-button{border:none;border-radius:8px;cursor:pointer;font-size:.95rem;font-weight:600;padding:10px 20px}.close-button{background:var(--divider);border:2px solid var(--border-color);color:var(--text-secondary)}.close-button:hover{background:var(--border-color);color:var(--text-primary)}.install-prompt-loading{display:flex;justify-content:center;margin:20px 0}.install-prompt-spinner{animation:install-spin 1s linear infinite;border:3px solid #4a7cfe4d;border-radius:50%;border-top-color:#4a7cfe;height:40px;width:40px}@keyframes install-spin{to{transform:rotate(1turn)}}@media (max-width:480px){.install-prompt-container{padding:20px;width:95%}.install-instructions-container{width:95%}.install-prompt-buttons{flex-direction:column}.install-prompt-button{width:100%}}.version-update-overlay{align-items:center;background:#0009;display:flex;height:100%;justify-content:center;left:0;position:fixed;top:0;width:100%;z-index:10000}.version-update-modal{animation:slideUp .3s cubic-bezier(.4,0,.2,1);background:var(--card-bg);border-radius:var(--radius-xl);box-shadow:var(--shadow-lg),0 16px 48px #0003;margin:var(--spacing-md);max-width:400px}.version-update-content{padding:24px;text-align:center}.version-update-icon{align-items:center;display:flex;justify-content:center;margin-bottom:12px}.version-update-title{color:var(--text-primary);font-size:var(--font-size-lg);font-weight:700;margin-bottom:var(--spacing-sm)}.version-update-type{border-radius:20px;display:inline-block;font-size:.8rem;font-weight:700;margin-bottom:12px;padding:4px 12px}.version-update-type.major{background:#e74c3c;color:#fff}.version-update-type.minor{background:#3498db;color:#fff}.version-update-type.patch{background:#27ae60;color:#fff}.version-update-type.forced{background:#e74c3c;color:#fff}.version-numbers{align-items:center;background:var(--divider);border-radius:var(--radius-md);display:flex;gap:var(--spacing-sm);justify-content:center;margin:var(--spacing-md) 0;padding:var(--spacing-md)}.version-numbers .current{color:var(--danger);font-weight:700}.version-numbers .arrow{color:var(--text-muted)}.version-numbers .latest{color:var(--success);font-weight:700}.version-info{background:var(--primary-ultra-light);border-left:4px solid var(--primary-color);border-radius:var(--radius-md);margin:var(--spacing-md) 0;padding:var(--spacing-md);text-align:left}.version-info h4{font-size:var(--font-size-md);margin:0 0 var(--spacing-xs) 0}.version-info p{color:var(--text-secondary);font-size:var(--font-size-sm);line-height:1.5;margin:0}.version-update-actions{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin-top:16px}.update-button{border:none;border-radius:8px;cursor:pointer;font-size:1rem;font-weight:700;min-width:120px;padding:12px 24px}.update-button.primary{background:var(--primary-color);color:#fff}.update-button.primary:hover:not(:disabled){background:var(--primary-dark);box-shadow:0 4px 12px #4a7cfe4d}.update-button.secondary{background:var(--divider);color:var(--text-primary)}.update-button.secondary:hover:not(:disabled){background:var(--border-color)}.update-button:disabled{cursor:not-allowed;opacity:.7}.updating-status{align-items:center;color:#4a7cfe;display:flex;gap:10px}.updating-spinner{animation:version-spin 1s linear infinite;border:2px solid #eee;border-radius:50%;border-top-color:#4a7cfe;height:20px;width:20px}@keyframes version-spin{to{transform:rotate(1turn)}}.update-note{color:#888;font-size:.8rem;margin-top:12px}.cv-auth-container{align-items:center;display:flex;height:auto;justify-content:space-between;min-height:100vh;overflow-x:hidden;overflow-y:auto;padding:10px 0;position:relative;width:100%}.cv-auth-left{background-color:initial;border-radius:15px;box-shadow:none;display:flex;flex:1 1;flex-direction:column;height:100%;margin:0;padding:2rem;position:relative}.cv-auth-logo{align-items:center;display:flex;margin-bottom:3rem}.cv-logo-text{color:var(--primary-color);font-family:var(--font-family);font-size:3.5rem;font-weight:700;letter-spacing:2px;margin-top:20px;text-align:left;text-shadow:2px 2px 4px #ffffffb3}.cv-auth-platform{margin-bottom:2rem}.cv-auth-platform h2{color:var(--primary-dark);font-size:2rem;font-weight:600}.cv-auth-platform h2,.cv-auth-platform p{font-family:var(--font-family);text-shadow:1px 1px 3px #ffffffb3}.cv-auth-platform p{color:var(--text-primary);font-size:1.2rem;font-weight:400;max-width:80%}.cv-auth-right{-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background-color:#ffffff4d;border-radius:15px;box-shadow:0 8px 32px #0000001a;box-sizing:border-box;display:flex;flex:0.6 1;flex-direction:column;justify-content:center;margin:15px;max-width:350px;padding:1.75rem 2rem;position:relative;width:100%;z-index:2}.cv-auth-form{font-family:var(--font-family);margin:0 auto;max-width:320px;padding-top:.75rem;width:100%}.cv-auth-form h2{color:#333;font-size:1.6rem;font-weight:600;margin-bottom:1.25rem;margin-top:0;text-align:center}.cv-auth-error{background-color:#ffdede;border-radius:8px;color:#d32f2f;margin-bottom:1rem;padding:.8rem;text-align:center}.cv-auth-webview-warning{align-items:flex-start;background-color:#fff3cd;border-radius:8px;color:#856404;display:flex;font-size:.9rem;gap:.5rem;margin-bottom:1rem;padding:.75rem 1rem}.cv-auth-webview-warning-icon{color:#856404;flex-shrink:0;margin-top:.1rem}.cv-auth-webview-warning-title{font-weight:600;margin:0 0 .25rem}.cv-auth-webview-warning-desc{font-weight:400;margin:0}.cv-auth-methods{display:flex;flex-direction:column;gap:0;margin-bottom:1.25rem}.cv-google-btn{align-items:center;background-color:#fff;border:2px solid var(--border-color);border-radius:var(--radius-md);color:var(--text-primary);cursor:pointer;display:flex;flex-direction:row;font-size:1rem;font-weight:500;justify-content:center;margin-bottom:0;padding:1rem 1.25rem;transition:all var(--transition);width:100%}.cv-google-btn:hover:not(:disabled){background-color:var(--primary-ultra-light);border-color:var(--primary-color);box-shadow:var(--shadow-sm);transform:translateY(-1px)}.cv-google-btn:active:not(:disabled){transform:translateY(0)}.cv-google-btn:focus-visible{box-shadow:0 0 0 3px #4a7cfe59;outline:none}.cv-google-btn:disabled{cursor:not-allowed;opacity:.7}.cv-google-icon{height:24px;margin-right:12px;object-fit:contain;width:24px}.cv-google-btn span{color:#3c4043;font-size:1rem;font-weight:400}.cv-auth-divider{align-items:center;color:#666;display:flex;flex-shrink:0;font-size:.95rem;margin:1.25rem 0}.cv-auth-divider:after,.cv-auth-divider:before{background-color:#ddd;content:"";flex:1 1;height:1px;min-width:0}.cv-auth-divider span{padding:0 1rem;white-space:nowrap}.cv-auth-register{color:#666;font-size:.9rem;margin-top:.25rem;text-align:center}.cv-guest-link{background:#0000!important;border:none!important;border-radius:0!important;box-shadow:none!important;color:#007bff!important;cursor:pointer!important;font-size:inherit!important;outline:none!important;padding:0!important;text-decoration:underline!important}.cv-guest-link:hover:not(:disabled){background:#0000!important;color:#0056b3!important}.cv-guest-link:disabled{cursor:not-allowed;opacity:.7}.cv-guest-modal-overlay{align-items:center;animation:fadeIn .2s ease-out;background:#00000080;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1000}.cv-guest-modal-content{animation:slideUp .3s cubic-bezier(.4,0,.2,1);background:var(--card-bg);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg),0 16px 48px #00000026;max-width:400px;padding:var(--spacing-lg);width:90%}.cv-guest-modal-header{margin-bottom:var(--spacing-md);text-align:center}.cv-guest-modal-header h3{color:var(--text-primary);font-size:var(--font-size-lg);font-weight:700;margin:0}.cv-guest-modal-body{margin-bottom:var(--spacing-lg)}.cv-guest-modal-warning{background:#fff8e1;border:1px solid #ffe082;border-radius:var(--radius-md);color:#795548;font-size:var(--font-size-xs);line-height:1.5;margin-bottom:var(--spacing-md);padding:var(--spacing-md);text-align:center}.cv-guest-modal-warning .cv-guest-modal-warning-icon{display:inline-flex;margin-right:8px;vertical-align:middle}.cv-guest-modal-question{color:var(--text-secondary);font-size:var(--font-size-sm);margin-bottom:0;margin-top:var(--spacing-md);text-align:center}.cv-guest-modal-footer{display:flex;gap:var(--spacing-sm);justify-content:center}.cv-guest-modal-btn{border-radius:var(--radius-md);cursor:pointer;font-family:var(--font-family);font-size:var(--font-size-sm);font-weight:600;padding:10px 20px;transition:background var(--transition),border-color var(--transition),box-shadow var(--transition)}.cv-guest-modal-btn-cancel{background:#0000;border:2px solid var(--border-color);color:var(--text-secondary)}.cv-guest-modal-btn-cancel:hover{border-color:var(--primary-color);color:var(--primary-color)}.cv-guest-modal-btn-confirm{background:var(--primary-color);border:none;color:#fff}.cv-guest-modal-btn-confirm:hover:not(:disabled){background:var(--primary-dark);box-shadow:var(--shadow-md)}.cv-guest-modal-btn-confirm:disabled{cursor:not-allowed;opacity:.6}.cv-guest-modal-btn:focus-visible{box-shadow:var(--focus-ring);outline:none}@media (max-width:768px){.cv-auth-container{flex-direction:column;height:auto;min-height:100vh;overflow-y:auto;padding:10px 0}.cv-auth-left{height:auto;justify-content:flex-start;min-height:30vh;padding:1.5rem 1rem}.cv-auth-logo{margin-bottom:1.5rem}.cv-logo-text{font-size:2.5rem;margin-top:10px}.cv-auth-platform{margin-bottom:1rem}.cv-auth-platform h2{font-size:1.5rem}.cv-auth-platform p{font-size:1rem;max-width:100%}.cv-auth-right{flex:0 1;margin:10px 10px 20px;max-width:90%;padding:1.2rem 1rem}.cv-auth-form{padding-top:.5rem}}@media (max-width:480px){.cv-auth-container{padding:5px 0}.cv-auth-left{min-height:25vh;padding:1rem .8rem}.cv-auth-logo{margin-bottom:1rem}.cv-logo-text{font-size:2rem;margin-top:5px}.cv-auth-platform h2{font-size:1.3rem}.cv-auth-platform p{font-size:.9rem}.cv-auth-right{margin:8px 8px 15px;padding:1rem .8rem}.cv-auth-form h2{font-size:1.4rem;margin-bottom:1rem}.cv-auth-divider{margin:1.5rem 0}}@media screen and (orientation:portrait){.cv-auth-container{align-items:center;flex-direction:column;justify-content:flex-start;min-height:100vh;overflow-y:auto;padding:10px 0}.cv-auth-left{flex:none;margin-bottom:1rem;margin-top:20px!important;min-height:auto;padding:1rem;text-align:center;width:100%}.cv-auth-logo{display:flex!important;justify-content:center;margin-bottom:1.5rem}.cv-logo-text{display:block!important;font-size:2.8rem!important;font-weight:700;margin:0!important;opacity:1!important;visibility:visible!important}.cv-auth-platform{margin-bottom:0}.cv-auth-platform h2{font-size:2rem!important;font-weight:600;line-height:1.4;margin-bottom:1.5rem}.cv-auth-platform p{font-size:1.2rem!important;line-height:1.8;margin:0 auto 1rem;max-width:90%}.cv-auth-right{-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px);background-color:#fff3;border-radius:20px;box-shadow:0 12px 40px #00000026;flex:none;margin:0 auto;max-width:400px;padding:2.5rem 1.5rem;position:relative;top:auto;transform:none;width:90%}.cv-auth-form{max-width:100%;padding-top:0}.cv-auth-form h2{font-size:1.8rem!important;font-weight:600;line-height:1.3}.cv-auth-form h2,.cv-auth-methods{margin-bottom:2rem}.cv-google-btn{margin-bottom:0;padding:1rem 1.5rem}.cv-auth-divider{margin:1.5rem 0}}@media screen and (orientation:portrait) and (max-width:480px){.cv-auth-container{padding:5px 0}.cv-auth-left{margin-top:10px!important;padding:.8rem 1rem}.cv-auth-left,.cv-auth-logo{margin-bottom:1rem}.cv-logo-text{display:block!important;font-size:2.2rem!important;margin:0!important;visibility:visible!important}.cv-auth-platform h2{font-size:1.6rem!important;line-height:1.4;margin-bottom:1.2rem}.cv-auth-platform p{font-size:1rem!important;line-height:1.6;margin-bottom:1rem}.cv-auth-right{margin-top:0;padding:2rem 1rem;width:95%}.cv-auth-form h2{font-size:1.5rem!important;margin-bottom:1.5rem}.cv-google-btn{padding:.8rem 1rem}}.auth-container{align-items:center;background-color:var(--background-color);background-image:var(--bg-pattern),linear-gradient(135deg,#e8f5e9 0,#f5f8ff 100%);background-repeat:repeat;background-size:200px,cover;display:flex;justify-content:center;min-height:100vh;padding:20px}.auth-card{animation:bounce-in .5s ease;background-color:#fff;border:3px solid #e0e6ed;border-radius:var(--border-radius);box-shadow:var(--shadow);max-width:450px;padding:30px;width:100%}@keyframes bounce-in{0%{opacity:0;transform:scale(.8)}70%{transform:scale(1.05)}to{opacity:1;transform:scale(1)}}.auth-header{margin-bottom:30px;text-align:center}.auth-icon{color:var(--primary-color);font-size:var(--font-size-xl);margin-bottom:15px}.auth-header h2{color:var(--primary-dark);font-size:var(--font-size-lg);margin-bottom:8px}.auth-header p{color:#777;font-size:var(--font-size-sm)}.auth-form,.form-group{margin-bottom:20px}.form-group label{align-items:center;color:var(--text-color);display:flex;font-size:var(--font-size-xs);font-weight:700;margin-bottom:8px}.form-group label svg{color:var(--primary-color);margin-right:8px}.form-group input{border:2px solid #ddd;border-radius:var(--border-radius);font-size:var(--font-size-sm);padding:12px 15px;transition:all .3s ease;width:100%}.form-group input:focus{border-color:var(--primary-color);box-shadow:0 0 0 3px #4caf5033;outline:none}.auth-button{background-color:var(--primary-color);border:none;border-radius:var(--border-radius);box-shadow:0 4px 6px #0000001a;color:#fff;cursor:pointer;font-size:var(--font-size-sm);font-weight:700;padding:12px;transition:all .3s ease;width:100%}.auth-button:hover{background-color:var(--primary-dark);box-shadow:0 6px 10px #00000026;transform:translateY(-2px)}.auth-button:disabled{background-color:#ccc;box-shadow:none;cursor:not-allowed;transform:none}.auth-error{background-color:#fdeded;border-left:4px solid #f44336;color:#f44336}.auth-error,.auth-success{border-radius:var(--border-radius);font-size:var(--font-size-xs);margin-bottom:20px;padding:12px}.auth-success{border-left:4px solid #4caf50}.auth-button.secondary{background-color:#f5f5f5;border:1px solid #ddd;color:#333;margin-top:10px}.auth-button.secondary:hover{background-color:#e0e0e0}.email-verification-content{text-align:center}.verification-icon{color:#ff9800;font-size:var(--font-size-xl);margin-bottom:20px}.verification-message{color:#555;font-size:var(--font-size-sm);margin-bottom:10px}.verification-email{background-color:#f5f5f5;border-radius:var(--border-radius);color:#333;display:inline-block;font-size:var(--font-size-sm);margin-bottom:20px;padding:10px}.verification-instructions{color:#666;font-size:var(--font-size-xs);line-height:1.5;margin-bottom:25px}.back-link{align-items:center;color:var(--primary-color);display:inline-flex;font-size:var(--font-size-xs);margin-top:20px;text-decoration:none}.back-link svg{margin-right:5px}.auth-footer{color:#777;font-size:var(--font-size-xs);margin-top:20px;text-align:center}.auth-footer a{color:var(--primary-color);font-weight:700;text-decoration:none;transition:color .3s ease}.auth-footer a:hover{color:var(--primary-dark);text-decoration:underline}.auth-content{padding:10px 0;text-align:center}.loading-spinner{animation:spin 1s linear infinite;border:5px solid #4caf5033;border-radius:50%;border-top:5px solid var(--primary-color);display:inline-block;height:50px;margin-bottom:20px;width:50px}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.error-icon,.success-icon{font-size:var(--font-size-xl);margin-bottom:20px}.error-icon{color:#f44336}.email-display{background-color:#f5f5f5;border-radius:var(--border-radius);color:#333;display:inline-block;font-size:var(--font-size-sm);margin-bottom:20px;padding:10px}@media (max-width:500px){.auth-card{padding:20px}.auth-icon{font-size:var(--font-size-xl)}.auth-header h2{font-size:var(--font-size-lg)}}.auth-divider{color:var(--text-secondary);margin:20px 0}.auth-divider:after,.auth-divider:before{background-color:var(--border-color);flex:1 1}.auth-divider span{padding:0 15px}.google-auth-button{align-items:center;background-color:#fff;border:1px solid var(--border-color);border-radius:30px;box-shadow:0 1px 3px #0000001a;color:#333;cursor:pointer;display:flex;font-size:var(--font-size-sm);font-weight:500;justify-content:center;margin-bottom:20px;padding:12px;transition:all .3s ease;width:100%}.google-auth-button:hover{background-color:#f5f5f5;box-shadow:0 2px 5px #00000026}.google-auth-button:disabled{cursor:not-allowed;opacity:.7}.google-auth-button span{margin-left:10px}.auth-login-container{align-items:center;background-position:bottom;background-repeat:no-repeat;background-size:cover;display:flex;height:auto;justify-content:space-between;min-height:100vh;overflow-x:hidden;overflow-y:auto;padding:10px 0;position:relative;width:100%}.auth-login-left{background-color:initial;border-radius:15px;box-shadow:none;display:flex;flex:1 1;flex-direction:column;height:100%;margin:0;padding:2rem;position:relative}.auth-logo{align-items:center;display:flex;margin-bottom:3rem}.logo-icon{margin-right:10px}.logo-icon,.logo-text{font-size:var(--font-size-xl)}.logo-text{color:#4169e1;font-weight:700;letter-spacing:2px;margin-top:20px;text-align:left;text-shadow:2px 2px 4px #ffffffb3}.auth-platform{margin-bottom:2rem}.auth-platform h2{color:#2e8b57;font-size:var(--font-size-xl);text-shadow:1px 1px 3px #ffffffb3}.auth-platform p{color:#333;font-size:var(--font-size-sm);max-width:80%;text-shadow:1px 1px 3px #ffffffb3}.auth-login-right{-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background-color:#ffffff4d;border-radius:15px;box-shadow:0 8px 32px #0000001a;box-sizing:border-box;display:flex;flex:0.6 1;flex-direction:column;margin:15px;max-width:350px;padding:2rem;position:relative;width:100%;z-index:2}.auth-language{align-items:center;color:#666;display:flex;font-size:var(--font-size-xs);position:absolute;right:2rem;top:1.5rem}.auth-language svg{color:#666;margin-right:5px}.auth-login-form{margin:0 auto;max-width:320px;padding-top:2.5rem;width:100%}.auth-login-form h2{color:#333;font-size:var(--font-size-md);margin-bottom:1.5rem;margin-top:.5rem;text-align:center}.auth-login-error{background-color:#ffdede;border-radius:8px;color:#d32f2f;margin-bottom:1rem;padding:.8rem;text-align:center}.auth-input-group{margin-bottom:1.5rem;position:relative}.auth-input-group input{border:1px solid #ddd;border-radius:8px;font-size:var(--font-size-sm);padding:1rem;transition:border .3s;width:100%}.auth-input-group input:focus{border-color:#4d7cfe;outline:none}.auth-input-group.phone{display:flex}.country-code{margin-right:10px;min-width:100px}.country-code select{background-color:#f5f5f5;border:1px solid #ddd;border-radius:8px;color:#333;height:100%;padding:1rem .5rem}.auth-login-button,.country-code select{font-size:var(--font-size-sm);width:100%}.auth-login-button{background-color:#4d7cfe;border:none;border-radius:8px;color:#fff;cursor:pointer;font-weight:700;margin-bottom:1.5rem;padding:1rem;transition:background-color .3s}.auth-login-button:hover{background-color:#3a66d9}.auth-login-button:disabled{background-color:#a0b4f0;cursor:not-allowed}.auth-remember{color:#666;font-size:var(--font-size-xs);justify-content:space-between;margin-bottom:2rem}.auth-remember,.remember-left{align-items:center;display:flex}.remember-left input{margin-right:5px}.remember-right a{color:#4d7cfe;text-decoration:none}.auth-divider{align-items:center;color:#999;display:flex;font-size:var(--font-size-xs);margin:2rem 0}.auth-divider:after,.auth-divider:before{background-color:#eee;content:"";flex-grow:1;height:1px}.auth-divider span{padding:0 1rem}.auth-social-logins{display:flex;justify-content:space-between;margin-bottom:2rem}.auth-social-btn{align-items:center;background-color:#fff;border:1px solid #eee;border-radius:8px;cursor:pointer;display:flex;flex:1 1;flex-direction:column;margin:0 5px;padding:1rem .5rem;transition:all .3s}.auth-social-btn:hover{background-color:#f5f8ff;border-color:#4d7cfe}.social-icon{color:#555;font-size:var(--font-size-lg);margin-bottom:5px}.apple-icon{font-style:normal}.auth-social-btn span{color:#666;font-size:var(--font-size-xs)}.auth-social-btn.google .social-icon img{height:24px;object-fit:contain;width:24px}.auth-social-btn.guest{background-color:#f8f9fa;border-color:#6c757d}.auth-social-btn.guest:hover{background-color:#e9ecef;border-color:#495057}.auth-social-btn.guest .social-icon{color:#6c757d}.auth-social-btn.guest span{color:#495057}.auth-register{color:#666;font-size:var(--font-size-xs);text-align:center}.auth-register a{color:#4d7cfe;font-weight:700;text-decoration:none}@media (max-width:768px){.auth-login-container{flex-direction:column;height:auto;min-height:100vh;overflow-y:auto;padding:10px 0}.auth-login-left{height:auto;justify-content:flex-start;min-height:30vh;padding:1.5rem 1rem}.auth-logo{margin-bottom:1.5rem}.logo-text{font-size:var(--font-size-xl);margin-top:10px}.auth-platform{margin-bottom:1rem}.auth-platform h2{font-size:var(--font-size-lg)}.auth-platform p{font-size:var(--font-size-sm);max-width:100%}.auth-login-right{flex:0 1;margin:10px 10px 20px;max-width:90%;padding:1.2rem 1rem}.auth-login-form{padding-top:.5rem}}@media (max-width:480px){.auth-login-container{padding:5px 0}.auth-login-left{min-height:25vh;padding:1rem .8rem}.auth-logo{margin-bottom:1rem}.logo-text{font-size:var(--font-size-xl);margin-top:5px}.auth-platform h2{font-size:var(--font-size-md)}.auth-platform p{font-size:var(--font-size-xs)}.auth-login-right{margin:8px 8px 15px;padding:1rem .8rem}.auth-login-form h2{font-size:var(--font-size-md);margin-bottom:1rem}.auth-input-group{margin-bottom:1rem}.auth-input-group input{font-size:var(--font-size-xs);padding:.8rem}.auth-login-button{margin-bottom:1rem;padding:.8rem}.auth-remember{margin-bottom:1.5rem}.auth-divider{margin:1.5rem 0}}@media screen and (orientation:portrait){.auth-login-container{align-items:center;flex-direction:column;justify-content:flex-start;min-height:100vh;overflow-y:auto;padding:10px 0}.auth-login-left{flex:none;margin-bottom:1rem;margin-top:20px!important;min-height:auto;padding:1rem;text-align:center;width:100%}.auth-logo{display:flex!important;justify-content:center;margin-bottom:1.5rem}.logo-text{display:block!important;font-size:var(--font-size-xl)!important;font-weight:700;margin:0!important;opacity:1!important;visibility:visible!important}.auth-platform{margin-bottom:0}.auth-platform h2{font-size:var(--font-size-xl)!important;font-weight:600;line-height:1.4;margin-bottom:1.5rem}.auth-platform p{font-size:var(--font-size-sm)!important;line-height:1.8;margin:0 auto 1rem;max-width:90%}.auth-login-right{-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px);background-color:#fff3;border-radius:20px;box-shadow:0 12px 40px #00000026;flex:none;margin:0 auto;max-width:400px;padding:2.5rem 1.5rem;position:relative;top:auto;transform:none;width:90%}.auth-login-form{max-width:100%;padding-top:0}.auth-login-form h2{font-size:var(--font-size-lg)!important;font-weight:600;line-height:1.3;margin-bottom:2rem}.auth-login-methods{margin-bottom:2rem}.auth-social-btn{margin-bottom:1.2rem;padding:1rem 1.5rem}.auth-divider{margin:1.5rem 0}}@media screen and (orientation:portrait) and (max-width:480px){.auth-login-container{padding:5px 0}.auth-login-left{margin-top:10px!important;padding:.8rem 1rem}.auth-login-left,.auth-logo{margin-bottom:1rem}.logo-text{display:block!important;margin:0!important;visibility:visible!important}.auth-platform h2,.logo-text{font-size:var(--font-size-xl)!important}.auth-platform h2{line-height:1.4;margin-bottom:1.2rem}.auth-platform p{font-size:var(--font-size-sm)!important;line-height:1.6;margin-bottom:1rem}.auth-login-right{margin-top:0;padding:2rem 1rem;width:95%}.auth-login-form h2{font-size:var(--font-size-lg)!important;margin-bottom:1.5rem}.auth-social-btn{margin-bottom:1rem;padding:.8rem 1rem}}.auth-back{left:.5rem;position:absolute;top:.5rem;z-index:10}.back-button{align-items:center;background-color:#4caf50e6;border:none;border-radius:4px;box-shadow:0 2px 4px #0003;color:#fff;cursor:pointer;display:flex;font-size:var(--font-size-xs);min-height:0;min-width:0;padding:3px 6px}.back-button svg{font-size:var(--font-size-xs);margin-right:3px}.input-icon{color:#999;left:1rem;position:absolute;top:50%;transform:translateY(-50%)}@media screen and (orientation:portrait){.input-icon{font-size:var(--font-size-xs)}.input-icon svg{height:16px!important;width:16px!important}}.auth-input-group input{padding-left:2.8rem}.auth-login-methods{display:flex;flex-direction:column;gap:15px;margin-bottom:20px}.forgot-password-link{margin-bottom:15px;text-align:right}.forgot-password-link a{color:#4d7cfe;font-size:var(--font-size-xs);text-decoration:none}.forgot-password-link a:hover{text-decoration:underline}.forgot-password-desc{color:#666;font-size:var(--font-size-xs);line-height:1.5;margin-bottom:20px;text-align:center}.auth-success{align-items:center;background-color:#e8f5e9;border-radius:8px;color:#4caf50;display:flex;justify-content:center;margin-bottom:1rem;padding:.8rem;text-align:center}.success-icon{color:#4caf50;margin-right:8px}.guest-login-link{border:none!important;border-radius:0!important;color:#007bff!important;cursor:pointer!important;font-size:inherit!important;margin:0!important;outline:none!important;padding:0!important;text-decoration:underline!important}.guest-login-link,.guest-login-link:hover{background:#0000!important;box-shadow:none!important}.guest-login-link:hover{border:none!important;color:#0056b3!important}.guest-login-link:focus{outline:none!important}.guest-login-link:active,.guest-login-link:focus{background:#0000!important;border:none!important;box-shadow:none!important}.loading-spinner{align-items:center;display:inline-flex;justify-content:center}.loading-spinner-ring{animation:loading-spin .75s cubic-bezier(.5,0,.5,1) infinite;border:3px solid var(--border-color);border-radius:50%;border-top-color:var(--primary-color)}.loading-spinner-sm .loading-spinner-ring{border-width:2px;height:24px;width:24px}.loading-spinner-md .loading-spinner-ring{height:40px;width:40px}.loading-spinner-lg .loading-spinner-ring{border-width:4px;height:56px;width:56px}@keyframes loading-spin{to{transform:rotate(1turn)}}
/*# sourceMappingURL=main.d26df5ac.css.map*/