@import url('https://fonts.googleapis.com/css2?family=DM+Mono:wght@400;500&family=Noto+Sans+SC:wght@400;500;600;700;800&family=Playfair+Display:ital,wght@0,600;0,700;1,600&display=swap');

:root { --ink:#17231e; --paper:#f5f3eb; --panel:#fffef9; --line:#d8d8cc; --muted:#6c756e; --green:#165d4d; --lime:#c9e74b; --orange:#f6813f; --red:#c94b43; --blue:#bfe3dd; }
*{box-sizing:border-box} body{margin:0;background:var(--paper);color:var(--ink);font-family:"Noto Sans SC",sans-serif;font-size:14px}.app-shell{display:grid;grid-template-columns:252px 1fr;min-height:100vh}.sidebar{background:#173d35;color:#f5f2e8;padding:28px 18px;display:flex;flex-direction:column}.brand{display:flex;align-items:center;gap:10px;font:700 20px "DM Mono",monospace;letter-spacing:-1px}.brand-mark{display:grid;place-items:center;width:29px;height:29px;border-radius:50%;background:var(--lime);color:#173d35;font-size:16px}.muted{color:#98b5a9}.workspace-label{font-size:11px;color:#aac5ba;margin:22px 7px 28px;letter-spacing:.5px}nav{display:grid;gap:5px}.nav-item{border:0;background:transparent;color:#d8e4dd;text-align:left;padding:12px 12px;border-radius:8px;font:500 14px inherit;cursor:pointer}.nav-item span{display:inline-block;width:28px;font-size:16px}.nav-item:hover,.nav-item.active{background:#28584e;color:white}.sidebar-foot{margin-top:auto;border-top:1px solid #427166;padding-top:18px}.user-chip{display:flex;gap:9px;align-items:center}.avatar{display:grid;place-items:center;width:32px;height:32px;border-radius:50%;background:#f7d293;color:#583b23;font-weight:800}.user-chip small,.sidebar-foot p{display:block;color:#a8c0b7;font-size:11px;margin-top:2px}.sidebar-foot p{line-height:1.6;margin:16px 4px 0}.topbar{height:112px;padding:25px 42px 18px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between}.eyebrow{font:500 10px "DM Mono";letter-spacing:1.3px;color:var(--green)}h1{font:700 27px "Playfair Display","Noto Sans SC";margin:3px 0}.top-actions{display:flex;align-items:center;gap:15px}.today{font:500 11px "DM Mono";color:var(--muted)}button{font-family:inherit}.btn{border:1px solid var(--ink);border-radius:6px;padding:9px 13px;background:var(--ink);color:white;font-weight:600;cursor:pointer}.btn:hover{transform:translateY(-1px)}.btn.secondary{background:var(--lime);color:var(--ink);border-color:var(--lime)}.btn.ghost{background:transparent;color:var(--ink);border-color:var(--line)}#app{padding:30px 42px 50px}.hero{display:flex;justify-content:space-between;align-items:end;margin-bottom:25px}.hero h2{font:700 23px "Playfair Display","Noto Sans SC";margin:0}.hero p{color:var(--muted);margin:7px 0 0}.legend{display:flex;gap:15px;color:var(--muted);font-size:12px}.dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:5px}.dot.green{background:var(--green)}.dot.orange{background:var(--orange)}.dot.red{background:var(--red)}.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:25px}.kpi{background:var(--panel);border:1px solid var(--line);padding:15px 17px;border-radius:8px}.kpi b{font:700 26px "Playfair Display";display:block}.kpi span{font-size:12px;color:var(--muted)}.section-card{background:var(--panel);border:1px solid var(--line);border-radius:9px;overflow:hidden}.section-head{display:flex;justify-content:space-between;align-items:center;padding:17px 19px;border-bottom:1px solid var(--line)}.section-head h3{margin:0;font-size:15px}.text-link{border:0;background:transparent;color:var(--green);cursor:pointer;font-weight:700}.roadmap-table{width:100%;border-collapse:collapse;text-align:left}.roadmap-table th{font:500 10px "DM Mono";letter-spacing:.6px;color:var(--muted);padding:11px 19px;background:#f7f6ef}.roadmap-table td{padding:16px 19px;border-top:1px solid #ecebe4;vertical-align:middle}.project-name{font-weight:800}.project-name small{display:block;color:var(--muted);font-weight:400;margin-top:3px}.timeline{width:170px;height:7px;background:#e8e8df;border-radius:10px;overflow:hidden}.timeline span{display:block;height:100%;background:var(--green);border-radius:10px}.badge{display:inline-block;padding:4px 8px;border-radius:999px;font-size:11px;font-weight:700}.badge.green{background:#d8eee7;color:#126350}.badge.orange{background:#ffe1c8;color:#aa4a12}.badge.red{background:#f8d9d6;color:#a33630}.badge.gray{background:#ebebe6;color:#667068}.project-layout{display:grid;grid-template-columns:1fr 300px;gap:20px}.project-banner{background:#173d35;color:white;border-radius:10px;padding:24px;margin-bottom:18px;position:relative;overflow:hidden}.project-banner:after{content:"";position:absolute;width:240px;height:240px;border:40px solid var(--lime);border-radius:50%;right:-100px;top:-135px;opacity:.82}.project-banner h2{font:700 28px "Playfair Display","Noto Sans SC";margin:7px 0}.project-meta{display:flex;gap:19px;color:#bdd6ca;font-size:12px}.progressline{height:8px;background:#3f6b60;border-radius:10px;margin-top:22px;max-width:460px}.progressline span{display:block;background:var(--lime);height:100%;border-radius:10px}.task-group{margin-bottom:15px}.task-group header{display:flex;justify-content:space-between;align-items:center;margin:0 2px 7px}.task-group h3{font-size:14px;margin:0}.task{display:grid;grid-template-columns:28px 1fr 94px 92px;gap:10px;align-items:center;padding:13px 14px;background:var(--panel);border:1px solid var(--line);border-radius:7px;margin-bottom:6px;cursor:pointer}.task:hover{border-color:#9caf9f}.check{width:20px;height:20px;border:1.5px solid #98a39b;border-radius:50%;display:grid;place-items:center;color:white}.task.done .check{background:var(--green);border-color:var(--green)}.task strong{font-size:13px}.task small{display:block;color:var(--muted);font-size:11px;margin-top:2px}.task-owner{font-size:12px;color:var(--muted)}.status-select{border:0;background:transparent;font:600 11px inherit;cursor:pointer;text-align:right}.side-card{background:var(--panel);border:1px solid var(--line);border-radius:9px;padding:17px;margin-bottom:13px}.side-card h3{margin:0 0 12px;font-size:14px}.risk{padding:11px 0;border-top:1px solid #ebeae2}.risk:first-of-type{border-top:0;padding-top:0}.risk b{font-size:12px}.risk p{color:var(--muted);font-size:12px;line-height:1.55;margin:4px 0}.initiative{display:flex;gap:10px;align-items:flex-start;padding:11px 0;border-top:1px solid #ebeae2}.initiative:first-of-type{border:0;padding-top:0}.initiative-icon{width:28px;height:28px;border-radius:6px;display:grid;place-items:center;background:#e1f0cc;color:#39723c;font-weight:800}.initiative p{margin:2px 0;color:var(--muted);font-size:11px}.empty{padding:35px;color:var(--muted);text-align:center}.library{display:grid;grid-template-columns:repeat(3,1fr);gap:13px}.library-card{background:var(--panel);border:1px solid var(--line);border-radius:9px;padding:17px}.library-card h3{margin:8px 0 5px;font-size:15px}.library-card p{color:var(--muted);font-size:12px;line-height:1.55}.tag{font:500 10px "DM Mono";letter-spacing:.4px;color:var(--green)}.modal-backdrop{position:fixed;inset:0;background:rgba(18,34,29,.48);display:grid;place-items:center;padding:20px}.modal-backdrop.hidden{display:none}.modal{background:var(--panel);border-radius:10px;width:min(560px,100%);padding:25px;box-shadow:0 20px 70px #10251d66}.modal h2{font:700 25px "Playfair Display","Noto Sans SC";margin:0 0 5px}.modal p{color:var(--muted);margin:0 0 18px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.form-grid label{font-size:12px;font-weight:700}.form-grid input,.form-grid select{display:block;width:100%;margin-top:5px;border:1px solid var(--line);border-radius:6px;padding:9px;background:white;font:14px inherit}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:22px}.tutorial{padding:16px;background:#fff6d7;border:1px solid #ead6a2;border-radius:7px;margin-bottom:15px;line-height:1.7;font-size:13px}.settings-list{display:grid;gap:8px}.settings-row{padding:15px 17px;background:var(--panel);border:1px solid var(--line);border-radius:7px;display:flex;justify-content:space-between}.settings-row span{color:var(--muted)}@media(max-width:1000px){.app-shell{grid-template-columns:1fr}.sidebar{display:none}.project-layout{grid-template-columns:1fr}.kpis{grid-template-columns:repeat(2,1fr)}.topbar,#app{padding-left:22px;padding-right:22px}.roadmap-table{font-size:12px}.timeline{width:90px}}@media(max-width:640px){.kpis,.library,.form-grid{grid-template-columns:1fr}.topbar{height:auto;padding-top:17px;padding-bottom:17px}.top-actions .today{display:none}.hero{display:block}.legend{margin-top:15px}.roadmap-table th:nth-child(4),.roadmap-table td:nth-child(4),.roadmap-table th:nth-child(5),.roadmap-table td:nth-child(5){display:none}.task{grid-template-columns:25px 1fr 75px}.task-owner{display:none}.project-meta{flex-wrap:wrap}}
