/* Tuotesuunnittelu app styles — on top of tim-ui.css (kit tokens only, both themes) */
svg.ic.fill{fill:currentColor;stroke:none}
.screen:not(#login){padding-top:calc(var(--header-h) + var(--safe-top))}
.app[data-screen="login"] .app-header{display:none}
/* project screens show the context title — hide the centered brand (kit canon) */
@media(max-width:899px){
  .app[data-screen="editor"] .brand,.app[data-screen="ratkaise"] .brand{display:none}
}
.app[data-screen="editor"] .tim-apps-btn,.app[data-screen="ratkaise"] .tim-apps-btn{display:none}
/* FAB = mobile-only single primary action, projects screen only */
.app:not([data-screen="projects"]) ~ .fab{display:none}

#projects .wrap,#editor .scroll>.wrap,#ratkaise .scroll>.wrap{max-width:760px}
#editor .scroll{padding-bottom:calc(var(--bottom-h) + var(--safe-bot) + 90px)}

/* ── projects list (kit .row pattern) ── */
.plist{display:flex;flex-direction:column;gap:10px;margin-top:14px}
.ricon{width:42px;height:42px;flex:0 0 auto;border-radius:var(--rb);background:var(--surface-2);display:grid;place-items:center;color:var(--primary)}
.ricon svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.prow .rmeta{flex:1;min-width:0}
.prow .rt{font-family:var(--disp);font-weight:700;font-size:15px;line-height:1.25;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.prow .rs{color:var(--text-2);font-size:12.5px;font-weight:500;margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.stbadge{flex:0 0 auto;display:inline-flex;align-items:center;font-size:11px;font-weight:800;padding:4px 9px;border-radius:999px;letter-spacing:.02em}
.stbadge.draft{background:var(--draftbg);color:var(--draft)}
.stbadge.info{background:var(--infobg);color:var(--info)}
.stbadge.ok{background:var(--okbg);color:var(--ok)}

/* ── editor ── */
.sect{font-family:var(--disp);font-size:13px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--text-2);margin:24px 2px 10px}
.lbl0{margin-top:0}
.two{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.seg{display:flex;gap:6px}
.seg button{flex:1;padding:11px 8px;border:1px solid var(--line-strong);border-radius:var(--rb);background:var(--input-bg);color:var(--text-2);font-family:var(--sans);font-size:14px;font-weight:700;cursor:pointer}
.seg button.on{background:color-mix(in srgb,var(--primary) 14%,transparent);border-color:var(--primary);color:var(--primary-d)}
[data-theme="dark"] .seg button.on{color:var(--primary)}
.seg button:disabled{opacity:.55;cursor:default}
.seg-note{font-size:12.5px;color:var(--text-2);padding:11px 2px}
.eldet{margin-top:14px;border-top:1px dashed var(--line);padding-top:4px}
.eldet summary{cursor:pointer;font-size:13px;font-weight:700;color:var(--text-2);padding:8px 0}
.elhint{font-size:12px;color:var(--text-2);margin:2px 2px 4px}
.khs-hint{font-size:12.5px;color:var(--text-2);line-height:1.5;margin:0 2px 10px}
.mhint{font-size:12px;color:var(--text-2);margin:8px 2px 0}

/* kerros rows: label | K | H | S | pinnoite | delete, derived line beneath */
.st-head{display:grid;grid-template-columns:minmax(70px,1.2fr) 1fr 1fr 1fr .9fr 30px;gap:6px;padding:0 10px;font-size:10.5px;font-weight:800;color:var(--text-2);text-transform:uppercase;letter-spacing:.05em;margin-bottom:5px}
.strow{display:grid;grid-template-columns:minmax(70px,1.2fr) 1fr 1fr 1fr .9fr 30px;gap:6px;align-items:center;background:var(--surface);border:1px solid var(--line);border-radius:var(--rb);padding:8px;margin-bottom:8px;box-shadow:var(--shadow-sm)}
.strow .inp{padding:10px 8px;font-size:16px;min-width:0}
.strow input[type=number]{-moz-appearance:textfield;appearance:textfield}
.strow input::-webkit-outer-spin-button,.strow input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.st-del,.ft-del,.att-del{width:30px;height:34px;display:grid;place-items:center;color:var(--text-2)}
.st-del:hover,.ft-del:hover,.att-del:hover{color:var(--danger)}
.st-derive{grid-column:1/-1;font-size:12px;font-weight:600;padding:2px 4px 0}
.st-derive.ok{color:var(--ok)}
.st-derive.err{color:var(--danger)}
.st-derive.hint{color:var(--text-2)}
.addrow{margin-top:2px;display:inline-flex;align-items:center;gap:7px}
.empty.sm{padding:18px 8px;font-size:13.5px;text-align:left}

/* pohjatyypit */
.ftcard{margin-bottom:10px}
.ft-top{display:flex;gap:8px;align-items:center}
.ft-top .ft-kind{flex:1}
.ft-storeys{display:flex;flex-wrap:wrap;gap:7px}
.stchip{display:inline-flex;align-items:center;gap:6px;padding:8px 12px;border:1px solid var(--line-strong);border-radius:999px;background:var(--input-bg);color:var(--text-2);font-family:var(--sans);font-size:13px;font-weight:700;cursor:pointer}
.stchip .tick{width:13px;height:13px;display:none}
.stchip.on{background:color-mix(in srgb,var(--primary) 14%,transparent);border-color:var(--primary);color:var(--primary-d)}
.stchip.on .tick{display:inline}
[data-theme="dark"] .stchip.on{color:var(--primary)}

/* liitteet */
.attlist{display:flex;flex-direction:column;gap:8px;margin-bottom:8px}
.attrow{display:flex;align-items:center;gap:8px;background:var(--surface);border:1px solid var(--line);border-radius:var(--rb);padding:8px}
.att-open{flex:1;min-width:0;display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--text)}
.att-thumb{width:44px;height:44px;flex:0 0 auto;border-radius:var(--rb);object-fit:cover;background:var(--surface-2)}
.att-ic{width:44px;height:44px;flex:0 0 auto;border-radius:var(--rb);background:var(--surface-2);display:grid;place-items:center;color:var(--text-2)}
.att-meta{min-width:0;display:flex;flex-direction:column;gap:2px}
.att-name{font-size:13.5px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.att-sub{font-size:11.5px;color:var(--text-2);font-weight:600}

/* editor bottom bar: savestate + Ratkaise (referenssit editbar conventions) */
.editbar{position:relative;background:var(--surface);border-top:1px solid var(--line);padding:8px 14px calc(var(--safe-bot) + 8px)}
.editbar .inner{display:flex;gap:9px;max-width:760px;width:100%;margin:0 auto;align-items:stretch}
.ebtn{display:inline-flex;align-items:center;justify-content:center;gap:7px;border:0;border-radius:var(--rb);font-family:var(--sans);font-weight:800;font-size:14px;cursor:pointer}
.ebtn .ic{width:15px;height:15px}
.ebtn.del{flex:0 0 auto;background:color-mix(in srgb,var(--danger) 12%,transparent);color:var(--danger);padding:10px 13px}
.ebtn.del:disabled{opacity:.5;cursor:default}
.ebtn.solve{flex:1;background:var(--primary);color:var(--on-primary);text-transform:uppercase;letter-spacing:.04em;padding:12px 18px}
.savestate{flex:1 1 auto;min-width:96px;display:flex;align-items:center;justify-content:center;gap:6px;font-size:12.5px;font-weight:700;color:var(--text-2)}
.savestate .ss-dot{flex:0 0 auto;width:7px;height:7px;border-radius:50%;border:1.5px solid currentColor;opacity:.5}
.savestate .ic{flex:0 0 auto;width:13px;height:13px;stroke-width:3.4}
.savestate.saving .ss-dot{animation:ss-pulse 1.1s ease-in-out infinite}
.savestate.saved{color:var(--ok)}
.savestate.error{color:var(--danger)}
@keyframes ss-pulse{0%,100%{opacity:.35}50%{opacity:1}}
@media (prefers-reduced-motion:reduce){.savestate.saving .ss-dot{animation:none}}

/* ── ratkaise ── */
.provline{font-size:12px;color:var(--text-2);font-weight:600;margin:2px 2px 10px}
.resolve{margin-bottom:6px;display:inline-flex;align-items:center;gap:7px}
.storeyhead{font-family:var(--disp);font-size:16px;font-weight:800;margin:22px 2px 8px;color:var(--text)}
.khead{font-family:var(--sans);font-size:12.5px;font-weight:700;color:var(--text-2);margin-left:6px}
.tblwrap{overflow-x:auto;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow-sm)}
.ctable{width:100%;border-collapse:collapse;font-size:13px;min-width:620px}
.ctable th{position:sticky;top:0;background:var(--surface-2);color:var(--text-2);font-size:10.5px;font-weight:800;text-transform:uppercase;letter-spacing:.05em;text-align:left;padding:8px 10px;white-space:nowrap}
.ctable td{padding:9px 10px;border-top:1px solid var(--line);white-space:nowrap;color:var(--text)}
.ctable tr.rej td{opacity:.45}
.ctable tr.sel td{background:color-mix(in srgb,var(--primary) 9%,transparent)}
.c-pick{width:34px;text-align:center}
.c-pick input{width:17px;height:17px;accent-color:var(--primary);cursor:pointer}
.star{color:var(--primary);font-size:14px}
.rejmark{font-size:9.5px;font-weight:800;letter-spacing:.04em;color:var(--danger);background:color-mix(in srgb,var(--danger) 12%,transparent);border-radius:999px;padding:2px 6px}
.notebtn{border:1px solid var(--line-strong);background:var(--input-bg);color:var(--draft);border-radius:999px;font-size:11.5px;font-weight:800;padding:3px 9px;cursor:pointer}
.notebtn.neg{color:var(--danger)}
.nonotes{color:var(--text-2)}
.cnotes td{white-space:normal;background:var(--surface-2);font-size:12.5px;line-height:1.5}
.cnotes ul{margin:0;padding-left:18px}
.cnotes li{margin:3px 0}
.crationale{margin-top:7px;color:var(--text-2);font-style:italic}
.grpgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:10px}
.grpcard{background:var(--surface);border:1px solid var(--line);border-left:3px solid var(--primary);border-radius:var(--r);padding:13px 14px;box-shadow:var(--shadow-sm)}
.grp-t{font-family:var(--disp);font-weight:800;font-size:14.5px;margin-bottom:6px}
.grp-n{font-family:var(--sans);font-weight:700;font-size:12px;color:var(--text-2);margin-left:4px}
.grp-row{font-size:12.5px;color:var(--text);margin:3px 0}
.grp-note{font-size:12px;color:var(--text-2);margin-top:7px;line-height:1.45;border-top:1px dashed var(--line);padding-top:7px}
.grp-note.near{color:var(--draft)}
.confirmrow{display:flex;align-items:center;gap:12px;margin:20px 0 6px;flex-wrap:wrap}
.confhint{flex:1;min-width:200px;font-size:12.5px;color:var(--text-2);font-weight:600;line-height:1.45}
.confirmbtn{flex:0 0 auto}
.confirmbtn:disabled{opacity:.5;cursor:default}

/* banners */
.confirmbar,.errbar{display:flex;gap:10px;align-items:flex-start;border-radius:var(--r);padding:12px 14px;font-size:13px;line-height:1.5;margin-bottom:14px}
.confirmbar{background:var(--okbg);color:var(--ok)}
.errbar{background:color-mix(in srgb,var(--danger) 12%,transparent);color:var(--danger)}
.confirmbar .ic,.errbar .ic{flex:0 0 auto;width:16px;height:16px;margin-top:2px;stroke-width:3}

/* ── piirustukset (phase 2 — inline SVG drawings, kit card framing) ── */
.drawrow{margin-top:8px}
.drawbtn,.printbtn{display:inline-flex;align-items:center;gap:7px}
.drawbtn:disabled{opacity:.5;cursor:default}
#piirustukset .wrap{max-width:900px}
.drawbar{display:flex;align-items:center;gap:12px;margin:2px 0 12px;flex-wrap:wrap}
.drawbar .provline{flex:1;min-width:200px;margin:0}
.drawcard{padding:14px 14px 10px}
.drawtitle{font-family:var(--disp);font-size:13px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--text-2);margin:0 0 8px}
.drawsvg{overflow:hidden}
.drawsvg svg{display:block;width:100%;height:auto;color:var(--text)}

