:root{--bg:#fafaf7;--ink:#202d30;--muted:#687477;--teal:#176e72;--line:#e2e7e4;--pale:#eaf2ee;--red:#b75148}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,'PingFang SC','Microsoft Yahei',sans-serif;font-size:14px}button,input,select{font:inherit}button,a,input,select{-webkit-tap-highlight-color:transparent}a{color:inherit;text-decoration:none}button{cursor:pointer}button:disabled{cursor:default;opacity:.5}button,a,input,select{outline-offset:4px}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--teal)}header{height:88px;max-width:1240px;padding:0 36px;margin:auto;display:flex;align-items:center;gap:48px;border-bottom:1px solid var(--line)}.brand{font-size:25px;font-weight:750;letter-spacing:2px}.brand span{font-size:11px;font-weight:400;letter-spacing:1px;margin-left:18px;color:var(--muted)}nav{display:flex;gap:30px;margin-left:auto}nav a{padding:12px 0;color:var(--muted)}nav a.active{color:var(--teal);box-shadow:0 2px var(--teal)}small{font-size:11px}nav small{background:var(--pale);padding:3px 6px;border-radius:5px}main{max-width:1240px;margin:auto;padding:0 36px;min-height:70vh}.quiet,.btn,.seg button,.chip{border:1px solid var(--line);background:transparent;color:var(--muted);border-radius:7px;padding:9px 13px}.quiet:hover,.btn:hover,.chip:hover{background:var(--pale);color:var(--teal)}.btn.primary{background:var(--teal);color:white;border-color:var(--teal)}.eyebrow{font-size:11px;letter-spacing:2px;color:var(--teal);margin:0 0 20px}.hero{display:grid;grid-template-columns: .85fr 1.35fr;align-items:center;min-height:400px;padding:36px 0 22px}.hero h1{font-size:46px;line-height:1.35;font-weight:600;letter-spacing:-1.5px;margin:0 0 20px}.hero h1 em{font-style:normal;color:var(--teal)}.hero p{line-height:1.9;color:var(--muted);max-width:350px}.hero .btn{display:inline-block;margin-top:18px}.visual{position:relative;height:330px;overflow:hidden}.visual canvas{width:100%;height:100%;display:block}.project-float{position:absolute;right:2%;background:var(--bg);padding:8px 12px;border:1px solid var(--line);border-radius:8px;min-width:160px;transition:transform .2s,box-shadow .2s}.project-float:hover,.project-float:focus{transform:translateX(-8px);box-shadow:0 5px 20px #20322b12}.project-float small{display:block;color:var(--teal);margin-top:5px}.visual-note{position:absolute;left:6%;bottom:0;color:var(--muted);font-size:10px;letter-spacing:1px}.metrics{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:23px 0}.metric{padding:0 24px;border-right:1px solid var(--line)}.metric:first-child{padding-left:0}.metric:last-child{border:0}.metric strong{font-size:25px;font-weight:550;font-variant-numeric:tabular-nums}.metric span{display:block;font-size:12px;color:var(--muted);margin-top:7px}.badge{font-size:10px;border-radius:4px;background:var(--pale);color:var(--teal);padding:4px 7px;display:inline-block;font-weight:400;margin-left:8px;vertical-align:middle}.section-head{display:flex;align-items:center;justify-content:space-between;margin:35px 0 20px;gap:20px}.section-head h2{font-size:24px;font-weight:550;margin:0 0 8px}.section-head p,.sub{font-size:12px;color:var(--muted);line-height:1.8;margin:0}.seg{display:flex;background:#edf0ec;padding:4px;border-radius:8px;gap:3px}.seg button{border-color:transparent;min-width:45px;padding:7px 12px}.seg button[aria-pressed=true]{background:white;color:var(--teal);box-shadow:0 1px 4px #20322b0e}.toolbar{display:flex;align-items:end;gap:12px;margin:20px 0}.toolbar label{font-size:11px;color:var(--muted);display:grid;gap:7px}.toolbar input,.toolbar select{height:40px;padding:0 13px;border:1px solid var(--line);background:transparent;color:var(--ink);border-radius:7px}.toolbar label:first-child{flex:1}.toolbar input{width:100%}.chips{display:flex;gap:8px;flex-wrap:wrap;margin:18px 0}.chip{font-size:12px;padding:7px 12px}.chip[aria-pressed=true]{background:var(--teal);border-color:var(--teal);color:white}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;min-width:670px}th{text-align:left;color:var(--muted);font-size:11px;font-weight:400;padding:13px 12px;border-bottom:1px solid var(--line)}td{padding:22px 12px;border-bottom:1px solid var(--line)}th:first-child,td:first-child{padding-left:0;width:50px;color:var(--muted);font-variant-numeric:tabular-nums}th.num,td.num{text-align:right}td.project{width:43%}.project a{font-size:16px;font-weight:550;display:inline-block}.project a:hover{color:var(--teal)}.owner{color:var(--muted);font-weight:400;font-size:12px}.project p{color:var(--muted);font-size:12px;margin:7px 0}.lang{font-size:10px;color:var(--muted)}.up{color:var(--teal)}.down{color:var(--red)}.gain{font-size:18px;font-variant-numeric:tabular-nums}.spark{width:100px;height:32px}.save{border:1px solid var(--line);background:transparent;border-radius:6px;padding:7px 10px;font-size:12px;white-space:nowrap;color:var(--muted)}.save[aria-pressed=true]{color:var(--teal);background:var(--pale)}.list-foot{display:flex;justify-content:space-between;color:var(--muted);font-size:11px;padding:18px 0}.story-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin:24px 0 48px}.story-card{border:1px solid var(--line);border-radius:10px;padding:23px;transition:transform .2s}.story-card:hover{transform:translateY(-4px);border-color:#9fbdb4}.story-card h3{font-size:18px;margin:15px 0 10px}.story-card p{font-size:12px;color:var(--muted);line-height:1.9}.story-card .tag{font-size:11px;color:var(--teal)}.page-heading{padding:48px 0 10px}.page-heading h1{font-size:34px;font-weight:550;margin:12px 0}.crumb{color:var(--muted);font-size:12px;display:inline-block;margin:30px 0}.detail-head{display:flex;justify-content:space-between;align-items:center;gap:20px}.detail-head h1{font-size:36px;margin:8px 0 14px;font-weight:550}.detail-head .owner{font-size:15px}.detail-head p{color:var(--muted);line-height:1.9}.actions{display:flex;gap:10px;flex-shrink:0}.meta{display:flex;gap:20px;flex-wrap:wrap;margin:20px 0 30px;font-size:12px;color:var(--muted)}.detail-grid{display:grid;grid-template-columns:1.8fr 1fr;gap:30px;margin:32px 0}.panel{border:1px solid var(--line);border-radius:12px;padding:25px;min-width:0}.panel h2{font-size:18px;font-weight:550;margin:0 0 16px}.chart-head{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:15px;margin-bottom:24px}.chart-holder{height:265px;position:relative}.chart-holder canvas{width:100%;height:100%;display:block;touch-action:pan-y}.chart-tip{font-size:12px;color:var(--teal);min-height:24px;margin-top:12px}.chart-bottom{display:flex;justify-content:space-between;font-size:11px;color:var(--muted);margin-top:12px}.panel p{line-height:1.9;color:var(--muted);font-size:13px}.empty{padding:70px 20px;text-align:center;border:1px dashed var(--line);border-radius:12px;color:var(--muted)}.empty h2{color:var(--ink);font-size:20px}.empty a{color:var(--teal);text-decoration:underline}footer{max-width:1240px;margin:35px auto 0;padding:25px 36px;border-top:1px solid var(--line);display:flex;justify-content:space-between;gap:20px;color:var(--muted);font-size:10px;line-height:1.9}#toast{position:fixed;bottom:28px;left:50%;transform:translateX(-50%);background:var(--ink);color:white;padding:12px 22px;border-radius:8px;opacity:0;pointer-events:none;transition:opacity .2s;font-size:12px}#toast.show{opacity:1}.fade{animation:appear .35s ease-out}@keyframes appear{from{opacity:.3;transform:translateY(6px)}to{opacity:1;transform:none}}@media(max-width:760px){header{height:72px;padding:0 20px;gap:14px}.brand{font-size:21px}.brand span{display:none}nav{gap:18px;font-size:12px}header .quiet{font-size:10px;padding:6px}main{padding:0 20px}.hero{grid-template-columns:1fr;padding-top:35px}.hero h1{font-size:35px}.hero p{max-width:none}.visual{height:265px;margin-top:16px}.hero .btn{margin-top:7px}.metrics{grid-template-columns:repeat(2,1fr);gap:20px}.metric{padding:0 15px}.metric:nth-child(3){padding-left:0}.metric:nth-child(2){border:0}.metric strong{font-size:23px}.section-head{align-items:start;flex-wrap:wrap}.toolbar{flex-wrap:wrap}.toolbar label:first-child{flex-basis:100%}.toolbar label:not(:first-child){flex:1}.story-cards{grid-template-columns:1fr}.story-card{padding:20px}.detail-head{align-items:start;flex-direction:column}.detail-head h1{font-size:30px}.detail-grid{grid-template-columns:1fr;gap:18px}.panel{padding:20px}.chart-head .seg button{padding:7px 8px;min-width:32px}.chart-head{gap:10px}.meta{gap:14px}.chart-holder{height:235px}footer{padding:24px 20px;flex-direction:column;gap:5px}.section-head h2{font-size:22px}}@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}
/* Shared component spacing: 44px controls, 16px inset, 8px icon gap. */
:root{--control-height:44px;--control-inset:16px;--icon-gap:8px;--control-radius:10px}.icon{width:18px;height:18px;flex:0 0 18px;opacity:.68;display:block}.btn,.quiet,.save,.chip,.crumb{display:inline-flex;align-items:center;justify-content:center;gap:var(--icon-gap)}.btn,.quiet,.save{min-height:40px;padding:10px 16px;border-radius:var(--control-radius);line-height:1.4}.hero .btn{display:inline-flex}.crumb{justify-content:flex-start;min-height:40px;gap:10px}.seg{padding:5px;gap:4px;border-radius:12px}.seg button{min-height:36px;padding:8px 14px;border-radius:8px;line-height:1.4}.chip{min-height:36px;padding:8px 14px;border-radius:8px}.toolbar{gap:16px;margin:24px 0}.toolbar label,.filter-field{font-size:12px;color:var(--muted);display:flex;flex-direction:column;gap:9px;min-width:0}.filter-field{min-width:168px}.search-control{display:flex;align-items:center;gap:10px;min-height:44px;border:1px solid var(--line);border-radius:var(--control-radius);padding:0 14px;background:#fff}.search-control:focus-within{border-color:var(--teal);box-shadow:0 0 0 3px #176e7210}.toolbar .search-control input{height:42px;min-width:0;border:0;padding:0;background:transparent;outline:none;box-shadow:none}.search-control .icon{width:17px;height:17px;flex-basis:17px}.dropdown{position:relative}.select-trigger{width:100%;min-height:44px;display:flex;align-items:center;justify-content:space-between;gap:20px;background:#fff;color:var(--ink);border:1px solid var(--line);border-radius:var(--control-radius);padding:10px 14px 10px 16px;text-align:left}.select-trigger:hover{border-color:#adc4bb}.select-trigger[aria-expanded=true]{border-color:var(--teal);box-shadow:0 0 0 3px #176e7210}.select-trigger[aria-expanded=true] .icon{transform:rotate(180deg)}.select-menu{position:absolute;top:calc(100% + 8px);left:0;min-width:100%;width:max-content;max-width:calc(100vw - 40px);max-height:304px;overflow:auto;z-index:30;padding:6px;border:1px solid var(--line);border-radius:12px;background:#fff;box-shadow:0 12px 35px #24363016}.select-menu[hidden]{display:none}.select-menu button{display:flex;align-items:center;justify-content:space-between;gap:24px;width:100%;border:0;border-radius:7px;padding:11px 12px;min-height:42px;background:transparent;color:var(--ink);text-align:left;white-space:nowrap}.select-menu button:hover,.select-menu button:focus-visible{background:#f0f5f1}.select-menu button[aria-pressed=true]{color:var(--teal);background:var(--pale)}.select-menu .icon{width:16px;height:16px;flex-basis:16px}.chips{gap:10px;margin:20px 0 24px}.project a{line-height:1.7}.badge{padding:5px 9px;line-height:1.5;margin:4px 0 4px 10px}.project p{margin:8px 0;line-height:1.8}td,th{padding-left:16px;padding-right:16px}td:last-child,th:last-child{padding-right:12px}.project-float{padding:12px 16px;min-width:176px;border-radius:10px}.project-float small{margin-top:8px;line-height:1.5}.chart-head{gap:20px}.chart-holder{margin-top:16px}.actions{gap:12px;flex-wrap:wrap}.panel{padding:28px}.story-card{padding:26px}.detail-head h1{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.detail-head h1 .badge{margin:0}nav small{margin-left:6px;min-width:20px;text-align:center;display:inline-block}.hero>div:first-child>.badge{margin-left:14px}@media(max-width:760px){header{gap:12px;padding:0 20px}nav{gap:14px}header .quiet{padding:8px 10px;min-height:36px;white-space:nowrap}.toolbar{gap:14px}.filter-field{flex:1;min-width:0}.search-field{flex-basis:100%}.select-trigger{gap:12px}.panel{padding:22px}.chart-head .seg button{min-width:34px;padding:8px 9px}.seg{gap:2px;padding:4px}.project-float{min-width:160px;padding:10px 12px}.story-card{padding:24px}.actions .btn,.actions .save{min-height:44px}.chips{gap:8px}.detail-head h1{gap:10px}.badge{margin-left:8px}header nav small{margin-left:3px}}@media(max-width:370px){header{padding:0 14px;gap:8px}nav{gap:10px}.brand{font-size:19px}header .quiet{padding:8px;font-size:9px}}

/* Explicit trailing icon slot: shared by every dropdown, including narrow screens. */
.select-trigger{position:relative;padding:11px 52px 11px 16px;min-height:44px}.select-trigger>.icon{position:absolute;right:18px;top:50%;width:18px;height:18px;margin:0;transform:translateY(-50%)}.select-trigger[aria-expanded=true]>.icon{transform:translateY(-50%) rotate(180deg)}.select-menu button{padding-left:14px;padding-right:14px}

/* Primary buttons use white icons in every interaction state. */
.btn.primary .icon{filter:brightness(0) invert(1);opacity:1}

.data-note{font-size:13px;color:var(--muted,#687477);line-height:1.7;margin:0 0 20px;max-width:900px}.detail-section{margin-bottom:24px}.fact-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:24px;margin:24px 0}.fact-grid dt{font-size:13px;color:#687477;margin-bottom:8px}.fact-grid dd{margin:0;overflow-wrap:anywhere}.topic-chips{flex-wrap:wrap}.readme summary{cursor:pointer;padding:16px 0;color:#176e72}.readme pre,.release-body{white-space:pre-wrap;overflow-wrap:anywhere;font:14px/1.8 ui-monospace,monospace;max-height:540px;overflow:auto;padding:20px;background:#f3f5f2;border-radius:12px}.detail-head .actions{flex-wrap:wrap}.detail-head h1{overflow-wrap:anywhere}@media(max-width:760px){.fact-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.readme pre,.release-body{padding:16px;font-size:12px}.detail-head .actions{margin-top:16px}}
.topic-chips .tag{display:inline-block;padding:6px 10px;border-radius:6px;background:var(--pale);color:var(--teal);font-size:12px;line-height:1.4;overflow-wrap:anywhere}
.language-bars{display:grid;gap:16px;margin:24px 0}.language-bars>div{display:grid;grid-template-columns:100px minmax(0,1fr) 56px;gap:16px;align-items:center;font-size:13px}.language-bars>div>span:last-child{text-align:right;color:var(--muted)}.language-track{height:7px;border-radius:8px;background:var(--pale);overflow:hidden}.language-track i{display:block;height:100%;background:var(--teal);border-radius:8px}.commit-list article{padding:16px 0;border-bottom:1px solid var(--line)}.commit-list article:last-child{border:0}.commit-list a{color:var(--teal);line-height:1.7;overflow-wrap:anywhere}.commit-list p{margin:6px 0 0}@media(max-width:600px){.language-bars>div{grid-template-columns:80px minmax(0,1fr) 46px;gap:12px}}

.admin-form,.rule-form{display:grid;gap:16px}.admin-fields{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.admin-form label,.rule-form label{display:grid;gap:8px}.admin-form button,.rule-form button{justify-self:start}.check-label{display:flex!important;align-items:center;gap:10px!important}.check-label input{width:18px;height:18px;flex:0 0 auto;accent-color:var(--accent,#176e72)}.rule-form{border-top:1px solid var(--line,#dce4df);padding:24px 0}.rule-form h3,.rule-form p{margin:0}.row-actions,.admin-pagination,.pagination{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.admin-pagination{margin-top:24px;justify-content:flex-end}.row-actions{min-width:170px}.pagination .btn{min-height:36px}button:disabled{cursor:not-allowed;opacity:.45}#feedback:not(:empty){padding:12px 16px;border-radius:10px;background:#edf4f1;margin-bottom:24px}#rule-list input:not([type=checkbox]){width:100%}@media(max-width:680px){.admin-fields{grid-template-columns:1fr}.admin-pagination{justify-content:flex-start}.list-foot{align-items:flex-start;gap:16px;flex-wrap:wrap}}

/* Detail notes are separate reading groups rather than a stretched text block. */
.growth-observation{align-self:start}.growth-observation .observation-block + .observation-block{margin-top:24px;padding-top:24px;border-top:1px solid var(--line)}.growth-observation .observation-block h2{margin:0 0 16px}.growth-observation .observation-block p{margin:0}.growth-observation .observation-block p + p{margin-top:16px}

.ranking-note{padding:14px 16px;background:var(--pale);border-radius:9px}.ranking-note strong{display:block;font-size:13px;color:var(--teal);font-weight:500}.ranking-note span{display:block;font-size:12px;margin-top:6px}
