:root{--bone:#fafaf8;--ink:#1a1715;--ink-muted:#6b6865;--vermilion:#dc2626;--rule:#d1c7ba;--font-serif:Georgia, "Times New Roman", serif;--font-size-base:17px;--font-size-small:14px;--font-size-heading:20px;--line-height:1.5;--margin-page:clamp(32px, 8vw, 120px);--margin-column:48px;--space-unit:16px;--space-rule:24px;scrollbar-color:var(--vermilion) transparent;caret-color:var(--vermilion);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--bone:#1a1715;--ink:#f8f4ee;--ink-muted:#b8b3ad;--vermilion:#ef4444;--rule:#3a352f}}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{font-size:var(--font-size-base);overflow-x:clip}body{font-family:var(--font-serif);color:var(--ink);background:var(--bone);line-height:var(--line-height);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#root{min-height:100vh;padding:calc(var(--space-unit) * 3) var(--margin-page) calc(var(--space-unit) * 4);max-width:1200px;margin:0 auto}.screen{min-height:100vh}h1{font-size:var(--font-size-heading);letter-spacing:.06em;text-transform:uppercase;text-align:center;margin-bottom:var(--space-unit);text-wrap:balance;font-weight:400}h2{font-size:var(--font-size-base);letter-spacing:.04em;text-transform:uppercase;margin-top:calc(var(--space-rule) * 2);margin-bottom:var(--space-rule);text-align:center;text-wrap:balance;font-weight:600}p{text-wrap:pretty}.rule{background:var(--rule);height:1px;margin:var(--space-rule) 0;border:none}.date-subhead{text-align:center;font-size:var(--font-size-small);color:var(--ink-muted);text-transform:uppercase;letter-spacing:.06em;margin-bottom:calc(var(--space-rule) * 1.5);padding-bottom:var(--space-unit);border-bottom:1px solid var(--rule)}.habit-list{list-style:none}.habit-item{gap:var(--space-unit);padding:calc(var(--space-unit) * .75) 0;border-bottom:1px solid var(--rule);grid-template-columns:24px 1fr auto;align-items:center;display:grid}.habit-item:first-child{border-top:1px solid var(--rule)}.detent{border:1px solid var(--ink);cursor:pointer;background:0 0;flex-shrink:0;width:18px;height:18px;position:relative}.detent.filled{background:var(--vermilion);border-color:var(--vermilion)}.detent.filled:after{content:"";background:var(--bone);width:10px;height:10px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.habit-name{font-size:var(--font-size-base);color:var(--ink)}.streak-counter{font-size:var(--font-size-small);color:var(--ink-muted);font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap}.weekly-grid{margin-top:calc(var(--space-rule) * 2);overflow-x:auto}.weekly-table{border-collapse:collapse;width:100%;font-size:var(--font-size-small)}.weekly-table th{text-transform:uppercase;letter-spacing:.06em;color:var(--ink-muted);padding:calc(var(--space-unit) * .5);border:1px solid var(--rule);text-align:center;background:var(--bone);font-weight:400}.weekly-table td{padding:calc(var(--space-unit) * .75);border:1px solid var(--rule);text-align:center;height:48px;min-height:44px;position:relative}.weekly-table td.completed{background:var(--vermilion)}.weekly-table td.completed:after{content:"";background:var(--bone);width:8px;height:8px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.weekly-table th:first-child,.weekly-table td:first-child{text-align:left;font-size:var(--font-size-small)}.margin-link{font-size:var(--font-size-small);text-transform:uppercase;letter-spacing:.06em;color:var(--ink);border-bottom:1px solid var(--ink);text-underline-offset:.18em;text-decoration:none;display:inline-block}.link-container{text-align:right;margin-top:calc(var(--space-rule) * 2)}.form{max-width:600px;margin:calc(var(--space-rule) * 2) auto}.form-group{margin-bottom:var(--space-rule)}.form-label{font-size:var(--font-size-small);text-transform:uppercase;letter-spacing:.06em;color:var(--ink-muted);margin-bottom:calc(var(--space-unit) * .5);display:block}.form-input,.form-select{width:100%;font-family:var(--font-serif);color:var(--ink);background:var(--bone);border:none;border-bottom:1px solid var(--rule);padding:calc(var(--space-unit) * .5) 0;font-size:max(1rem,16px)}.form-input::placeholder{color:var(--ink-muted)}.button{font-family:var(--font-serif);font-size:var(--font-size-small);text-transform:uppercase;letter-spacing:.06em;color:var(--bone);background:var(--ink);border:1px solid var(--ink);padding:calc(var(--space-unit) * .75) calc(var(--space-unit) * 1.5);cursor:pointer;min-width:44px;min-height:44px}.button:disabled{opacity:.5;cursor:not-allowed}.button-secondary{color:var(--ink);border:1px solid var(--rule);background:0 0}.button-danger{color:var(--vermilion);border:1px solid var(--vermilion);background:0 0}.button-danger:hover{background:var(--vermilion);color:var(--bone)}.button-group{gap:var(--space-unit);margin-top:calc(var(--space-rule) * 1.5);display:flex}.back-link{font-size:var(--font-size-small);text-transform:uppercase;letter-spacing:.06em;color:var(--ink-muted);margin-bottom:calc(var(--space-rule) * 2);text-decoration:none;display:inline-block}.back-link:before{content:"← "}.empty-state{text-align:center;padding:calc(var(--space-rule) * 3) var(--space-unit);color:var(--ink-muted);font-size:var(--font-size-base)}.empty-state p{margin-bottom:var(--space-rule)}.manage-list{max-width:600px;margin:0 auto;list-style:none}.manage-item{gap:var(--space-unit);padding:var(--space-unit) 0;border-bottom:1px solid var(--rule);grid-template-columns:1fr auto auto;align-items:center;display:grid}.manage-item:first-child{border-top:1px solid var(--rule)}.manage-item-name{font-size:var(--font-size-base);color:var(--ink)}.icon-button{color:var(--ink-muted);cursor:pointer;font-size:var(--font-size-small);background:0 0;border:none;min-height:44px;padding:4px 8px}.color-grid{gap:calc(var(--space-unit) * .5);margin-top:calc(var(--space-unit) * .5);grid-template-columns:repeat(6,1fr);display:grid}.color-option{aspect-ratio:1;border:1px solid var(--rule);cursor:pointer;width:100%;min-height:44px}.color-option.selected{border-width:2px;border-color:var(--ink)}::selection{background:var(--vermilion);color:var(--bone)}::selection{background:var(--vermilion);color:var(--bone)}:focus-visible{outline:2px solid var(--vermilion);outline-offset:2px}a{color:var(--ink);text-underline-offset:.18em}.num{font-variant-numeric:tabular-nums}img,video,canvas,svg{max-width:100%;height:auto}pre{overflow-x:auto}@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}.detent,.button,.margin-link,.back-link,.icon-button,.form-input,.form-select,.color-option{transition:all .15s ease-out}.detent:hover{border-color:var(--vermilion)}.button:hover{background:var(--vermilion);border-color:var(--vermilion)}.button-secondary:hover{border-color:var(--ink)}.margin-link:hover,.back-link:hover,.icon-button:hover{color:var(--vermilion)}.margin-link:hover{border-color:var(--vermilion)}.form-input:focus,.form-select:focus{border-bottom-color:var(--vermilion)}.color-option:hover{transform:scale(1.1)}}@media (width<=768px){:root{--margin-page:20px;--margin-column:24px}.habit-item{grid-template-columns:24px 1fr;gap:12px}.streak-counter{text-align:left;grid-column:2;margin-top:4px;font-size:12px}.weekly-table th:first-child,.weekly-table td:first-child{text-overflow:ellipsis;white-space:nowrap;max-width:100px;font-size:12px;overflow:hidden}.button-group{flex-direction:column}.button{width:100%}.screen{padding-inline:1rem}}@media (width<=480px){body,.container,[class*=container],section,header,footer,nav,main,article{padding-inline:max(1rem,16px)}}p,li,dt,dd,blockquote,figcaption,td,th{max-width:min(75ch,100%)}
