:root{--paper: #f0f2ed;--ink: #1f2a24;--ink-soft: #5b6b60;--accent: #3d6b5c;--accent-soft: #b8cfc3;--danger: #a24238;--rule: #d8ded6;--card: #f7f8f5;--font-display: ui-serif, Georgia, "Times New Roman", serif;--font-body: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--font-mono: ui-monospace, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace}*{box-sizing:border-box}[x-cloak]{display:none!important}html,body{margin:0;padding:0;background:var(--paper);color:var(--ink);font-family:var(--font-body);-webkit-font-smoothing:antialiased}body{background-image:repeating-linear-gradient(to bottom,transparent 0,transparent 39px,var(--rule) 39px,var(--rule) 40px)}#app{min-height:100vh;display:flex;justify-content:center;padding:48px 20px 96px}.eyebrow{font-family:var(--font-mono);font-size:.75rem;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft);margin:0 0 4px}.lock-screen{width:100%;max-width:420px;margin-top:15vh}.lock-card{background:var(--card);border:1px solid var(--rule);border-radius:4px;padding:32px}.lock-title{font-family:var(--font-display);font-weight:500;font-size:1.5rem;margin:0 0 8px}.lock-copy{color:var(--ink-soft);font-size:.9rem;margin:0 0 20px;line-height:1.5}.key-input{width:100%;font-family:var(--font-mono);font-size:.95rem;padding:10px 12px;border:1px solid var(--rule);border-radius:3px;background:#fff;color:var(--ink);margin-bottom:12px}.lock-error,.form-error{color:var(--danger);font-size:.85rem;margin-top:12px}.ledger{width:100%;max-width:640px}.ledger-header{margin-bottom:28px}.title{font-family:var(--font-display);font-weight:500;font-size:2.25rem;margin:0;letter-spacing:-.01em}.entry-form{background:var(--card);border:1px solid var(--rule);border-radius:4px;padding:20px;margin-bottom:32px}.entry-form form{display:flex;gap:16px;align-items:flex-end;flex-wrap:wrap}.field{display:flex;flex-direction:column;gap:6px;flex:1;min-width:140px}.field-label{font-size:.75rem;color:var(--ink-soft);font-weight:500}.field-input{font-family:var(--font-mono);font-size:.95rem;padding:9px 10px;border:1px solid var(--rule);border-radius:3px;background:#fff;color:var(--ink)}.btn{font-family:var(--font-body);font-weight:600;font-size:.9rem;padding:10px 18px;border-radius:3px;border:none;cursor:pointer;transition:opacity .15s ease}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover{opacity:.9}.btn-primary:disabled{opacity:.6;cursor:default}.summary{display:flex;align-items:baseline;gap:16px;margin-bottom:20px}.summary-value{font-family:var(--font-display);font-size:3.5rem;font-weight:500;line-height:1}.summary-unit{font-family:var(--font-mono);font-size:1.1rem;color:var(--ink-soft)}.summary-delta{font-family:var(--font-mono);font-size:.9rem;padding:4px 10px;border-radius:12px;background:var(--accent-soft);color:var(--accent)}.summary-delta.up{background:#f0d9d5;color:var(--danger)}.summary-delta.down{background:var(--accent-soft);color:var(--accent)}.summary-delta.flat{background:var(--rule);color:var(--ink-soft)}.chart-section{background:var(--card);border:1px solid var(--rule);border-radius:4px;padding:20px;margin-bottom:32px;height:260px}.empty-state{color:var(--ink-soft);font-size:.9rem;padding:24px 0}.section-heading{font-family:var(--font-display);font-weight:500;font-size:1.1rem;margin:0 0 12px}.week-table{background:var(--card);border:1px solid var(--rule);border-radius:4px;padding:20px;margin-top:32px;overflow-x:auto}.week-row{display:grid;grid-template-columns:minmax(96px,1fr) repeat(7,40px) 56px 56px;align-items:center;gap:4px;min-width:580px;padding:10px 4px;border-bottom:1px solid var(--rule);font-family:var(--font-mono);font-size:.85rem}.week-row-head{color:var(--ink-soft);font-size:.7rem;text-transform:uppercase;letter-spacing:.05em;font-family:var(--font-body);font-weight:500}.col-median{text-align:center;font-weight:600}.day-value .frac,.col-median .frac{font-size:.78em;font-weight:400;color:var(--ink-soft)}.col-delta{text-align:right}.col-delta.up{color:var(--danger)}.col-delta.down{color:var(--accent)}.col-delta.flat{color:var(--ink-soft)}.day-cell{position:relative;text-align:center}.day-empty{color:var(--rule)}button.day-value{font-family:inherit;font-size:inherit;color:var(--ink);background:none;border:none;border-radius:3px;padding:2px 4px;margin:0;cursor:pointer}button.day-value:hover{background:var(--accent-soft)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#1f2a2473;display:flex;align-items:center;justify-content:center;padding:20px;z-index:10}.modal-card{width:100%;max-width:360px;background:var(--card);border:1px solid var(--rule);border-radius:4px;padding:24px}.modal-card .field{margin-bottom:16px}.modal-actions{display:flex;justify-content:space-between;align-items:center;margin-top:20px}.modal-actions-right{display:flex;gap:8px}.btn-secondary{background:none;color:var(--ink-soft);border:1px solid var(--rule)}.btn-secondary:hover{background:var(--rule)}.btn-danger{background:none;color:var(--danger);border:1px solid var(--danger)}.btn-danger:hover{background:var(--danger);color:#fff}@media (prefers-reduced-motion: reduce){*{transition:none!important;animation:none!important}}@media (max-width: 480px){.summary-value{font-size:2.5rem}.entry-form form{flex-direction:column;align-items:stretch}}
