:root{--bg:#eef1f5;--panel:#fff;--ink:#182130;--muted:#667184;--line:#dde3eb;--brand:#477fff;--brand-soft:#eaf0ff;--nav:#181924;--good:#237a64;--warm:#a76a1b;--shadow:0 12px 40px #17253b0a;font-family:Montserrat,Arial,sans-serif;color:var(--ink);background:var(--bg);font-synthesis:none}*{box-sizing:border-box}body{margin:0}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer;min-height:40px;border:1px solid var(--line);background:var(--panel);color:var(--ink);border-radius:10px;padding:9px 13px;transition:background .18s,color .18s,transform .18s}button:hover{background:var(--brand-soft)}button:focus-visible,a:focus-visible,summary:focus-visible{outline:3px solid var(--brand);outline-offset:3px}button:disabled{opacity:.5;cursor:default}h1,h2,h3,p{margin:0}h1{font-size:34px;font-weight:600;letter-spacing:-1px;line-height:1.15}h2{font-size:24px;line-height:1.2;letter-spacing:-.5px}h3{font-size:16px;line-height:1.3}p{line-height:1.5}a{color:var(--brand)}#app{max-width:1480px;margin:0 auto;padding:24px 32px 20px}.top{background:var(--nav);color:#fff;border-radius:20px;padding:28px 30px;display:flex;justify-content:space-between;align-items:center;gap:22px}.eyebrow{font-size:10px;letter-spacing:1.6px;font-weight:600;line-height:1.5}.top .eyebrow{color:#b1c2e6;margin-bottom:10px}.top p{font-size:12px;color:#bdc5d7;margin-top:9px}.top .outline{background:#ffffff0b;border-color:#ffffff29;color:#fff;white-space:nowrap}.top .outline span{display:inline-flex;justify-content:center;align-items:center;width:22px;height:22px;background:#ffffff20;border-radius:6px;margin-left:7px}.days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px;margin-top:18px}.day{display:grid;text-align:left;gap:6px;padding:13px 15px;background:transparent}.day .date{font-size:20px;font-weight:600}.day .weekday{font-size:11px;color:var(--muted);margin-left:6px}.day .label{font-size:11px;color:var(--muted)}.day[aria-pressed=true]{background:var(--brand);color:white;border-color:var(--brand);box-shadow:0 6px 20px #477fff25}.day[aria-pressed=true] .weekday,.day[aria-pressed=true] .label{color:#fff}.day-heading{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:25px 0 20px}.day-heading .eyebrow{color:var(--muted);margin-bottom:6px}.day-heading p{font-size:13px;color:var(--muted);margin-top:7px;max-width:780px}.primary{background:linear-gradient(115deg,#39affd,var(--brand));border-color:transparent;color:#fff;white-space:nowrap;font-size:12px;font-weight:600}.primary:hover{background:#316fe9}.workspace{display:grid;grid-template-columns:minmax(0,1fr) 350px;gap:18px;align-items:start}.map-section,.operations,.journey,.gaps{background:var(--panel);border-radius:16px;box-shadow:var(--shadow);min-width:0}.map-toolbar{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;gap:12px}.map-actions{display:flex;gap:5px}.map-actions button{font-size:12px;min-height:32px;padding:5px 10px}.map{height:380px;position:relative;overflow:hidden;isolation:isolate;background:#e1e9e5}.map #tiles{position:absolute;inset:0}.map img.tile{position:absolute;width:256px;height:256px;max-width:none}.north{position:absolute;top:14px;right:14px;background:#fff;color:#3f4a56;padding:8px;border-radius:8px;z-index:2;font-size:11px}.map-attribution{position:absolute;bottom:0;right:0;background:#ffffffed;font-size:10px;padding:3px 6px;z-index:3}.map-attribution a{color:#415b7b}.map-state{position:absolute;left:16px;bottom:20px;background:#fff;padding:10px 13px;border-radius:8px;max-width:calc(100% - 32px);font-size:12px;z-index:2}.map-state[hidden]{display:none}.pin{position:absolute;transform:translate(-50%,-50%);z-index:4;border-radius:12px;padding:8px 10px;background:var(--nav);color:#fff;border:2px solid #fff;box-shadow:0 3px 12px #18213033;min-height:44px;display:flex;gap:8px;align-items:center;white-space:nowrap}.pin .letter{font-size:20px;font-weight:600}.pin .pin-label{font-size:10px;line-height:1.4;text-align:left}.pin:hover,.pin.selected{background:var(--brand)}.pin.inactive{background:#667184}.pin.role-match{box-shadow:0 0 0 7px #477fff25}.pin.selected{z-index:5}.map.offline #pins{position:relative;height:100%;display:flex;align-items:center;justify-content:center;gap:16px;flex-wrap:wrap;padding:45px 15px 90px}.map.offline .pin{position:relative;left:auto!important;top:auto!important;transform:none}.map.offline{background:linear-gradient(135deg,#eaf0f7,#eff4f1)}.map-note{padding:12px 20px;font-size:11px;color:var(--muted);display:flex;align-items:center;gap:8px}.dot{height:7px;width:7px;border-radius:50%;background:var(--brand);flex:none}.unplaced{display:flex;gap:7px;flex-wrap:wrap;padding:0 20px 14px}.unplaced button{font-size:11px;padding:7px 10px;min-height:33px;border-style:dashed}.unplaced button[aria-pressed=true]{background:var(--brand-soft);border-color:var(--brand)}.point-detail{border-top:1px solid var(--line);padding:16px 20px;min-height:109px}.point-title{display:flex;justify-content:space-between;gap:10px;align-items:center;margin-bottom:7px}.point-title strong{font-size:14px}.point-title span{font-size:10px;color:var(--warm)}.point-detail p{font-size:12px;color:var(--muted)}.operations{padding:20px}.roles{display:flex;gap:6px;flex-wrap:wrap;margin:12px 0}.roles button{font-size:11px;padding:6px 9px;min-height:33px}.roles button[aria-pressed=true]{background:var(--nav);border-color:var(--nav);color:#fff}.role-detail{font-size:12px;line-height:1.55;min-height:95px}.role-detail .role-name{font-weight:600;margin-bottom:5px}.role-detail ul{padding-left:17px;margin:0}.role-detail .assumption{color:var(--warm);font-size:10px;margin-top:7px}.schedule-head{display:flex;align-items:center;justify-content:space-between;margin-top:18px;padding-top:18px;border-top:1px solid var(--line)}.schedule-head span{font-size:10px;color:var(--muted)}.schedule{margin:13px 0 0;padding:0;list-style:none;display:grid;gap:8px}.schedule li{position:relative;padding-left:16px}.schedule li:before{content:'';position:absolute;left:0;top:14px;width:6px;height:6px;background:var(--line);border-radius:50%}.schedule li.active:before{background:var(--brand);box-shadow:0 0 0 4px var(--brand-soft)}.schedule button{text-align:left;padding:7px 5px;border:0;width:100%;min-height:0;background:transparent;display:grid;gap:4px}.schedule .active button{background:var(--brand-soft)}.schedule time{font-size:10px;color:var(--muted)}.schedule .event{font-size:12px;line-height:1.4}.day-result{margin-top:15px;padding-top:13px;border-top:1px solid var(--line);font-size:11px;color:var(--muted);line-height:1.5}.day-result strong{display:block;color:var(--ink);margin-bottom:4px}.journey{margin-top:18px;padding:22px 24px}.section-head{display:flex;justify-content:space-between;align-items:center;gap:16px}.section-head .eyebrow{color:var(--muted);margin-bottom:5px}.journey h2,.gaps h2{font-size:20px}.journey-line{position:relative;margin-top:24px;padding-top:25px}.journey-track{position:absolute;top:49px;height:2px;background:var(--line);left:8%;right:8%}.journey-stages{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;position:relative}.stage{background:transparent;border:0;display:flex;align-items:center;flex-direction:column;gap:7px;padding:0 5px;min-height:105px}.stage:hover{background:transparent}.stage .num{display:flex;align-items:center;justify-content:center;width:46px;height:46px;border-radius:50%;background:var(--bg);border:6px solid var(--panel);font-size:13px;font-weight:600}.stage[aria-pressed=true] .num{background:var(--brand);color:white}.stage .stage-title{font-size:12px;font-weight:600;line-height:1.35;text-align:center}.stage .stage-owner{font-size:10px;color:var(--muted);line-height:1.4}.stage[aria-pressed=true] .stage-title{color:var(--brand)}#traveller{position:absolute;left:10%;top:0;transform:translateX(-50%);font-size:23px;transition:left 1s ease-in-out;z-index:2}#journey-detail{font-size:12px;line-height:1.5;min-height:43px;margin-top:13px;padding:12px 15px;background:var(--brand-soft);border-radius:10px}.route-note{font-size:10px;color:var(--muted);line-height:1.5;margin-top:10px}.gaps{padding:24px;margin-top:18px}.gaps-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px;margin-top:23px}.gap{border-left:3px solid #edbb71;padding-left:13px}.gap h3{font-size:13px}.gap p{font-size:12px;color:var(--muted);margin-top:6px}.gaps .outline{font-size:12px}footer{margin-top:20px;font-size:10px;color:var(--muted);line-height:1.6;display:grid;gap:8px}footer summary{cursor:pointer}footer details p{max-width:1000px;margin-top:8px}.play-pulse{animation:pulse 1.2s ease-in-out 2}@keyframes pulse{50%{box-shadow:0 0 0 12px #477fff25}}@media(min-width:1500px){.map{height:420px}}@media(max-width:1050px){#app{padding:18px}.workspace{grid-template-columns:minmax(0,1fr) 310px}.top{padding:24px}h1{font-size:29px}.day{padding:12px 10px}.day .label{font-size:10px}.map-toolbar{padding:14px}.map-note,.point-detail{padding-left:14px;padding-right:14px}.unplaced{padding-left:14px;padding-right:14px}}@media(max-width:800px){.workspace{grid-template-columns:1fr}.operations{display:grid;grid-template-columns:1fr 1fr;column-gap:22px}.operations>h3,.roles,.role-detail{grid-column:1}.schedule-head,.schedule,.day-result{grid-column:2}.schedule-head{grid-row:1;margin:0;padding:0;border:0}.schedule{grid-row:2/4;margin-top:0}.day-result{grid-row:4}.role-detail{min-height:0}.map{height:390px}.day-heading{align-items:start}.day-heading h2{font-size:22px}.day-heading .primary{margin-top:5px}.gaps-list{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:550px){#app{padding:10px}.top{padding:20px;border-radius:15px;display:block}h1{font-size:27px;letter-spacing:-.7px}.top .outline{margin-top:15px;font-size:11px}.eyebrow{font-size:9px;letter-spacing:1px}.days{grid-template-columns:repeat(4,minmax(0,1fr));gap:5px;margin-top:12px}.day{padding:9px 8px;gap:3px}.day .date{font-size:18px}.day .weekday{font-size:9px;margin-left:3px}.day .label{font-size:9px}.day-heading{display:block;padding:20px 2px 16px}.day-heading .primary{margin-top:13px}.day-heading p{font-size:12px}.map{height:330px}.map-toolbar h3{font-size:14px}.map-actions button{font-size:10px}.map-note{font-size:10px;align-items:start}.pin .pin-label{display:none}.pin .letter{font-size:17px}.pin{padding:7px;min-width:44px;justify-content:center}.map.offline .pin .pin-label{display:block}.point-title{align-items:start}.point-title span{max-width:100px;text-align:right}.operations{display:block;padding:18px}.schedule-head{margin-top:18px;padding-top:18px;border-top:1px solid var(--line)}.schedule{margin-top:12px}.journey{padding:18px 15px}.section-head{display:block}.section-head button{margin-top:13px}.journey h2,.gaps h2{font-size:20px}.journey-stages{grid-template-columns:1fr;gap:5px}.stage{flex-direction:row;min-height:50px;justify-content:flex-start;padding:0;gap:10px;text-align:left}.stage .num{width:40px;height:40px;flex:none}.stage .stage-title{text-align:left;min-width:0;flex:1}.stage .stage-owner{max-width:85px;text-align:right}.journey-track{top:20px;bottom:23px;height:auto;left:19px;width:2px;right:auto}.journey-line{padding-top:0;margin-top:18px}#traveller{display:none}#journey-detail{margin-top:15px}.gaps{padding:18px}.gaps-list{grid-template-columns:1fr;gap:18px}.map.offline #pins{gap:10px}.map-state{font-size:11px}.top p{font-size:11px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}@media print{body{background:#fff}.top{background:#fff;color:#182130;border:1px solid #ddd}.top p,.top .eyebrow{color:#667184}.days,.primary,.map-actions,.top .outline{display:none}#app{padding:0}.workspace{grid-template-columns:1fr}.map{height:350px}.operations{break-inside:avoid}.journey{break-inside:avoid}.gaps[hidden]{display:block}footer{font-size:9px}}

#transfer-line{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:1}#transfer-line path{stroke:#477fff;stroke-width:3;stroke-dasharray:8 7;fill:none}#transfer-line circle{fill:#efb648;stroke:white;stroke-width:3;transition:cx 1s,cy 1s}.map.offline #transfer-line{display:none}.pin.area-pin{border-style:dashed}.pin.office-pin{background:#237a64}.pin.office-pin.selected{background:var(--brand)}@media(min-width:551px){.pin .pin-label{display:none}.pin:hover .pin-label,.pin.selected .pin-label{display:block}}
