:root{
  font-family:"Yu Gothic UI","Hiragino Kaku Gothic ProN",Meiryo,system-ui,sans-serif;
  font-size:15px;line-height:1.55;color:#2A3148;background:var(--canvas);
  --ink:#1B2440;
  --brand-action:#2C3D66;
  --brand-blue:#34548C;
  --brand-accent:#E39B6B;
  --brand-cream:#F4F1EB;
  --muted:#5B6478;
  --canvas:#F8F9FB;
  --tint:#F1F3F7;
  --selected:#E6EAF1;
  --line:#DCE0E8;
  --control-line:#C9D0DC;
}
*{box-sizing:border-box}
html,body,#app{height:100%;min-height:0}
body{margin:0;overflow:hidden}
button,input,select,textarea{font:inherit}
button,.button{display:inline-flex;align-items:center;justify-content:center;gap:.35rem;border:1px solid var(--control-line);background:white;border-radius:8px;color:var(--ink);padding:.48rem .78rem;cursor:pointer;text-decoration:none;font-weight:600;line-height:1.45}
button:hover,.button:hover{background:var(--tint);border-color:var(--brand-blue)}
button:disabled{opacity:.55;cursor:wait}
button.primary,.button.primary{background:var(--brand-action);color:white;border-color:var(--brand-action)}
button.primary:hover,.button.primary:hover{background:var(--ink)}
button.danger{color:#923d34}
:focus-visible{outline:3px solid var(--brand-blue);outline-offset:2px}
.visit[draggable=true]{cursor:grab}
.visit[data-cmd="visit"]{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}
.visit.dragging{opacity:.45;cursor:grabbing}
.touch-drag-help{display:none}
@media(any-pointer:coarse){.touch-drag-help{display:inline}}
.day-col.drop-target{background:var(--selected);box-shadow:inset 0 0 0 3px var(--brand-blue)}
.time-scroll{overflow:auto;max-height:680px}
.time-board{display:grid;grid-template-columns:56px repeat(var(--lanes),minmax(180px,1fr));min-width:calc(56px + var(--lanes)*180px)}
.time-corner,.lane-head{position:sticky;top:0;z-index:3;padding:.7rem .5rem;background:var(--tint);border:1px solid var(--line);font-size:.86rem}
.lane-head{font-size:1.05rem}
.time-corner{left:0;z-index:4}
.time-scale{position:sticky;left:0;background:white;z-index:2;border-right:1px solid var(--line)}
.time-scale span{position:absolute;left:4px;font-size:.72rem;color:var(--muted)}
.time-lane{position:relative;border-right:1px solid var(--line);background:repeating-linear-gradient(to bottom,var(--canvas) 0px,var(--canvas) 59px,var(--line) 59px,var(--line) 60px)}
.time-lane.drop-target{background-color:var(--selected);box-shadow:inset 0 0 0 2px var(--brand-blue)}
.time-card{position:absolute;left:4px;right:4px;z-index:1}
.time-card .visit{height:100%;min-height:0;margin:0;overflow:hidden;padding:.2rem .4rem;gap:0;display:block;line-height:1.2}
.time-card .visit b,.time-card .visit-time{display:block;font-size:.78rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.time-card .visit small{display:block;font-size:.68rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.time-card .visit .badge,.time-card .visit .reason{display:none}
.drop-indicator{position:absolute;left:0;right:0;z-index:5;border-top:3px solid var(--brand-action);color:var(--brand-action);font-weight:700;font-size:.8rem;background:var(--tint);pointer-events:none}
.untimed{padding:.75rem}.untimed-list{display:flex;gap:.5rem;flex-wrap:wrap}.untimed-list .visit{width:220px}
input,select,textarea{width:100%;border:1px solid var(--control-line);border-radius:7px;padding:.5rem .56rem;background:white;color:var(--ink);min-width:0}
input[type=checkbox],input[type=radio]{width:1.1rem;height:1.1rem;flex-shrink:0;accent-color:var(--brand-action)}
label{font-weight:600}
label.field{display:grid;gap:.25rem;font-size:.89rem;align-content:start}
label.field small,.help,small{font-weight:400;color:var(--muted);font-size:.82rem}
h1,h2,h3,p{margin:0}
h1{font-size:clamp(1.55rem,3.2vw,2.15rem);line-height:1.3;color:var(--ink);letter-spacing:.025em}
h2{font-size:1.2rem}h3{font-size:1rem}
fieldset{min-width:0;margin:0;padding:.8rem;border:1px solid var(--line);border-radius:9px}
legend{font-weight:700;font-size:.9rem;color:var(--ink)}
.loading{padding:2rem}.shell{height:100dvh;min-height:0;display:flex;flex-direction:column}
.topbar,.navigation{flex-shrink:0}
.topbar{background:var(--brand-cream);color:var(--ink);border-bottom:1px solid var(--line);padding:.85rem clamp(1rem,4vw,3.6rem);display:flex;align-items:center;justify-content:space-between;gap:.8rem}
.brand{display:flex;flex:none;align-items:center;gap:.45rem;white-space:nowrap;color:var(--ink)}
.mark{width:2.15rem;height:2.15rem;display:block;flex:none}
.wordmark{font:700 1.4rem/1.15 system-ui,sans-serif;letter-spacing:-.02em}
.account{display:flex;align-items:center;min-width:0;gap:.75rem;font-size:.88rem}
.account>span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.topbar button{flex:none;background:transparent;font-size:.8rem;padding:.34rem .62rem}
.navigation{display:flex;gap:.25rem;padding:.2rem clamp(.65rem,4vw,3.6rem) 0;background:white;border-bottom:1px solid var(--line);overflow:auto}
.navigation button{border:0;padding:.8rem .8rem;border-radius:0;border-bottom:3px solid transparent;color:var(--muted);white-space:nowrap}
.navigation button.active{color:var(--ink);background:var(--canvas);border-color:var(--brand-accent)}
.wrap{max-width:1560px;width:100%;min-height:0;flex:1;overflow-y:auto;scrollbar-gutter:stable;margin:0 auto;padding:1.6rem clamp(.9rem,4vw,3.6rem) 3rem}
.heading,.section-head,.bar,.buttons,.filters,.inline,.stats{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap}
.heading,.section-head,.bar{justify-content:space-between}
.heading{margin-bottom:1.2rem;align-items:flex-end}.eyebrow{color:var(--brand-blue);font-size:.72rem;text-transform:uppercase;letter-spacing:.12em;font-weight:700;margin-bottom:.28rem}
.section-head{margin:0 0 .8rem}.subtle{color:var(--muted);font-size:.87rem;margin-top:.25rem}
.panel{background:white;border:1px solid var(--line);border-radius:14px;padding:1.12rem;margin:0 0 1rem;box-shadow:0 2px 7px #1b244009}
.panel.schedule{padding:0;overflow:hidden}.schedule>.bar,.schedule>.filters{padding:.8rem 1rem;border-bottom:1px solid var(--line)}
.stats{margin-bottom:1rem;align-items:stretch;gap:.6rem}.stat{flex:1;min-width:105px;background:#fff;border:1px solid var(--line);border-radius:11px;padding:.63rem .9rem;color:var(--muted);font-size:.8rem}
.stat b{font-size:1.28rem;color:var(--ink);display:block}
.stat.alert{background:#fff8eb;border-color:#e8d4aa}
.badge{display:inline-block;font-size:.75rem;padding:.12rem .48rem;border-radius:20px;background:var(--selected);color:var(--ink);white-space:nowrap}
.badge.warn{background:#fff0d2;color:#794616}.badge.grey{background:var(--tint);color:var(--muted)}
.segmented{display:flex;gap:.16rem;flex-wrap:wrap;align-items:center;background:var(--tint);border-radius:8px;padding:.18rem}
.segmented button{font-size:.87rem;border:0;background:transparent;padding:.35rem .6rem}
.segmented button.active{background:white;box-shadow:0 1px 4px #1b244025}
.filters input,.filters select,.inline input,.inline select{width:auto;max-width:100%}
.filters label{display:flex;align-items:center;gap:.4rem;font-size:.84rem}.range-title{font-weight:700}
.week-scroll{overflow-x:auto}.week-grid{min-width:900px;display:grid;grid-template-columns:repeat(7,minmax(125px,1fr))}
.day-col{padding:.65rem .45rem .9rem;min-height:180px;border-right:1px solid var(--line)}
.day-col:last-child{border-right:0}.day-head{margin-bottom:.65rem;font-size:.86rem;font-weight:700;padding:0 .2rem}.day-col.today{background:var(--tint)}
.visit{width:100%;text-align:left;display:flex;align-items:flex-start;flex-direction:column;gap:.16rem;border:1px solid var(--control-line);border-left:4px solid var(--brand-blue);background:var(--canvas);border-radius:8px;padding:.5rem;margin-bottom:.42rem;white-space:normal;overflow-wrap:anywhere}
.visit b{line-height:1.3}.visit small{color:var(--muted)}.visit-time{font-size:.82rem;color:var(--brand-action);font-weight:700}
.visit.open{border-color:#efd7ac;border-left-color:#c28c36;background:#fffaed}
.visit.cancelled{border-color:var(--line);border-left-color:#8D93A3;background:var(--tint);color:var(--muted)}
.reason{font-size:.76rem;color:#78451b}
.visit-change{margin-top:.22rem;padding:.23rem .42rem;border-radius:5px;background:#fff4dd;color:#714426;font-size:.84rem}
.release-updates{list-style:none;margin:0;padding:0}.release-updates li{padding:.58rem 0;border-top:1px solid var(--line)}.release-updates li:first-child{border-top:0}
.empty{text-align:center;padding:1.7rem .8rem;color:var(--muted)}
.list{display:grid;gap:.5rem}.list .visit{margin:0;padding:.7rem .8rem}.daily{padding:1rem}
.daily-group{margin-bottom:.9rem}.daily-group h3{margin-bottom:.4rem}.daily-group:last-child{margin:0}
.calendar{min-width:720px;display:grid;grid-template-columns:repeat(7,minmax(96px,1fr))}
.calendar .weekday{background:var(--tint);text-align:center;font-size:.85rem;padding:.35rem}.calendar .cell{border:solid var(--line);border-width:0 1px 1px 0;min-height:92px;padding:.35rem}
.calendar .cell.muted{background:var(--canvas)}.cell .visit{font-size:.8rem}.cell .visit small{display:none}
.table-scroll{overflow:auto;max-height:65dvh;scrollbar-gutter:stable}.data{border-collapse:collapse;width:100%;font-size:.9rem}.data th,.data td{text-align:left;border-bottom:1px solid var(--line);padding:.56rem;vertical-align:middle}.data th{color:var(--muted);font-size:.8rem;background:var(--tint);position:sticky;top:0;z-index:1}
.data td.wraptext{overflow-wrap:anywhere}.data .compact{font-size:.8rem;padding:.32rem .5rem}
.building-filters{align-items:end}
.building-filters .field:first-child{flex:1;min-width:min(100%,14rem)}
.data button.building-name{border:0;padding:.25rem .15rem;background:none;text-align:left;color:var(--brand-action)}
.data button.building-name:hover{text-decoration:underline}
.building-residents{max-height:14rem;overflow:auto;display:grid;gap:.15rem;margin-top:.5rem}
.building-resident{padding:.25rem .35rem;border-bottom:1px solid var(--line)}
.building-resident[hidden]{display:none}
.building-resident small{color:var(--muted)}
.stack{display:grid;gap:.75rem}.grid2,.grid3{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.68rem}.grid3{grid-template-columns:repeat(3,minmax(0,1fr))}
.check{display:inline-flex;align-items:center;gap:.35rem;font-size:.88rem}.checks{display:flex;gap:.55rem 1rem;flex-wrap:wrap}
.shiftline{display:grid;grid-template-columns:4.6rem repeat(4,minmax(4.2rem,1fr));gap:.35rem;align-items:center;margin:.2rem 0}
.shiftline input{padding:.34rem}.shiftline small{font-size:.72rem}
dialog{width:min(650px,calc(100vw - 1.2rem));max-height:min(88vh,900px);overflow-y:auto;padding:0;border:1px solid var(--control-line);border-radius:14px;color:inherit;box-shadow:0 15px 60px #1b24403b}
dialog::backdrop{background:#1b244080}
.dialog-top,.dialog-foot{background:white;position:sticky;z-index:1;display:flex;align-items:center;justify-content:space-between;gap:.55rem;padding:.8rem 1rem}
.dialog-top{top:0;border-bottom:1px solid var(--line)}.dialog-foot{bottom:0;border-top:1px solid var(--line);justify-content:flex-end;flex-wrap:wrap}
.dialog-body{padding:1rem}.dialog-top .close{border:0;font-size:1.15rem;padding:.2rem .45rem}
.notice,.error{background:#fff0e7;color:#823c26;border:1px solid #edbeac;border-radius:8px;padding:.65rem .85rem;font-size:.9rem;white-space:pre-line}
.notice{z-index:5;position:fixed;bottom:1.25rem;right:1.25rem;max-width:min(520px,90vw);background:var(--brand-action);color:white;border:0;box-shadow:0 4px 18px #1b244025}
.notice[hidden],.error[hidden]{display:none}
.login-wrap{display:grid;place-items:center;height:100dvh;overflow-y:auto;padding:1rem;background:radial-gradient(ellipse at 5% 10%,var(--selected),transparent 60%),var(--brand-cream)}
.login-card{width:min(420px,100%);padding:2rem;background:#fff;border:1px solid var(--line);border-top:3px solid var(--brand-accent);border-radius:18px;box-shadow:0 15px 45px #1b244018}
.login-card .brand{margin-bottom:1.8rem}.login-card .mark{width:2.75rem;height:2.75rem}.login-card h1{font-size:1.55rem;margin-bottom:1.4rem}.login-card button.primary{margin-top:.5rem}
.staff-header{background:var(--tint)}.staff-header .bar{gap:1rem}.agenda{border-left:2px solid var(--control-line);margin-left:.45rem;padding-left:.85rem}.agenda .visit{padding:.8rem}
.csv-preview{padding:.7rem;background:var(--canvas);border-radius:8px}
.review-diff .table-scroll{max-height:38vh;border:1px solid var(--line);border-radius:8px}
.review-diff .data th{position:sticky;top:0}
.review-diff .data td{vertical-align:top;overflow-wrap:anywhere}
.review-diff .buttons{justify-content:flex-end;margin-top:.5rem}
@media(max-width:800px){.topbar{padding:.7rem .9rem}.wrap{padding-top:1.05rem}.account{gap:.38rem}.panel{padding:.85rem}.week-grid{min-width:860px}.navigation{padding-left:.35rem}.navigation button{padding:.67rem .62rem}.heading .buttons{width:100%}.heading button{flex:1}.stat{min-width:85px;padding:.5rem}.dialog-body{padding:.8rem}}
@media(max-width:540px){.wordmark{font-size:1.2rem}.account>span{max-width:90px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.grid3{grid-template-columns:repeat(2,minmax(0,1fr))}.shiftline{grid-template-columns:2.5rem repeat(4,minmax(0,1fr));gap:.16rem}.shiftline input[type=time]{font-size:.74rem;padding:.15rem 0}.shiftline small{font-size:.64rem}.dialog-top,.dialog-foot{padding:.55rem .75rem}.account button{font-size:.75rem}.stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.navigation button{font-size:.85rem}.filters{gap:.5rem}.panel.schedule .bar{gap:.7rem}.dialog-body .grid2{gap:.55rem}.heading{margin-bottom:.75rem}}

/* Travel diagnostics remain readable alongside cancellation and drag states. */
.visit.travel-white{background:#fff;border-color:#cbd5df;color:#172b3a}
.visit.travel-yellow{background:#fff1ab;border-color:#d5a21b;color:#493a00}
.visit.travel-red{background:#ffe0e0;border-color:#d74848;color:#6d1515}
.visit.travel-unknown{background:#edf0f4;border-color:#94a3b8;color:#425166}
.travel-note{display:block;font-size:.68rem;line-height:1.35;white-space:normal}
.travel-legend{padding:.5rem 1rem;font-size:.8rem;color:#526577}
.travel-legend .red{color:#aa2323}.travel-legend .yellow{background:#fff1ab;color:#705100}
.free-gap{position:absolute;left:3px;right:3px;background:#dff3ff;border:1px dashed #64b8e0;border-radius:6px;z-index:0;pointer-events:none;overflow:hidden;padding:8px;color:#205671;font-size:.8rem}
.free-gap small{display:block;margin-top:5px}.time-card{z-index:1}
dialog:has(.transport-calendar){width:min(860px,calc(100vw - 1.2rem))}
.transport-calendar{min-width:0}
.transport-calendar [data-mode="car"]{--band:#dceaff;--band-border:#779bc8;--band-ink:#204777}
.transport-calendar [data-mode="motorbike"]{--band:#ffe8cb;--band-border:#d89b5c;--band-ink:#783b15}
.transport-calendar [data-mode="train"]{--band:#eae2f9;--band-border:#a78ac6;--band-ink:#553875}
.transport-calendar [data-mode="bus"]{--band:#dff0dc;--band-border:#83aa7d;--band-ink:#285e35}
.transport-calendar [data-mode="bicycle"]{--band:#fae3ef;--band-border:#c98aaa;--band-ink:#7c365c}
.transport-week-tools,.transport-legend{display:flex;align-items:center;flex-wrap:wrap;gap:.35rem .7rem;margin:.25rem 0 .55rem}
.transport-week-tools .help{margin:0}
.transport-week-tools button,#transport-period-editor button{font-size:.82rem;padding:.3rem .55rem}
.transport-legend{gap:.3rem .45rem}
.transport-legend span{display:inline-flex;align-items:center;gap:.3rem;background:var(--band);color:var(--band-ink);border:1px solid var(--band-border);border-radius:5px;padding:.14rem .4rem;font-size:.76rem;font-weight:700}
.transport-legend svg{width:1.1rem;height:1.1rem}
.transport-week-scroll{max-height:min(54dvh,28rem);overflow:auto;border:1px solid var(--control-line);border-radius:7px;background:var(--canvas)}
.transport-week-grid{--transport-hour-height:1.95rem;display:grid;grid-template-columns:3.5rem repeat(7,minmax(3.75rem,1fr));min-width:30rem}
.transport-week-grid.is-full-day{--transport-hour-height:2.35rem}
.transport-week-head{position:sticky;top:0;z-index:3;padding:.28rem .2rem;background:var(--tint);border-right:1px solid var(--line);border-bottom:1px solid var(--control-line);text-align:center;font-size:.83rem;font-weight:700}
.transport-week-head:first-child{left:0;z-index:4}
.transport-week-scale,.transport-week-day{position:relative;height:calc(var(--transport-hours)*var(--transport-hour-height));border-right:1px solid var(--line)}
.transport-week-scale{position:sticky;left:0;z-index:2;background:var(--canvas)}
.transport-week-scale span{position:absolute;right:.35rem;font-size:.72rem;line-height:1.2;font-variant-numeric:tabular-nums}
.transport-week-scale span:last-child{transform:translateY(-100%)}
button.transport-slot{display:block;width:100%;height:calc(100% / var(--transport-hours));border:0;border-bottom:1px solid var(--line);border-radius:0;padding:0;background:none;color:var(--brand-action);font-size:0}
button.transport-slot:is(:hover,:focus-visible){background:var(--selected);font-size:1.08rem;outline-offset:-2px}
button.transport-band{position:absolute;left:3px;right:3px;display:flex;flex-direction:column;justify-content:flex-start;align-items:center;gap:.14rem;padding:.25rem .1rem;overflow:hidden;background:var(--band,var(--tint));border:1px solid var(--band-border,var(--control-line));border-left-width:3px;color:var(--band-ink,var(--ink));border-radius:5px;font-size:.72rem;line-height:1.16;text-align:center}
button.transport-band:hover{filter:brightness(.96);border-color:var(--band-ink)}
button.transport-band{cursor:grab;touch-action:none;user-select:none}
button.transport-band.transport-dragging{cursor:grabbing;z-index:2;opacity:.82}
button.transport-band.transport-overlap{outline:2px solid #b33835;outline-offset:-2px}
.transport-grip{position:absolute;left:0;right:0;height:min(8px,28%);cursor:ns-resize}
.transport-grip[data-transport-edge="start"]{top:0}
.transport-grip[data-transport-edge="end"]{bottom:0}
.transport-grip::after{content:"";position:absolute;top:50%;left:50%;width:min(1.1rem,40%);height:2px;transform:translate(-50%,-50%);border-radius:2px;background:currentColor;opacity:.55}
.transport-drag-preview{position:fixed;z-index:5;padding:.25rem .55rem;border-radius:5px;background:var(--ink);color:white;font-size:.78rem;pointer-events:none}
.transport-band svg{width:1.35rem;height:1.35rem;flex:none}
.transport-band small{font-size:.68rem;white-space:nowrap}
button.transport-band.is-compact{justify-content:center;padding:0}
.transport-band.is-compact small,.transport-band.is-short span,.transport-band.is-short small{display:none}
button.transport-band.is-short{justify-content:center;padding:0}
.transport-band.is-short svg{width:1.05rem;height:min(1.05rem,100%)}
#transport-period-editor:not([hidden]){display:grid;gap:.6rem;margin-top:.7rem;padding:.75rem;border:1px solid var(--control-line);border-radius:7px;background:var(--canvas)}
.transport-period-fields{display:grid;grid-template-columns:.8fr 1fr 1fr 1.5fr;gap:.5rem}
@media(max-height:760px){
  .transport-week-grid{--transport-hour-height:1.75rem}
  .transport-week-grid.is-full-day{--transport-hour-height:2.15rem}
  .transport-band.is-compact{flex-direction:row;gap:.15rem}
  .transport-band.is-compact svg{width:1.1rem;height:1.1rem}
}
@media(max-width:560px){.transport-period-fields{grid-template-columns:repeat(2,minmax(0,1fr))}}

.companion-card:after{content:"同行";position:absolute;right:4px;top:2px;padding:1px 4px;background:#e3e8ef;color:#39485c;border-radius:3px;font-size:.65rem;pointer-events:none}
.source-badge{display:inline-block;vertical-align:middle;border-radius:4px;padding:0 .3em;background:var(--selected);color:var(--brand-action);font-size:.72rem;white-space:nowrap}
.visit.pdf-record{background:#f1f3f8;border-color:#c4cad6;border-left-color:#687791}
.pdf-record .source-badge{background:#dde4f3;color:#334566}
.team-note{font-size:.74rem;color:#5f4324}
.time-card .source-badge{font-size:.64rem}

/* The time and client stay together when several visits fit on one screen. */
.schedule .visit{min-width:0;gap:.08rem;padding:.32rem .43rem;margin-bottom:.28rem;border-radius:5px;line-height:1.25}
.schedule .visit b{font-size:.89rem;line-height:1.25}
.schedule .visit-time,.time-scale,.staff-week-scale{font-variant-numeric:tabular-nums}
.schedule .visit-time{font-size:.78rem;line-height:1.2}
.schedule .visit small,.schedule .team-note,.schedule .reason{font-size:.72rem;line-height:1.3}
.schedule .visit .badge,.schedule .source-badge{font-size:.67rem;line-height:1.35}
.schedule .visit .travel-note{display:block;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.schedule .visit.pdf-record{border-left:4px double #647591}
.schedule .visit.role-unconfirmed{border-top-style:dashed;border-bottom-style:dashed}
.schedule .daily{padding:.65rem .8rem}
.daily-group h3{display:flex;align-items:center;gap:.4rem}
.daily-group .list{grid-template-columns:repeat(auto-fill,minmax(min(100%,15rem),1fr));gap:.3rem}
.daily-group .list .visit{margin:0;justify-content:start}
.schedule .day-col{padding:.32rem .32rem .55rem}
.schedule .day-head{margin-bottom:.25rem}
.schedule .calendar .cell{min-height:76px;padding:.22rem}
.schedule .calendar .cell>.visit{margin:.1rem 0}
.schedule .calendar .cell .visit b{font-size:.79rem}
.schedule .calendar .cell .visit-time{font-size:.73rem}
.schedule .calendar .cell .visit .travel-note{display:none}
.schedule .time-card .visit{display:block;margin:0;padding:.1rem .28rem;line-height:1.1}
.schedule .time-card .visit-time,.schedule .time-card b{font-size:.77rem;line-height:1.15}
.schedule .time-card .visit small{line-height:1.15;font-size:.68rem}
.schedule .time-card:focus-within{z-index:3}

/* Compare a full week per staff member within the remaining viewport. */
.shell:has(.staff-week-schedule) .topbar{padding:.3rem .8rem}
.shell:has(.staff-week-schedule) .mark{width:1.7rem;height:1.7rem}
.shell:has(.staff-week-schedule) .navigation{padding:0 .35rem}
.shell:has(.staff-week-schedule) .navigation button{padding:.28rem .65rem;font-size:.83rem}
.wrap:has(.staff-week-schedule){display:flex;flex-direction:column;gap:.3rem;max-width:none;padding:.4rem .55rem .45rem;scrollbar-gutter:auto}
.schedule.staff-week-schedule{flex:1;min-height:0;display:flex;flex-direction:column;margin:0;border-radius:7px;overflow:visible}
.schedule.staff-week-schedule>.bar,.schedule.staff-week-schedule>.filters,.staff-week-toolbar{padding:.22rem .45rem;gap:.35rem;flex:none}
.schedule.staff-week-schedule .travel-legend{padding:.12rem .5rem;font-size:.69rem}
.staff-week-toolbar{display:flex;align-items:center;flex-wrap:wrap;border-bottom:1px solid var(--line)}
.staff-week-toolbar>label{display:flex;align-items:center;gap:.25rem;font-size:.77rem}
.staff-week-toolbar select{width:auto;max-width:13rem}
.staff-week-toolbar button,.staff-week-toolbar input,.staff-week-toolbar select,.schedule.staff-week-schedule .filters select,.schedule.staff-week-schedule input[type=date]{padding:.2rem .38rem;font-size:.78rem}
.staff-week-picker{position:relative;font-size:.8rem}
.staff-week-picker summary{cursor:pointer;color:var(--ink);padding:.15rem .5rem;background:var(--canvas);border:1px solid var(--control-line);border-radius:5px;font-weight:600}
.staff-week-picker[open]{z-index:12}
.staff-week-picker>div,.staff-week-picker>fieldset,.staff-week-picker>ul{
  position:absolute;top:100%;left:0;width:min(26rem,88vw);max-height:min(45dvh,23rem);overflow:auto;
  border:1px solid var(--control-line);border-radius:6px;background:#fff;padding:.55rem;margin:3px 0 0;box-shadow:0 5px 18px #1b244038;
}
.staff-week-controls{display:flex;align-items:center;flex-wrap:wrap;gap:.3rem .65rem}
.staff-week-controls label{display:inline-flex;align-items:center;gap:.2rem;font-size:.79rem}
.staff-week-controls input[type=checkbox]{margin:0}
.staff-week-tiles{
  --tile-gap:.35rem;
  flex:1;min-height:0;min-width:0;display:grid;gap:var(--tile-gap);padding:.25rem;
  grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:repeat(2,minmax(0,1fr));
}
.staff-week-tiles:not(:has(>.staff-week-panel:nth-child(3))){grid-template-rows:minmax(0,1fr)}
.staff-week-tiles:not(:has(>.staff-week-panel:nth-child(2))){grid-template-columns:minmax(0,1fr)}
.staff-week-tiles:has(>.staff-week-panel:nth-child(5)){grid-template-columns:repeat(3,minmax(0,1fr))}
.staff-week-tiles:has(>.staff-week-panel:nth-child(7)){grid-template-rows:none;grid-auto-rows:calc((100% - .5rem - var(--tile-gap))/2);overflow-y:auto}
.staff-week-panel{min-width:0;min-height:0;display:flex;flex-direction:column;border:1px solid var(--control-line);border-radius:5px;overflow:hidden}
.staff-week-tiles.daily-tiles{display:flex;overflow:auto}
.daily-tiles .daily-panel{flex:1;min-width:calc(2.65rem + var(--day-count)*150px)}
.daily-panel .daily-grid{grid-template-columns:var(--week-axis-width) repeat(var(--week-lanes),minmax(0,1fr));grid-template-rows:2rem minmax(0,1fr)}
.daily-grid .daily-staff-head{background:var(--brand-action);color:white;font-size:1.05rem;font-weight:700}
.staff-week-heading{display:flex;align-items:center;gap:.35rem;flex:none;min-width:0;margin:0;padding:.18rem .55rem;background:var(--brand-action);color:white;font-size:1.05rem;line-height:1.35;font-weight:700}
.staff-week-heading>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.staff-week-heading small{color:var(--selected)}
.staff-week-grid{
  --week-axis-width:2.65rem;
  flex:1;min-height:0;min-width:0;display:grid;
  grid-template-columns:var(--week-axis-width) repeat(7,minmax(0,1fr));grid-template-rows:1.22rem minmax(0,1fr);
}
.staff-week-grid[data-end-gutter]{padding-bottom:14px}
.staff-week-axis-head,.staff-week-day{
  min-width:0;display:flex;align-items:center;justify-content:center;white-space:nowrap;overflow:hidden;
  font-size:.69rem;font-weight:600;font-variant-numeric:tabular-nums;line-height:1.1;border-right:1px solid var(--line);border-bottom:1px solid var(--control-line);background:var(--tint);color:var(--ink);
}
.staff-week-day[data-weekday="5"]{color:#255581;background:#eaf1f9}
.staff-week-day[data-weekday="6"]{color:#88414b;background:#f8eef0}
.staff-week-scale{position:relative;min-width:0;min-height:0;background:var(--canvas);color:var(--muted);border-right:1px solid var(--control-line)}
.staff-week-scale span{position:absolute;left:0;right:3px;line-height:1;text-align:right;font-size:.65rem;font-variant-numeric:tabular-nums}
.staff-week-scale span:last-child{transform:translateY(-100%)}
.staff-week-lane.time-lane{
  position:relative;min-width:0;min-height:0;
  background-color:var(--canvas);
  background-image:linear-gradient(to bottom,var(--control-line) 0 1px,transparent 1px 50%,var(--line) 50% calc(50% + 1px),transparent calc(50% + 1px));
  background-size:100% calc(100% / var(--week-hours,10));
}
.staff-week-lane.drop-target{box-shadow:inset 0 0 0 2px var(--brand-blue)}
.staff-week-lane .free-gap{left:0;right:0;padding:0 2px;font-size:.58rem;border-radius:2px;line-height:1.05}
.staff-week-lane .free-gap small{font-size:.56rem;line-height:1.05;margin:0}
.staff-week-card.time-card{left:1px;right:1px;min-width:0;border-radius:2px}
.schedule .staff-week-card .visit{
  position:relative;display:flex;flex-direction:column;align-items:stretch;justify-content:center;gap:0;min-height:100%;width:100%;
  padding:0 1px;border-width:1px;border-left-width:3px;border-radius:2px;line-height:1;white-space:nowrap;
}
.schedule .staff-week-card .visit-time{flex:none;font-size:.64rem;line-height:1.05;min-width:0;white-space:nowrap}
.schedule .staff-week-card .visit b{flex:none;min-width:0;line-height:1.1;white-space:nowrap;font-size:.77rem}
.schedule .staff-week-card .visit>.visit-time~:not(b){display:none}
.staff-week-card:is(.one-line,.split-card) .staff-week-end{display:none}
.schedule .visit.work-card,.visit.work-card{background:#eef0fc;border-color:#c8ceec;border-left-color:#6863a3}
.visit.work-card.cancelled{opacity:.55}
.schedule .staff-week-card.one-line .visit{
  flex-flow:row nowrap;align-items:center;justify-content:flex-start;gap:2px;
  padding:0 1px;border-left-width:2px;
}
.schedule .staff-week-card.one-line .visit-time{
  flex:none;max-width:5ch;overflow:hidden;text-overflow:clip;font-size:.65rem;line-height:1;
}
.schedule .staff-week-card.one-line .visit b{
  flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;font-size:.71rem;line-height:1;
}
.staff-week-card.companion-card:after{top:0;bottom:auto;right:0;font-size:.5rem;padding:0 1px}
.schedule .staff-week-card .visit.pdf-record,.schedule .staff-week-card.one-line .visit.pdf-record{border-left-style:double;border-left-width:4px}
.schedule .staff-week-card .visit.role-unconfirmed{border-top-style:dashed;border-bottom-style:dashed}
.visit.special-instruction,.schedule .visit.special-instruction{
  border-color:#7130a8;box-shadow:inset 0 0 0 1px #7130a8;
}
.instruction-badge{
  display:inline-block;margin-right:.18em;padding:0 .2em;border-radius:3px;
  font-size:.82em;line-height:1.15;font-weight:700;white-space:nowrap;
}
.short-mark{color:#00525f;background:#d3f3f4}
.multiple-mark{color:#663a08;background:#ffebc5}
.team-agenda{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,17rem),1fr));gap:.8rem;align-items:start;margin-top:.8rem}
.team-staff{min-width:0}
.team-help{padding:0 .9rem .6rem}
.team-slots{list-style:none;margin:0;padding:.3rem .8rem .8rem}
.team-slots li{display:flex;flex-wrap:wrap;gap:.3rem .7rem;padding:.5rem 0;border-top:1px solid #d9e1e8;overflow-wrap:anywhere}
.team-slots li span{font-variant-numeric:tabular-nums;white-space:nowrap}
@media(min-width:810px){
  /* The native title shows the full visit without growing the draggable hit target. */
  .schedule .staff-week-card .visit:is(:focus-visible,:hover){outline:1px solid var(--brand-blue);outline-offset:-1px}
}
@media(max-width:850px){
  .staff-week-tiles:has(>.staff-week-panel:nth-child(5)){grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:none;grid-auto-rows:calc((100% - .5rem - var(--tile-gap))/2);overflow-y:auto}
}
@media(max-width:600px){
  .wrap:has(.staff-week-schedule){padding:.25rem}
  .staff-week-tiles,.staff-week-tiles:has(>.staff-week-panel:nth-child(5)){
    grid-template-columns:minmax(0,1fr);grid-template-rows:none;grid-auto-rows:minmax(18rem,1fr);overflow:auto;
  }
  .staff-week-grid{--week-axis-width:2.3rem}
  .staff-week-picker>div{max-width:75vw}
}
