@font-face{font-family:Noto Sans;src:local(Noto Sans),local(Noto-Sans-Regular),url("https://fonts.googleapis.com/css?family=Noto Sans"),url(/assets/NotoSans-Regular-D96CXwz4.ttf)format("truetype")}@font-face{font-family:Noto Sans Mono;src:local(Noto Sans Mono),local(Noto-Sans-Mono),url("https://fonts.googleapis.com/css?family=Noto Sans Mono"),url(/assets/NotoSansMono-Regular-BduYXrX5.ttf)format("truetype")}@font-face{font-family:Noto Serif;src:local(Noto Serif),local(Noto-Serif),url("https://fonts.googleapis.com/css?family=Noto Serif"),url(/assets/NotoSerif-Regular-BuPfoPbS.ttf)format("truetype")}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0;font-family:Roboto,sans-serif}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}.wizard-navi{text-align:center;margin-bottom:15px}.wizard-navi .dot{color:#d2ddec;text-shadow:none;will-change:opacity, text-shadow;margin:10px 30px;font-size:52pt;line-height:1;transition:opacity 1s,text-shadow 1s}.wizard-navi .dot.active{color:#001a49;text-shadow:0 0 8px}.header-actions{flex-direction:row;display:flex;position:absolute;top:15px;right:0}.header-actions>*{margin-right:15px}.btn-product-save.disabled,.btn-product-cancel.disabled{visibility:hidden}html,body{height:100%}body{background-color:#f9fbfd}.App{text-align:center}.App-logo{pointer-events:none;height:40vmin}@media (prefers-reduced-motion:no-preference){.App-logo{animation:20s linear infinite App-logo-spin}}.App-header{color:#fff;background-color:#282c34;flex-direction:column;justify-content:center;align-items:center;min-height:100vh;font-size:calc(10px + 2vmin);display:flex}.App-link{color:#61dafb}@keyframes App-logo-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.loading-spinner{border:4px solid #777;border-top-color:#0000;border-radius:16px;width:32px;height:32px;animation:2s linear infinite App-logo-spin;display:inline-block}.app-header{--brand-navy:#20378e;--brand-navy-dark:#001a49;--brand-cyan:#00a7e0;margin-bottom:2rem}.app-header-bar{background:linear-gradient(90deg, var(--brand-navy-dark) 0%, #0b2566 60%, var(--brand-navy) 100%);position:relative;overflow:hidden}.app-header-ribbon{pointer-events:none;opacity:.9;width:auto;height:100%;position:absolute;top:0;right:0}.app-header-inner{justify-content:space-between;align-items:center;gap:1rem;min-height:68px;display:flex;position:relative}.app-header-brand{align-items:center;gap:.9rem;text-decoration:none;display:flex}.app-header-logo{width:auto;height:26px}.app-header-product{color:#ffffffd9;letter-spacing:.02em;border-left:1px solid #ffffff4d;padding-left:.9rem;font-size:1rem;font-weight:400;line-height:1.4}.app-header-brand:hover .app-header-product{color:#fff}.app-header-actions{align-items:center;gap:.5rem;display:flex}.app-header-actions .btn{white-space:nowrap}.app-header-accent{background:linear-gradient(90deg, var(--brand-navy) 0%, var(--brand-cyan) 100%);height:4px}@media (width<=575.98px){.app-header-ribbon{opacity:.35}.app-header-product{display:none}.app-header-logo{height:20px}.app-header-actions .btn{padding:.375rem .75rem;font-size:.75rem}}.intro{--intro-primary:#2c7be5;--intro-navy:#001a49;--intro-border:#e3ebf6;--intro-muted-bg:#f1f5fb}.intro-hero{text-align:center;max-width:760px;margin:0 auto 3rem;padding-top:1rem}.intro-hero h2{color:var(--intro-navy);font-weight:500}.intro-section-title{color:var(--intro-navy);margin-bottom:1rem}.intro-card{border:1px solid var(--intro-border);box-shadow:0 1px 3px #12263f0d}.intro-step-number{background-color:var(--intro-primary);color:#fff;border-radius:50%;justify-content:center;align-items:center;width:32px;height:32px;margin-bottom:.75rem;font-weight:500;display:flex}.intro-tag{letter-spacing:.02em;text-transform:uppercase;color:var(--intro-primary);background-color:var(--intro-muted-bg);border-radius:4px;align-self:flex-start;padding:2px 8px;font-size:.75rem;font-weight:500}.intro-meter{background-color:var(--intro-muted-bg);border-radius:6px;padding:.75rem 1rem}.intro-meter-title,.intro-subtitle{color:var(--intro-navy);margin-bottom:.4rem;font-weight:500}.intro-checklist li{align-items:baseline;margin-bottom:.3rem;display:flex}.intro-checklist li>i{color:var(--intro-primary);margin-right:.6rem;font-size:.85em}@media (width>=768px){.intro-checklist-columns{column-count:2;column-gap:2rem}.intro-checklist-columns li{break-inside:avoid}}.intro-notice{border:1px solid var(--intro-border);border-left:4px solid var(--intro-primary);color:#3b506c;background-color:#fff;border-radius:6px;gap:.75rem;padding:1rem 1.25rem;display:flex}.intro-notice>i{color:var(--intro-primary);margin-top:.2rem}.summary{--sum-primary:#2c7be5;--sum-navy:#001a49;--sum-border:#e3ebf6;--sum-muted:#6e84a3;--sum-soft:#f1f5fb}.summary-figures{grid-template-columns:repeat(4,minmax(0,1fr));gap:1rem;display:grid}@media (width<=991.98px){.summary-figures{grid-template-columns:repeat(2,minmax(0,1fr))}}.summary-figure{border:1px solid var(--sum-border);background-color:#fff;border-radius:8px;align-items:center;gap:.85rem;min-width:0;padding:.9rem 1rem;display:flex}.summary-figure-icon{background-color:var(--sum-soft);height:40px;color:var(--sum-primary);border-radius:10px;flex:0 0 40px;justify-content:center;align-items:center;display:flex}.summary-figure-text{flex-direction:column;min-width:0;display:flex}.summary-figure-label{text-transform:uppercase;letter-spacing:.03em;color:var(--sum-muted);font-size:.75rem}.summary-figure-value{color:var(--sum-navy);white-space:nowrap;text-overflow:ellipsis;font-weight:500;overflow:hidden}.summary-figure.highlight{background:linear-gradient(135deg,#20378e 0%,#2c7be5 100%);border-color:#0000}.summary-figure.highlight .summary-figure-icon{color:#fff;background-color:#ffffff26}.summary-figure.highlight .summary-figure-label{color:#fffc}.summary-figure.highlight .summary-figure-value{color:#fff;font-size:1.15rem}.summary-card{border:1px solid var(--sum-border);background-color:#fff;border-radius:8px;padding:1.25rem 1.5rem;box-shadow:0 1px 3px #12263f0d}.summary-card-header{margin-bottom:1rem}.summary-card-header h5{color:var(--sum-navy);font-size:1.05rem;font-weight:500}.summary-card-header i{color:var(--sum-primary)}.summary-drawing embed{aspect-ratio:1190/842;border:1px solid var(--sum-border);background-color:#fff;border-radius:6px;width:100%;display:block}.summary-drawing:empty:before{content:"Kaaviota ladataan…";text-align:center;color:var(--sum-muted);background-color:var(--sum-soft);border-radius:6px;padding:2rem;display:block}.summary-side{flex-direction:column;gap:1.5rem;display:flex}@media (width>=992px){.summary-side{position:sticky;top:1rem}}.summary-products th{text-transform:uppercase;letter-spacing:.03em;color:var(--sum-muted);border-bottom-color:var(--sum-border);font-size:.75rem;font-weight:500}.summary-products td{border-bottom-color:var(--sum-border);vertical-align:middle}.summary-qty{background-color:var(--sum-soft);min-width:3rem;color:var(--sum-navy);text-align:center;border-radius:999px;padding:.15rem .6rem;font-size:.85rem;display:inline-block}.summary-products tfoot td{border-bottom:0;font-weight:500}.summary-total td{color:var(--sum-navy);border-top:2px solid var(--sum-border)}.summary-total-vat td{color:#fff;background-color:#20378e}.summary-total-vat td:first-child{border-radius:6px 0 0 6px}.summary-total-vat td:last-child{border-radius:0 6px 6px 0}.summary-note{color:var(--sum-muted);margin:.75rem 0 0;font-size:.85rem}.summary-alert{color:#6b4e00;background-color:#fff8e6;border:1px solid #f6d58b;border-radius:6px;gap:.75rem;margin-bottom:1rem;padding:.75rem 1rem;font-size:.9rem;display:flex}.summary-alert>i{color:#e0a100;margin-top:.2rem}.summary-services{border-top:1px solid var(--sum-border);margin-top:1.25rem;padding-top:1rem}.summary-services-title{color:var(--sum-navy);margin-bottom:.5rem;font-weight:500}.summary-service{padding:.6rem 0}.summary-service+.summary-service{border-top:1px dashed var(--sum-border)}.summary-service-head{justify-content:space-between;gap:1rem;display:flex}.summary-service-name{color:#12263f;font-weight:500}.summary-service-price{color:var(--sum-primary);white-space:nowrap;font-weight:500}.summary-service-description{color:var(--sum-muted);font-size:.85rem}.summary-details td{border-bottom-color:var(--sum-border);padding:.45rem .25rem;font-size:.9rem}.summary-details td:first-child{color:var(--sum-muted)}.summary-details tr:last-child td{border-bottom:0}.summary-report .form-label{color:var(--sum-navy);margin-bottom:.35rem;font-weight:500}.summary-contact{background-color:var(--sum-soft);border-radius:6px;padding:.75rem 1rem}.summary-support{color:var(--sum-muted);margin:1rem 0 0;font-size:.85rem}@media (width<=575.98px){.summary-figure{gap:.6rem;padding:.75rem}.summary-figure-icon{flex-basis:32px;height:32px}.summary-figure-value{white-space:normal;overflow-wrap:anywhere}.summary-figure.highlight{grid-column:1/-1}.summary-card{padding:1rem}}.wizard{--wiz-primary:#2c7be5;--wiz-navy:#001a49;--wiz-border:#e3ebf6;--wiz-muted:#6e84a3;--wiz-soft:#f1f5fb}.wizard-stepper{counter-reset:step;margin:0 0 1.5rem;padding:0;list-style:none;display:flex}.wizard-step{text-align:center;flex:1;position:relative}.wizard-step:not(:first-child):before{content:"";background-color:var(--wiz-border);height:2px;position:absolute;top:17px;left:calc(22px - 50%);right:calc(50% + 22px)}.wizard-step.done:not(:first-child):before,.wizard-step.active:not(:first-child):before{background-color:var(--wiz-primary)}.wizard-step-button{color:var(--wiz-muted);background:0 0;border:0;flex-direction:column;align-items:center;gap:.4rem;padding:0;font-size:.85rem;display:inline-flex}.wizard-step-button:disabled{cursor:default;opacity:1}.wizard-step.done .wizard-step-button{cursor:pointer;color:var(--wiz-navy)}.wizard-step.done .wizard-step-button:hover .wizard-step-label{text-decoration:underline}.wizard-step-marker{border:2px solid var(--wiz-border);width:36px;height:36px;color:var(--wiz-muted);background-color:#fff;border-radius:50%;justify-content:center;align-items:center;font-weight:500;display:flex}.wizard-step.done .wizard-step-marker{background-color:var(--wiz-primary);border-color:var(--wiz-primary);color:#fff}.wizard-step.active .wizard-step-marker{border-color:var(--wiz-primary);color:var(--wiz-primary);box-shadow:0 0 0 4px #2c7be526}.wizard-step.active .wizard-step-label{color:var(--wiz-navy);font-weight:500}.wizard-card{border:1px solid var(--wiz-border);background-color:#fff;border-radius:8px;max-width:960px;margin:0 auto;padding:1.75rem;box-shadow:0 1px 3px #12263f0d}.wizard-step-header{margin-bottom:1.5rem}.wizard-step-header h4{color:var(--wiz-navy);margin-bottom:.35rem}.wizard-type-badge{align-items:center;display:inline-flex}.wizard-section{border-top:1px solid var(--wiz-border);padding:1.25rem 0}.wizard-section:first-of-type{border-top:0;padding-top:0}.wizard-section-title{text-transform:uppercase;letter-spacing:.04em;color:var(--wiz-muted);margin-bottom:1rem;font-size:.75rem;font-weight:500}.wizard-subsection{background-color:var(--wiz-soft);border-radius:6px;margin-top:.25rem;padding:1rem 1rem .25rem}.wizard-form-grid{grid-template-columns:repeat(2,minmax(0,1fr));column-gap:1.5rem;display:grid}.wizard-form-grid>.wizard-field:first-child:has(input[type=text]:not([inputmode])){grid-column:1/-1}.wizard-field{margin-bottom:1.1rem}.wizard-field .form-label{color:var(--wiz-navy);margin-bottom:.4rem;font-weight:500;display:block}.wizard-field .form-label label{margin-bottom:0}@media (width<=767.98px){.wizard-form-grid{grid-template-columns:minmax(0,1fr)}.wizard-card{padding:1.25rem}.wizard-step-label{display:none}.wizard-step.active .wizard-step-label{display:block}}.choice-group{flex-wrap:wrap;gap:.5rem;display:flex}.choice-option{align-items:center;display:inline-flex;position:relative}.choice-input{opacity:0;pointer-events:none;width:1px;height:1px;position:absolute}.choice-pill{color:#12263f;cursor:pointer;-webkit-user-select:none;user-select:none;background-color:#fff;border:1px solid #d2ddec;border-radius:1.25rem;padding:.45rem .95rem;transition:background-color .15s,border-color .15s,color .15s;display:inline-block}.choice-pill:hover{border-color:var(--wiz-primary,#2c7be5)}.choice-input:checked+.choice-pill{background-color:var(--wiz-primary,#2c7be5);border-color:var(--wiz-primary,#2c7be5);color:#fff}.choice-input:checked+.choice-pill:hover{color:#fff;background-color:#1a68d1;border-color:#1a68d1}.choice-input:focus-visible+.choice-pill{outline:2px solid var(--wiz-primary,#2c7be5);outline-offset:2px}.choice-input:disabled+.choice-pill{opacity:.45;cursor:not-allowed;border-color:#d2ddec}.wizard-tiles{grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;display:grid}@media (width<=575.98px){.wizard-tiles{grid-template-columns:minmax(0,1fr)}}.wizard-tile{text-align:left;border:1px solid var(--wiz-border);background-color:#fff;border-radius:8px;align-items:center;gap:1rem;padding:1.1rem 1.25rem;transition:border-color .15s,box-shadow .15s,transform .15s;display:flex}.wizard-tile:hover{border-color:var(--wiz-primary);transform:translateY(-1px);box-shadow:0 4px 12px #12263f14}.wizard-tile.selected{border:2px solid var(--wiz-primary);background-color:#f5f9ff}.wizard-tile-icon{background-color:var(--wiz-soft);height:56px;color:var(--wiz-primary);border-radius:12px;flex:0 0 56px;justify-content:center;align-items:center;font-size:1.6rem;display:flex}.wizard-tile-text{flex-direction:column;display:flex}.wizard-tile-label{color:var(--wiz-navy);font-size:1.05rem;font-weight:500}.wizard-tile-description{color:var(--wiz-muted);font-size:.875rem}.btn.wizard-btn-back{color:#12263f;box-shadow:none;background-color:#fff;border:1px solid #d2ddec}.btn.wizard-btn-back:hover{border-color:var(--wiz-primary);color:var(--wiz-primary)}.wizard-actions{border-top:1px solid var(--wiz-border);align-items:center;gap:.75rem;margin-top:1.5rem;padding-top:1.25rem;display:flex}
