/* RakennusPro – uusi ilme (haara uusi-ilme). Kaikki säännöt .rp-app-luokan alla; muuttujat --rp-*.
   Pohja: ohjelma-esimerkki/index.html. Body saa luokan rp-app, joten nykyinen DOM ja tunnisteet säilyvät. */
.rp-app{--rp-ok:var(--rp-onnistuminen);--rp-r-sm:8px;--rp-r:12px;--rp-r-lg:16px;--rp-font:Inter,"Noto Sans","Liberation Sans",system-ui,sans-serif;--rp-side:232px;
  background:var(--rp-tausta);color:var(--rp-teksti);font-family:var(--rp-font);padding-left:var(--rp-side)}
.rp-app.is-gate,.rp-app.is-span-view,.rp-app.is-print-job{padding-left:0}
.rp-app.is-gate .module-nav{display:none}

/* Sivupalkki: nykyinen #module-nav kiinnitetään vasempaan reunaan */
.rp-app .module-nav{position:fixed;left:0;top:0;bottom:0;width:var(--rp-side);z-index:40;display:flex;flex-direction:column;flex-wrap:nowrap;align-items:stretch;gap:14px;padding:18px 12px;background:var(--rp-pinta);color:var(--rp-teksti);border:0;border-right:1px solid var(--rp-reuna);overflow-y:auto}
.rp-app .rp-logo{font-weight:800;font-size:18px;letter-spacing:-.02em;padding:4px 10px 6px;display:flex;align-items:center;gap:8px;color:var(--rp-teksti)}
.rp-app .rp-logo i{width:28px;height:28px;border-radius:8px;background:var(--rp-vari);display:grid;place-items:center;font-style:normal;font-size:13px;color:var(--rp-paalle)}
.rp-app .module-nav-section{gap:2px}
.rp-app .module-nav-section[data-nav-section="perusta"]:not([hidden]){order:2;padding:12px 0 0;margin:0;border:0;border-top:1px solid var(--rp-reuna)}
.rp-app .module-nav-heading{color:var(--rp-himmea);opacity:1;padding:0 10px 4px}
.rp-app .module-nav-items{flex-direction:column;align-items:stretch;flex-wrap:nowrap;gap:2px}
.rp-app .module-nav button,.rp-app .module-nav a{display:flex;align-items:center;gap:10px;width:100%;text-align:left;padding:8px 10px;border-radius:var(--rp-sade-sm);border:0;background:transparent;color:var(--rp-teksti);opacity:1;font-weight:500}
.rp-app .module-nav button[hidden]{display:none}
.rp-app .module-nav button::before{content:"";width:18px;height:18px;flex:none;background:currentColor;-webkit-mask:no-repeat center/contain;mask:no-repeat center/contain}
.rp-app .module-nav button:hover,.rp-app .module-nav a:hover{background:var(--rp-n-100);color:var(--rp-teksti)}
.rp-app .module-nav button[aria-current="page"],.rp-app .module-nav button[aria-current="page"]:hover{background:var(--rp-vari-pehmea);color:var(--rp-vari-teksti);box-shadow:none}
.rp-app .module-nav .rp-nav-count{margin-left:auto;font-size:11px;font-weight:600;background:var(--rp-n-100);color:var(--rp-teksti);padding:1px 8px;border-radius:10px}
.rp-app .module-nav .rp-menu-btn{display:none}
.rp-app .module-nav :focus-visible{outline-color:var(--rp-vari)}

