/* Hankinta-ikkuna (HankintaWindowV2) — siirretty razorista omaksi tiedostoksi 2026-11-02 (2000 rivin raja). */
    .hv2-root { display:flex; flex-direction:column; height:100%; min-height:0; font-size:13px; position:relative;
        color:var(--color-text); background:var(--color-surface); }

    /* ---- Yläpalkki ---- */
    .hv2-top { display:flex; align-items:center; gap:8px; padding:9px 12px; flex-wrap:wrap;
        border-bottom:1px solid var(--color-border); background:var(--color-surface); }
    .hv2-ic { width:15px; height:15px; stroke:currentColor; fill:none; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; }
    .hv2-icon { display:inline-flex; align-items:center; justify-content:center; width:32px; height:32px; color:var(--color-text-muted);
        background:var(--color-bg); border:1px solid var(--color-border); border-radius:8px; cursor:pointer; }
    .hv2-icon.on { background:var(--color-primary-light); border-color:var(--color-primary); color:var(--color-primary); }
    .hv2-primary { display:inline-flex; align-items:center; gap:6px; font:inherit; font-size:12px; font-weight:700; color:#fff;
        background:var(--color-primary); border:1px solid var(--color-primary); border-radius:8px; padding:7px 12px; cursor:pointer; white-space:nowrap; }
    .hv2-primary:hover { background:var(--color-primary-hover); }
    .hv2-primary .hv2-ic { width:13px; height:13px; stroke-width:2.4; }
    .hv2-proj { display:inline-flex; align-items:center; gap:9px; background:var(--color-bg); border:1px solid var(--color-border);
        border-radius:9px; padding:5px 11px; cursor:pointer; color:var(--color-text); }
    .hv2-proj:hover { border-color:var(--color-primary); }
    .hv2-proj .ic { width:26px; height:26px; border-radius:7px; background:var(--color-primary); color:#fff; display:flex;
        align-items:center; justify-content:center; font-size:12px; font-weight:700; flex:none; }
    .hv2-proj .tx { display:flex; flex-direction:column; align-items:flex-start; line-height:1.2; min-width:0; }
    .hv2-proj .lbl { font-size:9px; font-weight:700; letter-spacing:.4px; text-transform:uppercase; color:var(--color-text-muted); }
    .hv2-proj .nm { font-size:12.5px; font-weight:700; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; max-width:200px; }
    .hv2-proj .chev { color:var(--color-text-muted); font-size:10px; }
    /* Projektivalitsin-pudotusvalikko */
    .hv2-projwrap { position:relative; }
    .hv2-projback { position:fixed; inset:0; z-index:2147482000; background:transparent; }
    .hv2-projmenu { position:absolute; top:calc(100% + 5px); left:0; z-index:2147482001; min-width:290px; max-width:92vw;
        background:var(--color-surface); border:1px solid var(--color-border); border-radius:10px;
        box-shadow:0 12px 36px rgba(20,26,40,.2); padding:5px; max-height:360px; overflow:auto; }
    .hv2-projsearch { padding:4px 4px 6px; }
    .hv2-projsearch input { width:100%; box-sizing:border-box; font:inherit; font-size:12px; border:1px solid var(--color-border);
        border-radius:7px; padding:6px 9px; background:var(--color-bg); color:var(--color-text); outline:none; }
    .hv2-projempty { padding:14px 10px; color:var(--color-text-muted); font-size:12px; text-align:center; }
    .hv2-projopt { display:flex; align-items:center; gap:9px; padding:8px 9px; border-radius:7px; cursor:pointer; }
    .hv2-projopt:hover { background:var(--color-bg); }
    .hv2-projopt.on { background:var(--color-primary-light); }
    .hv2-projall { border-bottom:1px solid var(--color-border); border-radius:7px 7px 0 0; margin-bottom:4px; }
    .hv2-scope { display:inline-flex; border:1px solid var(--color-border); border-radius:8px; overflow:hidden; flex-shrink:0; }
    .hv2-scope button { font:inherit; font-size:11.5px; border:0; background:var(--color-bg); color:var(--color-text-muted); padding:6px 10px; cursor:pointer; }
    .hv2-scope button + button { border-left:1px solid var(--color-border); }
    .hv2-scope button.on { background:var(--color-primary-light); color:var(--color-primary); font-weight:700; }
    .hv2-rfqproj { font-size:10.5px; color:var(--color-text-muted); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
    .hv2-projopt .chk { width:17px; height:17px; border-radius:5px; border:1.5px solid var(--color-border); flex:none;
        display:flex; align-items:center; justify-content:center; font-size:11px; color:#fff; }
    .hv2-projopt.on .chk { background:var(--color-primary); border-color:var(--color-primary); }
    .hv2-projopt .pm { display:flex; flex-direction:column; min-width:0; }
    .hv2-projopt .pm .nm { font-weight:600; font-size:12.5px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
    .hv2-projopt .pm .sub { font-size:10.5px; color:var(--color-text-muted); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
    /* ⋯-valikko (oikea reuna) */
    .hv2-morewrap { position:relative; }
    .hv2-moremenu { position:absolute; top:calc(100% + 5px); right:0; z-index:2147482001; min-width:210px;
        background:var(--color-surface); border:1px solid var(--color-border); border-radius:10px;
        box-shadow:0 12px 36px rgba(20,26,40,.2); padding:5px; }
    .hv2-moreitem { display:flex; align-items:center; gap:9px; width:100%; text-align:left; font:inherit; font-size:12.5px;
        color:var(--color-text); background:none; border:0; border-radius:7px; padding:8px 10px; cursor:pointer; }
    .hv2-moreitem:hover { background:var(--color-bg); }
    .hv2-moreitem .mi { width:16px; text-align:center; color:var(--color-text-muted); }
    .hv2-moreitem.danger { color:var(--color-danger); }
    /* Toimittajarivin ⋯-valikko */
    .hv2-supmorewrap { position:relative; display:inline-flex; }
    .hv2-supmenu { position:absolute; top:calc(100% + 5px); right:0; z-index:2147482001; min-width:200px; max-width:260px;
        background:var(--color-surface); border:1px solid var(--color-border); border-radius:10px;
        box-shadow:0 12px 36px rgba(20,26,40,.2); padding:6px; }
    .hv2-supconfirm { font-size:11.5px; color:var(--color-text); padding:4px 6px; }
    .hv2-supconfirm b { font-weight:700; }
    .hv2-supconfirm .row { display:flex; gap:6px; margin-top:8px; }
    .hv2-sbtn.danger { background:var(--color-danger); border-color:var(--color-danger); color:#fff; }
    .hv2-sp { flex:1; }
    .hv2-search { display:inline-flex; align-items:center; gap:6px; background:var(--color-bg); border:1px solid var(--color-border);
        border-radius:8px; padding:6px 9px; min-width:130px; max-width:210px; flex:1; }
    .hv2-search .hv2-ic { width:14px; height:14px; stroke:var(--color-text-muted); }
    .hv2-search input { border:0; background:transparent; color:var(--color-text); font:inherit; font-size:12px; outline:none; width:100%; }

    /* ---- Välilehdet ---- */
    .hv2-tabs { display:flex; align-items:center; gap:2px; padding:0 12px; flex-wrap:wrap;
        border-bottom:1px solid var(--color-border); background:var(--color-bg); }
    .hv2-tab { font:inherit; font-size:12.5px; font-weight:600; color:var(--color-text-muted); background:transparent; border:0;
        padding:11px 14px; cursor:pointer; display:inline-flex; align-items:center; gap:7px; border-bottom:2px solid transparent; margin-bottom:-1px; }
    .hv2-tab:hover { color:var(--color-text); }
    .hv2-tab.on { color:var(--color-primary); border-bottom-color:var(--color-primary); }
    .hv2-tab .b { font-size:10px; font-weight:800; min-width:17px; text-align:center; padding:1px 5px; border-radius:9px;
        background:var(--color-border-light); color:var(--color-text-muted); }
    .hv2-tab.on .b { background:var(--color-primary); color:#fff; }
    .hv2-tab .b.alert { background:var(--color-danger); color:#fff; }

    /* ---- Konteksti-rivi ---- */
    .hv2-ctx { display:flex; align-items:center; gap:8px; padding:7px 14px; font-size:11px; color:var(--color-text-muted);
        background:var(--color-surface); border-bottom:1px solid var(--color-border); flex-wrap:wrap; }
    .hv2-ctx b { color:var(--color-text); }
    .hv2-ctx .hint { margin-left:auto; color:var(--color-text-light); }

    /* ---- Runko ---- */
    .hv2-body { flex:1; min-height:0; overflow:auto; background:var(--color-surface); }
    .hv2-pad { padding:14px; }
    .hv2-placeholder { border:1px dashed var(--color-border); border-radius:12px; background:var(--color-surface);
        padding:28px; max-width:620px; margin:10px auto; text-align:center; color:var(--color-text-muted); }
    .hv2-placeholder h3 { margin:0 0 6px; font-size:15px; color:var(--color-text); }
    .hv2-placeholder p { margin:4px 0; font-size:12.5px; }
    .hv2-flag { display:inline-flex; align-items:center; gap:6px; margin-top:12px; font-size:11px; font-weight:700;
        color:var(--color-primary); background:var(--color-primary-light); border:1px solid var(--color-primary);
        border-radius:20px; padding:3px 12px; }

    /* ---- Hankinnat: lista + detail + kaareva yhdistin ---- */
    .hv2-hk3 { display:flex; gap:16px; padding:12px; align-items:stretch; }
    .hv2-hklist { flex:0 0 250px; min-width:0; }
    .hv2-hklist.hide { display:none; }
    .hv2-detail { flex:1; min-width:0; position:relative; display:flex; flex-direction:column; }
    .hv2-list-panel { background:var(--color-surface); border:1px solid var(--color-border); border-radius:10px;
        border-top-right-radius:0; border-bottom-right-radius:0; overflow:hidden; }
    .hv2-card { background:var(--color-surface); border:1px solid var(--color-border); border-radius:10px;
        border-top-left-radius:0; border-bottom-left-radius:0; flex:1; }

    .hv2-rfq { padding:9px 11px; border-bottom:1px solid var(--color-border); cursor:pointer; position:relative; }
    /* Kortin hover-pikatoiminnot */
    .hv2-rfqacts { position:absolute; top:6px; right:8px; display:none; align-items:center; gap:4px; z-index:3; }
    .hv2-rfq:hover .hv2-rfqacts, .hv2-rfqacts.menuopen { display:flex; }
    .hv2-rfqbtn { font:inherit; font-size:10px; font-weight:700; color:var(--color-primary); background:var(--color-surface);
        border:1px solid var(--color-primary); border-radius:6px; padding:3px 8px; cursor:pointer; white-space:nowrap; }
    .hv2-rfqbtn:hover { background:var(--color-primary); color:#fff; }
    .hv2-rfqmore { display:inline-flex; align-items:center; justify-content:center; width:24px; height:22px; padding:0;
        background:var(--color-surface); border:1px solid var(--color-border); border-radius:6px; cursor:pointer; color:var(--color-text-muted); }
    .hv2-rfqmore:hover, .hv2-rfqmore.on { border-color:var(--color-primary); color:var(--color-primary); }
    .hv2-rfqmenu { position:fixed; top:0; left:0; z-index:2147482401; min-width:210px; display:flex; flex-direction:column;
        background:var(--color-surface); border:1px solid var(--color-border); border-radius:9px; padding:5px; box-shadow:0 10px 28px rgba(0,0,0,.16); }
    .hv2-rfqconf { font-size:11.5px; color:var(--color-text); padding:4px 6px; }
    .hv2-rfqconf .row { display:flex; gap:6px; margin-top:8px; }
    .hv2-rfqrename { width:100%; box-sizing:border-box; font:inherit; font-weight:700; font-size:12.5px; margin:1px 0 4px;
        padding:3px 6px; border:1px solid var(--color-primary); border-radius:5px; background:var(--color-surface); color:var(--color-text); }
    /* Pyyntö-välilehti */
    .hv2-reqwrap { padding:12px 14px; }
    .hv2-reqhead { display:flex; align-items:baseline; gap:10px; flex-wrap:wrap; margin-bottom:10px; }
    .hv2-reqhead .t { font-weight:800; font-size:14px; }
    .hv2-reqhead .h2 { font-size:10.5px; color:var(--color-text-muted); }
    .hv2-reqtbl { display:flex; flex-direction:column; gap:3px; margin-bottom:10px; }
    .hv2-reqrow { display:grid; grid-template-columns:minmax(0,1fr) 84px 60px 30px; gap:8px; align-items:center;
        background:var(--color-surface); border:1px solid var(--color-border); border-radius:7px; padding:6px 10px; }
    .hv2-reqrow.head { background:none; border:0; padding:2px 10px; font-size:9.5px; font-weight:700; text-transform:uppercase;
        letter-spacing:.3px; color:var(--color-text-muted); }
    .hv2-reqrow .c-nm { min-width:0; font-size:12px; font-weight:600; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
    .hv2-reqrow .c-q { text-align:right; }
    .hv2-reqrow .c-u { font-size:11px; color:var(--color-text-muted); }
    .hv2-reqrow .qtybtn { font:inherit; font-size:12px; font-weight:700; font-variant-numeric:tabular-nums; background:var(--color-bg);
        border:1px solid var(--color-border); border-radius:5px; padding:2px 8px; cursor:pointer; color:var(--color-text); }
    .hv2-reqrow .qtybtn:hover { border-color:var(--color-primary); color:var(--color-primary); }
    .hv2-reqrow .qtyin { width:70px; font:inherit; font-size:12px; padding:2px 6px; border:1px solid var(--color-primary); border-radius:5px;
        background:var(--color-surface); color:var(--color-text); text-align:right; }
    .hv2-reqrow .reqdel { display:inline-flex; align-items:center; justify-content:center; width:24px; height:22px; padding:0; background:none;
        border:0; border-radius:5px; cursor:pointer; color:var(--color-text-light); }
    .hv2-reqrow .reqdel:hover { color:var(--color-danger); background:var(--color-bg); }
    .hv2-reqrow .reqdel .hv2ic { width:14px; height:14px; }
    .hv2-reqadd { display:flex; align-items:center; gap:7px; flex-wrap:wrap; margin:2px 0 8px; }
    .hv2-reqadd input { flex:1; min-width:160px; font:inherit; font-size:12px; padding:6px 9px; border:1px solid var(--color-primary);
        border-radius:7px; background:var(--color-surface); color:var(--color-text); }
    .hv2-reqnote { font-size:10.5px; color:var(--color-text-light); margin-top:8px; }
    .hv2-rfq:last-child { border-bottom:0; }
    .hv2-rfq:hover { background:var(--color-bg); }
    .hv2-rfq.sel { background:linear-gradient(to right, var(--color-primary-light) 68%, transparent);
        box-shadow:inset 4px 0 0 var(--color-primary); position:relative; z-index:7; }
    .hv2-rfq .code { font-size:9.5px; font-weight:700; color:var(--color-text-muted); }
    .hv2-rfq .ttl { font-weight:700; font-size:12.5px; margin:1px 0 4px; }
    .hv2-rfq.sel .ttl { color:var(--color-primary); }
    .hv2-rfq .sub { display:flex; align-items:center; gap:7px; flex-wrap:wrap; }
    .hv2-rfq .mini { font-size:10.5px; color:var(--color-text-muted); }
    .hv2-rfq .rowtop { display:flex; align-items:center; gap:6px; }

    .hv2-dot { width:17px; height:17px; border-radius:9px; background:var(--color-danger); color:#fff; font-size:9.5px; font-weight:800;
        display:inline-flex; align-items:center; justify-content:center; }

    .hv2-st { display:inline-flex; align-items:center; gap:5px; font-size:10.5px; font-weight:700; padding:2px 8px; border-radius:20px; }
    .hv2-st .d { width:6px; height:6px; border-radius:50%; background:currentColor; }
    .hv2-st.ok { color:var(--color-success); background:var(--color-success-light); }
    .hv2-st.warn { color:var(--color-warning); background:var(--color-background-warning); }
    .hv2-st.info { color:var(--color-primary); background:var(--color-primary-light); }
    .hv2-st.muted { color:var(--color-text-muted); background:var(--color-bg); }

    /* yhdistin */
    .hv2-conn { position:absolute; z-index:8; overflow:visible; pointer-events:none; display:none; }
    .hv2-conn path { fill:none; stroke:var(--color-border); stroke-width:1; stroke-linecap:round; }
    .hv2-conn rect { fill:var(--color-surface); }

    /* detail-kortti */
    .hv2-dhead { display:flex; align-items:center; gap:10px; flex-wrap:wrap; padding:11px 14px; border-bottom:1px solid var(--color-border); }
    .hv2-dhead .t { font-weight:800; font-size:14px; }
    .hv2-dhead .right { margin-left:auto; font-size:11px; color:var(--color-text-muted); }
    /* stepper */
    .hv2-stp { display:flex; align-items:center; padding:12px 14px; gap:0; flex-wrap:wrap; }
    .hv2-node { display:flex; align-items:center; gap:7px; }
    .hv2-node .c { width:22px; height:22px; border-radius:50%; display:flex; align-items:center; justify-content:center;
        font-size:11px; font-weight:800; border:2px solid var(--color-border); color:var(--color-text-muted); background:var(--color-surface); }
    .hv2-node .l { font-size:11.5px; font-weight:600; color:var(--color-text-muted); white-space:nowrap; }
    .hv2-node.done .c { background:var(--color-success); border-color:var(--color-success); color:#fff; }
    .hv2-node.done .l { color:var(--color-text); }
    .hv2-node.cur .c { background:var(--color-primary); border-color:var(--color-primary); color:#fff; }
    .hv2-node.cur .l { color:var(--color-primary); font-weight:800; }
    .hv2-line { flex:1 1 20px; height:2px; min-width:18px; margin:0 6px; background:var(--color-border); }
    .hv2-line.done { background:var(--color-success); }

    /* toimittajarivit */
    .hv2-subhint { padding:4px 14px 2px; font-size:11px; color:var(--color-text-muted); }
    .hv2-sup { display:flex; align-items:center; gap:10px; padding:11px 14px; border-top:1px solid var(--color-border); }
    .hv2-av { width:30px; height:30px; border-radius:8px; background:var(--color-primary); color:#fff; font-size:11px; font-weight:800;
        display:flex; align-items:center; justify-content:center; flex:none; overflow:hidden; }
    .hv2-av img { width:100%; height:100%; object-fit:cover; display:block; }
    .hv2-av.xs { width:18px; height:18px; font-size:8px; border-radius:5px; }
    .hv2-sup .nm { font-weight:700; font-size:12.5px; display:flex; align-items:center; gap:7px; }
    .hv2-sup .em { font-size:10.5px; color:var(--color-text-muted); }
    .hv2-sup .mid { margin-left:auto; display:flex; align-items:center; gap:12px; }
    .hv2-sup .sum { font-weight:800; font-size:13px; text-align:right; }
    .hv2-sup .sum small { display:block; font-weight:600; font-size:9.5px; color:var(--color-text-muted); }
    .hv2-emptyd { padding:34px 14px; text-align:center; color:var(--color-text-muted); font-size:12.5px; }

    /* ---- alavälilehdet + tarjouksen kohdistus (vaihe 3) ---- */
    .hv2-subtabs { display:flex; gap:6px; flex-wrap:wrap; padding:10px 14px 2px; }
    .hv2-subtab { font:inherit; font-size:12px; font-weight:700; padding:5px 13px; border:1px solid var(--color-border);
        background:transparent; color:var(--color-text-muted); cursor:pointer; border-radius:7px; }
    .hv2-subtab.on { background:var(--color-primary); color:#fff; border-color:var(--color-primary); }
    .hv2-sup { cursor:pointer; }
    .hv2-sup .car { color:var(--color-text-muted); font-size:10px; width:12px; flex:none; text-align:center; }
    .hv2-sup.open { background:var(--color-bg); }
    /* Laajennettu toimittaja: kaksi saraketta — vasemmalla viesti, oikealla kohdistetut rivit (malli) */
    .hv2-exp { border-top:1px solid var(--color-border); background:var(--color-bg); padding:10px 14px;
        display:flex; gap:12px; align-items:stretch; }
    .hv2-exp-email { flex:0 0 288px; min-width:0; }
    .hv2-exp-match { flex:1; min-width:0; display:flex; flex-direction:column; }
    .hv2-vsplit { flex:0 0 7px; align-self:stretch; cursor:col-resize; background:var(--color-border); border-radius:4px; margin:2px 0; }
    .hv2-vsplit:hover, .hv2-vsplit:active { background:var(--color-primary); }
    .hv2-mail { background:var(--color-surface); border:1px solid var(--color-border); border-radius:8px; padding:10px 11px;
        display:flex; flex-direction:column; gap:7px; height:100%; }
    .hv2-mail .meta { font-size:10.5px; color:var(--color-text-muted); }
    .hv2-mail .subj { font-weight:700; font-size:12.5px; }
    .hv2-mail .att { align-self:flex-start; display:inline-flex; align-items:center; gap:5px; font-size:11px; font-weight:600;
        color:var(--color-primary); background:var(--color-primary-light); border-radius:7px; padding:3px 8px; }
    .hv2-mail .body { font-size:11.5px; color:var(--color-text); white-space:pre-wrap; line-height:1.55;
        background:var(--color-bg); border:1px solid var(--color-border); border-radius:7px; padding:8px 10px; }
    .hv2-mail .acts { display:flex; gap:6px; flex-wrap:wrap; margin-top:auto; }
    /* Sähköpostiketju (kaikki viestit tältä toimittajalta) */
    .hv2-thread { display:flex; flex-direction:column; gap:8px; }
    .hv2-msg { background:var(--color-surface); border:1px solid var(--color-border); border-radius:8px; padding:9px 11px;
        display:flex; flex-direction:column; gap:5px; position:relative; }
    .hv2-msg.open { border-color:var(--color-primary); box-shadow:0 0 0 1px var(--color-primary-light); }
    .hv2-msg.out { background:var(--color-bg); }
    .hv2-msg.out .snd { color:var(--color-primary); }
    .hv2-msg .mh { display:flex; align-items:center; gap:8px; cursor:pointer; }
    .hv2-msg .car { color:var(--color-text-muted); font-size:9px; flex:none; width:10px; }
    .hv2-msg .subjline { font-size:11px; color:var(--color-text-muted); white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
        padding-left:18px; }
    .hv2-msg .snd { flex:1 1 auto; font-weight:700; font-size:12px; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
        display:inline-flex; align-items:center; gap:6px; }
    .hv2-msg .pri { font-weight:800; font-size:11.5px; font-variant-numeric:tabular-nums; flex:none; }
    .hv2-msg .dt { font-size:10px; color:var(--color-text-muted); white-space:nowrap; flex:none; }
    .hv2-msg .subj { font-size:11px; font-weight:600; color:var(--color-text-muted); }
    .hv2-msg .att { align-self:flex-start; display:inline-flex; align-items:center; gap:5px; font-size:11px; font-weight:600;
        color:var(--color-primary); background:var(--color-primary-light); border-radius:7px; padding:2px 7px; }
    .hv2-msg .body { font-size:11.5px; color:var(--color-text); white-space:pre-wrap; line-height:1.5; }
    .hv2-msg .body.quoted { margin-top:7px; padding:8px 10px; border-left:2px solid var(--color-border-strong, var(--color-border));
        background:var(--color-bg); border-radius:0 6px 6px 0; color:var(--color-text-muted); font-size:11px; }
    .hv2-msg .hv2-qtgl { margin-top:6px; font:inherit; font-size:10.5px; font-weight:700; color:var(--color-primary);
        background:none; border:0; cursor:pointer; padding:2px 0; text-align:left; }
    .hv2-msg .hv2-qtgl:hover { text-decoration:underline; }
    .hv2-thread .acts { display:flex; gap:6px; flex-wrap:wrap; margin-top:8px; }
    /* Outlook-tyyliset viestitoiminto-ikonit */
    .hv2-macts { display:flex; align-items:center; gap:3px; flex-wrap:wrap; margin:7px 0 2px; }
    .hv2-macts .sep { width:1px; align-self:stretch; background:var(--color-border); margin:1px 4px; }
    .hv2-mact { font:inherit; font-size:13px; line-height:1; width:28px; height:26px; display:inline-flex; align-items:center; justify-content:center;
        background:var(--color-surface); border:1px solid var(--color-border); border-radius:6px; cursor:pointer; color:var(--color-text); }
    .hv2-mact:hover { background:var(--color-bg); border-color:var(--color-border-strong, var(--color-border)); }
    .hv2-mact.on { border-color:var(--color-primary); background:var(--color-primary-light, var(--color-bg)); }
    .hv2-mact.danger:hover { border-color:var(--color-danger); }
    /* Vastaanottaja/kopio/piilokopio-rivit */
    .hv2-recip { font-size:10.5px; color:var(--color-text-muted); margin:1px 0; white-space:normal; word-break:break-word; }
    .hv2-recip .rl { font-weight:700; color:var(--color-text-light); margin-right:5px; }
    .mi-flag, .mi-pin { font-size:11px; flex:none; }
    .mi-cat { font-size:9px; font-weight:700; color:#fff; padding:1px 6px; border-radius:20px; flex:none; white-space:nowrap; }
    /* Mustavalkoiset viivaikonit */
    .hv2ic { width:15px; height:15px; display:block; }
    .mi-ind { flex:none; display:inline-flex; align-items:center; color:var(--color-text-muted); }
    .mi-ind .hv2ic { width:12px; height:12px; }
    /* Nimen perään tulevat läpinäkyvät pikaikonit + …-nappi */
    .hv2-qa { display:inline-flex; align-items:center; gap:1px; flex:none; margin-left:2px; }
    .hv2-qab { display:inline-flex; align-items:center; justify-content:center; width:24px; height:22px; padding:0;
        background:none; border:0; border-radius:5px; cursor:pointer; color:var(--color-text-muted); opacity:.5; }
    .hv2-qab:hover { opacity:1; background:var(--color-bg); color:var(--color-text); }
    .hv2-qab.more.on { opacity:1; background:var(--color-primary-light, var(--color-bg)); color:var(--color-primary); }
    .emhead .emr .hv2-qa { flex-direction:row; }
    /* …-ylivuotovalikko */
    .hv2-menuback { position:fixed; inset:0; z-index:2147482400; background:transparent; }
    .hv2-msgmenu { position:absolute; top:30px; right:8px; z-index:2147482401; min-width:210px; display:flex; flex-direction:column;
        background:var(--color-surface); border:1px solid var(--color-border); border-radius:9px; padding:5px; box-shadow:0 10px 28px rgba(0,0,0,.16); }
    .hv2-msgmenu.em { top:34px; }
    .hv2-mmi { display:flex; align-items:center; gap:9px; font:inherit; font-size:12px; text-align:left; text-decoration:none;
        background:none; border:0; border-radius:6px; padding:6px 9px; cursor:pointer; color:var(--color-text); white-space:nowrap; }
    .hv2-mmi:hover { background:var(--color-bg); }
    .hv2-mmi .hv2ic { width:15px; height:15px; flex:none; color:var(--color-text-muted); }
    .hv2-mmi.danger { color:var(--color-danger); }
    .hv2-mmi.danger .hv2ic { color:var(--color-danger); }
    .hv2-mmsep { height:1px; background:var(--color-border); margin:4px 2px; }
    .mi-arch { font-size:10px; flex:none; opacity:.7; }
    /* Liitteet */
    .hv2-atts { display:flex; flex-direction:column; gap:3px; margin:6px 0; }
    .hv2-att { display:inline-flex; align-items:center; gap:6px; align-self:flex-start; max-width:100%; font-size:11px; font-weight:600;
        color:var(--color-primary); text-decoration:none; background:var(--color-bg); border:1px solid var(--color-border); border-radius:6px; padding:4px 9px; }
    .hv2-att:hover { border-color:var(--color-primary); text-decoration:underline; }
    .hv2-att .ic { flex:none; }
    .hv2-att .sz { color:var(--color-text-muted); font-weight:500; font-size:10px; }
    .hv2-att.nodata { color:var(--color-text-muted); cursor:default; }
    .hv2-att.nodata:hover { text-decoration:none; border-color:var(--color-border); }
    /* Luokittelu-popup */
    .hv2-catmenu { display:flex; flex-direction:column; gap:1px; margin:4px 0 6px; padding:5px; background:var(--color-surface);
        border:1px solid var(--color-border); border-radius:8px; max-width:240px; box-shadow:0 6px 18px rgba(0,0,0,.12); }
    .hv2-catopt { display:flex; align-items:center; gap:8px; font:inherit; font-size:11.5px; text-align:left; background:none; border:0;
        border-radius:6px; padding:5px 8px; cursor:pointer; color:var(--color-text); }
    .hv2-catopt:hover { background:var(--color-bg); }
    .hv2-catopt .sw { width:13px; height:13px; border-radius:3px; flex:none; }
    .hv2-catopt.rm { color:var(--color-text-muted); border-top:1px solid var(--color-border); margin-top:2px; padding-top:7px; }
    .hv2-reconf { display:flex; align-items:center; gap:7px; flex-wrap:wrap; margin:6px 0 2px; padding:7px 9px; font-size:11px;
        background:var(--color-background-warning, var(--color-bg)); border:1px solid var(--color-warning); border-radius:7px; color:var(--color-text); }
    .hv2-reinfo { margin:5px 0 2px; font-size:11px; color:var(--color-text-muted); }
    /* Vastauslaatikko (Hankinta + Sähköposti -ketjut) */
    .hv2-reply { margin:8px 0 2px; padding:10px; border:1px solid var(--color-primary); border-radius:9px;
        background:var(--color-primary-light, var(--color-bg)); display:flex; flex-direction:column; gap:6px; }
    .hv2-reply .rrow { display:flex; align-items:center; gap:8px; }
    .hv2-reply .rrow.head { margin-bottom:1px; }
    .hv2-reply .rrow .rl { font-size:10px; font-weight:800; text-transform:uppercase; letter-spacing:.3px; color:var(--color-primary); }
    .hv2-reply .rrow label { font-size:10.5px; font-weight:700; color:var(--color-text-muted); min-width:58px; flex:none; }
    .hv2-reply .rrow input { width:100%; box-sizing:border-box; font:inherit; font-size:12px; padding:5px 8px; border:1px solid var(--color-border);
        border-radius:6px; background:var(--color-surface); color:var(--color-text); }
    .hv2-reply .rrow .acwrap { position:relative; flex:1; min-width:0; }
    .hv2-reply .acmenu { position:absolute; top:calc(100% + 2px); left:0; right:0; z-index:40; max-height:220px; overflow:auto;
        background:var(--color-surface); border:1px solid var(--color-border); border-radius:8px; box-shadow:0 8px 24px rgba(0,0,0,.14); padding:3px; }
    .hv2-reply .acitem { display:flex; flex-direction:column; align-items:flex-start; gap:0; width:100%; text-align:left; cursor:pointer;
        font:inherit; background:none; border:0; border-radius:6px; padding:5px 8px; color:var(--color-text); }
    .hv2-reply .acitem:hover { background:var(--color-bg); }
    .hv2-reply .acitem.co { background:var(--color-primary-light, var(--color-bg)); margin-top:2px; }
    .hv2-reply .acitem .l { font-size:12px; font-weight:600; }
    .hv2-reply .acitem .s { font-size:10.5px; color:var(--color-text-muted); }
    .hv2-reply .rbody { width:100%; box-sizing:border-box; font:inherit; font-size:12.5px; line-height:1.5; padding:8px 9px;
        border:1px solid var(--color-border); border-radius:7px; background:var(--color-surface); color:var(--color-text); resize:vertical; }
    .hv2-reply .rstatus { font-size:11px; color:var(--color-text-muted); }
    .hv2-reply .rstatus.err { color:var(--color-danger, #dc2626); }
    .hv2-reply .ract { display:flex; align-items:center; gap:8px; }
    /* rikas editori + muotoilupalkki */
    .hv2-reply .hv2-rmbar { display:flex; }
    .hv2-reply .hv2-rmbar .richmail-toolbar { flex:1; }
    .hv2-reply .hv2-rmeditor { min-height:120px; max-height:360px; overflow:auto; font:inherit; font-size:12.5px; line-height:1.5;
        padding:8px 10px; border:1px solid var(--color-border); border-radius:0 0 7px 7px; background:var(--color-surface); color:var(--color-text); outline:none; }
    .hv2-reply .hv2-rmeditor:focus { border-color:var(--color-primary); }
    /* liite- + dokumentti- + allekirjoitus-rivi */
    .hv2-reply .rtools { display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
    .hv2-reply .hv2-drop { position:relative; display:inline-flex; align-items:center; gap:6px; font-size:11px; font-weight:600;
        color:var(--color-primary); background:var(--color-surface); border:1px dashed var(--color-primary); border-radius:7px; padding:5px 11px; cursor:pointer; }
    .hv2-reply .hv2-drop:hover { background:var(--color-primary-light, var(--color-bg)); }
    .hv2-reply .hv2-dropinput { position:absolute; inset:0; width:100%; height:100%; opacity:0; cursor:pointer; }
    .hv2-reply .hv2-docpick { border:1px solid var(--color-border); border-radius:8px; padding:7px; max-height:220px; overflow:auto; background:var(--color-surface); display:flex; flex-direction:column; gap:3px; }
    .hv2-reply .hv2-docpick .dps { font:inherit; font-size:11.5px; padding:5px 10px; border:1px solid var(--color-border); border-radius:16px; background:var(--color-bg); color:var(--color-text); }
    .hv2-reply .hv2-docpick .dpi { font-size:11px; color:var(--color-text-muted); padding:4px; }
    .hv2-reply .hv2-docpick .dprow { display:flex; align-items:center; gap:8px; padding:2px 3px; font-size:11.5px; }
    .hv2-reply .hv2-docpick .dpn { flex:1; min-width:0; text-align:left; border:0; background:none; cursor:pointer; color:var(--color-text); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font:inherit; font-size:11.5px; }
    .hv2-reply .hv2-docpick .dpn:hover { color:var(--color-primary); text-decoration:underline; }
    .hv2-reply .hv2-docpick .dpz { color:var(--color-text-muted); white-space:nowrap; font-size:10.5px; }
    .hv2-reply .hv2-atlist { display:flex; flex-wrap:wrap; gap:6px; }
    .hv2-reply .atchip { display:inline-flex; align-items:center; gap:5px; font-size:11px; background:var(--color-bg); border:1px solid var(--color-border); border-radius:6px; padding:3px 4px 3px 9px; max-width:100%; }
    .hv2-reply .atchip .z { color:var(--color-text-muted); }
    .hv2-reply .atchip .x { border:0; background:none; cursor:pointer; color:var(--color-danger, #dc2626); font-size:13px; line-height:1; padding:0 4px; }
    @media (max-width:760px){ .hv2-exp{ flex-direction:column; } .hv2-exp-email{ flex:auto !important; } .hv2-vsplit{ display:none; } }
    .hv2-mtop { display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin-bottom:8px; }
    .hv2-mtop .seglab { font-size:10px; font-weight:700; text-transform:uppercase; letter-spacing:.3px; color:var(--color-text-muted); }
    .hv2-seg2 { display:inline-flex; border:1px solid var(--color-border); border-radius:7px; overflow:hidden; }
    .hv2-seg2 button { border:0; background:var(--color-surface); font:inherit; font-size:10.5px; font-weight:700;
        color:var(--color-text-muted); padding:4px 10px; cursor:pointer; }
    .hv2-seg2 button + button { border-left:1px solid var(--color-border); }
    .hv2-seg2 button.on { background:var(--color-primary); color:#fff; }
    .hv2-mrow { display:grid; grid-template-columns:minmax(0,0.9fr) minmax(0,1.3fr); gap:10px; align-items:center;
        background:var(--color-surface); border:1px solid var(--color-border); border-left-width:4px; border-radius:7px; padding:6px 10px; margin-bottom:6px; }
    .hv2-mrow.ok { border-left-color:var(--color-success); }
    .hv2-mrow.warn { border-left-color:var(--color-warning); }
    .hv2-mrow.missing { border-left-color:var(--color-danger); }
    .hv2-mrow .rcell { min-width:0; font-size:11.5px; display:flex; align-items:center; gap:4px; }
    .hv2-mrow .rcell .nmwrap { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
    .hv2-mrow .rcell .nm { font-weight:600; }
    .hv2-rnbtn { flex:none; font:inherit; font-size:11px; line-height:1; background:none; border:0; cursor:pointer; color:var(--color-text-light); padding:2px; border-radius:4px; }
    .hv2-rnbtn:hover { background:var(--color-bg); color:var(--color-text); }
    .hv2-rnbtn.has { color:var(--color-primary); }
    /* Kohdistuksen huomiot (rivikohtainen + yleinen) */
    .hv2-rnote { margin:0 0 6px; }
    .hv2-rnote input { width:100%; box-sizing:border-box; font:inherit; font-size:11.5px; padding:5px 8px; border:1px solid var(--color-primary); border-radius:6px; background:var(--color-surface); color:var(--color-text); }
    .hv2-rnote.ro { font-size:11px; color:var(--color-text-muted); padding:3px 8px; background:var(--color-bg); border-radius:6px; cursor:pointer; }
    .hv2-rnote.ro:hover { color:var(--color-text); }
    .hv2-gnote { margin:0 0 8px; }
    .hv2-gnote textarea { width:100%; box-sizing:border-box; min-height:52px; resize:vertical; font:inherit; font-size:11.5px; padding:6px 9px; border:1px solid var(--color-primary); border-radius:7px; background:var(--color-surface); color:var(--color-text); }
    .hv2-gnote.ro { font-size:11.5px; color:var(--color-text-muted); padding:6px 9px; background:var(--color-bg); border-radius:7px; cursor:pointer; }
    .hv2-gnote.ro:hover { color:var(--color-text); }
    .hv2-gnbtn { flex:none; font:inherit; font-size:10.5px; font-weight:700; background:var(--color-surface); border:1px solid var(--color-border); color:var(--color-text-muted); border-radius:6px; padding:3px 9px; cursor:pointer; }
    .hv2-gnbtn:hover { border-color:var(--color-primary); color:var(--color-primary); }
    .hv2-gnbtn.has { border-color:var(--color-primary); color:var(--color-primary); }
    .hv2-mrow .q { color:var(--color-text-muted); font-size:10.5px; }
    .hv2-mrow .rasg { min-width:0; display:flex; align-items:center; gap:6px; flex-wrap:wrap; font-size:11.5px; }
    .hv2-mrow .rasg .empty { color:var(--color-text-muted); font-style:italic; }
    .ochip { display:inline-flex; align-items:center; gap:5px; background:var(--color-bg); border:1px solid var(--color-border); border-radius:6px; padding:2px 7px; cursor:grab; }
    .ochip:active { cursor:grabbing; }
    .ochip b { font-weight:600; }
    .ochip .rm { cursor:pointer; color:var(--color-text-muted); font-weight:800; margin-left:3px; }
    .ochip .rm:hover { color:var(--color-danger); }
    .ochip.mm { border-color:var(--color-warning); }
    .ochip .q.uwarn { color:var(--color-warning); font-weight:600; }
    .ochip .qedit { cursor:pointer; color:var(--color-text-light); font-size:10px; }
    .ochip .qedit:hover { color:var(--color-primary); }
    .ochip .qsnap { cursor:pointer; font-size:10px; font-weight:700; color:var(--color-primary); border:1px solid var(--color-primary);
        border-radius:5px; padding:0 5px; margin-left:1px; white-space:nowrap; }
    .ochip .qsnap:hover { background:var(--color-primary); color:#fff; }
    .ochip .qtyin { width:52px; font:inherit; font-size:11px; padding:1px 4px; border:1px solid var(--color-primary); border-radius:4px;
        background:var(--color-surface); color:var(--color-text); }
    /* Raahaus: rivit pudotusalueina, poolin tyhjä tila */
    .hv2-mrow { position:relative; }
    .hv2-mrow.kmopen { outline:1.5px solid var(--color-primary); outline-offset:-1px; }
    .hv2-mrow .rasg { cursor:pointer; }
    .hv2-mrow .rasg .kmcaret { margin-left:auto; color:var(--color-text-muted); font-size:10px; flex:none; align-self:center; }
    .hv2-pool .poolempty { font-size:11px; color:var(--color-text-muted); font-style:italic; }
    /* Statussuodatin-pillit */
    .hv2-mpills { display:flex; align-items:center; gap:6px; flex-wrap:wrap; padding:4px 0 8px; }
    .hv2-mpill { display:inline-flex; align-items:center; gap:5px; font:inherit; font-size:11px; font-weight:700; padding:3px 10px;
        border:1px solid var(--color-border); background:var(--color-surface); color:var(--color-text-muted); border-radius:20px; cursor:pointer; }
    .hv2-mpill.on { background:var(--color-bg); border-color:var(--color-border-strong, var(--color-border)); color:var(--color-text); }
    .hv2-mpill .d { width:8px; height:8px; border-radius:2px; display:inline-block; }
    .hv2-mpill .d.ok { background:var(--color-success); }
    .hv2-mpill .d.warn { background:var(--color-warning); }
    .hv2-mpill .d.missing { background:var(--color-danger); }
    .hv2-mpills .hint2 { font-size:10.5px; color:var(--color-text-light); margin-left:4px; }
    /* Rivikohtainen tarjousrivi-valikko (checkbox-lista) */
    .hv2-kmrow { background:var(--color-surface); border:1px dashed var(--color-primary); border-radius:7px; padding:8px 10px; margin:0 0 6px; }
    .hv2-kmrow .kmh { font-size:10.5px; font-weight:800; color:var(--color-primary); margin-bottom:6px; }
    .hv2-kmrow .kmtools { display:flex; align-items:center; gap:6px; flex-wrap:wrap; margin-bottom:7px; }
    .hv2-kmrow .kmtools .kmsearchwrap { position:relative; flex:1; min-width:130px; display:flex; align-items:center; }
    .hv2-kmrow .kmtools .kmsi { position:absolute; left:8px; width:13px; height:13px; color:var(--color-text-muted); pointer-events:none; }
    .hv2-kmrow .kmtools .kmsearch { flex:1; width:100%; font:inherit; font-size:11px; padding:5px 8px 5px 27px; border:1px solid var(--color-border); border-radius:6px; background:var(--color-bg); color:var(--color-text); }
    .hv2-kmrow .kmtools .kmqb { font:inherit; font-size:10.5px; font-weight:700; padding:4px 9px; border:1px solid var(--color-border); background:var(--color-surface); color:var(--color-text-muted); border-radius:20px; cursor:pointer; }
    .hv2-kmrow .kmtools .kmqb.on { background:var(--color-primary-light, var(--color-bg)); border-color:var(--color-primary); color:var(--color-primary); }
    .hv2-kmrow .kmempty { font-size:11px; color:var(--color-text-muted); font-style:italic; padding:4px 2px; }
    .hv2-kmopt { display:flex; align-items:flex-start; gap:8px; padding:4px 2px; font-size:11.5px; cursor:pointer; }
    .hv2-kmopt input { accent-color:var(--color-primary); width:15px; height:15px; margin-top:1px; flex:none; }
    .hv2-kmopt .q { color:var(--color-text-muted); font-size:10.5px; }
    .hv2-kmopt .on2 { color:var(--color-warning); font-size:10.5px; }
    .rtot { font-weight:800; }
    .hv2-pool { border:1px dashed var(--color-border); border-radius:8px; background:var(--color-surface); padding:8px 10px; margin-top:4px; }
    .hv2-pool .ph { display:flex; align-items:center; gap:8px; flex-wrap:wrap; font-size:10.5px; font-weight:700; color:var(--color-text-muted); margin-bottom:6px; }
    .hv2-pool .ph .pooltgl { margin-left:auto; font:inherit; font-size:10.5px; font-weight:700; color:var(--color-primary); background:none; border:0; cursor:pointer; padding:0; }
    .hv2-pool .ph .pooltgl:hover { text-decoration:underline; }
    .uchip.asgd { opacity:.55; }
    .uchip .aon { color:var(--color-primary); font-weight:700; font-size:10px; margin-left:3px; }
    .uchip { cursor:grab; display:inline-flex; align-items:center; gap:6px; background:var(--color-surface); border:1px solid var(--color-border);
        border-radius:7px; padding:4px 8px; margin:0 5px 5px 0; font-size:11px; }
    .uchip .addrow { cursor:pointer; font-weight:800; font-size:13px; line-height:1; color:var(--color-primary); border:1px solid var(--color-primary);
        border-radius:5px; width:17px; height:17px; display:inline-flex; align-items:center; justify-content:center; margin-left:2px; }
    .uchip .addrow:hover { background:var(--color-primary); color:#fff; }
    .uchip.picked { background:var(--color-primary); border-color:var(--color-primary); color:#fff; box-shadow:0 0 0 2px var(--color-primary-light, rgba(59,130,246,.35)); }
    .uchip.picked .q, .uchip.picked .aon { color:#eaf2ff; }
    .uchip.picked .addrow { color:#fff; border-color:#fff; }
    /* Klikkaa-ja-kohdista: valintapalkki + drop-target-korostus */
    .hv2-pickbar { display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin:2px 0 9px; padding:7px 11px; font-size:11.5px;
        background:var(--color-primary-light, var(--color-bg)); border:1px solid var(--color-primary); border-radius:8px; color:var(--color-primary); }
    .hv2-pickbar .pk b { font-weight:800; }
    .hv2-pickbar .pkx { margin-left:auto; font:inherit; font-size:11px; font-weight:700; color:var(--color-text-muted); background:var(--color-surface);
        border:1px solid var(--color-border); border-radius:20px; padding:3px 11px; cursor:pointer; }
    .hv2-mrow.droptgt { cursor:pointer; }
    .hv2-mrow.droptgt:hover { outline:1.5px dashed var(--color-primary); outline-offset:-1px; background:var(--color-primary-light, var(--color-bg)); }
    /* "+ Lisää tarjouspyyntörivi" -nappi + syöttörivi */
    .hv2-addbtn { font:inherit; font-size:11px; font-weight:700; color:var(--color-primary); background:var(--color-surface);
        border:1px dashed var(--color-primary); border-radius:7px; padding:6px 12px; cursor:pointer; margin:2px 0 8px; }
    .hv2-addbtn:hover { background:var(--color-primary-light, var(--color-bg)); }
    .hv2-addrow { display:flex; align-items:center; gap:7px; flex-wrap:wrap; margin:2px 0 8px; }
    .hv2-addrow input { flex:1; min-width:160px; font:inherit; font-size:12px; padding:6px 9px; border:1px solid var(--color-primary); border-radius:7px; background:var(--color-surface); color:var(--color-text); }
    .hv2-mfoot { display:flex; align-items:center; gap:12px; margin-top:10px; padding-top:9px; border-top:1px solid var(--color-border); flex-wrap:wrap; }
    .hv2-mfoot .k { font-size:10px; font-weight:700; text-transform:uppercase; letter-spacing:.3px; color:var(--color-text-muted); }
    .hv2-mfoot .v { margin-left:auto; font-size:15px; font-weight:800; }

    /* ---- Tilaus-vaihe ---- */
    .hv2-order { display:flex; flex-direction:column; gap:11px; }
    .ordsup { display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
    .ordsup .lbl { font-size:10px; font-weight:700; text-transform:uppercase; letter-spacing:.3px; color:var(--color-text-muted); }
    .ordchip { display:inline-flex; align-items:center; gap:7px; font:inherit; font-size:11.5px; padding:5px 11px; cursor:pointer;
        background:var(--color-surface); border:1px solid var(--color-border); border-radius:20px; color:var(--color-text); }
    .ordchip .nm { font-weight:600; }
    .ordchip .sm { color:var(--color-text-muted); font-variant-numeric:tabular-nums; }
    .ordchip .od { font-size:9.5px; font-weight:800; text-transform:uppercase; letter-spacing:.3px; color:var(--color-success);
        background:var(--color-success-light, var(--color-bg)); border-radius:5px; padding:1px 6px; }
    .ordchip.on { border-color:var(--color-primary); box-shadow:0 0 0 2px var(--color-primary-light, rgba(59,130,246,.3)); }
    .ordchip:hover { border-color:var(--color-primary); }
    .ordhint { font-size:11px; color:var(--color-text-muted); background:var(--color-bg); border:1px solid var(--color-border);
        border-left:3px solid var(--color-primary); border-radius:7px; padding:7px 10px; }
    .ordtbl { display:flex; flex-direction:column; border:1px solid var(--color-border); border-radius:9px; overflow:hidden; }
    .orh, .orr { display:grid; grid-template-columns:28px minmax(0,1.6fr) minmax(0,1fr) minmax(0,1fr) minmax(0,0.8fr); gap:8px; align-items:center; padding:7px 10px; }
    .orh { background:var(--color-bg); font-size:9.5px; font-weight:800; text-transform:uppercase; letter-spacing:.3px; color:var(--color-text-muted); }
    .orr { border-top:1px solid var(--color-border); font-size:11.5px; }
    .orr.excl { opacity:.5; }
    .orr .c-nm { min-width:0; overflow:hidden; text-overflow:ellipsis; }
    .orr .c-nm .noff { margin-left:6px; font-size:9.5px; font-weight:700; color:var(--color-warning); }
    .orr .c-qty .qv { cursor:pointer; display:inline-flex; align-items:center; gap:4px; }
    .orr .c-qty .qv .pen { color:var(--color-text-light); font-size:10px; }
    .orr .c-qty .qv:hover { color:var(--color-primary); }
    .orr .c-qty .qin { width:72px; font:inherit; font-size:11.5px; padding:3px 6px; border:1px solid var(--color-primary); border-radius:5px; background:var(--color-surface); color:var(--color-text); }
    .orr .c-qty .u { margin-left:5px; color:var(--color-text-muted); }
    .orr .c-up { color:var(--color-text-muted); font-variant-numeric:tabular-nums; }
    .orr .c-tot { font-weight:700; text-align:right; font-variant-numeric:tabular-nums; }
    .ordfoot { display:flex; align-items:center; gap:12px; padding-top:9px; border-top:1px solid var(--color-border); flex-wrap:wrap; }
    .ordfoot .k { font-size:10px; font-weight:700; text-transform:uppercase; letter-spacing:.3px; color:var(--color-text-muted); }
    .ordfoot .v { font-size:16px; font-weight:800; font-variant-numeric:tabular-nums; }
    .ordok { display:flex; align-items:center; gap:7px; font-size:11px; color:var(--color-success); }
    .ordok .d { width:8px; height:8px; border-radius:50%; background:var(--color-success); flex:none; }

    /* otsikon + toimittajarivin napit + ref-chip */
    .hv2-primary.sm { height:28px; padding:0 11px; font-size:11.5px; }
    .hv2-hbtn { display:inline-flex; align-items:center; justify-content:center; width:28px; height:28px; border:1px solid var(--color-border);
        background:var(--color-surface); color:var(--color-text-muted); border-radius:7px; cursor:pointer; flex:none; }
    .hv2-hbtn:hover { color:var(--color-primary); border-color:var(--color-primary); }
    .hv2-hbtn .hv2-ic { width:14px; height:14px; }
    .hv2-sbtn { font:inherit; font-size:11px; font-weight:600; padding:3px 9px; border:1px solid var(--color-border);
        background:var(--color-surface); color:var(--color-text); border-radius:6px; cursor:pointer; white-space:nowrap; }
    .hv2-sbtn:hover { background:var(--color-bg); }
    .refchip { font-size:9.5px; font-weight:700; color:var(--color-primary); background:var(--color-primary-light);
        border-radius:5px; padding:1px 6px; }

    /* Vertailu-matriisi (vaihe 3b) */
    .hv2-cmpwrap { overflow-x:auto; border:1px solid var(--color-border); border-radius:10px; margin:12px 14px; }
    .hv2-cmp { border-collapse:collapse; width:100%; min-width:460px; font-size:12px; }
    .hv2-cmp th, .hv2-cmp td { padding:8px 11px; border-bottom:1px solid var(--color-border); text-align:right;
        font-variant-numeric:tabular-nums; white-space:nowrap; }
    .hv2-cmp thead th { background:var(--color-bg); font-weight:800; font-size:11.5px; }
    .hv2-cmp th:first-child, .hv2-cmp td:first-child { text-align:left; white-space:normal; position:sticky; left:0;
        background:var(--color-surface); }
    .hv2-cmp td.rowh { font-weight:600; }
    .hv2-cmp td.best { background:var(--color-success-light); color:var(--color-success); font-weight:800; }
    .hv2-cmp td.pu { color:var(--color-text-light); }
    .hv2-cmp tfoot td { border-top:2px solid var(--color-border); font-weight:800; }
    .hv2-pick { font:inherit; font-size:11px; font-weight:700; padding:4px 10px; border:1px solid var(--color-border);
        background:var(--color-surface); color:var(--color-text); border-radius:6px; cursor:pointer; }
    .hv2-pick.win { background:var(--color-success); border-color:var(--color-success); color:#fff; }
    .hv2-cmpnote { font-size:11px; color:var(--color-text-muted); padding:0 14px 12px; }

    /* Materiaalit (vaihe 4) */
    /* Materiaalit: vasen ja oikea vierivät ERIKSEEN (koko näkymä ei vieri yhdessä) */
    .hv2-mat3 { display:flex; gap:16px; padding:12px; align-items:stretch; box-sizing:border-box; height:100%; min-height:0; overflow:hidden; }
    .hv2-matleft { flex:0 0 260px; min-width:0; overflow-y:auto; max-height:100%; }
    .hv2-matleft.hide { display:none; }
    .hv2-matright { flex:1; min-width:0; overflow-y:auto; max-height:100%; }
    .hv2-matfilter { display:flex; align-items:center; gap:7px; padding:8px 11px; font-size:11px; color:var(--color-text-muted);
        border-bottom:1px solid var(--color-border); cursor:pointer; }
    .hv2-matfilter input { accent-color:var(--color-primary); width:14px; height:14px; }
    .hv2-list-panel2 { background:var(--color-surface); border:1px solid var(--color-border); border-radius:10px; overflow:hidden; }
    .hv2-ph2 { display:flex; align-items:center; gap:8px; padding:9px 12px; border-bottom:1px solid var(--color-border); font-weight:700; font-size:12px; }
    .hv2-ph2 .n { margin-left:auto; font-weight:600; color:var(--color-text-muted); font-size:11px; }
    .hv2-puute { display:flex; gap:9px; padding:8px 11px; border-bottom:1px solid var(--color-border); }
    .hv2-puute:last-child { border-bottom:0; }
    .hv2-puute .chk { color:var(--color-text-muted); font-size:12px; flex:none; }
    .hv2-puute.ord .chk { color:var(--color-success); }
    .hv2-puute .t { font-weight:600; font-size:12px; }
    .hv2-puute.ord .t { text-decoration:line-through; color:var(--color-text-muted); }
    .hv2-puute .s { font-size:10.5px; color:var(--color-text-muted); }
    .hv2-matbar { display:flex; align-items:center; gap:6px; flex-wrap:wrap; margin-bottom:10px; }
    .hv2-fpill { font:inherit; font-size:11.5px; font-weight:700; padding:5px 11px; border:1px solid var(--color-border);
        background:var(--color-surface); color:var(--color-text-muted); border-radius:20px; cursor:pointer; }
    .hv2-fpill.on { background:var(--color-primary); color:#fff; border-color:var(--color-primary); }
    /* Vasen/oikea segmenttivalitsimet (Suoritteet/Puutelista, Suoritteittain/Lista) */
    .hv2-matseg, .hv2-matview { display:flex; gap:4px; padding:8px; border-bottom:1px solid var(--color-border); }
    .hv2-matseg button, .hv2-matview button { flex:1; font:inherit; font-size:11px; font-weight:700; border:1px solid var(--color-border);
        background:var(--color-bg); color:var(--color-text-muted); border-radius:7px; padding:6px 4px; cursor:pointer; }
    .hv2-matseg button.on, .hv2-matview button.on { background:var(--color-primary-light); border-color:var(--color-primary); color:var(--color-primary); }
    /* Vasemman suoritelistan rivit */
    .hv2-su-item { display:flex; align-items:center; gap:8px; padding:8px 11px; border-bottom:1px solid var(--color-border); cursor:pointer; font-size:12px; }
    .hv2-su-item:last-child { border-bottom:0; }
    .hv2-su-item:hover { background:var(--color-bg); }
    .hv2-su-item.on { background:var(--color-primary-light); }
    .hv2-su-item.allrow { font-weight:700; }
    .hv2-su-item .k { width:15px; height:15px; border-radius:4px; border:1.5px solid var(--color-border); flex:none;
        display:flex; align-items:center; justify-content:center; color:#fff; font-size:10px; }
    .hv2-su-item.on .k { background:var(--color-primary); border-color:var(--color-primary); }
    .hv2-su-item .lit { flex:none; font-size:9px; font-weight:700; font-variant-numeric:tabular-nums; color:var(--color-text-muted);
        background:var(--color-bg); border:1px solid var(--color-border); border-radius:4px; padding:1px 4px; }
    .hv2-su-item .nm { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
    .hv2-su-item .c { margin-left:auto; font-size:10px; color:var(--color-text-muted); flex:none; }
    .hv2-su-item.nomat { opacity:.65; }
    .hv2-su-item.nomat .c { color:var(--color-text-light); }
    /* Nimikkeistöotsikko vasemmalla (kutistettava) */
    .hv2-nimh { display:flex; align-items:center; gap:6px; padding:8px 11px; background:var(--color-bg);
        font-size:10px; font-weight:800; letter-spacing:.2px; color:var(--color-text-muted); border-bottom:1px solid var(--color-border); }
    .hv2-nimh .cc { flex:none; width:12px; text-align:center; font-size:9px; cursor:pointer; color:var(--color-text-muted); }
    .hv2-nimh .lbl { cursor:pointer; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
    .hv2-nimh .lbl:hover { color:var(--color-text); }
    .hv2-nimh.on { color:var(--color-primary); }
    .hv2-nimh.on .lbl { color:var(--color-primary); }
    .hv2-nimh .x { margin-left:auto; font-size:9px; font-weight:700; cursor:pointer; flex:none; }
    /* Oikean taulukon sarakekohdistus: Nimike vasen, Määrä oikea, muut vasen */
    .hv2-mtbl2 th, .hv2-mtbl2 td { text-align:left; }
    .hv2-mtbl2 th.num, .hv2-mtbl2 td.num { text-align:right; white-space:nowrap; }
    .hv2-mtbl2 th.chk, .hv2-mtbl2 td.chk { width:34px; text-align:center; }
    .hv2-mtbl2 td.chk input { width:15px; height:15px; cursor:pointer; accent-color:var(--color-primary); }
    .hv2-mtbl2 td.mat-sub { font-size:10px; font-weight:800; text-transform:uppercase; letter-spacing:.3px;
        color:var(--color-text-muted); background:var(--color-bg); }
    .hv2-mtbl2 td.mat-sub .nim { font-weight:600; text-transform:none; letter-spacing:0; color:var(--color-text-light); }
    .hv2-mtbl2 td.matempty { color:var(--color-text-muted); padding:16px; text-align:center; }
    /* Oikean paneelin alapalkki */
    .hv2-matfoot { display:flex; align-items:center; gap:10px; padding:9px 12px; border-top:1px solid var(--color-border); flex-wrap:wrap; }
    .hv2-matfoot .info { font-size:11px; color:var(--color-text-muted); }
    .hv2-sbtn.primary { background:var(--color-primary); border-color:var(--color-primary); color:#fff; }
    .hv2-sbtn.primary:hover { background:var(--color-primary-hover); }
    .hv2-sbtn:disabled { opacity:.45; cursor:default; }
    @media (max-width:960px){ .hv2-mat3{ flex-direction:column; } .hv2-matleft{ flex:auto; width:100%; } }

    /* Sähköposti (vaihe 5) */
    .hv2-em3 { display:flex; gap:16px; padding:12px; align-items:stretch; }
    .hv2-ethr-list { flex:0 0 300px; min-width:0; }
    .hv2-ethr-list.hide { display:none; }
    .hv2-eread { flex:1; min-width:0; position:relative; display:flex; flex-direction:column; }
    .hv2-ethr { display:flex; gap:9px; padding:9px 11px; border-bottom:1px solid var(--color-border); cursor:pointer; align-items:center; }
    .hv2-ethr:last-child { border-bottom:0; }
    .hv2-ethr:hover { background:var(--color-bg); }
    .hv2-ethr.sel { background:linear-gradient(to right, var(--color-primary-light) 68%, transparent);
        box-shadow:inset 4px 0 0 var(--color-primary); position:relative; z-index:7; }
    .hv2-ethr .tf { font-weight:700; font-size:12px; display:flex; align-items:center; gap:6px; flex-wrap:wrap; }
    .hv2-ethr .ts { font-size:11px; color:var(--color-text-muted); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
    .hv2-ethr .te { display:flex; flex-direction:column; align-items:flex-end; gap:3px; flex:none; }
    .hv2-ethr .tdate { font-size:9.5px; color:var(--color-text-light); white-space:nowrap; }
    /* Ketjun nuoli + viestit alekkain (Outlook-tyyli, 2026-11-02) */
    .hv2-ethr.has-car { padding-left:4px; }
    .hv2-ecar { flex:none; width:20px; height:20px; display:inline-flex; align-items:center; justify-content:center; border:0; background:none;
        border-radius:5px; color:var(--color-text-muted); cursor:pointer; padding:0; transition:transform .15s; }
    .hv2-ecar:hover { background:var(--color-bg); color:var(--color-text); }
    .hv2-ecar.open { transform:rotate(90deg); }
    .hv2-ethr:not(.has-car) { padding-left:28px; }
    .hv2-esubs { border-bottom:1px solid var(--color-border); background:var(--color-bg); }
    .hv2-esub { padding:6px 11px 6px 62px; cursor:pointer; border-top:1px solid color-mix(in srgb, var(--color-border) 60%, transparent); }
    .hv2-esub:first-child { border-top:0; }
    .hv2-esub:hover { background:var(--color-surface); }
    .hv2-esub.sel { background:var(--color-primary-light); box-shadow:inset 3px 0 0 var(--color-primary); }
    .hv2-esub .es-top { display:flex; gap:8px; align-items:baseline; }
    .hv2-esub .es-from { flex:1; min-width:0; font-size:11.5px; font-weight:600; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
    .hv2-esub.unread .es-from { font-weight:800; }
    .hv2-esub .es-dt { flex:none; font-size:9.5px; color:var(--color-text-light); white-space:nowrap; }
    .hv2-esub .es-prev { font-size:10.5px; color:var(--color-text-muted); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
    /* "Näytä koko viestiketju" myös Sähköposti-välilehdellä (ennen tyyli vain .hv2-msg:n alla → selaimen oletusnappi) */
    .hv2-emsg .hv2-qtgl { display:inline-block; margin-top:8px; font:inherit; font-size:11px; font-weight:700; color:var(--color-primary);
        background:none; border:0; cursor:pointer; padding:2px 0; text-align:left; }
    .hv2-emsg .hv2-qtgl:hover { text-decoration:underline; }
    .tag-o { font-size:8.5px; font-weight:800; color:var(--color-warning); background:var(--color-background-warning); border-radius:4px; padding:1px 5px; }
    .tag-k { font-size:8.5px; font-weight:800; color:var(--color-success); background:var(--color-success-light); border-radius:4px; padding:1px 5px; }
    .hv2-av.sm { width:24px; height:24px; font-size:9.5px; border-radius:6px; }
    .hv2-emsg { border-bottom:1px solid var(--color-border); position:relative; }
    .hv2-emsg.out { background:var(--color-bg); }
    .hv2-emsg.out .snd { color:var(--color-primary); }
    .hv2-emsg:last-child { border-bottom:0; }
    .emhead { display:flex; align-items:center; gap:9px; padding:10px 14px; cursor:pointer; }
    .emhead .car { color:var(--color-text-muted); font-size:10px; flex:none; }
    .emhead .snd { font-weight:700; font-size:12.5px; display:flex; align-items:center; gap:6px; }
    .emhead .sub2 { font-size:11px; color:var(--color-text-muted); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
    .emhead .emr { margin-left:auto; display:flex; flex-direction:column; align-items:flex-end; gap:2px; flex:none; }
    .emhead .pri { font-weight:800; font-size:12.5px; }
    .emhead .dt { font-size:9.5px; color:var(--color-text-light); white-space:nowrap; }
    .embody { padding:4px 14px 12px 36px; }
    .emacts { display:flex; gap:6px; flex-wrap:wrap; margin-bottom:8px; }
    .ematt { display:inline-flex; font-size:11px; color:var(--color-primary); margin-bottom:6px; }
    .emtext { font-size:11.5px; line-height:1.55; color:var(--color-text); white-space:pre-wrap; background:var(--color-surface);
        border:1px solid var(--color-border); border-radius:8px; padding:9px 11px; }
    .emtext.quoted { margin-top:7px; color:var(--color-text-muted); font-size:11px; border-left:2px solid var(--color-border-strong, var(--color-border)); }
    @media (max-width:960px){ .hv2-em3{ flex-direction:column; gap:10px; } .hv2-ethr-list{ flex:auto; } }

    @media (max-width:640px){ .hv2-search{ order:5; max-width:none; } .hv2-proj .nm{ max-width:120px; } }
    @media (max-width:960px){ .hv2-hk3{ flex-direction:column; gap:10px; } .hv2-hklist{ flex:auto; }
        .hv2-conn{ display:none!important; }
        .hv2-list-panel,.hv2-card{ border-radius:10px; } }

    /* Vasemman listan "kurkistus": kun lista on supistettu, vie hiiri vasempaan reunaan -> lista
       ilmestyy kelluvana päälle (malli hankinta-malli.html .pane.lh.peek). */
    .hv2-hk3, .hv2-mat3, .hv2-em3 { position:relative; }
    .hv2-peekedge { position:absolute; left:0; top:0; bottom:0; width:14px; z-index:24; display:flex;
        align-items:center; justify-content:center; color:var(--color-primary); font-weight:800; font-size:16px;
        cursor:pointer; background:linear-gradient(90deg, var(--color-primary-light), transparent); }
    .hv2-hk3.lh .hv2-peekedge:hover ~ .hv2-hklist,  .hv2-hk3.lh .hv2-hklist:hover,
    .hv2-mat3.lh .hv2-peekedge:hover ~ .hv2-matleft, .hv2-mat3.lh .hv2-matleft:hover,
    .hv2-em3.lh .hv2-peekedge:hover ~ .hv2-ethr-list, .hv2-em3.lh .hv2-ethr-list:hover {
        display:block !important; position:absolute; left:10px; top:10px; bottom:10px; width:272px; max-width:88%;
        z-index:25; background:var(--color-surface); border-radius:10px; overflow:auto;
        box-shadow:0 12px 36px rgba(20,26,40,.22); }
