:root{--bg: #ffffff;--surface: #ffffff;--surface-2: #f8fafc;--surface-3: #f1f5f9;--border: #e2e8f0;--border-strong: #cbd5e1;--text: #0f172a;--text-2: #334155;--muted: #64748b;--muted-2: #94a3b8;--primary: #1d4ed8;--primary-hover: #1e40af;--primary-soft: #eff6ff;--primary-soft-border: #dbeafe;--primary-fg: #ffffff;--green: #16a34a;--green-soft: #ecfdf5;--blue: #2563eb;--blue-soft: #eff6ff;--red: #dc2626;--red-soft: #fef2f2;--yellow: #ca8a04;--yellow-soft: #fefce8;--grey: #64748b;--grey-soft: #f1f5f9;--sidebar-w: 240px;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--space-10: 40px}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font:14px/1.5 -apple-system,BlinkMacSystemFont,Inter,Segoe UI,system-ui,sans-serif;background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased}a{color:var(--primary);text-decoration:none;font-weight:500}a:hover{text-decoration:underline}h1,h2,h3,h4{color:var(--text);letter-spacing:-.01em}h1{font-size:22px;font-weight:600;margin:0}h2{font-size:18px;font-weight:600;margin:0}h3{font-size:15px;font-weight:600;margin:0}h4{font-size:13px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin:0}button,.btn{display:inline-flex;align-items:center;gap:var(--space-2);background:var(--primary);color:var(--primary-fg);border:1px solid var(--primary);padding:10px 16px;border-radius:0;cursor:pointer;font:inherit;font-weight:500;line-height:1;transition:background .12s,border-color .12s}button:hover,.btn:hover{background:var(--primary-hover);border-color:var(--primary-hover)}button.secondary,.btn.secondary{background:var(--surface);color:var(--text);border:1px solid var(--border-strong)}button.secondary:hover,.btn.secondary:hover{background:var(--surface-2);border-color:var(--muted-2)}button.danger,.btn.danger{background:var(--red);border-color:var(--red);color:#fff}button.danger:hover,.btn.danger:hover{background:#b91c1c;border-color:#b91c1c}button.ghost{background:transparent;color:var(--text);border:1px solid transparent}button.ghost:hover{background:var(--surface-2)}button.icon-only{padding:8px}button:disabled{opacity:.45;cursor:not-allowed}button svg{width:16px;height:16px}input,select,textarea{background:var(--surface);color:var(--text);border:1px solid var(--border-strong);padding:10px 12px;border-radius:0;font:inherit;width:100%;transition:border-color .12s,box-shadow .12s}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}input[type=checkbox]{width:auto;accent-color:var(--primary)}label{font-size:13px;color:var(--text-2);font-weight:500}.layout{display:grid;grid-template-columns:var(--sidebar-w) 1fr;min-height:100vh;background:var(--surface-2)}.sidebar{background:var(--surface);border-right:1px solid var(--border);padding:var(--space-6) var(--space-4);display:flex;flex-direction:column;gap:var(--space-4)}.sidebar-brand{display:flex;align-items:center;gap:var(--space-3);padding-bottom:var(--space-4);border-bottom:1px solid var(--border)}.sidebar-brand .brand-icon{width:36px;height:36px;background:var(--primary);color:#fff;display:inline-flex;align-items:center;justify-content:center}.sidebar-brand .brand-icon svg{width:18px;height:18px}.sidebar-brand-name{font-weight:600;font-size:15px}.sidebar-brand-sub{font-size:12px;color:var(--muted)}.sidebar nav{display:flex;flex-direction:column;gap:2px;flex:1}.sidebar nav a{display:flex;align-items:center;gap:var(--space-3);padding:10px 12px;color:var(--text-2);font-weight:500;border-left:2px solid transparent}.sidebar nav a:hover{background:var(--surface-2);color:var(--text);text-decoration:none}.sidebar nav a.active{background:var(--primary-soft);color:var(--primary);border-left-color:var(--primary)}.sidebar nav a svg{width:16px;height:16px;flex-shrink:0}.sidebar-foot{padding-top:var(--space-4);border-top:1px solid var(--border)}.sidebar-user{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) 0;font-size:12px;color:var(--muted)}.main{padding:var(--space-8);overflow:auto;max-width:1400px;width:100%}.card{background:var(--surface);border:1px solid var(--border);border-radius:0;padding:var(--space-6)}.card+.card{margin-top:var(--space-4)}.card-header{display:flex;align-items:center;gap:var(--space-3);margin-bottom:var(--space-4);padding-bottom:var(--space-4);border-bottom:1px solid var(--border)}.card-header svg{width:18px;height:18px;color:var(--primary)}.card-header h2,.card-header h3{flex:1}.row{display:flex;gap:var(--space-3);align-items:center}.row.gap-2{gap:var(--space-2)}.col{display:flex;flex-direction:column;gap:var(--space-3)}.grid{display:grid;gap:var(--space-4)}.grid-2{display:grid;gap:var(--space-4);grid-template-columns:repeat(2,1fr)}.spacer{flex:1}.toolbar{display:flex;align-items:center;gap:var(--space-3);margin-bottom:var(--space-6)}.toolbar input{max-width:380px}.toolbar h1,.toolbar h2{flex:1}.page-header{display:flex;align-items:center;gap:var(--space-3);margin-bottom:var(--space-6)}.page-header svg.title-icon{width:22px;height:22px;color:var(--primary)}.page-header .spacer{flex:1}.tabs{display:flex;gap:0;border-bottom:1px solid var(--border);flex-wrap:wrap;margin-bottom:var(--space-5)}.tabs button{padding:10px 16px;border:0;border-bottom:2px solid transparent;background:transparent;color:var(--muted);font-weight:500;border-radius:0;display:inline-flex;align-items:center;gap:6px}.tabs button svg{width:16px;height:16px}.tabs button:hover{color:var(--text);background:transparent}.tabs button.tab-active{color:var(--primary);border-bottom-color:var(--primary);background:transparent}.breadcrumb{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--muted);margin-bottom:var(--space-3)}.breadcrumb a{color:var(--muted)}.breadcrumb a:hover{color:var(--primary)}.breadcrumb svg{width:12px;height:12px}.detail-header{margin-bottom:var(--space-6)}.detail-header h1{display:flex;align-items:center;gap:var(--space-3)}.detail-header .subtitle{color:var(--muted);font-size:14px;margin-top:4px}.detail-header .stats{display:flex;gap:var(--space-3);margin-top:var(--space-4);flex-wrap:wrap}.detail-header .stat{background:var(--surface);border:1px solid var(--border);padding:10px 14px;min-width:110px}.detail-header .stat-label{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.detail-header .stat-value{font-size:18px;font-weight:600}.section{padding:var(--space-5) 0}.section+.section{border-top:1px solid var(--border)}.section h3{margin-bottom:var(--space-2)}.section .section-desc{color:var(--muted);font-size:13px;margin-bottom:var(--space-4)}.section-grid{display:grid;grid-template-columns:200px 1fr;gap:var(--space-5) var(--space-6);align-items:start}.section-grid>.section-head{padding-top:4px}.sticky-save{position:sticky;bottom:0;margin:var(--space-6) calc(-1 * var(--space-6)) calc(-1 * var(--space-6));padding:var(--space-3) var(--space-6);background:var(--surface-2);border-top:1px solid var(--border);display:flex;align-items:center;gap:var(--space-3)}.sticky-save .spacer{flex:1}.week-grid{display:grid;grid-template-columns:90px 1fr auto;gap:var(--space-2);align-items:center}.week-grid .day-row{display:contents}.week-grid .day-name{font-weight:600;text-transform:uppercase;font-size:12px;letter-spacing:.04em;color:var(--text-2);padding:12px;background:var(--surface-2);border:1px solid var(--border)}.week-grid .day-windows{display:flex;gap:6px;flex-wrap:wrap;padding:8px 12px;background:var(--surface);border:1px solid var(--border);min-height:44px;align-items:center}.week-grid .day-actions{display:flex;gap:4px}.window-chip{display:inline-flex;align-items:center;gap:6px;background:var(--primary-soft);color:var(--primary);border:1px solid var(--primary-soft-border);padding:4px 8px;font-size:12px;font-weight:500}.window-chip.closed{background:var(--surface-3);color:var(--muted);border-color:var(--border)}.window-chip button{padding:0;background:transparent;border:0;color:inherit}.window-chip button:hover{color:var(--red)}.preset-row{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:var(--space-4);padding:12px;background:var(--surface-2);border:1px dashed var(--border)}.preset-row .preset-label{color:var(--muted);font-size:12px;align-self:center;margin-right:8px}.month-group{margin-bottom:var(--space-5)}.month-group h4{color:var(--text);font-size:12px;text-transform:uppercase;letter-spacing:.05em;margin-bottom:var(--space-2);padding:8px 12px;background:var(--surface-2);border:1px solid var(--border)}.pill{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;font-size:12px;font-weight:500;border:1px solid var(--border);background:var(--surface)}.pill svg{width:12px;height:12px}.pill-success{color:var(--green);border-color:var(--green-soft);background:var(--green-soft)}.pill-warn{color:var(--yellow);border-color:var(--yellow-soft);background:var(--yellow-soft)}.pill-danger{color:var(--red);border-color:var(--red-soft);background:var(--red-soft)}.pill-info{color:var(--primary);border-color:var(--primary-soft-border);background:var(--primary-soft)}.search-input{position:relative;display:flex;align-items:center;gap:8px;background:var(--surface);border:1px solid var(--border-strong);padding:8px 12px;max-width:360px;width:100%}.search-input svg{width:14px;height:14px;color:var(--muted);flex-shrink:0}.search-input input{border:0;padding:0;background:transparent}.search-input input:focus{box-shadow:none}.tag{display:inline-flex;align-items:center;gap:4px;background:var(--surface-3);color:var(--text-2);border:1px solid var(--border);padding:3px 8px;font-size:12px;font-weight:500;border-radius:0}.tag.tag-blue{background:var(--blue-soft);color:var(--blue);border-color:var(--blue-soft)}.tag.tag-green{background:var(--green-soft);color:var(--green);border-color:var(--green-soft)}.tag.tag-red{background:var(--red-soft);color:var(--red);border-color:var(--red-soft)}.tag.tag-yellow{background:var(--yellow-soft);color:var(--yellow);border-color:var(--yellow-soft)}.tag svg{width:12px;height:12px}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:12px var(--space-3);border-bottom:1px solid var(--border)}th{color:var(--muted);font-weight:500;font-size:11px;text-transform:uppercase;letter-spacing:.05em;background:var(--surface-2);border-bottom:1px solid var(--border)}tr:hover td{background:var(--surface-2)}td{color:var(--text)}.muted{color:var(--muted)}.empty{padding:var(--space-8);text-align:center;color:var(--muted)}.empty svg{width:32px;height:32px;margin-bottom:var(--space-3);color:var(--muted-2)}.floorplan{position:relative;background:var(--surface-2);border:1px solid var(--border);overflow:hidden}.floorplan svg{display:block;width:100%;height:100%}.bay{cursor:pointer;transition:filter .15s}.bay:hover{filter:brightness(.92)}.bay-label{fill:#fff;font-size:11px;font-weight:600;pointer-events:none}.legend{display:flex;gap:var(--space-4);flex-wrap:wrap;margin:var(--space-3) 0 var(--space-4);font-size:13px;color:var(--text-2)}.legend .dot{display:inline-block;width:12px;height:12px;margin-right:6px;vertical-align:middle}.modal-bg{position:fixed;inset:0;background:#0f172a8c;z-index:100;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:var(--space-4)}.modal{background:var(--surface);border:1px solid var(--border);padding:var(--space-6);width:100%;max-width:min(560px,92vw);margin:auto;position:relative}.modal-header{display:flex;align-items:center;gap:var(--space-3);margin:calc(-1 * var(--space-6)) calc(-1 * var(--space-6)) var(--space-5);padding:var(--space-4) var(--space-6);background:var(--surface);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:1}.modal-header svg{width:18px;height:18px;color:var(--primary)}.modal-header h2{flex:1}.auth-page{display:flex;align-items:center;justify-content:center;min-height:100vh;background:var(--surface-2);padding:var(--space-4)}.auth-card{width:380px}.auth-card h2{margin-bottom:var(--space-4)}.auth-brand{display:flex;align-items:center;gap:var(--space-3);margin-bottom:var(--space-6)}.auth-brand .brand-icon{width:40px;height:40px;background:var(--primary);color:#fff;display:inline-flex;align-items:center;justify-content:center}.error{color:var(--red);background:var(--red-soft);border:1px solid var(--red-soft);border-left:3px solid var(--red);padding:var(--space-3) var(--space-4);font-size:13px}.success{color:var(--green);background:var(--green-soft);border-left:3px solid var(--green);padding:var(--space-3) var(--space-4);font-size:13px}.info{color:var(--primary);background:var(--primary-soft);border-left:3px solid var(--primary);padding:var(--space-3) var(--space-4);font-size:13px}.metric{display:flex;flex-direction:column;gap:var(--space-1)}.metric .metric-icon{width:36px;height:36px;background:var(--primary-soft);color:var(--primary);display:inline-flex;align-items:center;justify-content:center;margin-bottom:var(--space-2)}.metric .metric-icon svg{width:18px;height:18px}.metric .metric-label{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.metric .metric-value{font-size:24px;font-weight:600;color:var(--text)}code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;background:var(--surface-3);border:1px solid var(--border);padding:1px 6px;font-size:12px}.skeleton{display:block;background:linear-gradient(90deg,var(--surface-3) 0%,var(--surface-2) 50%,var(--surface-3) 100%);background-size:200% 100%;animation:skeleton-shimmer 1.4s ease-in-out infinite;border-radius:0}@keyframes skeleton-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@media (prefers-reduced-motion: reduce){.skeleton{animation:none;background:var(--surface-3)}}.breakdown{background:var(--surface-2);border:1px solid var(--border);padding:var(--space-4);margin-top:var(--space-4)}.breakdown ul{margin:var(--space-2) 0;padding-left:var(--space-5);color:var(--text-2)}.breakdown .total{margin-top:var(--space-3);padding-top:var(--space-3);border-top:1px solid var(--border);font-size:18px;font-weight:600}.link-preview{background:var(--surface-2);border:1px solid var(--border);padding:10px 12px;margin-top:var(--space-2)}.link-preview-label{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:6px}.link-preview-row{display:flex;align-items:center;gap:6px}.link-preview-url{flex:1;background:var(--surface);border:1px solid var(--border);padding:6px 10px;font-size:12px;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.public-page{min-height:100vh;background:var(--surface-2)}.public-header{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-4) var(--space-6);background:var(--surface);border-bottom:1px solid var(--border)}.public-main{max-width:1080px;margin:0 auto;padding:var(--space-6)}.product-card{display:block;background:var(--surface);border:1px solid var(--border);text-decoration:none;color:inherit;overflow:hidden;transition:border-color .15s,transform .15s}.product-card:hover{border-color:var(--primary);text-decoration:none;transform:translateY(-2px)}.product-card-img{width:100%;aspect-ratio:16 / 10;object-fit:cover;background:var(--surface-3)}.product-card-body{padding:var(--space-4)}.product-card h2{font-size:16px}.product-card .price{font-weight:600;color:var(--primary);font-size:16px}.checkout-grid{display:grid;grid-template-columns:320px 1fr;gap:var(--space-5);align-items:start}@media (max-width: 768px){.checkout-grid{grid-template-columns:1fr}.public-header{padding:var(--space-3) var(--space-4)}.public-main{padding:var(--space-4)}}.product-summary-img{width:100%;aspect-ratio:16 / 10;object-fit:cover;margin:calc(-1 * var(--space-6)) calc(-1 * var(--space-6)) var(--space-4);width:calc(100% + var(--space-6) * 2);background:var(--surface-3)}.price-big{font-size:28px;font-weight:700;color:var(--primary);letter-spacing:-.01em}.confirmation-card{max-width:520px;margin:0 auto}.confirmation-badge{width:56px;height:56px;background:var(--green-soft);color:var(--green);display:flex;align-items:center;justify-content:center;margin:0 auto;border-radius:50%}.confirmation-badge svg{width:28px;height:28px}.confirmation-code-block{background:var(--primary-soft);border:1px solid var(--primary-soft-border);padding:var(--space-4);text-align:center;margin:var(--space-4) 0}.confirmation-code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:24px;font-weight:700;letter-spacing:.15em;color:var(--primary);margin:6px 0}.confirmation-rows{display:flex;flex-direction:column;border-top:1px solid var(--border)}.confirmation-row{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) 0;border-bottom:1px solid var(--border)}.confirmation-row-icon{width:32px;height:32px;display:flex;align-items:center;justify-content:center;background:var(--surface-2);color:var(--muted);flex-shrink:0}.confirmation-row-icon svg{width:16px;height:16px}.mobile-menu-btn{display:none;position:fixed;top:12px;left:12px;z-index:105;background:var(--surface);color:var(--text);border:1px solid var(--border-strong);padding:10px;border-radius:0;cursor:pointer;align-items:center;justify-content:center}.mobile-menu-btn svg{width:20px;height:20px}.mobile-backdrop{display:none;position:fixed;inset:0;background:#0f172a73;z-index:109;opacity:0;pointer-events:none;transition:opacity .18s ease-out}@media (max-width: 768px){input,select,textarea{font-size:16px}.layout{grid-template-columns:1fr}.sidebar{position:fixed;top:0;left:0;bottom:0;width:280px;max-width:80vw;transform:translate(-100%);transition:transform .2s ease-out;z-index:110;box-shadow:2px 0 24px #00000026}.sidebar.open{transform:translate(0)}.mobile-menu-btn{display:inline-flex}.mobile-backdrop{display:block}.mobile-backdrop.open{opacity:1;pointer-events:auto}.main{padding:var(--space-5) var(--space-4);padding-top:60px;max-width:100%}.page-header{flex-wrap:wrap;gap:var(--space-2)}.page-header h1,.page-header h2{font-size:18px;flex:1 1 100%}.page-header .spacer{display:none}.detail-header .stats{gap:var(--space-2)}.detail-header .stat{min-width:calc(50% - var(--space-2) / 2);flex:1 1 calc(50% - var(--space-2) / 2);padding:8px 10px}.detail-header .stat-value{font-size:16px}.card{padding:var(--space-4)}.card table{display:block;width:100%;overflow-x:auto;white-space:nowrap;-webkit-overflow-scrolling:touch}.card table thead,.card table tbody,.card table tr{display:table;width:max-content;min-width:100%;table-layout:auto}.grid-2{grid-template-columns:1fr}.grid[style*="repeat(4, 1fr)"]{grid-template-columns:repeat(2,1fr)!important}.section-grid{grid-template-columns:1fr;gap:var(--space-3)}.section-grid .section-head{padding-top:0}.modal-bg{padding:0}.modal{width:100%;max-width:100vw;border:0;padding:var(--space-5) var(--space-4);min-height:100dvh;min-height:100vh;margin:0}.modal-header{margin:calc(-1 * var(--space-5)) calc(-1 * var(--space-4)) var(--space-4);padding:var(--space-3) var(--space-4)}.sticky-save{margin:var(--space-4) calc(-1 * var(--space-4)) calc(-1 * var(--space-4));padding:var(--space-3) var(--space-4);flex-wrap:wrap;gap:var(--space-2)}.week-grid{grid-template-columns:1fr}.week-grid .day-name{border-bottom:0}.week-grid .day-actions{justify-content:flex-end;padding:0 8px 8px}.toolbar{flex-wrap:wrap}.toolbar input,.search-input{max-width:100%}.floorplan{width:100%!important;height:auto!important;aspect-ratio:16 / 9}.auth-card{width:100%;max-width:380px}button,.btn{min-height:40px;padding:10px 14px}button.icon-only{min-width:40px;padding:8px}input,select,textarea{min-height:40px}}@media (max-width: 480px){.detail-header .stat{min-width:100%;flex:1 1 100%}.grid[style*="repeat(4, 1fr)"]{grid-template-columns:1fr!important}.tabs button{padding:8px 10px;font-size:13px}h1{font-size:18px}.main{padding:var(--space-4) var(--space-3);padding-top:56px}.preset-row{padding:8px}}
