.app-layout{min-height:100vh;display:flex;flex-direction:column}.app-layout .navbar{position:sticky;top:0;z-index:100;background:var(--color-primary);height:56px;box-shadow:0 2px 4px #0003}.app-layout .navbar-inner{max-width:1400px;margin:0 auto;height:100%;display:flex;align-items:center;justify-content:space-between;padding:0 1.5rem}.app-layout .navbar-left{display:flex;align-items:center;gap:2rem;height:100%}.app-layout .navbar-brand{font-size:1.25rem;font-weight:700;color:#fff;text-decoration:none;letter-spacing:.02em}.app-layout .navbar-brand:hover{text-decoration:none}.app-layout .navbar-links{display:flex;align-items:center;gap:.25rem;height:100%}.app-layout .nav-link{display:flex;align-items:center;height:100%;padding:0 .75rem;color:#ffffffb3;text-decoration:none;font-size:.875rem;font-weight:500;border-bottom:2px solid transparent;transition:color var(--transition),border-color var(--transition)}.app-layout .nav-link:hover{color:#fff;text-decoration:none}.app-layout .nav-link.active{color:#fff;border-bottom-color:var(--color-accent)}.app-layout .navbar-right{display:flex;align-items:center;gap:.75rem}.app-layout .locale-toggle{padding:.25rem .5rem;background:#ffffff1a;color:#fffc;border:1px solid rgba(255,255,255,.2);border-radius:var(--radius-sm);font-size:.75rem;font-weight:600;cursor:pointer;transition:background var(--transition),color var(--transition)}.app-layout .locale-toggle:hover{background:#fff3;color:#fff}.app-layout .user-area{display:flex;align-items:center;gap:.5rem;position:relative}.app-layout .user-badge{width:32px;height:32px;border-radius:50%;background:var(--color-accent);color:#fff;display:flex;align-items:center;justify-content:center;font-size:.6875rem;font-weight:700;letter-spacing:.03em;cursor:pointer;border:none;outline:none;transition:transform .1s ease,box-shadow .1s ease}.app-layout .user-badge:hover{transform:translateY(-1px);box-shadow:0 2px 6px #00000040}.app-layout .user-menu{position:absolute;top:calc(100% + 8px);right:0;min-width:220px;background:#fff;border:1px solid rgba(0,0,0,.08);border-radius:8px;box-shadow:0 8px 24px #0000002e;z-index:200;overflow:hidden}.app-layout .user-menu-header{padding:.625rem .875rem;border-bottom:1px solid rgba(0,0,0,.06);background:#f9fafb}.app-layout .user-menu-name{font-weight:600;font-size:.875rem;color:#111827}.app-layout .user-menu-email{font-size:.75rem;color:#6b7280;margin-top:2px}.app-layout .user-menu-item{display:block;width:100%;text-align:left;background:none;border:none;padding:.5rem .875rem;font-size:.875rem;color:#111827;cursor:pointer;text-decoration:none}.app-layout .user-menu-item:hover{background:#eff6ff}.app-layout .user-menu-item.danger{color:#b91c1c}.app-layout .user-menu-item.danger:hover{background:#fef2f2}.app-layout .user-menu-sep{height:1px;background:#0000000f;margin:.25rem 0}.app-layout .hamburger{display:none;flex-direction:column;justify-content:center;gap:4px;width:32px;height:32px;background:none;border:none;cursor:pointer;padding:4px}.app-layout .hamburger span{display:block;width:100%;height:2px;background:#fff;border-radius:1px;transition:transform var(--transition),opacity var(--transition)}.app-layout .hamburger.open span:nth-child(1){transform:translateY(6px) rotate(45deg)}.app-layout .hamburger.open span:nth-child(2){opacity:0}.app-layout .hamburger.open span:nth-child(3){transform:translateY(-6px) rotate(-45deg)}.app-layout .main-content{flex:1}@media(max-width:768px){.app-layout .hamburger{display:flex}.app-layout .navbar-links{display:none;position:absolute;top:56px;left:0;right:0;flex-direction:column;background:var(--color-primary);padding:.5rem 0;box-shadow:0 4px 6px #0003;height:auto}.app-layout .navbar-links.open{display:flex}.app-layout .nav-link{height:auto;padding:.75rem 1.5rem;border-bottom:none}.app-layout .nav-link.active{background:#ffffff1a;border-bottom:none}}.toast-stack{position:fixed;bottom:20px;right:20px;display:flex;flex-direction:column;gap:8px;z-index:3000;max-width:360px}.toast{padding:.65rem .9rem .75rem;border-radius:8px;background:#fff;box-shadow:0 4px 16px #00000026;border-left:4px solid #64748b;cursor:pointer;min-width:260px}.toast-info{border-left-color:#3b82f6}.toast-success{border-left-color:#16a34a}.toast-warning{border-left-color:#d97706}.toast-error{border-left-color:#dc2626}.toast-ai{border-left-color:var(--color-ai-500);background:linear-gradient(180deg,var(--color-ai-50) 0%,#fff 60%)}.toast-title{display:flex;align-items:center;gap:.5rem;font-weight:600;font-size:.875rem;color:#111827}.toast-icon{width:20px;height:20px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;background:#0000000f;font-size:.75rem}.toast-icon-ai{background:var(--color-ai-100);color:var(--color-ai-700)}.toast-close{margin-left:auto;background:none;border:none;font-size:1.125rem;line-height:1;color:#6b7280;cursor:pointer}.toast-body{margin-top:.25rem;font-size:.8125rem;color:#374151;line-height:1.35}.toast-enter-active,.toast-leave-active{transition:all .25s ease}.toast-enter-from,.toast-leave-to{opacity:0;transform:translate(20px)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--color-primary: #1a1a2e;--color-primary-light: #2d2d4a;--color-accent: #2563eb;--color-accent-hover: #1d4ed8;--color-bg: #f0f2f5;--color-surface: #ffffff;--color-border: #d1d5db;--color-border-light: #e5e7eb;--color-text: #1a1a2e;--color-text-secondary: #6b7280;--color-text-muted: #9ca3af;--color-success: #10b981;--color-success-bg: #d1fae5;--color-warning: #fbbf24;--color-warning-bg: #fef3c7;--color-danger: #ef4444;--color-danger-bg: #fee2e2;--color-info: #2563eb;--color-info-bg: #dbeafe;--color-ai-50: #f5f3ff;--color-ai-100: #ede9fe;--color-ai-200: #e9d5ff;--color-ai-300: #c4b5fd;--color-ai-400: #a78bfa;--color-ai-500: #8b5cf6;--color-ai-600: #7c3aed;--color-ai-700: #6d28d9;--radius: 8px;--radius-sm: 4px;--shadow: 0 1px 3px rgba(0, 0, 0, .1), 0 1px 2px rgba(0, 0, 0, .06);--shadow-md: 0 4px 6px rgba(0, 0, 0, .1), 0 2px 4px rgba(0, 0, 0, .06);--transition: .15s ease}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,sans-serif;color:var(--color-text);background:var(--color-bg);line-height:1.5;font-size:.9375rem}a{color:var(--color-accent);text-decoration:none}a:hover{text-decoration:underline}.card{background:var(--color-surface);border-radius:var(--radius);box-shadow:var(--shadow);padding:1.5rem}.btn{display:inline-flex;align-items:center;gap:.5rem;padding:.5rem 1rem;border:1px solid transparent;border-radius:6px;font-size:.875rem;font-weight:500;cursor:pointer;transition:background var(--transition),border-color var(--transition);line-height:1.4}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--color-accent);color:#fff}.btn-primary:hover:not(:disabled){background:var(--color-accent-hover)}.btn-secondary{background:var(--color-surface);color:var(--color-text);border-color:var(--color-border)}.btn-secondary:hover:not(:disabled){background:#f9fafb}.btn-danger{background:var(--color-danger);color:#fff}.btn-danger:hover:not(:disabled){background:#dc2626}.btn-sm{padding:.3rem .75rem;font-size:.8125rem}.badge{display:inline-flex;align-items:center;padding:.15rem .6rem;border-radius:9999px;font-size:.75rem;font-weight:500;line-height:1.4}.badge-green{background:var(--color-success-bg);color:#065f46}.badge-yellow{background:var(--color-warning-bg);color:#92400e}.badge-red{background:var(--color-danger-bg);color:#991b1b}.badge-blue{background:var(--color-info-bg);color:#1e40af}.badge-gray{background:#f3f4f6;color:#374151}.form-group{margin-bottom:1rem}.form-group label{display:block;font-size:.8125rem;font-weight:600;color:var(--color-text-secondary);margin-bottom:.3rem;text-transform:uppercase;letter-spacing:.03em}.form-input,.form-select,.form-textarea{width:100%;padding:.5rem .75rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:.875rem;font-family:inherit;color:var(--color-text);background:var(--color-surface);transition:border-color var(--transition),box-shadow var(--transition)}.form-input:focus,.form-select:focus,.form-textarea:focus{outline:none;border-color:var(--color-accent);box-shadow:0 0 0 3px #2563eb1a}.form-input:read-only{background:#f3f4f6}.form-input.is-invalid,.form-select.is-invalid,.form-textarea.is-invalid{border-color:var(--color-danger)}.form-input.is-invalid:focus,.form-select.is-invalid:focus,.form-textarea.is-invalid:focus{border-color:var(--color-danger);box-shadow:0 0 0 3px #ef444426}.field-error{display:flex;align-items:center;gap:.25rem;margin:.25rem 0 0;color:#b91c1c;font-size:.75rem;font-weight:500;animation:fieldErrorIn .12s ease-out}.field-error svg{flex-shrink:0}@keyframes fieldErrorIn{0%{opacity:0;transform:translateY(-2px)}to{opacity:1;transform:none}}.data-table{width:100%;border-collapse:collapse}.data-table th{text-align:left;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-secondary);padding:.75rem 1rem;border-bottom:2px solid var(--color-border-light)}.data-table td{padding:.75rem 1rem;border-bottom:1px solid var(--color-border-light);font-size:.875rem}.data-table tbody tr:hover{background:#f9fafb}.data-table tbody tr{cursor:pointer;transition:background var(--transition)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000}.modal{background:var(--color-surface);border-radius:var(--radius);box-shadow:var(--shadow-md);width:100%;max-width:600px;max-height:90vh;overflow-y:auto}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.5rem;border-bottom:1px solid var(--color-border-light)}.modal-header h2{font-size:1.125rem;font-weight:600}.modal-body{padding:1.5rem}.modal-footer{display:flex;justify-content:flex-end;gap:.5rem;padding:1rem 1.5rem;border-top:1px solid var(--color-border-light)}.page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.5rem}.page-header h1{font-size:1.5rem;font-weight:700}.page-content{max-width:1400px;margin:0 auto;padding:1.5rem}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:3px}
