@import "https://fonts.googleapis.com/css2?family=Montserrat:wght@300;400;500;600;700&display=swap";
:root{--bg:#eceae4;--card:#fff;--card-alt:#f8f7f2;--line:#f0eee7;--line-strong:#e6e2d6;--ink:#111;--ink-2:#333;--muted:#777;--faint:#9a9a8e;--accent:#23401f;--accent-dark:#1b3018;--accent-bg:#eef1ea;--lime:#9cc93b;--beige:#cfc7b0;--purple:#9b8b5e;--purple-bg:#fbf9f2;--amber:#b8862b;--red:#d97a1f;--red-bg:#fdf6ee;--font-sans:"Montserrat", system-ui, -apple-system, sans-serif;--font-mono:"Montserrat", ui-monospace, monospace;--r-sm:12px;--r-md:16px;--r-lg:20px}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--ink);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;font-size:14px;line-height:1.5}a{color:var(--accent);text-decoration:none}a:hover{color:#16290f}button{font:inherit;cursor:pointer}input,select,textarea{font-family:var(--font-sans)}.mono{font-family:var(--font-mono)}.eyebrow{font:600 11px var(--font-mono);letter-spacing:.05em;text-transform:uppercase;color:var(--muted)}.btn{border-radius:var(--r-sm);border:1px solid var(--line-strong);background:var(--card);color:var(--ink-2);justify-content:center;align-items:center;gap:8px;padding:10px 16px;font-size:13px;font-weight:600;transition:background .12s,border-color .12s;display:inline-flex}.btn:hover{border-color:#bbb}.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}.btn-primary:hover{background:#16290f;border-color:#16290f}.btn-sm{padding:8px 13px;font-size:12.5px}.btn-lg{padding:12px 18px;font-size:14px}.btn:disabled{opacity:.55;cursor:not-allowed}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:0 1px 3px #0000000f}.card-pad{padding:22px}.input{border:1px solid var(--line-strong);border-radius:var(--r-sm);font:400 13px var(--font-sans);color:var(--ink);background:var(--card);width:100%;padding:9px 12px}.input::placeholder{color:var(--faint)}.table{border-collapse:collapse;width:100%}.table thead th{font:600 11px var(--font-mono);text-transform:uppercase;letter-spacing:.04em;color:#666;text-align:left;border-bottom:1px solid var(--line);background:#fafafa;padding:11px 16px}.table tbody td{vertical-align:middle;border-bottom:1px solid #f0f0f0;padding:14px 16px}.table tbody tr:hover{background:#fafafa}.clickable-row{transition:background .12s}.clickable-row:hover{background:var(--accent-bg)!important}.clickable-row:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.tag{border:1px solid var(--line-strong);border-radius:var(--r-sm);font:600 11px var(--font-sans);color:#666;letter-spacing:.02em;padding:2px 7px;display:inline-block}.badge{border-radius:var(--r-sm);font:600 11px var(--font-sans);padding:3px 8px;display:inline-block}.dot{border-radius:50%;flex:none;justify-content:center;align-items:center;width:20px;height:20px;font-size:10px;font-weight:600;display:inline-flex}.dot.done{background:var(--ink);color:#fff}.dot.active{border:2px solid var(--accent);color:var(--accent)}.dot.active:after{content:"●";font-size:9px}.dot.planned{border:2px dashed var(--purple);color:var(--purple)}.dot.blocked{background:var(--red);color:#fff;font-weight:700}.dot.unassigned{border:2px solid var(--amber)}.dot.todo{border:1px solid #d5d5d5}.dot.na{color:#ccc;font-size:12px}.kpi{border:1px solid var(--line);border-radius:var(--r-md);background:var(--card);padding:13px 15px}.kpi.highlight{border-color:var(--accent);background:var(--accent-bg)}.kpi strong{color:var(--ink);font-size:22px;font-weight:700;display:block}.kpi.highlight strong{color:var(--accent)}.kpi span{color:var(--ink-2);margin-top:3px;font-size:12px;display:block}.sidebar{border-right:1px solid var(--line);background:var(--card);flex-direction:column;flex:none;width:212px;min-height:100vh;display:flex}.sidebar .brand{color:var(--ink);padding:0 20px 20px;font-size:15px;font-weight:700}.sidebar .nav-item{color:#444;border-left:3px solid #0000;align-items:center;gap:9px;padding:10px 20px;font-size:13px;display:flex}.sidebar .nav-item.active{color:var(--accent);border-left:3px solid var(--accent);background:var(--accent-bg);font-weight:600}.sidebar .nav-item:hover{background:var(--accent-bg)}.alert-banner{border:1px solid var(--accent);background:var(--accent-bg);border-radius:var(--r-md);align-items:center;gap:16px;padding:13px 16px;display:flex}.chip{border:1px solid var(--line-strong);border-radius:var(--r-sm);color:var(--ink-2);background:var(--card);padding:8px 13px;font-size:12.5px;font-weight:500}.chip.active{border-color:var(--accent);background:var(--accent-bg);color:var(--accent);font-weight:600}.chip.danger{border-color:var(--red);color:var(--red);font-weight:600}.progress{background:#eee;border-radius:3px;height:6px;overflow:hidden}.progress>div{background:var(--ink);border-radius:3px;height:100%}.progress>div.done-bar{background:var(--accent)}.empty{border:1px solid var(--line);border-radius:var(--r-lg);text-align:center;background:var(--card);padding:26px 22px}.app-shell{box-sizing:border-box;background:#eceae4;align-items:stretch;gap:14px;min-height:100vh;padding:14px;display:flex}.app-main{background:#fff;border-radius:24px;flex:1;min-width:0;padding:34px 40px 52px;animation:.22s ease-out fadein;position:relative;box-shadow:0 1px 2px #1820140a}.page-title{color:var(--ink);margin:0;font-size:26px;font-weight:700}.page-sub{color:var(--muted);margin-top:6px;font-size:13px}.journal-row{border-bottom:1px solid #f2f2f2;align-items:baseline;gap:14px;padding:13px 16px;display:flex}.toast-wrap{z-index:60;flex-direction:column;gap:10px;width:340px;display:flex;position:fixed;top:18px;right:18px}.toast{border:1px solid #e0ded3;border-left:3px solid var(--accent);background:#fff;border-radius:5px;padding:12px 14px;box-shadow:0 8px 24px #00000014}@keyframes slidein{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}.toast{animation:.18s ease-out slidein}@media (max-width:900px){.app-shell{flex-direction:column;gap:8px;padding:8px}.app-main{border-radius:18px;padding:20px 16px 40px}.sidebar{width:60px}.sidebar .brand,.sidebar .nav-item span,.sidebar .user-box{display:none}}@keyframes pop{0%{opacity:0;transform:scale(.97)}to{opacity:1;transform:none}}@keyframes breathe{0%,to{box-shadow:0 0 #23401f4d}50%{box-shadow:0 0 0 7px #23401f00}}@keyframes rowIn{0%{opacity:0;transform:translate(-14px)}to{opacity:1;transform:none}}@keyframes checkPop{0%{opacity:0;transform:scale(.2)}60%{opacity:1;transform:scale(1.18)}to{opacity:1;transform:scale(1)}}@keyframes lineGrow{0%{transform:scaleY(0)}to{transform:scaleY(1)}}@keyframes accentSlide{0%{opacity:.4;transform:scaleY(0)}60%{opacity:1;transform:scaleY(1)}to{opacity:1;transform:scaleY(1)}}@keyframes bobbyBob{0%,to{transform:translateY(0)rotate(-3deg)}50%{transform:translateY(-7px)rotate(3deg)}}@keyframes confetti{0%{opacity:0;transform:translateY(-12vh)rotate(0)}8%{opacity:1}to{opacity:.9;transform:translateY(108vh)rotate(760deg)}}@keyframes confettiSway{0%,to{margin-left:-14px}50%{margin-left:14px}}@keyframes fadein{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@keyframes ignite{0%{box-shadow:0 0 #9cc93bd9}to{box-shadow:0 0 0 14px #9cc93b00}}@keyframes ringSpin{to{transform:rotate(360deg)}}@keyframes shimmer{0%{background-position:-420px 0}to{background-position:420px 0}}@keyframes slideleft{0%{opacity:0;transform:translate(-16px)}to{opacity:1;transform:none}}@keyframes tokenGlow{0%,to{box-shadow:0 0 0 4px #9cc93b40}50%{box-shadow:0 0 0 8px #9cc93b1f}}@keyframes trailFade{0%{opacity:0}25%{opacity:.9}to{opacity:0}}.hover-lift{transition:transform .15s,box-shadow .15s,background .15s,border-color .15s,color .15s}.hover-lift:hover{transform:translateY(-1px);box-shadow:0 8px 20px #1b301821}.hover-lift2{transition:transform .18s,box-shadow .18s}.hover-lift2:hover{transform:translateY(-2px);box-shadow:0 10px 26px #1820141a}.hover-bright{transition:filter .15s}.hover-bright:hover{filter:brightness(1.12)}.hover-bright-dim{transition:filter .15s}.hover-bright-dim:hover{filter:brightness(.975)}.hover-scale{transition:transform .15s}.hover-scale:hover{transform:scale(1.28)}