/* Print: only the drawings — one per page, black on white (SVGs are currentColor). */
@media print{
  body,.app{background:#fff!important}
  .app{display:block!important;height:auto!important;overflow:visible!important;position:static!important}
  .app-header,.editbar,.fab,.sheet,.sheet-backdrop,.toast,#boot,.drawbar,.tim-apps-btn{display:none!important}
  .screen{display:none!important}
  #piirustukset{display:block!important;position:static!important;inset:auto!important;padding:0!important}
  #piirustukset .scroll{overflow:visible!important;height:auto!important;padding:0!important;animation:none!important}
  #piirustukset .wrap{max-width:none!important}
  #piirustukset .drawcard{border:0!important;box-shadow:none!important;background:#fff!important;padding:0!important;margin:0!important;break-inside:avoid;page-break-after:always}
  #piirustukset .drawcard:last-child{page-break-after:auto}
  #piirustukset .drawtitle{color:#000!important;margin:0 0 4mm}
  #piirustukset .drawsvg svg{color:#000!important;max-height:250mm}
}

/* ── mittauspöytäkirja (phase 3): print-view launcher buttons on the editor ── */
.pkrow{display:flex;gap:8px;flex-wrap:wrap}
.pkrow .btn{flex:0 0 auto;display:inline-flex;align-items:center;gap:7px}
.pkrow .btn:disabled{opacity:.5;cursor:default}

/* ── Lue luonnos (phase 4): attachment-row button + confirm sheet ──
   §6: never auto-accept — the sheet shows every extracted value as an editable input
   with a confidence chip; misread-suspect rows carry the K ≠ S + H banner. */
.att-read{flex:0 0 auto;display:inline-flex;align-items:center;gap:6px;white-space:nowrap}
.att-read:disabled{opacity:.5;cursor:default}
.att-read .ic{width:14px;height:14px}

.ext-sheet{z-index:calc(var(--z-sheet) + 2)}
#extBd{z-index:calc(var(--z-overlay) + 2)}
.ext-sheet .sub{margin-bottom:10px}
.ext-sect{font-family:var(--disp);font-size:11px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--text-2);margin:16px 2px 6px}
.ext-cols{display:grid;grid-template-columns:minmax(64px,1.1fr) 1fr 1fr 1fr 52px;gap:6px;padding:0 2px;font-size:10.5px;font-weight:800;color:var(--text-2);text-transform:uppercase;letter-spacing:.05em;margin-bottom:4px}
.ext-row{display:grid;gap:6px;align-items:center;background:var(--surface-2);border:1px solid var(--line);border-radius:var(--rb);padding:7px;margin-bottom:6px}
.ext-row.st{grid-template-columns:minmax(64px,1.1fr) 1fr 1fr 1fr 52px}
.ext-row.ft{grid-template-columns:minmax(96px,1.4fr) 1fr 1fr 52px}
.ext-row.stair{grid-template-columns:1fr 1fr 1fr}
.ext-row .inp{padding:9px 8px;font-size:16px;min-width:0}
.ext-row input[type=number]{-moz-appearance:textfield;appearance:textfield}
.ext-row input::-webkit-outer-spin-button,.ext-row input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.ext-row.suspect{border-color:var(--danger)}
.ext-row.suspect .ex-k,.ext-row.suspect .ex-h,.ext-row.suspect .ex-s{border-color:var(--danger)}
.ext-chip{justify-self:end;font-size:10.5px;font-weight:800;padding:3px 7px;border-radius:999px;white-space:nowrap}
.ext-chip.ok{background:var(--okbg);color:var(--ok)}
.ext-chip.warn{background:var(--draftbg);color:var(--draft)}
.ext-chip.low{background:color-mix(in srgb,var(--danger) 12%,transparent);color:var(--danger)}
.ext-misread{grid-column:1/-1;font-size:12px;font-weight:700;color:var(--danger)}
.ext-hint{grid-column:1/-1;font-size:12px;color:var(--text-2)}
.ext-unread{font-size:12px;color:var(--danger);margin-top:12px;line-height:1.5}
.ext-notes{font-size:12px;color:var(--text-2);margin-top:8px;line-height:1.5;white-space:pre-wrap}
.ext-actions{display:flex;gap:9px;margin-top:16px}
.ext-actions .btn{flex:1;justify-content:center}
