:root{font-family:Microsoft YaHei,system-ui,sans-serif;color:#17251e;background:#f4f6f2;font-synthesis:none;--ink: #17251e;--muted: #68766c;--line: #dce4dd;--card: #fff;--lime: #c9f24f;--forest: #25593c}*{box-sizing:border-box}body{margin:0;min-width:320px}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}button,.button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:11px 18px;border:1px solid transparent;border-radius:12px;background:var(--forest);color:#fff;font-weight:600;cursor:pointer}button:disabled{opacity:.5;cursor:not-allowed}.button.secondary,button.secondary{color:var(--forest);background:#f0f5ed;border-color:var(--line)}.button.accent{color:var(--ink);background:var(--lime)}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #85ac5f;outline-offset:3px}input,select,textarea{width:100%;min-height:46px;border:1px solid var(--line);border-radius:10px;padding:10px 12px;color:var(--ink);background:#fff;min-width:0}textarea{resize:vertical}h1{font-size:clamp(24px,4vw,34px);letter-spacing:-.04em;line-height:1.4;overflow-wrap:anywhere}h2{font-size:18px;margin:0 0 16px}h3{font-size:18px;line-height:1.5;margin:12px 0 8px;overflow-wrap:anywhere}p{line-height:1.7}small,.muted{color:var(--muted)}.topbar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px max(20px,calc((100vw - 1040px)/2));background:#fff;border-bottom:1px solid var(--line)}.brand{display:flex;gap:12px;align-items:center;font-weight:700}.brand>b{display:grid;place-items:center;height:42px;width:42px;border-radius:13px;background:var(--lime)}.brand small{display:block;font-size:10px;margin-top:4px;font-weight:400}.identity{font-size:13px;overflow-wrap:anywhere;text-align:right}.dev-bar{display:flex;gap:12px;align-items:center;padding:8px 20px;font-size:12px;background:#fff4db}.dev-bar select{width:auto;flex:1;max-width:220px;min-height:36px;padding:5px}main{max-width:1000px;padding:28px 20px calc(105px + env(safe-area-inset-bottom));margin:auto}.hero{padding:30px;background:linear-gradient(130deg,#203d2b,#306146);border-radius:22px;color:#fff}.hero h1{margin:10px 0}.hero p{color:#d3e2cf}.eyebrow{font-size:12px;color:#d9eca1}.section-head,.row{display:flex;justify-content:space-between;align-items:center;gap:12px}.section-head{margin:26px 0 14px}.section-head h1,.section-head h2{margin:0}.section-head a{flex-shrink:0;font-size:13px}.stack{display:grid;gap:16px}.card{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:22px;margin-bottom:16px;min-width:0;overflow-wrap:anywhere}.stack .card{margin-bottom:0}.project-card{display:block}.project-card:hover{border-color:#91a981}.project-card p{font-size:13px;color:var(--muted)}.project-card .row:last-child{font-size:12px;flex-wrap:wrap}.badge{font-size:12px;border-radius:999px;padding:6px 10px;background:#edf0eb;flex-shrink:0}.badge.open{background:#eef6d6;color:#486420}.badge.active{background:#e5effb;color:#2460a6}.badge.completed{background:#e5f3e8;color:#297647}.filters{display:flex;gap:12px;margin:18px 0;align-items:center;flex-wrap:wrap}.filters select{flex:1;min-width:140px}.check{display:flex;align-items:center;gap:8px;min-height:44px}.check input{width:20px;min-height:20px}.field{display:grid;gap:9px;font-size:14px}.field>span{font-weight:600}.back{display:inline-block;min-height:44px;padding:8px 0;color:var(--muted)}dl{display:grid;grid-template-columns:90px minmax(0,1fr);gap:16px;font-size:14px}dt{color:var(--muted)}dd{margin:0;overflow-wrap:anywhere}.pre-wrap{white-space:pre-wrap}.timeline{list-style:none;padding:0;margin:0;display:grid;gap:20px}.timeline li{display:grid;gap:6px;border-left:3px solid var(--lime);padding-left:14px;font-size:13px}.bottom-nav{position:fixed;bottom:0;left:0;right:0;display:flex;justify-content:center;gap:8px;padding:8px 12px calc(8px + env(safe-area-inset-bottom));background:#fffffff7;border-top:1px solid var(--line);z-index:20}.bottom-nav a{flex:1;max-width:210px;text-align:center;padding:14px 4px;border-radius:12px;font-size:14px}.bottom-nav a.active{color:var(--forest);background:#edf4e5;font-weight:700}.error{position:sticky;top:0;z-index:30;margin:0;background:#fff0e7;color:#963a1c;padding:14px 20px;display:flex;justify-content:space-between;align-items:center;gap:12px;overflow-wrap:anywhere}.error button{color:inherit;background:none;padding:0;min-width:44px}.empty{text-align:center;padding:36px 20px;color:var(--muted)}.star-picker{display:grid;grid-template-columns:repeat(6,1fr);gap:5px}.star-picker button{padding:8px 0;min-width:0;font-size:13px}.star-picker .selected{background:var(--lime);color:var(--ink)}.big-number{display:block;font-size:30px;margin-top:20px;color:var(--forest)}@media(min-width:800px){.stack:has(>.project-card){grid-template-columns:1fr 1fr}}@media(max-width:400px){main{padding-left:14px;padding-right:14px}.hero,.card{padding:20px}.brand small{font-size:9px}}.metric-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.metric-grid a{display:grid;padding:12px;background:var(--background, #f3f5ef);border-radius:12px}.metric-grid strong{font-size:28px}.todo{display:grid;gap:6px;border-bottom:1px solid #e3e8dd;padding:12px 0}@media(max-width:799px){main:has(.project-actions){padding-bottom:calc(185px + env(safe-area-inset-bottom))}.project-actions>button,.project-actions>a.button{position:fixed;bottom:calc(82px + env(safe-area-inset-bottom));left:20px;right:20px;width:calc(100% - 40px);z-index:21;box-shadow:0 6px 24px #17251e28}}summary{cursor:pointer;padding:12px 0;min-height:44px;font-weight:600}.hero+.card{margin-top:20px}
