:root{
  --green:#1e3d2f;--green-2:#2f5a47;--cream:#f4efe5;--paper:#fffdf8;--ink:#16231c;
  --muted:#66746c;--line:#d9dfda;--gold:#c89643;--red:#d62828;--cut:#24445a;
  --shadow:0 16px 40px rgba(30,61,47,.12);--radius:18px
}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--ink);background:#f7f8f5;line-height:1.45}button,input{font:inherit}a{color:inherit}[hidden]{display:none!important}.container{width:min(1440px,calc(100% - 32px));margin-inline:auto}
.topbar{background:var(--green);color:#fff;padding:8px 0;font-size:.88rem}.topbar .container{display:flex;justify-content:space-between;gap:20px}.header{background:#fff;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:20}.header-inner{min-height:76px;display:flex;align-items:center;justify-content:space-between;gap:20px}.brand img{width:200px;height:auto;display:block}.header-actions{display:flex;gap:10px;align-items:center}.back-link{text-decoration:none;font-weight:700;color:var(--green)}.prototype-badge{display:inline-flex;align-items:center;gap:8px;background:#fff2d6;color:#6d4b0f;border:1px solid #eed49d;border-radius:999px;padding:7px 12px;font-weight:800;font-size:.8rem}
.hero{padding:42px 0 26px;background:linear-gradient(145deg,#eef4ef,#faf7ef)}.hero-grid{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(280px,.7fr);gap:30px;align-items:center}.eyebrow{text-transform:uppercase;letter-spacing:.14em;font-weight:900;font-size:.78rem;color:var(--gold)}h1{font-size:clamp(2rem,4vw,4rem);line-height:1.02;margin:9px 0 16px;color:var(--green)}.hero p{font-size:1.05rem;color:var(--muted);max-width:900px}.spec-card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:20px;box-shadow:var(--shadow)}.spec-card h2{font-size:1rem;margin:0 0 12px;color:var(--green)}.spec-list{display:grid;grid-template-columns:1fr 1fr;gap:9px;font-size:.88rem}.spec-list span{background:#f5f7f4;padding:9px;border-radius:10px}
.app{padding:26px 0 70px}.layout{display:grid;grid-template-columns:1fr;gap:24px;align-items:start}.panel{width:100%;background:#fff;border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}.panel-header{padding:20px 22px;border-bottom:1px solid var(--line);display:flex;align-items:flex-start;justify-content:space-between;gap:16px;background:#fbfcfa}.panel-header h2{margin:0;color:var(--green);font-size:1.3rem}.panel-header p{margin:5px 0 0;color:var(--muted);font-size:.9rem}.panel-body{padding:22px}.form-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-bottom:20px}.field{display:grid;gap:6px}.field label{font-weight:800;font-size:.82rem;color:#36443c}.field input{width:100%;border:1px solid #cdd5cf;background:#fff;border-radius:10px;padding:11px 12px;outline:none}.field input:focus{border-color:var(--green-2);box-shadow:0 0 0 3px rgba(47,90,71,.12)}.settings-note,.edge-help{font-size:.82rem;color:var(--muted);background:#f6f8f5;border-radius:12px;padding:12px;margin:-5px 0 14px}.edge-help{margin:0 0 14px;border-left:4px solid var(--red)}
.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:14px}table{width:100%;border-collapse:collapse;min-width:980px}th{font-size:.73rem;text-transform:uppercase;letter-spacing:.05em;background:#eff3ef;color:#405047;padding:10px 8px;border-bottom:1px solid var(--line);white-space:nowrap}td{padding:10px 8px;border-bottom:1px solid #edf0ed;vertical-align:middle;text-align:center}.piece-number{display:inline-grid;place-items:center;width:34px;height:34px;border-radius:50%;background:var(--green);color:#fff;font-weight:900}table input[type="number"]{width:100%;min-width:82px;border:1px solid #ccd4ce;border-radius:8px;padding:9px}table input[type="checkbox"]{accent-color:var(--red)}.grain-check{display:grid;justify-items:center;gap:4px;font-size:.7rem;color:var(--muted)}.grain-check input{width:19px;height:19px;accent-color:var(--green)}
.edge-selector{position:relative;width:206px;height:132px;margin:auto;display:grid;grid-template-columns:58px 1fr 58px;grid-template-rows:40px 1fr 40px;gap:4px}.edge-center{grid-column:2;grid-row:2;border:2px solid #9ba9a0;border-radius:7px;background:#f6f0e4;display:grid;place-content:center;line-height:1;text-align:center;color:#59675f}.edge-center small{font-size:.54rem}.edge-center b{font-size:.74rem;margin-top:5px}.edge-toggle{display:grid;position:relative;cursor:pointer;align-items:center;justify-items:center;gap:2px}.edge-toggle input{position:absolute;opacity:0;pointer-events:none}.edge-toggle .edge-bar{display:block;width:100%;height:7px;border-radius:5px;background:#d7ddd9;transition:.15s}.edge-left .edge-bar,.edge-right .edge-bar{width:7px;height:100%}.edge-toggle input:checked+.edge-bar{background:var(--red);box-shadow:0 0 0 2px rgba(214,40,40,.15)}.edge-name{font-size:.57rem;font-weight:1000;color:#31463a;white-space:nowrap;line-height:1}.edge-measure{font-size:.53rem;color:#66756c;white-space:nowrap;line-height:1}.edge-top{grid-column:2;grid-row:1;grid-template-rows:auto 7px auto}.edge-bottom{grid-column:2;grid-row:3;grid-template-rows:auto 7px auto}.edge-left{grid-column:1;grid-row:2;grid-template-columns:auto 7px auto;grid-template-rows:1fr}.edge-right{grid-column:3;grid-row:2;grid-template-columns:auto 7px auto;grid-template-rows:1fr}.edge-left .edge-name,.edge-left .edge-measure,.edge-right .edge-name,.edge-right .edge-measure{writing-mode:vertical-rl;transform:rotate(180deg)}.edge-left .edge-name,.edge-right .edge-name{font-size:.55rem}.edge-left .edge-measure,.edge-right .edge-measure{font-size:.51rem}.icon-btn{border:0;background:#fff0f0;color:#a61b1b;border-radius:8px;width:34px;height:34px;cursor:pointer;font-weight:900}.actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:18px}.btn{border:0;border-radius:11px;padding:12px 16px;font-weight:900;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:8px}.btn.primary{background:var(--green);color:#fff}.btn.secondary{background:#eaf0eb;color:var(--green)}.btn.outline{background:#fff;color:var(--green);border:1px solid #b8c5bc}.btn.danger{background:#fff0f0;color:#9d1d1d}
.results-panel{position:static}.results{display:none}.results.active{display:block}.summary-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px;padding:18px;border-bottom:1px solid var(--line)}.metric{background:#f5f7f4;border-radius:12px;padding:13px;min-height:88px}.metric span{display:block;color:var(--muted);font-size:.75rem;text-transform:uppercase;font-weight:800;letter-spacing:.05em}.metric strong{display:block;font-size:1.55rem;color:var(--green);margin-top:5px}.metric small{display:block;color:var(--muted);font-size:.72rem;margin-top:2px}.result-actions{display:flex;gap:10px;padding:0 18px 18px;flex-wrap:wrap}.warnings{margin:0 18px 18px;padding:12px 14px;background:#fff3cd;border:1px solid #f0d889;border-radius:12px;color:#624b0d;font-size:.88rem}.board-list{display:grid;gap:24px;padding:18px;background:#f5f7f4}.board-card{background:#fff;border:1px solid var(--line);border-radius:14px;padding:16px;break-inside:avoid;page-break-inside:avoid}.board-card-header{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:12px}.board-card h3{margin:0;color:var(--green)}.board-meta{font-size:.8rem;color:var(--muted);text-align:right}.board-svg{width:min(100%,720px);height:auto;display:block;margin:0 auto;background:#ece5d8;border:1px solid #b8a98e;border-radius:7px}.piece-outline{stroke:#33483d;stroke-width:.42;vector-effect:non-scaling-stroke}.piece-number-svg{font-weight:900;fill:#1a3025;paint-order:stroke;stroke:#fff;stroke-width:.35;stroke-linejoin:round}.piece-side-dim{font-weight:1000;fill:#10231a;text-anchor:middle;dominant-baseline:middle;paint-order:stroke;stroke:#fff;stroke-width:.7;stroke-linejoin:round}.edge-line{stroke:var(--red);stroke-width:.62;stroke-linecap:round}.cut-line{stroke:var(--cut);stroke-width:.38;stroke-dasharray:1.25 .7;stroke-linecap:butt;opacity:.96}.perimeter-cut{stroke:#151f1a;stroke-width:.45;stroke-dasharray:1.6 .8}.grain-arrow{fill:#2c4838;font-weight:900;text-anchor:middle;dominant-baseline:middle;opacity:.78;paint-order:stroke;stroke:#fff;stroke-width:.35}.legend{display:flex;flex-wrap:wrap;gap:16px;font-size:.78rem;color:var(--muted);margin-top:11px}.legend span{display:inline-flex;align-items:center;gap:6px}.legend i{display:inline-block;width:28px;height:5px;border-radius:4px}.legend .red{background:var(--red);height:3px}.legend .cut{height:0;border-top:2px dashed var(--cut);border-radius:0}.error-box{padding:14px;background:#fff0f0;border:1px solid #efb4b4;color:#861b1b;border-radius:12px;margin-top:16px}.footer{background:var(--green);color:#fff;padding:24px 0;text-align:center;font-size:.85rem}
@media(max-width:1100px){.hero-grid{grid-template-columns:1fr}.summary-grid{grid-template-columns:repeat(3,1fr)}}@media(max-width:720px){.topbar .container{display:block;text-align:center}.header-inner{min-height:68px}.brand img{width:165px}.back-link{display:none}.hero{padding-top:28px}.form-grid{grid-template-columns:1fr}.summary-grid{grid-template-columns:1fr 1fr}.panel-body,.panel-header{padding:16px}.container{width:min(100% - 20px,1440px)}}
@media print{@page{size:A4 portrait;margin:9mm}body{background:#fff;font-size:10pt}.topbar,.header,.hero,.input-panel,.result-actions,.footer,.warnings{display:none!important}.app{padding:0}.container{width:100%;max-width:none}.layout{display:block}.results-panel{display:block!important;position:static;border:0;box-shadow:none}.results{display:block!important}.panel-header{padding:0 0 8mm;border:0;background:#fff}.panel-header::before{content:"Maderería 4 Fresnos · Optimizador de cortes";display:block;font-weight:900;font-size:15pt;color:#1e3d2f;margin-bottom:2mm}.summary-grid{grid-template-columns:repeat(3,1fr);padding:0 0 7mm;gap:3mm;border:0}.metric{border:1px solid #bbb;min-height:auto;padding:3mm}.metric strong{font-size:13pt}.board-list{padding:0;background:#fff;display:block}.board-card{border:0;padding:0;margin:0;page-break-after:always}.board-card:last-child{page-break-after:auto}.board-svg{width:auto;max-width:100%;max-height:228mm;margin:auto;border:1px solid #777}.legend{font-size:8pt}}


/* V0.5 — plano operativo y PDF */
.print-summary-heading{display:none}
.print-project-info{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;padding:18px 18px 0}
.print-project-info>div{border:1px solid var(--line);border-radius:12px;padding:11px 12px;background:#fbfcfa}
.print-project-info span{display:block;color:var(--muted);font-size:.72rem;text-transform:uppercase;font-weight:850;letter-spacing:.05em}
.print-project-info strong{display:block;margin-top:4px;color:var(--green);font-size:.95rem}
.board-svg{width:min(100%,900px)}
.waste-hatch-line{stroke:#7e7568;stroke-width:.55;opacity:.72;vector-effect:non-scaling-stroke}
.waste-rect{stroke:#aa9f90;stroke-width:.22;vector-effect:non-scaling-stroke}
.legend .waste{height:9px;border-radius:0;border:1px solid #aaa;background:repeating-linear-gradient(135deg,#888 0 1px,transparent 1px 4px)}
.screen-board-detail{font-size:.82rem;color:var(--muted);margin-top:3px}

@media(max-width:720px){
  .print-project-info{grid-template-columns:1fr 1fr;padding:14px 14px 0}
}

@media print{
  @page{size:A4 portrait;margin:6mm}
  body{background:#fff;font-size:9.5pt}
  .topbar,.header,.hero,.input-panel,.result-actions,.footer,.warnings,.results-panel>.panel-header{display:none!important}
  .app{padding:0}
  .container{width:100%;max-width:none}
  .layout{display:block}
  .results-panel{display:block!important;position:static;border:0;box-shadow:none;overflow:visible}
  .results{display:block!important}
  .summary-page{
    display:block;
    min-height:283mm;
    padding:4mm 4mm 0;
    page-break-after:always;
    break-after:page;
  }
  .print-summary-heading{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:10mm;
    border-bottom:1.2mm solid #1e3d2f;
    padding-bottom:5mm;
    margin-bottom:5mm
  }
  .print-summary-heading img{width:52mm;height:auto}
  .print-summary-heading div{text-align:right}
  .print-summary-heading span{font-size:8pt;font-weight:900;letter-spacing:.12em;color:#c89643}
  .print-summary-heading h1{font-size:20pt;margin:1mm 0 0;line-height:1;color:#1e3d2f}
  .print-project-info{
    grid-template-columns:repeat(2,1fr);
    gap:3mm;
    padding:0 0 5mm
  }
  .print-project-info>div{border:1px solid #aaa;border-radius:0;padding:3mm;background:#fff}
  .print-project-info span{font-size:7.5pt}
  .print-project-info strong{font-size:10pt}
  .summary-grid{
    grid-template-columns:repeat(2,1fr);
    padding:0;
    gap:3mm;
    border:0
  }
  .metric{border:1px solid #aaa;border-radius:0;min-height:25mm;padding:4mm;background:#fff}
  .metric span{font-size:8pt}
  .metric strong{font-size:18pt}
  .metric small{font-size:8pt}
  .board-list{
    display:block;
    padding:0;
    background:#fff;
  }
  .board-card{
    height:283mm;
    border:0;
    border-radius:0;
    padding:0;
    margin:0;
    display:flex;
    flex-direction:column;
    align-items:center;
    page-break-after:always;
    break-after:page;
    page-break-inside:avoid;
    break-inside:avoid;
  }
  .board-card:last-child{page-break-after:auto;break-after:auto}
  .board-card-header{
    width:100%;
    min-height:10mm;
    margin:0 0 2mm;
    padding:0 2mm;
    align-items:center;
  }
  .board-card-header h3{font-size:14pt;margin:0;color:#111}
  .screen-board-detail,.board-meta,.legend{display:none!important}
  .board-svg{
    display:block;
    width:auto;
    height:266mm;
    max-width:100%;
    max-height:266mm;
    margin:0 auto;
    border:1px solid #555;
    border-radius:0;
    background:#fff
  }
  .piece-side-dim{stroke-width:.5}
  .cut-line{stroke-width:.34}
  .edge-line{stroke-width:.48}
  .waste-hatch-line{stroke-width:.45}
}


/* V0.6 — generador de etiquetas */
.field select{width:100%;border:1px solid #cdd5cf;background:#fff;border-radius:10px;padding:11px 12px;outline:none}
.labels-panel{margin:24px 18px 18px;border:1px solid var(--line);border-radius:16px;background:#fff;overflow:hidden}
.labels-header{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:20px 22px;border-bottom:1px solid var(--line);background:#fbfcfa}
.labels-header h2{margin:4px 0 3px;color:var(--green);font-size:1.45rem}.labels-header p{margin:0;color:var(--muted);font-size:.9rem}
.label-count{min-width:92px;border-radius:14px;background:var(--green);color:#fff;padding:11px 14px;text-align:center}.label-count strong{display:block;font-size:1.7rem;line-height:1}.label-count span{display:block;font-size:.7rem;text-transform:uppercase;letter-spacing:.08em;margin-top:5px}
.label-controls{display:grid;grid-template-columns:repeat(4,minmax(130px,1fr)) auto;gap:12px;align-items:end;padding:16px 22px;background:#f5f7f4;border-bottom:1px solid var(--line)}
.field.compact label{font-size:.74rem}.field.compact input,.field.compact select{padding:9px 10px}.label-control-actions{display:flex;gap:8px;align-items:center;white-space:nowrap}
.label-print-note{margin:12px 22px 0;color:var(--muted);font-size:.8rem}
.label-list{--label-width:9cm;--label-height:5cm;--label-gap:.3cm;display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,var(--label-width)),var(--label-width)));gap:var(--label-gap);align-items:start;padding:18px 22px 24px;overflow:auto;background:#eef1ed}
.piece-label{width:var(--label-width);height:var(--label-height);background:#fff;border:1px dashed #7f8983;border-radius:2mm;padding:2.4mm 2.7mm;display:grid;grid-template-rows:auto 1fr auto;overflow:hidden;break-inside:avoid;page-break-inside:avoid;color:#111}
.piece-label-top{display:flex;align-items:center;justify-content:space-between;gap:3mm;border-bottom:.35mm solid #1e3d2f;padding-bottom:1mm;min-height:6mm}.piece-label-brand{font-size:7.2pt;font-weight:950;letter-spacing:.04em;color:#1e3d2f;white-space:nowrap}.piece-label-id{font-size:14pt;line-height:1;color:#111;white-space:nowrap}
.piece-label-content{display:grid;grid-template-columns:minmax(0,1fr) 29mm;gap:2mm;min-height:0;padding:1.5mm 0 1mm}.piece-label-data{min-width:0;display:flex;flex-direction:column;justify-content:center}.piece-label-measures{font-size:17pt;font-weight:1000;line-height:.95;white-space:nowrap;letter-spacing:-.03em}.piece-label-measures small{font-size:8pt;letter-spacing:0}.piece-label-caption{font-size:6pt;font-weight:900;letter-spacing:.12em;color:#5f6b64;margin-top:.8mm}.piece-label-material{font-size:7.5pt;font-weight:850;margin-top:1.2mm;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.piece-label-detail{font-size:6.6pt;line-height:1.15;margin-top:.65mm;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.piece-label-diagram{min-width:0;display:grid;place-items:center}.label-diagram-svg{width:100%;height:100%;max-height:29mm}.label-piece-shape{fill:#f1e9dc;stroke:#253d31;stroke-width:1.1}.label-edge-line{stroke:#d62828;stroke-width:2.1;stroke-linecap:round}.label-diagram-dim{font-size:7px;font-weight:900;fill:#17251d;text-anchor:middle}.label-diagram-grain{font-size:7px;font-weight:950;fill:#1e3d2f;text-anchor:middle;dominant-baseline:middle}
.piece-label-bottom{display:flex;align-items:center;justify-content:space-between;gap:3mm;border-top:.25mm solid #9ba39e;padding-top:1mm;font-size:6.6pt;line-height:1}.piece-label-bottom span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.piece-label-bottom strong{white-space:nowrap}
@media(max-width:1000px){.label-controls{grid-template-columns:repeat(2,minmax(0,1fr))}.label-control-actions{grid-column:1/-1}}@media(max-width:620px){.labels-header{align-items:flex-start}.label-controls{grid-template-columns:1fr}.label-control-actions{grid-column:auto;flex-wrap:wrap}.label-list{padding:14px;justify-content:start}}

@media print{
  body.print-plans .labels-panel{display:none!important}
  body.print-labels .summary-page,
  body.print-labels .board-list,
  body.print-labels .result-actions,
  body.print-labels .results-panel>.panel-header{display:none!important}
  body.print-labels .labels-panel{display:block!important;margin:0;border:0;border-radius:0;overflow:visible;background:#fff}
  body.print-labels .labels-header,
  body.print-labels .label-controls,
  body.print-labels .label-print-note{display:none!important}
  body.print-labels .label-list{display:grid!important;grid-template-columns:repeat(auto-fill,var(--label-width));grid-auto-rows:var(--label-height);gap:var(--label-gap);justify-content:start;align-content:start;padding:0;background:#fff;overflow:visible}
  body.print-labels .piece-label{width:var(--label-width);height:var(--label-height);border:1px dashed #777;border-radius:0;margin:0;box-shadow:none}
}

/* Public website integration */
.public-beta-note{font-size:.84rem;color:#5d4914;background:#fff7d9;border:1px solid #ead38b;border-radius:12px;padding:12px 14px;margin:0 0 14px}
.public-beta-note strong{color:#4b3908}
