@font-face{font-family:DM Sans;font-style:normal;font-weight:300 500;font-display:swap;src:url(../../../fonts/dm-sans-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:DM Sans;font-style:normal;font-weight:300 500;font-display:swap;src:url(../../../fonts/dm-sans-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:DM Sans;font-style:italic;font-weight:300;font-display:swap;src:url(../../../fonts/dm-sans-italic-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:DM Sans;font-style:italic;font-weight:300;font-display:swap;src:url(../../../fonts/dm-sans-italic-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fraunces;font-style:normal;font-weight:300 500;font-display:swap;src:url(../../../fonts/fraunces-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Fraunces;font-style:normal;font-weight:300 500;font-display:swap;src:url(../../../fonts/fraunces-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fraunces;font-style:normal;font-weight:300 500;font-display:swap;src:url(../../../fonts/fraunces-vietnamese.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Fraunces;font-style:italic;font-weight:300;font-display:swap;src:url(../../../fonts/fraunces-italic-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Fraunces;font-style:italic;font-weight:300;font-display:swap;src:url(../../../fonts/fraunces-italic-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fraunces;font-style:italic;font-weight:300;font-display:swap;src:url(../../../fonts/fraunces-italic-vietnamese.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}:root{--bg-primary: #faf9f7;--bg-secondary: #f0eeea;--bg-card: #ffffff;--text-primary: #1a1a1a;--text-secondary: #6b6b6b;--text-muted: #9a9a9a;--accent: #c45d3e;--accent-soft: #f4e8e4;--success: #5a8f6b;--success-soft: #e8f0ea;--border: #e5e3df;--danger: #d32f2f;--danger-soft: rgba(211, 47, 47, .1);--warning: #f59e0b;--warning-soft: rgba(245, 158, 11, .1);--info: #5b8def;--info-soft: rgba(91, 141, 239, .1);--accent-hover: #b35536;--cal-work: #5b8def;--cal-personal: #5a8f6b;--cal-project: #c45d3e;--shadow-sm: 0 1px 3px rgba(0,0,0,.04);--shadow: 0 2px 8px rgba(0,0,0,.04);--shadow-lg: 0 4px 16px rgba(0,0,0,.08);--shadow-xl: 0 8px 30px rgba(0,0,0,.12);--space-xs: 4px;--space-sm: 8px;--space-md: 16px;--space-lg: 24px;--space-xl: 32px;--radius-sm: 6px;--radius: 8px;--radius-lg: 12px;--font-sans: "DM Sans", system-ui, sans-serif;--font-serif: "Fraunces", Georgia, serif;--font-mono: "SF Mono", "Cascadia Code", "Consolas", monospace;--text-xs: .7rem;--text-sm: .78rem;--text-base: .85rem;--text-md: .9rem;--text-lg: 1rem;--text-xl: 1.2rem;--text-2xl: 1.6rem;--space-2xl: 40px;--transition-fast: .15s ease;--transition-normal: .2s ease}[data-theme=dark]{--bg-primary: #1a1a1a;--bg-secondary: #252525;--bg-card: #2a2a2a;--text-primary: #e8e8e8;--text-secondary: #a0a0a0;--text-muted: #707070;--accent: #e07050;--accent-soft: #3d2a24;--success: #6aaf7b;--success-soft: #1e3024;--border: #3a3a3a;--danger: #ef5350;--danger-soft: rgba(239, 83, 80, .15);--warning: #fbbf24;--warning-soft: rgba(251, 191, 36, .15);--info: #6b9cf0;--info-soft: rgba(107, 156, 240, .15);--accent-hover: #f08060;--shadow-sm: 0 1px 3px rgba(0,0,0,.2);--shadow: 0 2px 8px rgba(0,0,0,.25);--shadow-lg: 0 4px 16px rgba(0,0,0,.3);--shadow-xl: 0 8px 30px rgba(0,0,0,.4)}[data-theme=midnight]{--bg-primary: #0c1829;--bg-secondary: #111f35;--bg-card: #162640;--text-primary: #e8edf5;--text-secondary: #8c9cb8;--text-muted: #5a6a86;--accent: #00c3e3;--accent-soft: rgba(0, 195, 227, .12);--success: #34d399;--success-soft: rgba(52, 211, 153, .12);--border: #1e3050;--danger: #f87171;--danger-soft: rgba(248, 113, 113, .12);--warning: #fbbf24;--warning-soft: rgba(251, 191, 36, .12);--info: #38bdf8;--info-soft: rgba(56, 189, 248, .12);--accent-hover: #22d3ee;--cal-work: #38bdf8;--cal-personal: #34d399;--cal-project: #00c3e3;--shadow-sm: 0 1px 3px rgba(0,0,0,.3);--shadow: 0 2px 8px rgba(0,0,0,.35);--shadow-lg: 0 4px 16px rgba(0,0,0,.4);--shadow-xl: 0 8px 30px rgba(0,0,0,.5)}@media (prefers-color-scheme: dark){:root:not([data-theme=light]):not([data-theme=midnight]){--bg-primary: #1a1a1a;--bg-secondary: #252525;--bg-card: #2a2a2a;--text-primary: #e8e8e8;--text-secondary: #a0a0a0;--text-muted: #707070;--accent: #e07050;--accent-soft: #3d2a24;--success: #6aaf7b;--success-soft: #1e3024;--border: #3a3a3a;--danger: #ef5350;--danger-soft: rgba(239, 83, 80, .15);--warning: #fbbf24;--warning-soft: rgba(251, 191, 36, .15);--info: #6b9cf0;--info-soft: rgba(107, 156, 240, .15);--accent-hover: #f08060;--shadow-sm: 0 1px 3px rgba(0,0,0,.2);--shadow: 0 2px 8px rgba(0,0,0,.25);--shadow-lg: 0 4px 16px rgba(0,0,0,.3);--shadow-xl: 0 8px 30px rgba(0,0,0,.4)}}*{margin:0;padding:0;box-sizing:border-box}body{font-family:var(--font-sans);background:var(--bg-primary);color:var(--text-primary);line-height:1.6;min-height:100vh}.text-muted{color:var(--text-muted)}.text-secondary{color:var(--text-secondary)}.text-accent{color:var(--accent)}.font-serif{font-family:var(--font-serif)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}@media (max-width: 768px){button,a,[role=button],input,select,textarea{-webkit-tap-highlight-color:transparent}button,a,[role=button]{touch-action:manipulation}}.message-list,.mail-message-view,.email-body-content{overscroll-behavior:contain}input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--accent);outline-offset:1px}button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.btn{display:inline-flex;align-items:center;gap:6px;padding:9px 16px;border:none;border-radius:var(--radius);font-size:var(--text-base);font-weight:500;font-family:inherit;cursor:pointer;transition:all var(--transition-fast)}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover{background:var(--accent-hover)}.btn-secondary{background:var(--bg-card);color:var(--text-primary);border:1px solid var(--border)}.btn-secondary:hover{background:var(--bg-secondary)}.btn-ghost{background:none;color:var(--text-secondary)}.btn-ghost:hover{background:var(--bg-secondary);color:var(--text-primary)}.btn-danger{background:none;color:var(--danger);border:1px solid var(--danger)}.btn-danger:hover{background:var(--danger-soft)}.btn-sm{padding:6px 12px;font-size:var(--text-sm)}.btn-icon{padding:8px}.page-title{font-family:var(--font-serif);font-size:1.4rem;font-weight:400;color:var(--text-primary)}.page-count{font-size:var(--text-sm);background:var(--bg-secondary);padding:4px 10px;border-radius:12px;color:var(--text-muted)}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}
