:root{--bg:#f5f5f0;--surface:#fff;--border:#e3e2dc;--text:#1a1a1a;--muted:#6b6b66;--viewer-bg:#fafaf7;--row-total-bg:#f0efe8;--tooltip-bg:#1a1a1a;--tooltip-text:#fff;--tooltip-border:#374151;--toast-bg:#1a1a1a;--toast-text:#fff;--zoom-bg:#ffffffeb;--blue:#1d4ed8;--blue-dark:#1e3a8a;--blue-light:#60a5fa;--green:#16a34a;--amber:#fbbf24;--red:#dc2626;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-theme=dark]{--bg:#0f0f10;--surface:#1a1a1c;--border:#2e2e32;--text:#e8e8e4;--muted:#8a8a85;--viewer-bg:#141416;--row-total-bg:#232327;--tooltip-bg:#0a0a0b;--tooltip-text:#f1f1ee;--tooltip-border:#3a3a40;--toast-bg:#e8e8e4;--toast-text:#1a1a1a;--zoom-bg:#1a1a1ceb;--blue:#3b82f6;--blue-dark:#1e3a8a;--blue-light:#93c5fd;--green:#22c55e;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body,#root{background:var(--bg);min-height:100%;color:var(--text);-webkit-font-smoothing:antialiased;margin:0;padding:0;font-family:system-ui,-apple-system,Segoe UI,sans-serif;transition:background-color .2s,color .2s}body{min-height:100vh}button{cursor:pointer;font-family:inherit}button:focus-visible,.marker:focus-visible,.legend-row-action:focus-visible,.legend-row-clickable:focus-visible{outline:2px solid var(--blue-light);outline-offset:2px}.app{max-width:1400px;margin:0 auto;padding:16px}.app-header{z-index:50;background:var(--bg);flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:16px;padding:12px 0 10px;display:flex;position:sticky;top:0}.title-block h1{letter-spacing:-.02em;margin:0;font-size:22px;font-weight:600}.title-block .subtitle{color:var(--muted);margin:2px 0 0;font-size:13px}.mode-controls{flex-wrap:wrap;gap:8px;display:flex}.mode-btn{background:var(--surface);border:1px solid var(--border);color:var(--text);border-radius:6px;padding:8px 14px;font-size:13px;transition:background .15s,border-color .15s}.mode-btn:hover:not(:disabled){border-color:var(--muted)}.mode-btn:disabled{opacity:.5;cursor:not-allowed}.mode-btn.active-edit{background:var(--green);color:#fff;border-color:var(--green)}.mode-btn.save{background:var(--blue);color:#fff;border-color:var(--blue)}.theme-btn{text-align:center;width:38px;padding:8px 0;font-size:16px;line-height:1}.edit-banner{background:color-mix(in srgb, var(--blue) 9%, var(--surface));border:1px solid color-mix(in srgb, var(--blue) 26%, var(--border));color:var(--text);border-radius:8px;justify-content:space-between;align-items:center;gap:12px;margin:-6px 0 12px;padding:10px 12px;font-size:13px;display:flex}.edit-banner strong{color:var(--amber);flex:none;font-size:12px;font-weight:700}:root[data-theme=light] .edit-banner strong{color:#92400e}.floor-selector{background:var(--surface);border:1px solid var(--border);border-radius:8px;gap:4px;margin-bottom:12px;padding:4px;display:flex;overflow-x:auto}.floor-tab{min-width:52px;color:var(--muted);background:0 0;border:none;border-radius:5px;flex:1;padding:10px 12px;font-size:14px;font-weight:500;transition:background .15s,color .15s}.floor-tab:hover{color:var(--text)}.floor-tab.active{background:var(--blue);color:#fff}.floor-label{color:var(--muted);margin-bottom:8px;padding-left:4px;font-size:13px}.plan-wrap{background:var(--surface);border:1px solid var(--border);border-radius:8px;position:relative;overflow:hidden}.zoom-controls{background:var(--zoom-bg);border:1px solid var(--border);z-index:10;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);border-radius:6px;align-items:center;gap:4px;padding:4px;display:flex;position:absolute;top:12px;right:12px}.zoom-controls button{width:30px;height:30px;color:var(--text);background:0 0;border:none;border-radius:4px;font-size:17px}.zoom-controls button:hover{background:var(--surface)}.zoom-level{color:var(--muted);text-align:center;min-width:38px;padding:0 6px;font-size:11px}.viewer-container{touch-action:none;-webkit-user-select:none;user-select:none;cursor:grab;background:var(--viewer-bg);width:100%;height:min(82vh,950px);position:relative;overflow:hidden}.viewer-container:active{cursor:grabbing}.viewer-stage{transform-origin:0 0;will-change:transform, width, height;position:absolute;top:0;left:0}.viewer-stage.stage-enter{animation:.3s ease-out stageEnter}@keyframes stageEnter{0%{opacity:0}to{opacity:1}}.plan-image{pointer-events:none;-webkit-user-drag:none;width:100%;height:100%;image-rendering:-webkit-optimize-contrast;image-rendering:high-quality;display:block}:root[data-theme=dark] .plan-image{filter:invert()hue-rotate(180deg)}.marker{background:var(--blue);color:#fff;cursor:pointer;z-index:5;border:2px solid #fff;border-radius:50%;justify-content:center;align-items:center;width:26px;height:26px;margin-top:-13px;margin-left:-13px;padding:0;font-family:inherit;font-size:12px;font-weight:600;transition:transform .15s,background .15s;display:flex;position:absolute;box-shadow:0 2px 6px #00000059}.marker:before{content:"";border-radius:50%;position:absolute;inset:-9px}.marker:hover{transform:scale(1.15)}.marker-edit{background:var(--green);cursor:grab}.marker-edit:active{cursor:grabbing;z-index:6;background:#15803d;transform:scale(1.35)}.marker-num{pointer-events:none;line-height:1}.marker.has-notes{border-color:#16a34a;box-shadow:0 0 0 1px #16a34a,0 2px 6px #00000059}.marker-tooltip{background:var(--tooltip-bg);color:var(--tooltip-text);white-space:normal;opacity:0;pointer-events:none;z-index:20;text-align:left;border-radius:6px;flex-direction:column;gap:2px;min-width:200px;max-width:260px;padding:8px 12px;font-size:12px;font-weight:400;line-height:1.35;transition:opacity .12s,transform .12s;display:flex;position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%)translateY(4px);box-shadow:0 4px 14px #0000004d}.marker-tooltip strong{color:var(--blue-light);font-weight:600}.marker-tooltip .tip-letter{color:var(--tooltip-text);opacity:.75;font-size:11px}.marker-tooltip .tip-notas{color:var(--amber,#fbbf24);white-space:normal;border-top:1px solid var(--tooltip-border);margin-top:2px;padding-top:4px;font-style:italic}.marker-tooltip:after{content:"";border:5px solid #0000;border-top-color:var(--tooltip-bg);position:absolute;top:100%;left:50%;transform:translate(-50%)}.marker.tip-below .marker-tooltip{top:calc(100% + 8px);bottom:auto;transform:translate(-50%)translateY(-4px)}.marker.tip-below .marker-tooltip:after{border-top-color:#0000;border-bottom-color:var(--tooltip-bg);top:auto;bottom:100%}.marker:hover .marker-tooltip,.marker.marker-active .marker-tooltip{opacity:1;transform:translate(-50%)translateY(0)}.marker.marker-active .marker-tooltip{pointer-events:auto}.tooltip-open-btn{background:var(--blue);color:#fff;cursor:pointer;-webkit-tap-highlight-color:transparent;border:none;border-radius:6px;align-self:stretch;min-height:44px;margin-top:6px;padding:6px 10px;font-family:inherit;font-size:13px;font-weight:600}.tooltip-open-btn:hover{background:var(--blue-dark)}.modal-overlay{z-index:100;background:#00000073;justify-content:center;align-items:center;padding:20px;animation:.15s ease-out fadeIn;display:flex;position:fixed;inset:0}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.modal-overlay.leaving{animation:.18s ease-in reverse forwards fadeIn}.modal.modal-leaving{animation:.2s ease-in forwards modalPopOut}@keyframes modalPopOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.96)}}.modal{background:var(--surface);border-radius:10px;width:100%;max-width:400px;padding:24px 22px 20px;position:relative;box-shadow:0 10px 30px #0003}.modal-close{color:var(--muted);background:0 0;border:none;border-radius:6px;width:32px;height:32px;font-size:24px;line-height:1;position:absolute;top:10px;right:12px}.modal-close:hover{background:var(--bg);color:var(--text)}.modal-title{color:var(--blue);margin:0 0 4px;font-size:20px}.modal-subtitle{color:var(--muted);margin-bottom:16px;font-size:13px}.modal-details{gap:6px;margin:0 0 16px;padding:0;display:grid}.modal-details>div{border-bottom:1px solid var(--border);justify-content:space-between;padding:6px 0;display:flex}.modal-details dt{color:var(--muted);margin:0;font-size:13px}.modal-details dd{margin:0;font-size:14px;font-weight:600}.modal-notes{margin-top:10px}.notes-label-row{justify-content:space-between;align-items:center;gap:10px;margin-bottom:4px;display:flex}.modal-notes label{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-size:12px;display:block}.note-status{color:var(--muted);font-size:12px}.note-status.saved{color:var(--green)}.note-status.error{color:var(--red)}.modal-notes textarea{border:1px solid var(--border);resize:vertical;background:var(--bg);border-radius:6px;width:100%;padding:10px 12px;font-family:inherit;font-size:13px}.modal-notes textarea:focus{border-color:var(--blue);outline:none}.notes-save-btn{border:1px solid var(--blue);background:var(--blue);color:#fff;border-radius:6px;width:100%;min-height:38px;margin-top:8px;font-size:13px;font-weight:600}.notes-save-btn:disabled{opacity:.5;cursor:not-allowed}.notas-view{color:var(--text);min-height:20px;margin:0;font-size:13px}.notas-view em{color:var(--muted)}.legend{margin-top:14px}.legend-toggle{background:var(--surface);border:1px solid var(--border);color:var(--text);text-align:center;border-radius:6px;width:100%;padding:9px 16px;font-size:13px}.legend-toggle:hover{border-color:var(--muted)}.legend-body{background:var(--surface);border:1px solid var(--border);border-radius:8px;margin-top:12px;padding:16px}.legend-body h3{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin:0 0 10px;font-size:14px;font-weight:600}.legend-heading{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.legend-heading span{color:var(--muted);font-size:12px}.legend-body h3:not(:first-child){margin-top:20px}.table-wrap{overflow-x:auto}.legend-table{border-collapse:collapse;width:100%;font-size:13px}.legend-table th,.legend-table td{text-align:left;border-bottom:1px solid var(--border);padding:7px 10px}.legend-table th{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-size:11px;font-weight:600}.legend-table tbody tr:hover{background:var(--bg)}.legend-row-clickable{cursor:pointer;transition:background .12s}.legend-row-clickable:hover{background:var(--bg);outline:1px solid var(--blue);outline-offset:-1px}.legend-row-clickable:active{background:var(--border)}.legend-row-action{border:1px solid var(--border);background:var(--surface);min-width:34px;min-height:34px;color:var(--blue);border-radius:6px;font-weight:700}.legend-row-action:hover{border-color:var(--blue);background:var(--bg)}.legend-note-dot{background:var(--green);vertical-align:middle;border-radius:50%;width:7px;height:7px;margin-left:8px;display:inline-block}.legend-table.totals td,.legend-table.totals th{text-align:right}.legend-table.totals td:first-child,.legend-table.totals th:first-child{text-align:left}.row-total{background:var(--row-total-bg);font-weight:700}.row-total td{border-top:2px solid var(--muted)}.muted{color:var(--muted);font-size:13px;font-style:italic}.toast{background:var(--toast-bg);color:var(--toast-text);z-index:200;border-left:4px solid var(--blue);border-radius:6px;padding:10px 18px;font-size:13px;animation:.2s ease-out slideUp;position:fixed;bottom:24px;left:50%;transform:translate(-50%);box-shadow:0 4px 12px #00000040}.toast.success{border-left-color:var(--green)}.toast.error{border-left-color:var(--red)}.toast.warn{border-left-color:var(--amber,#fbbf24)}.toast.leaving{animation:.2s ease-in forwards slideDown}@keyframes slideDown{0%{opacity:1;transform:translate(-50%)}to{opacity:0;transform:translate(-50%,10px)}}@keyframes slideUp{0%{opacity:0;transform:translate(-50%,10px)}to{opacity:1;transform:translate(-50%)}}.save-bar{background:var(--surface);border-top:1px solid var(--border);z-index:150;justify-content:space-between;align-items:center;gap:12px;padding:12px 16px;animation:.2s ease-out slideUpBar;display:flex;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -4px 14px #0000001f}@keyframes slideUpBar{0%{transform:translateY(100%)}to{transform:translateY(0)}}.save-bar-text{color:var(--text);font-size:13px}.save-bar-btn{background:var(--green);color:#fff;cursor:pointer;-webkit-tap-highlight-color:transparent;border:none;border-radius:8px;min-height:44px;padding:10px 20px;font-family:inherit;font-size:14px;font-weight:600}.save-bar-btn:hover:not(:disabled){background:#15803d}.save-bar-btn:disabled{opacity:.6;cursor:not-allowed}.loading-container{background:var(--surface);border:1px solid var(--border);border-radius:8px;flex-direction:column;justify-content:center;align-items:center;height:min(82vh,950px);display:flex}.loading-spinner{border:3px solid var(--border);border-top-color:var(--blue);border-radius:50%;width:32px;height:32px;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.loading-text{color:var(--muted);margin-top:12px;font-size:13px}.plan-skeleton{z-index:7;pointer-events:none;background:var(--surface);position:absolute;inset:0;overflow:hidden}.plan-skeleton-inner{background:linear-gradient(100deg, var(--border) 30%, #ffffff40 50%, var(--border) 70%);background-size:200% 100%;animation:1.4s ease-in-out infinite shimmer;position:absolute;inset:0}:root[data-theme=dark] .plan-skeleton-inner{background:linear-gradient(100deg, var(--border) 30%, #ffffff14 50%, var(--border) 70%);background-size:200% 100%}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.plan-error{z-index:9;background:var(--surface);text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:12px;display:flex;position:absolute;inset:0}.plan-error p{color:var(--muted);margin:0;font-size:14px}.plan-retry-btn{background:var(--blue);color:#fff;cursor:pointer;-webkit-tap-highlight-color:transparent;border:none;border-radius:8px;min-height:44px;padding:10px 20px;font-family:inherit;font-size:14px;font-weight:600}.plan-retry-btn:hover{background:var(--blue-dark)}.empty-overlay{z-index:8;pointer-events:none;background:#0000000a;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}:root[data-theme=dark] .empty-overlay{background:#ffffff0a}.empty-overlay p{background:var(--surface);border:1px solid var(--border);color:var(--muted);border-radius:8px;padding:12px 20px;font-size:14px;font-style:italic}.modal-drag-bar{justify-content:center;padding:6px 0 8px;display:none}.modal-drag-bar span{background:var(--border);border-radius:2px;width:36px;height:4px}@keyframes sheetUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}.modal:focus{outline:none}@media (width<=720px){.app{padding:10px}.app-header{align-items:center;gap:8px;margin-bottom:8px;padding:8px 0 6px}.title-block h1{font-size:16px}.title-block .subtitle{display:none}.mode-controls{flex:100%;grid-template-columns:42px minmax(0,1fr) minmax(82px,auto);gap:6px;display:grid}.mode-btn{white-space:nowrap;min-height:42px;padding:8px 10px;font-size:12px}.theme-btn{width:44px;padding:8px 0;font-size:15px}.edit-banner{z-index:45;flex-direction:column;align-items:flex-start;gap:4px;margin:0 0 8px;padding:9px 10px;font-size:12px;position:sticky;top:84px}.edit-banner strong{font-size:12px}.floor-selector{margin-bottom:8px}.floor-tab{min-width:44px;padding:9px 8px;font-size:13px}.floor-label{margin-bottom:4px}.viewer-container{height:min(48vh,420px)}.marker{width:26px;height:26px;margin-top:-13px;margin-left:-13px;font-size:11px}.marker:before{inset:-10px}.zoom-controls{inset:auto auto 12px 12px}.zoom-controls button{width:44px;height:44px;font-size:20px}.zoom-level{display:none}.modal-overlay{align-items:flex-end;padding:0}.modal{border-radius:16px 16px 0 0;max-width:100%;max-height:70vh;padding:12px 16px 20px;animation:.25s ease-out sheetUp;overflow-y:auto}.modal.modal-leaving{animation:.22s ease-in forwards sheetDown}@keyframes sheetDown{0%{transform:translateY(0)}to{transform:translateY(100%)}}.modal-drag-bar{display:block}.modal-title{font-size:18px}.modal-close{width:44px;height:44px;font-size:26px;top:10px;right:8px}.modal-notes textarea{min-height:96px;font-size:16px}.notes-save-btn{min-height:44px}.legend{margin-top:10px}.legend-toggle{min-height:46px;font-size:14px;font-weight:600}.legend-body{margin-top:10px;padding:12px}.legend-heading h3{margin-bottom:6px}.legend-table{min-width:0;font-size:12px}.legend-table th,.legend-table td{padding:7px 6px}.legend-table th:nth-child(4),.legend-table td:nth-child(4){display:none}.legend-table th{font-size:10px}.legend-row-action{min-width:42px;min-height:42px}.legend-row-clickable{cursor:default}.legend-row-clickable:hover{outline:none}.legend-table.totals{min-width:420px}}
