.navbar{border-bottom:1px solid #ddd;background-color:#fff;font-size:14px}.navbar-container{max-width:1200px;margin:0 auto;padding:8px 16px;display:flex;align-items:center;justify-content:space-between}.navbar-brand{display:flex;align-items:center}.navbar-logo{text-decoration:none;color:#000}.logo-text{font-weight:400}.navbar-menu{display:flex;align-items:center;gap:16px}.navbar-link{color:#000;text-decoration:none}.navbar-link:hover{text-decoration:underline}.navbar-user,.navbar-auth{display:flex;align-items:center;gap:12px}.user-name{color:#000;font-size:14px}.navbar-auth button,.navbar-user button{font-size:14px;padding:4px 8px}.spinner{border:3px solid rgba(0,0,0,.1);border-top-color:currentColor;border-radius:50%;animation:spin .8s linear infinite;display:inline-block}.spinner-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.spinner--sm{width:1rem;height:1rem;border-width:2px}.spinner--md{width:2rem;height:2rem;border-width:3px}.spinner--lg{width:3rem;height:3rem;border-width:4px}.spinner--primary{color:#3b82f6}.spinner--white{color:#fff;border-color:#ffffff4d;border-top-color:#fff}.spinner--dark{color:var(--color-text-darker)}.spinner-overlay{position:fixed;inset:0;background-color:#00000080;backdrop-filter:blur(2px);display:flex;align-items:center;justify-content:center;z-index:var(--z-modal)}.toast-container{position:fixed;top:var(--space-md);right:var(--space-md);z-index:var(--z-toast);display:flex;flex-direction:column;gap:var(--space-sm);max-width:400px;pointer-events:none}.toast{display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm);padding:var(--space-md);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);background-color:#fff;border-left:4px solid;animation:slideIn .3s ease;pointer-events:auto;min-width:300px}.toast-content{display:flex;align-items:center;gap:var(--space-sm);flex:1}.toast-icon{display:flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;border-radius:50%;font-weight:var(--font-weight-bold);flex-shrink:0}.toast-message{font-size:var(--font-size-base);color:var(--color-text-dark);line-height:var(--line-height-normal)}.toast-close{background:none;border:none;font-size:1.5rem;line-height:1;cursor:pointer;padding:0;width:1.5rem;height:1.5rem;display:flex;align-items:center;justify-content:center;color:var(--color-text-muted);transition:color var(--transition-base);flex-shrink:0}.toast-close:hover{color:var(--color-text-dark)}.toast--success{border-left-color:var(--color-success)}.toast--success .toast-icon{background-color:var(--color-success);color:#fff}.toast--error{border-left-color:var(--color-danger)}.toast--error .toast-icon{background-color:var(--color-danger);color:#fff}.toast--info{border-left-color:var(--color-info)}.toast--info .toast-icon{background-color:var(--color-info);color:#fff}.toast--warning{border-left-color:var(--color-warning)}.toast--warning .toast-icon{background-color:var(--color-warning);color:var(--color-text-darker)}@keyframes slideIn{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}@media (max-width: 768px){.toast-container{top:var(--space-sm);right:var(--space-sm);left:var(--space-sm);max-width:none}.toast{min-width:auto}}.error-boundary{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#667eea,#764ba2);padding:var(--space-md);z-index:9999}.error-boundary__container{background:#fff;border-radius:var(--radius-lg);padding:var(--space-xxl);max-width:600px;width:100%;box-shadow:var(--shadow-xl);text-align:center;color:var(--color-text-dark)}.error-boundary__icon{font-size:4rem;margin-bottom:var(--space-md)}.error-boundary__title{font-size:var(--font-size-xl);font-weight:var(--font-weight-bold);margin:0 0 var(--space-md) 0;color:var(--color-text-darker)}.error-boundary__message{font-size:var(--font-size-md);color:var(--color-text-muted);margin:0 0 var(--space-lg) 0;line-height:var(--line-height-relaxed)}.error-boundary__details{text-align:left;margin:var(--space-lg) 0;padding:var(--space-md);background:#f8f9fa;border-radius:var(--radius-md);border:var(--border-lighter)}.error-boundary__details summary{cursor:pointer;font-weight:var(--font-weight-medium);margin-bottom:var(--space-sm);user-select:none}.error-boundary__details summary:hover{color:var(--color-accent-primary)}.error-boundary__stack{margin:var(--space-sm) 0 0 0;padding:var(--space-md);background:#fff;border-radius:var(--radius-sm);overflow-x:auto;font-size:var(--font-size-xs);font-family:Courier New,monospace;color:var(--color-danger);white-space:pre-wrap;word-wrap:break-word}.error-boundary__actions{display:flex;gap:var(--space-sm);justify-content:center;flex-wrap:wrap;margin-top:var(--space-lg)}.error-boundary__button{padding:.75em 1.5em;border:none;border-radius:var(--radius-lg);font-family:var(--font-family-base);font-size:var(--font-size-base);font-weight:var(--font-weight-medium);cursor:pointer;transition:all var(--transition-base);min-width:120px}.error-boundary__button--primary{background-color:#3b82f6;color:#fff}.error-boundary__button--primary:hover{background-color:#2563eb;transform:translateY(-1px);box-shadow:var(--shadow-md)}.error-boundary__button--secondary{background-color:#fff;color:var(--color-text-dark);border:2px solid var(--color-border-lighter)}.error-boundary__button--secondary:hover{background-color:#f8f9fa;border-color:var(--color-border-light)}.error-boundary__button:active{transform:translateY(0)}@media (max-width: 600px){.error-boundary__container{padding:var(--space-lg)}.error-boundary__icon{font-size:3rem}.error-boundary__title{font-size:var(--font-size-lg)}.error-boundary__actions{flex-direction:column}.error-boundary__button{width:100%}}.btn{display:inline-flex;align-items:center;justify-content:center;padding:.6em 1.2em;border:none;border-radius:var(--radius-lg);font-family:var(--font-family-base);font-weight:var(--font-weight-medium);cursor:pointer;transition:all var(--transition-base);user-select:none}.btn:focus-visible{outline:2px solid var(--color-accent-primary);outline-offset:2px}.btn--primary{background-color:#3b82f6;color:#fff}.btn--primary:hover:not(:disabled){background-color:#2563eb;transform:translateY(-1px);box-shadow:var(--shadow-md)}.btn--secondary{background-color:var(--color-bg-secondary);color:var(--color-text-primary);border:2px solid var(--color-border-light)}.btn--secondary:hover:not(:disabled){background-color:var(--color-hover-bg);border-color:var(--color-border-lighter)}.btn--danger{background-color:var(--color-danger);color:#fff}.btn--danger:hover:not(:disabled){background-color:var(--color-danger-hover)}.btn--success{background-color:var(--color-success);color:#fff}.btn--sm{padding:.4em .8em;font-size:var(--font-size-sm)}.btn--md{padding:.6em 1.2em;font-size:var(--font-size-base)}.btn--lg{padding:.75em 1.5em;font-size:var(--font-size-md)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn--full-width{width:100%}.btn--loading{position:relative;color:transparent}.btn__spinner{position:absolute;width:1em;height:1em;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin .6s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.input-group{display:flex;flex-direction:column;gap:var(--space-xs);margin-bottom:var(--space-md)}.input-label{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text-secondary)}.input-required{color:var(--color-danger);margin-left:var(--space-micro)}.input{width:100%;padding:12px 16px;border:2px solid var(--color-border-lighter);border-radius:var(--radius-lg);font-size:var(--font-size-base);font-family:var(--font-family-base);background-color:#fff;color:var(--color-text-dark);transition:border-color var(--transition-base)}.input:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}.input:disabled{background-color:#f9fafb;color:#9ca3af;cursor:not-allowed}.input--error{border-color:var(--color-danger)}.input--error:focus{box-shadow:0 0 0 3px #dc35451a}.input-error{font-size:var(--font-size-sm);color:var(--color-danger);margin-top:var(--space-xs)}.login-page{max-width:800px;margin:0 auto;padding:40px 20px;line-height:1.6}.login-container{width:100%}.login-container h1{font-weight:700;font-size:16px;margin:0 0 20px}.login-form{display:flex;flex-direction:column;gap:16px;margin-bottom:16px}.login-footer{margin-top:16px}.login-footer p{margin:0}.login-footer a{color:#00f;text-decoration:underline}.register-page{max-width:800px;margin:0 auto;padding:40px 20px;line-height:1.6}.register-container{width:100%}.register-container h1{font-weight:700;font-size:16px;margin:0 0 20px}.register-form{display:flex;flex-direction:column;gap:16px;margin-bottom:16px}.register-footer{margin-top:16px}.register-footer p{margin:0}.register-footer a{color:#00f;text-decoration:underline}.home-page{max-width:800px;margin:0 auto;padding:40px 20px;line-height:1.6}.home-page h1{font-weight:700;font-size:16px;margin:0 0 20px}.home-page h2{font-weight:700;font-size:16px;margin:30px 0 10px}.home-page p{margin:0 0 16px}.home-page ul{margin:0 0 16px;padding-left:20px}.home-page li{margin-bottom:8px}.home-page a{color:#00f;text-decoration:underline}
