.site-header{position:sticky;top:0;z-index:50;background:color-mix(in oklab,var(--bg),transparent 20%);-webkit-backdrop-filter:saturate(120%) blur(6px);backdrop-filter:saturate(120%) blur(6px);border-bottom:1px solid var(--border)}.site-header:has(.subheader-slot:not(:empty)){border-bottom:0}.header-inner{position:relative;display:grid;grid-template-columns:auto 1fr auto;align-items:center;padding:.75rem 16px .75rem 0;gap:8px;grid-template-rows:auto auto}.subheader-slot{position:relative;z-index:1;grid-column:1 / -1;grid-row:2;display:block;border-top:1px solid var(--border);background:color-mix(in oklab,var(--bg),transparent 6%)}.subheader-slot:empty{display:none;border-top:0;padding:0}.site-title{justify-self:start}.brand-link{display:inline-block;padding-left:16px;color:var(--text);text-decoration:none;font-weight:700;letter-spacing:.2px}.site-nav{position:static;grid-column:2;grid-row:1;justify-self:center;display:flex;gap:clamp(12px,2.2vw,28px);z-index:2}.nav-link{color:color-mix(in oklab,var(--text),#8aa 40%);text-decoration:none;padding:.3rem .6rem;border-radius:8px;transition:color .12s ease,background .12s ease,transform .12s ease}.nav-link:hover{color:var(--text);background:color-mix(in oklab,var(--bg),#fff 6%);transform:translateY(-1px)}.nav-link.active{color:var(--text);font-weight:600;text-decoration:underline;text-underline-offset:6px}.right-cluster{justify-self:end;display:inline-flex;align-items:center;gap:8px}.theme-toggle{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--border);background:color-mix(in oklab,var(--bg),#fff 6%);color:var(--text);padding:.35rem .6rem;border-radius:999px;cursor:pointer;transition:transform .12s ease,background .12s ease,border-color .12s ease}.theme-toggle:hover{transform:translateY(-1px);border-color:var(--accent);background:color-mix(in oklab,var(--bg),#fff 9%)}.theme-toggle svg{display:block}.theme-toggle-text{font-size:.9rem}.hamburger{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:0;width:40px;height:32px;display:none;cursor:pointer}.hamburger span{display:block;height:2px;background:var(--text);margin:6px 0;transition:transform .16s ease,opacity .16s ease}@media (max-width: 720px){.site-nav{display:none}.hamburger{display:inline-block}}.site-header .mobile-menu{display:none!important}@media (max-width: 720px){.site-header .mobile-menu{display:none!important;position:fixed;top:0;right:0;bottom:0;left:0;background:color-mix(in oklab,var(--bg),transparent 5%);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:1000;place-items:center}.site-header .mobile-menu.open{display:grid!important}.mobile-menu-content{display:grid;gap:16px;text-align:center;background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:16px 18px;min-width:min(92dvw,420px)}.mobile-link{color:var(--text);text-decoration:none;font-size:1.2rem}.mobile-link:hover{text-decoration:underline;text-underline-offset:4px}.theme-toggle.mobile{justify-content:center;width:100%}}:root{--header-h: 64px;--footer-h: 56px;--bg: #0b0d12;--text: #e6e8ee;--muted: #94a3b8;--border: #1a1f2b;--surface: #101010;--surface-2: #0c0c0c;--btn-surface: #111625;--btn-surface-hover: #171d2b;--link: #ffffff;--focus-ring: rgba(91,157,255,.2);--accent: rgba(255,255,255,.28);--chip-bg: #0f121a;--chip-bg-active: #172033;--card-bg: #0f121a;--card-border: var(--border);--card-bg-weak: color-mix(in oklab, var(--bg), #fff 6%);--resume-actions-bg: rgba(11,13,18,.7);--overlay-scrim: rgba(0, 0, 0, .6)}html,body{margin:0;padding:0;height:100%}html,body,*{font-family:Noto Sans,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}body{background:var(--bg);color:var(--text)}.container{max-width:960px;margin:0 auto;min-height:calc(100vh - var(--header-h) - var(--footer-h));padding:2rem 1rem;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}.fullbleed{margin:0;padding:0;max-width:none;width:100%;min-height:calc(100dvh - var(--header-h))}.site-footer{border-top:1px solid var(--border);padding:1rem;text-align:center;color:var(--muted)}a,a:visited{color:var(--link);text-decoration:underline;text-underline-offset:4px}a:hover{opacity:.85}.auth-page a,.auth-link,.auth-page a:visited,.auth-link:visited{color:var(--link)!important}.auth-page a:hover,.auth-link:hover{opacity:.85!important}.button,button,.row-actions .button,.row-actions button{display:inline-block;padding:.5rem .9rem;border:1px solid var(--card-border);border-radius:8px;background:var(--btn-surface);color:var(--text);text-decoration:none;cursor:pointer;transition:transform .12s ease,background .12s ease,color .12s ease,border-color .12s ease}.button:hover,button:hover,.row-actions .button:hover,.row-actions button:hover{background:var(--btn-surface-hover);transform:translateY(-1px)}.card{background:var(--surface);border:1px solid var(--card-border);border-radius:12px;padding:.75rem}.chip{display:inline-flex;align-items:center;gap:.35rem;padding:.35rem .6rem;border:1px solid var(--card-border);border-radius:999px;background:var(--chip-bg);font-size:.95rem;color:var(--text)}.chip.small{padding:.2rem .5rem;font-size:.8rem}.chip.active{background:var(--chip-bg-active);border-color:color-mix(in oklab,var(--card-border),#000 10%)}.muted{color:var(--muted)}.error-text{color:#f87171}.success-text{color:#34d399}.form-row-center{display:flex;justify-content:center}input,select,textarea{font:inherit;color:var(--text);background:var(--surface-2);border:1px solid var(--card-border);border-radius:10px;padding:.6rem .8rem}input::placeholder,textarea::placeholder{color:#b3bccd}input:focus,select:focus,textarea:focus{outline:none;border-color:#5b9dff;box-shadow:0 0 0 3px var(--focus-ring)}.date-input,.time-input,input[type=date],input[type=time]{color-scheme:dark;background:var(--surface-2);color:var(--text);border:1px solid var(--card-border);border-radius:10px;padding-right:2.25rem}.date-input::-webkit-calendar-picker-indicator,.time-input::-webkit-calendar-picker-indicator,input[type=date]::-webkit-calendar-picker-indicator,input[type=time]::-webkit-calendar-picker-indicator{opacity:1;pointer-events:auto;filter:brightness(1.3);-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}.auth-page{max-width:520px;margin:0 auto;padding:1.25rem;background:var(--surface);border:1px solid var(--card-border);border-radius:12px;box-shadow:0 8px 30px #00000040}.auth-form{display:flex;flex-direction:column;gap:.9rem;margin-top:.75rem}.auth-form label{display:flex;flex-direction:column;gap:.4rem;font-weight:600}.input-with-icon{position:relative}.input-with-icon input{width:100%;padding-right:2.5rem;box-sizing:border-box}.icon-btn{position:absolute;right:.5rem;top:50%;transform:translateY(-50%);border:none;background:transparent;padding:0;display:flex;align-items:center;justify-content:center;width:1.75rem;height:1.75rem;color:#cfcfcf;cursor:pointer}.icon-btn:hover{color:#fff}.login-page{max-width:400px;margin:auto;padding:2rem;background:#1e1e1e;border-radius:8px}.login-form{display:flex;flex-direction:column;gap:1rem}.login-form label{display:flex;flex-direction:column;font-weight:700}.login-form input{padding:.7rem .9rem}.contact{max-width:720px;margin:0 auto;text-align:center}.contact h1{margin-bottom:1rem}.resume-iframe{display:block;width:100%;height:calc(100dvh - var(--header-h));border:none;background:transparent}.resume-actions{position:fixed;left:50%;transform:translate(-50%);bottom:16px;display:flex;flex-direction:column;gap:6px;padding:8px 12px;border:1px solid var(--border);border-radius:10px;background:var(--resume-actions-bg);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);z-index:20}.resume-actions a{color:var(--link);text-align:center}@media (max-width: 640px){.resume-actions{bottom:24px}}.projects-page{max-width:960px;margin:0 auto;text-align:left}.projects-page h1{text-align:center;margin-bottom:1rem}.projects-page h2{margin-top:2rem}.projects-page h3{margin-top:1.25rem}.projects-page h4{margin-top:.75rem}.projects-page p{line-height:1.6}.projects-page ul{margin:.5rem 0 1rem 1.25rem}.projects-subnav{display:flex;justify-content:center;gap:.5rem;border-bottom:1px solid var(--border, #444);padding:.5rem 1rem;background:inherit;position:static;top:auto;z-index:auto}.todo-page{max-width:680px;margin:0 auto}.todo-split{display:grid;gap:1rem}@media (min-width: 900px){.todo-split{grid-template-columns:1fr 1.5fr;align-items:start}}.panel{background:var(--surface);border:1px solid var(--card-border);border-radius:12px;padding:1rem;color:var(--text)}.panel--wide{width:min(95vw,800px);margin-inline:auto}.add-form .form-row{display:grid;grid-template-columns:160px 1fr;align-items:center;gap:.75rem;margin-top:.5rem}.add-form .form-label{color:var(--text);opacity:.9}.add-form .form-control input,.add-form .form-control select{width:100%}.add-row{display:flex;gap:.5rem;flex-wrap:wrap}.select{padding:.6rem .8rem;border-radius:10px;border:1px solid var(--card-border);background:var(--surface-2);color:var(--text)}.view-header>h3{text-align:center;margin-top:0}.view-header .centered{display:flex;justify-content:center;gap:.5rem;margin-top:.5rem}.view-header .tasks-date input.date-input{text-align:center}.view-header .tasks-filters .todo-filters{justify-content:center;display:flex;gap:.5rem}.day-controls{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap}.todo-filters{display:flex;gap:.5rem;flex-wrap:wrap}.todo-list{list-style:none;margin:.75rem 0 0;padding:0;display:flex;flex-direction:column;gap:.5rem}.todo-item{display:grid;grid-template-columns:auto 1fr auto auto;gap:.5rem;align-items:center;padding:.6rem .75rem;border:1px solid var(--card-border);border-radius:10px;background:var(--card-bg)}.todo-item.done{opacity:.75}.todo-text{word-break:break-word}.meta-chips{display:flex;gap:.35rem;margin-right:.5rem}.meta-chips .chip.small[title="This task has no date"]{opacity:.85}.row-actions{display:flex;gap:.5rem;flex-wrap:wrap}.edit-col{display:flex;flex-direction:column;gap:.5rem;flex:1}.edit-row{display:flex;gap:.5rem;flex-wrap:wrap}.first-visit-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--overlay-scrim);display:flex;justify-content:center;align-items:center;z-index:1000}.first-visit-modal{background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:12px;padding:2rem;max-width:600px;width:90%;box-shadow:0 6px 20px #00000040;position:relative}.first-visit-close{position:absolute;top:.75rem;right:.75rem;background:transparent;border:0;font-size:1.5rem;color:var(--text);cursor:pointer;opacity:.85}.first-visit-close:hover{opacity:1}.schedule-header{display:grid;gap:.75rem}.sh-title{margin:0;text-align:center;font-size:1.35rem;font-weight:700}.sh-row.sh-modes{display:flex;justify-content:center;gap:.5rem;flex-wrap:wrap}.sh-row.sh-nav-row{display:flex;justify-content:center}.sh-nav{display:flex;gap:.5rem;flex-wrap:wrap;justify-content:center}.sh-row.sh-date-row{padding-left:.75rem}.add-form .form-row{display:grid;grid-template-columns:140px 1fr;align-items:center;gap:.5rem;margin-top:.5rem}.add-form input,.add-form select{box-sizing:border-box;width:100%;max-width:100%}.add-form .date-input,.add-form .time-input,.add-form .select{width:100%}.panel{overflow:hidden}@media (max-width: 520px){.add-form .form-row{grid-template-columns:1fr}.add-form .form-label{margin-bottom:.25rem}}.day-timeline{width:100%;padding:.5rem;border:1px solid var(--border, #e5e7eb);border-radius:12px;background:var(--panel, #fff)}.day-timeline-svg{width:100%;height:160px;display:block}.tl-track{fill:var(--tl-track, #fafafa);stroke:var(--border, #eee)}.tl-grid{stroke:#eaeaea;stroke-width:.2}.tl-grid.major{stroke:#dcdcdc;stroke-width:.4}.tl-hour{font-size:3px;fill:#777}.tl-item .tl-bar{fill:#4f46e5;opacity:.9}.tl-item.done .tl-bar{fill:#9ca3af}.tl-label{font-size:4px;fill:#fff;pointer-events:none}.tl-milestone{fill:#10b981}.tl-item.done .tl-milestone{fill:#9ca3af}.tl-mil-label{font-size:3.5px;fill:#374151}.tl-legend{display:flex;align-items:center;gap:.75rem;margin-top:.5rem;font-size:.9rem;color:#555}.legend-box{display:inline-block;width:14px;height:8px;border-radius:4px;background:#4f46e5;margin-right:.35rem}.legend-dot{display:inline-block;width:0;height:0;border:6px solid transparent;border-top-color:#10b981;transform:rotate(45deg);margin-right:.2rem}.timeline{max-width:900px;margin-inline:auto;padding:.5rem .75rem}.timeline__axis{position:relative;display:grid;grid-template-columns:repeat(24,1fr);column-gap:0;align-items:end;height:28px;margin-bottom:8px}.timeline__tick{position:relative;height:100%;border-left:1px solid var(--border, #e5e7eb)}.timeline__tick:last-child{border-right:1px solid var(--border, #e5e7eb)}.timeline__ticklabel{position:absolute;bottom:-1.25rem;transform:translate(-50%);left:0;font-size:11px;white-space:nowrap;color:var(--muted, #6b7280)}.timeline__lane{position:relative;height:44px;background:var(--bg-subtle, #f8fafc);border:1px solid var(--border, #e5e7eb);border-radius:10px;overflow:hidden}.timeline__bar{position:absolute;top:6px;height:32px;border-radius:8px;background:var(--accent, #60a5fa);opacity:.95;display:flex;align-items:center;padding-inline:8px;pointer-events:auto}.timeline__bar.is-done{opacity:.5;text-decoration:line-through}.timeline__dot{position:absolute;top:4px;width:0;height:36px;border-left:2px solid var(--accent, #60a5fa)}.timeline__dot.is-done{border-left-style:dashed}.timeline__barlabel{font-size:12px;color:#fff;line-height:1}@media (max-width: 520px){.timeline{max-width:100%}.timeline__ticklabel{display:none}}.week-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:.5rem;width:100%}.week-col{display:flex;flex-direction:column;gap:.25rem;min-width:0}.week-col-header{font-size:.9rem;opacity:.9}.week-list{list-style:none;margin:.25rem 0 0;padding:0;display:grid;gap:.4rem}.week-list-item{display:block;min-width:0}.week-card{display:grid;grid-template-rows:auto auto;gap:.15rem;padding:.55rem .65rem;border:1px solid var(--card-border);border-radius:.75rem;background:var(--card-bg-weak);box-shadow:0 1px 2px #00000040}.week-card:hover{border-color:var(--accent);background:#ffffff0f}.week-card .text{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.week-card .time{font-size:.85rem;opacity:.85;white-space:nowrap}.week-list-item.done .week-card{opacity:.85}.week-list-item.done .week-card .text{text-decoration:line-through;opacity:.8}@media (max-width: 820px){.week-grid{gap:.4rem}.week-card{padding:.5rem .55rem}}.month-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:.5rem}.month-dow{font-size:.8rem;opacity:.7;text-align:center}.month-cell{border:1px solid var(--card-border);border-radius:.5rem;padding:.5rem;min-height:90px}.month-cell-header{display:flex;align-items:center;justify-content:space-between;font-weight:600}.month-cell .badge{font-size:.75rem;padding:0 .35rem;border:1px solid var(--card-border);border-radius:.5rem;opacity:.8}.month-cell-list{margin:.35rem 0 0;padding:0;list-style:none;display:grid;gap:.15rem;font-size:.85rem}.month-item{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.month-more{font-size:.8rem}:root[data-theme=light]{--bg: #f6f7fb;--text: #0b0d12;--muted: #4b5563;--border: #d9dfeb;--surface: #ffffff;--surface-2: #f2f4f8;--btn-surface: #ffffff;--btn-surface-hover: #f3f6fb;--link: #0b0d12;--focus-ring: rgba(37, 99, 235, .18);--accent: rgba(0,0,0,.22);--chip-bg: #eef2f8;--chip-bg-active: #dfe8f6;--card-bg: #ffffff;--card-border: #cfd7e6;--card-bg-weak: #f6f9ff;--resume-actions-bg: rgba(255,255,255,.85);--overlay-scrim: rgba(0, 0, 0, .28)}:root[data-theme=pink]{--bg: #ffe6f4;--text: #3a0b23;--muted: #7a3a57;--border: #f4b7d3;--surface: #fff5fb;--surface-2: #ffeefd;--btn-surface: #ffecf7;--btn-surface-hover: #ffe3f3;--link: #a0006a;--focus-ring: rgba(255, 0, 122, .18);--accent: rgba(160, 0, 106, .28);--chip-bg: #ffe3f3;--chip-bg-active: #ffd1ea;--card-bg: #fff;--card-border: #f4b7d3;--card-bg-weak: #fff0f8;--resume-actions-bg: rgba(255, 240, 248, .9);--overlay-scrim: rgba(160, 0, 106, .2)}:root[data-theme=pink] .date-input,:root[data-theme=pink] .time-input,:root[data-theme=pink] input[type=date],:root[data-theme=pink] input[type=time]{color-scheme:light}:root[data-theme=pink] .date-input::-webkit-calendar-picker-indicator,:root[data-theme=pink] .time-input::-webkit-calendar-picker-indicator,:root[data-theme=pink] input[type=date]::-webkit-calendar-picker-indicator,:root[data-theme=pink] input[type=time]::-webkit-calendar-picker-indicator{filter:none}:root[data-theme=light] .date-input,:root[data-theme=light] .time-input,:root[data-theme=light] input[type=date],:root[data-theme=light] input[type=time]{color-scheme:light}:root[data-theme=light] .date-input::-webkit-calendar-picker-indicator,:root[data-theme=light] .time-input::-webkit-calendar-picker-indicator,:root[data-theme=light] input[type=date]::-webkit-calendar-picker-indicator,:root[data-theme=light] input[type=time]::-webkit-calendar-picker-indicator{filter:none}:root[data-theme=light] input,:root[data-theme=light] select,:root[data-theme=light] textarea{border-color:#cfd7e6}.projects-subnav{display:flex;justify-content:center;gap:.5rem;border-bottom:1px solid var(--border, #444);padding:.5rem 1rem;background:var(--bg, #111);position:sticky;top:60px;z-index:100}.subnav-tab{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:0;padding:.4rem .8rem;font:inherit;color:inherit;opacity:.8;cursor:pointer;border-radius:999px}.subnav-tab:hover{opacity:1}.subnav-tab.active{opacity:1;font-weight:600;outline:2px solid var(--accent, currentColor);outline-offset:2px}.projects-panels>[role=tabpanel][hidden]{display:none}.wordle h1{margin:1rem 0 .5rem}.grid{display:grid;gap:.75rem;margin:1rem auto 0;width:min(520px,100%)}.row{display:grid;grid-template-columns:repeat(5,1fr);gap:.5rem}.cell{background:#0f131d;border:1px solid #1f2737;border-radius:10px;padding:.5rem}.cell input{width:100%;height:56px;text-align:center;font-size:28px;background:transparent;color:#fff;border:none;outline:none}.color{display:flex;justify-content:center;gap:6px;margin-top:6px}.dot{width:14px;height:14px;border-radius:50%;border:1px solid #2c3750;background:#1a2030;opacity:.7}.dot.yellow{background:#b59f3b;border-color:#b59f3b}.dot.green{background:#538d4e;border-color:#538d4e}.dot.active{box-shadow:0 0 0 2px #ffffff1f;opacity:1}.cell.yellow{outline:2px solid #b59f3b40}.cell.green{outline:2px solid #538d4e40}.hint{color:#94a3b8;margin:.5rem 0 1rem}.wordle{max-width:960px;margin:0 auto;text-align:center}.wordle h1{margin:1rem 0 .75rem}.row{display:flex;justify-content:center;gap:.5rem;margin:.5rem 0}.row-tight{gap:.4rem}.box{width:56px;height:56px;text-align:center;font-size:28px;letter-spacing:1px;background:#0f131d;color:#fff;border:1px solid #1f2737;border-radius:10px;outline:none}.box.green{box-shadow:0 0 0 2px #538d4e40}.box.yellow{box-shadow:0 0 0 2px #b59f3b40}.box.gray{box-shadow:0 0 0 2px #2c375040}.long{width:min(520px,90vw);font-size:18px;height:48px}.results{margin-top:1rem;text-align:left}.results h2{font-size:1.1rem;margin-bottom:.25rem}.list{line-height:1.6;word-wrap:anywhere}.btn{border:1px solid #1f2737;background:#111625;color:#e6e8ee;border-radius:10px;padding:.55rem .9rem;cursor:pointer;transition:transform .12s ease,background .12s ease,color .12s ease,opacity .12s ease}.btn:hover{background:#171d2b;color:#fff;transform:translateY(-1px)}.btn:disabled{opacity:.6;cursor:not-allowed;transform:none}:root[data-theme=light] .cell,:root[data-theme=light] .box{background:#fff;color:#0b0d12;border-color:#cfd7e6}:root[data-theme=light] .dot{border-color:#cfd7e6;background:#e7ecf6}:root[data-theme=light] .hint,:root[data-theme=light] .results h2{color:#4b5563}:root[data-theme=light] .btn{background:#fff;color:#0b0d12;border-color:#cfd7e6}:root[data-theme=light] .btn:hover{background:#f3f6fb;color:#0b0d12}
