/* Diaphragm Opening Analyzer - scoped under .dpho (generated from
 * diaphragm-tool/app.html <style>; regenerate rather than hand-edit). */
/* Collision firewall: these class names are ALSO defined globally by the site's
 * style.css; revert them to user-agent defaults inside the tool scope so the
 * site's rules cannot bleed in. The tool's own rules follow and re-style them.
 * (Same technique as the conceptcost .ccx embed - see project memory.) */
.dpho .actions,.dpho .active,.dpho .cap,.dpho .fail,.dpho .field,.dpho .lbl,.dpho .note,.dpho .ok,.dpho .panel,.dpho .pass,.dpho .unit,.dpho .warn{all:revert;}

.dpho{
    --wood-900:#0f1729; --wood-700:#1f2937; --wood-500:#6366f1; --wood-300:#818cf8;
    --accent:#4f46e5; --accent-700:#4338ca; --bg:#f9fafb; --panel:#fff; --ink:#111827;
    --muted:#6b7280; --line:#e5e7eb;
    --ok:#16a34a; --no:#dc2626; --warn:#d97706;
    --mono: ui-monospace, SFMono-Regular, "SF Mono", Consolas, "Liberation Mono", Menlo, monospace;
    --sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
  }.dpho *{ box-sizing:border-box; }.dpho,.dpho{ margin:0; padding:0; background:var(--bg); color:var(--ink); font-family:var(--sans); font-size:14px; }.dpho h1,.dpho h2,.dpho h3,.dpho h4{ margin:0 0 6px; font-weight:700; color:var(--ink); }.dpho table{ border-collapse:collapse; width:100%; }.dpho th,.dpho td{ text-align:left; padding:4px 6px; border-bottom:1px solid var(--line); font-variant-numeric: tabular-nums; }.dpho th{ color:var(--muted); font-weight:600; font-size:11px; text-transform:uppercase; letter-spacing:.03em; }.dpho label{ font-size:12px; color:var(--muted); display:block; margin-bottom:2px; }.dpho input[type=number],.dpho input[type=text]{
    width:100%; padding:5px 7px; border:1px solid var(--line); border-radius:6px;
    font-family:var(--mono); font-size:13px; background:var(--panel); color:var(--ink);
  }.dpho input[type=number]:focus,.dpho input[type=text]:focus{ outline:2px solid var(--wood-500); outline-offset:1px; border-color:var(--wood-500); }.dpho button{
    font-family:var(--sans); font-size:13px; font-weight:600; cursor:pointer;
    border:1px solid var(--line); background:var(--panel); color:var(--ink);
    border-radius:6px; padding:6px 10px;
  }.dpho button:hover{ border-color:var(--wood-500); }.dpho button.primary{ background:var(--accent); border-color:var(--accent); color:#fff; }.dpho button.primary:hover{ background:var(--accent-700); border-color:var(--accent-700); }.dpho button.ghost{ background:transparent; border-color:transparent; color:var(--muted); padding:2px 6px; }.dpho button.ghost:hover{ color:var(--no); }.dpho .unit{ color:var(--muted); font-weight:400; }.dpho .row{ display:flex; gap:8px; align-items:end; }.dpho .row > *{ flex:1; }.dpho .field{ margin-bottom:10px; }.dpho .panel{ background:var(--panel); border:1px solid var(--line); border-radius:10px; padding:14px; margin-bottom:14px; }.dpho .panel > h3{ font-size:13px; text-transform:uppercase; letter-spacing:.04em; color:var(--muted); border-bottom:1px solid var(--line); padding-bottom:8px; margin-bottom:10px; }.dpho header.dpho-topbar{
    background:var(--wood-900); color:#fff; padding:12px 20px; display:flex; flex-wrap:wrap; gap:8px;
    align-items:center; justify-content:space-between; position:sticky; top:0; z-index:50;
  }.dpho header.dpho-topbar .title{ font-size:16px; font-weight:700; display:flex; align-items:center; gap:10px; }.dpho header.dpho-topbar .title .dot{ width:10px; height:10px; border-radius:50%; background:var(--wood-500); box-shadow:0 0 0 3px rgba(99,102,241,.25); }.dpho header.dpho-topbar .meta{ font-size:11px; color:#9ca3af; font-family:var(--mono); }.dpho header.dpho-topbar .actions{ display:flex; gap:8px; align-items:center; }.dpho header.dpho-topbar button{ background:var(--wood-700); color:#fff; border-color:#374151; }.dpho header.dpho-topbar button.primary{ background:var(--accent); border-color:var(--accent); }.dpho header.dpho-topbar button:hover{ border-color:var(--wood-500); }.dpho #banners{ padding:0 20px; margin-top:12px; }.dpho .banner{ border-radius:8px; padding:10px 14px; margin-bottom:8px; font-size:13px; line-height:1.5; }.dpho .banner.err{ background:#fef2f2; border:1px solid #fecaca; color:var(--no); }.dpho .banner.warn{ background:#fffbeb; border:1px solid #fde68a; color:var(--warn); }.dpho .banner b{ display:block; margin-bottom:2px; }.dpho .banner ul{ margin:4px 0 0; padding-left:18px; }.dpho main.layout{
    display:grid; grid-template-columns: 340px minmax(0,1fr) 380px;
    gap:16px; padding:16px 20px 40px; align-items:start;
  }
  @media (max-width: 1150px){.dpho main.layout{ grid-template-columns: 1fr; }
  }.dpho aside.col-left,.dpho aside.col-right{ min-width:0; }.dpho section.col-center{ min-width:0; }.dpho .opening-row,.dpho .pl-row,.dpho .splice-row,.dpho .seg-row{ display:grid; gap:6px; align-items:end; margin-bottom:6px; }.dpho .opening-row{ grid-template-columns: 1fr 1fr 1fr 1fr 1fr auto; }.dpho .pl-row{ grid-template-columns: 1fr 1fr auto; }.dpho .splice-row{ grid-template-columns: 1fr 1fr auto; }.dpho .seg-row{ grid-template-columns: 1fr 1fr auto; }.dpho .opening-row label,.dpho .pl-row label,.dpho .splice-row label,.dpho .seg-row label{ margin-bottom:0; }.dpho .opening-row > *,.dpho .pl-row > *,.dpho .splice-row > *,.dpho .seg-row > *{ min-width:0; }.dpho .opening-row input,.dpho .pl-row input,.dpho .splice-row input,.dpho .seg-row input{ min-width:0; }.dpho .table-head{ display:grid; gap:6px; font-size:10px; text-transform:uppercase; color:var(--muted); margin-bottom:4px; }.dpho .table-head.opening-row,.dpho .table-head.pl-row,.dpho .table-head.splice-row,.dpho .table-head.seg-row{ font-size:10px; }.dpho details.collapsible{ border:1px solid var(--line); border-radius:8px; margin-bottom:10px; }.dpho details.collapsible > summary{
    cursor:pointer; padding:8px 12px; font-weight:600; font-size:13px; list-style:none;
    display:flex; align-items:center; justify-content:space-between; color:var(--wood-700);
  }.dpho details.collapsible > summary::-webkit-details-marker{ display:none; }.dpho details.collapsible > summary:after{ content:'+'; color:var(--wood-500); font-weight:700; font-size:16px; }.dpho details.collapsible[open] > summary:after{ content:'−'; }.dpho details.collapsible > .body{ padding:0 12px 12px; }.dpho .dirtoggle{ display:flex; gap:8px; }.dpho .dirtoggle button{ flex:1; text-align:center; padding:10px 8px; line-height:1.4; }.dpho .dirtoggle button .unit{ display:block; font-size:10.5px; margin-top:2px; }.dpho .dirtoggle button.active{ background:var(--accent); border-color:var(--accent); color:#fff; }.dpho .dirtoggle button.active .unit{ color:#e0e7ff; }.dpho .support-line{ margin-bottom:14px; }.dpho .support-line:last-child{ margin-bottom:0; }.dpho .support-line .cap{ display:flex; justify-content:space-between; align-items:center; gap:8px;
    font-size:11px; color:var(--muted); margin-bottom:6px; text-transform:uppercase; letter-spacing:.03em; }.dpho .support-line .cap span{ flex:1; }.dpho .support-line .cap button{ font-size:10.5px; padding:3px 8px; }.dpho .canvas-wrap{ background:var(--panel); border:1px solid var(--line); border-radius:10px; padding:10px; margin-bottom:14px; }.dpho .canvas-wrap.stale canvas{ opacity:.35; filter:grayscale(60%); }.dpho .canvas-wrap h4{ font-size:12px; text-transform:uppercase; letter-spacing:.04em; color:var(--muted); display:flex; justify-content:space-between; align-items:center; }.dpho canvas{ display:block; width:100%; }.dpho #planCanvas{ height:420px; }.dpho #stripsCanvas{ height:560px; cursor:crosshair; }.dpho .legend{ font-size:11px; color:var(--muted); display:flex; gap:14px; align-items:center; }.dpho .legend .sw{ display:inline-block; width:12px; height:2px; background:var(--accent); vertical-align:middle; margin-right:4px; }.dpho .legend .sw.dashed{ background:none; border-top:2px dashed var(--wood-300); }.dpho .kv{ display:flex; justify-content:space-between; padding:3px 0; font-size:13px; border-bottom:1px dashed var(--line); }.dpho .kv b{ font-family:var(--mono); }.dpho .card{ border:1px solid var(--line); border-radius:8px; padding:10px 12px; margin-bottom:10px; background:#fafbff; }.dpho .card h4{ font-size:13px; margin-bottom:8px; color:var(--wood-700); }.dpho .subtable-cap{ font-size:11px; color:var(--muted); margin:8px 0 2px; font-weight:600; text-transform:uppercase; letter-spacing:.03em; }.dpho .eqcheck{ margin-top:8px; padding:6px 8px; border-radius:6px; font-size:12px; font-family:var(--mono); }.dpho .eqcheck.ok{ background:#f0fdf4; color:var(--ok); border:1px solid #bbf7d0; }.dpho .eqcheck.bad{ background:#fef2f2; color:var(--no); border:1px solid #fecaca; }.dpho .checkline{ font-family:var(--mono); font-size:11.5px; padding:5px 8px; border-radius:6px; margin-top:6px; }.dpho .checkline.ok{ background:#f0fdf4; color:var(--ok); border:1px solid #bbf7d0; }.dpho .checkline.bad{ background:#fef2f2; color:var(--no); border:1px solid #fecaca; }.dpho .conservatism-note{ font-size:11.5px; color:var(--wood-700); margin-top:8px; padding:7px 9px;
    background:#eef2ff; border-radius:6px; border:1px dashed #c7d2fe; line-height:1.5; }.dpho .baseline-v{ background:#eef2ff; border:1px solid #c7d2fe; border-radius:8px; padding:9px 11px; margin:2px 0 10px; }.dpho .baseline-v .lbl{ font-size:10.5px; text-transform:uppercase; letter-spacing:.03em; color:var(--wood-700); font-weight:700; margin-bottom:3px; }.dpho .baseline-v .val{ font-family:var(--mono); font-size:15px; color:var(--ink); }.dpho .baseline-v .note{ font-size:11px; color:var(--muted); margin-top:3px; line-height:1.4; }.dpho .sdpws-warn{ font-size:11.5px; color:var(--warn); background:#fffbeb; border:1px solid #fde68a; border-radius:6px; padding:7px 9px; margin-top:8px; line-height:1.4; }.dpho .trace-section{ background:var(--panel); border:1px solid var(--line); border-radius:10px; margin-bottom:10px; }.dpho .trace-section > summary{ padding:10px 16px; font-weight:700; cursor:pointer; list-style:none; color:var(--wood-700); }.dpho .trace-section > summary::-webkit-details-marker{ display:none; }.dpho .trace-step{ padding:8px 16px; border-top:1px solid var(--line); }.dpho .trace-step .t-title{ font-weight:600; font-size:12.5px; margin-bottom:4px; color:var(--ink); }.dpho .t-formula{ font-family:var(--mono); font-size:13px; color:var(--wood-700); margin-bottom:2px; }.dpho .t-sub{ font-family:var(--mono); font-size:13px; color:var(--muted); margin-bottom:4px; }.dpho .t-sub:before{ content:'= '; }.dpho .boxed{ display:inline-block; border:2px solid var(--ink); border-radius:3px; padding:2px 9px;
          font-family:var(--mono); font-weight:700; font-size:13px; background:#fff; }.dpho .t-note{ font-size:11.5px; color:var(--muted); margin-top:4px; line-height:1.45; font-style:italic; }.dpho .full-width{ grid-column: 1 / -1; }.dpho .dircaption{ font-size:11.5px; color:var(--muted); font-family:var(--mono); margin-top:10px; }.dpho .dir-reset-notice{ display:flex; gap:8px; align-items:flex-start; background:#fffbeb; border:1px solid #fde68a;
    color:var(--warn); border-radius:8px; padding:8px 10px; font-size:12px; margin-top:10px; line-height:1.45; }.dpho .dir-reset-notice button{ margin-left:auto; flex:none; }.dpho .supports-permanent-caption{ font-size:11px; color:var(--muted); line-height:1.5; margin:0 0 10px; }.dpho .cap-system-block,.dpho .cap-mode-block{ display:none; }.dpho .cap-system-block.show,.dpho .cap-mode-block.show{ display:block; }.dpho .cap-toggle-row{ display:flex; gap:8px; align-items:center; margin-bottom:10px; }.dpho .cap-toggle-row input[type=checkbox]{ width:auto; }.dpho .cap-toggle-row label{ margin:0; font-size:13px; color:var(--ink); cursor:pointer; }.dpho .basistoggle{ display:flex; gap:6px; }.dpho .basistoggle button{ flex:1; padding:6px 4px; font-size:12px; }.dpho .basistoggle button.active{ background:var(--accent); border-color:var(--accent); color:#fff; }.dpho .kpi-box{ border-radius:8px; padding:10px 12px; margin-bottom:10px; }.dpho .kpi-box .kpi-lbl{ font-size:10.5px; text-transform:uppercase; letter-spacing:.03em; font-weight:700; margin-bottom:3px; }.dpho .kpi-box .kpi-val{ font-family:var(--mono); font-size:20px; font-weight:700; }.dpho .kpi-box.pass{ background:#f0fdf4; border:1px solid #bbf7d0; color:var(--ok); }.dpho .kpi-box.fail{ background:#fef2f2; border:1px solid #fecaca; color:var(--no); }.dpho .kpi-box.na{ background:#f9fafb; border:1px solid var(--line); color:var(--muted); }.dpho table.dc-table td.pass{ color:var(--ok); font-weight:700; }.dpho table.dc-table td.fail{ color:var(--no); font-weight:700; }.dpho .dc-tag{ font-family:var(--mono); font-weight:700; }.dpho .dc-tag.pass{ color:var(--ok); }.dpho .dc-tag.fail{ color:var(--no); }.dpho .cap-module-missing{ font-size:12px; color:var(--warn); background:#fffbeb; border:1px solid #fde68a; border-radius:6px; padding:8px 10px; line-height:1.5; }.dpho .design-help{ font-size:12px; line-height:1.6; background:#eef2ff; border:1px dashed #c7d2fe; border-radius:6px; padding:8px 10px; margin-top:8px; }.dpho .design-help h5{ margin:0 0 4px; font-size:11px; text-transform:uppercase; letter-spacing:.03em; color:var(--wood-700); }.dpho .cap-legend{ font-size:11px; color:var(--muted); display:flex; gap:14px; align-items:center; margin-top:6px; flex-wrap:wrap; }.dpho .cap-legend .sw{ display:inline-block; width:12px; height:12px; border-radius:2px; vertical-align:middle; margin-right:4px; }.dpho .cap-legend .sw.pass{ background:rgba(79,70,229,.35); border:1px solid rgba(99,102,241,.5); }.dpho .cap-legend .sw.fail{ background:rgba(220,38,38,.35); border:1px solid rgba(220,38,38,.6); }.dpho .print-banner{ border-radius:6px; padding:8px 10px; margin:6px 0; font-size:12px; }.dpho .print-banner.err{ background:#fef2f2; border:1px solid #fecaca; color:var(--no); }.dpho .print-banner.warn{ background:#fffbeb; border:1px solid #fde68a; color:var(--warn); }.dpho .print-banner.ok{ background:#f0fdf4; border:1px solid #bbf7d0; color:var(--ok); }.dpho .print-assumptions{ font-size:12px; line-height:1.6; }.dpho .print-assumptions ul{ margin:4px 0; padding-left:20px; }.dpho .no-red{ color:var(--no); font-weight:700; }.dpho footer.app-footer{ padding:8px 20px 30px; font-size:11px; color:var(--muted); font-family:var(--mono); }.dpho #printSheet{ display:none; }

  @media print{.dpho header.dpho-topbar,.dpho #banners,.dpho aside.col-left,.dpho footer.app-footer,.dpho section.col-center,.dpho #liveResults,.dpho #mathTraceLive,.dpho .no-print{ display:none !important; }.dpho #printSheet{ display:block !important; }.dpho{ background:#fff; }.dpho main.layout{ display:block; padding:0; }.dpho details{ break-inside: avoid; }.dpho details:not([open]) > *:not(summary){ display:block !important; }.dpho details > summary{ display:block !important; }.dpho .trace-section > summary::after,.dpho details.collapsible > summary::after{ content:'' !important; }.dpho #printResults #btnApplyAutoProps{ display:none !important; }
  }

/* Site-page print additions: this stylesheet only loads on /diaphragmopenings,
 * so these are page-local. The site's own print rules already hide .topbar,
 * .footer and .topnav; hide the rest of the page shell so the calc package
 * (#printSheet) prints alone. */
@media print{
  .module-head{display:none !important;}
  main{display:block !important; padding:0 !important; margin:0 !important; max-width:none !important;}
}

/* Full-bleed breakout: the three-rail workstation layout needs the whole
 * viewport, not the site's 1080px .container column (the center canvas rail
 * collapses to ~240px otherwise). Standard 50%-50vw trick; the module-head
 * above stays in the readable column. */
.dpho{
  width:100vw;
  margin-left:calc(50% - 50vw);
  margin-right:calc(50% - 50vw);
}
