/* planex2d.org/contour-checker: the tool in the sheet, beyond the shared style */
.tool{scroll-margin-top:calc(var(--header-h) + 12px)}
.p2d .sheet{background:var(--sheet)}
.p2d .tool-body{background:none;height:640px}
.p2d .app-bar{gap:12px;min-width:0;flex-wrap:wrap}
.p2d .tool-status{flex:1 1 220px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-transform:none;letter-spacing:.04em}
.tool-actions{display:flex;align-items:center;flex-wrap:wrap;gap:4px;margin-left:auto}
.tool-actions .save-label{margin-right:4px;color:var(--ink-label)}
.tool-actions .bar-gap{width:10px}
.p2d .btn:disabled{opacity:.45;cursor:default}
.p2d .btn.is-busy{opacity:1;color:var(--accent-ink)}
.check-stage{display:grid;grid-template-columns:330px minmax(0,1fr);min-height:0}
.check-panel{display:flex;flex-direction:column;gap:18px;min-height:0;margin:0;padding:16px;overflow-x:hidden;overflow-y:auto;border-right:1px solid var(--hair)}
.check-panel section{display:grid;gap:9px}
.check-panel h3{font:500 11.5px/1.2 var(--font-mono);letter-spacing:.09em;text-transform:uppercase;color:var(--ink-label);margin:0 0 2px}
.check-hint{margin-top:-4px;font-size:12.5px;color:var(--ink-muted)}
.problem-row{display:grid;grid-template-columns:auto 12px minmax(0,1fr) auto;align-items:center;gap:8px;font-size:13.5px;cursor:pointer}
.problem-row input,.check-panel .check input{width:15px;height:15px;margin:0;accent-color:var(--accent)}
.problem-mark{width:11px;height:11px;border:2px solid;border-radius:50%}
.problem-open_ends{border-color:#d6336c}
.problem-gaps{border-color:#e8590c;border-radius:0;transform:rotate(45deg) scale(.85)}
.problem-crossings{border-color:#7048e8;border-radius:0;border-width:0 0 2px 2px;transform:rotate(-45deg)}
.problem-overlaps{border-color:#1c7ed6;border-radius:1px}
.problem-tiny{width:0;height:0;border:6px solid transparent;border-bottom:10px solid #2b8a3e;border-top:0;border-radius:0}
.problem-count{font:500 12.5px/1 var(--font-mono);color:var(--ink)}
.slider{display:grid;gap:2px}
.slider-head,.check-line{position:relative;display:flex;align-items:center;gap:6px;font-size:13px;color:var(--ink-label)}
.check-line{color:var(--ink);font-size:13.5px}
.check-pair{display:flex;flex-wrap:wrap;gap:6px 22px}
.p2d .panel-rule{width:100%;height:0;margin:0;border:0;border-top:1px solid var(--hair)}
.check-panel .check{display:flex;align-items:center;gap:9px;cursor:pointer}
.slider-row{display:grid;grid-template-columns:minmax(0,1fr) 64px auto;align-items:center;gap:8px}
.p2d .slider-value{width:100%;min-width:0;height:24px;padding:0 6px;border:1px solid var(--hair-strong);border-radius:3px;background:var(--sheet);color:var(--ink);font:400 12px/1 var(--font-mono);text-align:right}
.p2d .slider-value:focus{outline:none;border-color:var(--accent)}
.slider-unit{min-width:22px;font:400 11.5px/1 var(--font-mono);color:var(--ink-muted)}
/* a thin track and a small thumb, the accent only where the visitor is */
.slider input[type=range]{-webkit-appearance:none;appearance:none;width:100%;height:14px;margin:0;background:none;cursor:pointer}
.slider input[type=range]::-webkit-slider-runnable-track{height:2px;border-radius:1px;background:var(--hair-strong)}
.slider input[type=range]::-moz-range-track{height:2px;border-radius:1px;background:var(--hair-strong)}
.slider input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:10px;height:10px;margin-top:-4px;border-radius:50%;border:1.5px solid var(--ink-label);background:var(--sheet)}
.slider input[type=range]::-moz-range-thumb{width:8px;height:8px;border-radius:50%;border:1.5px solid var(--ink-label);background:var(--sheet)}
.slider input[type=range]:hover::-webkit-slider-thumb,.slider input[type=range]:focus-visible::-webkit-slider-thumb{border-color:var(--accent)}
.slider input[type=range]:hover::-moz-range-thumb,.slider input[type=range]:focus-visible::-moz-range-thumb{border-color:var(--accent)}
.slider input[type=range]:focus{outline:none}
/* (i) with its explanation on hover or focus (a tap focuses it on a phone), under its row and as wide as the row, so
   that it never reaches out of the panel */
.info{display:inline-grid;place-items:center;flex:none;width:14px;height:14px;border:1px solid var(--hair-strong);border-radius:50%;font:italic 600 9.5px/1 var(--font-display);color:var(--ink-muted);cursor:help}
.info:hover,.info:focus{border-color:var(--accent);color:var(--accent-ink);outline:none}
.info .tip{position:absolute;left:0;right:0;top:calc(100% + 6px);z-index:10;display:none;padding:8px 10px;border:1px solid var(--hair);border-radius:4px;background:var(--sheet);box-shadow:var(--lift-2,0 6px 20px rgb(0 0 0 / .15));font:400 12.5px/1.45 var(--font-sans);font-style:normal;color:var(--ink);text-align:left}
.info:hover .tip,.info:focus .tip{display:block}
.fit-options{display:grid;gap:9px;margin:-2px 0 4px 24px;padding-left:10px;border-left:1px solid var(--hair)}
.fit-options[hidden]{display:none}
.layers{width:100%;border-collapse:collapse;font:400 12px/1.4 var(--font-mono)}
.layers th{text-align:left;font-weight:500;color:var(--ink-label);border-bottom:1px solid var(--hair);padding:3px 4px 3px 0}
.layers td{padding:3px 4px 3px 0;border-bottom:1px solid var(--hair);overflow-wrap:anywhere}
.layers th:not(:first-child),.layers td:not(:first-child){text-align:right}
.check-totals{font-size:12.5px;color:var(--ink-muted)}
.check-problem{font-size:13px;color:var(--accent-ink)}
.check-problem[hidden]{display:none}
.check-view{position:relative;min-height:0}
.tool-frame{position:absolute;inset:0;width:100%;height:100%;border:0;background:transparent;visibility:hidden}
.tool-frame.is-visible{visibility:visible}
.check-empty{position:absolute;inset:0;display:grid;place-items:center;align-content:center;gap:14px;padding:24px;text-align:center;color:var(--ink-muted);font-size:14.5px}
.check-empty[hidden],.drop-overlay[hidden]{display:none}
.check-empty:not(.is-waiting) .loading-mark{display:none}
.drop-overlay{position:absolute;inset:0;z-index:5;display:grid;place-items:center;border:1.5px dashed var(--accent);background:color-mix(in srgb,var(--accent-wash) 88%,transparent);font:450 26px/1.1 var(--font-display);color:var(--ink)}
.sheet-area{position:relative}
.sheet-area:fullscreen{background:var(--sheet)}
.sheet-area:fullscreen .tool-body{height:100vh}
.example-figure .geo{fill:none}
.example-figure .node circle{fill:var(--sheet-2);stroke:var(--accent);stroke-width:1.3}
.p2d .example-actions a{text-decoration:none}
@container (max-width:860px){
  .p2d .tool-body{height:auto}
  .check-stage{grid-template-columns:1fr}
  .check-panel{border-right:0;border-bottom:1px solid var(--hair);overflow:visible}
  .check-view{height:440px}
  .p2d .tool-status{flex-basis:100%}
  .tool-actions{margin-left:0}
}
