:root{--navy:#062753;--navy2:#0a376f;--blue:#0759cc;--blue-soft:#edf5ff;--ink:#111827;--slate:#5c6b80;--line:#d9e1eb;--bg:#f3f6fa;--green:#15723d;--danger:#b42318}*{box-sizing:border-box}html,body{margin:0;min-height:100%}body{font-family:Inter,"Segoe UI",Arial,sans-serif;color:var(--ink);background:var(--bg)}button,input{font:inherit}button{cursor:pointer}.sheet-app{min-height:100vh}.sheet-topbar{min-height:56px;display:flex;align-items:center;justify-content:space-between;gap:18px;padding:7px 16px;color:#fff;background:linear-gradient(110deg,var(--navy),var(--navy2))}.brand{display:flex;align-items:center;gap:9px}.brand-mark{width:38px;height:38px;display:grid;place-items:center;border-radius:10px;color:var(--navy);background:#fff;font-weight:950}.brand strong,.brand span{display:block}.brand strong{letter-spacing:.05em}.brand span{color:#b8d9ff;font-size:.72rem;font-weight:750}.sheet-session{display:flex;align-items:center;justify-content:flex-end;gap:8px}.sheet-session>div{min-width:100px;padding-left:9px;border-left:1px solid rgba(255,255,255,.18)}.sheet-session span{display:block;color:rgba(255,255,255,.65);font-size:.58rem;font-weight:900;text-transform:uppercase}.sheet-session strong{display:block;max-width:160px;overflow:hidden;font-size:.77rem;text-overflow:ellipsis;white-space:nowrap}.sheet-session button{min-height:34px;padding:0 10px;border:1px solid rgba(255,255,255,.25);border-radius:8px;color:#fff;background:rgba(255,255,255,.08);font-size:.72rem;font-weight:850}.sheet-main{width:min(1480px,calc(100% - 22px));margin:0 auto;padding:11px 0 20px}.query-panel{display:grid;grid-template-columns:minmax(260px,.8fr) minmax(520px,1.2fr);align-items:end;gap:12px;margin-bottom:10px;padding:11px 13px;border:1px solid var(--line);border-radius:13px;background:#fff;box-shadow:0 6px 20px rgba(6,39,83,.06)}.query-heading{display:flex;align-items:end;justify-content:space-between;gap:16px}.query-heading h1{margin:2px 0 0;color:var(--navy);font-size:1.55rem}.query-heading p{max-width:420px;margin:0;color:var(--slate);font-size:.72rem;line-height:1.35}.eyebrow{color:var(--blue);font-size:.6rem;font-weight:950;letter-spacing:.1em;text-transform:uppercase}.query-form{display:grid;grid-template-columns:minmax(150px,1fr) minmax(150px,1fr) auto;gap:8px}.query-form label{display:grid;gap:4px;color:var(--slate);font-size:.66rem;font-weight:850}.query-form input{height:40px;padding:0 11px;border:1px solid #bcc9d8;border-radius:9px;color:var(--navy);background:#fbfdff;font-weight:900;outline:none}.query-form input:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(7,89,204,.1)}.consult-button{align-self:end;height:40px;padding:0 18px;border:0;border-radius:9px;color:#fff;background:var(--blue);font-weight:900}.query-message{grid-column:1/-1;min-height:26px;display:flex;align-items:center;padding:4px 8px;border-radius:7px;color:var(--slate);background:#f7f9fc;font-size:.68rem;font-weight:750}.query-message.error{color:var(--danger);background:#fdecea}.query-message.success{color:var(--green);background:#e8f6ed}.technical-sheet{padding:12px;border:1px solid #cbd5e1;border-radius:14px;background:#fff;box-shadow:0 10px 30px rgba(6,39,83,.07)}.technical-header{display:grid;grid-template-columns:160px minmax(0,1fr) auto;gap:14px;align-items:start;padding-bottom:12px;border-bottom:2px solid var(--navy)}.photo-card{width:160px;height:170px;display:grid;place-items:center;overflow:hidden;border:1px solid #cbd5e1;border-radius:10px;background:#f8fafc}.photo-card img{width:100%;height:100%;object-fit:contain}.photo-card span{color:#8793a4;font-size:.75rem;font-weight:850}.technical-hero{min-width:0}.hero-line{display:grid;grid-template-columns:repeat(3,minmax(125px,220px));gap:12px}.hero-value{display:flex;align-items:baseline;gap:9px}.hero-value span{padding:3px 6px;background:#e5e7eb;color:#111;font-size:1.1rem;font-weight:950;text-transform:uppercase}.hero-value strong{color:#000;font-size:1.7rem;line-height:1}.combination-description{margin-top:9px}.combination-description span{display:block;color:var(--slate);font-size:.62rem;font-weight:850;text-transform:uppercase}.combination-description strong{display:block;margin-top:2px;color:var(--navy);font-size:1.05rem}.technical-meta{display:grid;grid-template-columns:repeat(4,minmax(110px,1fr));gap:8px 12px;margin-top:14px}.technical-meta div{min-width:0;border-top:1px solid var(--line);padding-top:5px}.technical-meta span{display:block;color:var(--slate);font-size:.56rem;font-weight:900;text-transform:uppercase}.technical-meta strong{display:block;overflow:hidden;margin-top:2px;font-size:.75rem;text-overflow:ellipsis;white-space:nowrap}.export-actions{display:flex;gap:6px}.export-actions button{min-width:100px;height:36px;border:1px solid #bfd0e5;border-radius:8px;color:var(--navy);background:#f6f9fd;font-size:.72rem;font-weight:900}.sheet-section{margin-top:11px}.section-heading{display:flex;align-items:end;justify-content:space-between;gap:12px;margin-bottom:6px}.section-heading span{color:var(--blue);font-size:.56rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.section-heading h2{margin:1px 0 0;color:var(--navy);font-size:.98rem}.section-heading>strong{color:var(--slate);font-size:.68rem}.table-shell{overflow-x:auto;border:1px solid var(--line);border-radius:9px}.technical-table{width:100%;border-collapse:collapse;table-layout:auto}.technical-table th,.technical-table td{padding:5px 6px;border-bottom:1px solid #e6ebf1;vertical-align:top;font-size:.66rem}.technical-table th{position:sticky;top:0;color:#435168;background:#e5e7eb;font-size:.56rem;letter-spacing:.02em;text-align:left;text-transform:uppercase}.technical-table td.number{text-align:right;font-variant-numeric:tabular-nums}.technical-table .group-row td{padding:6px 7px;border-top:1px solid var(--navy);border-bottom:1px solid var(--navy);color:var(--navy);background:#f7f9fc;font-size:.72rem;font-weight:950}.empty-table td{padding:18px;color:#8793a4;text-align:center}.totals-grid{display:grid;grid-template-columns:repeat(3,minmax(160px,1fr));gap:9px;margin-top:11px}.totals-grid article{padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:#f8fafc}.totals-grid span{display:block;color:var(--slate);font-size:.62rem;font-weight:900;text-transform:uppercase}.totals-grid strong{display:block;margin-top:3px;color:var(--navy);font-size:1.15rem}.totals-grid .grand-total{border-color:#a9c4e7;background:var(--blue-soft)}.totals-grid .grand-total strong{color:var(--blue);font-size:1.35rem}.sheet-footer{display:flex;justify-content:space-between;gap:12px;margin-top:12px;padding-top:7px;border-top:1px solid var(--line);color:var(--slate);font-size:.62rem}@media(max-width:1050px){.query-panel{grid-template-columns:1fr}.technical-header{grid-template-columns:120px minmax(0,1fr)}.photo-card{width:120px;height:135px}.export-actions{grid-column:1/-1;justify-content:flex-end}.technical-meta{grid-template-columns:repeat(2,minmax(110px,1fr))}}@media(max-width:700px){.sheet-topbar{flex-wrap:wrap}.sheet-session{width:100%;flex-wrap:wrap;justify-content:flex-start}.query-form{grid-template-columns:1fr 1fr}.consult-button{grid-column:1/-1}.technical-header{grid-template-columns:1fr}.photo-card{width:110px;height:125px}.hero-line{grid-template-columns:repeat(3,minmax(0,1fr))}.hero-value{display:grid;gap:3px}.hero-value strong{font-size:1.2rem}.technical-meta{grid-template-columns:1fr 1fr}.totals-grid{grid-template-columns:1fr}}@media print{@page{size:landscape;margin:8mm}body{background:#fff}.no-print{display:none!important}.sheet-main{width:100%;padding:0}.technical-sheet{border:0;box-shadow:none;padding:0}.technical-header{grid-template-columns:130px minmax(0,1fr)}.photo-card{width:130px;height:145px}.table-shell{overflow:visible}.technical-table th{position:static}.sheet-section,.totals-grid{break-inside:avoid}}

/* Ficha Técnica 1.3 / Avances Web 4.31 */
.summary-kpis{display:grid;grid-template-columns:repeat(3,minmax(180px,1fr));gap:9px;margin-top:11px}.summary-kpis article{padding:11px 13px;border:1px solid var(--line);border-radius:11px;background:#f8fafc}.summary-kpis span{display:block;color:var(--slate);font-size:.62rem;font-weight:900;text-transform:uppercase}.summary-kpis strong{display:block;margin-top:3px;color:var(--navy);font-size:1.2rem}.summary-kpis .grand-total{border-color:#a9c4e7;background:var(--blue-soft)}.summary-kpis .grand-total strong{color:var(--blue);font-size:1.4rem}.department-kpis-section{margin-top:10px}.compact-heading{align-items:center}.compact-heading small{color:var(--slate);font-size:.62rem}.department-kpis{display:flex;gap:9px;overflow-x:auto;overscroll-behavior-inline:contain;padding:1px 1px 8px;scrollbar-width:thin}.department-kpi{flex:0 0 235px;padding:9px 10px;border:1px solid var(--line);border-radius:11px;background:#fff;box-shadow:0 4px 14px rgba(6,39,83,.05)}.department-kpi-title{overflow:hidden;margin-bottom:7px;color:var(--navy);font-size:.74rem;font-weight:950;text-overflow:ellipsis;white-space:nowrap}.department-kpi-line,.department-kpi-total{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:3px 0;color:var(--slate);font-size:.64rem}.department-kpi-line strong{color:var(--ink);font-size:.68rem}.department-kpi-total{margin-top:4px;padding-top:6px;border-top:1px solid var(--line);color:var(--navy);font-weight:900}.department-kpi-total strong{color:var(--blue);font-size:.82rem}.empty-kpi{color:var(--slate)}.technical-table .department-row td{padding:7px 8px;border-top:2px solid var(--navy);border-bottom:1px solid #9fb1c7;color:#fff;background:var(--navy);font-size:.72rem;font-weight:950;letter-spacing:.02em}.technical-table .section-row td{padding:6px 8px;color:var(--navy);background:#eaf2fb;font-size:.68rem;font-weight:950}.type-badge{display:inline-flex;padding:2px 6px;border-radius:999px;font-size:.56rem;font-weight:900;line-height:1.25}.type-badge.component{color:#5530aa;background:#efe9ff}.type-badge.process{color:#146c43;background:#e4f5eb}.origin-badge{display:inline-flex;margin-left:6px;padding:2px 5px;border:1px solid #c9b6ff;border-radius:999px;color:#603ab5;background:#f3efff;font-size:.52rem;font-weight:900;white-space:nowrap}.code-cell{font-family:Consolas,"Courier New",monospace;font-weight:750}.print-totals{display:none}.totals-grid{display:none!important}@media(max-width:900px){.summary-kpis{grid-template-columns:1fr 1fr}.summary-kpis .grand-total{grid-column:1/-1}.department-kpi{flex-basis:210px}.compact-heading small{display:none}}@media(max-width:600px){.summary-kpis{grid-template-columns:1fr}.summary-kpis .grand-total{grid-column:auto}.department-kpi{flex-basis:190px}}@media print{.summary-kpis,.department-kpis-section{display:none!important}.print-totals{display:block;margin-top:12px;padding-top:9px;border-top:2px solid var(--navy);break-inside:avoid}.print-totals h2{margin:0 0 7px;color:var(--navy);font-size:1rem}.print-totals>div{display:flex;justify-content:flex-end;gap:18px;padding:3px 0;font-size:.7rem}.print-totals span{min-width:120px;color:var(--slate);text-align:right}.print-totals strong{min-width:90px;color:var(--ink);text-align:right}.print-totals .print-grand-total{margin-top:3px;padding-top:6px;border-top:1px solid var(--line);font-size:.8rem}.print-totals .print-grand-total strong{color:var(--navy);font-size:.9rem}.technical-table .department-row td{color:#000;background:#e6eaf0!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}.technical-table .section-row td{background:#f0f4f8!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}}


/* ============================================================
   Ficha Técnica 1.4 / Avances Web 4.32
   UI pastel, KPIs con iconografía, orden por departamento
   y fotografía con modal + lupa.
   ============================================================ */

:root{
    --pastel-blue:#eaf4ff;
    --pastel-cyan:#e9fbfb;
    --pastel-green:#ecf8ef;
    --pastel-violet:#f2edff;
    --pastel-orange:#fff3e5;
    --pastel-rose:#fff0f1;
    --pastel-slate:#f6f8fb;
}

body{
    background:
        radial-gradient(circle at 8% 8%, rgba(168,216,255,.23), transparent 22rem),
        radial-gradient(circle at 92% 18%, rgba(181,239,219,.22), transparent 24rem),
        linear-gradient(180deg,#f7fbff 0%,#f2f7fb 52%,#f7f9fc 100%);
}

.query-panel{
    border-color:#d7e3f0;
    background:
        radial-gradient(circle at 97% 0%, rgba(141,201,255,.13), transparent 10rem),
        rgba(255,255,255,.94);
    box-shadow:0 9px 28px rgba(34,83,130,.08);
}

.technical-sheet{
    border-color:#d6e3ef;
    background:
        radial-gradient(circle at 100% 0%, rgba(173,230,214,.10), transparent 20rem),
        #fff;
    box-shadow:0 13px 34px rgba(34,83,130,.09);
}

.technical-header{
    border-bottom-color:#1e5b98;
}

.photo-card-button{
    position:relative;
    padding:0;
    cursor:zoom-in;
    appearance:none;
    color:inherit;
    transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease;
}
.photo-card-button:not(:disabled):hover{
    transform:translateY(-2px);
    border-color:#8ab8e6;
    box-shadow:0 10px 22px rgba(40,93,143,.16);
}
.photo-card-button:disabled{
    cursor:default;
}
.photo-card-button small{
    position:absolute;
    right:7px;
    bottom:7px;
    padding:3px 7px;
    border-radius:999px;
    color:#17466f;
    background:rgba(240,248,255,.92);
    box-shadow:0 2px 7px rgba(30,70,110,.12);
    font-size:.54rem;
    font-weight:900;
    pointer-events:none;
}

.summary-kpis{
    grid-template-columns:repeat(3,minmax(200px,1fr));
    gap:11px;
    margin-top:12px;
}
.summary-kpi{
    position:relative;
    min-height:86px;
    display:flex;
    align-items:center;
    gap:13px;
    overflow:hidden;
    padding:12px 15px!important;
    border-color:transparent!important;
    box-shadow:0 7px 20px rgba(46,78,112,.08);
}
.summary-kpi::after{
    content:"";
    position:absolute;
    width:96px;
    height:96px;
    right:-38px;
    bottom:-50px;
    border-radius:50%;
    background:var(--kpi-corner,rgba(113,183,255,.18));
    filter:blur(.2px);
}
.summary-kpi.materials{
    --kpi-corner:rgba(142,117,255,.20);
    background:linear-gradient(135deg,#fff 0%,var(--pastel-violet) 100%);
}
.summary-kpi.labor{
    --kpi-corner:rgba(80,194,128,.20);
    background:linear-gradient(135deg,#fff 0%,var(--pastel-green) 100%);
}
.summary-kpi.grand-total{
    --kpi-corner:rgba(65,165,235,.22);
    background:linear-gradient(135deg,#fff 0%,var(--pastel-blue) 100%)!important;
}
.summary-kpi-icon{
    position:relative;
    z-index:1;
    width:48px;
    height:48px;
    flex:0 0 48px;
    display:grid;
    place-items:center;
    border-radius:16px;
    color:#365f9e;
    background:rgba(255,255,255,.70);
    box-shadow:
        inset 0 0 0 1px rgba(255,255,255,.7),
        0 7px 18px rgba(63,98,132,.10);
}
.summary-kpi.materials .summary-kpi-icon{color:#6f52cb;background:rgba(239,233,255,.84)}
.summary-kpi.labor .summary-kpi-icon{color:#238454;background:rgba(226,248,234,.88)}
.summary-kpi.grand-total .summary-kpi-icon{color:#1977bd;background:rgba(227,243,255,.88)}
.summary-kpi-icon svg{
    width:27px;
    height:27px;
    fill:none;
    stroke:currentColor;
    stroke-width:1.8;
    stroke-linecap:round;
    stroke-linejoin:round;
}
.summary-kpi>div{
    position:relative;
    z-index:1;
    min-width:0;
}
.summary-kpi span:not(.summary-kpi-icon){
    color:#5a687a;
    font-size:.61rem;
}
.summary-kpi strong{
    margin-top:2px;
    color:#102d51!important;
    font-size:1.35rem!important;
}
.summary-kpi small{
    display:block;
    margin-top:2px;
    color:#8390a0;
    font-size:.56rem;
    font-weight:750;
}

.department-kpis-section{
    margin-top:12px;
    padding:10px 10px 3px;
    border:1px solid #dbe6f1;
    border-radius:13px;
    background:
        linear-gradient(135deg,rgba(255,255,255,.95),rgba(246,250,255,.95));
}
.department-kpis{
    gap:10px;
    padding:3px 1px 10px;
    scroll-snap-type:x proximity;
}
.department-kpi{
    --tone-bg:var(--pastel-blue);
    --tone-icon:#397bb5;
    --tone-corner:rgba(87,171,236,.16);
    position:relative;
    flex:0 0 245px;
    min-height:112px;
    overflow:hidden;
    padding:11px 12px;
    scroll-snap-align:start;
    border-color:rgba(182,204,224,.66);
    background:linear-gradient(135deg,#fff 0%,var(--tone-bg) 100%);
    box-shadow:0 7px 20px rgba(35,75,110,.07);
}
.department-kpi::after{
    content:"";
    position:absolute;
    right:-34px;
    top:-35px;
    width:90px;
    height:90px;
    border-radius:50%;
    background:var(--tone-corner);
}
.department-kpi.tone-1{--tone-bg:var(--pastel-green);--tone-icon:#2f8d5f;--tone-corner:rgba(82,188,125,.16)}
.department-kpi.tone-2{--tone-bg:var(--pastel-violet);--tone-icon:#7359c6;--tone-corner:rgba(139,116,227,.16)}
.department-kpi.tone-3{--tone-bg:var(--pastel-orange);--tone-icon:#c57b27;--tone-corner:rgba(230,155,66,.17)}
.department-kpi.tone-4{--tone-bg:var(--pastel-cyan);--tone-icon:#258b8d;--tone-corner:rgba(54,183,187,.16)}
.department-kpi-icon{
    position:absolute;
    z-index:0;
    top:8px;
    right:11px;
    width:36px;
    height:36px;
    display:grid;
    place-items:center;
    border-radius:12px;
    color:var(--tone-icon);
    background:rgba(255,255,255,.58);
    opacity:.72;
}
.department-kpi-icon svg{
    width:22px;
    height:22px;
    fill:none;
    stroke:currentColor;
    stroke-width:1.65;
    stroke-linecap:round;
    stroke-linejoin:round;
}
.department-kpi-title,
.department-kpi-line,
.department-kpi-total{
    position:relative;
    z-index:1;
}
.department-kpi-title{
    max-width:180px;
    padding-right:5px;
    color:#173f69;
}
.department-kpi-total strong{
    color:#0f5d9b;
}
.empty-kpi{
    min-height:auto;
    background:#f8fafc;
}

.sheet-section{
    padding:10px;
    border:1px solid #dfe8f1;
    border-radius:12px;
    background:rgba(255,255,255,.82);
}
.labor-section{
    background:linear-gradient(180deg,#fff 0%,#fbfdfc 100%);
}
.table-shell{
    border-color:#d8e2ec;
    background:#fff;
}
.technical-table th{
    color:#3d536b;
    background:#eaf0f6;
}
.technical-table tbody tr:not(.department-row):not(.section-row):hover td{
    background:#fbfdff;
}
.technical-table .department-row td{
    border-top:1px solid #a8c5df;
    border-bottom:1px solid #b9d0e5;
    color:#174f83;
    background:linear-gradient(90deg,#e6f2ff 0%,#f2f8ff 78%,#edf8f6 100%);
}
.technical-table .section-row td{
    color:#46548a;
    background:linear-gradient(90deg,#f2eeff,#f8f6ff);
}
.type-badge.component{
    color:#6042ad;
    background:#f0ebff;
}
.type-badge.process{
    color:#267449;
    background:#e8f7ee;
}

/* Fotografía ampliada */
.photo-dialog{
    width:min(1100px,calc(100vw - 28px));
    max-width:none;
    padding:0;
    border:0;
    border-radius:17px;
    background:#fff;
    box-shadow:0 24px 70px rgba(8,38,70,.30);
}
.photo-dialog::backdrop{
    background:rgba(5,22,42,.62);
    backdrop-filter:blur(4px);
}
.photo-dialog-shell{
    overflow:hidden;
    border:1px solid #d5e3ef;
    border-radius:17px;
    background:#f8fbfe;
}
.photo-dialog-header{
    min-height:58px;
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:12px;
    padding:10px 14px;
    color:#fff;
    background:linear-gradient(105deg,#123f70,#1d659e);
}
.photo-dialog-header span,
.photo-dialog-header strong{
    display:block;
}
.photo-dialog-header span{
    color:#bfddf5;
    font-size:.6rem;
    font-weight:900;
    text-transform:uppercase;
}
.photo-dialog-header strong{
    margin-top:2px;
    font-size:.92rem;
}
.photo-dialog-close{
    width:36px;
    height:36px;
    border:1px solid rgba(255,255,255,.25);
    border-radius:10px;
    color:#fff;
    background:rgba(255,255,255,.10);
    font-size:1.5rem;
    line-height:1;
}
.photo-dialog-stage{
    display:grid;
    grid-template-columns:minmax(0,1.2fr) minmax(300px,.8fr);
    gap:14px;
    padding:14px;
}
.photo-lens-source-shell{
    min-height:520px;
    display:grid;
    place-items:center;
    overflow:auto;
    border:1px solid #d8e4ef;
    border-radius:13px;
    background:
        linear-gradient(45deg,#eef3f8 25%,transparent 25%) 0 0/18px 18px,
        linear-gradient(45deg,transparent 75%,#eef3f8 75%) 0 0/18px 18px,
        #f9fbfd;
}
.photo-lens-source{
    position:relative;
    display:inline-block;
    line-height:0;
}
.photo-lens-source img{
    display:block;
    max-width:100%;
    max-height:68vh;
    object-fit:contain;
    user-select:none;
}
.photo-lens-selector{
    position:absolute;
    pointer-events:none;
    border:2px solid rgba(18,92,153,.88);
    border-radius:7px;
    background:rgba(135,201,255,.18);
    box-shadow:0 0 0 9999px rgba(255,255,255,.04);
}
.photo-magnifier{
    display:flex;
    flex-direction:column;
    gap:8px;
}
.photo-magnifier-view{
    position:relative;
    min-height:430px;
    flex:1;
    display:grid;
    place-items:center;
    overflow:hidden;
    border:1px solid #cfe0ec;
    border-radius:13px;
    background:#fff;
    box-shadow:inset 0 0 28px rgba(62,105,143,.05);
}
.photo-magnifier.active .photo-magnifier-view{
    border-color:#77aede;
}
.photo-magnifier-empty{
    max-width:210px;
    color:#8594a5;
    font-size:.72rem;
    font-weight:750;
    line-height:1.45;
    text-align:center;
}
.photo-magnifier-caption{
    padding:9px 11px;
    border:1px solid #dde8f1;
    border-radius:11px;
    background:#fff;
}
.photo-magnifier-caption strong,
.photo-magnifier-caption span{
    display:block;
}
.photo-magnifier-caption strong{
    color:#173f69;
    font-size:.75rem;
}
.photo-magnifier-caption span{
    margin-top:2px;
    color:#7a8999;
    font-size:.59rem;
}
.photo-dialog-footer{
    display:flex;
    justify-content:space-between;
    gap:12px;
    padding:9px 14px 11px;
    border-top:1px solid #dbe6ef;
    color:#66778a;
    background:#fff;
    font-size:.66rem;
}

@media(max-width:900px){
    .summary-kpis{grid-template-columns:1fr 1fr}
    .summary-kpis .grand-total{grid-column:1/-1}
    .photo-dialog-stage{grid-template-columns:1fr}
    .photo-magnifier-view{min-height:280px}
    .photo-lens-source-shell{min-height:340px}
}
@media(max-width:600px){
    .summary-kpis{grid-template-columns:1fr}
    .summary-kpis .grand-total{grid-column:auto}
    .department-kpi{flex-basis:220px}
    .photo-dialog-footer{display:grid}
}
@media print{
    body{background:#fff!important}
    .photo-card-button{cursor:default}
    .photo-card-button small{display:none!important}
    .photo-dialog{display:none!important}
}

/* =====================================================================
   4.34 · PDF / impresión continua
   ===================================================================== */
@media print {
    .summary-kpis {
        display: grid !important;
        grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
        gap: 6px !important;
        margin-top: 8px !important;
        break-inside: avoid;
        page-break-inside: avoid;
    }

    .department-kpis-section {
        display: block !important;
        margin-top: 7px !important;
        break-before: auto !important;
        page-break-before: auto !important;
        break-after: auto !important;
        page-break-after: auto !important;
    }

    .department-kpis-section .compact-heading small {
        display: none !important;
    }

    .department-kpis {
        display: grid !important;
        grid-template-columns: repeat(4, minmax(0, 1fr)) !important;
        gap: 5px !important;
        overflow: visible !important;
        padding: 0 !important;
    }

    .department-kpi {
        min-width: 0 !important;
        flex: none !important;
        padding: 6px 7px !important;
        border: 1px solid #b8c7d8 !important;
        border-radius: 6px !important;
        box-shadow: none !important;
        background: #f6f9fd !important;
        break-inside: avoid;
        page-break-inside: avoid;
        -webkit-print-color-adjust: exact;
        print-color-adjust: exact;
    }

    .department-kpi-icon {
        display: none !important;
    }

    .department-kpi-title {
        margin-bottom: 3px !important;
        font-size: .61rem !important;
    }

    .department-kpi-line,
    .department-kpi-total {
        padding: 1px 0 !important;
        font-size: .55rem !important;
    }

    .department-kpi-line strong,
    .department-kpi-total strong {
        font-size: .58rem !important;
    }

    /* No empujar Componentes o Mano de Obra a una página nueva. */
    .sheet-section,
    .labor-section,
    .table-shell,
    .technical-table {
        break-before: auto !important;
        page-break-before: auto !important;
        break-after: auto !important;
        page-break-after: auto !important;
        break-inside: auto !important;
        page-break-inside: auto !important;
    }

    .sheet-section {
        margin-top: 7px !important;
    }

    .section-heading {
        break-after: avoid-page;
        page-break-after: avoid;
    }

    .technical-table thead {
        display: table-header-group;
    }

    .technical-table tr {
        break-inside: avoid;
        page-break-inside: avoid;
    }

    .technical-table .department-row,
    .technical-table .section-row {
        break-after: avoid-page;
        page-break-after: avoid;
    }

    .print-totals {
        display: block !important;
        break-before: auto !important;
        page-break-before: auto !important;
        break-inside: avoid;
        page-break-inside: avoid;
    }
}

/* =====================================================================
   4.35 · Perfil de impresión compacto + paginación
   Solo afecta PDF / Imprimir. La pantalla normal no cambia.
   ===================================================================== */
@media print {
    /* Edge/Chromium moderno: pie de página nativo con Página X de Y. */
    @page {
        size: A4 landscape;
        margin: 5mm 6mm 10mm;

        @bottom-right {
            content: "Página " counter(page) " de " counter(pages);
            color: #64748b;
            font-family: "Segoe UI", Arial, sans-serif;
            font-size: 7.5pt;
            font-weight: 700;
        }

        @bottom-left {
            content: "ITALIA WEB · Ficha Técnica";
            color: #94a3b8;
            font-family: "Segoe UI", Arial, sans-serif;
            font-size: 7pt;
        }
    }

    html,
    body {
        font-size: 9px !important;
    }

    .technical-sheet {
        padding: 0 !important;
    }

    /* Encabezado más compacto, sin sacrificar identificación. */
    .technical-header {
        grid-template-columns: 92px minmax(0,1fr) !important;
        gap: 8px !important;
        padding-bottom: 5px !important;
    }

    .photo-card {
        width: 92px !important;
        height: 100px !important;
    }

    .hero-line {
        gap: 6px !important;
    }

    .hero-value span {
        padding: 2px 4px !important;
        font-size: .78rem !important;
    }

    .hero-value strong {
        font-size: 1.18rem !important;
    }

    .combination-description {
        margin-top: 4px !important;
    }

    .combination-description strong {
        font-size: .82rem !important;
    }

    .technical-meta {
        grid-template-columns: repeat(5,minmax(80px,1fr)) !important;
        gap: 3px 7px !important;
        margin-top: 6px !important;
    }

    .technical-meta div {
        padding-top: 2px !important;
    }

    .technical-meta span {
        font-size: .44rem !important;
    }

    .technical-meta strong {
        margin-top: 1px !important;
        font-size: .58rem !important;
    }

    /* KPI generales: bajos y discretos. */
    .summary-kpis {
        grid-template-columns: repeat(3,minmax(0,1fr)) !important;
        gap: 4px !important;
        margin-top: 5px !important;
    }

    .summary-kpi {
        min-height: 42px !important;
        gap: 6px !important;
        padding: 4px 7px !important;
        border-radius: 5px !important;
        box-shadow: none !important;
    }

    .summary-kpi::after {
        width: 50px !important;
        height: 50px !important;
        right: -20px !important;
        bottom: -28px !important;
    }

    .summary-kpi-icon {
        width: 26px !important;
        height: 26px !important;
        flex-basis: 26px !important;
        border-radius: 7px !important;
        box-shadow: none !important;
    }

    .summary-kpi-icon svg {
        width: 15px !important;
        height: 15px !important;
    }

    .summary-kpi span:not(.summary-kpi-icon) {
        font-size: .46rem !important;
    }

    .summary-kpi strong {
        margin-top: 0 !important;
        font-size: .82rem !important;
    }

    .summary-kpi small {
        display: none !important;
    }

    /* Costo por departamento: 6 tarjetas por renglón y muy compactas. */
    .department-kpis-section {
        margin-top: 4px !important;
        padding: 4px 4px 3px !important;
        border-radius: 5px !important;
    }

    .department-kpis-section .section-heading {
        margin-bottom: 3px !important;
    }

    .department-kpis-section .section-heading h2 {
        font-size: .68rem !important;
    }

    .department-kpis {
        display: grid !important;
        grid-template-columns: repeat(6,minmax(0,1fr)) !important;
        gap: 3px !important;
        overflow: visible !important;
        padding: 0 !important;
    }

    .department-kpi {
        min-width: 0 !important;
        min-height: 47px !important;
        padding: 4px 5px !important;
        border-radius: 4px !important;
        box-shadow: none !important;
    }

    .department-kpi::after {
        width: 38px !important;
        height: 38px !important;
        right: -16px !important;
        top: -15px !important;
    }

    .department-kpi-icon {
        display: none !important;
    }

    .department-kpi-title {
        max-width: none !important;
        margin-bottom: 1px !important;
        padding: 0 !important;
        font-size: .50rem !important;
        line-height: 1.05 !important;
    }

    .department-kpi-line,
    .department-kpi-total {
        padding: 0 !important;
        font-size: .43rem !important;
        line-height: 1.08 !important;
    }

    .department-kpi-total {
        margin-top: 1px !important;
        padding-top: 1px !important;
    }

    .department-kpi-line strong,
    .department-kpi-total strong {
        font-size: .46rem !important;
    }

    /* Secciones y tablas: densidad de reporte, no de pantalla. */
    .sheet-section {
        margin-top: 4px !important;
        padding: 3px !important;
        border-radius: 4px !important;
    }

    .section-heading {
        margin-bottom: 2px !important;
    }

    .section-heading span {
        font-size: .43rem !important;
    }

    .section-heading h2 {
        font-size: .70rem !important;
        line-height: 1.05 !important;
    }

    .section-heading > strong {
        font-size: .48rem !important;
    }

    .table-shell {
        border-radius: 2px !important;
    }

    .technical-table {
        line-height: 1.04 !important;
    }

    .technical-table th,
    .technical-table td {
        padding: 2px 3px !important;
        font-size: .53rem !important;
        line-height: 1.05 !important;
    }

    .technical-table th {
        font-size: .45rem !important;
        letter-spacing: 0 !important;
    }

    .technical-table .department-row td {
        padding: 2px 4px !important;
        font-size: .57rem !important;
        line-height: 1.05 !important;
    }

    .technical-table .section-row td {
        padding: 2px 4px !important;
        font-size: .53rem !important;
        line-height: 1.05 !important;
    }

    .type-badge,
    .origin-badge {
        padding: 1px 3px !important;
        font-size: .43rem !important;
        line-height: 1 !important;
    }

    /* Mano de obra puede ir inmediatamente después de componentes. */
    .labor-section {
        margin-top: 4px !important;
    }

    /* Totales finales compactos. */
    .print-totals {
        margin-top: 5px !important;
        padding-top: 4px !important;
    }

    .print-totals h2 {
        margin-bottom: 3px !important;
        font-size: .72rem !important;
    }

    .print-totals > div {
        padding: 1px 0 !important;
        font-size: .54rem !important;
    }

    .print-totals .print-grand-total {
        margin-top: 1px !important;
        padding-top: 2px !important;
        font-size: .60rem !important;
    }

    .sheet-footer {
        margin-top: 4px !important;
        padding-top: 3px !important;
        font-size: .45rem !important;
    }
}

/* =====================================================================
   4.36 · PDF más legible + KPI departamentales estrechos + foto contenida
   Pantalla: corrige fotografía. Impresión: aumenta tipografía y reduce
   dimensiones físicas de KPI sin perder las líneas Materiales/M.O./Total.
   ===================================================================== */

/* La fotografía jamás debe rebasar su tarjeta, incluso cuando el elemento
   es un BUTTON y el navegador aplica métricas internas propias. */
.photo-card,
.photo-card-button {
    min-width: 0;
    min-height: 0;
    overflow: hidden !important;
    contain: paint;
}

#style-photo:not([hidden]) {
    display: block;
    width: auto !important;
    height: auto !important;
    max-width: 100% !important;
    max-height: 100% !important;
    margin: auto;
    object-fit: contain !important;
    object-position: center center !important;
}

@media print {
    /* Aproximadamente +2pt respecto al perfil anterior. */
    html,
    body {
        font-size: 9pt !important;
    }

    /* Foto: marco más estable y contenido siempre dentro. */
    .technical-header {
        grid-template-columns: 88px minmax(0,1fr) !important;
        gap: 7px !important;
    }

    .photo-card,
    .photo-card-button {
        width: 88px !important;
        height: 92px !important;
        max-width: 88px !important;
        max-height: 92px !important;
        padding: 0 !important;
        overflow: hidden !important;
        contain: paint;
    }

    #style-photo:not([hidden]) {
        width: auto !important;
        height: auto !important;
        max-width: 86px !important;
        max-height: 90px !important;
        margin: auto !important;
        object-fit: contain !important;
        object-position: center center !important;
    }

    /* Encabezado y metadatos: más legibles, manteniendo poca altura. */
    .hero-value span {
        font-size: 7.3pt !important;
        line-height: 1 !important;
    }

    .hero-value strong {
        font-size: 12pt !important;
        line-height: 1 !important;
    }

    .combination-description span,
    .technical-meta span {
        font-size: 6pt !important;
        line-height: 1 !important;
    }

    .combination-description strong {
        font-size: 8.5pt !important;
        line-height: 1.05 !important;
    }

    .technical-meta strong {
        font-size: 7pt !important;
        line-height: 1.02 !important;
    }

    /* KPI generales: texto más legible sin volverlos altos. */
    .summary-kpi {
        min-height: 38px !important;
        padding: 3px 6px !important;
        gap: 5px !important;
    }

    .summary-kpi-icon {
        width: 23px !important;
        height: 23px !important;
        flex-basis: 23px !important;
    }

    .summary-kpi-icon svg {
        width: 14px !important;
        height: 14px !important;
    }

    .summary-kpi span:not(.summary-kpi-icon) {
        font-size: 6.2pt !important;
        line-height: 1 !important;
    }

    .summary-kpi strong {
        font-size: 9pt !important;
        line-height: 1 !important;
    }

    /*
       KPI por departamento:
       - 10 por renglón: ~40% menos ancho que 6 por renglón.
       - 33px mínimo: ~30% menos alto que los 47px anteriores.
       - El texto sigue apilado verticalmente: Departamento, Materiales,
         Mano de obra y Total.
    */
    .department-kpis-section {
        margin-top: 3px !important;
        padding: 3px !important;
    }

    .department-kpis-section .section-heading {
        margin-bottom: 2px !important;
    }

    .department-kpis-section .section-heading h2 {
        font-size: 7.2pt !important;
        line-height: 1 !important;
    }

    .department-kpis {
        grid-template-columns: repeat(10,minmax(0,1fr)) !important;
        gap: 2px !important;
    }

    .department-kpi {
        min-height: 33px !important;
        height: auto !important;
        padding: 2px 3px !important;
        border-radius: 3px !important;
    }

    .department-kpi::after {
        width: 28px !important;
        height: 28px !important;
        right: -13px !important;
        top: -12px !important;
    }

    .department-kpi-title {
        margin: 0 0 1px !important;
        font-size: 5.8pt !important;
        line-height: .98 !important;
        white-space: nowrap !important;
        overflow: hidden !important;
        text-overflow: ellipsis !important;
    }

    .department-kpi-line,
    .department-kpi-total {
        display: flex !important;
        align-items: center !important;
        justify-content: space-between !important;
        gap: 2px !important;
        padding: 0 !important;
        font-size: 5.3pt !important;
        line-height: .95 !important;
        white-space: nowrap !important;
    }

    .department-kpi-line strong,
    .department-kpi-total strong {
        font-size: 5.5pt !important;
        line-height: .95 !important;
    }

    .department-kpi-total {
        margin-top: 1px !important;
        padding-top: 1px !important;
    }

    /* Reporte: +2pt aproximados respecto a 4.35, pero con menos padding. */
    .section-heading span {
        font-size: 6pt !important;
    }

    .section-heading h2 {
        font-size: 8pt !important;
    }

    .section-heading > strong {
        font-size: 6.3pt !important;
    }

    .technical-table {
        line-height: 1 !important;
    }

    .technical-table th,
    .technical-table td {
        padding: 1px 2px !important;
        font-size: 6.6pt !important;
        line-height: 1.02 !important;
    }

    .technical-table th {
        font-size: 6pt !important;
        line-height: 1 !important;
    }

    .technical-table .department-row td {
        padding: 1.5px 3px !important;
        font-size: 7pt !important;
        line-height: 1 !important;
    }

    .technical-table .section-row td {
        padding: 1.5px 3px !important;
        font-size: 6.6pt !important;
        line-height: 1 !important;
    }

    .type-badge,
    .origin-badge {
        padding: 1px 2px !important;
        font-size: 5.6pt !important;
        line-height: 1 !important;
    }

    .print-totals h2 {
        font-size: 8pt !important;
    }

    .print-totals > div {
        font-size: 7pt !important;
    }

    .print-totals .print-grand-total {
        font-size: 7.6pt !important;
    }

    .sheet-footer {
        font-size: 6pt !important;
    }
}

/* =====================================================================
   Ficha Técnica 1.11 / Avances Web 4.42
   Selector de catálogo completo Estilo / Combinación
   ===================================================================== */
.query-form{grid-template-columns:minmax(150px,1fr) minmax(150px,1fr) auto auto}
.selector-button{align-self:end;height:40px;display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:0 14px;border:1px solid #a9bfd9;border-radius:9px;color:#174f83;background:linear-gradient(180deg,#fff,#edf5ff);font-weight:900;box-shadow:0 3px 10px rgba(30,83,133,.06)}
.selector-button:hover{border-color:#6fa2d5;background:#e9f3ff}

.style-selector-dialog{width:min(1460px,calc(100vw - 24px));max-width:none;height:min(900px,calc(100vh - 24px));max-height:none;padding:0;overflow:hidden;border:0;border-radius:16px;background:#fff;box-shadow:0 28px 80px rgba(8,38,70,.30)}
.style-selector-dialog::backdrop{background:rgba(5,22,42,.55);backdrop-filter:blur(3px)}
.style-selector-shell{height:100%;display:grid;grid-template-rows:auto auto auto minmax(0,1fr) auto;overflow:hidden;border:1px solid #d4e1ee;border-radius:16px;background:linear-gradient(180deg,#f8fbff,#f4f8fc)}

.style-selector-header{min-height:66px;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:9px 12px;color:#fff;background:linear-gradient(110deg,var(--navy),var(--navy2));border-bottom:1px solid rgba(255,255,255,.12)}
.selector-brand-block{display:flex;align-items:center;gap:10px;min-width:0}
.selector-brand-mark{width:38px;height:38px;flex:0 0 38px;display:grid;place-items:center;border-radius:10px;color:var(--navy);background:#fff;font-weight:950;box-shadow:0 4px 12px rgba(0,0,0,.12)}
.selector-brand-block span,.selector-brand-block strong,.selector-brand-block small{display:block}
.selector-brand-block span{color:#b8d9ff;font-size:.58rem;font-weight:900;letter-spacing:.06em;text-transform:uppercase}
.selector-brand-block strong{margin-top:1px;font-size:1.04rem;line-height:1.1}
.selector-brand-block small{margin-top:2px;color:#d5e7fb;font-size:.62rem}
.selector-header-actions{display:flex;align-items:center;gap:7px}
.selector-header-button{height:34px;padding:0 10px;border:1px solid rgba(255,255,255,.24);border-radius:8px;color:#fff;background:rgba(255,255,255,.08);font-size:.68rem;font-weight:850}
.style-selector-close{width:36px;height:36px;display:grid;place-items:center;border:1px solid rgba(255,255,255,.24);border-radius:9px;color:#fff;background:rgba(255,255,255,.08);font-size:1.35rem;line-height:1}
.selector-header-button:hover,.style-selector-close:hover{background:rgba(255,255,255,.15)}

.style-selector-toolbar{display:grid;grid-template-columns:minmax(340px,.9fr) minmax(660px,1.7fr);gap:12px;padding:10px 12px;border-bottom:1px solid #dbe5ef;background:rgba(255,255,255,.96)}
.selector-search-block,.selector-filter-field{min-width:0}
.selector-search-block>label,.selector-filter-field>label{display:block;margin-bottom:4px;color:#64758a;font-size:.56rem;font-weight:950;letter-spacing:.04em;text-transform:uppercase}
.selector-search-block>small{display:block;margin-top:4px;color:#8492a3;font-size:.56rem}
.selector-control{position:relative;display:flex;align-items:center;min-width:0}
.selector-control input,.selector-control select{width:100%;height:36px;min-width:0;padding:0 31px 0 9px;border:1px solid #bdcddd;border-radius:8px;color:#153b63;background:#fbfdff;outline:none;font-size:.69rem;font-weight:800}
.selector-control-search input{padding-left:32px}
.selector-control input:focus,.selector-control select:focus{border-color:#5d9bd5;box-shadow:0 0 0 3px rgba(55,128,198,.10)}
.selector-search-icon{position:absolute;z-index:1;left:10px;color:#4f759a;font-size:1rem;pointer-events:none}
.selector-clear-x{position:absolute;right:5px;width:24px;height:24px;display:grid;place-items:center;border:0;border-radius:6px;color:#728196;background:transparent;font-weight:950;line-height:1}
.selector-clear-x:hover{color:#b42318;background:#fceceb}
.selector-facets{display:grid;grid-template-columns:1.55fr 1fr .8fr .8fr .85fr auto;gap:7px;align-items:end}
.selector-reset-button{height:36px;padding:0 10px;border:1px solid #c2d0de;border-radius:8px;color:#425d78;background:#f7f9fc;font-size:.63rem;font-weight:900;white-space:nowrap}
.selector-reset-button:hover{background:#eef4fa}

.style-selector-statusbar{min-height:43px;display:flex;align-items:center;justify-content:space-between;gap:14px;padding:6px 12px;border-bottom:1px solid #dbe5ef;background:linear-gradient(90deg,#eef6ff,#f8fbfe)}
.style-selector-statusbar strong,.style-selector-statusbar span{display:block}
.style-selector-statusbar>div:first-child strong{color:#163f69;font-size:.72rem}
.style-selector-statusbar>div:first-child span{margin-top:1px;color:#718196;font-size:.57rem}
.selector-visible-counter{text-align:right}
.selector-visible-counter span{color:#7a8998;font-size:.54rem;font-weight:900;text-transform:uppercase}
.selector-visible-counter strong{margin-top:1px;color:#1769c8;font-size:.75rem}

.style-selector-workspace{min-height:0;display:grid;grid-template-columns:minmax(380px,.78fr) minmax(620px,1.42fr);gap:10px;padding:10px 12px 11px}
.selector-pane{min-width:0;min-height:0;display:grid;grid-template-rows:auto minmax(0,1fr);overflow:hidden;border:1px solid #d9e4ef;border-radius:11px;background:#fff;box-shadow:0 5px 16px rgba(28,70,109,.05)}
.selector-combinations-pane{grid-template-rows:auto auto minmax(0,1fr)}
.selector-pane-header{min-height:43px;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:7px 9px;border-bottom:1px solid #e0e8f0;background:#f8fbfe}
.selector-pane-header span,.selector-pane-header strong{display:block}
.selector-pane-header span{color:#1769c8;font-size:.52rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}
.selector-pane-header strong{margin-top:1px;color:#133b63;font-size:.8rem}
.selector-pane-header small{color:#738397;font-size:.59rem;font-weight:800}
.selector-selected-style-card{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:9px;padding:7px 9px;border-bottom:1px solid #dce7f1;background:linear-gradient(90deg,#eaf4ff,#f8fbff)}
.selector-selected-style-card>span{min-width:70px;padding:5px 8px;border-radius:7px;color:#fff;background:#1769c8;font-family:Consolas,"Courier New",monospace;font-size:.78rem;font-weight:950;text-align:center}
.selector-selected-style-card strong,.selector-selected-style-card small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.selector-selected-style-card strong{color:#173f69;font-size:.7rem}
.selector-selected-style-card small{margin-top:2px;color:#718196;font-size:.56rem}

.selector-table-shell{min-height:0;overflow:auto;background:#fff}
.selector-table{width:100%;border-collapse:collapse;table-layout:auto}
.selector-table th,.selector-table td{padding:6px 7px;border-bottom:1px solid #e8edf3;font-size:.64rem;text-align:left;vertical-align:middle}
.selector-table th{position:sticky;z-index:2;top:0;color:#506178;background:#edf2f7;font-size:.53rem;letter-spacing:.025em;text-transform:uppercase;box-shadow:0 1px 0 #dbe3ec}
.selector-table tbody tr:not(.selector-empty-row){cursor:pointer}
.selector-table tbody tr:not(.selector-empty-row):hover td{background:#f2f7fd}
.selector-table tbody tr.selected td{color:#123c65;background:#e5f1ff}
.selector-table tbody tr.selected td:first-child{box-shadow:inset 4px 0 #1769c8}
.selector-styles-table td:first-child,.selector-combinations-table td:first-child{font-family:Consolas,"Courier New",monospace;font-weight:950;color:#173f69;white-space:nowrap}
.selector-styles-table td:nth-child(3){text-align:center;font-weight:900;color:#65758a}
.selector-style-description{font-weight:800;color:#273c52}
.selector-combination-description{min-width:210px;font-weight:750;color:#273c52}
.selector-status-pill{display:inline-flex;padding:2px 6px;border-radius:999px;color:#26714d;background:#e7f6ed;font-size:.52rem;font-weight:900;white-space:nowrap}
.selector-status-pill.obsolete{color:#8a5b22;background:#fff0d9}
.selector-empty-row td{padding:28px 12px!important;color:#8190a2!important;text-align:center!important;font-family:inherit!important;font-weight:750!important}

.style-selector-footer{min-height:67px;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:9px 12px;border-top:1px solid #dbe5ef;background:#fff}
.style-selector-current{min-width:0}
.style-selector-current span,.style-selector-current strong,.style-selector-current small{display:block}
.style-selector-current span{color:#718196;font-size:.53rem;font-weight:950;text-transform:uppercase}
.style-selector-current strong{overflow:hidden;margin-top:1px;color:#173f69;font-size:.77rem;text-overflow:ellipsis;white-space:nowrap}
.style-selector-current small{overflow:hidden;margin-top:2px;color:#7c8b9b;font-size:.58rem;text-overflow:ellipsis;white-space:nowrap}
.style-selector-footer-actions{flex:0 0 auto;display:flex;gap:7px}
.selector-primary-button,.selector-secondary-button{min-height:36px;padding:0 13px;border-radius:8px;font-size:.67rem;font-weight:900}
.selector-primary-button{border:0;color:#fff;background:#1769c8;box-shadow:0 4px 11px rgba(23,105,200,.18)}
.selector-primary-button:disabled{color:#8592a3;background:#dfe6ed;box-shadow:none;cursor:not-allowed}
.selector-secondary-button{border:1px solid #bdcbd9;color:#39546e;background:#fff}

@media(max-width:1100px){
  .style-selector-dialog{width:calc(100vw - 12px);height:calc(100vh - 12px)}
  .style-selector-toolbar{grid-template-columns:1fr}
  .selector-facets{grid-template-columns:repeat(3,minmax(0,1fr))}
  .selector-reset-button{align-self:end}
  .style-selector-workspace{grid-template-columns:minmax(310px,.8fr) minmax(500px,1.2fr)}
}
@media(max-width:760px){
  .query-form{grid-template-columns:1fr 1fr}
  .style-selector-workspace{grid-template-columns:1fr;overflow:auto}
  .selector-pane{min-height:330px}
  .selector-facets{grid-template-columns:1fr 1fr}
  .style-selector-statusbar{align-items:flex-start;flex-direction:column}
  .selector-visible-counter{text-align:left}
  .style-selector-footer{align-items:stretch;flex-direction:column}
  .style-selector-footer-actions{justify-content:flex-end}
  .selector-brand-block small{display:none}
}
@media print{.style-selector-dialog{display:none!important}}


/* =====================================================================
   Ficha Técnica 1.12 / Avances Web 4.43
   Ajustes del selector + separación física en /CentroEstilos
   ===================================================================== */

/* Todos los filtros comienzan en el mismo borde superior. */
.style-selector-toolbar{
    align-items:start;
}

.selector-search-block,
.selector-facets,
.selector-filter-field{
    align-self:start;
}

.selector-facets{
    align-items:start;
}

/* El botón global se alinea con la línea de controles, no con la etiqueta. */
.selector-reset-button{
    align-self:start;
    margin-top:16px;
}

/* Los selects usan únicamente su flecha nativa; la X queda reservada al buscador. */
.selector-control select{
    padding-right:28px;
}

/* Ambas tablas comienzan exactamente a la misma altura. */
.selector-pane{
    grid-template-rows:52px minmax(0,1fr);
}

.selector-combinations-pane{
    grid-template-rows:52px minmax(0,1fr);
}

.selector-pane-header{
    min-height:52px;
    height:52px;
    padding:6px 9px;
}

.selector-combinations-header{
    display:grid;
    grid-template-columns:auto minmax(180px,1fr) auto;
    align-items:center;
    gap:12px;
}

.selector-pane-title{
    min-width:110px;
}

/* La ficha del estilo seleccionado vive dentro del encabezado de Detalle. */
.selector-selected-style-card{
    min-width:0;
    display:grid;
    grid-template-columns:auto minmax(0,1fr);
    align-items:center;
    gap:8px;
    padding:0;
    border:0;
    background:transparent;
}

.selector-selected-style-card[hidden]{
    display:none!important;
}

.selector-selected-style-card>span{
    min-width:66px;
    padding:5px 8px;
    border-radius:7px;
    font-size:.73rem;
}

.selector-selected-style-card strong{
    font-size:.66rem;
}

.selector-selected-style-card small{
    margin-top:1px;
    font-size:.54rem;
}

.selector-combinations-header>#selector-combination-count{
    white-space:nowrap;
    text-align:right;
}

/* La tabla queda pegada al encabezado, igual que la tabla de estilos. */
.selector-table-shell{
    border-top:0;
}

@media(max-width:920px){
    .selector-combinations-header{
        grid-template-columns:auto minmax(160px,1fr);
    }
    .selector-combinations-header>#selector-combination-count{
        display:none;
    }
}


/* =====================================================================
   Ficha Técnica 1.13 / Centro de Estilos 1.1
   PDF individual, consolidado y ZIP de fichas técnicas
   ===================================================================== */
.pdf-batch-dialog{width:min(930px,calc(100vw - 26px));max-width:none;padding:0;overflow:hidden;border:0;border-radius:18px;background:#fff;box-shadow:0 28px 80px rgba(8,38,70,.32)}
.pdf-batch-dialog::backdrop{background:rgba(5,22,42,.58);backdrop-filter:blur(4px)}
.pdf-batch-shell{overflow:hidden;border:1px solid #d5e3ef;border-radius:18px;background:radial-gradient(circle at 92% 0%,rgba(167,219,255,.16),transparent 18rem),#f8fbfe}
.pdf-batch-header{min-height:70px;display:flex;align-items:center;justify-content:space-between;gap:14px;padding:10px 14px;color:#fff;background:linear-gradient(105deg,#123f70,#1d659e)}
.pdf-batch-brand{display:flex;align-items:center;gap:10px;min-width:0}
.pdf-batch-mark{width:40px;height:40px;flex:0 0 40px;display:grid;place-items:center;border-radius:11px;color:#123f70;background:#fff;font-weight:950;box-shadow:0 5px 14px rgba(0,0,0,.13)}
.pdf-batch-brand span,.pdf-batch-brand strong,.pdf-batch-brand small{display:block}
.pdf-batch-brand span{color:#bcdcf6;font-size:.58rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}
.pdf-batch-brand strong{margin-top:1px;font-size:1.02rem}
.pdf-batch-brand small{margin-top:2px;color:#dcebf8;font-size:.62rem}
.pdf-batch-close{width:37px;height:37px;flex:0 0 37px;display:grid;place-items:center;border:1px solid rgba(255,255,255,.25);border-radius:10px;color:#fff;background:rgba(255,255,255,.09);font-size:1.45rem;line-height:1}
.pdf-batch-options{display:grid;grid-template-columns:1fr 1fr;gap:12px;padding:13px}
.pdf-option-section{min-width:0;padding:11px;border:1px solid #dbe6f0;border-radius:13px;background:rgba(255,255,255,.94);box-shadow:0 5px 16px rgba(34,76,115,.05)}
.pdf-option-heading{display:flex;align-items:center;gap:9px;margin-bottom:9px}
.pdf-option-heading>span{width:29px;height:29px;flex:0 0 29px;display:grid;place-items:center;border-radius:9px;color:#1769c8;background:#e9f3ff;font-size:.61rem;font-weight:950}
.pdf-option-heading strong,.pdf-option-heading small{display:block}
.pdf-option-heading strong{color:#173f69;font-size:.77rem}
.pdf-option-heading small{margin-top:1px;color:#7b8999;font-size:.56rem}
.pdf-choice-card{position:relative;min-height:61px;display:flex;align-items:center;gap:10px;margin-top:7px;padding:8px 9px;border:1px solid #d9e3ed;border-radius:10px;background:#fbfdff;cursor:pointer;transition:border-color .16s ease,background .16s ease,box-shadow .16s ease}
.pdf-choice-card:hover{border-color:#a8c6e3;background:#f5faff}
.pdf-choice-card:has(input:checked){border-color:#70a6d7;background:linear-gradient(135deg,#f7fbff,#eaf4ff);box-shadow:0 0 0 2px rgba(38,119,194,.08)}
.pdf-choice-card>input{position:absolute;opacity:0;pointer-events:none}
.pdf-choice-dot{width:19px;height:19px;flex:0 0 19px;display:grid;place-items:center;border:2px solid #aebdcd;border-radius:50%;background:#fff}
.pdf-choice-card:has(input:checked) .pdf-choice-dot{border:6px solid #1769c8}
.pdf-choice-card strong,.pdf-choice-card small{display:block}
.pdf-choice-card strong{color:#173f69;font-size:.72rem}
.pdf-choice-card small{margin-top:2px;color:#7c8b9b;font-size:.57rem;line-height:1.3}
.pdf-range-choice{width:100%;min-width:0;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px}
.pdf-range-inputs{display:flex;gap:6px}
.pdf-range-inputs label{display:grid;gap:2px}
.pdf-range-inputs span{color:#7a8999;font-size:.49rem;font-weight:900;text-transform:uppercase}
.pdf-range-inputs input{width:68px;height:31px;padding:0 6px;border:1px solid #bfcddd;border-radius:7px;color:#173f69;background:#fff;font-weight:900;outline:none}
.pdf-filename-example{margin-top:10px;padding:8px 9px;border:1px dashed #c8d7e5;border-radius:9px;background:#f8fafc}
.pdf-filename-example span,.pdf-filename-example code{display:block}
.pdf-filename-example span{color:#748396;font-size:.52rem;font-weight:900;text-transform:uppercase}
.pdf-filename-example code{overflow:hidden;margin-top:3px;color:#245987;font-family:Consolas,"Courier New",monospace;font-size:.62rem;text-overflow:ellipsis;white-space:nowrap}
.pdf-batch-progress{position:relative;display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:12px;margin:13px;padding:14px;border:1px solid #bfd7ec;border-radius:13px;background:linear-gradient(135deg,#fff,#edf6ff)}
.pdf-batch-progress[hidden]{display:none!important}
.pdf-progress-icon{width:46px;height:46px;display:grid;place-items:center;border-radius:14px;color:#1769c8;background:#e2f0ff}
.pdf-progress-icon svg{width:25px;height:25px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.pdf-progress-copy span,.pdf-progress-copy strong,.pdf-progress-copy small{display:block}
.pdf-progress-copy span{color:#1769c8;font-size:.53rem;font-weight:950;text-transform:uppercase}
.pdf-progress-copy strong{margin-top:2px;color:#173f69;font-size:.79rem}
.pdf-progress-copy small{margin-top:2px;color:#718196;font-size:.59rem}
.pdf-progress-count{min-width:94px;text-align:right}
.pdf-progress-count strong,.pdf-progress-count span{display:block}
.pdf-progress-count strong{color:#173f69;font-size:.92rem}
.pdf-progress-count span{margin-top:2px;color:#8a6a29;font-size:.55rem;font-weight:850}
.pdf-progress-count span.ok{color:#27835b}.pdf-progress-count span.error{color:#b42318}
.pdf-batch-progress progress{grid-column:1/-1;width:100%;height:8px;overflow:hidden;border:0;border-radius:999px;background:#dfeaf4}
.pdf-batch-footer{min-height:67px;display:flex;align-items:center;justify-content:space-between;gap:14px;padding:10px 13px;border-top:1px solid #dce6ef;background:#fff}
.pdf-batch-summary{min-width:0}.pdf-batch-summary strong,.pdf-batch-summary span{display:block}
.pdf-batch-summary strong{color:#173f69;font-size:.72rem}.pdf-batch-summary span{margin-top:2px;color:#7a8999;font-size:.57rem}
.pdf-batch-actions{flex:0 0 auto;display:flex;gap:7px}
.pdf-primary-button,.pdf-secondary-button{min-height:37px;padding:0 14px;border-radius:8px;font-size:.68rem;font-weight:900}
.pdf-primary-button{border:0;color:#fff;background:#1769c8;box-shadow:0 4px 11px rgba(23,105,200,.18)}
.pdf-primary-button:disabled{color:#8592a3;background:#dfe6ed;box-shadow:none;cursor:not-allowed}
.pdf-secondary-button{border:1px solid #bdcbd9;color:#39546e;background:#fff}
.pdf-batch-dialog.busy .pdf-batch-options{display:none}
@media(max-width:760px){.pdf-batch-options{grid-template-columns:1fr}.pdf-range-choice{grid-template-columns:1fr}.pdf-batch-footer{align-items:stretch;flex-direction:column}.pdf-batch-actions{justify-content:flex-end}}
@media print{.pdf-batch-dialog{display:none!important}}

/* Ficha Tecnica 1.15: orden de componentes */
.component-controls{display:flex;align-items:center;justify-content:flex-end;gap:12px;flex-wrap:wrap}
.component-controls>strong{color:var(--slate);font-size:.68rem}
.component-sort{display:flex;align-items:center;gap:7px;color:var(--slate);font-size:.68rem;font-weight:800}
.component-sort select{max-width:100%;min-height:32px;padding:5px 9px;border:1px solid #c8d8e7;border-radius:8px;color:var(--navy);background:#f2f7fd;font:inherit}
.component-sort select:focus-visible{outline:2px solid var(--blue);outline-offset:2px}
.component-sort select:disabled{opacity:.6}
@media(max-width:700px){.sheet-section>.section-heading{flex-wrap:wrap}.component-controls{justify-content:flex-start}}

/* Ficha Tecnica 1.16: ID secundario junto al nombre */
.component-id-badge{display:inline-block;margin-left:4px;padding:1px 5px;border:1px solid #e2e8f0;border-radius:6px;background:#edf2f7;color:#64748b;font-size:.85em;font-weight:500;line-height:1.25;white-space:nowrap;vertical-align:baseline}
@media print{.component-id-badge{background:#edf2f7!important;color:#64748b!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}}
