.workspace-identity{display:flex;gap:10px;align-items:center;padding:15px 5px;color:#e2e9f0}.workspace-identity strong,.workspace-identity small{display:block}.workspace-identity strong{font-size:14px;max-width:155px;overflow-wrap:anywhere}.workspace-identity small{font-size:12px;color:#97acbd;margin-top:4px}.portal-heading{display:flex;gap:20px;align-items:center;justify-content:space-between;margin-bottom:25px}.portal-heading h1{font-size:30px;margin:7px 0}.portal-heading p{font-size:16px;line-height:1.6;color:var(--muted);max-width:680px}.portal-eyebrow{font-size:12px;letter-spacing:.12em;color:var(--blue);font-weight:750}.portal-banner{display:flex;align-items:flex-start;gap:14px;padding:18px 20px;background:#e3ebf2;border:1px solid #d3dce6;border-radius:12px;margin-bottom:24px}.portal-banner p{font-size:14px;line-height:1.6;margin:4px 0 0;color:#47586a}.portal-banner strong{font-size:15px}.portal-metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:15px;margin-bottom:25px}.portal-metric{padding:22px 24px;background:white;border:1px solid var(--line);border-radius:var(--r-lg)}.portal-metric span{display:block;font-size:14px;color:var(--muted)}.portal-metric strong{font-size:28px;display:block;margin-top:8px}.portal-toolbar{display:flex;justify-content:space-between;align-items:center;gap:15px;margin:20px 0}.portal-toolbar select{font-size:14px;padding:10px;border:1px solid var(--line);border-radius:8px;background:white}.draft-layout{display:grid;grid-template-columns:minmax(260px,.85fr) minmax(0,1.5fr);gap:20px;align-items:start}.draft-list{display:grid;gap:10px}.draft-card{width:100%;display:block;text-align:left;padding:18px;background:#fff;border:1px solid var(--line);border-radius:var(--r-md);cursor:pointer;transition:transform .12s ease,box-shadow .12s ease}.draft-card:hover{transform:translateY(-2px);box-shadow:var(--shadow)}.draft-card.selected{border:2px solid var(--blue);padding:17px;background:#eaf0f6}.draft-card h3{font-size:16px;line-height:1.4;margin:12px 0 7px}.draft-card p{font-size:14px;color:var(--muted);margin:0 0 12px}.draft-card footer,.draft-card header{display:flex;gap:8px;align-items:center;justify-content:space-between;font-size:12px}.draft-card footer{color:var(--muted)}.status-tag,.channel-tag,.demo-tag{padding:4px 10px;border-radius:999px;font-size:12px;font-weight:650}
.status-tag{background:#fff2d9;color:#845b12}.status-tag.approved{background:#e2f4ec;color:#176743}.status-tag.rejected{background:#f2e8e8;color:#93443f}.channel-tag{background:#edf1f7;color:#495e74}.demo-tag{background:#e3ebf2;color:#24496b}.draft-editor{background:white;border:1px solid var(--line);border-radius:var(--r-lg);padding:28px}.draft-editor h2{font-size:22px;margin:0 0 15px}.draft-editor label{display:block;font-weight:600;font-size:14px;margin:18px 0 7px}
.draft-editor input,.draft-editor textarea{display:block;width:100%;padding:11px;border:1px solid #b9c9d9;border-radius:8px;font:inherit;font-size:16px;margin-top:7px;background:#fff;color:var(--ink)}.draft-editor textarea{resize:vertical;min-height:240px;line-height:1.6}.draft-info{display:flex;flex-wrap:wrap;gap:10px 22px;font-size:14px;color:var(--muted);margin:15px 0}.draft-info strong{color:var(--ink)}.editor-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:18px}.editor-note{font-size:14px;color:var(--muted);line-height:1.6}.empty-state{text-align:center;background:white;border:1px solid var(--line);border-radius:var(--r-lg);padding:56px 25px}.empty-state h2{font-size:23px;margin:0 0 12px}.empty-state p{font-size:16px;line-height:1.7;color:var(--muted);max-width:570px;margin:0 auto 22px}.empty-state button{margin:auto}
.empty-state.net-off{text-align:left;border-left:4px solid var(--wk-red,#e0453c);padding:28px 24px}
.empty-state.net-off p{margin:0 0 18px}
.empty-state.net-off button{margin:0}.history-list{display:grid;gap:12px}.history-card{display:flex;align-items:center;justify-content:space-between;gap:20px;background:#fff;border:1px solid var(--line);border-radius:var(--r-md);padding:20px}.history-card h3{font-size:17px;margin:0 0 7px}.history-card p{font-size:14px;color:var(--muted);margin:0}.settings-card{padding:28px;background:#fff;border:1px solid var(--line);border-radius:var(--r-lg)}

.widget-list-scroll{max-height:280px;overflow-y:auto}
.widget-search{display:block;width:100%;padding:9px 11px;border:1px solid #b9c9d9;border-radius:8px;font:inherit;font-size:14px;margin-top:14px;background:#fff;color:var(--ink)}
.status-tag.off{background:#f1f2f4;color:#66707c}
.status-tag.on{background:#e2f4ec;color:#176743}

.widget-controls{position:absolute;top:12px;right:12px;display:flex;align-items:center;gap:2px}
.widget-dismiss,.widget-move{background:none;border:none;padding:4px 6px;cursor:pointer;color:var(--muted,#667085);border-radius:4px;font-size:13px;line-height:1}
.widget-dismiss:hover,.widget-move:hover{background:#f1f2f4}
.widget-move:disabled{opacity:.3;cursor:default}
.widget-move:disabled:hover{background:none}
.widget-dismiss svg{width:16px;height:16px;display:block}

.settings-card h2{font-size:20px;margin:0 0 12px}.settings-card p,.settings-card li{font-size:14px;line-height:1.7;color:var(--muted)}.settings-card button{margin-top:20px}.portal-loading{padding:45px;color:var(--muted)}.status-message{padding:12px;background:#e7f5ed;border-radius:8px;font-size:14px;color:#256345}.draft-meta{font-size:12px;color:var(--muted);margin-top:12px}#portalMessage{margin:0 0 20px}.portal-metric button{padding:0;border:0;background:none;text-align:left;color:inherit}.nav-item:disabled{opacity:.55}.draft-card:focus-visible{outline:3px solid #4a9aff;outline-offset:3px}@media(max-width:1000px){.draft-layout{grid-template-columns:1fr}.draft-list{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:600px){.portal-heading{align-items:flex-start;flex-direction:column}.portal-heading h1{font-size:26px}.portal-metrics{gap:8px}.portal-metric{padding:14px 11px}.portal-metric span{font-size:12px}.portal-metric strong{font-size:24px}.draft-list{grid-template-columns:1fr}.draft-editor{padding:17px}.portal-toolbar{align-items:flex-start;flex-direction:column}.history-card{align-items:flex-start;flex-direction:column}.editor-actions button{flex:1 1 140px}}
.chat-fab{position:fixed;right:24px;bottom:24px;z-index:60;width:54px;height:54px;border-radius:50%;border:0;background:var(--blue);color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:var(--shadow-lg);transition:transform .15s ease,opacity .15s ease,background .15s ease;overflow:hidden;padding:0}
/* Avustajan pallo väistyy, kun Asetusten laatikko tai ikkuna on auki (.back.on): muuten se peitti laatikon Peruuta-napin oikeassa alakulmassa (23.10.2026). */
body:has(.aset .back.on) .chat-fab{transform:translateY(140px);opacity:0;pointer-events:none}
.chat-fab:hover{background:var(--blue-dark);transform:translateY(-2px)}
.chat-fab svg{width:24px;height:24px}
.chat-fab img{width:100%;height:100%;object-fit:cover;display:block}
.chat-panel{position:fixed;right:24px;bottom:90px;z-index:61;width:min(360px,calc(100vw - 32px));max-height:min(520px,calc(100vh - 130px));display:flex;flex-direction:column;background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-lg);overflow:hidden}
.chat-panel-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:14px 16px;border-bottom:1px solid var(--line);background:var(--navy);color:#fff}
.chat-panel-head strong{font-size:14px}
.chat-panel-head small{display:block;margin-top:2px;font-size:11px;color:#a9b8c9}
.chat-panel-head button{background:none;border:0;color:#fff;cursor:pointer;padding:4px;opacity:.8}
.chat-panel-head button:hover{opacity:1}
/* Sulkuruksi on puhelimessa koko näytön paneelin ainoa poistumistie: kosketusalue vähintään 44 × 44 px (puhelinkoeajo 11.10.2026, aiemmin 21 × 31 px). Negatiiviset marginaalit pitävät otsakkeen korkeuden ennallaan. */
.chat-panel-head #assistantClose{min-width:44px;min-height:44px;margin:-10px -12px -10px 0;font-size:18px;line-height:1}
.chat-messages{flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:10px;min-height:160px}
.chat-empty{color:var(--muted);font-size:13.5px;line-height:1.6;margin:auto 0;text-align:center}
.chat-bubble{max-width:85%;padding:10px 13px;border-radius:var(--r-md);font-size:13.5px;line-height:1.55;white-space:pre-wrap;overflow-wrap:anywhere}
.chat-bubble.user{align-self:flex-end;background:var(--blue);color:#fff;border-bottom-right-radius:4px}
.chat-bubble.assistant{align-self:flex-start;background:#e9edf3;color:var(--ink);border-bottom-left-radius:4px}
.chat-bubble.pending{align-self:flex-start;background:#e9edf3;color:var(--muted);font-style:italic}
.chat-action{align-self:flex-start;max-width:85%;display:flex;flex-direction:column;gap:8px;padding:10px 13px;border-radius:var(--r-md);background:var(--blue-soft);border:1px solid #d5e6fb;font-size:13.5px;color:var(--ink)}
.chat-action button{align-self:flex-start;padding:0 14px;height:32px;border-radius:var(--r-sm);border:0;background:var(--blue);color:#fff;font:inherit;font-weight:650;font-size:13px;cursor:pointer}
.chat-action button:hover{background:var(--blue-dark)}
.chat-action button:disabled{opacity:.6;cursor:default}
/* Kysy Ainiolta: Ohjeet ja tuki -nappi, siirtymänapit, pikaohje ja tukilomake (käytettävyystesti 4.10.2026, B7) */
.chat-panel-head .chat-hbtn{margin-left:auto;opacity:1;border:1px solid rgba(255,255,255,.28);border-radius:999px;padding:4px 11px;font:inherit;font-size:12px;font-weight:600;white-space:nowrap}
.chat-panel-head .chat-hbtn:hover{background:rgba(255,255,255,.12)}
/* Suurennuskuvake (korjauslista 17.10.2026, kohta 5): tietokoneella kuvake korvaa Ohjeet ja tuki -napin, joka löytyy edelleen työtilan valikosta. Suurennettuna keskustelu on noin kaksi kertaa leveämpi ja lähes koko korkeuden. Puhelimessa paneeli on jo koko näytön, joten kuvaketta ei näytetä. */
.chat-panel-head .chat-big{margin-left:auto;display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:10px;opacity:1}
.chat-panel-head .chat-big:hover{background:rgba(255,255,255,.12)}
.chat-panel-head .chat-big:focus-visible{outline:2px solid currentColor;outline-offset:1px}
@media (min-width:761px){.chat-panel-head #assistantHelp{display:none}}
@media (max-width:760px){.chat-panel-head .chat-big{display:none}}
@media (min-width:761px){.chat-panel.big{width:min(760px,calc(100vw - 48px));height:calc(100vh - 110px);max-height:calc(100vh - 110px)}.chat-panel.big .chat-bubble,.chat-panel.big .chat-action{max-width:78%}}
.chat-acts{align-self:flex-start;max-width:92%;display:flex;flex-wrap:wrap;gap:6px;margin-top:-4px}
.chat-go{border:1px solid var(--blue);background:transparent;color:var(--blue);border-radius:999px;padding:5px 12px;font:inherit;font-size:12.5px;font-weight:650;cursor:pointer}
.chat-go:hover{background:var(--blue-soft)}
.chat-go.sup{border-color:var(--line);color:var(--ink)}
.chat-help{display:flex;flex-direction:column;gap:12px}
.chat-hi{margin:0;font-size:13.5px;line-height:1.55;color:var(--ink)}
.chat-sugg{display:flex;flex-wrap:wrap;gap:6px}
.chat-sugg button{border:1px solid var(--line);background:transparent;color:var(--ink);border-radius:999px;padding:6px 11px;font:inherit;font-size:12.5px;cursor:pointer;text-align:left}
.chat-sugg button:hover{border-color:var(--blue);color:var(--blue)}
.chat-guide,.chat-sup{border:1px solid var(--line);border-radius:var(--r-md);padding:12px}
.chat-guide h4,.chat-sup h4{margin:0 0 8px;font-size:13px}
.chat-guide ol{margin:0;padding:0;list-style:none;counter-reset:apg;display:flex;flex-direction:column;gap:2px}
.chat-guide li{counter-increment:apg}
.chat-guide li button{display:grid;grid-template-columns:22px 1fr;column-gap:8px;width:100%;text-align:left;border:0;background:transparent;color:var(--ink);font:inherit;padding:6px 4px;border-radius:var(--r-sm);cursor:pointer}
.chat-guide li button::before{content:counter(apg);grid-row:span 2;width:22px;height:22px;border-radius:50%;background:var(--blue-soft);color:var(--blue);font-size:12px;font-weight:700;display:flex;align-items:center;justify-content:center}
.chat-guide li button:hover{background:var(--blue-soft)}
.chat-guide b{font-size:13px}
.chat-guide small{font-size:12px;color:var(--muted);line-height:1.4}
.chat-sup p{margin:0 0 10px;font-size:12.5px;color:var(--muted);line-height:1.5}
.chat-sup .secondary-btn{height:32px;padding:0 14px;font-size:13px}
.chat-input-row{display:flex;gap:8px;padding:12px;border-top:1px solid var(--line)}
.chat-input-row input{flex:1;padding:10px 12px;border:1px solid var(--line);border-radius:var(--r-sm);font:inherit;font-size:13.5px}
.chat-input-row button{padding:0 16px;border-radius:var(--r-sm);min-height:auto;height:38px}
/* Puhelimen asettelu (nappi, paneeli) on nav.css:ssä. */
.widget-panel-btn{display:flex;align-items:center;gap:7px;height:38px;padding:0 14px;border-radius:999px;border:1px solid var(--line);background:#fff;color:var(--ink);font:inherit;font-weight:600;font-size:13px;cursor:pointer}
.widget-panel-btn:hover{background:var(--blue-soft);border-color:var(--blue)}
/* Tummassa tilassa yllä oleva hover jää dark.css:n taustan alle, joten nappi vaalenee hieman (8.10.2026). */
html[data-theme="dark"] .widget-panel-btn:hover,html[data-theme="dark"] .theme-toggle:hover{filter:var(--hv-f)}
.widget-panel-btn svg{width:16px;height:16px}
.widget-panel-backdrop{position:fixed;inset:0;background:rgba(15,20,28,.4);z-index:70}
.widget-panel{position:fixed;top:0;right:0;bottom:0;z-index:71;width:min(380px,100vw);background:#fff;box-shadow:-16px 0 40px rgba(15,20,28,.18);display:flex;flex-direction:column}
.widget-panel-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:20px 20px 16px;border-bottom:1px solid var(--line)}
.widget-panel-head strong{font-size:18px;font-family:var(--font-heading)}
.widget-panel-head small{display:block;margin-top:6px;font-size:13px;color:var(--muted);line-height:1.5}
.widget-panel-head button{background:none;border:0;font-size:16px;cursor:pointer;color:var(--muted);padding:2px}
.widget-panel-search{padding:14px 20px 0}
.widget-panel-search input{width:100%;height:38px;border-radius:999px;border:1px solid var(--line);padding:0 16px;font:inherit;font-size:13px;background:#f7f8fa}
.widget-panel-search input:focus{outline:2px solid var(--blue);outline-offset:1px}
.widget-panel-body{flex:1;overflow-y:auto;padding:8px 20px 24px}
.widget-panel-section{font-size:11.5px;font-weight:700;letter-spacing:.06em;color:var(--muted);text-transform:uppercase;margin:20px 0 8px}
.widget-row{display:flex;align-items:center;gap:12px;padding:11px 4px;border-bottom:1px solid var(--line)}
.widget-row:last-child{border-bottom:0}
.widget-row-group{border-bottom:1px solid var(--line)}
.widget-row-group .widget-row{border-bottom:0}
.widget-row-group:last-child{border-bottom:0}
details.widget-subrow{margin:0 0 6px 44px}
details.widget-subrow summary{cursor:pointer;font-size:12px;color:var(--muted);padding:6px 4px;list-style:none}
details.widget-subrow summary::-webkit-details-marker{display:none}
details.widget-subrow summary::before{content:"▸ ";display:inline-block}
details.widget-subrow[open] summary::before{content:"▾ "}
details.widget-subrow .widget-row{padding-left:0;border-bottom:1px solid var(--line)}
details.widget-subrow .widget-row:last-child{border-bottom:0}
.widget-row-icon{width:32px;height:32px;border-radius:var(--r-sm);display:flex;align-items:center;justify-content:center;font-size:15px;flex-shrink:0}
.widget-row-text{flex:1;min-width:0}
.widget-row-text strong{display:block;font-size:14px}
.widget-row-text small{display:block;font-size:12px;color:var(--muted);line-height:1.4;margin-top:2px}
.widget-toggle{position:relative;flex-shrink:0;width:38px;height:22px;border-radius:999px;border:0;background:#d5dce3;cursor:pointer;transition:background .15s ease}
.widget-toggle::after{content:"";position:absolute;top:2px;left:2px;width:18px;height:18px;border-radius:50%;background:#fff;transition:transform .15s ease;box-shadow:0 1px 3px rgba(0,0,0,.25)}
.widget-toggle.on{background:var(--blue)}
.widget-toggle.on::after{transform:translateX(16px)}
@media(max-width:480px){.widget-panel{width:100vw}.widget-panel-btn span{display:none}}
.widget-icon{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:var(--r-sm);font-size:15px;margin-right:9px;vertical-align:middle}
.stage-suggestions{display:grid;gap:10px;margin-bottom:14px}
.stage-suggestion-row{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;background:var(--blue-soft);border:1px solid var(--blue);border-radius:var(--r-md);padding:12px 14px}
.stage-suggestion-row strong{font-size:14px}
.stage-suggestion-row .editor-note{margin:4px 0 0}
.stage-suggestion-actions{display:flex;gap:6px;flex-shrink:0}
.ai-summary{background:var(--blue-soft);border:1px solid var(--blue);border-radius:var(--r-md);padding:8px 10px;margin:2px 0 0;font-size:13.5px;white-space:normal}
.dash-summary-btn{align-self:flex-start;padding:0;font-size:12.5px}
.stage-suggestion-actions button{margin:0}

/* Dashboard (dist/dashboard.js): korttiasettelu. Värit tulevat styles.css:n sinisistä :root-muuttujista. */
.dash-heading{margin:4px 0 26px}
.dash-heading p{margin:0 0 6px;font-size:14px;color:var(--muted)}
.dash-heading h1{margin:0;font-size:clamp(28px,3.4vw,38px);line-height:1.15}
.dash-band{margin-bottom:22px}
.dash-cols{display:grid;grid-template-columns:repeat(var(--dash-cols,3),minmax(0,1fr));gap:22px;align-items:start}
.dash-col{display:flex;flex-direction:column;gap:22px;min-width:0}
.dash-card{background:var(--surface);border:1px solid var(--line-soft);border-radius:26px;box-shadow:var(--shadow);padding:22px 24px;min-width:0}
.dash-card.dash-tinted{background:var(--blue-soft);border-color:#cfdce8}
.dash-card-head{display:flex;align-items:center;gap:12px;margin-bottom:14px;flex-wrap:wrap}
.dash-card-head h2{margin:0;font-family:var(--font-body);font-size:17px;font-weight:600;letter-spacing:0;flex:1;min-width:0}
.dash-card[data-dash-key="assistant"] .dash-card-head h2{font-family:var(--font-heading);font-size:20px;font-weight:600}
.dash-card-head.compact{gap:8px;margin-bottom:6px}
.dash-card-head.compact h2{font-size:14px;font-weight:600;color:var(--blue-dark)}
.dash-inline-icon{width:18px;height:18px;color:var(--blue-dark)}
.dash-icon{width:40px;height:40px;border-radius:12px;background:var(--blue-soft);color:var(--blue);display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}
.dash-icon svg{width:19px;height:19px}
.dash-chips{display:flex;gap:6px;flex-wrap:wrap;margin-left:auto}
.dash-chip{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border-radius:999px;border:1px solid var(--line);background:#f7f9fc;font-size:12px;font-weight:500;color:var(--muted);white-space:nowrap}
.dash-chip.soft{border-color:transparent;background:#f1f3f6;color:#4a5562;border-radius:7px;padding:2px 9px}
.dash-chip.warn{border-color:transparent;background:var(--amber-soft);color:#8a4b17;border-radius:7px;padding:2px 9px}

.dash-live{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--muted);margin-left:auto}
.dash-live i,.dash-sync i{width:7px;height:7px;border-radius:50%;background:var(--green);display:inline-block}
.dash-live i{animation:dash-pulse 2s ease-in-out infinite}
@keyframes dash-pulse{50%{opacity:.35}}
.dash-month{margin-left:auto;font-size:13px;font-weight:600;color:var(--muted)}
.dash-big{margin:4px 0 12px;font-family:var(--font-heading);font-size:44px;font-weight:600;line-height:1;color:var(--ink)}
.dash-big span{font-family:var(--font-body);font-size:18px;font-weight:500;color:var(--blue-dark)}
.dash-progress{height:8px;border-radius:999px;background:#c9d7e4;overflow:hidden}
.dash-progress span{display:block;height:100%;border-radius:inherit;background:var(--blue-dark);transition:width .4s ease}
.dash-muted{margin:10px 0 0;font-size:13.5px;line-height:1.55;color:var(--muted)}
.dash-muted.small,.dash-total.small{font-size:12.5px}
.dash-list{display:flex;flex-direction:column}
.dash-row{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:13px 0;border-top:1px solid var(--line-soft);background:none;border-left:0;border-right:0;border-bottom:0;text-align:left;font:inherit;color:inherit;width:100%;min-width:0}
.dash-list .dash-row:first-child{border-top:0;padding-top:4px}
button.dash-row{cursor:pointer;border-radius:0}
button.dash-row:hover strong{color:var(--blue)}
.dash-card:not(.expanded) .dash-extra{display:none}
.dash-row-main{display:flex;flex-direction:column;gap:4px;min-width:0;flex:1}
.dash-row-main strong{font-size:14.5px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dash-row-main strong a{color:inherit;text-decoration:none}
.dash-row-main strong a:hover{color:var(--blue);text-decoration:underline}
.dash-row-main small,.dash-row-side small{font-size:12.5px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
small.red,.dash-activity small.red{color:var(--red);font-weight:600}
.dash-row-side{display:flex;flex-direction:column;align-items:flex-end;gap:6px;flex-shrink:0;max-width:45%}
.dash-tags{display:flex;gap:6px;flex-wrap:wrap}
.dash-tag{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:7px;background:#f1f3f6;color:#4a5562;font-size:11.5px;font-weight:600;white-space:nowrap}
.dash-tag svg{width:12px;height:12px}
.dash-tag.blue{background:var(--blue-soft);color:var(--blue-dark)}
.dash-tag.red{background:var(--red-soft);color:#a3241d}
.dash-amount{font-family:var(--font-heading);font-size:16px;font-weight:600;white-space:nowrap}
.dash-amount.red{color:var(--red)}
.dash-activity{justify-content:flex-start;align-items:flex-start}
.dash-activity>span{display:flex;flex-direction:column;gap:3px;min-width:0}
.dash-activity strong{font-size:14.5px;font-weight:600}
.dash-activity small{font-size:12.5px;color:var(--muted)}
.dash-dot{width:9px;height:9px;border-radius:50%;flex-shrink:0;margin-top:6px;display:inline-block;box-shadow:0 0 0 3px var(--surface),0 0 0 4px var(--line)}
.dash-dot.red{background:var(--red)}.dash-dot.blue{background:var(--blue)}.dash-dot.green{background:var(--green)}.dash-dot.violet{background:#7b5cc4}
.dash-cal-title{display:flex;align-items:center;gap:10px;color:inherit;text-decoration:none;min-width:0}
.dash-cal-title .dash-dot{margin-top:0}
a.dash-cal-title:hover strong{color:var(--blue)}
.dash-list .dash-cal-title+small{padding-left:19px}
.dash-card-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:14px;padding-top:12px;border-top:1px solid var(--line-soft)}
.dash-foot-left{display:flex;align-items:center;gap:8px;flex-wrap:wrap;min-width:0;flex:1}
.dash-sync{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--muted);white-space:nowrap}
.dash-sync i{background:#b8c3cf}
.dash-refresh{border:0;background:none;padding:4px;border-radius:8px;color:var(--muted);cursor:pointer;display:inline-flex}
.dash-refresh:hover{background:var(--blue-soft);color:var(--blue)}
.dash-refresh svg{width:15px;height:15px}
.dash-refresh.spinning svg{animation:dash-spin 1s linear infinite}
@keyframes dash-spin{to{transform:rotate(360deg)}}
.dash-more{border:0;background:none;padding:4px 0;font:inherit;font-size:13.5px;flex-shrink:0;font-weight:600;color:var(--blue-dark);cursor:pointer;white-space:nowrap}
.dash-more:hover{color:var(--blue);text-decoration:underline}
.dash-card .text-btn{font-size:13px}
.dash-empty p{margin:0 0 12px;font-size:14px;line-height:1.55;color:var(--muted)}
.dash-card .secondary-btn{margin-top:12px}
.dash-empty .secondary-btn{margin-top:0}
.dash-ask{display:flex;gap:10px;margin:6px 0 14px}
.dash-ask input{flex:1;min-width:0;height:48px;padding:0 16px;border:1px solid var(--line);border-radius:14px;background:var(--surface);font:inherit;font-size:15px;color:var(--ink)}
.dash-ask input:focus{outline:2px solid var(--blue);outline-offset:1px;border-color:transparent}
.dash-ask-send{width:48px;height:48px;border-radius:14px;border:0;background:var(--blue);color:#fff;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0}
.dash-ask-send:hover{background:var(--blue-dark)}
.dash-ask-chips{display:flex;flex-wrap:wrap;gap:8px}
.dash-ask-chip{border:1px solid var(--line);background:var(--surface);border-radius:999px;padding:8px 14px;font:inherit;font-size:13.5px;color:var(--ink);cursor:pointer;text-align:left;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dash-ask-chip:hover{border-color:var(--blue);background:var(--blue-soft)}
.dash-card[data-dash-key="assistant"]{background:linear-gradient(180deg,var(--blue-soft),var(--surface) 85%)}
.dash-talous{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(260px,1fr);padding:0;overflow:hidden}
.dash-talous-main{padding:22px 24px}
.dash-talous-side{padding:22px 24px;border-left:1px solid var(--line-soft);display:flex;flex-direction:column}
.dash-talous-side h3{margin:0 0 12px;font-family:var(--font-body);font-size:12px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--muted)}
.dash-talous-side .dash-card-foot{margin-top:auto}
.dash-talous-controls{display:flex;gap:10px;flex-wrap:wrap;margin-left:auto}
.dash-seg{display:inline-flex;padding:3px;border-radius:12px;background:#f1f3f6;border:1px solid var(--line-soft)}
.dash-seg button{border:0;background:none;padding:6px 12px;border-radius:9px;font:inherit;font-size:13px;font-weight:600;color:var(--muted);cursor:pointer}
.dash-seg button.active{background:var(--blue);color:#fff}
.dash-seg button:disabled{cursor:not-allowed;opacity:.6}
.dash-periods{display:inline-flex;gap:6px}
.dash-periods button{border:1px solid var(--line);background:var(--surface);padding:6px 12px;border-radius:10px;font:inherit;font-size:13px;font-weight:500;color:var(--ink);cursor:pointer}
.dash-periods button.active{border-color:var(--blue);background:var(--blue-soft);color:var(--blue-dark);font-weight:600}
.dash-total{margin:4px 0 18px;font-family:var(--font-heading);font-size:36px;font-weight:600;line-height:1.1;display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.dash-change{font-family:var(--font-body);font-size:14px;font-weight:600}
.dash-change.up{color:var(--green)}.dash-change.down{color:var(--red)}.dash-change.none{color:var(--muted);font-weight:500;font-size:13px}
.dash-bars{display:flex;align-items:flex-end;gap:clamp(6px,2.2vw,28px);height:170px;padding:0 4px}
.dash-bars.dense{gap:3px}
.dash-bar{flex:1;height:100%;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;gap:8px;min-width:0}
.dash-bar span{display:block;width:100%;max-width:46px;border-radius:8px 8px 5px 5px;background:#bfd0e0;transition:height .3s ease}
.dash-bars.dense .dash-bar span{border-radius:4px 4px 2px 2px}
.dash-bar.current span{background:var(--blue)}
.dash-bar.late span{background:var(--red)}
.dash-bar small{font-size:11.5px;color:var(--muted);height:14px;line-height:14px;white-space:nowrap}
.dash-bar.current small{color:var(--ink);font-weight:600}
.dash-bar.late small{color:var(--red);font-weight:600}
/* Päivän reitti (dashboard.js dashRoutePlanBody, Kalenteri-kortin sisällä) */
.dash-route-cta{margin-top:14px;padding-top:14px;border-top:1px solid var(--line-soft)}
.dash-route-cta a.text-btn{text-decoration:none}
.dash-route-cta a.text-btn:hover{text-decoration:underline}
.widget-row-icon{background:var(--blue-soft);color:var(--blue)}
.widget-row-icon svg{width:17px;height:17px}
.widget-row.disabled{opacity:.6}
@media(max-width:1180px){.dash-talous{grid-template-columns:1fr}.dash-talous-side{border-left:0;border-top:1px solid var(--line-soft)}}
@media(max-width:640px){.dash-card{padding:18px;border-radius:22px}.dash-talous{padding:0}.dash-talous-main,.dash-talous-side{padding:18px}.dash-talous-controls{margin-left:0;width:100%}.dash-big{font-size:38px}.dash-total{font-size:30px}.dash-bars{height:140px}}
/* Kannattavuusennuste (dashboard.js dashProfit) */
.dash-profit .hero-sub{margin:-4px 0 16px;font-size:14px;color:var(--muted)}
.profit-grid{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(300px,1fr);gap:28px;align-items:start}
.profit-chart{min-width:0}
.profit-bars{display:flex;align-items:flex-end;gap:clamp(8px,2vw,22px);min-height:250px}
.profit-col{flex:1;min-width:0;display:flex;flex-direction:column;align-items:center;gap:6px;transition:opacity .2s}
.profit-col.dim{opacity:.5}
.profit-value{font-family:var(--font-heading);font-size:17px;font-weight:600}
.profit-bar-track{height:150px;width:100%;max-width:64px;display:flex;align-items:flex-end}
.profit-bar{display:block;width:100%;border-radius:10px 10px 6px 6px;background:#bfd0e0;transition:height .3s}
.profit-col.best .profit-bar{background:var(--blue)}
.dash-chip.best{border-color:transparent;background:var(--blue-soft);color:var(--blue-dark);font-weight:700}
.profit-chip-space{height:22px}
.profit-label{display:flex;flex-direction:column;align-items:center;text-align:center;font-size:12px;color:var(--muted);line-height:1.3;max-width:100%}
.profit-label strong{color:var(--ink);font-size:12.5px;font-weight:600;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.profit-detail{background:#f7f9fc;border:1px solid var(--line-soft);border-radius:20px;padding:20px 22px}
.profit-detail-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.profit-detail-head h3{margin:0;font-size:19px;line-height:1.3}
.profit-badge{flex-shrink:0;padding:4px 12px;border-radius:999px;background:var(--blue);color:#fff;font-weight:700;font-size:14px}
.profit-capacity{margin:14px 0 6px}
.profit-capacity-label{display:flex;justify-content:space-between;gap:8px;flex-wrap:wrap;font-size:13px;margin-bottom:6px}
.profit-capacity-label small{color:var(--muted)}
.dash-progress.over span{background:var(--red)}
.profit-warn,.profit-missing{margin:8px 0 0;font-size:13px;color:#a3241d}
.profit-missing{margin:-6px 0 14px;padding:10px 14px;border-radius:12px;background:var(--amber-soft);color:#6f3d10}
.profit-guard{margin:-6px 0 14px;padding:10px 14px;border-radius:12px;background:var(--red-soft);color:#a3241d}
.profit-guard h3{display:flex;align-items:center;gap:6px;margin:0 0 4px;font-size:13px;font-weight:700}
.profit-guard h3 svg{width:14px;height:14px}
.profit-guard-row{margin:2px 0;font-size:13px;line-height:1.5}
.calc-rows{margin-top:12px;border-top:1px solid var(--line-soft)}
.calc-row{display:flex;justify-content:space-between;gap:12px;padding:9px 0;border-bottom:1px solid var(--line-soft);font-size:14px}
.calc-row .neg{color:var(--red)}
.calc-row-total{font-weight:700;font-size:15px;border-bottom:0}
.profit-actions{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-top:12px}
.profit-actions .secondary-btn{margin-top:0}
.calc-compare{margin-top:14px;padding-top:12px;border-top:1px solid var(--line-soft)}
.calc-compare h3{margin:0 0 6px;font-family:var(--font-body);font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.calc-compare-row{margin:6px 0 0;font-size:13px;line-height:1.5;color:var(--muted)}
.jobs-notice{display:flex;align-items:center;gap:16px;justify-content:space-between;flex-wrap:wrap;margin:0 0 16px;padding:14px 16px;border-radius:14px;background:var(--blue-soft);border:1px solid #cfdce8}
.jobs-notice p{margin:0;flex:1;min-width:220px;font-size:13.5px;line-height:1.55}
.jobs-notice .secondary-btn{margin-top:0}
@media(max-width:1100px){.profit-grid{grid-template-columns:1fr}}
@media(max-width:640px){.profit-bars{min-height:220px;gap:6px}.profit-bar-track{height:120px}.profit-value{font-size:14px}}
/* Tarjoukset-sivu (jobs.js) */
.jobs-intro{margin:0 0 16px}
.jobs-new{margin-bottom:18px}
.jobs-new summary{cursor:pointer;font-weight:600}
.jobs-filters{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 14px}
.jobs-filters button{border:1px solid var(--line);background:var(--surface);border-radius:999px;padding:7px 14px;font:inherit;font-size:13.5px;cursor:pointer}
.jobs-filters button.active{border-color:var(--blue);background:var(--blue-soft);color:var(--blue-dark);font-weight:600}
.jobs-filters span{color:var(--muted);margin-left:4px}
.jobs-list{display:flex;flex-direction:column;gap:14px}
.job-row{background:var(--surface);border:1px solid var(--line-soft);border-radius:20px;padding:18px 20px;box-shadow:var(--shadow)}
.job-row.missing{border-color:#f0c9a4}
.job-row-head{display:flex;justify-content:space-between;gap:12px;margin-bottom:10px}
.job-row-head strong{display:block;font-size:16px}
.job-row-head small{color:var(--muted);font-size:13px}
.job-row-margin{text-align:right;flex-shrink:0}
.job-margin{display:block;font-family:var(--font-heading);font-size:20px;font-weight:600}
.job-missing{margin:0 0 10px;font-size:13px;color:#6f3d10;background:var(--amber-soft);padding:8px 12px;border-radius:10px}
.job-fields{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:10px 14px}
.job-fields label{display:flex;flex-direction:column;gap:4px;font-size:12.5px;font-weight:600;color:var(--muted)}
.job-fields input,.job-fields select{padding:9px 10px;border:1px solid #b9c9d9;border-radius:8px;font:inherit;font-size:14px;color:var(--ink);background:#fff;font-weight:400}
.job-fields label small{font-weight:400;font-size:11.5px}
.job-wide{grid-column:1/-1}
.job-row-actions{display:flex;align-items:center;gap:12px;margin-top:12px;grid-column:1/-1}
.job-row-actions .secondary-btn,.job-row-actions .primary-btn{margin-top:0}
.dash-card-head h2{min-width:max-content}
.dash-month{white-space:nowrap}
@media(max-width:640px){.dash-profit .dash-month{flex-basis:100%;margin-left:52px;margin-top:-8px}}
/* ===== Ainio widget-design-system (docs: ainio-widget-design-system.md) =====
   Vain dokumentin värit; var(--font-heading) vain tervehdykseen ja isoihin lukuihin; ikonit inline-SVG:nä. */
.dash-root{--ds-blue:var(--acc-d,#2f5fa8);--ds-blue-2:var(--acc,#3b6fd1);--ds-blue-3:#4d7bc4;--ds-blue-4:var(--acc-m,#6fa0e0);--ds-ink:#16202e;--ds-muted:#6b7686;--ds-faint:#8891a3;--ds-label:#9aa2b1;--ds-line:#eef0f4;--ds-line-2:#e9ecf1;--ds-line-3:#dfe1e6;--ds-line-4:#e3e9f5;--ds-line-5:#dfe8f7;--ds-tint:var(--acc-t,#eef3fb);--ds-tint-line:#e2e9f7;--ds-icon-bg:#e3ebfa;--ds-green:#2e9b5c;--ds-green-bg:#eaf6ec;--ds-red:#e0453c;--ds-red-bg:#fdeceb;--ds-open-bg:#e7f0fb;max-width:1400px;color:var(--ds-ink)}
.dash-root .dash-heading h1{font-family:var(--font-heading)}
.dash-root .dash-heading p{color:var(--ds-muted)}
.dash-root .dash-cols,.dash-root .dash-col{gap:18px}
.dash-root .dash-band{margin-bottom:18px}
.dash-root .dash-card{border-radius:15px;padding:20px;border:1px solid var(--ds-line);background:#fff;box-shadow:0 1px 2px rgba(16,24,40,.04),0 1px 1px rgba(16,24,40,.02)}
.dash-root .dash-card.card-tint{background:var(--ds-tint);border-color:var(--ds-tint-line)}
.dash-root .dash-card-head{gap:10px;margin-bottom:14px}
.dash-root .dash-card-head h2,.dash-root .dash-card[data-dash-key="assistant"] .dash-card-head h2{font-family:var(--font-body);font-size:16px;font-weight:700;color:var(--ds-ink);letter-spacing:0}
.dash-root .dash-icon{width:34px;height:34px;border-radius:9px;background:var(--ds-icon-bg);color:var(--ds-blue)}
.dash-root .dash-icon svg{width:17px;height:17px;stroke-width:2.2}
.dash-root .dash-inline-icon{width:16px;height:16px;stroke-width:2.2;color:var(--ds-blue)}
.dash-root .dash-card-head.compact h2{font-size:13px;color:var(--ds-blue)}
.dash-root .dash-arrow{width:14px;height:14px;stroke-width:2.4;vertical-align:-2px;margin-left:2px}
.dash-root .dash-alert{width:14px;height:14px;stroke-width:2.2;vertical-align:-2px;color:var(--ds-red);margin-right:2px}
.dash-root .tag{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border-radius:999px;background:#f4f5f7;border:1px solid var(--ds-line-2);font-size:12px;font-weight:600;color:var(--ds-muted);white-space:nowrap}
.dash-root .dash-chips{margin-left:auto}
.dash-root .dash-live{color:var(--ds-green);font-weight:600}
.dash-root .dash-live i{background:var(--ds-green)}
.dash-root .status-pill{display:inline-flex;align-items:center;padding:2px 9px;border-radius:999px;font-size:11.5px;font-weight:700;white-space:nowrap}
.dash-root .status-paid{background:var(--ds-green-bg);color:var(--ds-green)}
.dash-root .status-open{background:var(--ds-open-bg);color:var(--ds-blue)}
.dash-root .status-late{background:var(--ds-red-bg);color:var(--ds-red)}
.dash-root .dash-row{border-top-color:var(--ds-line)}
.dash-root .dash-row-main strong{color:var(--ds-ink)}
.dash-root .dash-row-main small,.dash-root .dash-row-side small,.dash-root .dash-muted,.dash-root .dash-sync{color:var(--ds-muted)}
.dash-root .dash-amount,.dash-root .profit-value{font-family:var(--font-body);font-weight:700;color:var(--ds-ink)}
.dash-root .dash-amount.red,.dash-root small.red,.dash-root .dash-activity small.red{color:var(--ds-red)}
.dash-root .dash-big,.dash-root .dash-total{font-family:var(--font-heading);color:var(--ds-ink)}
.dash-root .dash-big span{color:var(--ds-blue)}
.dash-root .dash-change.up{color:var(--ds-green)}
.dash-root .dash-change.down{color:var(--ds-red)}
.dash-root .dash-progress{background:var(--ds-line-4)}
.dash-root .dash-progress span{background:var(--ds-blue)}
.dash-root .dash-progress.over span{background:var(--ds-red)}
.dash-root .dash-dot.red{background:var(--ds-red)}.dash-root .dash-dot.blue{background:var(--ds-blue)}.dash-root .dash-dot.green{background:var(--ds-green)}.dash-root .dash-dot.light{background:var(--ds-blue-4)}
.dash-root .dash-dot{box-shadow:none}
.dash-root .dash-more{color:var(--ds-blue);font-weight:700}
.dash-root .dash-card-foot{border-top-color:var(--ds-line)}
.dash-root .dash-bar span{background:var(--ds-line-5)}
.dash-root .dash-bar.current span{background:var(--ds-blue)}
.dash-root .dash-bar small,.dash-root .profit-label{color:var(--ds-label)}
.dash-root .dash-seg{background:#f4f5f7;border-color:var(--ds-line-2)}
.dash-root .dash-seg button.active{background:var(--ds-blue)}
.dash-root .dash-periods button{border-color:var(--ds-line-3)}
.dash-root .dash-periods button.active{border-color:var(--ds-blue);background:var(--ds-open-bg);color:var(--ds-blue)}
.dash-root .dash-talous-side{border-left-color:var(--ds-line)}
.dash-root .dash-talous-side h3,.dash-root .calc-compare h3{font-size:11.5px;letter-spacing:.05em;text-transform:uppercase;color:var(--ds-label)}
.dash-root .dash-talous{padding:0}
.dash-root .dash-ask input{border-color:var(--ds-line-3);border-radius:11px}
.dash-root .dash-ask-send{background:var(--ds-blue);border-radius:11px}
.dash-root .dash-ask-chip{border-color:var(--ds-line-5);background:#fff}
.dash-root .dash-card[data-dash-key="assistant"]{background:var(--ds-tint)}
/* Tyhjät tilat (kohta 7) */
.dash-root .muted{margin:0 0 12px;font-size:14px;line-height:1.55;color:var(--ds-muted)}
.dash-root .btn-outline{display:inline-flex;align-items:center;gap:6px;height:36px;padding:0 14px;border-radius:9px;border:1px solid var(--ds-line-3);background:#fff;color:var(--ds-ink);font:inherit;font-size:13.5px;font-weight:600;cursor:pointer}
.dash-root .btn-outline:hover{border-color:var(--ds-blue);color:var(--ds-blue)}
.dash-root .divider{height:1px;background:var(--ds-line);margin:16px 0 10px}
.dash-root .rowlink{display:flex;align-items:center;gap:7px;font-size:12.5px;color:var(--ds-faint)}
.dash-root .rowlink svg{width:13px;height:13px;stroke-width:2.2}
/* Hero: Kannattavuusennuste (kohta 5) */
.dash-root .dash-card.hero{position:relative;overflow:hidden;padding:26px 28px;background:linear-gradient(135deg,#ffffff 0%,var(--ds-tint) 100%);border-color:var(--ds-tint-line)}
.dash-root .dash-card.hero::before{content:"";position:absolute;inset:0 0 auto 0;height:3px;background:linear-gradient(90deg,var(--ds-blue),var(--ds-blue-2),var(--ds-blue-4))}
.dash-root .hero .dash-card-head h2{font-size:18px}
.dash-root .hero-tag{margin-left:auto;background:var(--ds-open-bg);border-color:var(--ds-line-5);color:var(--ds-blue)}
.dash-root .profit-bar{background:var(--ds-line-5)}
.dash-root .profit-col.best .profit-bar{background:linear-gradient(180deg,var(--ds-blue-3),var(--ds-blue))}
.dash-root .dash-chip.best{background:var(--ds-open-bg);color:var(--ds-blue)}
.dash-root .profit-label strong{color:var(--ds-ink)}
.dash-root .profit-detail{background:#fff;border-color:var(--ds-line-4);border-radius:15px}
.dash-root .profit-detail-head h3{font-family:var(--font-body);font-size:17px;font-weight:700;color:var(--ds-ink)}
.dash-root .profit-badge{background:var(--ds-blue)}
.dash-root .profit-missing{background:var(--ds-red-bg);color:var(--ds-red)}
.dash-root .profit-guard{background:var(--ds-red-bg);color:var(--ds-red)}
.dash-root .profit-warn,.dash-root .calc-row .neg{color:var(--ds-red)}
.dash-root .calc-rows,.dash-root .calc-row,.dash-root .calc-compare{border-color:var(--ds-line)}
.dash-root .calc-compare-row{color:var(--ds-muted)}
.dash-root .jobs-notice{background:var(--ds-tint);border-color:var(--ds-tint-line)}
.dash-root .dash-warn-line{color:var(--ds-red)}
@media(max-width:640px){.dash-root .dash-card.hero{padding:20px}.dash-root .hero-tag{margin-left:44px}}
/* Tarjoukset-sivun varoitus samalla semanttisella punaisella */
.job-row.missing{border-color:#fdeceb}
.job-missing{background:#fdeceb;color:#e0453c}
/* Yhtenäinen tumma header-banner (design system kohta 10): yläpalkki ja tervehdys samalla gradientilla, vain Dashboardilla */
.top-area{position:sticky;top:0;z-index:10}
.banner-deco,.dash-banner{display:none}
.dash-view .top-area{position:relative;overflow:hidden;background:linear-gradient(128deg,#0d1119 0%,#182644 48%,#2f5fa8 100%)}
.dash-view .banner-deco{display:block;position:absolute;inset:0;pointer-events:none}
.banner-glow{position:absolute;border-radius:50%;filter:blur(60px)}
.banner-glow-a{top:-120px;right:8%;width:360px;height:260px;background:radial-gradient(circle,rgba(111,160,224,.38),transparent 70%)}
.banner-glow-b{bottom:-140px;left:-60px;width:420px;height:280px;background:radial-gradient(circle,rgba(47,95,168,.5),transparent 70%)}
.banner-ridge{position:absolute;left:0;right:0;bottom:0;width:100%;height:70px;stroke:none}
.banner-nodes{stroke-width:1;position:absolute;top:64px;right:max(40px,calc((100% - 1540px)/2 + 40px));width:120px;height:80px}
.dash-view .topbar{position:relative;z-index:1;background:transparent;border-bottom:0;backdrop-filter:none}
.dash-view .breadcrumb span,.dash-view .breadcrumb svg{color:rgba(244,246,250,.5)}
.dash-view .breadcrumb strong{color:#fff}
.dash-view .widget-panel-btn,.dash-view .theme-toggle{box-shadow:0 2px 10px rgba(5,7,12,.28)}
.dash-view .mobile-menu{border-color:rgba(255,255,255,.18);background:rgba(255,255,255,.08)}
.dash-view .mobile-menu span{background:#fff}
.dash-view .dash-banner{display:block;position:relative;z-index:1;padding:22px max(40px,calc((100% - 1540px)/2 + 40px)) 58px}
.dash-banner p{margin:0 0 6px;font-size:14px;color:rgba(244,246,250,.5)}
.dash-banner h1{margin:0;padding-right:130px;font-family:var(--font-heading);font-size:clamp(28px,3.4vw,38px);line-height:1.15;color:#fff;overflow-wrap:anywhere}
.dash-view .content-wrap{padding-top:28px}
@media(max-width:880px){.dash-view .dash-banner{padding:16px 18px 50px}.banner-nodes{display:none}.dash-banner h1{padding-right:0}.dash-view .content-wrap{padding-top:20px}}
/* Dashboardin käsin viimeistellyt pimeätilan värit (kohta 11). Muun sovelluksen pimeätila: styles.css:n tokenit + generoitu dark.css. */
html[data-theme="dark"].dash-view .widget-panel-btn,html[data-theme="dark"].dash-view .theme-toggle{background:#141a26;border-color:rgba(255,255,255,.12);color:#f4f6fa}
html[data-theme="dark"] .dash-root{color-scheme:dark;
 --surface:#141a26;--line:rgba(255,255,255,.1);--line-soft:rgba(255,255,255,.06);--ink:#f4f6fa;--muted:#98a3ba;
 --blue:var(--acc,#3b6fd1);--blue-dark:#8fb4e8;--blue-soft:rgba(var(--acc-d-rgb,47,95,168),.14);--red:#ff8a7e;--red-soft:rgba(224,69,60,.16);--green:#6fcf8e;--amber-soft:rgba(224,69,60,.16);--shadow:none;
 --ds-blue:var(--acc,#3b6fd1);--ds-ink:#f4f6fa;--ds-muted:#98a3ba;--ds-faint:#8b94a8;--ds-label:#7c869a;
 --ds-line:rgba(255,255,255,.06);--ds-line-2:rgba(255,255,255,.08);--ds-line-3:rgba(255,255,255,.12);--ds-line-4:rgba(255,255,255,.08);--ds-line-5:rgba(255,255,255,.1);
 --ds-tint:rgba(var(--acc-d-rgb,47,95,168),.1);--ds-tint-line:rgba(var(--acc-m-rgb,111,160,224),.18);--ds-icon-bg:rgba(var(--acc-d-rgb,47,95,168),.22);
 --ds-green:#6fcf8e;--ds-green-bg:rgba(46,155,92,.15);--ds-red:#ff8a7e;--ds-red-bg:rgba(224,69,60,.16);--ds-open-bg:rgba(var(--acc-d-rgb,47,95,168),.2)}
html[data-theme="dark"] .dash-root .dash-card{background:#141a26;border-color:rgba(255,255,255,.06);box-shadow:none}
html[data-theme="dark"] .dash-root .dash-card.card-tint,html[data-theme="dark"] .dash-root .dash-card[data-dash-key="assistant"]{background:var(--ds-tint);border-color:var(--ds-tint-line)}
html[data-theme="dark"] .dash-root .dash-card.hero{background:linear-gradient(135deg,#141d30,#182644);border-color:rgba(var(--acc-m-rgb,111,160,224),.22)}
html[data-theme="dark"] .dash-root .profit-detail{background:#101623;border-color:rgba(255,255,255,.08)}
html[data-theme="dark"] .dash-root :is(.dash-icon,.dash-inline-icon,.dash-more,.dash-big span,.status-open,.dash-chip.best,.dash-periods button.active,.dash-card-head.compact h2,.btn-outline:hover){color:#8fb4e8}
html[data-theme="dark"] .dash-root .hero-tag{color:var(--acc-l,#9dc0f2)}
html[data-theme="dark"] .dash-root :is(.dash-row-main strong a:hover,button.dash-row:hover strong,a.dash-cal-title:hover strong,.dash-more:hover){color:var(--acc-l,#9dc0f2)}
html[data-theme="dark"] .dash-root :is(.tag,.dash-chip,.dash-chip.soft,.dash-tag,.dash-seg){background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.08);color:#98a3ba}
html[data-theme="dark"] .dash-root .dash-tag.blue{background:rgba(var(--acc-d-rgb,47,95,168),.2);color:#8fb4e8}
html[data-theme="dark"] .dash-root .dash-tag.red,html[data-theme="dark"] .dash-root .dash-chip.warn{background:rgba(224,69,60,.16);color:#ff8a7e}
html[data-theme="dark"] .dash-root :is(.btn-outline,.dash-ask-chip,.dash-ask input,.dash-periods button){background:#101623;border-color:rgba(255,255,255,.12);color:#f4f6fa}
html[data-theme="dark"] .dash-root .dash-ask input::placeholder{color:#7c869a}
html[data-theme="dark"] .dash-root :is(.dash-progress,.dash-sync i){background:rgba(255,255,255,.12)}
html[data-theme="dark"] .dash-root .dash-progress span,html[data-theme="dark"] .dash-root .dash-bar.current span{background:var(--acc,#3b6fd1)}
html[data-theme="dark"] .dash-root .dash-progress.over span{background:#e0453c}
html[data-theme="dark"] .dash-root :is(.dash-bar span,.profit-bar){background:rgba(255,255,255,.1)}
html[data-theme="dark"] .dash-root .profit-col.best .profit-bar{background:linear-gradient(180deg,#4d7bc4,var(--acc,#3b6fd1))}
html[data-theme="dark"] .dash-root :is(.profit-warn,.profit-missing,.profit-guard,.calc-row .neg,.dash-warn-line){color:#ff8a7e}
html[data-theme="dark"] .dash-root .dash-dot{box-shadow:0 0 0 3px #141a26,0 0 0 4px rgba(255,255,255,.12)}
html[data-theme="dark"] .dash-root .empty-state{background:#141a26;border-color:rgba(255,255,255,.06);color:#f4f6fa}
html[data-theme="dark"] .dash-root .secondary-btn{background:#101623;border-color:rgba(255,255,255,.12);color:#f4f6fa}
html[data-theme="dark"] .dash-root .secondary-btn:hover{background:rgba(var(--acc-d-rgb,47,95,168),.2);border-color:rgba(var(--acc-m-rgb,111,160,224),.3)}
html[data-theme="dark"] .dash-root .text-btn,html[data-theme="dark"] .dash-root .jobs-notice a{color:#8fb4e8}
html[data-theme="dark"] .widget-toggle{background:rgba(255,255,255,.16)}
html[data-theme="dark"] .widget-toggle.on{background:var(--acc,#3b6fd1)}
html[data-theme="dark"] .widget-toggle::after{background:#f4f6fa}
/* Kiinteä oletusjärjestys: pääosa + "Yhteydet ja asetukset" -osio */
.dash-section{margin-top:34px;padding-top:22px;border-top:1px solid var(--line-soft)}
.dash-section-head{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap;margin:0 2px 14px}
.dash-section-head h2{margin:0;font-family:var(--font-body);font-size:12px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--ds-label,#9aa2b1)}
.dash-section-head p{margin:0;font-size:12.5px;color:var(--ds-label,#9aa2b1)}
.dash-root .dash-head-text{display:flex;flex-direction:column;gap:2px;min-width:0}
.dash-root .dash-head-sub{margin:0;font-size:12.5px;color:var(--ds-muted)}
.dash-root .hero .dash-icon{width:40px;height:40px;border-radius:11px;background:var(--ds-blue);color:#fff;box-shadow:0 6px 14px -4px rgba(47,95,168,.5)}
.dash-root .hero-tag{display:inline-flex;align-items:center;gap:6px}
.dash-root .hero-tag .dash-inline-icon{width:13px;height:13px;color:currentColor}
.dash-root .dash-empty-actions{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
/* Luonnokset: 2×2-luvut semanttisilla väreillä */
.dash-stat-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.dash-stat{border:1px solid var(--ds-line,#eef0f4);border-radius:11px;padding:11px 13px;min-width:0}
.dash-stat-num{display:block;font-size:22px;font-weight:700;line-height:1.1;color:var(--ds-ink,#16202e)}
.dash-stat-label{display:flex;align-items:center;gap:6px;margin-top:3px;font-size:12px;color:var(--ds-muted,#6b7686)}
.dash-stat-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0}
.dash-stat-dot.blue{background:var(--ds-blue,#2f5fa8)}.dash-stat-dot.red{background:var(--ds-red,#e0453c)}.dash-stat-dot.green{background:var(--ds-green,#2e9b5c)}.dash-stat-dot.grey{background:var(--ds-label,#9aa2b1)}
/* Talous sarakkeessa (kun taloushallinto on yhdistetty): kaavio ja laskut allekkain */
.dash-col .dash-talous{grid-template-columns:1fr}
.dash-col .dash-talous-side{border-left:0;border-top:1px solid var(--line-soft)}
.dash-col .dash-talous-main .dash-card-head{flex-wrap:wrap}
.dash-col .dash-talous-controls{margin-left:0;width:100%}
.impersonate-banner{display:flex;align-items:center;justify-content:center;gap:16px;padding:10px 20px;background:var(--amber);color:#fff;font-size:13.5px;font-weight:600;text-align:center;position:sticky;top:0;z-index:30}
.impersonate-banner button{white-space:nowrap;border:1px solid rgba(255,255,255,.6);background:rgba(255,255,255,.12);color:#fff;border-radius:999px;padding:6px 16px;font-size:12.5px;font-weight:700;cursor:pointer}
.impersonate-banner button:hover{background:rgba(255,255,255,.22)}
@media (max-width:640px){.impersonate-banner{flex-direction:column;gap:8px;padding:10px 14px}}
/* PDF-analyysin laskentarunko: tukkuhinnaston tuote rivillä (dist/app.js estimateMatchHtml) */
.est-match{display:flex;flex-direction:column;gap:3px;margin-top:6px;font-size:12px;color:#2f5fa8;font-weight:700}
.est-match select{max-width:340px;font:inherit;font-weight:500;color:#16202e;border:1px solid #dfe1e6;border-radius:8px;padding:4px 6px;background:#fff}

/* Kysy Ainiolta valmistelee puolestasi (dist/portal.js apRenderPrep) ja täytetty tarjouslomake (dist/offers.js ofOpenEdit). */
.chat-prep{width:85%;gap:10px}
.chat-prep-h{margin:0;font-weight:700;font-size:13.5px}.chat-prep-h.ok{color:#1f7a45}
.chat-prep-p{margin:0;font-size:13px;color:var(--muted)}
.chat-prep-rows{display:grid;gap:4px;font-size:13px}
.chat-prep-rows div{display:flex;justify-content:space-between;gap:10px;border-bottom:1px dashed rgba(47,95,168,.18);padding-bottom:4px}
.chat-prep-rows div:last-child{border-bottom:0}
.chat-prep-rows span{color:var(--muted)}.chat-prep-rows b{font-weight:650;text-align:right}
.chat-prep-acts{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.chat-prep-acts span{font-size:11.5px;color:var(--muted)}
.chat-prep-err{margin:0;font-size:12.5px;color:#b42318}
.chat-prep .chat-acts{margin:0}
/* Ainion oma huomio: haalea sininen kaikkialla samanlaisena (6.10.2026). */
.of-prefill{margin:0 0 6px;padding:10px 12px;border-radius:12px;background:var(--wk-ai,#eaf2fd);border:1px solid transparent;font-size:13px;line-height:1.45;color:var(--wk-ai-fg,var(--ink))}
.of-prefill b{display:block;font-size:13.5px;margin-bottom:2px}
.of-form label.of-pre input{border-color:#7fa7e0;background:#f4f8fe;box-shadow:0 0 0 3px rgba(47,95,168,.1)}
html[data-theme="dark"] .chat-prep-rows div{border-bottom-color:rgba(255,255,255,.1)}
html[data-theme="dark"] .chat-prep-h.ok{color:#6fd39a}
html[data-theme="dark"] .of-prefill{background:rgba(91,143,217,.14);border-color:rgba(91,143,217,.35);color:#e6eaf2}
html[data-theme="dark"] .of-form label.of-pre input{border-color:rgba(127,167,224,.7);background:rgba(91,143,217,.12)}
html[data-theme="dark"] .ofs-why.r{color:#ff8a7a}
html[data-theme="dark"] .ofs-m.low i{background:#ff8a7a}
