@import "https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@600;700&family=Source+Sans+3:wght@400;600&display=swap";:root{--bg-primary:#fafafa;--bg-secondary:#f4f5f7;--bg-card:#fff;--border:#e2e4e9;--text-primary:#1a1d23;--text-secondary:#5c6370;--text-muted:#9ea5b3;--accent:#0070f3;--accent-hover:#0057c2;--accent-subtle:#ebf4ff;--success:#18794e;--success-bg:#edfaf3;--warning:#b45309;--warning-bg:#fef3c7;--error:#c62828;--error-bg:#fee2e2;--shadow-sm:0 1px 3px #00000012;--shadow-md:0 4px 12px #00000017;--radius:8px;--radius-lg:12px;--navbar-height:48px}[data-theme=dark]{--bg-primary:#0d1018;--bg-secondary:#151b27;--bg-card:#1a2236;--border:#263047;--text-primary:#e8ecf3;--text-secondary:#8b97ae;--text-muted:#4f5d72;--accent:#4aa3ff;--accent-hover:#70b8ff;--accent-subtle:#0b1e38;--success:#34c778;--success-bg:#0a231a;--warning:#f5a623;--warning-bg:#231a08;--error:#f87171;--error-bg:#230e0e;--shadow-sm:0 1px 2px #0000004d, 0 0 0 1px #ffffff0a;--shadow-md:0 4px 16px #0006}.welcome-screen{z-index:6000;background:var(--bg-primary);justify-content:center;align-items:center;transition:opacity .7s cubic-bezier(.22,1,.36,1),transform .7s cubic-bezier(.22,1,.36,1),filter .7s;display:flex;position:fixed;inset:0}.welcome-screen--exit{opacity:0;filter:blur(10px);pointer-events:none;transform:scale(1.015)}.welcome-screen__mesh{pointer-events:none;background:radial-gradient(ellipse 80% 50% at 50% 20%, color-mix(in srgb, var(--accent) 18%, transparent), transparent 60%), radial-gradient(ellipse 55% 45% at 80% 90%, #7c3aed14, transparent), radial-gradient(ellipse 50% 40% at 10% 85%, #06b6d40f, transparent);animation:16s ease-in-out infinite welcome-mesh-shift;position:absolute;inset:0}@keyframes welcome-mesh-shift{0%,to{opacity:1;transform:scale(1)}50%{opacity:.88;transform:scale(1.04)}}.welcome-screen__content{text-align:center;flex-direction:column;align-items:center;max-width:420px;padding:32px 24px 48px;display:flex;position:relative}.welcome-screen__logo{object-fit:contain;opacity:0;width:auto;max-width:min(280px,85vw);max-height:96px;margin-bottom:28px;animation:1.05s cubic-bezier(.22,1,.36,1) forwards welcome-logo-pop}.welcome-screen__sub{letter-spacing:.01em;color:var(--text-secondary);opacity:0;max-width:28em;margin:0;font-family:"Source Sans 3",sans-serif;font-size:15px;font-weight:500;line-height:1.5;animation:.85s cubic-bezier(.22,1,.36,1) .28s forwards welcome-sub-fade}.welcome-screen__progress{background:var(--border);border-radius:2px;width:min(200px,55vw);height:3px;margin-top:28px;position:absolute;bottom:0;left:50%;overflow:hidden;transform:translate(-50%)}.welcome-screen__progress:after{content:"";transform-origin:0;background:linear-gradient(90deg, var(--accent), color-mix(in srgb, var(--accent) 70%, #7c3aed));width:100%;height:100%;animation:welcome-progress-fill var(--welcome-intro-ms,3.2s) linear forwards;display:block}@keyframes welcome-logo-pop{0%{opacity:0;filter:blur(6px);transform:scale(.86)}to{opacity:1;filter:blur();transform:scale(1)}}@keyframes welcome-sub-fade{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes welcome-progress-fill{0%{transform:scaleX(0)}to{transform:scaleX(1)}}.welcome-screen__skip{letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;z-index:2;background:0 0;padding:8px 14px;font-family:"Source Sans 3",sans-serif;font-size:12px;font-weight:600;transition:color .15s,border-color .15s,background .15s;position:absolute;bottom:24px;right:24px}.welcome-screen__skip:hover{color:var(--text-primary);border-color:color-mix(in srgb, var(--accent) 45%, var(--border));background:var(--bg-secondary)}@media (prefers-reduced-motion:reduce){.welcome-screen__mesh{animation:none}.welcome-screen__logo,.welcome-screen__sub{opacity:1!important;filter:none!important;animation:none!important;transform:none!important}.welcome-screen__progress:after{animation:.25s linear forwards welcome-progress-fill}.building-shadow,.building-core,.building-window--available,.building-orbit,.building-sweep{animation:none!important}}.building-showcase{border-radius:var(--radius-lg);border:1px solid var(--border);background:radial-gradient(120% 140% at 0% 0%, color-mix(in srgb, var(--accent) 16%, transparent), transparent 60%), linear-gradient(180deg, color-mix(in srgb, var(--accent-subtle) 35%, var(--bg-card)), var(--bg-card));box-shadow:var(--shadow-sm);margin:0 0 18px;position:relative;overflow:hidden}.building-showcase__header{color:var(--text-secondary);letter-spacing:.06em;text-transform:uppercase;justify-content:space-between;align-items:center;padding:10px 12px 6px;font-size:11px;font-weight:600;display:flex}.building-showcase__svg{width:100%;height:auto;display:block}.building-showcase__legend{color:var(--text-secondary);align-items:center;gap:8px;padding:8px 12px 12px;font-size:11px;display:flex}.building-dot{border-radius:50%;width:8px;height:8px;margin-left:6px;display:inline-block}.building-dot--available{background:#22c55e;box-shadow:0 0 10px #22c55e73}.building-dot--reserved{background:#f59e0b;box-shadow:0 0 10px #f59e0b66}.building-dot--occupied{background:#ef4444;box-shadow:0 0 10px #ef444459}.building-floor-label{fill:var(--text-muted);letter-spacing:.06em;font-size:9px;font-weight:600}.building-floor-stats{fill:var(--text-secondary);text-anchor:end;font-variant-numeric:tabular-nums;font-size:9px;font-weight:700}.building-shadow{fill:#22335433;animation:3.2s ease-in-out infinite building-shadow-pulse}.building-core{transform-origin:160px;animation:3.2s ease-in-out infinite building-float}.building-window{opacity:.95}.building-window--available{fill:#34d399;animation:1.8s ease-in-out infinite alternate building-window-glow}.building-window--reserved{fill:#fbbf24;opacity:.88}.building-window--occupied{fill:#f87171;opacity:.52}.building-window--empty{fill:#d4dbe8;opacity:.45}.building-orbit{fill:#c8dcff;transform-origin:160px;animation:10s linear infinite building-orbit}.building-sweep{opacity:.3;animation:4.8s ease-in-out infinite building-sweep}@keyframes building-float{0%,to{transform:translateY(0)}50%{transform:translateY(-4px)}}@keyframes building-shadow-pulse{0%,to{opacity:.2;transform:scale(1)}50%{opacity:.12;transform:scale(.97)}}@keyframes building-window-glow{0%{opacity:.58;filter:saturate(.9)}to{opacity:1;filter:saturate(1.15)}}@keyframes building-orbit{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes building-sweep{0%{opacity:0;transform:translate(-76px)}26%{opacity:.28}60%{opacity:.42}to{opacity:0;transform:translate(300px)}}.app-main{min-width:0}@media (width<=768px){.app-main{flex-direction:column}.project-details-aside{border-bottom:1px solid var(--border);max-height:min(48vh,420px);border-right:none!important;width:100%!important}}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%;overflow:hidden}body{color:var(--text-primary);background:var(--bg-primary);-webkit-font-smoothing:antialiased;font-family:"Source Sans 3",sans-serif;font-size:14px}svg.phaseGroup path:not(.property),svg.phaseGroup circle,svg.phaseGroup rect,svg.phaseGroup polygon,svg.phaseGroup polyline,svg.phaseGroup ellipse{pointer-events:none}path.property.available,path.property.reserved,svg path.property.available,svg path.property.reserved{pointer-events:auto}path.property.available,svg path.property.available{cursor:pointer;filter:none;paint-order:stroke fill;vector-effect:non-scaling-stroke;transition:filter .2s;fill:#22c55e!important;opacity:1!important;stroke:#fff!important;stroke-width:.8px!important}path.property.available:hover,svg path.property.available:hover{filter:brightness(1.13)saturate(1.1)drop-shadow(0 0 7px #ffffffd1)drop-shadow(0 0 18px #fff5c861);stroke-width:.8px!important}path.property.occupied,svg path.property.occupied{cursor:not-allowed;pointer-events:auto;paint-order:stroke fill;vector-effect:non-scaling-stroke;fill:#ef4444!important;opacity:1!important;stroke:#fff!important;stroke-width:.8px!important}path.property.reserved,svg path.property.reserved{cursor:pointer;filter:none;paint-order:stroke fill;vector-effect:non-scaling-stroke;transition:filter .2s;fill:#f59e0b!important;opacity:1!important;stroke:#fff!important;stroke-width:.8px!important}path.property.reserved:hover,svg path.property.reserved:hover{filter:brightness(1.13)saturate(1.1)drop-shadow(0 0 7px #ffffffd1)drop-shadow(0 0 18px #fff5c861);stroke-width:.8px!important}path.property.selected,svg path.property.selected{paint-order:stroke fill;vector-effect:non-scaling-stroke;filter:brightness(1.18)saturate(1.12)drop-shadow(0 0 8px #ffffffe6)drop-shadow(0 0 20px #fff5c873);transition:filter .2s,fill .12s;opacity:1!important;stroke:#fff!important;stroke-width:.8px!important}path.property.selected:hover,svg path.property.selected:hover{filter:brightness(1.26)saturate(1.15)drop-shadow(0 0 10px #fffffff2)drop-shadow(0 0 26px #fff8dc8c);stroke-width:.8px!important}@keyframes fadeUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes shimmer{0%{background-position:-400px 0}to{background-position:400px 0}}.fade-up{animation:.25s forwards fadeUp}.fade-in{animation:.2s forwards fadeIn}@keyframes gallery-modal-mesh{0%,to{opacity:1;transform:translate(0)scale(1)}33%{transform:translate(-3%,2%)scale(1.03)}66%{transform:translate(2%,-2%)scale(1.02)}}@keyframes gallery-img-reveal{0%{opacity:.45;filter:blur(6px)saturate(.85)}to{opacity:1;filter:blur()saturate()}}.gallery-modal-aura{pointer-events:none;background:radial-gradient(ellipse 90% 55% at 50% -15%, color-mix(in srgb, var(--accent) 35%, transparent), transparent 55%), radial-gradient(ellipse 50% 40% at 100% 100%, #7c3aed38, transparent), radial-gradient(ellipse 45% 35% at 0% 85%, #06b6d424, transparent);animation:14s ease-in-out infinite gallery-modal-mesh;position:absolute;inset:0}.gallery-modal-shell{background:linear-gradient(var(--bg-card), var(--bg-card)) padding-box, linear-gradient(118deg, color-mix(in srgb, var(--accent) 80%, #7c3aed), #06b6d4, color-mix(in srgb, var(--accent) 70%, #a855f7), var(--accent)) border-box;box-shadow:0 0 0 1px color-mix(in srgb, var(--border) 50%, transparent) inset, 0 28px 90px #00000061;border:1px solid #0000}.gallery-modal-strip-wrap{perspective:1200px;transform-style:preserve-3d}.gallery-modal-thumb{flex:none;transition:transform .3s cubic-bezier(.34,1.3,.64,1),box-shadow .3s,border-color .3s,opacity .3s}.gallery-modal-thumb--active{box-shadow:0 0 0 2px var(--accent), 0 0 24px color-mix(in srgb, var(--accent) 45%, transparent), 0 14px 32px #00000040;opacity:1;transform:translateZ(20px)scale(1.07);border-color:color-mix(in srgb, var(--accent) 55%, var(--border))!important}.gallery-modal-stage-img{animation:.5s cubic-bezier(.22,1,.36,1) forwards gallery-img-reveal}.gallery-modal-nav-btn{transition:background .15s,color .15s,box-shadow .15s,transform .12s}.gallery-modal-nav-btn:hover:not(:disabled){box-shadow:0 0 20px color-mix(in srgb, var(--accent) 35%, transparent);transform:scale(1.05)}.gallery-modal-nav-btn:disabled{opacity:.35;cursor:not-allowed}.skeleton{background:linear-gradient(90deg, var(--bg-secondary) 25%, var(--border) 50%, var(--bg-secondary) 75%);border-radius:var(--radius);background-size:400px 100%;animation:1.4s linear infinite shimmer}
