/* Kuntaseuranta — clear civic workspace */
:root{--bg:#f3f6f5;--paper:#fff;--ink:#172d2b;--muted:#536762;--line:#dfe7e3;--green:#25634f;--deep:#102e29;--radius:16px}
body{background:var(--bg);font-size:1.0625rem;line-height:1.65;color:var(--ink)}
#sidebar{width:268px;background:#112e29;border:0;padding:28px 16px 20px;color:#ecf4f0;scrollbar-width:thin;scrollbar-color:#49685d #112e29}
.shell{margin-left:268px}.brand{padding:0 8px;gap:12px;margin-bottom:34px}.brandmark{background:#d9edb6;color:#183d30;width:40px;height:44px;border-radius:12px;box-shadow:0 5px 14px #0002}.brandmark span{color:#3e6a48}.brand strong{font-size:1.125rem;color:#fff;letter-spacing:-.6px}.brand .isv{color:#bad3bd;font-size:.625rem;margin-left:5px}.brand small{font-size:.875rem;color:#b2c9be;line-height:1.55;letter-spacing:0}
.workspace-label{font-size:.75rem;letter-spacing:.13em;color:#a8c4b8;padding:0 14px;margin-bottom:16px}
nav{gap:5px}nav a{color:#d0e0d8;padding:11px 14px;border-radius:10px;font-size:1rem;font-weight:500;min-height:46px;transition:background .15s,color .15s}nav a svg{opacity:.85;width:19px;height:19px}nav a:hover{background:#22493c;color:#fff}nav a.active{background:#dceebd;color:#183b2d;font-weight:700;box-shadow:0 3px 8px #0001}nav a.active svg{opacity:1}nav .nav-divider{background:#38544b;margin:12px 13px}nav .count{background:#335747;color:#e1eddf;font-size:.875rem;min-width:24px;text-align:center}nav a.active .count{background:#c2d89e;color:#23442f}
.profile{padding:14px 7px 0;border-top:1px solid #3a554b;gap:10px;margin-top:12px}.profile strong{font-size:.9375rem;color:#fff}.profile small{font-size:.8125rem;color:#b5c9bc}.profile>span:last-child{color:#d2e0d7}.avatar{background:#365440;color:#e9f1df;border-color:#57735b;width:36px;height:36px;font-size:.875rem}.source-status{background:#214033;color:#e4eee5}.source-status p,.source-status strong,.source-status a{color:#d2e2ce}
.topbar{background:#fff;border-bottom:1px solid var(--line);padding:18px 40px;min-height:78px;gap:16px}.breadcrumb{font-size:.9375rem;color:#687d73}.breadcrumb strong{color:#243f36;font-weight:600}.breadcrumb span{color:#a6b7ad;margin:0 10px}.header-actions{gap:16px}.search-trigger{background:#f4f7f4;border:1px solid #e3eae3;border-radius:10px;padding:10px 13px;font-size:.9375rem;color:#526b5c;min-height:44px}.search-trigger kbd{background:#fff;font-size:.75rem;margin-left:18px;color:#5d7263;border-color:#d8e2d7}.iconbutton{min-width:44px;min-height:44px;border-radius:10px}.iconbutton:hover{background:#eef3ed}
main{max-width:1430px;padding:42px 40px 44px;min-height:calc(100vh - 160px)}
.page-top{gap:24px;align-items:flex-start;margin-bottom:30px}.page-top>div:first-child{flex:1 1 430px}.page-top>.buttons{padding-top:20px;gap:10px}.eyebrow{font-size:.8125rem;letter-spacing:.1em;color:#496e5c;font-weight:700;margin-bottom:12px}h1{font-size:clamp(1.875rem,2.5vw,2.5rem);font-weight:750;line-height:1.2;letter-spacing:-1.3px;color:#17372e}h2{font-size:1.375rem;letter-spacing:-.55px}h3{font-size:1.125rem}.subtitle{font-size:1.0625rem;line-height:1.7;color:#536b5e;max-width:70ch;margin-top:14px}
.btn{border-radius:10px;border-color:#d6e1d5;padding:11px 16px;min-height:46px;font-size:.9375rem;font-weight:650;box-shadow:0 1px 2px #12341c04;background:#fff;line-height:1.45}.btn:hover{background:#f0f6ec;border-color:#a3b9a1}.btn.primary{background:#25634f;border-color:#25634f;box-shadow:0 4px 10px #1e5d3620;color:white}.btn.primary:hover{background:#174936}.btn.small{font-size:.9375rem;min-height:42px}.btn.ghost{box-shadow:none;border-color:transparent;color:#245c40}.btn svg{width:17px;height:17px}
.context-bar{border:1px solid var(--line);border-radius:14px;padding:14px 16px;background:#fff;margin-bottom:0;gap:15px;box-shadow:0 2px 5px #21362203}.context-left{gap:12px}.select-wrap{background:#f1f6ef;border:0;border-radius:9px;padding:0 13px}.select-wrap select{min-width:180px;font-size:1rem;padding-top:10px;padding-bottom:10px;color:#20472e}.context-left>select{border:1px solid #dce6d8;border-radius:8px;font-size:1rem}.meta{font-size:.875rem;color:#536b5e;gap:8px}.meta .status-dot{background:#5c893b;width:7px;height:7px}.demo-pill{background:#eef3e8;color:#355337;font-size:.875rem;padding:7px 11px;border-radius:6px;font-weight:600;letter-spacing:0;text-decoration:none}
.source-strip{display:flex;align-items:center;gap:9px;color:#526b5b;font-size:.9375rem;padding:14px 2px 24px;flex-wrap:wrap}.source-strip>svg{width:16px;height:16px;color:#46724d}.source-details{margin-left:auto;position:relative}.source-details>summary{list-style:none;cursor:pointer;font-size:.9375rem;color:#315e3d;padding:5px 0;text-decoration:underline;text-underline-offset:4px}.source-details>summary::-webkit-details-marker{display:none}.source-details>summary::after{content:' ＋';text-decoration:none}.source-details[open]>summary::after{content:' −'}.source-details>div{position:absolute;z-index:10;right:0;top:38px;width:360px;max-width:calc(100vw - 40px);padding:22px;border:1px solid #d5e1cd;border-radius:12px;background:white;box-shadow:0 10px 40px #1936221c;font-size:1rem;line-height:1.8;color:#435e47}.source-details a{display:inline-block;margin-top:12px;color:#245d3c;text-decoration:underline}
.filters{padding:15px;background:#e9efeb;border:1px solid #dde6df;border-radius:13px;margin-bottom:24px;gap:12px;align-items:center}.filters input,.filters select{border-color:#d8e2d7;border-radius:9px;background:#fff;font-size:1rem;min-height:46px}.input-search{flex:1;max-width:390px}.filters select{max-width:250px}.result-count{font-size:.9375rem;color:#405c47;font-weight:600;margin-left:auto;white-space:nowrap}
.panel,.project-card,.kpi{border:1px solid var(--line);border-radius:var(--radius);box-shadow:0 3px 12px #153f2304;background:#fff}.panel-header{padding:24px 24px 18px}.panel-header h2{font-size:1.25rem}.panel-subtitle{color:#536b5e;line-height:1.6;font-size:.9375rem}.panel-link{font-size:.9375rem;color:#315f3d}.panel-bottom{background:#f6f9f3;padding:14px 24px;color:#516948;font-size:.9375rem}.kpis{gap:18px;margin-bottom:26px}.kpi{padding:24px}.kpi-label{font-size:.9375rem;color:#526b5b;font-weight:600}.kpi-foot{font-size:.875rem;color:#56704d}.kpi-main{margin:18px 0 12px}.value{font-size:2.125rem;letter-spacing:-1px;color:#193e2b}.value em{font-size:1rem;color:#58724f}.trend{font-size:.8125rem;border-radius:6px;padding:5px 8px}.trend.bad{color:#854c22;background:#fff0df}.chart-legend{font-size:.9375rem}.dashboard-grid,.activity-grid{gap:24px}.chart{padding-bottom:20px}.chart svg{height:260px}.tabs{padding:0 24px;gap:22px}.tabs button{font-size:.9375rem;padding-bottom:12px}.segmented{background:#e8efe2;border-radius:9px;padding:4px}.segmented button{font-size:.9375rem;padding:8px 13px;border-radius:6px;color:#49603c}.segmented button.active{color:#254a2c}.feed-item{padding:21px 24px}.feed-body h3{font-size:1.0625rem;line-height:1.6}.feed-body p{font-size:.9375rem;color:#536e52}.feed-time{font-size:.875rem;color:#536b55}.tag{font-size:.8125rem;font-weight:600;padding:5px 9px;border-radius:6px;background:#e5f0df;color:#315d2d;line-height:1.5}.tag.gray{background:#edf1e8;color:#4a6042}.tag.blue{color:#315a7a;background:#e9f0f6}.tag.gold{color:#795420;background:#faf0dd}.mini-info strong,.mini-number{font-size:1rem}.mini-info small{font-size:.875rem}.insight{font-size:.9375rem;background:#edf4e6;color:#426033;border-color:#dce8d2}.method-list{padding:26px;gap:24px}.method-list p{font-size:1rem}.empty{padding:48px 26px}.empty h3{font-size:1.25rem}.empty p{max-width:56ch;margin:12px auto;line-height:1.8;color:#526b5b}
.full-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,320px),1fr));gap:24px}.project-card{transition:box-shadow .2s,transform .2s}.project-card:hover{box-shadow:0 10px 30px #284a2510;transform:translateY(-2px)}.project-visual{height:168px;background:linear-gradient(145deg,#e2eee6,#b9d3c2)}.project-visual>svg{opacity:.85}.project-visual>.tag{left:20px;top:20px;background:#fff;color:#2b5142}.project-content{padding:26px}.project-content h3{font-size:1.375rem;line-height:1.5;margin:18px 0 12px;letter-spacing:-.5px}.project-content>p{font-size:1.0625rem;line-height:1.8;min-height:0;max-width:70ch;color:#506657}.project-content .tooltip{font-size:.9375rem;color:#536d59}.project-meta{border-top:1px solid #e1e9dc;padding-top:18px;margin-top:22px;gap:18px;flex-wrap:wrap;font-size:.9375rem;color:#4f6546}.card-action{border-top:1px solid #e1e9dc;margin-top:20px;padding-top:15px;display:flex;justify-content:space-between}.project-content>.panel-subtitle{font-size:.875rem}.full-grid:has(>.project-card:only-child){grid-template-columns:1fr}.full-grid>.project-card:only-child{display:grid;grid-template-columns:minmax(230px,32%) 1fr}.full-grid>.project-card:only-child .project-visual{height:100%;min-height:340px}.full-grid>.project-card:only-child .project-visual>svg{position:absolute;inset:0;width:100%;height:100%}.full-grid>.project-card:only-child .project-content{padding:32px}
table{font-size:1rem}th{background:#eef4e9;color:#365237;line-height:1.6;font-size:.875rem;letter-spacing:.01em;padding:17px 20px}td{padding:22px 20px}td small{font-size:.9375rem;color:#536d57}tbody tr:nth-child(even){background:#f8faf6}tbody tr:hover{background:#f0f6eb}.procurement-table th{font-size:.875rem}.procurement-table td{padding:24px 18px}.procurement-table td:first-child>.btn{font-size:1.0625rem;text-decoration:none}.procurement-table td:first-child>.btn:hover{text-decoration:underline}.buyer-details{font-size:.9375rem;margin-top:12px}.buyer-details summary{color:#4b694c;text-decoration:none}.buyer-details summary:hover{text-decoration:underline}.amount{font-weight:650;color:#244c32}.follow-toggle{border-radius:10px}.coverage-note{background:transparent;border:1px solid #dbe5d7;border-radius:12px;margin-top:20px;font-size:.9375rem;color:#4c654b}.coverage-note summary{cursor:pointer;padding:17px 20px;font-weight:650;color:#365d38}.coverage-note>div{border-top:1px solid #dbe5d7;padding:20px;line-height:1.85;max-width:88ch}.notice{background:#f5f7f0;border-color:#dfe5d5;border-radius:12px;font-size:1rem}
.map.large{height:580px;border-radius:14px;border:1px solid #d8e3d4}.map{border-radius:0 0 14px 14px}.map-side{border-radius:14px}.map-side h2{font-size:1.25rem;padding:24px 24px 12px}.map-side .panel-subtitle{padding-left:24px!important}.map-badge{background:#fff;border:1px solid #d5e0cd;border-radius:7px;padding:8px 12px;font-size:.875rem;color:#345333;box-shadow:0 2px 8px #1e3c2110}.map-legend{font-size:.9375rem;color:#45633f;padding:16px 4px;gap:20px}.map-coverage,.map-coverage-note{font-size:.9375rem;color:#526d50;line-height:1.7;padding:0 4px}.ks-city-label{background:#163e31!important;color:#fff!important;border:0!important;border-radius:6px!important;padding:6px 10px!important;box-shadow:0 3px 10px #0a302525!important;font:600 .875rem 'DM Sans',sans-serif!important;letter-spacing:.01em}.leaflet-tooltip-top.ks-city-label::before{border-top-color:#163e31!important}.leaflet-control-attribution{font-size:.6875rem!important}.map-layout{grid-template-columns:minmax(0,1fr) 320px;gap:22px}
.support-teaser{background:#183d30;border:0;border-radius:16px;padding:28px 32px;margin:8px 40px 32px;gap:30px;align-items:center}.support-teaser h2{color:#f5f9ef;font-size:1.25rem;line-height:1.5}.support-teaser p{font-size:1rem;color:#d2e2c7;max-width:78ch;line-height:1.8;margin-top:9px}.support-teaser .btn{background:#dbeeb8;border-color:#dbeeb8;color:#24452c;flex-shrink:0}.support-teaser .btn:hover{background:#edf6d8}footer{border-top:1px solid #dfe7d9;background:transparent;font-size:.875rem;color:#526b4d;padding:26px 40px 34px;gap:18px}.legal-footer-links{padding-top:15px}.legal-footer-links a{font-size:.875rem;color:#436640}.legal-menu{gap:9px}.legal-menu a{font-size:.9375rem;border-radius:9px}.legal-document{padding:36px;font-size:1.0625rem;max-width:84ch;line-height:1.85}.legal-document h2{font-size:1.375rem;margin-top:30px}.legal-document a{color:#245d3d}.legal-notice{border-radius:9px;padding:18px;line-height:1.8}.legal-contact{background:#eff5e9;border-radius:12px}
.ad-intro{background:linear-gradient(120deg,#173c30,#2b5840);border:0;border-radius:18px;padding:38px;color:#fff}.ad-intro .eyebrow{color:#d1e7b7}.ad-intro h2{font-size:2rem;line-height:1.3;color:#fff}.ad-intro p{font-size:1.0625rem;line-height:1.8;color:#e2ecdb}.ad-duration{border-color:#648061}.ad-duration strong{color:#dcedba}.ad-duration span,.ad-duration small{color:#e4efd8}.ad-process{gap:25px;padding:26px 0;font-size:.9375rem}.ad-process b{display:inline-grid;place-items:center;width:30px;height:30px;background:#e1ecd4;border-radius:50%;font-size:.8125rem;color:#355d32}.ad-section-head h2{font-size:1.5rem}.ad-section-head p,.ad-small{font-size:.9375rem;line-height:1.8;color:#536d4f}.ad-prices{grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.ad-price{border-radius:12px;padding:22px;border-color:#dce6d5}.ad-price.selected{padding:21px;background:#eaf4df;border-color:#3a6a35;box-shadow:0 4px 16px #29451c0c}.ad-price strong{font-size:2.25rem;color:#1e492c}.ad-price>span:not(.ad-size-swatch),.ad-price>small{font-size:.875rem}.ad-price .ad-size-number{font-size:.8125rem!important;letter-spacing:.06em}.ad-composer .panel{padding:28px}.ad-composer .field{font-size:.9375rem;font-weight:600}.ad-composer input,.ad-composer textarea{font-size:1rem;background:#fbfcf8;border-radius:9px;padding:13px}.ad-preview-canvas{border-radius:12px;background:#edf3e7;border-color:#cbdcbb}.community-ad{border-radius:10px;box-shadow:0 5px 18px #243b1610}.ad-meta{font-size:.75rem;color:#4b6540}.ad-board-empty{padding:40px;background:#f3f7ee;border-radius:12px}.ad-board-empty p{font-size:1rem}.ad-how h2{font-size:1.375rem}.ad-how p{font-size:1rem}
.support-nudge{border-radius:14px;background:#fff;border-color:#cfdec3;box-shadow:0 10px 45px #14351e20}.support-nudge strong{color:#264b30}.support-nudge p{color:#4d6847}.support-nudge>a{color:#285d34;font-weight:700}.support-nudge-close{color:#405d3a}
@media(min-width:1700px){main{padding-top:50px}.page-top{margin-bottom:36px}.full-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:1200px){#sidebar{width:250px}.shell{margin-left:250px}.topbar{padding:16px 28px}main{padding:34px 28px}.search-trigger span{display:none}.page-top>.buttons{padding-top:0}.full-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.map-layout{grid-template-columns:minmax(0,1fr) 280px}.support-teaser{margin-left:28px;margin-right:28px;padding:26px}.ad-prices{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media(max-width:1000px){.context-left{width:auto}.context-bar .meta{display:none}.map-layout{grid-template-columns:1fr}.page-top>div:first-child{flex-basis:100%}.page-top>.buttons{margin-left:0}.full-grid>.project-card:only-child{grid-template-columns:minmax(180px,30%) 1fr}.ad-prices{grid-template-columns:repeat(2,minmax(0,1fr))}.support-teaser{flex-direction:column;align-items:flex-start}.full-grid{grid-template-columns:1fr}.ad-intro{gap:24px}}
@media(max-width:700px){#sidebar{width:min(300px,90vw);padding-top:24px}.shell{margin-left:0}.topbar{padding:12px 18px;min-height:70px;gap:9px}.breadcrumb{font-size:.875rem}.header-actions{gap:3px}.search-trigger{background:none;border:0;padding:8px;min-width:42px}.search-trigger kbd{display:none}main{padding:30px 20px}.page-top{gap:20px;margin-bottom:24px}h1{font-size:2rem;letter-spacing:-.8px}.subtitle{font-size:1.0625rem}.eyebrow{font-size:.75rem}.page-top .buttons{width:100%}.page-top .buttons .btn{flex:1}.context-bar{padding:12px}.context-left{width:100%;gap:10px}.select-wrap{flex:1;min-width:0}.select-wrap select{min-width:0;width:100%;font-size:1rem}.demo-pill{font-size:.8125rem;background:none;padding:4px 0}.source-strip{padding:13px 2px 23px;font-size:.875rem;gap:8px}.source-details{margin-left:0}.source-details>summary{font-size:.875rem}.source-details>div{left:-2px;right:auto;width:calc(100vw - 44px)}.filters{padding:12px;gap:10px}.filters input,.filters select{width:100%;max-width:none;font-size:1rem}.filters>*{flex:1 1 135px}.filters .input-search{flex-basis:100%;max-width:none}.result-count{flex-basis:100%;text-align:left;padding:2px 0}.kpis{grid-template-columns:1fr;gap:14px}.kpi{padding:23px}.value{font-size:2.25rem}.dashboard-grid,.activity-grid{gap:20px}.panel-header{padding:22px 20px 18px}.feed-item{padding:20px}.feed-time{margin-left:0}.full-grid{gap:20px}.project-content{padding:24px}.project-content h3{font-size:1.375rem}.full-grid>.project-card:only-child{display:block}.full-grid>.project-card:only-child .project-visual{height:180px;min-height:0}.full-grid>.project-card:only-child .project-content{padding:24px}.project-visual{height:170px}.project-meta{display:flex;flex-direction:column;gap:8px}.project-content>.panel-subtitle{font-size:.875rem}.map.large{height:430px}.map-badge{font-size:.8125rem;max-width:calc(100% - 65px)}.map-side h2{padding:22px 20px 10px}.procurement-table td{padding:0}.procurement-table tbody tr{padding:24px 20px;gap:15px;border-color:#e0e8db}.procurement-table td::before{font-size:.8125rem;color:#506d46}.procurement-table td:first-child>.btn{font-size:1.125rem}.coverage-note summary{padding:16px 18px}.coverage-note>div{padding:18px;font-size:1rem}.support-teaser{margin:0 20px 26px;padding:26px;gap:20px}.support-teaser p{font-size:1rem}.support-teaser .btn{width:100%}footer{padding:22px 20px 32px;font-size:.875rem}.legal-document{padding:25px 22px;font-size:1.0625rem}.legal-menu{gap:8px}.legal-menu a{font-size:.875rem}.ad-intro{padding:28px;grid-template-columns:1fr;gap:24px}.ad-intro h2{font-size:1.75rem}.ad-duration{border-top:1px solid #668362;border-left:0;padding-top:22px}.ad-duration strong{font-size:4rem}.ad-process{gap:15px;font-size:.875rem}.ad-prices{gap:10px}.ad-price{padding:16px}.ad-price.selected{padding:15px}.ad-price strong{font-size:2rem}.ad-price>span:not(.ad-size-swatch),.ad-price>small{font-size:.875rem}.ad-composer .panel{padding:22px}.ad-composer .btn{width:100%}.ad-section-head h2{font-size:1.375rem}.ad-preview-canvas{padding:12px}.support-nudge{width:340px}.btn{font-size:.9375rem}.brand small{font-size:.875rem}.source-status{display:none}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}

.full-grid>.empty{grid-column:1/-1;background:#fff;border:1px dashed #cdddc5;border-radius:16px;padding:54px 30px}
.support-nudge strong{padding-right:35px}
@media(max-width:700px){.filters>.segmented{flex:1 1 100%;display:flex;gap:5px}.filters>.segmented button{flex:1;white-space:normal;padding:10px 8px}.source-strip>span{flex:1 1 auto}}

#modal{border:1px solid #d7e3d0;border-radius:18px;box-shadow:0 20px 90px #102f2833;background:#fff;padding:32px}
#drawer{background:#fff;border-left:1px solid #d7e3d0;box-shadow:-15px 0 60px #153d281a}
#modal input,#modal select,#modal textarea,#drawer input,#drawer textarea{border-radius:9px;border-color:#cdddc5;font-size:1rem;min-height:46px;background:#fbfdf8}
.close{border-radius:10px;min-width:44px;min-height:44px;color:#335638}.close:hover{background:#edf4e6}
@media(max-width:700px){#modal{padding:26px 22px;border-radius:15px}}
