:root{--surface: #14130e;--surface-dim: #14130e;--surface-bright: #3b3933;--surface-container-lowest: #0f0e09;--surface-container-low: #1d1c16;--surface-container: #21201a;--surface-container-high: #2b2a24;--surface-container-highest:#36352f;--surface-variant: #36352f;--on-surface: #e7e2d9;--on-surface-variant: #d2c4bc;--inverse-surface: #e7e2d9;--inverse-on-surface: #32302a;--background: #14130e;--on-background: #e7e2d9;--outline: #9b8e87;--outline-variant: #4f453f;--primary: #dfc0af;--on-primary: #3f2c20;--primary-container: #2c1b10;--on-primary-container: #9c8172;--primary-fixed: #fcdcca;--primary-fixed-dim: #dfc0af;--inverse-primary: #71594b;--surface-tint: #dfc0af;--secondary: #b4ccbb;--on-secondary: #203529;--secondary-container: #364c3e;--on-secondary-container: #a3bbaa;--tertiary: #e9c176;--on-tertiary: #412d00;--tertiary-container: #2a1c00;--on-tertiary-container: #a3813e;--error: #ffb4ab;--on-error: #690005;--error-container: #93000a;--on-error-container: #ffdad6;--font-display: "EB Garamond", Georgia, serif;--font-serif: "Noto Serif", "Noto Serif TC", Georgia, serif;--font-sans: "Hanken Grotesk", system-ui, sans-serif;--text-display-lg: 48px;--lh-display-lg: 56px;--text-headline-lg: 32px;--lh-headline-lg: 40px;--text-title-md: 24px;--lh-title-md: 32px;--text-body-lg: 18px;--lh-body-lg: 30px;--text-body-md: 16px;--lh-body-md: 26px;--text-label-md: 14px;--lh-label-md: 20px;--text-label-sm: 12px;--lh-label-sm: 16px;--radius-none: 0;--radius-sm: 2px;--radius: 4px;--radius-lg: 8px;--radius-full: 9999px;--space-xs: 4px;--space-sm: 8px;--space-md: 16px;--space-lg: 24px;--space-xl: 40px;--space-xxl: 64px;--gutter: 24px;--margin-mobile: 16px;--margin-desktop:80px;--max-content: 720px;--shadow-parchment: 0px 10px 30px rgba(0, 0, 0, .4);--shadow-card: 0px 15px 35px rgba(0, 0, 0, .5);--shadow-sm: 0 2px 8px rgba(0, 0, 0, .3);--ease-scholar: cubic-bezier(.4, 0, .2, 1);--transition: all .3s var(--ease-scholar);--bg-page: var(--background);--bg-card: var(--surface-container-low);--bg-subtle: var(--surface-container);--bg-hover: var(--surface-container-high);--accent: var(--primary);--accent-light: var(--primary-fixed);--accent-subtle: var(--primary-container);--rose: var(--error);--rose-subtle: var(--error-container);--text-primary: var(--on-surface);--text-secondary: var(--on-surface-variant);--text-muted: var(--outline);--text-placeholder:var(--outline-variant);--border: var(--outline-variant);--border-light: rgba(79, 69, 63, .4)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:var(--font-serif);font-size:var(--text-body-md);line-height:var(--lh-body-md);background-color:var(--background);color:var(--on-surface);min-height:100vh}#app{min-height:100vh}.material-symbols-outlined{font-variation-settings:"FILL" 0,"wght" 300,"GRAD" 0,"opsz" 24;font-size:20px;line-height:1;vertical-align:middle;-webkit-user-select:none;user-select:none}.material-symbols-outlined.filled{font-variation-settings:"FILL" 1,"wght" 400,"GRAD" 0,"opsz" 24}.btn{display:inline-flex;align-items:center;gap:6px;padding:10px 20px;border-radius:var(--radius-sm);font-family:var(--font-sans);font-size:var(--text-label-md);font-weight:500;letter-spacing:.05em;cursor:pointer;border:none;transition:var(--transition);text-decoration:none;white-space:nowrap}.btn-primary{background:var(--primary-container);color:var(--primary);box-shadow:inset 0 0 0 1px #c5a05933}.btn-primary:hover{filter:brightness(1.15);box-shadow:inset 0 0 0 1px #c5a05966}.btn-primary:disabled{opacity:.4;cursor:not-allowed}.btn-ghost{background:transparent;color:var(--outline);border:1px solid var(--outline-variant)}.btn-ghost:hover{background:#ffffff0d;color:var(--on-surface);border-color:var(--outline)}.btn-ghost:disabled{opacity:.3;cursor:not-allowed}.btn-danger{background:transparent;color:var(--error);border:1px solid rgba(255,180,171,.2)}.btn-danger:hover{background:#93000a33}.btn-sm{padding:6px 14px;font-size:var(--text-label-sm)}.tag{display:inline-block;padding:2px 8px;border-radius:var(--radius-none);font-family:var(--font-sans);font-size:11px;font-weight:600;letter-spacing:.08em;background:#36342fcc;border:1px solid rgba(79,69,63,.5);color:var(--on-surface-variant);text-transform:uppercase}.card{background:var(--surface-container-low);border:1px solid var(--outline-variant);border-radius:var(--radius);box-shadow:var(--shadow-sm)}.field-label{display:block;font-family:var(--font-sans);font-size:var(--text-label-md);font-weight:500;letter-spacing:.05em;color:var(--outline);margin-bottom:8px;transition:color .2s}.field-input{width:100%;padding:12px 0;background:transparent;border:none;border-bottom:1px solid rgba(79,69,63,.5);font-family:var(--font-serif);font-size:var(--text-body-md);color:var(--on-surface);transition:border-color .3s var(--ease-scholar);outline:none}.field-input:focus{border-bottom-color:var(--primary)}.field-input::placeholder{color:#9b8e8759}.field-input-box{width:100%;padding:10px 14px;background:#14130e80;border:1px solid rgba(79,69,63,.3);border-radius:var(--radius);font-family:var(--font-serif);font-size:var(--text-body-md);color:var(--on-surface);transition:border-color .2s,box-shadow .2s;outline:none}.field-input-box:focus{border-color:#dfc0af80;box-shadow:0 0 0 1px #dfc0af33}.field-input-box::placeholder{color:#9b8e874d}.field-group{margin-bottom:24px}.field-hint{font-family:var(--font-sans);font-size:var(--text-label-sm);color:var(--outline);margin-top:6px;font-style:italic}.divider{border:none;border-top:1px solid rgba(79,69,63,.3);margin:24px 0}.toast-container{position:fixed;bottom:32px;right:32px;z-index:1000;display:flex;flex-direction:column;gap:8px}.toast{padding:12px 20px;border-radius:var(--radius);font-family:var(--font-sans);font-size:var(--text-label-md);font-weight:500;box-shadow:var(--shadow-parchment);animation:toast-in .3s var(--ease-scholar);border:1px solid rgba(79,69,63,.4)}.toast-success{background:var(--surface-container-highest);color:var(--on-surface)}.toast-error{background:var(--error-container);color:var(--on-error-container);border-color:#ffb4ab33}@keyframes toast-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.prose{font-family:var(--font-serif);font-size:var(--text-body-lg);line-height:var(--lh-body-lg);color:var(--on-surface)}.prose h1{font-family:var(--font-display);font-size:1.6rem;margin:1.5em 0 .5em;font-weight:600}.prose h2{font-family:var(--font-display);font-size:1.3rem;margin:1.4em 0 .5em;font-weight:500}.prose h3{font-family:var(--font-display);font-size:1.1rem;margin:1.2em 0 .4em;font-weight:500}.prose p{margin-bottom:1em}.prose ul,.prose ol{padding-left:1.5em;margin-bottom:1em}.prose li{margin-bottom:.3em}.prose strong{font-weight:600;color:var(--primary)}.prose em{font-style:italic}.prose blockquote{border-left:3px solid rgba(197,160,89,.5);padding-left:1.2em;margin:1.2em 0;color:var(--on-surface-variant);font-style:italic}.prose a{color:var(--tertiary);text-decoration:underline}.prose mark{background:#e9c17640;padding:0 2px;border-radius:2px}.prose-parchment{font-family:var(--font-serif);font-size:var(--text-body-lg);line-height:var(--lh-body-lg);color:#1a1a1a}.prose-parchment h1{font-family:var(--font-display);font-size:1.6rem;margin:1.5em 0 .5em;font-weight:600;color:#14130e}.prose-parchment h2{font-family:var(--font-display);font-size:1.3rem;margin:1.4em 0 .5em;font-weight:500;color:#14130e}.prose-parchment h3{font-family:var(--font-display);font-size:1.1rem;margin:1.2em 0 .4em;color:#14130e}.prose-parchment p{margin-bottom:1em}.prose-parchment ul,.prose-parchment ol{padding-left:1.5em;margin-bottom:1em}.prose-parchment li{margin-bottom:.3em}.prose-parchment strong{font-weight:600;color:#3f2c20}.prose-parchment em{font-style:italic}.prose-parchment blockquote{border-left:3px solid #C5A059;padding-left:1.2em;margin:1.2em 0;color:#5a4a3a;font-style:italic}.prose-parchment a{color:#6b1b1b;text-decoration:underline}.prose-parchment mark{background:#c5a0594d;padding:0 2px}::-webkit-scrollbar{width:4px;height:4px}::-webkit-scrollbar-track{background:var(--surface-container-lowest)}::-webkit-scrollbar-thumb{background:var(--outline-variant);border-radius:2px}::-webkit-scrollbar-thumb:hover{background:var(--outline)}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}@keyframes fade-up{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.animate-fade-up{animation:fade-up .4s var(--ease-scholar) both}.ribbon{clip-path:polygon(0 0,100% 0,100% 100%,50% 85%,0 100%)}
