:root{--bg:#faf9f6;--fg:#1c1b1a;--muted:#736e68;--accent:#a8763e;--border:#e4e0d8}@media (prefers-color-scheme:dark){:root{--bg:#17161a;--fg:#ded9d0;--muted:#8a847c;--accent:#c99a5c;--border:#2a2830}}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--fg);font-family:ui-serif,Georgia,Iowan Old Style,serif;-webkit-font-smoothing:antialiased}main{min-height:100dvh;padding:max(1.5rem,env(safe-area-inset-top)) 1.5rem max(1.5rem,env(safe-area-inset-bottom));display:flex;flex-direction:column}.login{justify-content:center;align-items:center;gap:1rem;text-align:center}.login form{display:flex;flex-direction:column;gap:.75rem;width:100%;max-width:320px}button,input,textarea{font-family:inherit;font-size:1rem}input{border:1px solid var(--border);border-radius:.4rem;background:transparent;color:var(--fg)}button,input{padding:.65rem .85rem}button{border:1px solid var(--fg);border-radius:.4rem;background:var(--fg);color:var(--bg);cursor:pointer}.notice{color:var(--muted);font-size:.9rem}.tonight{max-width:62ch;margin:0 auto;width:100%;gap:.75rem}.prompt{color:var(--muted);font-size:1rem;font-style:italic;margin:1rem 0 1.5rem}.composer-box{flex:1 1;min-height:50vh;border:none;background:transparent;color:var(--fg);resize:none;outline:none;line-height:1.7;font-size:1.05rem}.composer-box::placeholder{color:var(--muted)}.progress{padding-top:.5rem}.progress-track{height:1px;background:var(--border);width:100%}.progress-fill{height:100%;background:var(--muted);transition:width 1s linear}.progress-fill.is-complete{background:var(--accent)}.progress-note{color:var(--muted);font-size:.85rem;margin:.6rem 0 0}.composer-footer{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding-top:1rem}.done-button{background:transparent;color:var(--fg);border:1px solid var(--border);font-size:.9rem;padding:.5rem .9rem}.done-button:disabled{color:var(--muted);cursor:default;opacity:.5}.meta{display:flex;align-items:baseline;gap:.75rem;color:var(--muted);font-size:.8rem;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.goodnight{justify-content:center;align-items:center;text-align:center;gap:2.5rem;animation:fade-in .7s ease-out}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.goodnight-line{font-size:1.25rem;line-height:1.6;max-width:28ch;margin:0}.goodnight-links{display:flex;gap:1.5rem;font-size:.85rem}.goodnight-links a,.linklike{color:var(--muted);text-decoration:none;background:none;border:none;padding:0;font-size:inherit;cursor:pointer}.goodnight-links a:hover,.linklike:hover{color:var(--fg)}@media (prefers-reduced-motion:reduce){.goodnight,.progress-fill{transition:none;animation:none}}.archive{max-width:62ch;margin:0 auto;width:100%;gap:1.5rem}.archive-head,.entry-head{display:flex;align-items:baseline;justify-content:space-between;gap:1rem}.back,.count{color:var(--muted);font-size:.85rem;text-decoration:none}.back:hover{color:var(--fg)}.month-nav{display:flex;align-items:center;justify-content:space-between;gap:1rem}.month-nav h1{font-size:1.1rem;font-weight:400;margin:0}.month-nav a{color:var(--fg);text-decoration:none;padding:.5rem .75rem}.month-nav .disabled{color:var(--border);padding:.5rem .75rem}.month{display:grid;grid-template-columns:repeat(7,1fr);grid-gap:.25rem;gap:.25rem}.weekday{text-align:center;font-size:.7rem;padding-bottom:.5rem}.day,.weekday{color:var(--muted)}.day{aspect-ratio:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.2rem;text-decoration:none;font-size:.85rem;border-radius:.3rem;min-height:2.75rem}.day:hover{background:var(--border)}.day.has-entry{color:var(--fg)}.day.is-future{opacity:.3}.dot{width:4px;height:4px;border-radius:50%;background:var(--accent)}.archive-foot{display:flex;flex-direction:column;gap:.4rem;margin-top:auto;padding-top:2rem}.archive-foot a{color:var(--fg);font-size:.9rem}.entry-page{min-height:100dvh;display:flex;flex-direction:column;max-width:62ch;margin:0 auto;width:100%;padding:max(1.5rem,env(safe-area-inset-top)) 1.5rem 0}.entry-page .tonight{padding:0 0 max(1.5rem,env(safe-area-inset-bottom));min-height:0;flex:1 1}.entry-head h1{font-size:1.1rem;font-weight:400;margin:0}.entry-empty{max-width:62ch;margin:0 auto;width:100%;gap:.75rem;justify-content:center;align-items:center;text-align:center}.entry-empty h1{font-size:1.1rem;font-weight:400;margin:0}.tonight-head{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;padding-top:.5rem}.tonight-date{color:var(--muted);font-size:.85rem}