:root{--bg:#e8edf2;--bg-panel:#f7f9fb;--surface:#fff;--ink:#1a2332;--ink-muted:#5a6a7e;--line:#c5d0dc;--line-strong:#8fa0b3;--brand:#0b3d5c;--brand-deep:#072a40;--accent:#1f6f8b;--accent-soft:#d7eaf0;--ok:#1b6b3a;--warn:#8a5a00;--danger:#8b1e2d;--focus:#0b6e99;--shadow:0 1px 2px #0a1e320f;--shadow-md:0 2px 8px #0a1e3214;--font:"IBM Plex Sans", "Segoe UI", sans-serif;--mono:"IBM Plex Mono", ui-monospace, monospace;--radius:4px;--space:.5rem}*,:before,:after{box-sizing:border-box}html,body,#root{height:100%}body{font-family:var(--font);color:var(--ink);background:linear-gradient(180deg, #dfe7ef 0%, var(--bg) 180px), repeating-linear-gradient(90deg, transparent, transparent 23px, #0b3d5c08 23px, #0b3d5c08 24px);-webkit-font-smoothing:antialiased;margin:0}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}.app-shell{grid-template-rows:auto 1fr;min-height:100%;display:grid}.topbar{background:linear-gradient(90deg, var(--brand-deep), var(--brand));color:#f4f8fb;border-bottom:3px solid #1484a8;align-items:center;gap:1.5rem;padding:.65rem 1.25rem;display:flex}.brand{flex-direction:column;min-width:12rem;line-height:1.15;display:flex}.brand-name{letter-spacing:.02em;font-size:1.05rem;font-weight:700}.brand-sub{opacity:.8;font-size:.72rem;font-weight:500}.nav{flex-wrap:wrap;flex:1;gap:.25rem;display:flex}.nav a{color:#d7e6f0;border-radius:var(--radius);padding:.4rem .7rem;font-size:.875rem;font-weight:500;text-decoration:none}.nav a:hover,.nav a.active{color:#fff;background:#ffffff1f;text-decoration:none}.user-chip{text-align:right;opacity:.95;align-items:center;gap:.65rem;font-size:.8rem;display:flex}.user-chip strong{font-weight:600;display:block}button.logout-btn{color:#f4f8fb;border-radius:var(--radius);cursor:pointer;background:0 0;border:1px solid #ffffff73;padding:.3rem .7rem;font-size:.78rem;font-weight:600}button.logout-btn:hover:not(:disabled){background:#ffffff24}button.logout-btn:disabled{opacity:.6;cursor:wait}.main{width:100%;max-width:1280px;margin:0 auto;padding:1.25rem 1.5rem 2rem}.page-header{margin-bottom:1rem}.page-title{color:var(--brand-deep);flex-wrap:wrap;align-items:center;gap:.4rem;margin:0 0 .25rem;font-size:1.45rem;font-weight:650;display:flex}.page-lead{color:var(--ink-muted);max-width:48rem;margin:0 0 1.25rem;font-size:.95rem;line-height:1.45}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}button.help-tip,.help-tip{border:1px solid var(--line-strong);background:var(--bg-panel);width:1.15rem;min-width:1.15rem;height:1.15rem;min-height:1.15rem;color:var(--brand);cursor:help;vertical-align:middle;border-radius:999px;flex:none;justify-content:center;align-items:center;margin:0;padding:0;font-size:.7rem;font-weight:700;line-height:1;display:inline-flex}.help-tip:hover,.help-tip:focus-visible{background:var(--accent-soft);border-color:var(--accent)}.field-label-row{align-items:center;gap:.3rem;display:inline-flex}.guide-callout{border:1px solid var(--line);border-left:4px solid var(--accent);background:var(--bg-panel);border-radius:var(--radius);max-width:52rem;margin:0 0 1rem;padding:.75rem .9rem}.guide-callout.tone-warn{border-left-color:var(--warn);background:#fff8e8}.guide-callout.tone-ok{border-left-color:var(--ok);background:#eaf6ee}.guide-title{text-transform:uppercase;letter-spacing:.04em;color:var(--brand-deep);margin-bottom:.35rem;font-size:.8rem;display:block}.guide-body{color:var(--ink);font-size:.9rem;line-height:1.45}.guide-body ol,.guide-body ul{margin:.35rem 0 0;padding-left:1.2rem}.guide-body li{margin:.2rem 0}.how-it-works{margin:0 0 1rem}.how-toggle{color:var(--brand);border:1px dashed var(--line-strong);background:#fff;font-size:.8rem;font-weight:650}.how-body{border:1px solid var(--line);background:var(--surface);max-width:52rem;margin-top:.5rem;padding:.75rem .9rem;font-size:.9rem;line-height:1.45}.form-section{border-top:1px solid var(--line);margin:1.15rem 0 .35rem;padding-top:.85rem}.form-section:first-of-type{border-top:0;margin-top:.35rem;padding-top:0}.form-section-title{color:var(--brand-deep);align-items:center;gap:.35rem;margin:0 0 .65rem;font-size:.95rem;font-weight:650;display:flex}.empty-state{text-align:center;color:var(--ink-muted);padding:1.75rem 1.25rem}.empty-state h3{color:var(--brand-deep);margin:0 0 .4rem;font-size:1.05rem}.empty-state p{max-width:28rem;margin:0 auto 1rem;font-size:.9rem;line-height:1.45}.empty-actions{flex-wrap:wrap;justify-content:center;align-items:center;gap:.5rem;display:flex}.empty-actions .btn{text-decoration:none;display:inline-block}.banner-next{margin-top:.35rem;font-weight:650}.hub-primary{box-shadow:var(--shadow-md);border-left-width:5px}.hub-grid-primary{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:.85rem;margin-bottom:1.25rem;display:grid}.hub-secondary-label{text-transform:uppercase;letter-spacing:.04em;color:var(--ink-muted);margin:0 0 .5rem;font-size:.75rem;font-weight:650}.admin-tabs{background:var(--bg-panel);border:1px solid var(--line);border-radius:var(--radius);flex-wrap:wrap;gap:.35rem;margin:0 0 1rem;padding:.35rem;display:flex}.admin-tabs a{color:var(--ink-muted);border-radius:var(--radius);padding:.4rem .75rem;font-size:.875rem;font-weight:600;text-decoration:none}.admin-tabs a:hover{background:var(--accent-soft);color:var(--brand-deep);text-decoration:none}.admin-tabs a.active{background:var(--brand);color:#f4f8fb}.skeleton-stack{gap:.55rem;margin:.75rem 0 1rem;display:grid}.skeleton-row{border-radius:var(--radius);background:linear-gradient(90deg,#d9e2ea 0%,#eef3f7 50%,#d9e2ea 100%) 0 0/200% 100%;height:2.1rem;animation:1.2s ease-in-out infinite skeleton-shimmer}@keyframes skeleton-shimmer{0%{background-position:100% 0}to{background-position:-100% 0}}@media (prefers-reduced-motion:reduce){.skeleton-row{animation:none}}.section-sub{color:var(--brand-deep);margin:1rem 0 .5rem;font-size:1rem}.muted{color:var(--ink-muted);overflow-wrap:anywhere;word-break:break-word;font-size:.85rem;line-height:1.35;display:block}.hub-grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:.85rem;display:grid}.hub-tile{background:var(--surface);border:1px solid var(--line);border-left:4px solid var(--accent);box-shadow:var(--shadow);color:inherit;flex-direction:column;gap:.4rem;min-height:7.5rem;padding:1rem 1.05rem;text-decoration:none;transition:border-color .15s,transform .15s;display:flex}.hub-tile:hover{border-color:var(--accent);text-decoration:none;transform:translateY(-1px)}.hub-tile.disabled{opacity:.55;border-left-color:var(--line-strong);pointer-events:none}.hub-tile h2{margin:0;font-size:1rem;font-weight:650}.hub-tile p{color:var(--ink-muted);margin:0;font-size:.85rem;line-height:1.35}.hub-tile .tag{font-family:var(--mono);color:var(--accent);text-transform:uppercase;letter-spacing:.04em;margin-top:auto;font-size:.7rem}.panel{background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow);padding:1rem;position:relative;overflow:visible}.panel+.panel{margin-top:1rem}.panel h2{margin:0 0 .75rem;font-size:1rem;font-weight:650}.filter-bar,.filters{border-bottom:1px solid var(--line);z-index:3;isolation:isolate;box-sizing:border-box;flex-wrap:wrap;align-items:flex-end;gap:.9rem 1.25rem;width:100%;margin:0 0 1.25rem;padding:.25rem 0 1.15rem;display:flex;position:relative}.filter-bar .field,.filters .field{flex:0 12rem;min-width:0;max-width:100%}.filter-bar .field-grow,.filters .field-grow{flex:18rem;min-width:0;max-width:100%}.filter-bar__actions,.filters__actions{flex-wrap:wrap;flex:none;align-items:flex-end;gap:.5rem;margin-left:auto;display:flex}label.field{color:var(--ink-muted);text-transform:uppercase;letter-spacing:.03em;flex-direction:column;gap:.3rem;min-width:0;font-size:.75rem;font-weight:600;display:flex}label.field>input,label.field>select,label.field>textarea{width:100%;min-width:0;max-width:100%}input,select,button,textarea{font:inherit}input,select,textarea{border:1px solid var(--line-strong);border-radius:var(--radius);color:var(--ink);background:#fff;padding:.45rem .55rem}input:focus,select:focus,button:focus-visible{outline:2px solid var(--focus);outline-offset:1px}button,.btn{appearance:none;border:1px solid var(--brand);background:var(--brand);color:#fff;border-radius:var(--radius);cursor:pointer;padding:.45rem .85rem;font-size:.875rem;font-weight:600}button.secondary{color:var(--brand);background:#fff}button:disabled{opacity:.5;cursor:not-allowed}.table-wrap{border:1px solid var(--line);z-index:1;-webkit-overflow-scrolling:touch;max-width:100%;position:relative;overflow:auto}table.data{border-collapse:separate;border-spacing:0;width:100%;font-size:.85rem}table.data th,table.data td{border-bottom:1px solid var(--line);text-align:left;white-space:nowrap;vertical-align:top;padding:.45rem .6rem}table.data th{z-index:1;background:var(--bg-panel);text-transform:uppercase;letter-spacing:.03em;color:var(--ink-muted);border-bottom:1px solid var(--line-strong);font-size:.72rem;font-weight:650;position:sticky;top:0}table.data tbody tr:hover{background:var(--accent-soft)}.empty{text-align:center;color:var(--ink-muted);padding:1.5rem;font-size:.9rem}.banner{border:1px solid var(--line);background:var(--accent-soft);color:var(--brand-deep);margin-bottom:1rem;padding:.65rem .85rem;font-size:.875rem}.banner.error{color:var(--danger);background:#f8e6e9;border-color:#e2b0b8}.inline-form{z-index:2;flex-wrap:wrap;align-items:flex-end;gap:.65rem .75rem;margin-bottom:.85rem;display:flex;position:relative}.inline-form .field{flex:10rem;min-width:0;max-width:100%}.inline-form>button,.inline-form>.btn{flex:none}.badge{background:var(--accent-soft);color:var(--brand);font-size:.72rem;font-weight:650;font-family:var(--mono);border-radius:2px;padding:.1rem .4rem;display:inline-block}.wizard-steps{flex-wrap:wrap;gap:.5rem;margin:0 0 1rem;padding:0;list-style:none;display:flex}.wizard-steps li{border:1px solid var(--line);background:var(--surface);text-transform:uppercase;letter-spacing:.04em;color:var(--ink-muted);border-radius:var(--radius);padding:.35rem .7rem;font-size:.78rem;font-weight:650}.wizard-steps li.active,.wizard-steps li.current{background:var(--brand);border-color:var(--brand);color:#fff}.wizard-steps li.done{border-color:var(--accent);color:var(--brand-deep);background:var(--accent-soft)}.form-grid{grid-template-columns:repeat(auto-fill,minmax(min(100%,240px),1fr));align-items:start;gap:.85rem 1rem;display:grid}.form-grid .field{min-width:0}.muted-note{color:var(--ink-muted);margin:.75rem 0 0;font-size:.8rem}.check-row{align-items:flex-start;gap:.5rem;margin:.85rem 0;font-size:.9rem;display:flex}.meta-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr));align-items:start;gap:.85rem 1.25rem;display:grid}.meta-grid>div{flex-direction:column;gap:.2rem;min-width:0;display:flex}.meta-grid strong{overflow-wrap:anywhere;word-break:break-word;font-weight:650;line-height:1.35}.meta-label{text-transform:uppercase;letter-spacing:.04em;color:var(--ink-muted);margin-bottom:0;font-size:.7rem;font-weight:650;display:block}@media (width<=640px){.meta-grid{grid-template-columns:1fr}}.route-skeleton{padding:.25rem 0 1rem}.route-skeleton .skeleton-title{max-width:18rem;height:1.75rem}.route-skeleton .skeleton-wide{max-width:100%}.hub-tile .cta-hint{color:var(--accent);margin-top:.65rem;font-size:.8rem;font-weight:650;display:inline-block}.hub-tile:hover .cta-hint{text-decoration:underline}.action-feedback{color:var(--ink-muted);margin-left:.5rem;font-size:.85rem;font-weight:600;display:inline-block}.table-scroll-cap{max-height:min(28rem,60vh);margin-top:0;overflow:auto}.table-below-toolbar{clear:both;z-index:1;position:relative}.payload-pre{background:var(--bg-panel);border:1px solid var(--line);font-family:var(--mono);max-height:28rem;margin:0;padding:.75rem;font-size:.75rem;overflow:auto}tr.row-changed{background:#fff8e8}button.danger-btn{border-color:var(--danger);color:var(--danger)}.dev-switch{text-transform:uppercase;letter-spacing:.04em;opacity:.9;text-align:left;flex-direction:column;gap:.15rem;font-size:.65rem;display:flex}.dev-switch select{text-transform:none;letter-spacing:0;max-width:16rem;padding:.25rem .4rem;font-size:.75rem}.owner-badge{color:var(--brand-deep);white-space:nowrap;background:#eef2f6}input:disabled{color:var(--ink-muted);cursor:not-allowed;background:#eef1f4}.csr-multi-compact{max-width:28rem;position:relative}.csr-trigger{text-align:left;text-overflow:ellipsis;white-space:nowrap;width:100%;overflow:hidden}.csr-chips{flex-wrap:wrap;gap:.35rem;margin-top:.4rem;display:flex}.csr-chip{appearance:none;border:1px solid var(--line-strong);background:var(--accent-soft);color:var(--brand-deep);border-radius:var(--radius);cursor:pointer;max-width:100%;padding:.15rem .45rem;font-size:.75rem;font-weight:600}.csr-panel{z-index:20;background:var(--surface);border:1px solid var(--line-strong);box-shadow:var(--shadow-md);border-radius:var(--radius);max-width:28rem;padding:.5rem;position:absolute;top:calc(100% + .25rem);left:0;right:0}.csr-filter{width:100%;margin-bottom:.4rem}.csr-panel-list{border:1px solid var(--line);max-height:14rem;padding:.25rem;overflow:auto}.csr-option{text-transform:none;letter-spacing:0;color:var(--ink);align-items:flex-start;gap:.45rem;padding:.3rem .35rem;font-size:.85rem;font-weight:500;display:flex}.csr-panel-other{align-items:center;gap:.4rem;margin-top:.45rem;display:flex}.csr-panel-other input{flex:1;min-width:0}.address-editor{gap:.85rem;margin:.75rem 0 1rem;display:grid}.address-editor-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem 1rem;display:flex}.field-label-row{text-transform:uppercase;letter-spacing:.04em;color:var(--ink-muted);margin-bottom:.25rem;font-size:.72rem;font-weight:650;display:block}.goods-hours-editor{margin:.75rem 0 1rem}.goods-slots{gap:.4rem;min-width:16rem;display:grid}.goods-slot-row{flex-wrap:wrap;align-items:center;gap:.35rem;display:flex}.goods-slot-row input{width:5.5rem;min-width:4.5rem}.cockpit-kpis{grid-template-columns:repeat(auto-fit,minmax(9.5rem,1fr));gap:.65rem;margin:0 0 .35rem;display:grid}.kpi-card{background:var(--surface);border:1px solid var(--line);border-top:3px solid var(--accent);box-shadow:var(--shadow);min-height:5.25rem;padding:.65rem .75rem .7rem}.kpi-card.kpi-warn{border-top-color:var(--warn)}.kpi-label{text-transform:uppercase;letter-spacing:.05em;color:var(--ink-muted);font-size:.68rem;font-weight:650;display:block}.kpi-value{color:var(--brand-deep);font-variant-numeric:tabular-nums;margin:.2rem 0;font-size:1.65rem;font-weight:700;line-height:1.15;display:block}.kpi-value.kpi-sm{font-size:.95rem;line-height:1.3}.kpi-value.kpi-ok{color:var(--ok)}.kpi-hint{color:var(--ink-muted);font-size:.72rem}.cockpit-asof{margin:0 0 1rem;font-size:.78rem}button.linkish{appearance:none;color:var(--accent);font:inherit;cursor:pointer;background:0 0;border:0;padding:0;text-decoration:underline}.cockpit-panels{grid-template-columns:1fr 1fr;gap:.85rem;margin:1rem 0;display:grid}@media (width<=960px){.cockpit-panels{grid-template-columns:1fr}}.domain-picker{flex-wrap:wrap;gap:.5rem;margin:0 0 1rem;display:flex}.domain-chip{appearance:none;border:1px solid var(--line-strong);background:var(--surface);color:var(--ink);border-radius:var(--radius);cursor:pointer;text-align:left;min-width:8.5rem;box-shadow:var(--shadow);padding:.55rem .85rem}.domain-chip strong{color:var(--brand-deep);font-size:.95rem;display:block}.domain-chip span{color:var(--ink-muted);font-size:.72rem}.domain-chip.active{border-color:var(--accent);border-top:3px solid var(--accent);background:var(--accent-soft)}.domain-chip.stub:not(.active){opacity:.85}.address-card{border:1px solid var(--line);background:var(--bg-panel);padding:.75rem .85rem}.address-card-head{flex-wrap:wrap;justify-content:space-between;align-items:end;gap:.75rem 1rem;margin-bottom:.65rem;display:flex}.postcode-lookup{border:1px dashed var(--line);background:color-mix(in srgb, var(--surface) 88%, var(--accent) 12%);gap:.45rem;margin:0 0 .75rem;padding:.55rem .65rem;display:grid}.postcode-lookup-compact{margin-top:.15rem}.postcode-lookup-row{flex-wrap:wrap;align-items:end;gap:.5rem .75rem;display:flex}.postcode-lookup-msg{margin:0;font-size:.82rem}.postcode-lookup-msg.error{color:var(--danger,#9b1c1c)}.postcode-picker{flex-wrap:wrap;align-items:end;gap:.5rem .75rem;display:flex}.postcode-picker .field{flex:16rem;margin:0}@media (width<=720px){.topbar{flex-wrap:wrap;gap:.75rem}.user-chip{text-align:left;width:100%}.main{padding:1rem .85rem 1.75rem}.filter-bar,.filters,.inline-form{gap:.65rem}.filter-bar .field,.filter-bar .field-grow,.filters .field,.filters .field-grow,.inline-form .field{flex:100%;min-width:0;max-width:100%}.filter-bar__actions,.filters__actions{width:100%;margin-top:.15rem;margin-left:0}.filter-bar__actions>button,.filters__actions>button{flex:auto}.hub-grid-primary,.hub-grid{grid-template-columns:1fr}.admin-tabs{-webkit-overflow-scrolling:touch;flex-wrap:nowrap;overflow-x:auto}.admin-tabs a{flex:none}.page-title{font-size:1.25rem}table.data th,table.data td{white-space:normal}}
