:root{--ink:#202521;--muted:#7b817b;--paper:#f5f5f0;--line:#dfe2da;--sage:#b9c8b6;--green:#3f6b53;--coral:#d87959;--gold:#c49b55;--blue:#7896a8}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:'DM Sans',sans-serif}.app-shell{display:flex;min-height:100vh}.sidebar{width:248px;background:#e9ede6;border-right:1px solid #d5dbd1;padding:28px 20px;display:flex;flex-direction:column}.brand{display:flex;align-items:center;gap:11px;margin-bottom:60px}.brand-mark{height:32px;width:32px;border-radius:8px;background:var(--green);color:#fff;display:grid;place-items:center;font-size:22px}.brand b{font-family:'DM Mono';font-size:15px;letter-spacing:1px;display:block}.brand span{font-size:10px;color:var(--muted);display:block;margin-top:2px}.nav-item{width:100%;border:0;background:transparent;text-align:left;padding:12px 11px;margin:2px 0;border-radius:6px;color:#687068;font:500 13px 'DM Sans';cursor:pointer}.nav-item span{font-size:17px;width:26px;display:inline-block;color:#879286}.nav-item.active{background:#d5e0d3;color:var(--green);font-weight:700}.nav-item em{float:right;font-style:normal;font:11px 'DM Mono';background:#dce3da;padding:2px 6px;border-radius:10px}.sidebar-bottom{margin-top:auto}.mini-label,.eyebrow{font:500 10px 'DM Mono';letter-spacing:1.25px;color:#8a9188}.focus-card{display:flex;gap:9px;padding:13px 8px;border-top:1px solid #d6dbd3;margin-top:10px}.focus-dot{width:8px;height:8px;border-radius:50%;background:var(--coral);margin-top:5px}.focus-card strong{font-size:12px;display:block}.focus-card small{font-size:11px;color:var(--muted)}.settings{border:0;background:none;color:#7d857a;font:12px 'DM Sans';padding:16px 8px;cursor:pointer}.main{flex:1}.topbar{height:76px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 48px}.breadcrumb{font:10px 'DM Mono';letter-spacing:1.2px;color:#9aa098}.breadcrumb span{margin:0 8px;color:#c0c6bd}.breadcrumb b{color:#525b52;font-weight:500}.top-actions{display:flex;gap:18px;align-items:center}.icon-btn{border:0;background:none;font-size:22px;color:#667067}.profile{border:1px solid #ccd4ca;background:#fff;border-radius:50%;height:31px;width:31px;font:10px 'DM Mono';color:#536255}.profile span{display:none}.content{padding:42px 48px 70px;max-width:1450px}.hero{display:flex;justify-content:space-between;align-items:flex-end}.hero h1{font:600 54px/1.04 Fraunces,serif;letter-spacing:-1px;margin:12px 0 13px}.hero h1 i{color:var(--green);font-style:normal}.hero p{font-size:14px;line-height:1.55;color:#747b73;margin:0}.primary{border:0;background:var(--green);color:#fff;padding:13px 17px;border-radius:5px;font:600 12px 'DM Sans';cursor:pointer;box-shadow:0 2px 0 #2c523d}.primary span{font-size:17px;vertical-align:-1px;margin-right:5px}.stats{display:grid;grid-template-columns:repeat(3,1fr) 1.5fr;border-top:1px solid var(--line);border-bottom:1px solid var(--line);margin:41px 0 36px;padding:19px 0}.stats>div{padding-right:26px;border-right:1px solid var(--line);margin-right:26px}.stats>div:last-child{border:0;margin:0}.stat-num{font:500 27px 'DM Mono';display:block}.stat-num.accent{color:var(--coral)}.stats>div>span:last-child{font-size:11px;color:var(--muted)}.stat-head{display:flex;justify-content:space-between;font-size:11px;color:var(--muted);margin-bottom:11px}.stat-head b{color:var(--ink);font:11px 'DM Mono'}.progress{height:5px;background:#dfe4dc;border-radius:5px}.progress i{display:block;height:100%;background:var(--coral);border-radius:5px}.workspace{display:grid;grid-template-columns:minmax(0,1fr) 310px;gap:28px}.map-panel{min-width:0}.panel-head{display:flex;justify-content:space-between;align-items:end}.panel-head h2{font:600 26px Fraunces,serif;margin:7px 0 0}.view-toggle{border:1px solid var(--line);border-radius:5px;padding:3px}.view-toggle button{border:0;background:transparent;padding:7px 11px;font-size:11px;color:var(--muted);border-radius:3px}.view-toggle .selected{background:#fff;color:var(--ink);box-shadow:0 1px 3px #d5d9d1}.map-intro{font-size:12px;color:#8b9289;margin:16px 0 22px}.stages{position:relative}.stages:before{content:'';position:absolute;left:18px;top:14px;bottom:12px;width:1px;background:#cfd7cd}.stage{position:relative;padding-left:53px;margin-bottom:22px}.stage-node{position:absolute;left:10px;top:15px;width:17px;height:17px;border:4px solid var(--paper);border-radius:50%;background:var(--green);box-shadow:0 0 0 1px var(--green)}.stage:nth-child(2) .stage-node{background:var(--gold);box-shadow:0 0 0 1px var(--gold)}.stage:nth-child(3) .stage-node{background:var(--blue);box-shadow:0 0 0 1px var(--blue)}.stage:nth-child(4) .stage-node{background:var(--coral);box-shadow:0 0 0 1px var(--coral)}.stage-label{display:flex;align-items:center;gap:10px;margin-bottom:9px}.stage-label strong{font-size:12px}.stage-label span{font:10px 'DM Mono';color:#9da59b}.book-row{display:flex;gap:10px;flex-wrap:wrap}.book{background:#fff;border:1px solid #e0e4dd;border-radius:5px;padding:13px 14px;width:205px;min-height:93px;cursor:pointer;transition:.15s}.book:hover,.book.selected{border-color:#91ab93;box-shadow:0 3px 12px #dce2d8}.book-title{font:600 14px Fraunces,serif;line-height:1.2}.book-author{font-size:11px;color:#8b9289;margin-top:4px}.book-meta{display:flex;justify-content:space-between;align-items:center;margin-top:13px}.tag{font:9px 'DM Mono';padding:4px 6px;border-radius:3px;background:#e7efe6;color:var(--green)}.tag.art{background:#f5e7df;color:#b66348}.tag.practice{background:#e8eef1;color:#5d7b8b}.book-meta small{font:9px 'DM Mono';color:#a1a89f}.detail-panel{border-left:1px solid var(--line);padding-left:25px}.detail-top{display:flex;justify-content:space-between;align-items:center}.status-pill{font:9px 'DM Mono';letter-spacing:.7px;padding:5px 8px;background:#f6e2dc;color:#bb6249;border-radius:3px}.detail-title{font:600 29px/1.1 Fraunces,serif;margin:19px 0 4px}.detail-author{color:#8b9289;font-size:12px}.detail-cover{height:108px;background:#dfe9dc;margin:23px 0 20px;position:relative;overflow:hidden;padding:16px}.detail-cover:after{content:'✦';font-size:94px;line-height:1;position:absolute;right:13px;bottom:-25px;color:#c4d4c0}.cover-kicker{font:9px 'DM Mono';color:var(--green);letter-spacing:1px}.detail-cover b{font:600 20px Fraunces,serif;display:block;max-width:160px;margin-top:10px}.detail-section{border-top:1px solid var(--line);padding:16px 0}.detail-section h4{font:10px 'DM Mono';letter-spacing:1px;color:#8a9188;font-weight:500;margin:0 0 10px}.dependency{display:flex;gap:8px;align-items:center;font-size:12px;margin:8px 0}.dep-dot{width:6px;height:6px;border-radius:50%;background:var(--green)}.notes{border-top:1px solid var(--line);padding:17px 0;margin-top:10px}.notes p{font:13px/1.45 Fraunces,serif;margin:9px 0;color:#4d574d}.ghost-btn{background:none;border:0;color:var(--green);font:600 11px 'DM Sans';padding:5px 0;cursor:pointer}.ghost-btn span{font-size:17px;margin-left:7px}.modal{position:fixed;inset:0;background:#25302980;display:grid;place-items:center;padding:20px}.modal.hidden{display:none}.modal-card{background:#fbfcf8;width:min(480px,100%);padding:31px;border-radius:7px;position:relative;box-shadow:0 15px 40px #202c2350}.modal-close{position:absolute;right:18px;top:14px;border:0;background:none;font-size:25px;color:#879087;cursor:pointer}.modal-card h2{font:600 31px Fraunces,serif;margin:10px 0 8px}.modal-sub{font-size:13px;color:#7a8379;margin:0 0 22px;line-height:1.4}label{display:block;font:10px 'DM Mono';letter-spacing:.6px;color:#7f887e;margin-bottom:14px}input,select{display:block;width:100%;margin-top:7px;border:1px solid #d6ddd3;border-radius:4px;padding:11px 12px;background:#fff;font:13px 'DM Sans';color:var(--ink)}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:14px}.full{width:100%;margin-top:7px}
@media(max-width:900px){.sidebar{width:210px}.content{padding:32px 28px}.topbar{padding:0 28px}.workspace{grid-template-columns:1fr}.detail-panel{border-left:0;border-top:1px solid var(--line);padding:25px 0 0}.hero h1{font-size:46px}}@media(max-width:620px){.sidebar{display:none}.topbar{height:60px;padding:0 18px}.content{padding:26px 18px}.hero{display:block}.hero h1{font-size:42px}.hero .primary{margin-top:22px}.stats{grid-template-columns:1fr 1fr;gap:18px}.stats>div{border:0;margin:0;padding:0}.stats .progress-stat{grid-column:span 2}.book{width:100%}.panel-head{align-items:start;gap:10px;flex-direction:column}.view-toggle{align-self:flex-end;margin-top:-34px}}
