.shell[data-v-8bf6e1b8]{min-height:100%;display:flex;flex-direction:column}.shell-header[data-v-8bf6e1b8]{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-4);padding:var(--space-3) var(--space-5);background:var(--color-surface);border-bottom:1px solid var(--color-border)}.shell-brand[data-v-8bf6e1b8]{display:flex;align-items:baseline;gap:var(--space-2);font-weight:600}.shell-school[data-v-8bf6e1b8]{color:var(--color-primary)}.shell-app[data-v-8bf6e1b8]{color:var(--color-text-muted);font-size:.8125rem;letter-spacing:.08em}.shell-nav[data-v-8bf6e1b8]{display:flex;gap:var(--space-1);flex:1;flex-wrap:wrap}.shell-link[data-v-8bf6e1b8]{padding:var(--space-2) var(--space-3);border-radius:var(--radius);color:var(--color-text-muted);font-weight:500}.shell-link[data-v-8bf6e1b8]:hover{background:var(--color-surface-alt);text-decoration:none}.shell-link.router-link-active[data-v-8bf6e1b8]{background:var(--color-primary-soft);color:var(--color-primary)}.shell-meta[data-v-8bf6e1b8]{display:flex;align-items:center;gap:var(--space-3)}.shell-banner[data-v-8bf6e1b8]{margin:var(--space-3) var(--space-5) 0}.shell-main[data-v-8bf6e1b8]{flex:1}@media(max-width:720px){.shell-header[data-v-8bf6e1b8]{padding:var(--space-3)}.shell-nav[data-v-8bf6e1b8]{order:3;width:100%}.shell-meta[data-v-8bf6e1b8]{margin-left:auto}.shell-user[data-v-8bf6e1b8]{display:none}.shell-banner[data-v-8bf6e1b8]{margin:var(--space-3) var(--space-3) 0}}:root{--color-bg: #f6f7f9;--color-surface: #ffffff;--color-surface-alt: #f0f2f5;--color-border: #d8dce3;--color-border-strong: #b6bcc7;--color-text: #1a1d23;--color-text-muted: #5b626e;--color-primary: #1e4e79;--color-primary-hover: #17406a;--color-primary-soft: #e7eff7;--color-danger: #a8331f;--color-danger-soft: #fbeae7;--color-warning: #8a5a00;--color-warning-soft: #fdf3e0;--color-success: #1f6b3f;--color-success-soft: #e7f4ec;--radius: 6px;--radius-lg: 10px;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 24px;--space-6: 32px;--shadow: 0 1px 2px rgba(16, 24, 40, .06), 0 1px 3px rgba(16, 24, 40, .1);--font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, monospace}*,*:before,*:after{box-sizing:border-box}html,body,#app{height:100%;margin:0}body{font-family:var(--font);font-size:15px;line-height:1.5;color:var(--color-text);background:var(--color-bg);-webkit-font-smoothing:antialiased}h1,h2,h3,h4{margin:0 0 var(--space-3);line-height:1.25;font-weight:600}h1{font-size:1.5rem}h2{font-size:1.2rem}h3{font-size:1.05rem}p{margin:0 0 var(--space-3)}a{color:var(--color-primary);text-decoration:none}a:hover{text-decoration:underline}.page{padding:var(--space-5);max-width:1400px;margin:0 auto}.page-header{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:var(--space-3);margin-bottom:var(--space-5)}.stack{display:flex;flex-direction:column;gap:var(--space-4)}.row{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-3)}.row-tight{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2)}.spacer{flex:1}.muted{color:var(--color-text-muted)}.small{font-size:.875rem}.mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.grid-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:var(--space-4)}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow);padding:var(--space-4)}.card-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);margin-bottom:var(--space-3)}button,.button{font:inherit;font-weight:500;min-height:40px;padding:var(--space-2) var(--space-4);border-radius:var(--radius);border:1px solid var(--color-border-strong);background:var(--color-surface);color:var(--color-text);cursor:pointer;transition:background .12s ease,border-color .12s ease}button:hover:not(:disabled){background:var(--color-surface-alt)}button:disabled{opacity:.55;cursor:not-allowed}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,a:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.button-primary{background:var(--color-primary);border-color:var(--color-primary);color:#fff}.button-primary:hover:not(:disabled){background:var(--color-primary-hover);border-color:var(--color-primary-hover)}.button-danger{background:var(--color-surface);border-color:var(--color-danger);color:var(--color-danger)}.button-danger:hover:not(:disabled){background:var(--color-danger-soft)}.button-small{min-height:32px;padding:var(--space-1) var(--space-3);font-size:.875rem}input,select,textarea{font:inherit;min-height:40px;padding:var(--space-2) var(--space-3);border:1px solid var(--color-border-strong);border-radius:var(--radius);background:var(--color-surface);color:var(--color-text);width:100%}input[type=checkbox]{width:auto;min-height:auto}label{display:block;font-weight:500;font-size:.875rem;margin-bottom:var(--space-1)}.field{margin-bottom:var(--space-3)}.table-scroll{overflow-x:auto;border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-surface)}table{border-collapse:collapse;width:100%;font-size:.9375rem}th,td{text-align:left;padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--color-border);white-space:nowrap}th{background:var(--color-surface-alt);font-weight:600;font-size:.8125rem;text-transform:uppercase;letter-spacing:.03em;color:var(--color-text-muted);position:sticky;top:0;z-index:1}tbody tr:last-child td{border-bottom:none}tbody tr:hover{background:var(--color-primary-soft)}.numeric{text-align:right;font-variant-numeric:tabular-nums}.sticky-col{position:sticky;left:0;background:var(--color-surface);z-index:2;border-right:1px solid var(--color-border)}th.sticky-col{background:var(--color-surface-alt);z-index:3}tbody tr:hover .sticky-col{background:var(--color-primary-soft)}.pill{display:inline-block;padding:2px var(--space-2);border-radius:999px;font-size:.75rem;font-weight:600;white-space:nowrap}.pill-neutral{background:var(--color-surface-alt);color:var(--color-text-muted)}.pill-success{background:var(--color-success-soft);color:var(--color-success)}.pill-warning{background:var(--color-warning-soft);color:var(--color-warning)}.pill-danger{background:var(--color-danger-soft);color:var(--color-danger)}.pill-primary{background:var(--color-primary-soft);color:var(--color-primary)}.notice{padding:var(--space-3) var(--space-4);border-radius:var(--radius);border-left:3px solid;margin-bottom:var(--space-4)}.notice-error{background:var(--color-danger-soft);border-color:var(--color-danger);color:var(--color-danger)}.notice-warning{background:var(--color-warning-soft);border-color:var(--color-warning);color:var(--color-warning)}.notice-success{background:var(--color-success-soft);border-color:var(--color-success);color:var(--color-success)}.notice-info{background:var(--color-primary-soft);border-color:var(--color-primary);color:var(--color-primary)}.empty-state{padding:var(--space-6);text-align:center;color:var(--color-text-muted)}.tabs{display:flex;gap:var(--space-1);border-bottom:1px solid var(--color-border);margin-bottom:var(--space-4);overflow-x:auto}.tab{padding:var(--space-2) var(--space-4);border:none;border-bottom:2px solid transparent;background:none;border-radius:0;color:var(--color-text-muted);font-weight:500;white-space:nowrap}.tab:hover{background:var(--color-surface-alt)}.tab-active{color:var(--color-primary);border-bottom-color:var(--color-primary)}@media(max-width:720px){.page{padding:var(--space-3)}.page-header{flex-direction:column;align-items:stretch}.grid-cards{grid-template-columns:1fr}}
