@charset "UTF-8";:root{--color-primary: #0d7377;--color-primary-hover: #0a5c60;--color-primary-light: #e6f4f4;--color-surface: #ffffff;--color-background: #f1f5f9;--color-border: #e2e8f0;--color-border-strong: #cbd5e1;--color-text: #0f172a;--color-text-secondary: #64748b;--color-text-disabled: #94a3b8;--color-error: #dc2626;--color-error-light: #fef2f2;--color-success: #059669;--color-success-light: #ecfdf5;--color-warning: #d97706;--color-warning-light: #fffbeb;--color-grade-distinction: #059669;--color-grade-good: #0284c7;--color-grade-pass: #d97706;--color-grade-fail: #dc2626;--shadow-xs: 0 1px 2px rgba(0, 0, 0, .05);--shadow-sm: 0 1px 3px rgba(0, 0, 0, .08), 0 1px 2px rgba(0, 0, 0, .04);--shadow-md: 0 4px 12px rgba(0, 0, 0, .08), 0 2px 4px rgba(0, 0, 0, .04);--shadow-lg: 0 12px 32px rgba(0, 0, 0, .1), 0 4px 8px rgba(0, 0, 0, .06);--shadow-xl: 0 24px 48px rgba(0, 0, 0, .12), 0 8px 16px rgba(0, 0, 0, .06);--radius-xs: 4px;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 16px;--radius-xl: 24px;--radius-full: 9999px;--font-family: "Inter", system-ui, -apple-system, sans-serif;--font-size-xs: .75rem;--font-size-sm: .875rem;--font-size-base: 1rem;--font-size-lg: 1.125rem;--font-size-xl: 1.25rem;--font-size-2xl: 1.5rem;--font-size-3xl: 1.875rem;--font-size-4xl: 2.25rem;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.25rem;--space-6: 1.5rem;--space-8: 2rem;--space-10: 2.5rem;--space-12: 3rem;--space-16: 4rem;--transition-fast: .12s ease;--transition-normal: .2s ease;--transition-slow: .3s ease}*,*:before,*:after{box-sizing:border-box}html,body{height:100%;margin:0;padding:0}body{font-family:var(--font-family);font-size:var(--font-size-base);color:var(--color-text);background:var(--color-background);line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:flex;flex-direction:column;overflow:hidden}app-root{flex:1;display:flex;flex-direction:column;min-height:0}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);padding:calc(var(--space-2) + 2px) var(--space-5);font-family:var(--font-family);font-size:var(--font-size-sm);font-weight:500;line-height:1.25;border:1.5px solid transparent;border-radius:var(--radius-sm);cursor:pointer;white-space:nowrap;text-decoration:none;transition:background-color var(--transition-fast),border-color var(--transition-fast),box-shadow var(--transition-fast),opacity var(--transition-fast);outline:none;-webkit-user-select:none;user-select:none;vertical-align:middle;letter-spacing:.01em}.btn:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.btn:disabled{opacity:.45;cursor:not-allowed;pointer-events:none}.btn-sm{padding:var(--space-1) var(--space-3);font-size:var(--font-size-xs);border-radius:var(--radius-xs)}.btn-lg{padding:var(--space-3) var(--space-8);font-size:var(--font-size-base);border-radius:var(--radius-md)}.btn-primary{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.btn-primary:hover:not(:disabled){background:var(--color-primary-hover);border-color:var(--color-primary-hover);box-shadow:var(--shadow-sm)}.btn-secondary{background:var(--color-surface);color:var(--color-primary);border-color:var(--color-primary)}.btn-secondary:hover:not(:disabled){background:var(--color-primary-light)}.btn-ghost{background:transparent;color:var(--color-text-secondary);border-color:transparent}.btn-ghost:hover:not(:disabled){background:var(--color-background);color:var(--color-text)}.btn-danger{background:var(--color-error);color:#fff;border-color:var(--color-error)}.btn-danger:hover:not(:disabled){background:#b91c1c;border-color:#b91c1c}.btn-danger-outline{background:transparent;color:var(--color-error);border-color:var(--color-error)}.btn-danger-outline:hover:not(:disabled){background:var(--color-error-light)}.btn-icon{padding:var(--space-2);width:36px;height:36px;border-radius:var(--radius-sm);background:transparent;border:none;color:var(--color-text-secondary);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:background-color var(--transition-fast),color var(--transition-fast)}.btn-icon:hover{background:var(--color-background);color:var(--color-text)}.btn-icon:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.btn-icon svg{width:18px;height:18px;flex-shrink:0}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);padding:var(--space-6)}.card-hover{transition:box-shadow var(--transition-normal),transform var(--transition-normal);cursor:pointer}.card-hover:hover{box-shadow:var(--shadow-md);transform:translateY(-1px)}.input,.textarea{display:block;width:100%;padding:var(--space-2) var(--space-3);font-family:var(--font-family);font-size:var(--font-size-sm);color:var(--color-text);background:var(--color-surface);border:1.5px solid var(--color-border-strong);border-radius:var(--radius-sm);outline:none;transition:border-color var(--transition-fast),box-shadow var(--transition-fast);appearance:none;line-height:1.5}.input::placeholder,.textarea::placeholder{color:var(--color-text-disabled)}.input:focus,.textarea:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px #0d737726}.input:disabled,.textarea:disabled{opacity:.6;cursor:not-allowed;background:var(--color-background)}.input.is-invalid,.textarea.is-invalid{border-color:var(--color-error)}.input.is-invalid:focus,.textarea.is-invalid:focus{box-shadow:0 0 0 3px #dc262626}.textarea{resize:vertical;min-height:100px}.form-label{display:block;font-size:var(--font-size-sm);font-weight:500;color:var(--color-text);margin-bottom:var(--space-1)}.field-error{font-size:var(--font-size-xs);color:var(--color-error);margin-top:var(--space-1)}.badge{display:inline-flex;align-items:center;padding:2px var(--space-2);font-size:var(--font-size-xs);font-weight:500;border-radius:var(--radius-full);white-space:nowrap;background:var(--color-background);color:var(--color-text-secondary);border:1px solid var(--color-border)}.badge-primary{background:var(--color-primary-light);color:var(--color-primary);border-color:transparent}.badge-success{background:var(--color-success-light);color:var(--color-success);border-color:transparent}.badge-warning{background:var(--color-warning-light);color:var(--color-warning);border-color:transparent}.badge-error{background:var(--color-error-light);color:var(--color-error);border-color:transparent}.spinner{display:inline-block;width:24px;height:24px;border:2.5px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;animation:spin .7s linear infinite;flex-shrink:0}.spinner-lg{width:40px;height:40px;border-width:3px}@keyframes spin{to{transform:rotate(360deg)}}.skeleton{background:linear-gradient(90deg,var(--color-background) 25%,var(--color-border) 50%,var(--color-background) 75%);background-size:200% 100%;animation:shimmer 1.4s infinite;border-radius:var(--radius-sm)}@keyframes shimmer{to{background-position:-200% 0}}.alert{padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);font-size:var(--font-size-sm);display:flex;align-items:flex-start;gap:var(--space-2)}.alert-success{background:var(--color-success-light);color:var(--color-success)}.alert-error{background:var(--color-error-light);color:var(--color-error)}.cdk-overlay-container{position:fixed;z-index:1000;inset:0;pointer-events:none}.cdk-overlay-backdrop{position:absolute;inset:0;pointer-events:auto}.cdk-overlay-dark-backdrop{background:#00000085;backdrop-filter:blur(2px)}.cdk-overlay-pane{position:absolute;pointer-events:auto;display:flex}.dialog-panel{background:var(--color-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-xl);overflow:hidden;display:flex;flex-direction:column;max-height:90vh;width:100%}.progress-bar-track{height:4px;background:var(--color-border);border-radius:var(--radius-full);overflow:hidden}.progress-bar-track .progress-bar-fill{height:100%;background:var(--color-primary);border-radius:var(--radius-full);transition:width var(--transition-slow)}.divider{height:1px;background:var(--color-border);margin:var(--space-4) 0}.flex-spacer{flex:1 1 auto}.flex-column{display:flex;flex-direction:column}.flex-row{display:flex;flex-direction:row}.flex-center{display:flex;justify-content:center;align-items:center}.flex-1{flex:1}.full-height{height:100%}.full-width{width:100%}.text-center{text-align:center}.text-secondary{color:var(--color-text-secondary)}.text-sm{font-size:var(--font-size-sm)}.text-xs{font-size:var(--font-size-xs)}.font-medium{font-weight:500}.font-semibold{font-weight:600}.font-bold{font-weight:700}.margin-auto{margin:auto}.mt-auto{margin-top:auto}.mb-auto{margin-bottom:auto}