/* Yläpalkki */
.rp-app .top{background:var(--rp-pinta);color:var(--rp-teksti);border-bottom:1px solid var(--rp-reuna);padding:0 24px;gap:12px;flex-wrap:nowrap;align-items:center;width:100%;max-width:100%;min-width:0;min-height:56px}
.rp-app .top :focus-visible{outline-color:var(--rp-vari-teksti)}
.rp-app .brand{display:none}
.rp-app .top-group{border-left:0;padding:0}
.rp-app .top-info{display:flex;align-items:center;flex-wrap:nowrap;gap:12px;flex:1 1 auto;min-width:0;max-width:100%}
.rp-app .rp-site-wrap{display:flex;align-items:center;gap:8px;min-width:0;max-width:320px;height:36px;padding:0 8px 0 12px;border:1px solid var(--rp-reuna);border-radius:var(--rp-sade-sm);background:var(--rp-pinta)}
.rp-app .rp-site-wrap .rp-site{border:0;background:transparent;padding:0;max-width:none;height:34px}
.rp-app .rp-site-dot{width:8px;height:8px;border-radius:50%;background:var(--rp-onnistuminen);flex:none}
.rp-app .rp-site-dot.is-suunnittelu{background:var(--rp-varoitus)}
.rp-app .rp-site-dot.is-luovutettu{background:var(--rp-himmea)}
.rp-app .license-flag{max-width:12rem;overflow:hidden;text-overflow:ellipsis;font-size:11px;color:var(--rp-varoitus);background:var(--rp-varoitus-tausta);border-color:var(--rp-reuna)}
.rp-app .rp-user-menu{position:relative;flex:none;margin-left:auto}
.rp-app .rp-user-btn{display:flex;align-items:center;gap:8px;border:0;border-left:1px solid var(--rp-reuna);background:transparent;color:inherit;padding:4px 0 4px 12px;cursor:pointer;min-width:44px;min-height:44px}
.rp-app .rp-user-role{font-size:11px;color:var(--rp-himmea);line-height:1.2;max-width:12rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rp-app .rp-user-panel{position:absolute;right:0;top:calc(100% + 8px);z-index:60;min-width:240px;max-width:min(320px,100vw);background:var(--rp-pinta);color:var(--rp-teksti);border:1px solid var(--rp-reuna);border-radius:var(--rp-sade);box-shadow:var(--rp-varjo-lg);padding:8px;display:flex;flex-direction:column;align-items:stretch;gap:4px}
.rp-app .rp-user-panel .btn,.rp-app .rp-user-panel select{min-height:44px}
.rp-app .rp-user-panel[hidden]{display:none !important}
.rp-app .rp-user-panel .btn,.rp-app .rp-user-panel .rp-teema-valinta,.rp-app .rp-user-panel .role-pick{width:100%;justify-content:flex-start}
.rp-app .top-actions{display:flex;flex-direction:column;align-items:stretch;gap:4px;flex:none;max-width:none;margin:0}
.rp-app .top-actions .btn{padding:5px 9px;font-size:13px;width:100%}
.rp-app .role-pick{flex-direction:row;align-items:center;gap:6px;min-width:0;line-height:1.2}
.rp-app .role-pick select{max-width:10rem;min-width:0}
.rp-app .top-project{display:none}
.rp-app .rp-site{font:inherit;font-weight:600;border:1px solid var(--rp-reuna);border-radius:var(--rp-r-sm);background:var(--rp-kentta);padding:7px 10px;max-width:320px;color:var(--rp-teksti)}
.rp-app .rp-search-wrap{position:relative;display:flex;flex:1;max-width:420px;min-width:0}
.rp-app .rp-search{flex:1;max-width:420px;font:inherit;border:1px solid var(--rp-reuna);border-radius:var(--rp-r-sm);background:var(--rp-kentta);padding:7px 10px;color:var(--rp-teksti)}
.rp-app .rp-search-wrap .rp-search{max-width:none;width:100%;padding-right:58px}
.rp-app .rp-kbd{position:absolute;right:8px;top:50%;transform:translateY(-50%);border:1px solid var(--rp-reuna);border-radius:4px;padding:1px 5px;color:var(--rp-himmea);font:600 11px var(--rp-fontti);pointer-events:none}
.rp-app .rp-bell-wrap{position:relative;flex:none}
.rp-app .rp-bell{display:grid;place-items:center;width:44px;height:44px;border:0;background:transparent;color:var(--rp-teksti);cursor:pointer;position:relative;padding:0}
.rp-app .rp-bell svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.rp-app .rp-bell-count{position:absolute;top:2px;right:0;min-width:16px;height:16px;padding:0 4px;border-radius:999px;background:var(--rp-vaara);color:var(--rp-n-0);font-size:10px;font-weight:700;display:inline-flex;align-items:center;justify-content:center}
.rp-app .rp-bell-count[hidden],.rp-app .rp-bell-panel[hidden]{display:none}
.rp-app .rp-bell-panel{position:absolute;top:44px;right:0;width:min(360px,80vw);max-height:70vh;overflow:auto;background:var(--rp-pinta);color:var(--rp-teksti);border:1px solid var(--rp-reuna);border-radius:12px;box-shadow:var(--rp-varjo-lg);padding:8px 12px;z-index:30}
.rp-app .rp-search-open{display:none}
.rp-app .rp-user{margin-left:auto;display:flex;align-items:center;gap:8px;font-weight:500;min-width:0;max-width:100%}
.rp-app .rp-user-meta{display:flex;flex-direction:column;align-items:flex-start;gap:2px;min-width:0;max-width:16rem}
.rp-app .rp-avatar{flex:none;width:32px;height:32px;border-radius:999px;background:var(--rp-n-100);border:1px solid var(--rp-reuna);display:grid;place-items:center;font-weight:700;color:var(--rp-vari-teksti);font-size:12px}
.rp-app .whoami{color:var(--rp-teksti);font-weight:600;font-size:13px;line-height:1.2;max-width:12rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rp-app .whoami:not([hidden]){display:block}
.rp-app .top .btn.ghost{color:var(--rp-teksti);border-color:var(--rp-reuna);background:transparent}
.rp-app .top .btn.ghost:hover{background:var(--rp-n-100)}
.rp-app .role-pick{color:var(--rp-himmea)}
.rp-app .product-nav a{color:var(--rp-vari-teksti)}

/* Näkymät kortteina */
.rp-app .module-view{padding:24px}
.rp-app .module-page{max-width:1280px}
.rp-app .module-page h1{font-size:24px;letter-spacing:-.03em}
.rp-app .site-card,.rp-app .card{border-radius:var(--rp-r-lg);border-color:var(--rp-reuna);background:var(--rp-pinta);box-shadow:var(--rp-varjo)}

/* Kohteen etusivu */
.rp-app .rp-dash{display:grid;gap:20px;margin:0 0 28px}
.rp-app .rp-head{display:flex;justify-content:space-between;align-items:flex-end;gap:12px;flex-wrap:wrap}
.rp-app .rp-head h1{margin:0}
.rp-app .rp-sub{color:var(--rp-himmea);margin:2px 0 0}
.rp-app .rp-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;align-items:stretch}
.rp-app .rp-head-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.rp-app .rp-kpi-hit{display:flex;width:100%;min-width:0;padding:0;border:0;background:transparent;color:inherit;font:inherit;text-align:left;cursor:pointer}
.rp-app .rp-kpi-hit>.rpk{flex:1;min-width:0}
.rp-app .rp-kpi-hit:focus-visible{outline:2px solid var(--rp-vari);outline-offset:2px}
.rp-app .rp-dash-split{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.rp-app .rpk-kortti-ots .rp-more{border:0;background:none;color:var(--rp-vari);font:600 12px inherit;cursor:pointer;padding:0}
.rp-app .module-nav button{position:relative}
.rp-app .module-nav button[data-paketti]{color:var(--rp-himmea)}
.rp-app .module-nav button[data-paketti]{min-width:0;flex-wrap:wrap;row-gap:2px}
.rp-app .module-nav button[data-paketti]::after{content:attr(data-paketti);flex:0 0 auto;margin-left:auto;font-size:10px;font-weight:600;padding:1px 6px;border-radius:var(--rp-sade-pilleri);background:var(--rp-varoitus-tausta);color:var(--rp-teksti);white-space:nowrap}
.rp-app .rp-nav-badge{margin-left:auto;min-width:1.1rem;height:1.1rem;padding:0 4px;border-radius:999px;background:var(--rp-vaara);color:var(--rp-n-0);font-size:10px;font-weight:700;display:inline-flex;align-items:center;justify-content:center}
.rp-app .rp-card{background:var(--rp-pinta);color:var(--rp-teksti);border:1px solid var(--rp-reuna);border-radius:var(--rp-sade-lg);padding:16px;box-shadow:var(--rp-varjo);min-width:0}
.rp-app .rp-card h2{margin:0 0 12px;font-size:15px}
.rp-app .rp-kpi small{color:var(--rp-himmea);font-weight:500;font-size:13px}
.rp-app .rp-kpi b{display:block;font-size:26px;letter-spacing:-.03em;margin:4px 0 8px}
.rp-app .rp-kpi b.is-none{color:var(--rp-himmea);font-size:18px;font-weight:600}
.rp-app button.rp-kpi{font:inherit;text-align:left;cursor:pointer;color:inherit}
.rp-app button.rp-kpi:hover{border-color:var(--rp-vari-vahva)}
.rp-app .rp-note{font-size:12px;color:var(--rp-himmea);margin-top:6px}
.rp-app .rp-tag{border-radius:999px;padding:2px 8px;font-size:12px;font-weight:600;white-space:nowrap}
.rp-app .rp-tag.ok{background:var(--rp-onnistuminen-tausta);color:var(--rp-ok)}.rp-app .rp-tag.warn{background:var(--rp-varoitus-tausta);color:var(--rp-varoitus)}.rp-app .rp-tag.bad{background:var(--rp-vaara-tausta);color:var(--rp-vaara)}.rp-app .rp-tag.idle{background:var(--rp-n-100);color:var(--rp-himmea)}
.rp-app .rp-empty{color:var(--rp-himmea);margin:0}
.rp-app .rp-more{font:inherit;border:0;background:none;color:var(--rp-vari-teksti);font-weight:600;cursor:pointer;padding:6px 0 0}

@media (max-width:1000px){.rp-app .rp-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.rp-app .rp-dash-split{grid-template-columns:1fr}}
@media (max-width:760px){
  .rp-app{padding-left:0;padding-bottom:64px;overflow-x:clip}
  html:has(body.rp-app){overflow-x:clip}
  .rp-app .module-nav{top:auto;bottom:0;right:0;width:auto;height:auto;flex-direction:row;padding:4px;gap:0;overflow:visible}
  .rp-app .rp-logo,.rp-app .module-nav-heading,.rp-app .module-nav-section[data-nav-section="perusta"]{display:none}
  .rp-app .module-nav-section:not([hidden]){display:contents}
  .rp-app .module-nav-items{display:contents}
  .rp-app .module-nav button.rp-more-search{display:none}
  .rp-app .module-nav button{flex:1 1 0;flex-direction:column;align-items:center;gap:2px;font-size:10px;line-height:1.1;padding:4px 2px;text-align:center;justify-content:center;min-width:0;height:56px;white-space:nowrap;overflow:hidden}
  .rp-app .module-nav button::before{flex:0 0 16px;width:16px;height:16px}
  .rp-app .module-nav .rp-nav-badge{display:none}
  .rp-app .module-nav button[data-paketti]::after{content:"Lukittu";margin:0;padding:0 4px}
  .rp-app.rp-nav-open .module-nav .rp-nav-badge{display:inline-flex}
  .rp-app .module-nav-items button:not(.rp-m){display:none}
  .rp-app .module-nav .rp-menu-btn{display:flex;flex:0 0 18%}
  .rp-app .module-nav button[aria-current="page"]{box-shadow:inset 0 3px 0 var(--rp-vari)}
  /* Valikko auki: kaikki näkymät arkkina alareunan päällä */
  .rp-app.rp-nav-open .module-nav{flex-direction:column;align-items:stretch;max-height:80vh;overflow-y:auto;padding:12px;box-shadow:0 -8px 24px color-mix(in srgb,var(--rp-teksti) 25%,transparent)}
  .rp-app.rp-nav-open .module-nav-section:not([hidden]){display:flex}
  .rp-app.rp-nav-open .module-nav-items{display:grid}
  .rp-app.rp-nav-open .module-nav button.rp-more-search{display:flex}
  .rp-app.rp-nav-open .module-nav-section[data-nav-section="perusta"]:not([hidden]){display:flex;order:0;border:0;padding:0 0 8px}
  .rp-app.rp-nav-open .module-nav-heading{display:block}
  .rp-app.rp-nav-open .module-nav-items{display:grid;grid-template-columns:repeat(3,1fr);gap:4px}
  .rp-app.rp-nav-open .module-nav-items button:not([hidden]){display:flex;font-size:11px;padding:8px 2px}
  .rp-app.rp-nav-open .module-nav .rp-menu-btn{align-self:flex-end;flex:none;width:auto;flex-direction:row;font-size:12px;padding:8px 12px;order:3}
  .rp-app .top{flex-wrap:nowrap;align-items:center;height:52px;min-height:52px;padding:8px 12px;gap:8px}
  .rp-app .top-info{flex:1 1 auto;flex-wrap:nowrap;max-width:none;min-width:0;gap:8px}
  .rp-app .rp-site-wrap{flex:1 1 auto;max-width:none;min-width:0;width:auto}
  .rp-app .rp-site{width:100%;max-width:none}
  .rp-app .license-flag,.rp-app .rp-user-meta{display:none}
  .rp-app .rp-kbd{display:none}
  .rp-app .rp-search-wrap{flex:0 0 auto;max-width:none;display:contents}
  .rp-app .rp-search-open{display:grid;place-items:center;width:44px;height:44px;flex:none;border:1px solid var(--rp-reuna);border-radius:8px;background:var(--rp-pinta);color:var(--rp-teksti);padding:0;cursor:pointer}
  .rp-app .rp-search-open::before{content:"";width:18px;height:18px;background:currentColor;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22black%22 stroke-width=%222%22%3E%3Ccircle cx=%2211%22 cy=%2211%22 r=%227%22/%3E%3Cpath d=%22M20 20l-3.5-3.5%22/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22black%22 stroke-width=%222%22%3E%3Ccircle cx=%2211%22 cy=%2211%22 r=%227%22/%3E%3Cpath d=%22M20 20l-3.5-3.5%22/%3E%3C/svg%3E") center/contain no-repeat}
  .rp-app .rp-search-wrap .rp-search{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}
  .rp-app .top.is-search .rp-search-wrap .rp-search{position:static;width:auto;height:36px;flex:1 1 auto;margin:0;clip:auto;overflow:visible;padding:7px 10px}
  .rp-app .top.is-search .rp-site-wrap,.rp-app .top.is-search .rp-search-open{display:none}
  .rp-app .rp-user-menu{margin-left:0}
  .rp-app .rp-user-btn{border-left:0;padding-left:0}
  .rp-app .rp-user-panel{right:0;left:auto}
  .rp-app .module-view{padding:14px;overflow-x:clip;max-width:100%}
  .rp-app .site-summary-board,.rp-app .board{max-width:100%;overflow-x:auto}
  .rp-app .legend{flex-wrap:wrap}
  .rp-app .chart-dock,.rp-app .hintbar{max-width:100vw}
  .rp-app .rp-head{flex-direction:column;align-items:stretch}
  .rp-app .rp-head .rp-uusi-kohde-rivi,.rp-app .rp-head .rp-uusi-kohde{width:100%}
  .rp-app .rp-head-actions{width:100%}
  .rp-app .rp-head-actions .rp-ds-btn{flex:1;justify-content:center}
  .rp-app .rp-dash{gap:14px}
  .rp-app .rp-kpis{grid-template-columns:repeat(2,1fr);gap:10px}
  .rp-app .rp-kpi b{font-size:21px}
  .rp-app .toast{bottom:76px}
}
.rp-app .module-nav [data-screen="kohteet"]::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22black%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Cpath d=%22M3 11l9-7 9 7v9H3z%22/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22black%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Cpath d=%22M3 11l9-7 9 7v9H3z%22/%3E%3C/svg%3E")}
.rp-app .module-nav [data-screen="aikataulu"]::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22black%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Crect x=%223%22 y=%225%22 width=%2218%22 height=%2216%22 rx=%222%22/%3E%3Cpath d=%22M3 10h18M8 3v4M16 3v4%22/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22black%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Crect x=%223%22 y=%225%22 width=%2218%22 height=%2216%22 rx=%222%22/%3E%3Cpath d=%22M3 10h18M8 3v4M16 3v4%22/%3E%3C/svg%3E")}
.rp-app .module-nav [data-screen="resurssit"]::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22black%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Ccircle cx=%229%22 cy=%228%22 r=%223%22/%3E%3Cpath d=%22M3 20c0-3.3 2.7-6 6-6s6 2.7 6 6M16 11a3 3 0 100-6M18 20c0-2.5-1-4.5-3-5.5%22/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22black%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Ccircle cx=%229%22 cy=%228%22 r=%223%22/%3E%3Cpath d=%22M3 20c0-3.3 2.7-6 6-6s6 2.7 6 6M16 11a3 3 0 100-6M18 20c0-2.5-1-4.5-3-5.5%22/%3E%3C/svg%3E")}
.rp-app .module-nav [data-screen="paivakirja"]::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22black%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Cpath d=%22M5 3h12a2 2 0 012 2v16H7a2 2 0 01-2-2z%22/%3E%3Cpath d=%22M9 8h6M9 12h6%22/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22black%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Cpath d=%22M5 3h12a2 2 0 012 2v16H7a2 2 0 01-2-2z%22/%3E%3Cpath d=%22M9 8h6M9 12h6%22/%3E%3C/svg%3E")}
.rp-app .module-nav [data-screen="dokumentit"]::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22black%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Cpath d=%22M6 2h9l5 5v15H6z%22/%3E%3Cpath d=%22M14 2v6h6%22/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22black%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Cpath d=%22M6 2h9l5 5v15H6z%22/%3E%3Cpath d=%22M14 2v6h6%22/%3E%3C/svg%3E")}
.rp-app .module-nav [data-screen="turvallisuus"]::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22black%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Cpath d=%22M12 3l8 4v5c0 5-3.5 8-8 9-4.5-1-8-4-8-9V7z%22/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22black%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Cpath d=%22M12 3l8 4v5c0 5-3.5 8-8 9-4.5-1-8-4-8-9V7z%22/%3E%3C/svg%3E")}
.rp-app .module-nav [data-screen="tunnit"]::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22black%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Ccircle cx=%2212%22 cy=%2212%22 r=%229%22/%3E%3Cpath d=%22M12 7v5l3 2%22/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22black%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Ccircle cx=%2212%22 cy=%2212%22 r=%229%22/%3E%3Cpath d=%22M12 7v5l3 2%22/%3E%3C/svg%3E")}
.rp-app .module-nav [data-screen="budjetti"]::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22black%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Cpath d=%22M12 2v20M17 6H9.5a3.5 3.5 0 000 7h5a3.5 3.5 0 010 7H6%22/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22black%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Cpath d=%22M12 2v20M17 6H9.5a3.5 3.5 0 000 7h5a3.5 3.5 0 010 7H6%22/%3E%3C/svg%3E")}
.rp-app .module-nav [data-screen="ostot"]::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22black%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Cpath d=%22M3 4h2l2.5 11h11L21 7H6.5%22/%3E%3Ccircle cx=%229%22 cy=%2219%22 r=%221.5%22/%3E%3Ccircle cx=%2218%22 cy=%2219%22 r=%221.5%22/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22black%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Cpath d=%22M3 4h2l2.5 11h11L21 7H6.5%22/%3E%3Ccircle cx=%229%22 cy=%2219%22 r=%221.5%22/%3E%3Ccircle cx=%2218%22 cy=%2219%22 r=%221.5%22/%3E%3C/svg%3E")}
.rp-app .module-nav [data-screen="maksuerat"]::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22black%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Crect x=%222%22 y=%226%22 width=%2220%22 height=%2213%22 rx=%222%22/%3E%3Cpath d=%22M2 10h20M6 15h4%22/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22black%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Crect x=%222%22 y=%226%22 width=%2220%22 height=%2213%22 rx=%222%22/%3E%3Cpath d=%22M2 10h20M6 15h4%22/%3E%3C/svg%3E")}
.rp-app .module-nav [data-screen="raportit"]::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22black%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Cpath d=%22M4 20V10M10 20V4M16 20v-7M22 20H2%22/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22black%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Cpath d=%22M4 20V10M10 20V4M16 20v-7M22 20H2%22/%3E%3C/svg%3E")}
.rp-app .module-nav [data-screen="ohje"]::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22black%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Ccircle cx=%2212%22 cy=%2212%22 r=%229%22/%3E%3Cpath d=%22M9.5 9a2.5 2.5 0 015 .5c0 2-2.5 2-2.5 4M12 17h.01%22/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22black%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Ccircle cx=%2212%22 cy=%2212%22 r=%229%22/%3E%3Cpath d=%22M9.5 9a2.5 2.5 0 015 .5c0 2-2.5 2-2.5 4M12 17h.01%22/%3E%3C/svg%3E")}
.rp-app .module-nav [data-screen="kustannuslaskenta"]::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22black%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Crect x=%225%22 y=%222%22 width=%2214%22 height=%2220%22 rx=%222%22/%3E%3Cpath d=%22M8 6h8M8 11h2M14 11h2M8 15h2M14 15h2M8 19h2M14 19h2%22/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22black%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Crect x=%225%22 y=%222%22 width=%2214%22 height=%2220%22 rx=%222%22/%3E%3Cpath d=%22M8 6h8M8 11h2M14 11h2M8 15h2M14 15h2M8 19h2M14 19h2%22/%3E%3C/svg%3E")}
.rp-app .module-nav [data-screen="maaralaskenta"]::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22black%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Cpath d=%22M3 21L21 3M7 21l-4-4M11 17l-2-2M15 13l-2-2M19 9l-2-2M21 3l-4 4%22/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22black%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Cpath d=%22M3 21L21 3M7 21l-4-4M11 17l-2-2M15 13l-2-2M19 9l-2-2M21 3l-4 4%22/%3E%3C/svg%3E")}
.rp-app .module-nav .rp-menu-btn::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22black%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Cpath d=%22M4 6h16M4 12h16M4 18h16%22/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22black%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Cpath d=%22M4 6h16M4 12h16M4 18h16%22/%3E%3C/svg%3E")}
.rp-app .module-nav [data-screen="muutostyot"]::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22black%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Cpath d=%22M4 7h11M12 4l3 3-3 3M20 17H9M12 14l-3 3 3 3%22/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22black%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Cpath d=%22M4 7h11M12 4l3 3-3 3M20 17H9M12 14l-3 3 3 3%22/%3E%3C/svg%3E")}
.rp-app .module-nav [data-screen="myyntilaskut"]::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22black%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Cpath d=%22M6 3h9l4 4v14H6z%22/%3E%3Cpath d=%22M9 12h6M9 16h4M15 3v5h5%22/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22black%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Cpath d=%22M6 3h9l4 4v14H6z%22/%3E%3Cpath d=%22M9 12h6M9 16h4M15 3v5h5%22/%3E%3C/svg%3E")}
.rp-app .module-nav .rp-more-search::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22black%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Ccircle cx=%2211%22 cy=%2211%22 r=%227%22/%3E%3Cpath d=%22M20 20l-3.5-3.5%22/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22black%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Ccircle cx=%2211%22 cy=%2211%22 r=%227%22/%3E%3Cpath d=%22M20 20l-3.5-3.5%22/%3E%3C/svg%3E")}
/* Vaatii huomiota -lista etusivulla */
.rp-app .rp-attn-list{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.rp-app .rp-attn-row{all:unset;box-sizing:border-box;width:100%;display:grid;grid-template-columns:minmax(120px,220px) 1fr auto;gap:12px;align-items:center;padding:10px 12px;border:1px solid var(--rp-reuna);border-left:4px solid var(--rp-varoitus);border-radius:var(--rp-r-sm);background:var(--rp-pinta);cursor:pointer;font-size:14px}
.rp-app .rp-attn-row:hover,.rp-app .rp-attn-row:focus-visible{background:var(--rp-n-100);outline:2px solid var(--rp-vari-vahva);outline-offset:1px}
.rp-app .rp-attn-row b{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rp-app .rp-attn-row span{color:var(--rp-himmea)}
.rp-app .rp-attn-row i{font-style:normal;color:var(--rp-vari-teksti)}
.rp-app .rp-attn-row.is-ylitys,.rp-app .rp-attn-row.is-auki{border-left-color:var(--rp-vaara)}
.rp-app .rp-attn-row.is-puute{border-left-color:var(--rp-vaara)}
.rp-app .rp-attn-row.is-kortti{border-left-color:var(--rp-varoitus)}
.rp-app .rp-attn-row.is-vero{border-left-color:var(--rp-gantt-suunnittelu)}
@media (max-width:640px){.rp-app .rp-attn-row{grid-template-columns:1fr auto}.rp-app .rp-attn-row span{grid-column:1}}

/* Myyntilaskut (myyntilaskut.js) */
.ml-form, .ml-settings { border: 1px solid var(--rp-reuna); border-radius: 10px; padding: 14px 16px; margin: 12px 0; background: var(--card, var(--rp-pinta)); }
.ml-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 8px 14px; margin-bottom: 8px; }
.ml-field { display: flex; flex-direction: column; gap: 3px; font-size: 0.86rem; }
.ml-field input, .ml-field select { padding: 6px 8px; }
.ml-wide { grid-column: 1 / -1; margin: 8px 0; }
.ml-rows input[data-f="description"] { width: 100%; min-width: 220px; }
.ml-rows .ml-unit { width: 4.5em; }
.ml-sum { text-align: right; white-space: nowrap; }
.ml-totals { font-size: 1rem; margin: 10px 0; }
.ml-hint, .ml-key-state { font-size: 0.82rem; color: var(--rp-himmea); }
.ml-check { display: flex; gap: 6px; align-items: center; margin: 6px 0; font-size: 0.88rem; }
.ml-actions { white-space: nowrap; }
.ml-push { border-left: 4px solid var(--rp-varoitus); padding: 6px 12px; margin: 10px 0; background: var(--rp-vaara-tausta); }
.ml-push.ok { border-color: var(--rp-onnistuminen); background: var(--rp-gantt-loma-tausta); }
.ml-push pre { max-height: 280px; overflow: auto; font-size: 0.75rem; }
.rp-scope{margin:0 0 12px;padding:8px 12px;border-radius:8px;background:var(--rp-n-100);color:var(--rp-n-700);font-size:14px}
.user-sites{border:1px solid var(--rp-reuna);border-radius:8px;padding:10px 12px;margin:0 0 10px;display:grid;gap:8px}.user-sites h3{margin:0;font-size:15px}.user-site-list{display:flex;flex-wrap:wrap;gap:6px 14px}.user-site{display:flex;gap:6px;align-items:center}
.site-danger{margin-top:8px;border-top:1px solid var(--rp-reuna-2);padding-top:6px}.site-danger summary{cursor:pointer;color:var(--rp-ero-yli);font-size:14px}.site-danger p{font-size:13px;margin:6px 0}

/* Pikatoiminnot: yleisimmät toiminnot näkyvinä pieninä painikkeina; harvinaiset jäävät ⋯ Lisää -valikkoon. */
.rp-app .rp-pikatoiminnot{display:flex;flex-wrap:wrap;gap:6px;align-items:center;min-width:0}
.rp-app .rp-gantt-tools>.rp-pikatoiminnot{flex:none;flex-wrap:nowrap}
@media (max-width:1600px){.rp-app .rp-gantt-tools .rp-pikanappi>span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}.rp-app .rp-gantt-tools .rp-pikanappi{padding:0 9px}}
.rp-app .rp-pikanappi{display:inline-flex;align-items:center;gap:6px;height:36px;padding:0 10px;font-size:13px;font-weight:600;border:1px solid var(--rp-reuna);border-radius:8px;background:var(--rp-pinta);color:var(--rp-teksti);white-space:nowrap;cursor:pointer}
.rp-app .rp-pikanappi:hover{border-color:var(--rp-vari);color:var(--rp-vari-teksti)}
.rp-app .rp-pikanappi:focus-visible{outline:2px solid var(--rp-vari);outline-offset:2px}
.rp-app .rp-pikanappi.is-on,.rp-app .rp-pikanappi[aria-pressed="true"]{background:var(--rp-vari-pehmea);border-color:var(--rp-vari);color:var(--rp-vari-teksti)}
.rp-app .rp-pikanappi .rp-ikoni{width:16px;height:16px;flex:none}
@media (max-width:760px){
  .rp-app .rp-gantt-tools>.rp-pikatoiminnot{grid-column:1 / -1;grid-row:4;flex-wrap:wrap}
  .rp-app .rp-gantt-tools .rp-pikanappi>span{position:static;width:auto;height:auto;clip:auto}
  .rp-app .rp-pikatoiminnot .rp-pikanappi{flex:1 1 auto;justify-content:center;height:40px}
}
.trial-pay.rp-pk{max-width:1040px}
.rp-pk-intro{margin:0 0 12px;color:var(--rp-himmea)}
.rp-pk-huom{margin:0 0 8px;padding:8px 12px;border-radius:var(--rp-sade-lg);background:var(--rp-varoitus-tausta);color:var(--rp-teksti)}
.rp-pk-ok{margin:0 0 12px;padding:8px 12px;border-radius:var(--rp-sade-lg);background:var(--rp-pinta);border:1px solid var(--rp-reuna);color:var(--rp-teksti)}
.rp-pk-kortit{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.rp-pk-kortti{display:flex;flex-direction:column;gap:6px;border:1px solid var(--rp-reuna);border-radius:var(--rp-sade-lg);background:var(--rp-pinta);padding:14px;min-width:0}
.rp-pk-kortti.is-nyt{border:2px solid var(--rp-vari)}
.rp-pk-kortti.is-tulossa{border-style:dashed;border-color:var(--rp-vari)}
.rp-pk-kortti header{display:flex;flex-wrap:wrap;gap:6px;align-items:center;justify-content:space-between}
.rp-pk-kortti h3{margin:0;font-size:16px}
.rp-pk-merkki{font-size:11px;font-weight:600;padding:1px 8px;border-radius:var(--rp-sade-pilleri);background:var(--rp-varoitus-tausta);color:var(--rp-teksti)}
.rp-pk-merkki.is-nyt{background:var(--rp-vari);color:var(--rp-n-0)}
.rp-pk-hinta{margin:0;font-size:14px}.rp-pk-hinta b{font-size:22px}.rp-pk-hinta small{color:var(--rp-himmea)}
.rp-pk-kuvaus{margin:0;font-size:13px;color:var(--rp-himmea)}
.rp-pk-kortti ul{margin:0 0 6px;padding-left:18px;font-size:13px;flex:1}
.rp-pk-kortti .btn{width:100%}
.rp-pk-vahvista{border:1px solid var(--rp-reuna);border-radius:var(--rp-sade-lg);background:var(--rp-pinta);padding:14px}
.rp-pk-vahvista h3{margin:0 0 6px}
.rp-pk-loki{margin-top:10px;font-size:12px;color:var(--rp-himmea)}
@media (max-width:860px){.rp-app .rp-pk-kortit,.rp-pk-kortit{grid-template-columns:1fr 1fr}}
@media (max-width:520px){.rp-pk-kortit{grid-template-columns:1fr}}
/* Työmaa: Gantt katseluna – rakenteen muokkaus kuuluu Mestariin, valmiiksi merkintä toimii. */
body.pk-gantt-katselu #btn-add{display:none}
