@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/2c55a0e60120577a-s.2a48534a.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/9c72aa0f40e4eef8-s.18a48cbc.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/ad66f9afd8947f86-s.7a40eb73.woff2)format("woff2");unicode-range:U+1F??}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/5476f68d60460930-s.c995e352.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/2bbe8d2671613f1f-s.76dcb0b2.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/1bffadaabf893a1e-s.7cd81963.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/83afe278b6a6bb3c-s.p.3a6ba036.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter Fallback;src:local(Arial);ascent-override:90.44%;descent-override:22.52%;line-gap-override:0.0%;size-adjust:107.12%}.inter_fe8b9d92-module__LINzvG__className{font-family:Inter,Inter Fallback;font-style:normal}.inter_fe8b9d92-module__LINzvG__variable{--font-inter:"Inter","Inter Fallback"}
@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:100 800;font-display:swap;src:url(../media/13bf9871fe164e7f-s.f2220059.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:100 800;font-display:swap;src:url(../media/cc545e633e20c56d-s.f6f1950f.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:100 800;font-display:swap;src:url(../media/71b036adf157cdcf-s.bd5f4d11.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:100 800;font-display:swap;src:url(../media/89b21bb081cb7469-s.51c18f09.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:100 800;font-display:swap;src:url(../media/3fe682a82f50d426-s.23358719.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:JetBrains Mono;font-style:normal;font-weight:100 800;font-display:swap;src:url(../media/70bc3e132a0a741e-s.p.15008bfb.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono Fallback;src:local(Arial);ascent-override:75.79%;descent-override:22.29%;line-gap-override:0.0%;size-adjust:134.59%}.jetbrains_mono_8dec50e9-module__V6cRDq__className{font-family:JetBrains Mono,JetBrains Mono Fallback;font-style:normal}.jetbrains_mono_8dec50e9-module__V6cRDq__variable{--font-mono:"JetBrains Mono","JetBrains Mono Fallback"}
:root{--foreground:#1a1a1a;--background:#fafaf5;--background-alt:#f5f5eb;--grid-border:#e8e8e0;--font-sans:var(--font-inter),-apple-system,BlinkMacSystemFont,sans-serif;--font-mono:var(--font-mono),"JetBrains Mono",monospace}body{color:var(--foreground);background:var(--background);font-family:var(--font-mono);-webkit-font-smoothing:antialiased;margin:0;padding:0;line-height:1.5}.container{max-width:1400px;margin:0 auto;padding:0 2rem 2rem}.header{background:var(--background-alt);z-index:20;border-bottom:1px solid var(--grid-border);justify-content:space-between;align-items:center;margin:0 -2rem 1.5rem;padding:1rem 2rem;display:flex;position:sticky;top:0}.header-title-group{align-items:center;gap:1rem;display:flex}.header h1{font-family:var(--font-mono);letter-spacing:-.02em;margin:0;font-size:1.75rem;font-weight:600}.legend{gap:1rem;font-size:.875rem;display:flex}.legend-item{align-items:center;gap:.5rem;display:flex}.color-dot{border-radius:2px;width:1rem;height:1rem;display:block}.calendar-grid{grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:2rem;display:grid}.month-card{border:1px solid var(--grid-border);background:#fff;border-radius:.75rem;overflow:visible;box-shadow:0 1px 3px #0000000a}.month-header{background:var(--background-alt);text-align:center;border-bottom:1px solid var(--grid-border);padding:.625rem;font-size:.9375rem;font-weight:600}.nav-btn{color:#9ca3af;padding:0 .5rem;font-size:1.5rem;text-decoration:none}.nav-btn:hover{color:#111827}.days-grid{text-align:center;grid-template-columns:repeat(7,1fr);font-size:.875rem;display:grid}.day-cell{cursor:pointer;border-bottom:1px solid #0000;padding:.5rem .25rem;transition:background-color .1s;position:relative}.is-weekend{background-color:#f0f0f5}.day-cell:hover{background-color:var(--grid-border);z-index:15}.day-header{color:#6b7280;padding:.25rem 0;font-size:.75rem;font-weight:500}.status-SPORT{background-color:var(--color-sport)}.status-HOLIDAY{background-color:var(--color-holiday)}.status-OTHER{background-color:var(--color-other)}.sr-only{clip:rect(0,0,0,0);border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.modal-overlay{z-index:50;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background-color:#00000080;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal-content{background:#fff;border-radius:.5rem;width:100%;max-width:400px;padding:1.5rem;box-shadow:0 20px 25px -5px #0000001a,0 10px 10px -5px #0000000a}.modal-input{border:1px solid #e5e7eb;border-radius:.25rem;width:100%;margin-top:.5rem;margin-bottom:1rem;padding:.5rem;font-size:1rem}.modal-actions{justify-content:flex-end;gap:.5rem;display:flex}.btn{cursor:pointer;border:none;border-radius:.25rem;padding:.5rem 1rem;font-weight:500}.btn-primary{color:#fff;background-color:#111827}.btn-cancel{color:#6b7280;background-color:#0000}.note-indicator{background-color:#b45309;border-radius:50%;width:6px;height:6px;position:absolute;top:2px;right:2px}.tooltip{color:var(--foreground);white-space:nowrap;pointer-events:none;opacity:0;z-index:100;border:1px solid var(--grid-border);background-color:#fff;border-radius:.5rem;margin-bottom:6px;padding:.5rem .75rem;font-size:.8125rem;transition:opacity .15s;position:absolute;bottom:100%;left:50%;transform:translate(-50%);box-shadow:0 4px 12px #00000014}.day-cell:hover .tooltip{opacity:1}.popover-backdrop{z-index:40;position:fixed;inset:0}.note-popover{border:1px solid var(--grid-border);z-index:50;background:#fff;border-radius:.5rem;gap:.25rem;padding:.25rem;display:flex;position:fixed;transform:translate(-50%);box-shadow:0 4px 12px #0000001a}.note-popover-input{background:var(--background);border:none;border-radius:.25rem;width:200px;padding:.5rem .75rem;font-family:inherit;font-size:.875rem}.note-popover-input:focus{outline:none}.note-popover-save{color:#fff;cursor:pointer;background:#7c8c6b;border:none;border-radius:.25rem;padding:.5rem .75rem;font-size:.875rem}.note-popover-save:hover{background:#6b7a5c}.user-menu{position:relative}.user-icon{cursor:pointer;color:#6b7280;background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;padding:.5rem;display:flex}.user-icon:hover{color:#111827;background-color:#f3f4f6}.menu-backdrop{z-index:40;position:fixed;inset:0}.dropdown-menu{border:1px solid var(--grid-border);z-index:50;background:#fff;border-radius:.5rem;min-width:150px;margin-top:.5rem;position:absolute;top:100%;right:0;box-shadow:0 10px 15px -3px #0000001a}.menu-item{text-align:left;cursor:pointer;width:100%;color:var(--foreground);background:0 0;border:none;padding:.75rem 1rem;font-size:.875rem;text-decoration:none;display:block}.menu-item:hover{background-color:var(--background-alt)}.login-container{background-color:var(--background);justify-content:center;align-items:center;min-height:100vh;display:flex}.login-card{border:1px solid var(--grid-border);background:#fff;border-radius:.75rem;width:100%;max-width:360px;padding:2rem;box-shadow:0 1px 3px #0000000a}.login-title{font-family:var(--font-mono);text-align:center;margin:0 0 .5rem;font-size:1.5rem;font-weight:600}.login-subtitle{text-align:center;color:#6b7280;margin:0 0 1.5rem;font-size:.875rem}.login-field{margin-bottom:1rem}.login-input{border:1px solid var(--grid-border);box-sizing:border-box;border-radius:.5rem;width:100%;padding:.75rem;font-family:inherit;font-size:1rem}.login-input:focus{border-color:var(--foreground);outline:none}.login-error{color:#ef4444;text-align:center;margin-bottom:1rem;font-size:.875rem}.login-button{background-color:var(--foreground);color:#fff;cursor:pointer;border:none;border-radius:.5rem;width:100%;padding:.75rem;font-family:inherit;font-size:1rem;font-weight:500}.login-button:hover{background-color:#333}.auth-switch{text-align:center;color:#6b7280;margin-top:1rem;font-size:.875rem}.auth-switch a{color:var(--foreground);text-decoration:none}.auth-switch a:hover{text-decoration:underline}.settings-page{max-width:1400px}.settings-content{max-width:600px}.settings-header{align-items:center;gap:1rem;margin-bottom:2rem;display:flex}.settings-header h1{font-family:var(--font-mono);margin:0;font-size:1.5rem;font-weight:600}.back-link{color:#6b7280;font-size:1.25rem;text-decoration:none}.back-link:hover{color:var(--foreground)}.settings-section{border:1px solid var(--grid-border);background:#fff;border-radius:.75rem;padding:1.5rem}.settings-section+.settings-section{margin-top:1rem}.settings-section h2{color:#6b7280;margin:0 0 1rem;font-size:1rem;font-weight:600}.settings-description{color:#6b7280;margin:0 0 1rem;font-size:.9375rem;line-height:1.4}.settings-error{color:#dc2626;background-color:#fef2f2;border-radius:.5rem;margin-bottom:1rem;padding:.75rem;font-size:.875rem}.category-list{flex-direction:column;gap:.5rem;display:flex}.category-item{border-radius:.5rem;align-items:center;gap:.75rem;padding:.5rem;display:flex}.category-item:hover{background-color:var(--background)}.category-color{border:1px solid var(--grid-border);cursor:pointer;border-radius:.25rem;width:2rem;height:2rem;padding:0}.category-name{background:0 0;border:1px solid #0000;border-radius:.25rem;flex:1;padding:.5rem;font-family:inherit;font-size:.9375rem}.category-name:focus{border-color:var(--grid-border);background:#fff;outline:none}.category-delete{color:#9ca3af;cursor:pointer;background:0 0;border:none;border-radius:.25rem;justify-content:center;align-items:center;width:2rem;height:2rem;font-size:1.25rem;display:flex}.category-delete:hover{color:#dc2626;background-color:#fef2f2}.add-category-btn{background:var(--background);border:1px dashed var(--grid-border);color:#6b7280;cursor:pointer;border-radius:.5rem;width:100%;margin-top:1rem;padding:.75rem 1rem;font-family:inherit;font-size:.875rem}.add-category-btn:hover{color:var(--foreground);border-color:#9ca3af}.export-button{background:var(--background-alt);color:var(--foreground);border:1px solid var(--grid-border);border-radius:.5rem;justify-content:center;align-items:center;width:fit-content;padding:.75rem 1rem;font-weight:600;text-decoration:none;transition:background-color .15s,border-color .15s,color .15s;display:inline-flex}.export-button:hover{color:#0f172a;background-color:#e4e4d6;border-color:#d6d6c6}.export-button-ghost{color:var(--foreground);border-color:var(--grid-border);background:0 0}.export-button-ghost:hover{background:var(--background);border-color:#9ca3af}
