@font-face{font-family:'Afterimage Serif UI';font-style:normal;font-weight:400;font-display:swap;src:url('assets/fonts/afterimage-serif-ui.woff') format('woff')}
/* AFTERIMAGE / 失焦 — reusable UI primitives, v1.0 */
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:400;font-display:swap;src:url('assets/fonts/ibm-plex-mono-400.woff') format('woff')}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:500;font-display:swap;src:url('assets/fonts/ibm-plex-mono-500.woff') format('woff')}
@font-face{font-family:'Noto Serif SC';font-style:normal;font-weight:400;font-display:swap;src:url('assets/fonts/noto-serif-sc-400.woff') format('woff')}
@font-face{font-family:'Special Elite';font-style:normal;font-weight:400;font-display:swap;src:url('assets/fonts/special-elite-400.woff') format('woff')}
:root {
  color-scheme: light;
  --aa-ground:#e8e4d9; --aa-sheet:#efede5; --aa-raised:#f3f0e8; --aa-ink:#36382f; --aa-secondary:#64665a; --aa-rule:#b5b4a7;
  --aa-accent:#565f46; --aa-accent-wash:#d8dccf; --aa-ghost:#747a64; --aa-on-ink:#f0ede1; --aa-negative:#242822;
  --aa-danger:#8d4a3e; --aa-warning:#795c29; --aa-success:#4f6548; --aa-noise:.1; --aa-mist:.5;
  --aa-font-print:'Special Elite','Courier New',monospace; --aa-font-mono:'IBM Plex Mono','Courier New',monospace; --aa-font-cn:'Afterimage Serif UI','Noto Serif SC','Songti SC','SimSun',serif;
  --aa-space-1:4px; --aa-space-2:8px; --aa-space-3:12px; --aa-space-4:16px; --aa-space-6:24px; --aa-space-8:32px; --aa-space-12:48px; --aa-space-16:64px;
  --aa-radius:2px; --aa-fast:160ms; --aa-reveal:360ms; --aa-residue:520ms; --aa-ease:cubic-bezier(.2,.7,.2,1);
}
[data-material="canvas"] { --aa-ground:#dedfd3; --aa-sheet:#e9eadd; --aa-raised:#f0f0e5; --aa-ink:#333b32; --aa-secondary:#5b6354; --aa-rule:#a8b09c; --aa-accent:#505c43; --aa-accent-wash:#ced4be; --aa-ghost:#7e8972; --aa-noise:.13; }
[data-material="film"] { color-scheme:dark; --aa-ground:#252923; --aa-sheet:#2f332b; --aa-raised:#383c32; --aa-ink:#e6e3d2; --aa-secondary:#b4b8a5; --aa-rule:#6e7563; --aa-accent:#cad1b1; --aa-accent-wash:#454d39; --aa-ghost:#8f9b80; --aa-on-ink:#282d24; --aa-negative:#171c17; --aa-danger:#e2a191; --aa-warning:#d4ba80; --aa-success:#b9cf9c; --aa-noise:.14; }
*{box-sizing:border-box} body{margin:0;color:var(--aa-ink);background:var(--aa-ground);font-family:var(--aa-font-cn);font-size:16px;line-height:1.75;-webkit-font-smoothing:antialiased} button,input,select,textarea{font:inherit;color:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button{cursor:pointer}a{color:inherit}button:disabled{cursor:not-allowed}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--aa-accent);outline-offset:4px}::selection{background:var(--aa-accent);color:var(--aa-on-ink)}[hidden]{display:none!important}.aa-filters{position:absolute;width:0;height:0;pointer-events:none}.aa-meta{font:12px/1.6 var(--aa-font-mono);letter-spacing:.09em;color:var(--aa-secondary)}.aa-print{font-family:var(--aa-font-print);font-weight:400;text-shadow:.3px .4px .4px currentColor;filter:url(#aa-ink)}.aa-display{font-family:var(--aa-font-cn);font-weight:400;letter-spacing:.1em;text-shadow:.35px .35px .6px color-mix(in srgb,var(--aa-ink) 40%,transparent)}
.aa-surface{position:relative;isolation:isolate;background:var(--aa-sheet)}.aa-surface::after{content:"";position:absolute;inset:0;pointer-events:none;z-index:8;background:url('assets/grain.svg');opacity:var(--aa-noise);mix-blend-mode:multiply}.aa-button{position:relative;isolation:isolate;min-height:44px;display:inline-flex;align-items:center;justify-content:center;gap:20px;padding:10px 21px;border:1px solid var(--aa-rule);border-radius:var(--aa-radius);background:transparent;color:var(--aa-ink);font-size:14px;line-height:1.5;text-decoration:none;transition:color var(--aa-fast),border-color var(--aa-fast),transform var(--aa-fast)}.aa-button::before{content:"";position:absolute;z-index:-1;inset:-1px;background:var(--aa-accent);opacity:0;filter:blur(8px);transition:opacity var(--aa-reveal),filter var(--aa-reveal);pointer-events:none}.aa-button:hover:not(:disabled)::before{opacity:.1;filter:blur(2px)}.aa-button:active:not(:disabled){transform:translateY(1px)}.aa-button-primary{background:var(--aa-ink);border-color:var(--aa-ink);color:var(--aa-on-ink)}.aa-button-primary::before{background:var(--aa-ink)}.aa-button-primary:hover:not(:disabled)::before{opacity:.55;filter:blur(4px)}.aa-button-primary:active:not(:disabled)::before{filter:blur(0)}.aa-button-ghost{border-color:transparent;border-bottom:1px solid var(--aa-rule);border-radius:0;padding-left:0;padding-right:0}.aa-button-danger{color:var(--aa-danger);border-color:currentColor}.aa-button:disabled{opacity:.44;border-style:dashed}.aa-icon-button{width:44px;height:44px;padding:8px;border:1px solid var(--aa-rule);background:transparent;display:inline-grid;place-items:center;font-size:20px}.aa-icon-button:hover{background:var(--aa-accent-wash)}
.aa-field{display:grid;gap:8px;font-size:14px}.aa-input,.aa-textarea,.aa-select{width:100%;min-height:46px;background:color-mix(in srgb,var(--aa-raised) 70%,transparent);border:0;border-bottom:1px solid var(--aa-rule);border-radius:0;padding:11px 12px;font-size:16px;line-height:1.5;transition:background var(--aa-reveal),box-shadow var(--aa-reveal)}.aa-input::placeholder,.aa-textarea::placeholder{color:var(--aa-secondary);opacity:.85}.aa-input:focus,.aa-textarea:focus,.aa-select:focus{background:var(--aa-raised);box-shadow:0 3px 5px -4px var(--aa-accent)}.aa-input[aria-invalid="true"]{border-color:var(--aa-danger)}.aa-field-help{font-size:12px;color:var(--aa-secondary)}.aa-field-error{font-size:12px;color:var(--aa-danger)}.aa-textarea{resize:vertical;min-height:108px}.aa-check,.aa-radio-label{display:flex;align-items:center;gap:11px;min-height:36px;font-size:14px;cursor:pointer}.aa-check input,.aa-radio-label input{appearance:none;width:17px;height:17px;min-width:17px;margin:0;border:1px solid var(--aa-secondary);background:transparent;position:relative;display:grid;place-items:center;transition:box-shadow var(--aa-reveal)}.aa-check input:checked{background:var(--aa-accent);border-color:var(--aa-accent);box-shadow:0 0 5px -1px var(--aa-accent)}.aa-check input:checked::after{content:'✓';color:var(--aa-on-ink);font:12px/1 var(--aa-font-mono)}.aa-radio-label input{border-radius:50%}.aa-radio-label input:checked::after{content:"";width:9px;height:9px;border-radius:50%;background:var(--aa-accent);box-shadow:0 0 3px var(--aa-accent)}.aa-switch-label{display:flex;align-items:center;justify-content:space-between;gap:20px;font-size:14px;min-height:40px;cursor:pointer}.aa-switch{appearance:none;position:relative;margin:0;width:38px;min-width:38px;height:21px;border:1px solid var(--aa-secondary);border-radius:2px;background:transparent;transition:background var(--aa-reveal)}.aa-switch::after{content:"";position:absolute;left:3px;top:3px;width:13px;height:13px;background:var(--aa-secondary);transition:transform var(--aa-reveal) var(--aa-ease),background var(--aa-reveal),box-shadow var(--aa-reveal)}.aa-switch:checked{background:var(--aa-accent-wash)}.aa-switch:checked::after{transform:translateX(17px);background:var(--aa-accent);box-shadow:0 0 4px var(--aa-accent)}.aa-range{appearance:none;width:100%;height:24px;margin:0;background:transparent;cursor:pointer}.aa-range::-webkit-slider-runnable-track{height:3px;background:linear-gradient(to right,var(--aa-accent) var(--range-fill,50%),var(--aa-rule) var(--range-fill,50%))}.aa-range::-moz-range-track{height:3px;background:var(--aa-rule)}.aa-range::-moz-range-progress{height:3px;background:var(--aa-accent)}.aa-range::-webkit-slider-thumb{appearance:none;width:12px;height:16px;border:0;border-radius:1px;background:var(--aa-accent);margin-top:-6px;box-shadow:0 0 5px color-mix(in srgb,var(--aa-accent) 45%,transparent)}.aa-range::-moz-range-thumb{width:12px;height:16px;border:0;border-radius:1px;background:var(--aa-accent)}
.aa-tabs{display:flex;border-bottom:1px solid var(--aa-rule);gap:25px}.aa-tab{position:relative;min-height:44px;padding:10px 4px;border:0;background:none;color:var(--aa-secondary);font-size:14px}.aa-tab::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:2px;background:var(--aa-accent);opacity:0;filter:blur(4px);transition:opacity var(--aa-reveal),filter var(--aa-reveal)}.aa-tab[aria-selected="true"]{color:var(--aa-ink)}.aa-tab[aria-selected="true"]::after{opacity:1;filter:blur(.3px)}.aa-badge{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--aa-rule);padding:2px 8px;font:12px/1.7 var(--aa-font-mono);letter-spacing:.03em;white-space:nowrap}.aa-badge-success{color:var(--aa-success);border-color:color-mix(in srgb,var(--aa-success) 50%,transparent)}.aa-badge-warning{color:var(--aa-warning);border-style:dashed}.aa-badge-danger{color:var(--aa-danger);border-color:currentColor}.aa-chip{min-height:36px;padding:5px 12px;display:inline-flex;align-items:center;gap:8px;border:1px solid var(--aa-rule);background:transparent;font-size:13px}.aa-chip[aria-pressed="true"]{border-color:var(--aa-accent);background:var(--aa-accent-wash);box-shadow:inset 0 0 12px color-mix(in srgb,var(--aa-accent) 6%,transparent)}.aa-progress{appearance:none;display:block;width:100%;height:4px;border:0;background:var(--aa-rule)}.aa-progress::-webkit-progress-bar{background:var(--aa-rule)}.aa-progress::-webkit-progress-value{background:var(--aa-accent);box-shadow:3px 0 5px var(--aa-accent)}.aa-progress::-moz-progress-bar{background:var(--aa-accent)}.aa-notice{display:flex;gap:13px;align-items:flex-start;border-top:1px solid var(--aa-rule);border-bottom:1px solid var(--aa-rule);padding:15px 0;font-size:14px}.aa-notice-symbol{font:18px var(--aa-font-print)}.aa-tooltip-wrap{position:relative;display:inline-flex}.aa-tooltip{position:absolute;z-index:15;bottom:calc(100% + 10px);left:50%;transform:translate(-50%,5px);padding:7px 12px;white-space:nowrap;background:var(--aa-ink);color:var(--aa-on-ink);font-size:12px;opacity:0;visibility:hidden;transition:opacity var(--aa-fast),transform var(--aa-fast)}.aa-tooltip-wrap:hover .aa-tooltip,.aa-tooltip-wrap:focus-within .aa-tooltip{opacity:1;visibility:visible;transform:translate(-50%,0)}
.aa-toast{position:fixed;z-index:100;bottom:28px;left:50%;transform:translateX(-50%);max-width:calc(100% - 32px);padding:14px 24px;background:var(--aa-ink);color:var(--aa-on-ink);font-size:14px;box-shadow:0 5px 30px #0002;border:1px solid var(--aa-secondary);animation:aa-develop var(--aa-reveal) var(--aa-ease)}.aa-dialog{color:var(--aa-ink);width:min(440px,calc(100% - 40px));padding:38px;background:var(--aa-sheet);border:1px solid var(--aa-rule);border-radius:0;box-shadow:0 20px 100px #10140d33}.aa-dialog::backdrop{background:#252b2470;backdrop-filter:blur(6px)}.aa-dialog[open]{animation:aa-develop var(--aa-reveal) var(--aa-ease)}.aa-dialog h2{font-size:30px;margin:25px 0 14px}.aa-dialog p{font-size:14px;color:var(--aa-secondary);line-height:2}.dialog-actions{display:flex;justify-content:space-between;gap:12px;margin-top:32px}.aa-accordion{border-bottom:1px solid var(--aa-rule)}.aa-accordion summary{padding:15px 0;list-style:none;cursor:pointer;display:flex;justify-content:space-between;font-size:14px}.aa-accordion summary::after{content:'+';font-family:var(--aa-font-mono)}.aa-accordion[open] summary::after{content:'−'}.aa-accordion p{margin:0 0 20px;font-size:14px;color:var(--aa-secondary)}
@keyframes aa-develop{from{opacity:0;filter:blur(3px)}to{opacity:1;filter:blur(0)}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:1ms!important;animation-iteration-count:1!important;transition-duration:1ms!important;scroll-behavior:auto!important}}
html[data-motion="still"] *,html[data-motion="still"] *::before,html[data-motion="still"] *::after{animation-duration:1ms!important;animation-iteration-count:1!important;transition-duration:1ms!important}
html[data-clarity="high"]{--aa-noise:0;--aa-mist:0}html[data-clarity="high"] .aa-print{filter:none;text-shadow:none}html[data-clarity="high"] .aa-display{text-shadow:none}
