:root{color-scheme:dark;--bg-1: #030712;--bg-2: #081527;--panel: #0b1d32;--panel-border: #1f3657;--text: #e8f1ff;--muted: #a3bddb;--accent: #4cc9f0;--accent-2: #f5a623;--danger: #ff7b7b;--dock-width: 312px;--dock-gutter: 8px;--dock-space-mobile: 245px}*{box-sizing:border-box}body{margin:0;font-family:Avenir Next,Segoe UI,sans-serif;background:radial-gradient(circle at 15% 20%,rgba(76,201,240,.12),transparent 35%),radial-gradient(circle at 85% 10%,rgba(245,166,35,.12),transparent 35%),linear-gradient(180deg,var(--bg-2),var(--bg-1));color:var(--text);min-height:100vh}#root{min-height:100vh}.app-shell{max-width:1180px;margin:0 auto;padding:1.25rem;display:grid;gap:1rem}.app-shell.map-first{max-width:none;margin:0;padding:0;height:100vh;overflow:hidden}.app-shell.with-result{min-height:100vh}.hero,.form-panel,.result-layout{width:min(1180px,calc(100% - 2.5rem));margin:0 auto}.map-viewport{height:100vh;margin-left:calc(var(--dock-width) + var(--dock-gutter));width:calc(100vw - var(--dock-width) - var(--dock-gutter));position:relative}.hero h1{margin:0 0 .3rem;font-family:Gill Sans,Trebuchet MS,sans-serif;letter-spacing:.04em}.hero p{margin:0;color:var(--muted)}.panel{background:linear-gradient(160deg,#0b1d32f2,#0a1423f2);border:1px solid var(--panel-border);border-radius:14px;padding:1rem}h2{margin-top:0}form{display:grid;gap:.8rem;grid-template-columns:repeat(2,minmax(180px,1fr))}label{display:grid;gap:.35rem;color:var(--muted);font-size:.92rem}input,select,button{font:inherit}input,select{width:100%;background:#08111f;color:var(--text);border:1px solid #244264;border-radius:8px;padding:.5rem .6rem}button{background:linear-gradient(135deg,#1795ce,#36b6dc);color:#fff;border:0;border-radius:8px;padding:.62rem .9rem;cursor:pointer;align-self:end;height:fit-content}.button-dock button{align-self:auto}.inline-controls{display:flex;gap:.7rem;align-items:end}.inline-controls label{flex:1}.error,.warning{color:var(--danger);margin:.5rem 0 0}.summary-panel dl{margin:0;display:grid;grid-template-columns:max-content 1fr;gap:.45rem .75rem}.summary-panel dt{color:var(--muted)}.canvas-panel canvas{width:100%;max-width:100%;height:auto;border-radius:10px;border:1px solid rgba(255,255,255,.08)}.canvas-panel.fullscreen{min-height:0;height:100%;border:0;border-radius:0;padding:0;background:transparent;overflow:hidden;position:relative}.canvas-panel.fullscreen canvas{width:100%;max-width:none;height:100%;border:0;border-radius:0;display:block}.canvas-caption{margin-bottom:0;color:var(--muted);font-size:.9rem}.canvas-empty{margin:.75rem 0 0;color:var(--muted);font-size:.9rem}.canvas-empty.fullscreen{margin:0;position:absolute;top:1rem;left:1rem;padding:.4rem .65rem;border-radius:999px;border:1px solid rgba(255,255,255,.16);background:#020817c2;color:#d7e6fa;font-size:.82rem}.map-corner-label{position:fixed;top:8px;right:8px;width:min(260px,calc(100vw - var(--dock-width) - var(--dock-gutter) * 3));display:grid;gap:.3rem;z-index:24;background:#030c18c7;border:1px solid rgba(166,199,233,.32);border-radius:12px;padding:.45rem .55rem;-webkit-backdrop-filter:blur(7px);backdrop-filter:blur(7px)}.map-corner-label p{margin:0;display:grid;gap:.12rem}.map-corner-label span{color:var(--muted);font-size:.67rem;line-height:1.2;text-transform:uppercase;letter-spacing:.04em}.map-corner-label strong{font-size:.82rem;font-weight:600;color:#eef6ff;line-height:1.22}.button-dock{position:fixed;left:var(--dock-gutter);top:var(--dock-gutter);bottom:calc(var(--dock-gutter) + env(safe-area-inset-bottom));transform:none;width:var(--dock-width);display:grid;grid-template-columns:1fr;gap:.75rem;z-index:25;padding:.75rem;-webkit-backdrop-filter:blur(9px);backdrop-filter:blur(9px);align-content:center;overflow:auto}.button-dock .error{grid-column:1 / -1;margin:0}.button-dock-actions{display:grid;grid-template-columns:1fr;gap:.95rem;align-items:stretch;width:100%;max-width:250px;justify-self:center}.dock-link{display:inline-flex;align-items:center;justify-content:center;border-radius:8px;border:1px solid #2f4f74;padding:.62rem .9rem;color:var(--text);text-decoration:none;background:#09192bd9;cursor:pointer}.button-download{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;background:linear-gradient(135deg,#0f9f78,#2ecf9d);border:1px solid #138d6b;color:#f4fffc}.button-download svg{width:1rem;height:1rem;fill:none;stroke:currentColor;stroke-width:2.1;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}.button-download:disabled{background:linear-gradient(135deg,#4f6972,#5f7d86);border-color:#4f6972;color:#f4fffcc7}.result-layout{display:flex;flex-direction:column;gap:1rem;min-height:0}.specification-stack{display:grid;gap:1rem}.details-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:35;background:#02070e99;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:grid;place-items:center;padding:1rem}.details-modal{width:min(880px,calc(100vw - 2rem));max-height:min(90vh,860px);overflow:auto;display:grid;gap:.9rem}.explanation-modal{width:min(720px,calc(100vw - 2rem))}.details-modal-header{display:flex;align-items:center;justify-content:space-between;gap:1rem}.details-modal-header h2{margin:0}.details-modal-actions{grid-column:1 / -1;display:flex;justify-content:flex-end;gap:.7rem}@media(max-width:860px){form{grid-template-columns:1fr}.inline-controls{flex-direction:column;align-items:stretch}.hero,.form-panel,.result-layout{width:calc(100% - 1rem)}.app-shell.map-first{padding:0}.button-dock{left:50%;top:auto;bottom:calc(.75rem + env(safe-area-inset-bottom));transform:translate(-50%);width:calc(100% - 1rem);max-height:none;overflow:visible}.button-dock-actions{grid-template-columns:1fr;max-width:none}.dock-link,.button-dock-actions button{width:100%;text-align:center}.details-modal-actions{flex-direction:column}.details-modal-actions .dock-link,.details-modal-actions button{width:100%}.map-viewport{margin-left:0;width:100vw;height:calc(100vh - var(--dock-space-mobile))}.map-corner-label{right:.5rem;top:.5rem;width:min(320px,calc(100vw - 1rem))}}
