:root{--bg: #f6f3ec;--bg-elev: #ffffff;--bg-soft: #efeae0;--ink: #2a2620;--ink-soft: #6b645a;--ink-faint: #9a9286;--line: #e3ddd0;--line-strong: #d4ccba;--accent: #5a6b4f;--accent-soft: #e8ede1;--accent-ink: #3d4a35;--on-accent: #ffffff;--danger: #a04545;--danger-soft: #f4e2e0;--radius: 10px;--radius-sm: 6px;--shadow-sm: 0 1px 2px rgba(40, 30, 15, .04);--shadow-md: 0 4px 16px rgba(40, 30, 15, .06);--font-sans: -apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-serif: "Iowan Old Style", "Apple Garamond", "Baskerville", "Times New Roman", Georgia, serif}*{box-sizing:border-box}html,body,#root{height:100%}html{color-scheme:light dark}body{margin:0;font-family:var(--font-sans);color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:15px;line-height:1.5;transition:background-color .2s ease,color .2s ease}[data-theme=dark]{--bg: #15130f;--bg-elev: #1f1c17;--bg-soft: #2a2620;--ink: #ece5d5;--ink-soft: #b3a999;--ink-faint: #7a7164;--line: #2e2a23;--line-strong: #3d3830;--accent: #a3b894;--accent-soft: #2f3a2a;--accent-ink: #c4d3b3;--on-accent: #1a1714;--danger: #d48484;--danger-soft: #3d2a2a;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .3);--shadow-md: 0 4px 16px rgba(0, 0, 0, .4)}button{font-family:inherit;font-size:inherit;cursor:pointer}input,textarea{font-family:inherit;font-size:inherit;color:var(--ink)}.app{min-height:100%;max-width:1180px;margin:0 auto;padding:32px 28px 64px}.app-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:28px}.app-title{font-family:var(--font-serif);font-size:32px;font-weight:500;letter-spacing:-.01em;margin:0;color:var(--ink)}.today-btn{font-size:13px}.today-btn:disabled{opacity:.4;cursor:default}.header-actions{display:flex;align-items:center;gap:8px}.theme-toggle{background:transparent;border:1px solid var(--line);color:var(--ink-soft);width:34px;height:34px;border-radius:var(--radius-sm);display:inline-flex;align-items:center;justify-content:center;transition:background .12s,color .12s,border-color .12s}.theme-toggle:hover{background:var(--bg-soft);color:var(--ink);border-color:var(--line-strong)}.layout{display:grid;grid-template-columns:380px 1fr;gap:28px;align-items:start}@media (max-width: 860px){.layout{grid-template-columns:1fr}.app{padding:20px 16px 48px}.app-title{font-size:26px}}.calendar{background:var(--bg-elev);border:1px solid var(--line);border-radius:var(--radius);padding:18px;box-shadow:var(--shadow-sm);transition:background-color .2s ease,border-color .2s ease}.calendar-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.calendar-title{font-family:var(--font-serif);font-size:18px;font-weight:500;margin:0;color:var(--ink)}.nav-btn{background:transparent;border:1px solid transparent;width:32px;height:32px;border-radius:var(--radius-sm);color:var(--ink-soft);font-size:20px;line-height:1;display:inline-flex;align-items:center;justify-content:center;transition:background .12s,color .12s}.nav-btn:hover{background:var(--bg-soft);color:var(--ink)}.weekday-row{display:grid;grid-template-columns:repeat(7,1fr);margin-bottom:6px}.weekday-cell{text-align:center;font-size:11px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint);padding:6px 0}.day-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}.day-cell{position:relative;aspect-ratio:1 / 1;background:transparent;border:1px solid transparent;border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;color:var(--ink-soft);font-size:14px;font-variant-numeric:tabular-nums;transition:background .1s,color .1s,border-color .1s}.day-cell.empty{pointer-events:none}.day-cell:hover:not(.empty){background:var(--bg-soft);color:var(--ink)}.day-cell.today{font-weight:600;color:var(--accent-ink)}.day-cell.today:not(.selected) .day-number{background:var(--accent-soft);border-radius:999px;padding:2px 8px}.day-cell.has-entry{color:var(--ink)}.day-cell.selected{background:var(--accent);color:var(--on-accent);border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--on-accent)}.day-cell.selected .day-number{color:var(--on-accent);background:transparent}.day-cell.selected .entry-dot{background:var(--on-accent)}.entry-dot{position:absolute;bottom:5px;left:50%;transform:translate(-50%);width:4px;height:4px;border-radius:50%;background:var(--accent)}.legend{display:flex;gap:16px;margin-top:14px;padding-top:12px;border-top:1px solid var(--line);font-size:12px;color:var(--ink-faint)}.legend-item{display:inline-flex;align-items:center;gap:6px}.legend-dot{width:8px;height:8px;border-radius:50%;display:inline-block}.legend-dot.entry{background:var(--accent)}.legend-dot.today{background:var(--accent-soft);border:1px solid var(--accent)}.entry-form{background:var(--bg-elev);border:1px solid var(--line);border-radius:var(--radius);padding:24px;box-shadow:var(--shadow-sm);display:flex;flex-direction:column;gap:18px;transition:background-color .2s ease,border-color .2s ease}.entry-header{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding-bottom:14px;border-bottom:1px solid var(--line);margin-bottom:4px}.entry-date{font-family:var(--font-serif);font-size:22px;font-weight:500;margin:0;letter-spacing:-.01em}.entry-status{font-size:12px;color:var(--ink-faint);min-height:16px}.status-saved{color:var(--accent)}.status-dirty{color:var(--ink-faint);font-style:italic}.field{display:flex;flex-direction:column;gap:6px}.field-head{display:flex;align-items:baseline;justify-content:space-between;gap:8px}.field-label{font-size:13px;font-weight:600;color:var(--ink);letter-spacing:.01em}.field-hint{font-size:12px;color:var(--ink-faint)}.field textarea,.field input{width:100%;background:var(--bg);border:1px solid var(--line);border-radius:var(--radius-sm);padding:10px 12px;outline:none;transition:border-color .12s,background .12s,box-shadow .12s;resize:vertical}.field textarea{min-height:64px;line-height:1.55;font-family:var(--font-serif);font-size:15px}.field input{font-variant-numeric:tabular-nums}.field textarea:focus,.field input:focus{border-color:var(--accent);background:var(--bg-elev);box-shadow:0 0 0 3px var(--accent-soft)}.field textarea::placeholder,.field input::placeholder{color:var(--ink-faint)}.rating-field{gap:8px}.rating-value{color:var(--accent-ink);font-size:13px;font-weight:600;font-variant-numeric:tabular-nums}.field .rating-slider{-webkit-appearance:none;-moz-appearance:none;appearance:none;height:32px;padding:0;border:0;background:transparent;cursor:pointer}.field .rating-slider:focus{background:transparent;box-shadow:none}.rating-slider::-webkit-slider-runnable-track{height:6px;border-radius:999px;background:var(--accent-soft);border:1px solid var(--line)}.rating-slider::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:22px;height:22px;margin-top:-9px;border-radius:50%;background:var(--accent);border:3px solid var(--bg-elev);box-shadow:var(--shadow-sm)}.rating-slider:focus::-webkit-slider-thumb{box-shadow:0 0 0 3px var(--accent-soft)}.rating-slider::-moz-range-track{height:6px;border-radius:999px;background:var(--accent-soft);border:1px solid var(--line)}.rating-slider::-moz-range-thumb{width:18px;height:18px;border-radius:50%;background:var(--accent);border:3px solid var(--bg-elev);box-shadow:var(--shadow-sm)}.rating-slider:focus::-moz-range-thumb{box-shadow:0 0 0 3px var(--accent-soft)}.rating-scale{display:flex;justify-content:space-between;color:var(--ink-faint);font-size:12px;line-height:1}.bp-row,.sleep-row{display:flex;align-items:center;gap:8px}.bp-row input,.sleep-row input{width:100px;text-align:center}.bp-sep{color:var(--ink-faint);font-size:18px;font-weight:300}.bp-unit,.sleep-unit{color:var(--ink-faint);font-size:13px}.bp-list{display:flex;flex-direction:column;gap:8px}.bp-remove{background:transparent;border:1px solid transparent;color:var(--ink-faint);width:28px;height:28px;border-radius:var(--radius-sm);font-size:18px;line-height:1;display:inline-flex;align-items:center;justify-content:center;margin-left:auto;transition:background .12s,color .12s,border-color .12s}.bp-remove:hover{background:var(--danger-soft);color:var(--danger);border-color:var(--danger-soft)}.bp-foot{display:flex;align-items:center;gap:14px;margin-top:4px;font-size:13px;color:var(--ink-soft);flex-wrap:wrap}.bp-add{background:transparent;border:1px dashed var(--line-strong);color:var(--ink-soft);border-radius:var(--radius-sm);padding:6px 12px;font-size:13px;transition:background .12s,color .12s,border-color .12s}.bp-add:hover{background:var(--bg-soft);color:var(--ink);border-color:var(--ink-faint);border-style:solid}.bp-avg{color:var(--ink-soft);font-variant-numeric:tabular-nums}.bp-avg strong{color:var(--ink);font-weight:600}.bp-avg-count{color:var(--ink-faint)}.bp-empty-hint{color:var(--ink-faint);font-style:italic}.sleep-notes{margin-top:8px}.form-actions{display:flex;align-items:center;gap:10px;border-top:1px solid var(--line);margin-top:4px;padding-top:16px}.btn{display:inline-flex;align-items:center;justify-content:center;border:1px solid transparent;border-radius:var(--radius-sm);padding:9px 16px;font-size:14px;font-weight:500;transition:background .12s,color .12s,border-color .12s}.btn-primary{background:var(--accent);color:#fff;border-color:var(--accent)}.btn-primary:hover:not(:disabled){background:var(--accent-ink);border-color:var(--accent-ink)}.btn-primary:disabled{background:var(--bg-soft);color:var(--ink-faint);border-color:var(--bg-soft);cursor:not-allowed}.btn-ghost{background:transparent;color:var(--ink-soft);border-color:var(--line)}.btn-ghost:hover{background:var(--bg-soft);color:var(--ink)}.btn-danger{color:var(--danger);border-color:var(--danger-soft);background:var(--danger-soft)}.btn-danger:hover{background:var(--danger);color:#fff;border-color:var(--danger)}
