:root{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#183126;background:#f9faf7;font-size:14px;--navy:#153b28;--teal:#126b3b;--line:#dfe7dd}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button,a,input,select{touch-action:manipulation}button{cursor:pointer;border:1px solid #d2dfd2;border-radius:7px;background:white;color:#284b35;padding:8px 11px;transition:background .15s}button:hover{background:#edf5eb}button:disabled{opacity:.4;cursor:default}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #e8a631;outline-offset:2px}button.primary{background:var(--teal);border-color:var(--teal);color:white}button.danger{color:#ac3c3c}a{color:var(--teal)}input,select{border:1px solid #d2dfd2;border-radius:6px;padding:8px;min-width:0;color:var(--navy);background:white}input[type=number]{width:100%}[hidden]{display:none!important}.topbar{min-height:78px;padding:14px 26px;background:var(--navy);color:white;display:flex;align-items:center;gap:40px}.brand{display:flex;align-items:center;gap:10px;color:white;text-decoration:none;font-size:25px;font-weight:750;letter-spacing:-1px}.brand small{display:block;font-size:10px;letter-spacing:1.8px;text-transform:uppercase;color:#71836f;margin-top:2px}.brandmark{width:43px;height:43px;border:2px solid #5dd8c1;border-radius:13px;display:grid;place-items:center;font-size:29px;color:#5dd8c1;position:relative}.brandmark span{font-size:21px;position:absolute;right:-6px;top:-12px;background:var(--navy);padding:0 2px}.tagline{font-size:13px;color:#71836f}.topbar nav{margin-left:auto;display:flex;align-items:center;gap:10px}.topbar nav a{color:#d3e6cd;text-decoration:none;font-size:12px;margin-right:10px}.topbar button{background:transparent;border-color:#537159;color:white}.documentbar{display:flex;align-items:center;justify-content:space-between;padding:20px 26px 12px;gap:20px}.eyebrow{display:block;font-size:9px;font-weight:800;letter-spacing:2px;color:#71816f;margin-bottom:4px}#title{font-size:24px;letter-spacing:-.6px;font-weight:650;border:none;background:transparent;padding:0;width:min(550px,45vw)}.doc-actions{display:flex;gap:7px}#status{margin:0 26px 15px;font-size:12px;color:#58705e;min-height:18px}#status.error{color:#ae3535}main{display:grid;grid-template-columns:196px minmax(300px,1fr) 255px;gap:14px;margin:0 20px;align-items:start}.panel{background:white;border:1px solid var(--line);border-radius:12px;padding:16px}h2{font-size:12px;font-weight:750;margin:0 0 12px;letter-spacing:.2px}.muted{font-size:11px;line-height:1.6;color:#667c69;margin:0 0 13px}#catalogue{display:grid;grid-template-columns:1fr 1fr;gap:7px}.equipment{padding:8px 3px;min-height:65px;font-size:10px;display:flex;align-items:center;flex-direction:column;gap:3px}.equipment svg{width:53px;height:28px;overflow:visible}.panel section+section{border-top:1px solid var(--line);margin-top:18px;padding-top:18px}.fields{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:12px 0}.fields label{font-size:10px;color:#5f7663}.fields input{margin-top:4px;font-size:12px;padding:7px}.ring-controls .fields label{display:block}.file-tools>button{width:100%;margin-bottom:7px;font-size:10px}.export-row{display:flex;gap:5px;margin-top:8px}.export-row button{flex:1;font-size:10px;padding:7px 5px}.canvas-panel{min-width:0;border:1px solid var(--line);border-radius:12px;background:white;overflow:hidden}.canvas-tools{display:flex;justify-content:space-between;gap:10px;padding:12px;border-bottom:1px solid var(--line);flex-wrap:wrap}.canvas-tools button{font-size:11px;padding:7px 9px}.segmented{display:flex;gap:0}.segmented button{border-radius:0}.segmented button:first-child{border-radius:6px 0 0 6px}.segmented button:last-child{border-radius:0 6px 6px 0}.segmented button.active{background:#e3f1dd;color:#165a2e;border-color:#b4d5a7}.canvas-scroll{width:100%;height:min(65vh,720px);min-height:400px;overflow:auto;background:#edf1e9;display:flex;align-items:flex-start;padding:18px}#scene{display:block;width:100%;flex-shrink:0;background:#fffdf8;box-shadow:0 3px 15px #153b2817;touch-action:none;user-select:none}.obstacle{cursor:grab}.obstacle.selected .selection{stroke:#00998d;stroke-width:.12;stroke-dasharray:.25 .15;fill:#16b3a90c}.obstacle .selection{fill:transparent;stroke:transparent}.route-mode .obstacle{cursor:crosshair}.canvas-footer{display:flex;justify-content:space-between;padding:10px 14px;font-size:10px;color:#6e806d;gap:10px}.estimate{background:#edf6e7;padding:12px 15px;color:#285b32;font-size:11px;line-height:1.6}.estimate strong{font-size:18px;margin-right:7px}.empty{padding:18px 7px;background:#f4f7f0;border-radius:7px;font-size:12px;line-height:1.7;color:#70826c}.full{width:100%;font-size:11px;margin-top:10px}#selected-type{font-size:12px}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:10px}.section-heading button{padding:3px 8px}.section-heading h2{margin-bottom:0}.sequence-section select{width:100%;margin-top:12px;font-size:12px}.sequence-section .muted{margin-top:12px}#steps{padding:0;margin:0;list-style:none;max-height:360px;overflow:auto}#steps li{display:flex;align-items:center;gap:4px;border-bottom:1px solid #edf1e9;padding:7px 0;font-size:10px}#steps .number{background:var(--navy);color:white;border-radius:50%;min-width:23px;height:23px;display:grid;place-items:center;font-weight:700}#steps .step-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#steps button{border:0;background:#f0f5ec;padding:4px;min-width:23px;font-size:12px}.app-footer{display:flex;justify-content:space-between;gap:20px;padding:18px 25px;font-size:10px;color:#71816c;line-height:1.7}.app-footer span:first-child{white-space:nowrap}#publication-tools a{font-size:11px;word-break:break-all}#publication-tools button{margin-top:10px;width:100%;font-size:11px}dialog{border:1px solid var(--line);border-radius:12px;width:min(550px,90vw);padding:22px;color:var(--navy)}dialog::backdrop{background:#153b2899}#cloud-list{margin-top:20px;display:grid;gap:8px}#cloud-list button{text-align:left}body.readonly .catalogue,body.readonly .inspector,body.readonly .doc-actions,body.readonly .segmented,body.readonly #undo,body.readonly #redo{display:none}body.readonly main{grid-template-columns:1fr;max-width:1200px;margin:auto}body.readonly #title{pointer-events:none}body.readonly .obstacle{cursor:default}@media(min-width:1600px){main{grid-template-columns:210px minmax(300px,1fr) 280px;max-width:1800px;margin:auto}.canvas-scroll{height:70vh}}@media(max-width:1100px){main{grid-template-columns:160px minmax(280px,1fr) 220px;gap:8px;margin:0 10px}.panel{padding:11px}.tagline{display:none}.topbar{padding:13px 20px}.canvas-tools{padding:9px;gap:5px}.canvas-tools button{padding:7px}.documentbar{padding:16px 20px 12px}}@media(max-width:800px){main{grid-template-columns:1fr 220px}.catalogue{grid-column:1/-1}#catalogue{grid-template-columns:repeat(10,minmax(65px,1fr));overflow:auto}.equipment{min-height:62px}.catalogue>h2,.catalogue>.muted{display:none}.catalogue .ring-controls,.catalogue .file-tools{display:inline-block;width:48%;vertical-align:top;border-top:0;margin:10px 0 0;padding:5px}.file-tools h2,.ring-controls h2{margin-bottom:4px}.ring-controls .fields{margin:0;max-width:200px}.canvas-scroll{min-height:380px;height:55vh;padding:10px}.topbar nav a{display:none}.documentbar{align-items:flex-start}.doc-actions{flex-wrap:wrap;justify-content:flex-end;max-width:250px}.doc-actions button{font-size:11px}.canvas-footer{flex-wrap:wrap}.app-footer{padding:14px}.catalogue .file-tools>button{display:inline-block;width:auto;margin-right:5px}.catalogue .file-tools .export-row{display:inline-flex}.canvas-tools>div:last-child{display:flex;gap:3px}}@media(max-width:540px){main{grid-template-columns:1fr}.inspector{display:grid;grid-template-columns:1fr 1fr;gap:13px}.panel.inspector section+section{border-top:0;border-left:1px solid var(--line);margin:0;padding:0 0 0 12px}.brand{font-size:21px}.topbar{gap:10px;padding:12px}.topbar nav{gap:5px}.topbar nav button{font-size:11px;padding:7px}.documentbar{padding:15px 12px 10px;gap:8px}#title{font-size:21px;width:44vw}.doc-actions{max-width:190px}#status{margin:0 12px 12px}.canvas-scroll{height:52vh}.app-footer{display:block}.app-footer span{display:block}.catalogue .file-tools{width:56%}.catalogue .ring-controls{width:42%}}
@media print{body{background:white}.topbar,.documentbar,.catalogue,.inspector,.canvas-tools,.canvas-footer,#status,.app-footer{display:none!important}main,body.readonly main{display:block;margin:0;max-width:none}.canvas-panel{border:0}.canvas-scroll{height:auto!important;min-height:0;padding:0;overflow:visible;display:block;background:white}#scene{width:100%!important;box-shadow:none;max-height:85vh}.estimate{background:white;padding:10px 0}.selection{display:none}.print-title{display:block!important} @page{size:landscape;margin:12mm}}

.publication-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 0;border-bottom:1px solid var(--line)}.publication-row a{font-size:12px}.publication-row button{font-size:10px}.canvas-tools select{max-width:180px;font-size:11px;padding:6px}

.coordinate-note{margin:6px 0 0;font-size:9px}
/* Grid children must shrink to the viewport; equipment scrolls in its own rail. */
main>.panel{min-width:0}
@media(max-width:800px){#catalogue{max-width:100%;overscroll-behavior-x:contain}.catalogue .file-tools,.catalogue .ring-controls{min-width:0}.file-tools .export-row{flex-wrap:wrap}}
@media(max-width:540px){main{grid-template-columns:minmax(0,1fr)}.inspector{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.inspector>section{min-width:0}.doc-actions button{max-width:100%}.catalogue .file-tools>button{max-width:100%;white-space:normal}.canvas-tools>div{min-width:0}.canvas-tools .segmented{flex-wrap:wrap}}

/* Training sessions share one physical setup; comparison is view state only. */
.training-panel{margin:18px 20px 0;padding:22px;min-width:0}.training-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:20px}.training-heading h2{font-size:21px;letter-spacing:-.4px;margin:5px 0 9px}.training-heading .muted{font-size:12px;max-width:700px}.training-heading>button{flex-shrink:0;background:#126b3b;color:white;border-color:#126b3b}.training-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:12px;font-weight:650;margin:8px 0 12px}.training-toolbar button{font-size:11px}.training-notice{background:#fff3d9;border:1px solid #efd79e;border-radius:7px;padding:12px;font-size:12px}.training-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:11px;margin-bottom:10px}.training-card{padding:14px;background:#f7faf3;border:1px solid var(--line);border-radius:9px;min-width:0}.training-card.is-active{background:#edf6e7;border-color:#abcfa2}.training-card.is-compared{border-left:5px solid var(--sequence-color)}.training-card h3{font-size:14px;margin:0 0 9px;overflow-wrap:anywhere}.training-card.is-compared h3{color:var(--sequence-color)}.training-stats{font-size:11px;line-height:1.7;color:#58705e;margin:0 0 12px}.training-card-actions{display:flex;align-items:center;justify-content:space-between;gap:10px}.training-card-actions button{font-size:10px;padding:6px 8px}.training-card-actions label{display:flex;align-items:center;gap:5px;font-size:11px;cursor:pointer}.training-card-actions input{accent-color:#126b3b;width:16px;height:16px;flex-shrink:0}.training-export-note{margin-bottom:22px}.training-unused{font-size:11px;color:#7a602e;text-align:right}.training-panel>.section-heading{margin-bottom:10px}.usage-scroll{max-width:100%;overflow:auto;border:1px solid var(--line);border-radius:8px;overscroll-behavior-x:contain}#equipment-usage{border-collapse:collapse;font-size:11px;text-align:left;width:100%;white-space:nowrap}#equipment-usage caption{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}#equipment-usage th,#equipment-usage td{padding:10px 12px;border-bottom:1px solid var(--line);border-right:1px solid var(--line)}#equipment-usage th{background:#f2f6ed;font-weight:650;max-width:220px;white-space:normal;overflow-wrap:anywhere;min-width:130px}#equipment-usage tbody th{min-width:160px}#equipment-usage tr:last-child>*{border-bottom:0}#equipment-usage .is-unused th{color:#806739;background:#fffbef}.comparison-view .obstacle{cursor:default}.comparison-view .selection{stroke:transparent!important;fill:transparent!important}body.readonly .training-panel{max-width:1200px;margin:18px auto 0}@media(min-width:1600px){.training-panel{max-width:1800px;margin:18px auto 0}}@media(max-width:800px){.training-panel,body.readonly .training-panel{margin:15px 10px 0;padding:16px}.training-heading h2{font-size:19px}.training-heading{flex-wrap:wrap;gap:5px}.training-heading>button{font-size:12px}.training-cards{grid-template-columns:repeat(auto-fit,minmax(210px,1fr))}}@media(max-width:540px){.training-panel{padding:14px}.training-cards{grid-template-columns:minmax(0,1fr)}.training-heading h2{font-size:19px}.training-heading>button{width:100%}.training-toolbar{align-items:flex-start}.training-toolbar>span{max-width:55%;line-height:1.6}.training-toolbar button{max-width:45%}.training-unused{max-width:45%}.training-panel .section-heading h2{font-size:12px}.usage-scroll{width:100%}}@media print{.training-panel{display:none!important}}

.comparison-legend{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px;background:#fff8e9;border-bottom:1px solid #eadfc8}.comparison-legend>div{display:flex;flex-wrap:wrap;gap:8px 15px;min-width:0}.comparison-key{font-size:11px;font-weight:700;color:var(--sequence-color);overflow-wrap:anywhere}.comparison-key:before{content:' ';display:inline-block;width:18px;border-top:3px dashed var(--sequence-color);vertical-align:middle;margin-right:5px}.comparison-legend button{font-size:10px;flex-shrink:0;max-width:40%;white-space:normal}@media print{.comparison-legend{display:none!important}}

/* Editing a dog line never captures or moves equipment. Controls are editor-only. */
.dog-path{pointer-events:none}.curve-mode .dog-path,.curve-hit{pointer-events:stroke;cursor:pointer}.curve-mode .obstacle{pointer-events:none}.curve-controls [data-curve-handle]{cursor:grab;pointer-events:all}.curve-controls [data-curve-handle]:active{cursor:grabbing}.curve-control-label{font-size:11px;font-weight:650;margin-top:13px;color:#126b3b}#curve-label{font-size:11px;line-height:1.6;display:block}.dog-path.is-selected{filter:drop-shadow(0 0 .07px #126b3b)}.curve-mode{cursor:crosshair}#curve-inspector .fields{margin-top:4px}#curve-inspector~#obstacle-inspector{border-top:0;margin-top:0;padding-top:0}
@media(max-width:540px){.canvas-tools .segmented{gap:3px}.canvas-tools .segmented button{border-radius:6px!important;flex:1 1 auto}.panel.inspector #curve-inspector{border-left:0;padding-left:0}.panel.inspector #obstacle-inspector{border-left:0;padding-left:0}}
@media print{.curve-controls,.curve-hit{display:none!important}}

/* Shared AgilityEurope brand tokens (globals.css): forest green, warm neutral, restrained cards. */
:root{--ae-primary:oklch(.35 .12 155);--ae-agility:oklch(.45 .14 150);--ae-light:oklch(.95 .02 145);--ae-background:oklch(.985 .002 120);--ae-foreground:oklch(.18 .02 160);--ae-border:oklch(.90 .01 140);--navy:var(--ae-foreground);--teal:var(--ae-primary);--line:var(--ae-border);color:var(--ae-foreground);background:var(--ae-background)}
.topbar{background:#fff;color:var(--ae-foreground);border-bottom:1px solid var(--ae-border);min-height:72px;gap:28px}.brand{color:var(--ae-foreground)}.brand small{color:var(--ae-agility)}.brandmark{background:var(--ae-primary);color:#fff;border-color:var(--ae-primary);border-radius:10px}.brandmark span{background:var(--ae-primary);border-radius:4px;color:#d6efc8}.topbar nav a{color:var(--ae-primary)}.topbar button{color:var(--ae-primary);border-color:var(--ae-border);background:white}.tagline{color:#647361}button.primary,.training-heading>button{background:var(--ae-primary);border-color:var(--ae-primary)}button.primary:hover,.training-heading>button:hover{background:var(--ae-agility)}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline-color:var(--ae-agility)}button{border-radius:8px}.panel,.canvas-panel{border-radius:10px}.segmented button.active{background:var(--ae-light);border-color:#a8c99f;color:var(--ae-primary)}.estimate{background:#eff6e9;color:#315b32}.training-card.is-active{background:#eff6e9;border-color:#abcfa2}.curve-control-label{color:var(--ae-primary)}.dog-path.is-selected{filter:none}.curve-picker{display:block;font-size:11px;color:#506c50;margin-bottom:12px}.curve-picker select{display:block;width:100%;margin-top:5px;font-size:12px;min-height:38px}.empty-guide{background:linear-gradient(135deg,#f5f9ed,#eaf3e3);padding:20px;display:flex;align-items:center;justify-content:space-between;gap:20px;border-bottom:1px solid var(--ae-border)}.empty-guide strong{font-size:17px;letter-spacing:-.3px}.empty-guide ol{font-size:12px;line-height:1.9;padding-left:19px;margin:9px 0 0;color:#526a4e}.empty-guide button{flex-shrink:0;max-width:40%;white-space:normal;font-size:12px}.help-intro{font-size:15px;line-height:1.6;margin-top:23px}.help-steps{font-size:13px;line-height:1.8;padding-left:22px}.help-steps li{padding:0 0 13px 6px}#help-dialog .muted{font-size:12px}#help-dialog h2{font-size:17px}#help-dialog{max-height:85dvh;overflow:auto}#help-dialog #close-help{font-size:11px}.topbar #help{font-size:12px}
@media(pointer:coarse){button{min-height:40px}.canvas-tools button{min-height:40px;min-width:40px}#steps button{min-width:32px;min-height:36px}.fields input,select{min-height:40px}.equipment{min-height:68px}.training-card-actions input{width:20px;height:20px}}
@media(max-width:800px){.topbar{gap:14px}.canvas-tools>div:last-child{flex-wrap:wrap}.empty-guide{padding:15px;gap:12px}.empty-guide button{max-width:38%}}
@media(max-width:540px){.topbar{flex-wrap:wrap;gap:9px}.topbar nav{gap:5px}.topbar #help{font-size:11px}.brand{font-size:20px}.brandmark{width:37px;height:37px;font-size:25px}.brand small{font-size:8px;letter-spacing:1.3px}.empty-guide{align-items:flex-start;flex-direction:column;gap:13px}.empty-guide button{max-width:100%;width:100%}.empty-guide strong{font-size:16px}.empty-guide ol{font-size:11px}.documentbar{flex-wrap:wrap}.documentbar>div:first-child{width:100%}#title{width:100%;font-size:23px}.doc-actions{max-width:none;width:100%;justify-content:flex-start}.doc-actions button{flex:1 1 auto}.canvas-tools .segmented{width:100%}.canvas-tools .segmented button{font-size:10px;padding:8px 5px}.canvas-tools>div:last-child{width:100%}.inspector{gap:10px}.fields{gap:6px}.curve-picker select{min-width:0}#status{line-height:1.6}.canvas-scroll{min-height:340px}.training-heading>button{white-space:normal}}
@media print{.empty-guide,#help-dialog{display:none!important}.estimate{background:white;color:#183126}}
@media(max-width:540px){.inspector{display:block}.panel.inspector section+section{border-left:0;border-top:1px solid var(--ae-border);padding:16px 0 0;margin:16px 0 0}.panel.inspector #obstacle-inspector{border-top:0;padding-top:0;margin-top:0}#steps button{min-width:32px;min-height:36px}.sequence-section .step-name{font-size:11px}.canvas-scroll{height:auto;min-height:0;max-height:65vh;padding:10px}.canvas-scroll #scene{max-width:none}}

.account-draft-note{margin:-3px 26px 14px;font-size:11px;line-height:1.6;color:#526d4d;max-width:900px}@media(max-width:540px){.account-draft-note{margin:0 12px 12px}}@media print{.account-draft-note{display:none!important}}

@media(pointer:coarse){.fields input,.curve-picker select,.sequence-section select{font-size:16px}}
/* Canvas-first workspace: overlays are view state, never part of saved courses. */
.canvas-panel{position:relative}.workspace-dock{display:flex;justify-content:flex-end;gap:5px;padding:6px 10px;background:#fff;border-bottom:1px solid var(--line)}.workspace-dock button{font-size:11px;min-height:36px}.workspace-dock #panel-equipment,.workspace-dock #panel-inspector,.workspace-dock #panel-tools{display:none}.panel-dismiss,.floating-tools,.workspace-feedback{display:none}.rotation-controls{display:flex;flex-wrap:wrap;gap:6px}.tunnel-shape{margin-top:12px}.tunnel-shape-controls{display:flex;gap:6px}.tunnel-shape-controls button{flex:1;font-size:11px;min-height:40px}.tunnel-shape-controls button.active{background:var(--ae-light);border-color:#a8c99f;color:var(--ae-primary);font-weight:650}.tunnel-length{display:grid;grid-template-columns:1fr auto;align-items:center;gap:5px;margin-top:10px;font-size:11px;color:#506c50}.tunnel-length input{grid-column:1/-1;width:100%;min-height:30px;accent-color:#245aab}.tunnel-length output{font-weight:700;color:#245aab}.tunnel-shape p{font-size:11px;line-height:1.45;margin:6px 0 0}.bend-handle{cursor:grab}.bend-handle:active{cursor:grabbing}.rotation-controls button{flex:1;font-size:11px;min-height:40px}.rotation-handle{cursor:grab}.rotation-handle:active{cursor:grabbing}.rotation-quick{position:absolute;z-index:4;top:110px;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:8px;background:#fffef8f5;border:1px solid #acc6a8;border-radius:14px;padding:5px;box-shadow:0 5px 20px #123a221a}.rotation-quick button{min-width:54px;min-height:42px}.rotation-quick output{font-size:13px;font-weight:700;min-width:40px;text-align:center}.show-workspace-ui{position:absolute;z-index:12;right:14px;bottom:14px;min-height:44px;background:var(--ae-primary);color:white;box-shadow:0 3px 15px #153b282a}.workspace-ui-hidden .workspace-dock,.workspace-ui-hidden .floating-tools,.workspace-ui-hidden .rotation-quick{display:none!important}
.workspace-overlay main{display:block;margin:0 10px}.workspace-overlay .canvas-panel{width:100%;overflow:hidden}.workspace-overlay .canvas-scroll{height:72dvh;min-height:300px;max-height:none;padding:65px 14px 95px;align-items:flex-start;justify-content:flex-start}.workspace-overlay #scene{width:100%;max-height:none;height:auto;margin:auto;aspect-ratio:auto;box-shadow:0 3px 15px #153b2817}.workspace-overlay .workspace-dock{position:absolute;z-index:8;inset:10px 10px auto;justify-content:flex-start;background:#fffffff5;border:1px solid var(--line);border-radius:12px;box-shadow:0 4px 16px #153b2815;padding:4px;gap:3px;width:max-content;max-width:calc(100% - 20px);flex-wrap:wrap}.workspace-overlay .workspace-dock #panel-equipment,.workspace-overlay .workspace-dock #panel-inspector,.workspace-overlay .workspace-dock #panel-tools{display:block}.workspace-overlay .workspace-dock button{min-height:44px;font-size:12px;padding:7px 10px}.workspace-overlay .workspace-dock button[aria-expanded=true]{background:var(--ae-light);border-color:#8eb783}.workspace-overlay .canvas-footer,.workspace-overlay .estimate{display:none}.workspace-overlay .empty-guide{position:absolute;z-index:3;left:14px;right:14px;top:76px;border:1px solid var(--line);border-radius:12px;padding:14px;background:#f5faeff5}.workspace-overlay .empty-guide strong{font-size:14px}.workspace-overlay .empty-guide ol{font-size:11px}.workspace-overlay .floating-tools{position:absolute;display:flex;z-index:8;left:12px;bottom:30px;gap:4px;align-items:center;background:#fffffff5;border:1px solid var(--line);border-radius:12px;box-shadow:0 4px 16px #153b2815;padding:5px;max-width:calc(100% - 24px)}.floating-tools button,.floating-tools select{min-height:44px;min-width:42px}.floating-tools select{width:180px;font-size:12px}.workspace-overlay .rotation-quick{top:auto;bottom:96px}.workspace-overlay .workspace-feedback{display:block;position:absolute;bottom:6px;left:14px;right:14px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;font-size:10px;color:#526d4d;pointer-events:none}.workspace-feedback.error{color:#ae3535;background:white}.workspace-overlay .panel.is-open{position:fixed;z-index:20;right:14px;top:76px;bottom:20px;width:330px;max-width:calc(100vw - 28px);max-height:calc(100dvh - 96px);overflow:auto;overscroll-behavior:contain;box-shadow:0 10px 45px #102d3c33;border-color:#aac6a5;display:block;padding:16px}.workspace-overlay .panel-dismiss{display:flex;justify-content:flex-end;margin-bottom:12px}.panel-dismiss button,.workspace-settings .section-heading button{min-height:44px;font-size:12px}.workspace-overlay .inspector section+section{border-left:0;border-top:1px solid var(--line);padding:16px 0 0;margin:16px 0 0}.workspace-overlay .inspector #obstacle-inspector{border:0;margin:0;padding:0}.workspace-overlay #catalogue{display:grid;grid-template-columns:1fr 1fr;overflow:visible}.workspace-overlay #catalogue button{min-height:70px}.workspace-settings .documentbar{display:block;margin:18px 0;padding:0}.workspace-settings #title{width:100%;font-size:22px}.workspace-settings .doc-actions{display:flex;flex-wrap:wrap;width:100%;max-width:none;gap:7px;margin-top:14px}.workspace-settings .doc-actions button{flex:1 1 100px;min-height:44px}.workspace-settings #status,.workspace-settings .account-draft-note{margin:12px 0;font-size:12px;line-height:1.6}.workspace-settings .canvas-tools{border:1px solid var(--line);border-radius:8px;padding:8px;gap:8px}.workspace-settings .canvas-tools>div{display:flex;flex-wrap:wrap;gap:5px;width:100%}.workspace-settings .canvas-tools button{min-height:44px;min-width:40px}.workspace-settings .segmented button{border-radius:7px!important;flex:1 1 120px}.workspace-settings nav{display:flex;flex-wrap:wrap;gap:8px;border-top:1px solid var(--line);padding-top:14px;margin-top:14px}.workspace-settings nav button,.workspace-settings nav a{min-height:44px;padding:10px;font-size:12px}.workspace-overlay .fields input,.workspace-overlay select{font-size:16px}.workspace-overlay .panel section{min-width:0}.workspace-focus{overflow:hidden}.workspace-focus .topbar,.workspace-focus .training-panel,.workspace-focus .app-footer,.workspace-focus>.preview-note{display:none!important}.workspace-focus main{position:fixed;inset:0;margin:0;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);z-index:10;background:var(--ae-background)}.workspace-focus .canvas-panel{height:100%;border:0;border-radius:0}.workspace-focus .canvas-scroll{height:100%;min-height:0}.workspace-focus .panel.is-open{top:calc(env(safe-area-inset-top) + 76px);bottom:calc(env(safe-area-inset-bottom) + 20px)}.workspace-ui-hidden .canvas-scroll{padding:10px}.workspace-ui-hidden .empty-guide{display:none!important}
@media(max-width:600px){.workspace-overlay .workspace-dock{gap:2px;inset:8px 8px auto;max-width:calc(100% - 16px)}.workspace-overlay .workspace-dock button{font-size:11px;padding:6px 7px;min-height:44px}.workspace-overlay .panel.is-open{top:auto;left:8px;right:8px;bottom:calc(env(safe-area-inset-bottom) + 8px);width:auto;max-width:none;max-height:52dvh;border-radius:18px;box-shadow:0 -6px 35px #102d3c2b;padding:14px}.workspace-overlay #catalogue{grid-template-columns:repeat(3,1fr)}.workspace-overlay .empty-guide{top:74px}.workspace-overlay .empty-guide ol{margin:4px 0}.workspace-overlay .empty-guide button{width:auto;max-width:100%}.workspace-overlay .floating-tools{bottom:32px;left:8px;gap:3px;padding:4px}.floating-tools select{width:155px;font-size:12px}.floating-tools button{min-width:39px;font-size:11px;padding:6px}.workspace-overlay .canvas-scroll{padding:70px 6px 110px}.workspace-overlay .rotation-quick{bottom:100px}.workspace-overlay .workspace-feedback{font-size:9px}.workspace-overlay .show-workspace-ui{bottom:calc(env(safe-area-inset-bottom) + 16px)}}
@media(max-height:500px) and (min-width:601px){.workspace-overlay .panel.is-open{top:65px;max-height:calc(100dvh - 75px);bottom:10px}.workspace-overlay .canvas-scroll{padding:66px 8px 85px}.workspace-overlay .rotation-quick{bottom:86px}}
@media print{body.workspace-focus{overflow:visible!important}body.workspace-focus main{position:static!important;inset:auto;padding:0;display:block!important}body.workspace-focus .canvas-panel{height:auto;border:0}body.workspace-focus .canvas-scroll,body.workspace-overlay .canvas-scroll{height:auto;min-height:0;max-height:none;padding:0;overflow:visible}body.workspace-overlay #scene{max-height:none;width:100%}.workspace-dock,.floating-tools,.rotation-quick,.rotation-handle,.panel-dismiss,.show-workspace-ui,.workspace-feedback,#workspace-settings,.workspace-overlay .panel{display:none!important}}

/* Published viewers must never expose editing drawers, including failed loads. */
body.readonly #panel-equipment,body.readonly #panel-inspector,body.readonly #equipment-panel,body.readonly #inspector-panel,body.readonly .rotation-quick,body.readonly #quick-mode,body.readonly #quick-undo,body.readonly #quick-redo{display:none!important}

.rotation-quick button{white-space:nowrap;min-width:70px}.workspace-overlay .catalogue .ring-controls,.workspace-overlay .catalogue .file-tools{display:block;width:100%;margin:16px 0 0;padding:14px 0 0;border-top:1px solid var(--line)}.workspace-overlay .catalogue>h2,.workspace-overlay .catalogue>.muted{display:block}

.viewport-tools{display:none}.workspace-overlay .viewport-tools{position:absolute;z-index:7;right:12px;top:82px;display:flex;flex-direction:column;gap:4px;background:#fffffff5;padding:4px;border:1px solid var(--line);border-radius:12px;box-shadow:0 4px 16px #153b2815}.viewport-tools button{width:44px;height:44px;font-size:18px}.viewport-tools button[aria-pressed=true]{background:var(--ae-light);border-color:#8eb783}.viewport-pan,.viewport-pan .obstacle{cursor:grab!important}.viewport-pan:active{cursor:grabbing!important}.workspace-ui-hidden .viewport-tools{display:none!important}@media print{.viewport-tools{display:none!important}}

/* Free editor; account invitation only for the private cloud library. */
.account-benefits{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:0 26px 16px;padding:12px 16px;border:1px solid var(--line);border-radius:10px;background:#eff6e9}.account-benefits p{font-size:12px;line-height:1.6;margin:0;max-width:760px}.account-benefits button{font-size:12px;white-space:nowrap;min-height:44px}.workspace-settings .account-benefits{display:block;margin:14px 0;padding:12px}.workspace-settings .account-benefits button{white-space:normal;width:100%;margin-top:10px}#account-gate{max-height:85dvh;overflow:auto}#account-gate h2{font-size:17px;line-height:1.5}#account-gate-copy{font-size:14px;line-height:1.7;margin:20px 0 12px}#account-gate .muted{font-size:12px}.gate-actions{display:grid;gap:9px;margin-top:18px}.gate-actions button{min-height:44px}.gate-error{color:#a52d2d;font-size:13px;line-height:1.6}#close-account-gate{min-height:44px}@media(max-width:600px){.account-benefits{flex-direction:column;align-items:stretch;margin:0 12px 12px}}@media print{.account-benefits,#account-gate{display:none!important}}

/* Touch audit: generous targets, reachable drawer close and no native long-press menu. */
#scene{-webkit-touch-callout:none}.move-handle{cursor:grab}.move-handle:active{cursor:grabbing}
.workspace-overlay .panel-dismiss,.workspace-overlay .workspace-settings>.section-heading{position:sticky;top:0;z-index:3;background:#fff;padding:8px 0}
@media(pointer:coarse){#steps button{min-width:44px;min-height:44px}#steps li{flex-wrap:wrap}.tunnel-length input{min-height:44px}}
@media print{.move-handle,.obstacle-hit{display:none!important}}

/* Empty canvas padding uses the same navigation gestures as the SVG. */
.canvas-scroll{touch-action:none}

.group-inspector{border:1px solid #bdd7b6;background:#f4faee}.group-inspector>strong{font-size:12px;color:#126b3b}.group-inspector .muted{margin:6px 0 10px}.group-inspector .rotation-controls{margin:8px 0}.obstacle.primary .selection{stroke:#e08a2e;stroke-dasharray:none}

/* Document presentation and measured, self-contained print preview. */
.brand-field{display:grid;gap:6px;margin:12px 0;font-size:12px}.brand-field input{width:100%;max-width:100%;min-width:0}.brand-field input[type=color]{height:40px}.brand-field input[type=file]{font-size:11px}#print-dialog{width:min(1100px,94vw);max-width:94vw;max-height:92dvh;overflow:auto}#print-dialog .section-heading{position:sticky;top:0;z-index:2;background:#fff;padding-bottom:12px}.print-settings{display:flex;flex-wrap:wrap;gap:12px;margin:14px 0}.print-settings label{display:grid;gap:6px;flex:1;min-width:130px;font-size:12px}.print-settings select{min-height:44px}#print-preview{display:block;width:100%;height:min(58dvh,650px);border:1px solid var(--line);background:#e9eee7;margin:12px 0}#print-confirm{min-height:44px}#print-error:not([hidden]){padding:12px;border:1px solid #e5b8b8;background:#fff3f3;border-radius:8px}@media print{#print-dialog,#brand-settings{display:none!important}}

/* Private library controls keep long authored folder/course names within mobile dialogs. */
#library-tools{margin-top:16px}.library-controls{display:flex;flex-wrap:wrap;gap:8px}.library-controls label{flex:1 1 100%;min-width:0}.library-controls select{width:100%}.library-controls button,.library-form button,.library-move button{min-height:44px;font-size:12px}.library-form{margin-top:14px;padding:12px;border:1px solid var(--line);border-radius:8px}.library-form label{display:grid;gap:6px}.library-form input{width:100%}.library-form .muted{margin:8px 0}.library-form button+button{margin-left:8px}#library-message{margin:12px 0 0;overflow-wrap:anywhere}.library-error{color:#a22e2e;font-size:12px;line-height:1.5}.library-course{border:1px solid var(--line);border-radius:8px;padding:10px;min-width:0}.library-course-open{width:100%;min-height:44px;overflow-wrap:anywhere}.library-move{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:7px;margin-top:8px}.library-move select{max-width:100%;min-width:0;font-size:12px}#cloud-dialog{max-height:90dvh;overflow-y:auto}

#share-created{margin:16px 0}#share-url{display:block;width:100%;margin:8px 0}#share-list .publication-row{gap:12px;flex-wrap:wrap}#share-list .publication-row span{flex:1;min-width:150px}

.visibility-actions{display:flex;gap:10px;flex-wrap:wrap}#visibility-error{white-space:pre-wrap}#visibility-dialog h3{overflow-wrap:anywhere}

.publication-feedback{max-width:1080px;margin:24px auto;padding:24px;background:#fff;border:1px solid var(--line);border-radius:14px}.publication-feedback h2{font-size:22px}.publication-feedback form{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin:18px 0}.publication-feedback textarea{display:block;width:100%;max-width:100%;font:inherit;padding:12px;border:1px solid #cadbca;border-radius:8px;resize:vertical;min-height:100px}.publication-feedback form>label,.publication-feedback form>p{width:100%;margin:0}.publication-feedback a{overflow-wrap:anywhere}.feedback-comment{padding:18px 0;border-top:1px solid var(--line)}.feedback-comment-heading{display:flex;gap:12px;flex-wrap:wrap;justify-content:space-between}.feedback-comment-heading time{font-size:12px;color:#647567}.feedback-comment-body{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.6}.feedback-comment-actions{display:flex;gap:8px;flex-wrap:wrap}.feedback-reply{border-left:3px solid var(--line);padding-left:16px}#feedback-notice{white-space:pre-wrap}#feedback-edit-form{padding:16px;border:2px solid #126b3b;border-radius:10px}@media(max-width:600px){.publication-feedback{margin:16px 10px;padding:16px}}@media print{.publication-feedback{display:none!important}}

/* Cloud and privacy are first-level actions on compact workspaces. */
.workspace-cloud-actions{display:none}.workspace-overlay .workspace-cloud-actions{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));flex:0 0 100%;gap:3px;width:100%;border-bottom:1px solid var(--line);padding-bottom:4px}.workspace-overlay .workspace-cloud-actions button{min-width:0;padding:5px;font-size:11px;overflow-wrap:anywhere;line-height:1.2}.workspace-overlay .workspace-dock:has(.workspace-cloud-actions:not([hidden])){width:calc(100% - 20px)}.workspace-overlay .empty-guide{top:var(--workspace-dock-bottom,76px)}.workspace-overlay .viewport-tools{top:var(--workspace-dock-bottom,82px)}.workspace-overlay:not(.workspace-ui-hidden) .canvas-scroll{padding-top:var(--workspace-dock-bottom,70px)}
@media print{.workspace-cloud-actions{display:none!important}}

#weave-field{display:grid;gap:6px;margin:12px 0;font-size:12px}#weave-count{width:100%;min-height:44px}

/* First-course guidance never blocks the editor or captures the pointer outside its card. */
.course-guide{position:fixed;right:24px;bottom:24px;z-index:80;width:352px;max-width:calc(100vw - 24px);max-height:calc(100dvh - 32px);overflow:auto;background:#fff;border:1px solid #c9dbbf;border-radius:18px;box-shadow:0 16px 60px #173f2529;color:#183126;padding:18px;text-align:left}
.tour-topline{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:8px}.tour-brand{font-size:12px;font-weight:750;letter-spacing:.02em;color:#42623a}.tour-brand span{color:#126b3b}.tour-dismiss{border:0!important;background:transparent!important;font-size:23px!important;width:44px;min-height:44px;padding:0!important;flex-shrink:0}
.tour-art svg{width:100%;height:82px;display:block}.tour-progress{font-size:11px;font-weight:750;text-transform:uppercase;letter-spacing:.09em;color:#507947;margin:16px 0 8px}.course-guide h2{font-size:22px;letter-spacing:-.6px;line-height:1.2;margin:0 0 10px}.tour-body{font-size:14px;line-height:1.65;color:#50604c;margin:0 0 16px}.tour-dots{display:flex;gap:5px;margin:0 0 18px}.tour-dots span{height:4px;border-radius:4px;background:#e5eddf;flex:1}.tour-dots .is-done{background:#126b3b}
.tour-try{width:100%;min-height:44px;border-color:#a9c99d;background:#f3f8ef;color:#126b3b;font-weight:650;margin-bottom:12px}.tour-actions{display:flex;justify-content:space-between;align-items:center;gap:10px}.tour-actions button{min-height:44px;white-space:normal}.tour-actions button:last-child{margin-left:auto}.tour-finish-actions{display:grid;gap:8px;border-top:1px solid #e0e9da;margin-top:14px;padding-top:14px}.tour-finish-actions button{min-height:44px;white-space:normal}.tour-target{outline:3px solid #80a94c!important;outline-offset:4px}.tour-target#scene{outline-offset:-5px}
@media(max-width:600px){.course-guide{right:12px;bottom:max(12px,env(safe-area-inset-bottom));width:calc(100vw - 24px);padding:14px;max-height:calc(100dvh - 110px)}.tour-art svg{height:60px}.course-guide h2{font-size:20px}.tour-body{font-size:13px;margin-bottom:12px;line-height:1.55}.tour-progress{margin-top:10px}.tour-dots{margin-bottom:12px}}
@media print{.course-guide,#quick-guide{display:none!important}.tour-target{outline:none!important}}

/* Compact appearance controls live in Properties, never over the plan. */
.obstacle-colors{min-width:0;margin:18px 0;padding:12px;border:1px solid var(--line);border-radius:10px;background:#f9fbf7}.obstacle-colors legend{font-size:12px;font-weight:700;padding:0 5px}.obstacle-colors .muted{margin:0 0 10px}.equipment-color-row{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:12px}.equipment-color-row input[type=color]{width:46px;height:36px;padding:3px;cursor:pointer}.equipment-palette{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:1px;margin:5px -4px 12px}.equipment-swatch{position:relative;height:30px;min-width:0;padding:0;border:0;background:transparent;border-radius:6px}.equipment-swatch::before{content:'';position:absolute;width:18px;height:18px;left:50%;top:50%;transform:translate(-50%,-50%);border-radius:50%;background:var(--swatch);box-shadow:inset 0 0 0 1px #0002}.equipment-swatch[aria-pressed=true]{outline:2px solid var(--teal);outline-offset:-2px}.equipment-swatch[aria-pressed=true]::after{content:'✓';position:absolute;inset:0;display:grid;place-items:center;color:white;font-size:12px;text-shadow:0 1px 3px #000}.equipment-swatch:hover{background:#e6efdf}.equipment-color-actions{display:grid;gap:6px}.equipment-color-actions button{font-size:11px;min-height:36px;padding:7px 5px}.equipment-color-actions button:last-child{background:transparent;color:#63715e}@media(pointer:coarse){.equipment-swatch{height:36px}.equipment-color-row input[type=color],.equipment-color-actions button{min-height:44px}.equipment-swatch::before{width:22px;height:22px}}

.coordinate-view-controls{display:flex;flex-wrap:wrap;align-items:center;gap:10px 16px;padding:10px 12px;border-bottom:1px solid var(--line);background:#f8fbf5;font-size:11px}.coordinate-view-controls>label:first-child{display:flex;align-items:center;gap:8px;font-weight:650}.coordinate-view-controls select{font-size:11px;max-width:230px}.coordinate-check{display:flex;align-items:center;gap:6px;min-height:36px}.coordinate-check input{width:17px;height:17px;accent-color:var(--teal)}.coordinate-view-controls button{font-size:11px}.coordinate-view-controls .muted{width:100%;margin:0;font-size:10px}.workspace-settings>.coordinate-view-controls{display:grid;border:1px solid var(--line);border-radius:9px;margin:12px 0;padding:12px}.workspace-settings .coordinate-view-controls>label:first-child{display:grid}.workspace-settings .coordinate-view-controls select{width:100%;max-width:none}.coordinate-readout{font-size:11px;line-height:1.6;background:#f1f6ed;border-radius:7px;padding:9px;font-variant-numeric:tabular-nums}.coordinate-table-panel{margin-top:18px;border-top:1px solid var(--line);padding-top:12px}.coordinate-table-panel summary{cursor:pointer;font-weight:650;padding:8px 0}.coordinate-table-panel .muted{margin:10px 0}.coordinate-table-panel table{font-variant-numeric:tabular-nums;min-width:450px}.coordinate-table-panel caption{text-align:left;font-weight:650;padding:9px 0}.coordinate-table-panel th,.coordinate-table-panel td{padding:8px;border-bottom:1px solid var(--line);text-align:left;font-size:11px}@media print{.coordinate-view-controls{display:none!important}}

/* Desktop rotation actions participate in layout, keeping view/export controls reachable. */
body:not(.workspace-overlay) .rotation-quick{position:static;transform:none;width:max-content;margin:8px auto}
