:root{--brand: #6d5df7;--brand-hover: #5746e0;--brand-soft: #a78bfa;--brand-deep: #2b2350;--brand-tint: #efe9ff;--brand-tint-2: #e3dbff;--brand-glow: rgba(167, 139, 250, .25);--brand-shadow: rgba(109, 93, 247, .3);--bg: #f5f2fc;--surface: #ffffff;--surface-2: #fafbff;--ink: #241d38;--muted: #6f6885;--placeholder: #a29ab8;--line: #e8e3f3;--line-strong: #d9d2ec;--on-brand: #ffffff;--ink-inverse: #f3f0ff;--danger: #e5484d;--danger-strong: #c93c40;--danger-tint: #fff0f0;--danger-soft: #fdecec;--danger-line: #f2c4c6;--ok: #2f9e44;--ok-tint: #e6fcf5;--warn: #d9480f;--warn-tint: #fff4e6;--neutral-tint: #f1f3f5;--sidebar-bg: #241d38;--sidebar-ink: #cdd5e0;--sidebar-hover: rgba(255, 255, 255, .08);--sidebar-danger: #ffb4b4;--scrim: rgba(20, 26, 40, .45);--shadow-sm: 0 2px 8px rgba(90, 70, 170, .06);--shadow-md: 0 12px 34px rgba(90, 70, 170, .12);--shadow-lg: 0 18px 40px var(--brand-shadow);--shadow-focus: 0 0 0 3px rgba(109, 93, 247, .22);--font-display: "Oswald", "Noto Sans SC", "PingFang SC", "Microsoft YaHei", sans-serif;--font-body: "Noto Sans SC", "PingFang SC", "Microsoft YaHei", "Segoe UI", Roboto, sans-serif;--font-serif: "Songti SC", "Noto Serif SC", "Source Han Serif SC", "SimSun", Georgia, serif;--font-mono: ui-monospace, SFMono-Regular, Menlo, Consolas, "Courier New", monospace;--fw-regular: 400;--fw-medium: 500;--fw-semibold: 600;--fw-bold: 700;--fw-black: 900;--fs-2xs: 11px;--fs-xs: 12px;--fs-sm: 13px;--fs-base: 14px;--fs-md: 15px;--fs-lg: 17px;--fs-xl: 18px;--fs-2xl: 20px;--fs-3xl: 24px;--fs-4xl: 28px;--fs-hero: clamp(64px, 15vw, 200px);--fs-lead: clamp(18px, 3vw, 26px);--lh-none: 1;--lh-tight: 1.2;--lh-snug: 1.5;--lh-base: 1.65;--lh-relaxed: 1.9;--tracking-tight: -.02em;--tracking-normal: 0;--tracking-wide: .04em;--tracking-wider: .1em;--tracking-widest: .3em;--tracking-mega: .35em;--space-0: 0;--space-1: 4px;--space-1-5: 6px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-7: 28px;--space-8: 32px;--space-10: 40px;--space-11: 44px;--space-12: 48px;--space-16: 64px;--space-20: 80px;--radius-xs: 6px;--radius-sm: 8px;--radius-md: 10px;--radius-lg: 12px;--radius-xl: 16px;--radius-2xl: 18px;--radius-pill: 999px;--radius-circle: 50%;--z-base: 0;--z-raised: 1;--z-sticky: 5;--z-sidebar: 10;--z-modal: 50;--z-progress: 100;--duration-fast: .15s;--duration-base: .25s;--duration-slow: .3s;--duration-reveal: .8s;--ease-standard: cubic-bezier(.4, 0, .2, 1);--ease-out: cubic-bezier(.22, .61, .36, 1);--page-max: 1400px;--page-gutter: clamp(20px, 5vw, 72px);--measure: 62ch;--topbar-h: 68px;--sidebar-w: 232px;--modal-w: 460px;--login-card-w: 380px;--grid-line: rgba(36, 29, 56, .055);--hairline: rgba(36, 29, 56, .14);--hairline-light: rgba(255, 255, 255, .16);--marquee-duration: 42s}@media (max-width: 640px){:root{--sidebar-w: 100%}}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:calc(var(--topbar-h) + 8px)}html,body{margin:0;padding:0}body{min-height:100svh;background:var(--bg);color:var(--ink);font-family:var(--font-body);font-size:var(--fs-base);line-height:var(--lh-base);font-weight:var(--fw-regular);font-synthesis-weight:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;overflow-x:hidden}@supports (overflow-x: clip){body{overflow-x:clip}}h1,h2,h3,h4,h5,h6{margin:0;font-family:var(--font-display);font-weight:var(--fw-bold);line-height:var(--lh-tight);letter-spacing:var(--tracking-normal)}p,figure,blockquote,dl,dd{margin:0}ul,ol{margin:0;padding:0;list-style:none}img,video,canvas,svg{display:block;max-width:100%}img,video{height:auto}a{color:inherit;text-decoration:none;transition:color var(--duration-fast) var(--ease-standard)}button,input,select,textarea{font:inherit;color:inherit}button{padding:0;border:0;background:none;cursor:pointer}:focus-visible{outline:2px solid var(--brand);outline-offset:3px;border-radius:var(--radius-xs)}::selection{background:var(--ink);color:var(--bg)}*{scrollbar-width:thin;scrollbar-color:var(--line-strong) transparent}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--line-strong);border:3px solid transparent;border-radius:var(--radius-pill);background-clip:content-box}::-webkit-scrollbar-thumb:hover{background:var(--muted);background-clip:content-box}input,select,textarea{width:100%;padding:var(--space-2) var(--space-3);border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface);color:var(--ink);font-family:var(--font-body);font-size:var(--fs-base);line-height:var(--lh-snug);transition:border-color var(--duration-fast) var(--ease-standard),box-shadow var(--duration-fast) var(--ease-standard);-webkit-appearance:none;-moz-appearance:none;appearance:none}input:hover,select:hover,textarea:hover{border-color:var(--line-strong)}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--brand);box-shadow:var(--shadow-focus)}input::placeholder,textarea::placeholder{color:var(--placeholder);opacity:1}textarea{min-height:96px;resize:vertical}select{padding-right:var(--space-10);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5 6 6.5l5-5' fill='none' stroke='%236f6885' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right var(--space-3) center;cursor:pointer}input[type=number]{-moz-appearance:textfield;-webkit-appearance:textfield;appearance:textfield}input[type=number]::-webkit-outer-spin-button,input[type=number]::-webkit-inner-spin-button{margin:0;-webkit-appearance:none}@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}.u-muted{color:var(--muted)}.u-center{text-align:center}.u-right{text-align:right}.u-danger{color:var(--danger)}.u-mono{font-family:var(--font-mono);font-size:.92em;letter-spacing:var(--tracking-normal)}.u-label{font-family:var(--font-mono);font-size:var(--fs-2xs);letter-spacing:var(--tracking-wider);text-transform:uppercase;color:var(--muted)}.u-sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}.u-break{word-break:break-all}@media (max-width: 900px){.u-hide-sm{display:none}}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-1-5);padding:9px var(--space-4);border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:var(--surface);color:var(--ink);font-family:var(--font-body);font-size:var(--fs-sm);font-weight:var(--fw-medium);line-height:var(--lh-tight);white-space:nowrap;cursor:pointer;transition:background-color var(--duration-fast) var(--ease-standard),border-color var(--duration-fast) var(--ease-standard),color var(--duration-fast) var(--ease-standard),transform var(--duration-fast) var(--ease-standard)}.btn:hover{border-color:var(--ink);color:var(--ink);transform:translateY(-1px)}.btn:active{transform:translateY(0)}.btn:disabled{opacity:.45;cursor:not-allowed;transform:none}.btn.primary{border-color:var(--ink);background:var(--ink);color:var(--on-brand)}.btn.primary:hover{background:var(--brand);border-color:var(--brand);color:var(--on-brand)}.btn.danger{border-color:var(--danger-line);color:var(--danger);background:transparent}.btn.danger:hover{border-color:var(--danger);background:var(--danger-soft);color:var(--danger-strong)}.btn.small{padding:var(--space-1) var(--space-3);font-size:var(--fs-xs)}.btn.ghost{border-color:transparent;background:transparent;color:var(--muted)}.btn.ghost:hover{border-color:var(--line);color:var(--ink);background:var(--surface-2)}.btn-group{display:flex;gap:var(--space-1-5)}.panel{padding:var(--space-7);border:1px solid var(--line);border-radius:var(--radius-xl);background:var(--surface)}.panel>h3:first-child,.panel>h4:first-child{margin-bottom:var(--space-5)}.form-row{max-width:560px;margin-bottom:var(--space-4)}.form-row>label{display:block;margin-bottom:var(--space-2);color:var(--muted);font-size:var(--fs-xs);letter-spacing:var(--tracking-wide);text-transform:uppercase}.form-row .req{color:var(--danger)}.form-actions{display:flex;gap:var(--space-2);margin-top:var(--space-6)}.table-wrap{margin-inline:calc(var(--space-7) * -1);padding-inline:var(--space-7);overflow-x:auto;-webkit-overflow-scrolling:touch}.table{width:100%;border-collapse:collapse;font-size:var(--fs-sm);white-space:nowrap}.table th,.table td{padding:var(--space-3) var(--space-3);border-bottom:1px solid var(--line);text-align:left;vertical-align:middle}.table th:first-child,.table td:first-child{padding-left:0}.table th:last-child,.table td:last-child{padding-right:0}.table thead th{border-bottom-color:var(--line-strong);color:var(--muted);font-family:var(--font-mono);font-size:var(--fs-2xs);font-weight:var(--fw-regular);letter-spacing:var(--tracking-wider);text-transform:uppercase}.table tbody tr{transition:background-color var(--duration-fast) var(--ease-standard)}.table tbody tr:hover{background:var(--surface-2)}.table tbody tr:last-child td{border-bottom:0}.table .cell-wrap{min-width:200px;max-width:340px;white-space:normal;color:var(--muted);word-break:break-word}.table td.table-empty{padding:var(--space-10) 0;color:var(--muted);font-size:var(--fs-sm);text-align:center;white-space:normal}.badge{display:inline-flex;align-items:center;padding:3px var(--space-2);border-radius:var(--radius-pill);background:var(--neutral-tint);color:var(--muted);font-size:var(--fs-2xs);letter-spacing:var(--tracking-wide);white-space:nowrap}.badge.pending{background:var(--warn-tint);color:var(--warn)}.badge.approved{background:var(--ok-tint);color:var(--ok)}.badge.rejected{background:var(--danger-tint);color:var(--danger)}.chip{display:inline-flex;align-items:baseline;gap:var(--space-1-5);padding:var(--space-1-5) var(--space-3);border:1px solid var(--line);border-radius:var(--radius-pill);background:var(--surface);color:var(--ink);font-size:var(--fs-sm)}.chip b{color:var(--muted);font-weight:var(--fw-regular)}.modal-mask{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--z-modal);display:flex;align-items:center;justify-content:center;padding:var(--space-4);background:var(--scrim);animation:modal-fade var(--duration-base) var(--ease-out)}.modal{width:min(var(--modal-w),100%);max-height:86svh;overflow-y:auto;padding:var(--space-7);border-radius:var(--radius-2xl);background:var(--surface);box-shadow:var(--shadow-lg);animation:modal-rise var(--duration-base) var(--ease-out)}.modal h4{margin-bottom:var(--space-5);font-size:var(--fs-xl)}.modal-actions{display:flex;justify-content:flex-end;gap:var(--space-2);margin-top:var(--space-6)}@keyframes modal-fade{0%{opacity:0}}@keyframes modal-rise{0%{opacity:0;transform:translateY(12px) scale(.99)}}.pager{display:flex;align-items:center;gap:var(--space-3);margin-top:var(--space-5);color:var(--muted);font-size:var(--fs-sm)}.empty{padding:var(--space-16) var(--space-4);color:var(--muted);text-align:center}.boot{display:grid;place-items:center;min-height:60svh;gap:var(--space-4);color:var(--muted)}.boot-mark{width:36px;height:36px;border:1px solid var(--line-strong);border-top-color:var(--ink);border-radius:var(--radius-circle);animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.site{position:relative;isolation:isolate}.container{width:100%;max-width:var(--page-max);margin-inline:auto;padding-inline:var(--page-gutter)}.topbar{position:fixed;inset:0 0 auto;z-index:var(--z-modal);height:var(--topbar-h);transition:background-color var(--duration-slow) var(--ease-standard),border-color var(--duration-slow) var(--ease-standard),backdrop-filter var(--duration-slow) var(--ease-standard);border-bottom:1px solid transparent}.topbar.is-stuck{background:#f5f2fcdb;background:color-mix(in srgb,var(--bg) 86%,transparent);border-bottom-color:var(--line);backdrop-filter:saturate(140%) blur(14px);-webkit-backdrop-filter:saturate(140%) blur(14px)}.topbar-inner{display:flex;align-items:center;gap:var(--space-6);height:100%;padding-inline:var(--page-gutter);max-width:var(--page-max);margin-inline:auto}.brand{display:inline-flex;align-items:baseline;gap:var(--space-2);font-family:var(--font-display);font-size:var(--fs-md);font-weight:var(--fw-bold);letter-spacing:var(--tracking-tight);color:var(--ink);white-space:nowrap}.brand sup{font-family:var(--font-mono);font-size:9px;font-weight:var(--fw-regular);letter-spacing:0;color:var(--muted);transform:translateY(-2px)}.brand-divider{width:1px;height:14px;background:var(--line-strong)}.nav{display:flex;align-items:center;gap:var(--space-5);margin-left:auto}.nav-link{position:relative;display:inline-flex;align-items:baseline;gap:var(--space-1-5);padding-block:var(--space-1-5);color:var(--muted);font-family:var(--font-mono);font-size:var(--fs-2xs);letter-spacing:var(--tracking-wider);text-transform:uppercase;transition:color var(--duration-fast) var(--ease-standard)}.nav-link em{font-style:normal;font-size:9px;opacity:.55}.nav-link:after{content:"";position:absolute;left:0;bottom:0;width:100%;height:1px;background:var(--ink);transform:scaleX(0);transform-origin:left;transition:transform var(--duration-base) var(--ease-out)}.nav-link:hover,.nav-link.is-active{color:var(--ink)}.nav-link:hover:after,.nav-link.is-active:after{transform:scaleX(1)}.status{display:inline-flex;align-items:center;gap:var(--space-2);color:var(--muted);font-family:var(--font-mono);font-size:var(--fs-2xs);letter-spacing:var(--tracking-wider);text-transform:uppercase;white-space:nowrap}.status i{width:6px;height:6px;border-radius:var(--radius-circle);background:var(--ok);box-shadow:0 0 0 3px color-mix(in srgb,var(--ok) 18%,transparent);animation:pulse 2.4s ease-in-out infinite}@keyframes pulse{50%{opacity:.45}}.menu-btn{display:none;width:40px;height:40px;margin-left:auto;align-items:center;justify-content:center;border:1px solid var(--line-strong);border-radius:var(--radius-pill)}.menu-btn span{position:relative;display:block;width:16px;height:1px;background:var(--ink);transition:background-color var(--duration-fast) var(--ease-standard)}.menu-btn span:before,.menu-btn span:after{content:"";position:absolute;left:0;width:16px;height:1px;background:var(--ink);transition:transform var(--duration-base) var(--ease-out)}.menu-btn span:before{top:-5px}.menu-btn span:after{top:5px}.menu-btn.is-open span{background:transparent}.menu-btn.is-open span:before{transform:translateY(5px) rotate(45deg)}.menu-btn.is-open span:after{transform:translateY(-5px) rotate(-45deg)}.section{position:relative;padding-block:clamp(64px,7vw,116px)}.section-head{display:flex;align-items:baseline;gap:var(--space-4);margin-bottom:clamp(var(--space-8),5vw,var(--space-16));padding-bottom:var(--space-4);border-bottom:1px solid var(--hairline)}.section-num{flex:none;color:var(--muted);font-family:var(--font-mono);font-size:var(--fs-2xs);letter-spacing:var(--tracking-wider)}.section-title{font-size:clamp(var(--fs-3xl),3.4vw,42px);font-weight:var(--fw-bold);letter-spacing:var(--tracking-tight);color:var(--ink)}.section-note{margin-left:auto;color:var(--muted);font-family:var(--font-mono);font-size:var(--fs-2xs);letter-spacing:var(--tracking-widest);text-transform:uppercase;text-align:right;white-space:nowrap}.on-ink .section-head{border-bottom-color:var(--hairline-light)}.on-ink .section-num,.on-ink .section-note{color:color-mix(in srgb,var(--ink-inverse) 55%,transparent)}.on-ink .section-title{color:var(--ink-inverse)}.admin-shell{display:flex;min-height:100vh;background:var(--surface-2)}.admin-rail{position:sticky;top:0;z-index:var(--z-sidebar);display:flex;flex-direction:column;flex:none;width:var(--sidebar-w);height:100vh;padding:var(--space-6) var(--space-4);background:var(--sidebar-bg);color:var(--sidebar-ink);overflow-y:auto}.admin-brand{display:flex;align-items:center;gap:var(--space-3);padding-inline:var(--space-2);color:#fff}.admin-brand-mark{display:grid;place-items:center;width:34px;height:34px;flex:none;border-radius:var(--radius-md);background:var(--brand);font-family:var(--font-display);font-size:var(--fs-base);font-weight:var(--fw-bold)}.admin-brand-text{display:flex;flex-direction:column;gap:1px;min-width:0}.admin-brand-text strong{font-family:var(--font-display);font-size:var(--fs-md);font-weight:var(--fw-semibold);letter-spacing:var(--tracking-tight)}.admin-brand-text span{color:#cdd5e099;font-family:var(--font-mono);font-size:9px;letter-spacing:var(--tracking-wider);text-transform:uppercase}.admin-nav{display:flex;flex-direction:column;gap:2px;margin-top:var(--space-8)}.admin-nav-label{padding-inline:var(--space-2);margin-bottom:var(--space-2);color:#cdd5e073;font-family:var(--font-mono);font-size:9px;letter-spacing:var(--tracking-widest);text-transform:uppercase}.admin-nav a{display:flex;align-items:center;gap:var(--space-3);padding:10px var(--space-2);border-radius:var(--radius-sm);color:var(--sidebar-ink);font-size:var(--fs-sm);transition:background-color var(--duration-fast) var(--ease-standard),color var(--duration-fast) var(--ease-standard)}.admin-nav a svg{flex:none;opacity:.7}.admin-nav a:hover{background:var(--sidebar-hover);color:#fff}.admin-nav a.router-link-active{background:var(--brand);color:#fff}.admin-nav a.router-link-active svg{opacity:1}.admin-foot{margin-top:auto;padding-top:var(--space-6);display:flex;flex-direction:column;gap:var(--space-3)}.admin-user{display:flex;flex-direction:column;gap:2px;padding-top:var(--space-3);border-top:1px solid var(--hairline-light)}.admin-user .u-label{color:#cdd5e066}.admin-user strong{color:#fff;font-size:var(--fs-sm);font-weight:var(--fw-medium)}.admin-logout{width:100%;justify-content:flex-start;padding:9px var(--space-2);border:1px solid var(--hairline-light);border-radius:var(--radius-sm);background:transparent;color:var(--sidebar-danger);font-size:var(--fs-sm);transition:background-color var(--duration-fast) var(--ease-standard),border-color var(--duration-fast) var(--ease-standard),color var(--duration-fast) var(--ease-standard)}.admin-logout:hover{background:#e5484d24;border-color:#e5484d66;color:#ffd0d0}.admin-main{flex:1;min-width:0;padding:var(--space-8) clamp(var(--space-5),3vw,var(--space-10)) var(--space-16)}.admin-head{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--space-4);flex-wrap:wrap;margin-bottom:var(--space-6)}.admin-title{font-size:clamp(var(--fs-3xl),3vw,34px);letter-spacing:var(--tracking-tight)}.admin-sub{margin-top:var(--space-1);color:var(--muted);font-size:var(--fs-xs);letter-spacing:var(--tracking-wide);text-transform:uppercase}@media (max-width: 1024px){:root{--page-max: 100%}}@media (max-width: 860px){.admin-shell{flex-direction:column}.admin-rail{position:static;width:100%;height:auto;padding:var(--space-4);overflow:visible}.admin-nav{flex-direction:row;gap:var(--space-1);margin-top:var(--space-4);overflow-x:auto;padding-bottom:var(--space-1)}.admin-nav-label,.admin-user{display:none}.admin-foot{flex-direction:row;align-items:center;justify-content:flex-end;margin-top:var(--space-3);padding-top:0}.admin-logout{width:auto;padding:var(--space-1-5) var(--space-3)}.admin-nav a{white-space:nowrap;padding:var(--space-2) var(--space-3)}.admin-main{padding:var(--space-5) var(--space-4) var(--space-12)}}@media (max-width: 760px){.nav{display:none}.menu-btn{display:inline-flex}.status{display:none}.section-head{gap:var(--space-2) var(--space-3)}}.progress{position:fixed;inset:0 0 auto;z-index:var(--z-progress);width:100%;height:2px;background:var(--ink);transform:scaleX(0);transform-origin:left center;pointer-events:none;will-change:transform}.hero{position:relative;display:flex;flex-direction:column;justify-content:center;min-height:100svh;padding-top:var(--topbar-h);overflow:hidden}.hero:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:-2;background-image:linear-gradient(var(--grid-line) 1px,transparent 1px),linear-gradient(90deg,var(--grid-line) 1px,transparent 1px);background-size:88px 88px;background-position:center top;-webkit-mask-image:radial-gradient(120% 90% at 50% 30%,#000 0%,transparent 78%);mask-image:radial-gradient(120% 90% at 50% 30%,#000 0%,transparent 78%)}.hero:after{content:"";position:absolute;z-index:-1;top:-10vh;right:-14vw;width:62vw;height:62vw;border-radius:var(--radius-circle);background:radial-gradient(circle at 42% 42%,rgba(167,139,250,.42),transparent 62%);filter:blur(28px);animation:drift 18s ease-in-out infinite alternate}@keyframes drift{to{transform:translate3d(-4vw,3vh,0) scale(1.06)}}.hero-inner{position:relative;padding-block:clamp(var(--space-10),8vh,var(--space-20));will-change:transform,opacity}.hero-kicker{display:inline-flex;align-items:center;gap:var(--space-3);color:var(--muted);font-family:var(--font-mono);font-size:var(--fs-2xs);letter-spacing:var(--tracking-wider);text-transform:uppercase}.hero-kicker:before{content:"";width:32px;height:1px;background:var(--ink)}.hero-title{margin-top:clamp(var(--space-5),3vw,var(--space-8));font-family:var(--font-display);font-size:clamp(72px,13.6vw,236px);font-weight:var(--fw-black);line-height:.88;letter-spacing:-.05em;color:var(--ink)}.hero-title-latin{display:block;margin-top:clamp(26px,2.4vw,40px);padding-left:.12em;font-family:var(--font-display);font-size:clamp(15px,1.55vw,22px);font-weight:var(--fw-medium);line-height:1;letter-spacing:.42em;text-transform:uppercase;color:var(--muted)}.hero-foot{display:flex;align-items:flex-end;justify-content:space-between;flex-wrap:wrap;gap:var(--space-6) var(--space-10);margin-top:clamp(var(--space-8),6vw,var(--space-16));padding-top:var(--space-5);border-top:1px solid var(--hairline)}.hero-role{max-width:32ch;font-size:clamp(var(--fs-lg),1.35vw,var(--fs-2xl));line-height:var(--lh-snug);letter-spacing:-.01em;color:var(--ink)}.hero-meta{display:flex;gap:clamp(var(--space-5),4vw,var(--space-16))}.hero-meta dt{margin-bottom:var(--space-1-5);color:var(--muted);font-family:var(--font-mono);font-size:10px;letter-spacing:var(--tracking-wider);text-transform:uppercase}.hero-meta dd{font-size:var(--fs-sm);color:var(--ink)}.hero-cue{position:absolute;right:max(var(--page-gutter),calc((100vw - var(--page-max)) / 2 + var(--page-gutter)));bottom:var(--space-8);display:flex;align-items:center;gap:var(--space-3);color:var(--muted);font-family:var(--font-mono);font-size:10px;letter-spacing:var(--tracking-widest);text-transform:uppercase;writing-mode:vertical-rl}.hero-cue i{width:1px;height:56px;background:linear-gradient(var(--ink),transparent);animation:cue 2.4s ease-in-out infinite}@keyframes cue{0%,to{opacity:.3;transform:scaleY(.4);transform-origin:top}50%{opacity:1;transform:scaleY(1)}}.marquee{position:relative;display:flex;overflow:hidden;padding-block:var(--space-3);border-block:1px solid var(--hairline);background:#ffffff61;-webkit-mask-image:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent);mask-image:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent)}.marquee-track{display:flex;flex:none;animation:marquee var(--marquee-duration) linear infinite;will-change:transform}.marquee:hover .marquee-track{animation-play-state:paused}.marquee-group{display:flex;flex:none}.marquee-item{display:inline-flex;align-items:center;gap:clamp(var(--space-4),2.4vw,var(--space-8));padding-inline:clamp(var(--space-4),2.4vw,var(--space-8));color:var(--muted);font-family:var(--font-display);font-size:clamp(var(--fs-sm),1.1vw,var(--fs-md));letter-spacing:.26em;text-transform:uppercase;white-space:nowrap}.marquee-item:after{content:"✳";color:var(--brand);font-size:.8em;letter-spacing:0}@keyframes marquee{to{transform:translate(-50%)}}@media (prefers-reduced-motion: reduce){.marquee-track{animation:none}}.about-grid{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:clamp(var(--space-7),6vw,96px);align-items:start}.about-lead{font-size:clamp(var(--fs-2xl),2.15vw,32px);font-weight:var(--fw-medium);line-height:1.46;letter-spacing:-.012em;color:var(--ink);text-wrap:pretty}.poetry{padding-left:clamp(var(--space-4),2vw,var(--space-6));border-left:1px solid var(--line-strong)}.poetry-lines{font-family:var(--font-serif);font-size:clamp(var(--fs-md),1.2vw,var(--fs-lg));line-height:2;letter-spacing:.06em;color:var(--ink)}.poetry-lines span{display:block}.poetry-cite{display:block;margin-top:var(--space-4);color:var(--muted);font-family:var(--font-mono);font-size:10px;letter-spacing:var(--tracking-wider);text-transform:uppercase}.section.on-ink{background:var(--ink);color:var(--ink-inverse)}.now-grid{display:grid;grid-template-columns:minmax(0,400px) minmax(0,1fr);gap:clamp(var(--space-8),6vw,88px);align-items:center}.now-quote{font-size:clamp(var(--fs-lg),1.5vw,var(--fs-2xl));line-height:1.6;color:#f3f0ffcc;max-width:42ch}.now-list{margin-top:var(--space-6);border-top:1px solid var(--hairline-light)}.now-list>div{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-4);padding-block:var(--space-3);border-bottom:1px solid var(--hairline-light);font-size:var(--fs-sm)}.now-list dt{color:#f3f0ff8c;font-family:var(--font-mono);font-size:10px;letter-spacing:var(--tracking-wider);text-transform:uppercase}.now-list dd{color:var(--ink-inverse);text-align:right}.now-clock{--clock-size: 100%;max-width:400px;margin-inline:auto}.timeline{border-top:0}.tl-item{display:grid;grid-template-columns:minmax(120px,170px) minmax(0,1fr) auto;gap:var(--space-4) var(--space-6);align-items:start;padding:var(--space-6) var(--space-4);margin-inline:calc(var(--space-4) * -1);border-bottom:1px solid var(--hairline);transition:background-color var(--duration-base) var(--ease-standard)}.tl-item:hover{background:var(--surface)}.tl-year{padding-top:4px;color:var(--muted);font-family:var(--font-mono);font-size:var(--fs-xs);letter-spacing:var(--tracking-wide);white-space:nowrap}.tl-school{font-size:clamp(var(--fs-xl),1.7vw,var(--fs-3xl));font-weight:var(--fw-bold);letter-spacing:var(--tracking-tight)}.tl-major{margin-top:var(--space-2);color:var(--brand);font-size:var(--fs-sm);letter-spacing:var(--tracking-normal)}.tl-desc{margin-top:var(--space-3);max-width:var(--measure);color:var(--muted);font-size:var(--fs-sm);line-height:var(--lh-relaxed)}.tl-idx{color:var(--muted);font-family:var(--font-mono);font-size:var(--fs-2xs);letter-spacing:var(--tracking-wide)}.projects{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(var(--space-4),2vw,var(--space-7))}.project-card{position:relative;isolation:isolate;display:flex;flex-direction:column;justify-content:flex-end;min-height:300px;padding:clamp(var(--space-5),2.4vw,var(--space-8));overflow:hidden;border:1px solid var(--line);border-radius:var(--radius-2xl);background:radial-gradient(120% 120% at 100% 0%,var(--brand-tint-2) 0%,transparent 58%),linear-gradient(160deg,var(--surface) 0%,var(--brand-tint) 100%);color:var(--ink);transition:transform var(--duration-slow) var(--ease-out),box-shadow var(--duration-slow) var(--ease-out),border-color var(--duration-slow) var(--ease-out)}.project-card:hover{transform:translateY(-6px);border-color:var(--line-strong);box-shadow:var(--shadow-lg)}.project-card:before{content:"";position:absolute;z-index:-1;right:-16%;bottom:-42%;width:66%;aspect-ratio:1 / 1;border:1px solid rgba(36,29,56,.1);border-radius:var(--radius-circle);pointer-events:none;transition:transform .9s var(--ease-out)}.project-card:hover:before{transform:scale(1.06)}.project-card.has-media:before{display:none}.project-card--feature{grid-column:span 2;min-height:400px}.project-media{position:absolute;top:0;right:0;bottom:0;left:0;z-index:-1;background-position:center;background-size:cover;transition:transform .9s var(--ease-out)}.project-card:hover .project-media{transform:scale(1.045)}.project-card.has-media{color:#fff}.project-card.has-media .project-media:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(180deg,#100c200d 30%,#100c20d1)}.project-card.has-media:hover .project-media:after{background:linear-gradient(180deg,#100c2026 20%,#100c20e0)}.project-idx{position:absolute;top:clamp(var(--space-4),2vw,var(--space-6));left:clamp(var(--space-5),2.4vw,var(--space-8));color:currentColor;font-family:var(--font-display);font-size:clamp(56px,6vw,96px);font-weight:var(--fw-bold);line-height:.8;letter-spacing:-.04em;opacity:.13;pointer-events:none}.project-title{font-size:clamp(var(--fs-2xl),1.9vw,var(--fs-3xl));font-weight:var(--fw-bold);letter-spacing:var(--tracking-tight);line-height:1.2}.project-desc{margin-top:var(--space-2);max-width:46ch;font-size:var(--fs-sm);line-height:var(--lh-snug);opacity:.78}.project-foot{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);margin-top:var(--space-5)}.project-role{font-size:var(--fs-xs);letter-spacing:var(--tracking-normal);opacity:.62}.project-arrow{display:grid;place-items:center;flex:none;width:42px;height:42px;border:1px solid currentColor;border-radius:var(--radius-circle);font-size:var(--fs-md);transition:background-color var(--duration-base) var(--ease-standard),color var(--duration-base) var(--ease-standard),transform var(--duration-base) var(--ease-out)}.project-card:hover .project-arrow{background:var(--ink);border-color:var(--ink);color:var(--bg);transform:rotate(45deg)}.project-card.has-media:hover .project-arrow{background:var(--surface);border-color:var(--surface);color:var(--ink)}.skill-groups{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:clamp(var(--space-6),4vw,var(--space-16))}.skill-group-title{margin-bottom:var(--space-4);padding-bottom:var(--space-3);border-bottom:1px solid var(--hairline);color:var(--muted);font-family:var(--font-mono);font-size:10px;letter-spacing:var(--tracking-widest);text-transform:uppercase}.skill-list{display:flex;flex-wrap:wrap;gap:var(--space-2)}.skill-pill{padding:var(--space-2) var(--space-4);border:1px solid var(--line);border-radius:var(--radius-pill);background:var(--surface);color:var(--ink);font-size:var(--fs-sm);transition:background-color var(--duration-fast) var(--ease-standard),border-color var(--duration-fast) var(--ease-standard),color var(--duration-fast) var(--ease-standard),transform var(--duration-fast) var(--ease-standard)}.skill-pill:hover{background:var(--ink);border-color:var(--ink);color:var(--bg);transform:translateY(-2px)}.contact-list{border-top:0}.contact-row{position:relative;isolation:isolate;display:grid;grid-template-columns:minmax(80px,120px) minmax(0,1fr) auto;align-items:center;gap:var(--space-4) var(--space-5);padding:clamp(var(--space-4),2vw,var(--space-6)) var(--space-4);margin-inline:calc(var(--space-4) * -1);border-bottom:1px solid var(--hairline);color:var(--ink);overflow:hidden;transition:color var(--duration-base) var(--ease-standard)}.contact-row:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:-1;background:var(--ink);transform:scaleY(0);transform-origin:bottom center;transition:transform var(--duration-slow) var(--ease-out)}.contact-row:hover{color:var(--bg)}.contact-row:hover:before{transform:scaleY(1)}.contact-label{color:var(--muted);font-family:var(--font-mono);font-size:var(--fs-2xs);letter-spacing:var(--tracking-wider);text-transform:uppercase;transition:color var(--duration-base) var(--ease-standard)}.contact-row:hover .contact-label{color:#f5f2fc99}.contact-value{font-size:clamp(var(--fs-xl),2.1vw,30px);font-weight:var(--fw-medium);letter-spacing:-.015em;word-break:break-all}.contact-arrow{font-size:var(--fs-xl);transition:transform var(--duration-base) var(--ease-out)}.contact-row:hover .contact-arrow{transform:translate(4px,-4px)}.site-foot{position:relative;overflow:hidden;background:var(--ink);color:var(--ink-inverse);padding-top:clamp(var(--space-12),7vw,96px);padding-bottom:var(--space-6)}.foot-name{font-family:var(--font-display);font-size:clamp(64px,15.5vw,232px);font-weight:var(--fw-black);line-height:.8;letter-spacing:-.055em;-webkit-user-select:none;user-select:none;color:#f3f0ff24;background:linear-gradient(180deg,#f3f0ff3d,#f3f0ff05);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}@supports not ((-webkit-background-clip: text) or (background-clip: text)){.foot-name{-webkit-text-fill-color:currentColor;color:#f3f0ff29}}.foot-bar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--space-4);margin-top:clamp(var(--space-8),5vw,var(--space-12));padding-top:var(--space-5);border-top:1px solid var(--hairline-light);color:#f3f0ff8c;font-family:var(--font-mono);font-size:var(--fs-2xs);letter-spacing:var(--tracking-wider);text-transform:uppercase}.foot-bar a{color:var(--ink-inverse);transition:opacity var(--duration-fast) var(--ease-standard)}.foot-bar a:hover{opacity:.7}.foot-links{display:flex;gap:var(--space-5)}.reveal{opacity:0;transform:translateY(26px);transition:opacity .9s var(--ease-out),transform .9s var(--ease-out)}.reveal.in{opacity:1;transform:none}@media (max-height: 820px){.hero-cue{display:none}}@media (prefers-reduced-motion: reduce){.reveal{opacity:1;transform:none}.hero:after,.hero-cue i,.status i{animation:none}}.mobile-menu{position:fixed;top:0;right:0;bottom:0;left:0;z-index:calc(var(--z-modal) - 1);display:flex;flex-direction:column;justify-content:center;padding:calc(var(--topbar-h) + var(--space-6)) var(--page-gutter) var(--space-10);background:var(--bg);opacity:0;visibility:hidden;transform:translateY(-8px);transition:opacity var(--duration-base) var(--ease-standard),transform var(--duration-base) var(--ease-out),visibility var(--duration-base)}.mobile-menu.is-open{opacity:1;visibility:visible;transform:none}.mobile-menu a{display:flex;align-items:baseline;gap:var(--space-3);padding-block:var(--space-4);border-bottom:1px solid var(--hairline);font-family:var(--font-display);font-size:clamp(var(--fs-3xl),8vw,var(--fs-4xl));font-weight:var(--fw-bold);letter-spacing:var(--tracking-tight)}.mobile-menu a em{font-family:var(--font-mono);font-style:normal;font-size:var(--fs-2xs);letter-spacing:var(--tracking-wide);color:var(--muted)}.mobile-menu-foot{margin-top:auto;padding-top:var(--space-6);color:var(--muted);font-family:var(--font-mono);font-size:var(--fs-2xs);letter-spacing:var(--tracking-wider);text-transform:uppercase}@media (max-width: 1080px){.about-grid,.now-grid{grid-template-columns:minmax(0,1fr)}.now-grid{gap:var(--space-8)}}@media (max-width: 900px){.projects{grid-template-columns:minmax(0,1fr)}.project-card--feature{grid-column:span 1;min-height:360px}}@media (max-width: 760px){.hero{min-height:auto;padding-top:calc(var(--topbar-h) + var(--space-10));padding-bottom:var(--space-12)}.hero-cue{display:none}.hero-meta{flex-wrap:wrap;gap:var(--space-5)}.tl-item{grid-template-columns:minmax(0,1fr) auto}.tl-year{grid-column:1 / -1;padding-top:0}.contact-row{grid-template-columns:minmax(0,1fr) auto}.contact-label{grid-column:1 / -1}.contact-value{font-size:var(--fs-xl)}}.login{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);min-height:100vh}.login-art{position:relative;display:flex;flex-direction:column;justify-content:space-between;gap:var(--space-10);padding:clamp(var(--space-8),5vw,var(--space-20));background:var(--ink);color:var(--ink-inverse);overflow:hidden}.login-art:after{content:"";position:absolute;right:-18%;bottom:-22%;width:62%;aspect-ratio:1;border-radius:var(--radius-circle);background:radial-gradient(circle at 40% 40%,rgba(167,139,250,.5),transparent 65%);filter:blur(18px);pointer-events:none}.login-word{position:relative;z-index:1;font-family:var(--font-display);font-size:clamp(var(--fs-4xl),5.4vw,88px);font-weight:var(--fw-black);line-height:.86;letter-spacing:-.045em}.login-word small{display:block;margin-top:var(--space-4);color:#f3f0ff80;font-family:var(--font-mono);font-size:var(--fs-2xs);font-weight:var(--fw-regular);letter-spacing:var(--tracking-widest);text-transform:uppercase}.login-art-foot{position:relative;z-index:1;display:flex;gap:var(--space-6);color:#f3f0ff73;font-family:var(--font-mono);font-size:10px;letter-spacing:var(--tracking-wider);text-transform:uppercase}.login-art .login-art-top{position:relative;z-index:1;color:#f3f0ff73}.login-panel{display:grid;place-items:center;padding:clamp(var(--space-8),6vw,var(--space-16)) var(--page-gutter);background:var(--bg)}.login-card{display:flex;flex-direction:column;gap:var(--space-4);width:min(var(--login-card-w),100%)}.login-card h1{font-size:var(--fs-3xl);letter-spacing:var(--tracking-tight)}.login-card .login-sub{margin-top:calc(var(--space-1) * -1);margin-bottom:var(--space-2);color:var(--muted);font-size:var(--fs-sm)}.field{display:flex;flex-direction:column;gap:var(--space-2)}.field>span{color:var(--muted);font-family:var(--font-mono);font-size:10px;letter-spacing:var(--tracking-wider);text-transform:uppercase}.login-card .btn{margin-top:var(--space-2)}.login-hint{color:var(--muted);font-family:var(--font-mono);font-size:var(--fs-2xs);letter-spacing:var(--tracking-wide)}.login-error{padding:var(--space-2) var(--space-3);border:1px solid var(--danger-line);border-radius:var(--radius-sm);background:var(--danger-tint);color:var(--danger-strong);font-size:var(--fs-sm)}.login-back{color:var(--muted);font-size:var(--fs-xs);transition:color var(--duration-fast) var(--ease-standard)}.login-back:hover{color:var(--ink)}.crud-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);margin-bottom:var(--space-6)}.crud-head h3{font-size:var(--fs-2xl);letter-spacing:var(--tracking-tight)}.panel-sub{margin-bottom:var(--space-3);color:var(--muted);font-family:var(--font-mono);font-size:10px;font-weight:var(--fw-regular);letter-spacing:var(--tracking-widest);text-transform:uppercase}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 var(--space-5);max-width:900px}.form-grid .form-row{max-width:none}.form-row--wide{grid-column:1 / -1}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:var(--space-3);margin-bottom:var(--space-8)}.stat{padding:var(--space-5);border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface);transition:border-color var(--duration-fast) var(--ease-standard),transform var(--duration-fast) var(--ease-standard)}.stat:hover{border-color:var(--line-strong);transform:translateY(-2px)}.stat .num{font-family:var(--font-display);font-size:clamp(var(--fs-4xl),3vw,40px);font-weight:var(--fw-bold);line-height:1;letter-spacing:var(--tracking-tight);color:var(--ink);font-variant-numeric:tabular-nums}.stat .lbl{margin-top:var(--space-2);color:var(--muted);font-family:var(--font-mono);font-size:10px;letter-spacing:var(--tracking-wider);text-transform:uppercase}.logs{display:flex;flex-direction:column}.logs li{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--space-2);padding-block:var(--space-3);border-bottom:1px dashed var(--line);color:var(--muted);font-size:var(--fs-sm)}.logs li:last-child{border-bottom:0}.logs b{color:var(--ink);font-weight:var(--fw-medium)}.logs .log-time{color:var(--muted);font-family:var(--font-mono);font-size:var(--fs-2xs);letter-spacing:var(--tracking-wide)}@media (max-width: 900px){.login{grid-template-columns:minmax(0,1fr)}.login-art{display:none}.login-panel{min-height:100vh}}@media (max-width: 640px){.form-grid{grid-template-columns:minmax(0,1fr)}.panel{padding:var(--space-5)}.table-wrap{margin-inline:calc(var(--space-5) * -1);padding-inline:var(--space-5)}}
