:root{--green: #14532d;--green-soft: #1c6b3a;--orange: #ea580c;--bg: #f6f4ef;--ink: #1f2937;--bubble-user: #14532d;--bubble-agent: #ffffff;color-scheme:light}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;background:var(--bg);color:var(--ink)}.splash{display:grid;place-items:center;height:100%;font-size:1.4rem;font-weight:600;color:var(--green)}.login{max-width:22rem;margin:0 auto;padding:22vh 1.5rem 0;text-align:center}.login h1{color:var(--green);margin-bottom:.25rem}.login .tagline{color:#6b7280;margin-top:0}.login form{display:flex;flex-direction:column;gap:.75rem;margin-top:2rem}.login input{font-size:1rem;padding:.8rem 1rem;border:1px solid #d1d5db;border-radius:.75rem}.login button{font-size:1rem;padding:.8rem;border:none;border-radius:.75rem;background:var(--green);color:#fff;font-weight:600}.login button:disabled{opacity:.5}.login .sent{margin-top:2rem;color:var(--green)}.chat{display:flex;flex-direction:column;height:100%}.chat header{display:flex;align-items:center;gap:.5rem;padding:.6rem .9rem;padding-top:calc(.6rem + env(safe-area-inset-top));background:var(--green);color:#fff}.chat .brand{font-weight:700}.chat .spacer{flex:1}.chat .ghost{background:none;border:1px solid rgba(255,255,255,.4);color:#fff;border-radius:.5rem;padding:.3rem .6rem;font-size:.8rem}.chat main{flex:1;overflow-y:auto;padding:1rem .9rem;display:flex;flex-direction:column;gap:.5rem}.empty{margin:auto;color:#9ca3af;text-align:center}.bubble{max-width:85%;padding:.6rem .85rem;border-radius:1rem;white-space:pre-wrap;overflow-wrap:break-word;line-height:1.4;font-size:.95rem}.bubble.user{align-self:flex-end;background:var(--bubble-user);color:#fff;border-bottom-right-radius:.3rem}.bubble.assistant{align-self:flex-start;background:var(--bubble-agent);border:1px solid #e5e7eb;border-bottom-left-radius:.3rem}.bubble.error{border-color:#fca5a5;background:#fef2f2;color:#991b1b}.chat footer{display:flex;gap:.5rem;padding:.6rem .9rem;padding-bottom:calc(.6rem + env(safe-area-inset-bottom));background:#fff;border-top:1px solid #e5e7eb}.chat footer textarea{flex:1;resize:none;font:inherit;padding:.6rem .85rem;border:1px solid #d1d5db;border-radius:1rem;max-height:6rem}.chat footer button{border:none;background:var(--orange);color:#fff;font-weight:600;border-radius:1rem;padding:0 1.1rem}.chat footer button:disabled{opacity:.4}.dots span{display:inline-block;width:6px;height:6px;margin-right:3px;border-radius:50%;background:#9ca3af;animation:blink 1.2s infinite both}.dots span:nth-child(2){animation-delay:.2s}.dots span:nth-child(3){animation-delay:.4s}@keyframes blink{0%,80%,to{opacity:.2}40%{opacity:1}}.journal{display:flex;flex-direction:column;height:100%}.journal header{display:flex;align-items:center;gap:.5rem;padding:.6rem .9rem;padding-top:calc(.6rem + env(safe-area-inset-top));background:var(--green);color:#fff}.journal header .spacer{flex:1}.journal .ghost{background:none;border:1px solid rgba(255,255,255,.4);color:#fff;border-radius:.5rem;padding:.3rem .6rem;font-size:.8rem;text-decoration:none}.chat .ghost{text-decoration:none}.journal .month-title{font-weight:700;min-width:9.5rem;text-align:center}.journal .wk-label{font-size:.7rem;opacity:.7}.journal main{flex:1;overflow-y:auto;padding:.75rem .5rem calc(.75rem + env(safe-area-inset-bottom))}.journal .empty{margin:2rem auto;color:#9ca3af;text-align:center}.cal-grid{display:grid;grid-template-columns:repeat(7,1fr) 2.2rem;gap:2px}.cal-dow{text-align:center;font-size:.7rem;color:#6b7280;padding:.2rem 0}.cal-day{background:#fff;border:1px solid #e5e7eb;border-radius:.4rem;min-height:3.6rem;padding:.15rem;display:flex;flex-direction:column;gap:2px}.cal-day .num{font-size:.7rem;color:#6b7280;padding-left:.15rem}.cal-day.out{opacity:.45}.cal-day.today{border-color:var(--orange);border-width:2px}.cal-entry{display:block;text-align:center;font-size:.78rem;font-weight:600;color:#fff;border-radius:.3rem;padding:.15rem 0;text-decoration:none}.cal-entry.e0{background:#e6e0d1;color:#2b2417}.cal-entry.e1{background:#d6c689;color:#2b2417}.cal-entry.e2{background:#b3a14c;color:#2b2417}.cal-entry.e3{background:#9c6820}.cal-entry.e4{background:#8f4426}.cal-week-total{display:grid;place-items:center;font-size:.72rem;font-weight:600;color:var(--green)}.entry{max-width:34rem;margin:0 auto;width:100%;padding:1rem 1.1rem calc(2rem + env(safe-area-inset-bottom))}.entry-date{color:#6b7280;font-size:.85rem}.entry h1{font-size:1.25rem;margin:.3rem 0 1rem;display:flex;align-items:center;gap:.45rem;flex-wrap:wrap}.chip{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:#fff;border-radius:.35rem;padding:.15rem .45rem}.chip.e0{background:#e6e0d1;color:#2b2417}.chip.e1{background:#d6c689;color:#2b2417}.chip.e2{background:#b3a14c;color:#2b2417}.chip.e3{background:#9c6820}.chip.e4{background:#8f4426}.chip.race{background:#45231a;color:#e8b64c}.chip.pr{background:#e8b64c;color:#45231a}.stats{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1rem}.stat{background:#fff;border:1px solid #e5e7eb;border-radius:.6rem;padding:.5rem .8rem;min-width:5rem}.stat .value{font-weight:700;font-size:1.05rem}.stat .label{font-size:.68rem;color:#6b7280;text-transform:uppercase;letter-spacing:.03em}.meta{margin:0 0 1rem}.meta-row{display:flex;gap:.6rem;font-size:.9rem;padding:.15rem 0}.meta-row dt{color:#6b7280;min-width:4.5rem}.meta-row dd{margin:0}.prose{font-family:Georgia,Times New Roman,serif;font-size:1.05rem;line-height:1.55;background:#fff;border:1px solid #e5e7eb;border-left:3px solid var(--green);border-radius:.6rem;padding:.9rem 1rem;white-space:pre-wrap}.splits{margin-top:1rem;border-collapse:collapse;font-size:.85rem;font-variant-numeric:tabular-nums}.splits th,.splits td{text-align:right;padding:.2rem .9rem .2rem 0;border-bottom:1px solid #e5e7eb}.splits th{color:#6b7280;font-weight:600;text-transform:uppercase;font-size:.68rem;letter-spacing:.03em}.cal-entry.race{background:#45231a;color:#e8b64c;box-shadow:0 0 0 2px #e8b64c}.cal-legend{display:flex;flex-wrap:wrap;gap:.35rem .9rem;justify-content:center;padding:.7rem .5rem .2rem;font-size:.72rem;color:#6b7280}.legend-item{display:inline-flex;align-items:center;gap:.3rem}.swatch{width:.7rem;height:.7rem;border-radius:.2rem;display:inline-block}.swatch.e0{background:#e6e0d1}.swatch.e1{background:#d6c689}.swatch.e2{background:#b3a14c}.swatch.e3{background:#9c6820}.swatch.e4{background:#8f4426}.swatch.race{background:#45231a;box-shadow:0 0 0 1px #e8b64c}.race-card{display:flex;align-items:center;flex-wrap:wrap;gap:.5rem;background:#45231a;border-radius:.6rem;padding:.6rem .8rem;margin-bottom:1rem}.race-card .race-dist{color:#e8b64c;font-weight:700;text-transform:uppercase;letter-spacing:.04em;font-size:.8rem;margin-right:.3rem}.race-card .stat{background:#fffffff0;border:none}.login .legal{margin-top:2.5rem;font-size:.8rem}.login .legal a{color:#9ca3af;text-decoration:none}.account{display:flex;flex-direction:column;height:100%}.account header{display:flex;align-items:center;gap:.5rem;padding:.6rem .9rem;padding-top:calc(.6rem + env(safe-area-inset-top));background:var(--green);color:#fff}.account .brand{font-weight:700}.account .spacer{flex:1}.account .ghost{background:none;border:1px solid rgba(255,255,255,.4);color:#fff;border-radius:.5rem;padding:.3rem .6rem;font-size:.8rem;text-decoration:none}.account main{flex:1;overflow-y:auto;padding:1rem .9rem}.account .card{max-width:26rem;margin:0 auto;background:#fff;border:1px solid #e5e7eb;border-radius:.9rem;padding:1.1rem 1.2rem 1.3rem;display:flex;flex-direction:column;gap:.75rem}.account h2{margin:0;color:var(--green);font-size:1.05rem}.account .lead,.account .verified{margin:0;color:#4b5563;font-size:.9rem}.account input{font-size:1rem;padding:.75rem .9rem;border:1px solid #d1d5db;border-radius:.7rem}.account .consent{margin:0;font-size:.75rem;line-height:1.45;color:#6b7280}.account .consent a{color:var(--green)}.account button{font-size:1rem;padding:.75rem;border:none;border-radius:.7rem;background:var(--green);color:#fff;font-weight:600}.account button:disabled{opacity:.5}.account button.ghost{background:none;border:1px solid #d1d5db;color:#4b5563;font-weight:500}.account button.danger{background:none;border:1px solid #fca5a5;color:#991b1b}.account .err{margin:0;font-size:.85rem;color:#991b1b}
