@import "https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@0,400;0,600;0,700;1,400&family=Inter:wght@300;400;500;600&family=JetBrains+Mono:wght@400&display=swap";.navbar[data-v-58daef69]{z-index:100;-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--color-border);background:#fdfbf7d9;position:fixed;top:0;left:0;right:0}.navbar-inner[data-v-58daef69]{max-width:var(--max-width-wide);padding:0 var(--space-6);justify-content:space-between;align-items:center;height:64px;margin:0 auto;display:flex}.nav-left[data-v-58daef69]{align-items:baseline;gap:var(--space-2);display:flex}.logo[data-v-58daef69]{font-family:var(--font-display);font-size:var(--text-2xl);color:var(--color-ink);letter-spacing:-.01em;transition:color var(--duration) var(--ease);font-weight:700;text-decoration:none}.logo[data-v-58daef69]:hover{color:var(--color-vermilion)}.logo-sep[data-v-58daef69]{color:var(--color-border);font-size:var(--text-xl);font-weight:300}.logo-admin[data-v-58daef69]{font-size:var(--text-sm);color:var(--color-muted);text-transform:uppercase;letter-spacing:.06em;font-weight:400;font-family:var(--font-body)}.logo-admin[data-v-58daef69]:hover{color:var(--color-ink)}.nav-links[data-v-58daef69]{gap:var(--space-6);align-items:center;display:flex}.nav-link[data-v-58daef69]{font-size:var(--text-sm);color:var(--color-muted);letter-spacing:.02em;padding:var(--space-1) 0;transition:all var(--duration) var(--ease);cursor:pointer;font-weight:500;font-family:var(--font-body);background:0 0;border:none;border-bottom:2px solid #0000;text-decoration:none}.nav-link[data-v-58daef69]:hover,.nav-link.active[data-v-58daef69]{color:var(--color-ink);border-bottom-color:var(--color-vermilion)}.logout-link[data-v-58daef69]:hover{border-bottom-color:var(--color-vermilion);color:var(--color-vermilion)!important}.announcement-banner[data-v-cebb4d2b]{background:var(--color-deep);padding:0}.announcement-item[data-v-cebb4d2b]{padding:var(--space-2) var(--space-4);border-bottom:1px solid #ffffff14;justify-content:center;align-items:center;display:flex;position:relative}.announcement-item[data-v-cebb4d2b]:last-child{border-bottom:none}.announcement-link[data-v-cebb4d2b]{align-items:center;gap:var(--space-2);color:#fff;font-size:var(--text-sm);max-width:var(--max-width-wide);justify-content:center;width:100%;text-decoration:none;display:flex}.announcement-link:hover .announcement-title[data-v-cebb4d2b]{text-decoration:underline}.announcement-icon[data-v-cebb4d2b]{flex-shrink:0}.announcement-title[data-v-cebb4d2b]{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.announcement-date[data-v-cebb4d2b]{color:#ffffff80;font-size:var(--text-xs);margin-left:var(--space-2);flex-shrink:0}.announcement-close[data-v-cebb4d2b]{right:var(--space-3);color:#fff6;font-size:var(--text-lg);cursor:pointer;padding:0 var(--space-1);background:0 0;border:none;line-height:1;position:absolute;top:50%;transform:translateY(-50%)}.announcement-close[data-v-cebb4d2b]:hover{color:#fffc}.footer[data-v-82d0af28]{border-top:1px solid var(--color-border);margin-top:var(--space-20);padding:var(--space-8) 0}.footer-inner[data-v-82d0af28]{max-width:var(--max-width-wide);padding:0 var(--space-6);justify-content:center;align-items:center;margin:0 auto;display:flex}.footer p[data-v-82d0af28]{font-size:var(--text-sm);color:var(--color-muted);margin:0}.app[data-v-2c69c32f]{flex-direction:column;min-height:100vh;display:flex}.main[data-v-2c69c32f]{flex:1;padding-top:80px}.page-enter-active[data-v-2c69c32f]{transition:opacity .25s,transform .25s}.page-leave-active[data-v-2c69c32f]{transition:opacity .15s,transform .15s}.page-enter-from[data-v-2c69c32f]{opacity:0;transform:translateY(12px)}.page-leave-to[data-v-2c69c32f]{opacity:0;transform:translateY(-8px)}:root{--color-paper:#fdfbf7;--color-ink:#1a1a1a;--color-vermilion:#e63946;--color-deep:#2b2d42;--color-card:#f5f3ee;--color-border:#d1cdc6;--color-muted:#8a8780;--font-display:"Playfair Display", Georgia, "Times New Roman", serif;--font-body:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono:"JetBrains Mono", "Fira Code", "Consolas", monospace;--text-xs:.75rem;--text-sm:.875rem;--text-base:1rem;--text-lg:1.125rem;--text-xl:1.25rem;--text-2xl:1.5rem;--text-3xl:2rem;--text-4xl:2.5rem;--text-5xl:3.25rem;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-6:1.5rem;--space-8:2rem;--space-12:3rem;--space-16:4rem;--space-20:5rem;--max-width:720px;--max-width-wide:1024px;--navbar-height:56px;--radius-sm:4px;--radius:8px;--ease:cubic-bezier(.4, 0, .2, 1);--duration:.2s}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;scroll-behavior:smooth;font-size:16px}body{font-family:var(--font-body);color:var(--color-ink);background-color:var(--color-paper);background-image:radial-gradient(circle, var(--color-border) .5px, transparent .5px);background-size:24px 24px;font-weight:400;line-height:1.7}h1,h2,h3,h4{font-family:var(--font-display);color:var(--color-deep);font-weight:600;line-height:1.3}h1{font-size:var(--text-5xl);letter-spacing:-.02em}h2{font-size:var(--text-3xl);letter-spacing:-.01em}h3{font-size:var(--text-2xl)}h4{font-size:var(--text-xl)}p{margin-bottom:var(--space-4)}a{color:var(--color-vermilion);transition:opacity var(--duration) var(--ease);text-decoration:none}a:hover{opacity:.8}img{max-width:100%;height:auto;margin:var(--space-4) auto;display:block}code,pre{font-family:var(--font-mono);font-size:.9em}code{background:var(--color-card);border-radius:var(--radius-sm);color:var(--color-vermilion);padding:.15em .4em}pre{background:var(--color-deep);color:#e2e8f0;padding:var(--space-6);border-radius:var(--radius);margin-bottom:var(--space-6);line-height:1.6;overflow-x:auto}pre code{color:inherit;background:0 0;padding:0}blockquote{border-left:3px solid var(--color-vermilion);padding-left:var(--space-6);margin:var(--space-6) 0;color:var(--color-muted);font-style:italic}:focus-visible{outline:2px solid var(--color-vermilion);outline-offset:2px;border-radius:2px}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.container{max-width:var(--max-width);padding:0 var(--space-6);margin:0 auto}.container-wide{max-width:var(--max-width-wide);padding:0 var(--space-6);margin:0 auto}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border:0;width:1px;height:1px;position:absolute;overflow:hidden}
