:root{--bg: #F1E9D8;--bg-2: #E8DEC8;--surface: #FBF6EA;--surface-2: #F5EEDC;--line: #D9CDB1;--line-2: #C9BB9B;--ink: #221E18;--ink-2: #4A4234;--ink-3: #756B57;--muted: #97896D;--green: #3D5A3A;--green-2: #51764D;--green-soft: #DCE3CB;--terra: #B85C3C;--terra-soft: #EBCEBE;--gold: #B68945;--gold-soft: #ECDDB8;--danger: #A23A2E;--radius: 14px;--radius-sm: 8px;--shadow-sm: 0 1px 0 rgba(60,40,15,.04), 0 2px 8px rgba(60,40,15,.05);--shadow-md: 0 1px 0 rgba(60,40,15,.04), 0 6px 24px rgba(60,40,15,.08);--font-display: "Source Serif 4", "Source Serif Pro", Georgia, serif;--font-ui: "DM Sans", "Helvetica Neue", Arial, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, monospace}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:var(--font-ui);font-size:14px;line-height:1.5;color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased;font-feature-settings:"ss01","cv11"}button{font-family:inherit;cursor:pointer}input,textarea,select{font-family:inherit}.app{display:grid;grid-template-columns:240px 1fr;height:100vh;overflow:hidden}.side{background:var(--bg-2);border-right:1px solid var(--line);padding:22px 14px;display:flex;flex-direction:column;gap:22px;overflow-y:auto}.side-brand{display:flex;align-items:center;gap:10px;padding:0 6px}.side-brand .mark{width:30px;height:30px;border-radius:9px;background:var(--green);display:grid;place-items:center;color:var(--surface);font-family:var(--font-display);font-weight:600;font-size:17px;font-style:italic}.side-brand .name{font-family:var(--font-display);font-weight:600;font-size:20px;letter-spacing:-.01em}.side-section-label{font-size:10.5px;font-weight:600;text-transform:uppercase;letter-spacing:.12em;color:var(--muted);padding:0 8px;margin-bottom:6px}.side-nav{display:flex;flex-direction:column;gap:2px}.side-nav button{display:flex;align-items:center;gap:11px;padding:9px 10px;background:transparent;border:none;border-radius:9px;color:var(--ink-2);font-size:13.5px;font-weight:500;text-align:left;width:100%;transition:background .12s}.side-nav button:hover{background:#3d5a3a12;color:var(--ink)}.side-nav button.active{background:var(--green);color:var(--surface)}.side-nav button.active svg{color:var(--surface)}.side-nav svg{width:18px;height:18px;color:var(--ink-3);flex:0 0 18px}.side-plant{margin-top:auto;padding:14px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);display:flex;flex-direction:column;gap:8px}.side-plant .label{font-size:10.5px;color:var(--muted);text-transform:uppercase;letter-spacing:.11em;font-weight:600}.side-plant .strain{font-family:var(--font-display);font-size:17px;font-weight:600;letter-spacing:-.005em}.side-plant .meta{font-size:12px;color:var(--ink-3)}.side-plant .bar{height:4px;background:var(--bg-2);border-radius:99px;overflow:hidden;margin-top:4px}.side-plant .bar>div{height:100%;background:var(--green-2);border-radius:99px}.main{overflow-y:auto;background:var(--bg)}.main-inner{max-width:1180px;margin:0 auto;padding:36px 44px 80px}.page-head{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:26px;gap:24px;flex-wrap:wrap}.page-head h1{font-family:var(--font-display);font-weight:500;font-size:38px;letter-spacing:-.018em;margin:0 0 4px}.page-head .sub{color:var(--ink-3);font-size:14.5px;max-width:540px}.page-head .actions{display:flex;gap:8px;flex-wrap:wrap}.btn{display:inline-flex;align-items:center;gap:7px;padding:8px 14px;border-radius:9px;border:1px solid var(--line-2);background:var(--surface);color:var(--ink);font-size:13px;font-weight:500;transition:all .12s}.btn:hover{background:var(--surface-2);border-color:var(--ink-3)}.btn svg{width:15px;height:15px}.btn.primary{background:var(--green);border-color:var(--green);color:var(--surface)}.btn.primary:hover{background:#345131;border-color:#345131}.btn.ghost{background:transparent;border-color:transparent;color:var(--ink-2)}.btn.ghost:hover{background:var(--bg-2);border-color:transparent}.btn.terra{background:var(--terra);border-color:var(--terra);color:var(--surface)}.btn.terra:hover{background:#a04f33}.btn.sm{padding:5px 10px;font-size:12.5px;border-radius:7px}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:22px}.card.tight{padding:16px}.card-title{font-family:var(--font-display);font-size:20px;font-weight:500;letter-spacing:-.01em;margin:0 0 4px}.card-sub{color:var(--ink-3);font-size:13px;margin-bottom:14px}.card-label{font-size:10.5px;font-weight:600;text-transform:uppercase;letter-spacing:.12em;color:var(--muted);margin-bottom:8px}.today-grid{display:grid;grid-template-columns:1.4fr 1fr;gap:18px;align-items:start}.today-hero{background:linear-gradient(160deg,#4d6e49,#3d5a3a 70%,#324a2f);color:var(--surface);border-radius:var(--radius);padding:28px 28px 26px;position:relative;overflow:hidden}.today-hero:before{content:"";position:absolute;right:-80px;top:-80px;width:260px;height:260px;border-radius:50%;background:#ffffff0a}.today-hero:after{content:"";position:absolute;right:30px;bottom:-30px;width:120px;height:120px;border-radius:50%;background:#ffffff08}.today-hero .top{display:flex;align-items:center;justify-content:space-between;position:relative;z-index:1}.today-hero .phase-pill{display:inline-flex;align-items:center;gap:7px;padding:5px 11px;background:#ffffff21;border-radius:99px;font-size:12px;font-weight:500;letter-spacing:.01em}.today-hero .phase-pill .dot{width:7px;height:7px;border-radius:50%;background:var(--gold-soft)}.today-hero .day-stamp{font-family:var(--font-mono);font-size:12px;opacity:.7;letter-spacing:.04em}.today-hero h2{font-family:var(--font-display);font-weight:500;font-size:42px;letter-spacing:-.02em;margin:18px 0 6px;position:relative;z-index:1}.today-hero .desc{font-size:14.5px;opacity:.82;max-width:460px;margin-bottom:22px;position:relative;z-index:1}.today-hero .progress{position:relative;z-index:1;margin-top:6px}.today-hero .progress-meta{display:flex;justify-content:space-between;font-size:11.5px;font-family:var(--font-mono);letter-spacing:.04em;opacity:.75;margin-bottom:7px}.today-hero .progress-bar{height:6px;background:#ffffff29;border-radius:99px;overflow:hidden;position:relative}.today-hero .progress-bar>div{height:100%;background:var(--gold-soft);border-radius:99px}.today-hero .progress-phases{display:grid;grid-template-columns:7fr 7fr 14fr 42fr 14fr;gap:1px;margin-top:7px;font-size:10.5px;text-transform:uppercase;letter-spacing:.08em;opacity:.7}.today-hero .progress-phases>span:nth-child(1){text-align:left}.today-hero .progress-phases>span:nth-child(5){text-align:right}.today-hero .progress-phases>span{text-align:center}.tasks{display:flex;flex-direction:column;gap:4px}.task{display:flex;align-items:flex-start;gap:11px;padding:11px 4px;border-bottom:1px solid var(--line);cursor:pointer}.task:last-child{border-bottom:none}.task .check{width:19px;height:19px;border-radius:6px;border:1.4px solid var(--line-2);background:var(--surface-2);flex:0 0 19px;margin-top:1px;display:grid;place-items:center;transition:all .12s}.task .check svg{width:11px;height:11px;color:var(--surface);opacity:0}.task.done .check{background:var(--green);border-color:var(--green)}.task.done .check svg{opacity:1}.task .body{flex:1}.task .title{font-size:13.5px;font-weight:500;color:var(--ink)}.task.done .title{color:var(--ink-3);text-decoration:line-through;text-decoration-color:#00000040}.task .desc{font-size:12.5px;color:var(--ink-3);margin-top:2px}.task .tag{display:inline-block;padding:1px 7px;background:var(--green-soft);color:var(--green);border-radius:99px;font-size:10.5px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;margin-top:6px}.task .tag.terra{background:var(--terra-soft);color:var(--terra)}.task .tag.gold{background:var(--gold-soft);color:var(--gold)}.stats-row{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:14px}.stat{background:var(--surface-2);border:1px solid var(--line);border-radius:10px;padding:13px 14px}.stat .label{font-size:10.5px;color:var(--muted);text-transform:uppercase;letter-spacing:.11em;font-weight:600}.stat .val{font-family:var(--font-display);font-size:22px;font-weight:500;margin-top:2px;letter-spacing:-.01em}.stat .unit{color:var(--ink-3);font-size:12.5px;font-weight:400;margin-left:3px;font-family:var(--font-ui)}.qlog{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.qlog-btn{display:flex;align-items:center;gap:10px;padding:13px 12px;background:var(--surface-2);border:1px solid var(--line);border-radius:10px;text-align:left;font-size:13px;font-weight:500;color:var(--ink);transition:all .14s}.qlog-btn:hover{border-color:var(--green-2);background:var(--surface);transform:translateY(-1px);box-shadow:var(--shadow-sm)}.qlog-btn .icon{width:30px;height:30px;display:grid;place-items:center;border-radius:8px;background:var(--green-soft);color:var(--green);flex:0 0 30px}.qlog-btn .icon svg{width:16px;height:16px}.qlog-btn.terra .icon{background:var(--terra-soft);color:var(--terra)}.qlog-btn.gold .icon{background:var(--gold-soft);color:var(--gold)}.qlog-btn .lbl{display:flex;flex-direction:column}.qlog-btn .lbl .small{font-size:11px;color:var(--ink-3);font-weight:400}.log-row{display:grid;grid-template-columns:70px 26px 1fr auto;gap:12px;align-items:center;padding:11px 4px;border-bottom:1px solid var(--line);font-size:13px}.log-row:last-child{border-bottom:none}.log-row .when{font-family:var(--font-mono);font-size:11.5px;color:var(--muted);letter-spacing:.03em}.log-row .ico{width:26px;height:26px;display:grid;place-items:center;border-radius:7px;background:var(--green-soft);color:var(--green)}.log-row .ico.terra{background:var(--terra-soft);color:var(--terra)}.log-row .ico.gold{background:var(--gold-soft);color:var(--gold)}.log-row .ico.muted{background:var(--bg-2);color:var(--ink-3)}.log-row .ico svg{width:13px;height:13px}.log-row .what{font-weight:500}.log-row .what .det{font-weight:400;color:var(--ink-3);margin-left:4px}.log-row .meta-r{font-size:11.5px;color:var(--muted);font-family:var(--font-mono)}.timeline-legend{display:flex;gap:16px;margin-bottom:16px;font-size:12px;color:var(--ink-3);flex-wrap:wrap}.timeline-legend .item{display:flex;align-items:center;gap:7px}.timeline-legend .swatch{width:12px;height:12px;border-radius:3px}.tl-table{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}.tl-row{display:grid;grid-template-columns:130px 1fr;border-bottom:1px solid var(--line)}.tl-row:last-child{border-bottom:none}.tl-row.head{background:var(--surface-2);font-size:10.5px;font-weight:600;text-transform:uppercase;letter-spacing:.11em;color:var(--muted)}.tl-row.head>div{padding:11px 16px}.tl-row .label-cell{padding:16px;border-right:1px solid var(--line);display:flex;flex-direction:column;justify-content:center}.tl-row .label-cell .name{font-family:var(--font-display);font-size:17px;font-weight:500;letter-spacing:-.005em}.tl-row .label-cell .span{font-size:11.5px;color:var(--muted);font-family:var(--font-mono);letter-spacing:.03em;margin-top:2px}.tl-row .weeks{display:grid;grid-template-columns:repeat(12,1fr);position:relative}.tl-row .week-cell{padding:12px 6px;border-right:1px solid var(--line);font-size:11.5px;min-height:64px;position:relative;cursor:pointer;transition:background .12s}.tl-row .week-cell:hover{background:var(--bg-2)}.tl-row .week-cell:last-child{border-right:none}.tl-row .week-cell.selected{background:var(--green-soft)}.tl-row .week-cell.today:after{content:"";position:absolute;top:0;bottom:0;left:50%;width:2px;background:var(--terra);transform:translate(-50%)}.tl-band{position:absolute;top:18px;height:22px;border-radius:6px;display:flex;align-items:center;padding:0 10px;font-size:11px;font-weight:600;color:var(--surface);letter-spacing:.02em;white-space:nowrap}.tl-band.germ{background:#8fa86a}.tl-band.seedling{background:#6b8f50}.tl-band.veg{background:var(--green-2)}.tl-band.flower{background:var(--terra)}.tl-band.flush{background:var(--gold)}.tl-task-dot{width:7px;height:7px;border-radius:50%;background:var(--line-2);margin:1px;display:inline-block}.tl-task-dot.done{background:var(--green)}.tl-task-dot.due{background:var(--terra)}.tl-row .week-num{font-family:var(--font-mono);color:var(--muted);font-size:10.5px;text-align:center;letter-spacing:.04em;display:block;margin-bottom:4px}.tl-row .week-cell.today .week-num{color:var(--terra);font-weight:600}.tl-dots{display:flex;flex-wrap:wrap;gap:0;justify-content:center;margin-top:22px}.week-detail{display:grid;grid-template-columns:1.4fr 1fr;gap:18px;margin-top:20px}.week-detail .checklist{display:flex;flex-direction:column}.kv{display:grid;grid-template-columns:130px 1fr;padding:9px 0;border-bottom:1px solid var(--line);font-size:13px}.kv:last-child{border-bottom:none}.kv .k{color:var(--muted);font-size:12px}.kv .v{color:var(--ink)}.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;margin-top:6px}.cal-head{font-size:10.5px;text-transform:uppercase;letter-spacing:.11em;color:var(--muted);font-weight:600;padding:6px 8px;text-align:left}.cal-day{min-height:86px;border:1px solid var(--line);border-radius:9px;padding:8px;background:var(--surface);cursor:pointer;transition:all .12s;display:flex;flex-direction:column;gap:4px}.cal-day:hover{border-color:var(--line-2)}.cal-day.empty{background:var(--bg-2);border-style:dashed}.cal-day.today{border-color:var(--terra);box-shadow:inset 0 0 0 1px var(--terra)}.cal-day .d{display:flex;justify-content:space-between;align-items:center;font-family:var(--font-mono);font-size:11px;color:var(--muted);letter-spacing:.04em}.cal-day .d .num{color:var(--ink-2);font-weight:600;font-size:13px;font-family:var(--font-ui);letter-spacing:0}.cal-day.today .d .num{color:var(--terra)}.cal-day .pills{display:flex;flex-wrap:wrap;gap:3px;margin-top:auto}.cal-day .pill{font-size:10px;padding:1.5px 6px;border-radius:99px;background:var(--green-soft);color:var(--green);font-weight:600;letter-spacing:.02em}.cal-day .pill.terra{background:var(--terra-soft);color:var(--terra)}.cal-day .pill.gold{background:var(--gold-soft);color:var(--gold)}.cal-day .phase-tag{font-size:9.5px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-weight:600}.ref-grid{display:grid;grid-template-columns:220px 1fr;gap:22px;align-items:start}.ref-toc{position:sticky;top:0;display:flex;flex-direction:column;gap:2px}.ref-toc button{text-align:left;background:transparent;border:none;padding:8px 10px;border-radius:7px;color:var(--ink-2);font-size:13px;font-weight:500;border-left:2px solid transparent}.ref-toc button:hover{background:var(--bg-2);color:var(--ink)}.ref-toc button.active{background:var(--surface);color:var(--green);border-left-color:var(--green)}.prose{color:var(--ink)}.prose h2{font-family:var(--font-display);font-weight:500;font-size:28px;letter-spacing:-.015em;margin:0 0 10px}.prose h3{font-family:var(--font-display);font-weight:500;font-size:19px;letter-spacing:-.01em;margin:22px 0 8px}.prose p{margin:0 0 12px;font-size:14.5px;line-height:1.62;color:var(--ink-2)}.prose ul,.prose ol{padding-left:22px;margin:0 0 12px}.prose li{font-size:14.5px;line-height:1.62;color:var(--ink-2);margin-bottom:4px}.prose strong{color:var(--ink);font-weight:600}.prose table{width:100%;border-collapse:collapse;margin:14px 0 18px;font-size:13px}.prose th,.prose td{text-align:left;padding:9px 12px;border-bottom:1px solid var(--line)}.prose th{background:var(--surface-2);font-size:10.5px;text-transform:uppercase;letter-spacing:.11em;font-weight:600;color:var(--muted)}.prose td strong{color:var(--green)}.prose blockquote{margin:14px 0;padding:12px 16px;background:var(--green-soft);border-left:3px solid var(--green);border-radius:0 8px 8px 0;font-size:13.5px;color:var(--ink-2);font-style:italic}.kit-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}.kit-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:22px;display:flex;flex-direction:column;gap:14px}.kit-card .visual{height:130px;border-radius:10px;position:relative;overflow:hidden;border:1px solid rgba(0,0,0,.05)}.kit-card .visual:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background-image:repeating-linear-gradient(45deg,rgba(255,255,255,.07) 0 6px,transparent 6px 12px)}.kit-card .visual .label{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;font-family:var(--font-mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:#ffffffd9}.kit-card h3{font-family:var(--font-display);font-weight:500;font-size:22px;letter-spacing:-.012em;margin:0}.kit-card .npk{font-family:var(--font-mono);font-size:11.5px;letter-spacing:.05em;color:var(--muted);margin-bottom:6px}.kit-card p{font-size:13.5px;line-height:1.55;color:var(--ink-2);margin:0}.kit-card .window{margin-top:auto;padding-top:12px;border-top:1px solid var(--line);display:flex;justify-content:space-between;align-items:center}.kit-card .window .lbl{font-size:10.5px;text-transform:uppercase;letter-spacing:.11em;color:var(--muted);font-weight:600}.kit-card .window .val{font-size:13px;font-weight:500}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#221e1873;display:grid;place-items:center;z-index:100;animation:fade .14s ease}.modal{background:var(--surface);border-radius:16px;padding:26px;width:440px;max-width:92vw;box-shadow:var(--shadow-md);animation:pop .16s cubic-bezier(.2,.9,.3,1.05)}@keyframes fade{0%{opacity:0}}@keyframes pop{0%{opacity:0;transform:translateY(8px) scale(.98)}}.modal h3{font-family:var(--font-display);font-weight:500;font-size:22px;letter-spacing:-.012em;margin:0 0 4px}.modal .sub{color:var(--ink-3);font-size:13px;margin-bottom:18px}.field{display:flex;flex-direction:column;gap:5px;margin-bottom:14px}.field label{font-size:11px;text-transform:uppercase;letter-spacing:.11em;color:var(--muted);font-weight:600}.field input,.field textarea,.field select{background:var(--surface-2);border:1px solid var(--line);border-radius:8px;padding:9px 11px;font-size:14px;color:var(--ink);outline:none}.field input:focus,.field textarea:focus,.field select:focus{border-color:var(--green-2);background:var(--surface)}.field .row{display:grid;grid-template-columns:1fr 1fr;gap:10px}.field .hint{font-size:11.5px;color:var(--muted)}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:18px}.tabs{display:inline-flex;background:var(--bg-2);border-radius:9px;padding:3px;gap:2px}.tabs button{background:transparent;border:none;padding:6px 13px;border-radius:7px;font-size:12.5px;font-weight:500;color:var(--ink-3)}.tabs button.active{background:var(--surface);color:var(--ink);box-shadow:var(--shadow-sm)}.right-col{display:flex;flex-direction:column;gap:16px}.mini-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.mini-head .title{font-family:var(--font-display);font-size:18px;font-weight:500;letter-spacing:-.005em}.mini-head .link{font-size:12px;color:var(--ink-3);background:transparent;border:none;cursor:pointer;font-weight:500}.mini-head .link:hover{color:var(--green)}.phase-next{background:var(--surface);border:1px solid var(--line);border-left:3px solid var(--gold);border-radius:var(--radius-sm);padding:14px 16px;display:flex;align-items:center;gap:14px}.phase-next .ico{color:var(--gold)}.phase-next .lbl{font-size:10.5px;text-transform:uppercase;letter-spacing:.11em;color:var(--muted);font-weight:600}.phase-next .ttl{font-family:var(--font-display);font-size:17px;font-weight:500;letter-spacing:-.005em}.phase-next .det{font-size:12.5px;color:var(--ink-3)}.section-gap{margin-top:20px}.empty-state{padding:28px;text-align:center;color:var(--ink-3);font-size:13px}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--line);border-radius:99px;border:2px solid var(--bg)}::-webkit-scrollbar-thumb:hover{background:var(--line-2)}
