:root{--color-bg: #f5f0e4;--color-surface: #fffdf9;--color-surface-alt: #faf5e9;--color-ink: #2c2924;--color-ink-soft: #4a453c;--color-muted: #857d6c;--color-border: #e4dac2;--color-border-soft: #ece3cd;--color-gold: #b8935a;--color-gold-dark: #8a6830;--color-gold-light: #f3e8d1;--color-charcoal: #2c2924;--color-charcoal-soft: #3c372e;--color-charcoal-dark: #1c1a16;--color-kemport-navy: #142451;--color-green: #3f7a4d;--color-green-light: #e6f0e4;--color-red: #b1453a;--color-red-light: #f8e8e3;--color-amber: #af7c22;--color-amber-light: #f7ecd4;--radius: 14px;--radius-sm: 9px;--shadow-sm: 0 1px 2px rgba(40, 33, 15, .06), 0 2px 6px rgba(40, 33, 15, .05);--shadow-md: 0 3px 8px rgba(40, 33, 15, .07), 0 16px 32px rgba(40, 33, 15, .1);--shadow-lg: 0 24px 60px rgba(20, 17, 10, .28);--shadow-inset: inset 0 1px 0 rgba(255, 255, 255, .5);--font-display: "Playfair Display", Georgia, "Times New Roman", serif;--font-body: "Inter", "Segoe UI", system-ui, -apple-system, sans-serif;--gk-blue: var(--color-gold-dark);--gk-blue-dark: var(--color-charcoal);--gk-blue-light: var(--color-gold-light);--gk-green: var(--color-green);--gk-green-light: var(--color-green-light);--gk-red: var(--color-red);--gk-red-light: var(--color-red-light);--gk-amber: var(--color-amber);--gk-amber-light: var(--color-amber-light);--gk-bg: var(--color-bg);--gk-border: var(--color-border);--gk-text: var(--color-ink);--gk-muted: var(--color-muted);font-family:var(--font-body)}*{box-sizing:border-box}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{margin:0;color:var(--color-ink);line-height:1.55;font-family:var(--font-body);background-color:var(--color-bg);background-image:radial-gradient(1100px 700px at 12% -12%,#fffdf7e6,#fffdf700 60%),radial-gradient(900px 650px at 108% 6%,#b8935a29,#b8935a00 55%),radial-gradient(900px 700px at 50% 115%,#2c29240f,#2c292400 55%);background-attachment:fixed;min-height:100vh}.page{max-width:720px;margin:0 auto;padding:48px 20px}.wide-page{max-width:1200px;margin:0 auto;padding:32px 24px 60px}.card{background:var(--color-surface);border:1px solid var(--color-border-soft);border-radius:var(--radius);padding:30px 28px;box-shadow:var(--shadow-md);margin-bottom:20px;position:relative;overflow:hidden}.card:before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,transparent 4%,var(--color-gold) 50%,transparent 96%);opacity:.9}h1,h2,h3{font-family:var(--font-display)}h1{font-size:1.7rem;color:var(--color-charcoal);margin:0 0 20px;font-weight:600;letter-spacing:.1px}h2{font-size:1.2rem;color:var(--color-charcoal);margin:0 0 14px;font-weight:600;letter-spacing:.1px}h3{font-size:1rem;color:var(--color-ink);margin:0 0 8px;font-weight:600}p{margin:0 0 8px}.progress{display:flex;gap:5px;margin-bottom:26px}.progress-step{flex:1;height:6px;border-radius:3px;background:var(--color-border);transition:background .25s,box-shadow .25s}.progress-step.done{background:linear-gradient(90deg,var(--color-gold-dark),var(--color-gold));box-shadow:0 1px 4px #8a683059}label{display:block;font-weight:600;margin:14px 0 5px;font-size:.85rem;color:var(--color-ink-soft)}input[type=text],input[type=email],input[type=tel],input[type=number],input[type=password],input[type=date],select,textarea{width:100%;padding:11px 13px;border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:.92rem;font-family:inherit;background:var(--color-surface);color:var(--color-ink);transition:border-color .15s,box-shadow .15s}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--color-gold-dark);box-shadow:0 0 0 3px #8a683026}input[type=checkbox]{margin-right:8px;width:auto}textarea{resize:vertical}.field-error{color:var(--color-red);font-size:.8rem;margin-top:4px}.error-banner{background:var(--color-red-light);border:1px solid #e8c3ba;color:var(--color-red);padding:12px 16px;border-radius:var(--radius-sm);margin-bottom:16px;font-size:.9rem}.info-banner{background:var(--color-gold-light);border:1px solid #e7d3a8;color:var(--color-charcoal);padding:12px 16px;border-radius:var(--radius-sm);margin-bottom:16px;font-size:.9rem}.address-result{margin-bottom:16px}.address-result label{margin:14px 0 5px}.address-result-box{display:flex;align-items:center;gap:9px;width:100%;padding:11px 13px;border:1px solid var(--color-green);border-radius:var(--radius-sm);background:var(--color-green-light);color:var(--color-ink);font-size:.92rem;font-weight:500}.address-result-check{color:var(--color-green);font-weight:700;font-size:1rem}button,.btn-primary,.btn-secondary,.btn-danger,.btn-success,.btn-ghost{cursor:pointer;border:none;border-radius:var(--radius-sm);padding:11px 20px;font-size:.9rem;font-weight:600;font-family:var(--font-body);letter-spacing:.1px;transition:background .18s,box-shadow .18s,transform .05s,border-color .18s;display:inline-block;text-align:center;text-decoration:none;box-sizing:border-box}button:active{transform:translateY(1px)}.btn-primary{background:linear-gradient(180deg,var(--color-charcoal-soft),var(--color-charcoal-dark));color:var(--color-gold-light);box-shadow:var(--shadow-sm)}.btn-primary:hover:not(:disabled){background:linear-gradient(180deg,var(--color-charcoal),var(--color-charcoal-dark));box-shadow:0 6px 18px #8a68304d}.btn-primary:disabled{background:#c9c0aa;color:#fff;cursor:not-allowed}.btn-secondary{background:var(--color-surface);color:var(--color-gold-dark);border:1px solid var(--color-gold-dark)}.btn-secondary:hover:not(:disabled){background:var(--color-gold-light)}.btn-secondary:disabled{color:#c2b393;border-color:#e3d7ba;cursor:not-allowed}.btn-danger{background:var(--color-red);color:#fff}.btn-danger:hover:not(:disabled){background:#8f342b}.btn-danger:disabled{background:#e6b3ab;cursor:not-allowed}.btn-success{background:var(--color-green);color:#fff}.btn-success:hover:not(:disabled){background:#2c5d38}.btn-success:disabled{background:#a7cbaf;cursor:not-allowed}.btn-ghost{background:transparent;color:var(--color-charcoal);padding:11px 15px}.btn-ghost:hover:not(:disabled){background:#8a683014}.actions-row{display:flex;justify-content:space-between;margin-top:26px;gap:10px;align-items:center}.badge{display:inline-block;padding:3px 12px;border-radius:999px;font-size:.72rem;font-weight:700;letter-spacing:.3px}.badge-new{background:var(--color-gold-light);color:var(--color-gold-dark)}.badge-in_review{background:var(--color-amber-light);color:var(--color-amber)}.badge-parked{background:#efece2;color:#675f4e}.badge-accepted,.badge-contract_prepared,.badge-signed,.badge-completed{background:var(--color-green-light);color:var(--color-green)}.badge-rejected,.badge-terminated{background:var(--color-red-light);color:var(--color-red)}.badge-draft,.badge-cancelled,.badge-expired{background:#f1efe6;color:#8a8371}.photo-upload{border:2px dashed var(--color-border);border-radius:var(--radius);padding:24px;text-align:center;transition:border-color .15s,background .15s;background:var(--color-surface-alt)}.photo-upload:hover{border-color:var(--color-gold-dark);background:var(--color-gold-light)}.photo-preview{max-width:100%;max-height:220px;border-radius:var(--radius-sm);margin-top:10px;border:1px solid var(--color-border);box-shadow:var(--shadow-sm);display:block}.photo-preview-trigger{display:block;padding:0;margin-top:10px;border:none;background:none;cursor:zoom-in}.photo-preview-trigger .photo-preview{margin-top:0;transition:box-shadow .15s ease}.photo-preview-trigger:hover .photo-preview,.photo-preview-trigger:focus-visible .photo-preview{box-shadow:0 0 0 3px #b8935a73,var(--shadow-md)}.photo-lightbox-overlay{padding:40px}.photo-lightbox-image{max-width:100%;max-height:100%;border-radius:var(--radius-sm);box-shadow:var(--shadow-lg);cursor:default}.photo-lightbox-close{position:absolute;top:18px;right:24px;width:40px;height:40px;border-radius:50%;border:1px solid rgba(245,240,228,.4);background:#14110a8c;color:var(--color-bg);font-size:1.6rem;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center}.photo-lightbox-close:hover{background:#14110acc}.app-shell{display:flex;min-height:100vh;align-items:stretch}.sidebar{width:236px;flex-shrink:0;color:#fff;background:linear-gradient(190deg,var(--color-charcoal-soft) 0%,var(--color-charcoal-dark) 100%);display:flex;flex-direction:column;position:sticky;top:0;height:100vh;z-index:20;box-shadow:4px 0 24px #14110a2e}.sidebar-brand{display:flex;align-items:center;gap:10px;padding:22px 22px 18px}.sidebar-brand svg{color:var(--color-gold);flex-shrink:0}.sidebar-brand span{font-family:var(--font-display);font-weight:600;font-size:1.15rem;letter-spacing:.3px;color:#f6ecd8}.sidebar-logo-bottom{display:flex;justify-content:center;padding:16px 26px}.sidebar-logo-bottom img{width:100%;max-width:168px;height:auto;border-radius:12px;box-shadow:0 6px 20px #00000059}.sidebar-nav{display:flex;flex-direction:column;gap:3px;padding:8px 14px;flex:1}.sidebar-nav a{display:flex;align-items:center;gap:12px;color:#c9c0a8;text-decoration:none;font-size:.9rem;font-weight:500;padding:10px 13px;border-radius:var(--radius-sm);border-left:3px solid transparent;transition:background .15s,color .15s,border-color .15s}.sidebar-nav a svg{flex-shrink:0;opacity:.85}.sidebar-nav a:hover{background:#b8935a24;color:#fff}.sidebar-nav a.active{background:linear-gradient(90deg,#b8935a38,#b8935a0d);color:#f6ecd8;border-left-color:var(--color-gold)}.sidebar-nav a.active svg{opacity:1;color:var(--color-gold)}.sidebar-footer{border-top:1px solid rgba(255,255,255,.12);padding:16px 20px}.sidebar-user{display:flex;flex-direction:column;gap:1px;margin-bottom:10px}.sidebar-user-name{font-size:.85rem;font-weight:600;color:#fff}.sidebar-user-role{font-size:.75rem;color:#c9c0a8;text-transform:capitalize}.sidebar-logout{display:flex;align-items:center;gap:8px;background:transparent;color:#e3dac2;border:1px solid rgba(255,255,255,.2);width:100%;padding:9px 12px;font-size:.82rem}.sidebar-logout:hover{background:#b8935a24;border-color:#b8935a66;color:#fff}.sidebar-toggle{display:none;position:fixed;top:12px;left:14px;z-index:30;background:var(--color-charcoal-dark);color:#fff;border-radius:var(--radius-sm);padding:8px 10px;box-shadow:var(--shadow-md)}.main-column{flex:1;min-width:0}table.data-table{width:100%;border-collapse:collapse;background:var(--color-surface);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow-sm);border:1px solid var(--color-border-soft)}table.data-table th,table.data-table td{text-align:left;padding:13px 15px;border-bottom:1px solid var(--color-border-soft);font-size:.87rem}table.data-table th{background:var(--color-surface-alt);font-size:.72rem;text-transform:uppercase;letter-spacing:.5px;color:var(--color-muted);font-weight:700}table.data-table tbody tr{transition:background .12s}table.data-table tbody tr:hover{background:var(--color-gold-light);cursor:pointer}table.data-table tbody tr:last-child td{border-bottom:none}.boiler-table .boiler-brand-row td{background:var(--color-gold-light);color:var(--color-charcoal);font-weight:700;font-size:.78rem;text-transform:uppercase;letter-spacing:.4px;padding:9px 15px;-webkit-user-select:none;user-select:none}.boiler-table .boiler-brand-row:hover td{background:#ecdcb3}.boiler-chevron{display:inline-block;margin-right:8px;transition:transform .15s;font-size:.7rem}.boiler-chevron.open{transform:rotate(90deg)}.boiler-brand-count{font-weight:500;text-transform:none;color:var(--color-muted);letter-spacing:0}.tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(175px,1fr));gap:16px;margin-bottom:30px}.tile{background:var(--color-surface);border:1px solid var(--color-border-soft);border-radius:var(--radius);padding:20px;cursor:pointer;box-shadow:var(--shadow-sm);transition:box-shadow .18s,transform .15s;position:relative;overflow:hidden}.tile:before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,var(--color-gold-dark),var(--color-gold));opacity:0;transition:opacity .18s}.tile:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.tile:hover:before{opacity:1}.tile .tile-value{font-family:var(--font-display);font-size:2rem;font-weight:600;color:var(--color-charcoal);line-height:1.1}.tile .tile-label{font-size:.8rem;color:var(--color-muted);margin-top:5px}.visits-section{background:var(--color-surface);border:1px solid var(--color-border-soft);border-radius:var(--radius);padding:20px 22px;box-shadow:var(--shadow-sm);margin-bottom:30px}.visits-section-header{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px;margin-bottom:4px}.visits-section-header h2{margin:0}.visits-range-toggle{display:flex;gap:6px}.visits-range-toggle button{padding:6px 13px;font-size:.8rem;border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-charcoal);border-radius:999px;cursor:pointer;transition:background .1s,color .1s}.visits-range-toggle button:hover{background:var(--color-gold-light)}.visits-range-toggle button.active{background:var(--color-charcoal);color:var(--color-gold-light);border-color:var(--color-charcoal)}.visits-chart{width:100%;height:auto;margin-top:8px}.visits-chart-bar{fill:var(--color-gold-dark);transition:fill .1s}.visits-chart-bar:hover{fill:var(--color-charcoal)}.visits-chart-gridline{stroke:var(--color-border);stroke-width:1}.visits-chart-axis-label{fill:var(--color-muted);font-size:9px}.filter-bar{display:flex;gap:8px;margin-bottom:20px;flex-wrap:wrap;align-items:center}.filter-bar input,.filter-bar select{width:auto}.filter-bar input[type=text]{min-width:260px}.filter-bar button{padding:9px 15px;font-size:.85rem}.section-anchor{padding-top:10px;margin-top:4px}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:16px}.blockers{background:var(--color-red-light);border:1px solid #e8c3ba;border-radius:var(--radius-sm);padding:10px 16px;margin:10px 0 0}.blockers li{color:var(--color-red);font-size:.86rem}.price-total{font-family:var(--font-display);font-size:1.15rem;font-weight:600;color:var(--color-charcoal)}.sticky-header{position:sticky;top:0;background:#fffdf9eb;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-bottom:1px solid var(--color-border-soft);padding:16px 24px;z-index:15;display:flex;justify-content:space-between;align-items:center;box-shadow:var(--shadow-sm)}.sticky-actions{position:sticky;bottom:0;background:#fffdf9f5;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-top:1px solid var(--color-border-soft);padding:14px 24px;display:flex;gap:10px;justify-content:flex-end;z-index:15;box-shadow:0 -4px 16px #28210f12}.note-item{border-bottom:1px solid var(--color-border-soft);padding:10px 0;font-size:.87rem}.note-item:last-child{border-bottom:none}.muted{color:var(--color-muted);font-size:.85rem}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#14110a80;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:flex;align-items:center;justify-content:center;z-index:50;padding:20px}.modal-card{background:var(--color-surface);border-radius:var(--radius);padding:28px;width:100%;max-width:460px;box-shadow:var(--shadow-lg);max-height:90vh;overflow-y:auto;border:1px solid var(--color-border-soft)}.login-logo{display:flex;justify-content:center;margin-bottom:16px}.login-logo img{width:100%;max-width:200px;height:auto;border-radius:14px;box-shadow:var(--shadow-md)}.welcome-logo{display:flex;justify-content:center;margin-bottom:18px}.welcome-logo img{width:100%;max-width:220px;height:auto}@media (max-width: 760px){.two-col{grid-template-columns:1fr}.wide-page{padding:18px 14px 50px}.sticky-actions{flex-wrap:wrap}.sidebar-toggle,.app-shell{display:block}.sidebar{position:fixed;top:0;left:0;height:100vh;transform:translate(-100%);transition:transform .2s ease;box-shadow:2px 0 12px #0003}.sidebar.open{transform:translate(0)}.sidebar-brand{padding-left:56px}.main-column{padding-top:50px}}a{color:var(--color-gold-dark)}a:hover{color:var(--color-charcoal)}.site-footer{margin-top:30px;padding-top:20px;border-top:1px solid var(--color-border-soft);text-align:center}.site-footer-links{display:flex;flex-wrap:wrap;justify-content:center;gap:6px 18px;margin-bottom:8px}.site-footer-links a{font-size:.85rem;color:var(--color-muted);text-decoration:none}.site-footer-links a:hover{color:var(--color-gold-dark);text-decoration:underline}.site-footer-copyright{font-size:.78rem;color:var(--color-muted);margin:0}.legal-card ul{margin:0 0 14px;padding-left:20px}.legal-card li{margin-bottom:4px;font-size:.92rem}.legal-back-link{margin-bottom:4px}.legal-back-link a{font-size:.85rem;text-decoration:none}.legal-back-link a:hover{text-decoration:underline}.gate-portal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:300;display:flex;align-items:center;justify-content:center;background:radial-gradient(900px 700px at 50% 45%,#e0ebfff2,#bfd5f6d9 38%,#0a1122f7);animation:gatePortalFadeOut 1.15s ease forwards}.gate-portal-arch{position:relative;width:220px;height:260px;box-shadow:0 0 70px #2563eb4d,0 0 140px #2563eb24}.gate-portal-leaves{position:absolute;top:0;right:0;bottom:0;left:0;perspective:900px;clip-path:url(#gatePortalArchClip);overflow:hidden}.gate-portal-beam{position:absolute;left:50%;top:20px;bottom:20px;width:3px;transform:translate(-50%);background:linear-gradient(to bottom,#dbeafe0d,#93c5fdf2 30%,#2563eb4d);filter:blur(.5px);animation:gateBeamGrow 1.15s ease forwards;z-index:2}.gate-portal-leaf{position:absolute;top:20px;bottom:20px;width:50%;z-index:1}.gate-portal-leaf-left{left:0;transform-origin:left center;background-image:repeating-linear-gradient(90deg,var(--color-kemport-navy) 0 4px,transparent 4px 16px);animation:gateOpenLeft 1.15s cubic-bezier(.65,0,.2,1) forwards}.gate-portal-leaf-right{right:0;transform-origin:right center;background-image:repeating-linear-gradient(90deg,var(--color-kemport-navy) 0 4px,transparent 4px 16px);animation:gateOpenRight 1.15s cubic-bezier(.65,0,.2,1) forwards}.gate-portal-frame{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;z-index:4;pointer-events:none}.gate-portal-pillar,.gate-portal-pillar-cap{fill:var(--color-kemport-navy);filter:drop-shadow(0 0 6px rgba(37,99,235,.45))}@keyframes gateOpenLeft{0%{transform:rotateY(0);opacity:1}to{transform:rotateY(-108deg);opacity:.15}}@keyframes gateOpenRight{0%{transform:rotateY(0);opacity:1}to{transform:rotateY(108deg);opacity:.15}}@keyframes gateBeamGrow{0%{width:3px;opacity:.5}55%{width:34px;opacity:1}to{width:320px;opacity:0}}@keyframes gatePortalFadeOut{0%{opacity:1}72%{opacity:1}to{opacity:0;visibility:hidden}}@media (prefers-reduced-motion: reduce){.gate-portal,.gate-portal-leaf-left,.gate-portal-leaf-right,.gate-portal-beam{animation-duration:.4s}}
