
:root{--ink:var(--hr-ink);--ink90:var(--hr-muted);--muted:var(--hr-muted);--line:var(--hr-line);
--bg:var(--hr-bg);--card:var(--hr-surface);--light:var(--hr-line);--light50:var(--hr-soft);--light10:var(--hr-soft);
--violet:var(--hr-folg-edge);--violet10:var(--hr-folg);--red:var(--hr-warn-ink);--red10:var(--hr-warn);--yellow:var(--hr-warn-ink);--yellow10:var(--hr-warn);
--pill:999px;--radius:var(--hr-r);--shadow:none}
*{box-sizing:border-box}[hidden]{display:none!important}
body{font-family:var(--hr-font);margin:0;background:var(--bg);color:var(--ink);line-height:1.4}
/* Toppfelt (eier 08.10: «lettere klinisk uttrykk», «minimer støy»): felles for Timebok, Journal og Lab i /clinical/shell.css */
#freshness{margin:0 0 0 auto;font-weight:600;font-size:.78rem}#freshness:empty{display:none}
#freshness.offline{color:var(--ink);background:var(--red10);border:1px solid var(--red);padding:.1rem .6rem;border-radius:var(--pill)}
main{padding:.5rem 1rem 2rem}
h2{font-size:1.25rem;margin:.25rem 0}h3{font-size:1.05rem;margin:.75rem 0 .5rem}
.card{background:var(--card);border-radius:var(--radius);padding:1.25rem;box-shadow:var(--shadow);max-width:40rem}
.bar{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap;margin:.5rem 0}
button,select,input{font:inherit;color:inherit;min-height:2.75rem}
button{padding:.4rem 1.1rem;border:1.5px solid var(--ink);background:var(--card);border-radius:var(--pill);cursor:pointer;font-weight:600}
button:hover:not(:disabled){background:var(--light10)}
button:disabled{opacity:.45;cursor:not-allowed}
button:focus-visible,select:focus-visible,input:focus-visible{outline:3px solid var(--violet);outline-offset:2px}
.primary{background:var(--ink);color:var(--card);border-color:var(--ink)}.primary:hover:not(:disabled){background:var(--ink90)}
.ghost{border-color:transparent;background:transparent}.ghost:hover:not(:disabled){background:var(--light10)}
.small{min-height:2.25rem;padding:.2rem .7rem;font-size:.85rem}
.danger{border-color:var(--red);color:var(--ink)}.danger:hover:not(:disabled){background:var(--red10)}
button[aria-pressed=true]{background:var(--light50);border-color:var(--ink)}
.primary[aria-pressed=true]{background:var(--ink90);color:var(--card)}
label{display:block;margin:.6rem 0 .25rem;font-weight:600;font-size:.9rem}label.inline{display:inline-flex;align-items:center;gap:.35rem;margin:0 .5rem 0 0;font-weight:500}
select,input{padding:.35rem .6rem;border:1.5px solid var(--light);border-radius:.6rem;background:var(--card);max-width:100%}
input[type=checkbox],input[type=radio]{min-height:auto;width:1.15rem;height:1.15rem;accent-color:var(--ink)}
fieldset{border:1px solid var(--line);border-radius:.75rem;margin:.75rem 0;padding:.5rem .9rem}legend{font-weight:600;padding:0 .35rem}
.hint{color:var(--ink90);font-size:.85rem;margin:.35rem 0}
.error{margin:.5rem 0;font-weight:600}.error:not(:empty){border-left:4px solid var(--red);background:var(--red10);padding:.4rem .6rem;border-radius:.4rem}
.error:empty,.banner:empty{display:none}
.banner{display:flex;align-items:center;gap:1rem;flex-wrap:wrap;border-radius:var(--radius);padding:.6rem 1rem;margin:0 0 .5rem}
.banner p{margin:0}.warn{background:var(--yellow10);border:1.5px solid var(--yellow)}p.warn{padding:.4rem .6rem;border-radius:8px;margin:.4rem 0}
p.banner.warn{font-weight:600}
.badge{display:inline-block;border-radius:var(--pill);padding:.1rem .65rem;font-size:.8rem;font-weight:600;margin:0}
.unverified{background:var(--yellow10);border:1px solid var(--yellow);color:var(--ink)}
.proposal{background:var(--violet10);border-left:4px solid var(--violet);padding:.4rem .6rem;border-radius:.4rem;font-weight:600}
.sr{position:absolute!important;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
/* Ramme: venstre kolonne + dagsplan */
.layout{display:grid;grid-template-columns:16rem minmax(0,1fr);gap:1rem;align-items:start}
.side{position:sticky;top:.5rem;max-height:calc(100vh - 1rem);overflow:auto;display:flex;flex-direction:column;gap:.75rem;background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);padding:.75rem}
.side .bar{margin:.5rem 0 0;gap:.4rem}.side input[type=date]{flex:1 1 7rem;min-width:0}
.side label:not(.inline){margin-top:0}.side select{width:100%}
.side .toggle{margin:.6rem 0 0}
.daynav{display:flex;align-items:center;justify-content:space-between;gap:.25rem;background:var(--ink);color:var(--card);border-radius:.75rem;padding:.35rem}
.icon{min-width:2.75rem;padding:0;border-color:transparent;background:transparent;color:inherit;font-size:1.5rem;line-height:1}
.daynav .icon:hover:not(:disabled){background:var(--ink90)}
#day-title{margin:0;text-align:center;line-height:1.15;outline-offset:4px}
#day-title .wd{display:block;font-size:1.35rem;font-weight:800}#day-title .wd::first-letter{text-transform:uppercase}
#day-title .dt{display:block;font-size:.85rem;font-weight:500}
.mc-head{display:flex;align-items:center;justify-content:space-between}.mc-head .icon{min-width:2.25rem;min-height:2.25rem;font-size:1.25rem}
#mc-title{font-weight:700;font-size:.95rem}#mc-title::first-letter{text-transform:uppercase}
.minical table{width:100%;border-collapse:collapse;table-layout:fixed;font-size:.8rem;text-align:center}
.minical th{font-weight:600;color:var(--ink90);font-size:.72rem;padding:.15rem 0}
.minical th.wk,.minical thead th:first-child{color:var(--ink90);font-weight:500;font-size:.68rem;border-right:1px solid var(--line)}
.minical td{padding:1px}
.minical .d{width:100%;min-height:1.9rem;padding:0;border:none;border-radius:50%;background:transparent;font-weight:500;font-variant-numeric:tabular-nums}
.minical .d.out{color:var(--ink90);opacity:.55}
.minical .d.today{background:var(--light10);box-shadow:inset 0 0 0 1.5px var(--light)}
.minical .d[aria-current=date]{background:var(--ink);color:var(--card);opacity:1}
.tabs{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--ink);border:1.5px solid var(--ink);border-radius:.75rem;overflow:hidden}
.tabs button{border:none;border-radius:0;padding:.35rem .4rem;font-size:.78rem;letter-spacing:.04em;text-transform:uppercase;min-height:2.5rem}
.days label.inline{margin:.15rem .5rem .15rem 0}
.tabs button[aria-pressed=true]{background:var(--ink);color:var(--card);box-shadow:inset 0 -3px 0 var(--light)}
#side-hint{font-size:.85rem}
.tabbody h3,dialog.inline h3{margin:.6rem 0 .25rem;font-size:1rem}
dialog.inline{position:static;display:block;margin:0;padding:0;width:100%;max-width:100%;inset:auto;border:none;background:transparent}
dialog.inline:not([open]){display:none}
dialog.inline .dialog-head{position:static;padding:.4rem 0 0;border:none;background:transparent}
.side input:not([type=checkbox]):not([type=radio]),.side select{width:100%}.side .bar input[type=date]{width:auto}
.pair{display:grid;grid-template-columns:1fr 1fr;gap:.5rem}
.freelist{list-style:none;margin:.25rem 0;padding:0;display:flex;flex-direction:column;gap:3px;max-height:22rem;overflow:auto}
.info:not(:empty){background:var(--light10);border:1px solid var(--light);border-radius:.5rem;padding:.4rem .6rem;font-size:.85rem;font-weight:600}
.plan{min-width:0}
#grid-wrap{overflow-x:auto;background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);padding:.5rem}
#grid{display:flex;gap:.5rem}
/* Én liste per behandler (som PriDoks «Dagsplan»): én rad per luke/time i tidsrekkefølge */
.column{flex:1 1 0;min-width:8rem}
.head{display:flex;align-items:center;gap:.45rem;padding:.3rem .25rem .45rem;border-bottom:2px solid var(--line);min-height:3.6rem}
.head h3{margin:0;font-size:.92rem;line-height:1.2;min-width:0}.head .sub,.head .count{display:block;font-weight:500;font-size:.75rem;color:var(--ink90)}
.head .count{font-variant-numeric:tabular-nums}
.column.own .head{background:var(--light10);border-radius:.6rem .6rem 0 0}
.avatar{flex:none;width:1.9rem;height:1.9rem;border-radius:50%;background:var(--light);color:var(--ink);display:inline-flex;align-items:center;justify-content:center;font-weight:700;font-size:.75rem;overflow:hidden}
.avatar img{width:100%;height:100%;object-fit:cover}
.body{list-style:none;margin:.35rem 0 0;padding:0;display:flex;flex-direction:column;gap:3px}
.slot{display:flex;flex-wrap:wrap;align-items:center;column-gap:.3rem;row-gap:.05rem;width:100%;min-height:2.25rem;padding:.2rem .35rem;border-radius:.45rem;border:1px solid transparent;
background:transparent;text-align:left;font-size:.82rem;font-weight:500;line-height:1.25}
.slot .time{flex:none;font-weight:700;font-variant-numeric:tabular-nums}
.slot .line{flex:1 1 3.5rem;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.slot strong{font-weight:700}
.slot .type{flex:0 1 auto;min-width:0;margin-left:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background:var(--light10);border-radius:var(--pill);padding:0 .45rem;font-size:.7rem;font-weight:600}
.slot .tag{flex:none;display:inline-block;background:var(--hr-warn);color:var(--hr-warn-ink);border-radius:var(--pill);padding:0 .4rem;font-size:.7rem;font-weight:700}
.slot.booked{background:var(--card);border-color:var(--line);border-left:4px solid var(--ink)}
.slot.free{color:var(--ink90);border:1px dashed var(--line)}.slot.free .time{font-weight:600}.slot.free .type{background:transparent;border:1px solid var(--line)}
.slot.blocked{background:var(--yellow10);border-color:var(--yellow);border-left:4px solid var(--yellow)}
.slot.cancelled{background:var(--red10);border-left:4px solid var(--red)}.slot.cancelled .line{text-decoration:line-through}
.slot.cancelled .type{background:var(--card)}
.slot .kind{flex:none;width:1rem;height:1rem;border-radius:.25rem;background:var(--light50);font-size:.68rem;font-weight:800;display:inline-flex;align-items:center;justify-content:center}
.slot.blocked .kind{background:var(--yellow)}
.body>li.withj{display:flex;align-items:stretch;gap:2px}.body>li.withj>.slot{flex:1 1 auto;min-width:0}
.jlink{flex:none;display:inline-flex;align-items:center;justify-content:center;width:1.6rem;border-radius:.45rem;color:var(--ink90)}
.jlink:hover{background:var(--light10)}.jlink:focus-visible{outline:3px solid var(--violet);outline-offset:1px}.jlink svg{width:1rem;height:1rem;fill:currentColor}
.hoverline{position:fixed;left:calc(var(--hr-rail,0px) + .5rem);bottom:.5rem;z-index:20;margin:0;max-width:min(40rem,calc(100vw - var(--hr-rail,0px) - 1rem));background:var(--ink);color:var(--card);border-radius:.4rem;padding:.2rem .6rem;font-size:.8rem;pointer-events:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.body>li.gap{height:.5rem;margin:.15rem .6rem;border-top:1px dashed var(--muted)}
.body>li.now-line{position:relative;height:2px;margin:1px 0;background:var(--red)}
.body>li.now-line::before{content:"";position:absolute;left:-1px;top:-3px;width:8px;height:8px;border-radius:50%;background:var(--red)}
.empty{color:var(--ink90);font-size:.85rem;padding:.4rem .25rem}
/* Panel fra høyre (ikke modal): kalenderen kan fortsatt brukes ved siden av */
dialog{border:none;color:var(--ink);background:var(--card)}
dialog.panel{position:fixed;inset:0 0 0 auto;margin:0;width:min(31rem,100vw);max-width:100vw;height:100%;max-height:none;overflow:auto;border-left:1px solid var(--line);
padding:0 1.5rem 1.5rem;box-shadow:-12px 0 40px rgba(37,30,76,.18);z-index:10;animation:slide .16s ease-out}
@keyframes slide{from{transform:translateX(1.5rem);opacity:0}to{transform:none;opacity:1}}
@media (prefers-reduced-motion:reduce){dialog.panel{animation:none}}
dialog.idle{margin:4rem auto auto;width:min(30rem,calc(100% - 2rem));border-radius:var(--radius);padding:1.25rem 1.5rem;border-top:6px solid var(--yellow);box-shadow:0 12px 40px rgba(37,30,76,.25)}
dialog.idle p{font-weight:600;margin:0 0 .5rem}dialog::backdrop{background:rgba(37,30,76,.35)}
.dialog-head{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;position:sticky;top:0;z-index:1;background:var(--card);padding:1rem 0 .25rem;border-bottom:1px solid var(--line)}
.dialog-head h2{margin:0 0 .35rem}
dialog.panel input:not([type=checkbox]):not([type=radio]),dialog.panel select{width:100%}
.kicker{margin:0;font-size:.72rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--ink90)}
.headbtns{display:flex;gap:.25rem;align-items:center}
.strip{display:flex;align-items:center;justify-content:space-between;gap:.5rem;flex-wrap:wrap;background:var(--light10);border:1px solid var(--light);border-radius:.6rem;padding:.35rem .6rem;margin:.75rem 0 .25rem;font-weight:600}
.strip p{margin:0}p.strip{display:block}
.actions.next{border-bottom:none;margin-top:0;padding-bottom:0}
.lastpat{margin:.5rem 0 0}.field{margin:.6rem 0}.flabel{display:block;font-weight:600;font-size:.9rem}
.buttonlink{display:inline-flex;align-items:center;min-height:2.75rem;padding:.4rem 1.1rem;border:1.5px solid var(--ink);border-radius:var(--pill);color:var(--ink);font-weight:600;text-decoration:none}
.buttonlink:hover{background:var(--light10)}.buttonlink:focus-visible{outline:3px solid var(--violet);outline-offset:2px}
.bookedby{display:flex;align-items:center;gap:.5rem;color:var(--ink90);font-size:.85rem;margin-top:1rem;border-top:1px solid var(--line);padding-top:.75rem}
.bookedby:empty{display:none}
.fieldstatus{font-weight:500;font-size:.75rem;color:var(--ink90);margin-left:.4rem}.fieldstatus.bad{color:var(--hr-warn-ink);font-weight:700}
.actions{display:flex;gap:.5rem;flex-wrap:wrap;margin:.75rem 0;padding-bottom:.75rem;border-bottom:1px solid var(--line)}
.form{margin-top:.25rem}
.choices{list-style:none;padding:0;margin:.35rem 0;display:flex;flex-direction:column;gap:.25rem}
.choices label{margin:0;font-weight:500;display:flex;gap:.5rem;align-items:center;padding:.35rem .6rem;border:1px solid var(--line);border-radius:.6rem;min-height:2.75rem}
.patient-search-tools{display:flex;align-items:baseline;justify-content:space-between;gap:.25rem}.identity-actions summary{cursor:pointer}
#patient-search-filter-toggle{min-height:0!important;padding:0!important;border:0;font-size:.7rem!important;line-height:1.2}
.patient-choice{display:flex;align-items:center;gap:.25rem;flex-wrap:wrap}.patient-choice label{flex:1;min-width:0;cursor:pointer}
.patient-name{flex:1;min-width:0}.identity-badge{font-size:.65rem;font-weight:600;background:var(--light10);padding:.05rem .25rem;border-radius:.3rem}
.identity-actions{font-size:.7rem}.identity-actions[open]{flex-basis:100%}.identity-actions button{margin:.1rem}
.quick{display:flex;gap:.35rem;flex-wrap:wrap;margin:.35rem 0}.quick button{min-height:2.25rem;padding:.2rem .8rem;font-size:.85rem}
.planlist li.busy{color:var(--ink90);text-decoration:line-through}
#next-rows fieldset{margin:.5rem 0}
.confirm.ok{border-color:var(--ink);background:var(--light10)}
.confirm{border:1.5px solid var(--red);background:var(--red10);border-radius:.75rem;padding:.5rem .9rem;margin:.5rem 0}.confirm p{margin:.25rem 0;font-weight:600}
.histwhat{font-weight:600;border-left:4px solid var(--red);background:var(--red10);padding:.4rem .6rem;border-radius:.4rem}
.toast{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap;background:var(--card);border-left:4px solid var(--violet);border-radius:var(--radius);box-shadow:0 1px 3px rgba(37,30,76,.12);padding:.5rem 1rem;margin:.5rem 0}
.toast p{margin:0;font-weight:600}.toast.bad{border-left-color:var(--red)}
.toggle{background:var(--light10);border-radius:var(--pill);padding:.3rem .8rem}
#next-result li.summary{font-weight:700}
@media (max-width:899.98px){.layout{grid-template-columns:minmax(0,1fr)}.side{position:static;display:grid;grid-template-columns:repeat(auto-fit,minmax(14rem,1fr));align-items:start}
.column{min-width:11rem}}
@media (max-width:40rem){main{padding:.5rem}}
/* ── Tetthet som PriDok (eier 08.10: «daglig drift»): ~12–13 px, én linje per time, tynne skillelinjer ── */
main{padding:.4rem .5rem 4rem}
.layout{grid-template-columns:13.5rem minmax(0,1fr);gap:.5rem}
.side{gap:.45rem;padding:.5rem;border-radius:.75rem;font-size:.85rem;top:.4rem;max-height:calc(100vh - 3.9rem)}
.side button,.side select,.side input:not([type=checkbox]):not([type=radio]),dialog.panel button,dialog.panel select,dialog.panel input:not([type=checkbox]):not([type=radio]){min-height:1.85rem;font-size:.82rem}
.side select,.side input:not([type=checkbox]):not([type=radio]),dialog.panel select,dialog.panel input:not([type=checkbox]):not([type=radio]){padding:.1rem .4rem;border-radius:.4rem;border-width:1px}
.side button,dialog.panel button{padding:.15rem .7rem}
.side label:not(.inline),dialog.panel label:not(.inline){margin:.35rem 0 .1rem;font-size:.75rem}
.side .hint,dialog.panel .hint{font-size:.75rem;margin:.2rem 0}
.side .error:not(:empty),dialog.panel .error:not(:empty){font-size:.8rem;padding:.25rem .45rem;margin:.3rem 0}
.side .bar,dialog.panel .bar{margin:.35rem 0;gap:.35rem}
.side h3,dialog.inline h3{font-size:.85rem;margin:.35rem 0 .15rem}
.side fieldset{margin:.35rem 0;padding:.2rem .5rem}.side legend{font-size:.75rem}
.side .confirm{padding:.3rem .5rem;margin:.35rem 0}.side .confirm p{font-size:.8rem}
.side .info:not(:empty){font-size:.78rem;padding:.25rem .45rem}
.daynav{padding:.15rem;border-radius:.6rem}.daynav .icon{min-width:2rem;min-height:2rem;font-size:1rem}
#day-title .wd{font-size:1.05rem}#day-title .dt{font-size:.75rem}
.daybar{display:flex;gap:.3rem;align-items:center}.daybar input[type=date]{min-width:7.6rem!important;padding-right:.2rem}.daybar input[type=date]::-webkit-calendar-picker-indicator{display:none}.daybar #today{white-space:nowrap;padding:.1rem .5rem}.daybar input[type=date]{flex:1 1 auto;min-width:0;width:auto!important}
.mc-head .icon{min-width:1.6rem;min-height:1.6rem;font-size:1rem}#mc-title{font-size:.82rem}
.minical th{font-size:.62rem;padding:0}.minical .d{min-height:1.3rem;font-size:.72rem}
.filterrow{display:flex;gap:.35rem;align-items:center}.filterrow select{flex:1 1 auto;min-width:0;width:auto!important}
.side .toggle{margin:0;padding:.1rem .45rem;font-size:.75rem;white-space:nowrap}
/* Faner som tekstfaner med understrek (PriDok), ikke knapperutenett */
.tabs{display:flex;flex-wrap:wrap;gap:0 .1rem;background:none;border:none;border-bottom:1px solid var(--line);border-radius:0;overflow:visible}
.tabs button,.side .tabs button{flex:none;border:none;border-radius:0;background:none;min-height:1.6rem;padding:.1rem .12rem;font-size:.58rem;font-weight:700;letter-spacing:0;text-transform:uppercase;color:var(--ink90);box-shadow:none}
.tabs button+button{border-left:none}
.tabs button:hover:not(:disabled){background:var(--light10)}
.tabs button[aria-pressed=true],.side .tabs button[aria-pressed=true]{background:none;color:var(--ink);box-shadow:inset 0 -3px 0 var(--ink)}
.pair{gap:.35rem}.pair>div{min-width:0}
.side input[type=date],.side input[type=time]{min-width:0;font-size:.78rem}
.side input[type=checkbox],.side input[type=radio]{width:.9rem;height:.9rem}
/* Bookingskjemaet i venstre kolonne (NY AVTALE): samme skjema som panelet, uten panelhode og lukestyring */
#slot-dialog.inline #slot-note-hint{display:none}#slot-dialog.inline #slot-note{border-top:none;margin-top:0;padding-top:0}
#slot-dialog.inline .dialog-head,#slot-dialog.inline #slot-more-toggle,#slot-dialog.inline #slot-more,#slot-dialog.inline #patient-hint{display:none}
#slot-dialog.inline .choices label{min-height:1.85rem;padding:.1rem .4rem;font-size:.8rem}
.linkish{min-height:1.5rem!important;padding:0 .2rem!important;font-size:.75rem!important;text-decoration:underline}
.side fieldset.days{border:none;padding:0;margin:.25rem 0}.side .days label.inline{margin:0 .35rem .1rem 0;font-size:.75rem}
.side label.inline{font-size:.75rem}
/* Dagsplan */
#grid-wrap{padding:.25rem;border-radius:.75rem}
#grid{gap:.25rem}
.column{min-width:7.5rem;container-type:inline-size}
/* Smal kolonne (Dagsplan): rad på to linjer som PriDok — navn / årsak («Ida kveld», «Blokkert»-grunnen, timetypen); aldri skjult */
@container (max-width:15rem){#grid .slot{flex-wrap:wrap;row-gap:0;padding-top:.1rem;padding-bottom:.1rem}#grid .slot .line{flex:1 1 0}#grid .slot .type{order:9;flex:1 0 100%;margin:0;padding:0 0 0 1.2rem;border:none;border-radius:0;background:transparent!important;font-size:.62rem;font-weight:500;line-height:1.15;text-align:left}}
/* Tomme kolonner (0 oppføringer) tar lite plass, så de med timer får bredden */
#grid .column.empty{flex:0 1 7.5rem}
/* Smal kolonne: navnet først — bokstaven på bookede rader viker (typen står i title og statuslinjen) */
@container (max-width:12.5rem){#grid .slot{font-size:.7rem}#grid .slot .time{padding:0 .2rem}#grid .slot .kind{width:.78rem;height:.85rem;font-size:.56rem}#grid .slot{column-gap:.15rem;padding:.05rem .15rem}}
@container (max-width:10.75rem){#grid .slot{font-size:.65rem;letter-spacing:-.012em;column-gap:.15rem;padding:.05rem .1rem}#grid .slot .time{font-weight:500;padding:0 .1rem;font-size:.62rem;letter-spacing:-.02em}#grid .slot .kind{width:.66rem;font-size:.5rem}#grid .slot .line{letter-spacing:-.02em}}
.head{min-height:0;padding:.1rem .15rem .25rem;gap:.3rem;border-bottom:1.5px solid var(--line)}
.avatar{width:1.45rem;height:1.45rem;font-size:.62rem}
.head .names{min-width:0}.head h3{margin:0;font-size:.82rem;line-height:1.15;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.head .meta{margin:0;font-size:.68rem;line-height:1.2;color:var(--ink90);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.head .sub,.head .count{display:inline;font-size:inherit}.head .sub::after{content:" · "}
.body{gap:0;margin:0}
.body>li{border-bottom:1px solid var(--line)}
.body>li.gap{height:.35rem;margin:0;border-top:none;border-bottom:1px dashed var(--muted)}
.body>li.now-line{border:none}
.slot{flex-wrap:nowrap;column-gap:.2rem;min-height:1.4rem;padding:.05rem .2rem;border:none;border-radius:0;font-size:.72rem;line-height:1.2;background:transparent}
.slot .time{font-weight:600}
.slot .kind{width:.8rem;height:.85rem;font-size:.56rem;border-radius:.15rem}
.slot .line{flex:0 1 auto}
.slot .type{flex:0 1000 auto;font-size:.64rem;font-weight:600;padding:0 .3rem;background:var(--line);color:var(--ink90)}
.slot .tag{flex:none;font-size:.58rem;padding:0 .25rem}
.slot.booked{background:var(--card);border:none;box-shadow:inset 3px 0 0 var(--ink)}
.slot.booked .line,.slot .line strong{font-weight:600}
.slot.free{color:var(--ink90);border:none}.slot.free .time{font-weight:500}.slot.free .kind{opacity:.7}
.slot.blocked{background:var(--yellow10);border:none;box-shadow:inset 3px 0 0 var(--yellow)}
.slot.cancelled{background:var(--red10);border:none;box-shadow:inset 3px 0 0 var(--red);color:var(--ink90)}
.jlink{width:1.3rem;border-radius:0}.jlink svg{width:.85rem;height:.85rem}
/* Panel: samme tetthetskutt */
dialog.panel{width:min(27rem,100vw);padding:0 1rem 1rem;font-size:.88rem}
.dialog-head{padding:.6rem 0 .2rem}.dialog-head h2{font-size:1.05rem;margin:0 0 .2rem}
.strip{margin:.45rem 0 .15rem;padding:.2rem .5rem;font-size:.82rem}
.actions{margin:.4rem 0;padding-bottom:.4rem;gap:.35rem}
dialog.panel h3{font-size:.9rem;margin:.5rem 0 .2rem}
dialog.panel fieldset{margin:.35rem 0;padding:.2rem .6rem}
.buttonlink{min-height:1.85rem;padding:.15rem .8rem;font-size:.82rem}
.bookedby{margin-top:.5rem;padding-top:.4rem;font-size:.78rem}
/* Toppfelt: innlogget navn, «Lås» og «Logg ut» til høyre i det lyse feltet (felles plassering i /clinical/shell.css) */
/* Kvittering og statusmelding: fast nederst, skyver aldri layouten */
#toast{position:fixed;left:50%;bottom:1rem;transform:translateX(-50%);z-index:40;margin:0;width:max-content;max-width:min(46rem,calc(100vw - 2rem));box-shadow:0 10px 30px rgba(37,30,76,.22);padding:.4rem .5rem .4rem 1rem}
#toast button{min-height:2rem;padding:.15rem .8rem}
#status:empty{display:none}
#status:not(.sr){position:fixed;left:50%;bottom:1rem;transform:translateX(-50%);z-index:39;margin:0;width:max-content;max-width:min(46rem,calc(100vw - 2rem));
background:var(--ink);color:var(--card);border-radius:.6rem;padding:.45rem 1rem;font-weight:600;font-size:.88rem;box-shadow:0 10px 30px rgba(37,30,76,.22);transition:opacity .3s}
#status.faded{opacity:0;pointer-events:none}
main:has(#toast:not([hidden])) #status:not(.sr){bottom:4.4rem}
/* Appskallets bunnmeny (< 900 px): panelene dekker den som et ark; kvittering og status står over den. */
@media (max-width:899.98px){dialog.panel{z-index:30}
body:has(#work:not([hidden])) #toast{bottom:calc(var(--hr-nav-h) + env(safe-area-inset-bottom) + 1rem)}
body:has(#work:not([hidden])) #status:not(.sr){bottom:calc(var(--hr-nav-h) + env(safe-area-inset-bottom) + 1rem)}
body:has(#work:not([hidden])) main:has(#toast:not([hidden])) #status:not(.sr){bottom:calc(var(--hr-nav-h) + env(safe-area-inset-bottom) + 4.4rem)}}
#pending{position:fixed;left:50%;top:3.5rem;transform:translateX(-50%);z-index:41;margin:0;box-shadow:0 10px 30px rgba(37,30,76,.22)}
.hoverline{max-width:min(28rem,30vw)}
@media (max-width:899.98px){.layout{grid-template-columns:minmax(0,1fr)}.side{max-height:none}.column{min-width:11rem}}
/* Dagsplan: sidepanelet starter under toppfeltet, så «Lås» og «Logg ut» aldri dekkes (smal skjerm: panelet er fullskjerm) */
/* PC (≥ 900 px, U5b): uten valgt rad har dagvisningen hele bredden. Panelet for valgt time/tid glir inn fra høyre under
   toppfeltet og lukkes med Lukk/Esc. I Én kalender på brede skjermer (≥ 1200 px) viker listen for panelet (ved siden av);
   smalere, og i Dagsplan med mange kolonner, ligger panelet over listen. */
body{--tb-panel:min(28rem,calc(100vw - var(--hr-rail,0px) - 4rem))}
/* Samme høyde på toppfeltet på alle sidene (søket er 44 px): panelet starter under det. */
@media (min-width:900px){dialog.panel{top:3.65rem;height:calc(100vh - 3.65rem);width:var(--tb-panel);animation:panel-in .2s ease-out}}
@keyframes panel-in{from{transform:translateX(100%)}to{transform:none}}
@media (min-width:75rem){body.single:has(dialog.panel[open]) .layout{margin-right:calc(var(--tb-panel) + .5rem)}
body.single dialog.panel{box-shadow:none}.layout{transition:margin-right .2s ease-out}}
@media (prefers-reduced-motion:reduce){dialog.panel{animation:none}.layout{transition:none}}
/* ── PriDok-uttrykk (eier 08.10: «ingen time er helt hvit», tydelig): Helseresepten-farger fra tokens ── */
.modes{display:grid;grid-template-columns:1fr 1fr;border:1.5px solid var(--ink);border-radius:.5rem;overflow:hidden}
.modes button,.side .modes button{border:none;border-radius:0;min-height:1.9rem;font-size:.8rem;font-weight:700;background:var(--card);color:var(--ink)}
.modes button[aria-pressed=true],.side .modes button[aria-pressed=true]{background:var(--ink);color:var(--card)}
.filterrow{justify-content:space-between}
.views{display:grid;grid-template-columns:1fr 1fr;border:1px solid var(--ink);border-radius:.4rem;overflow:hidden}
.views button,.side .views button{border:none;border-radius:0;min-height:1.6rem;padding:.05rem .45rem;font-size:.72rem;font-weight:600;background:var(--card)}
.views button[aria-pressed=true],.side .views button[aria-pressed=true]{background:var(--ink);color:var(--card)}
/* Kolonnehode: mørk stripe, navn i store bokstaver, teller til høyre */
.head,.column.own .head{background:var(--ink);color:var(--card);border:none;border-radius:.4rem .4rem 0 0;padding:.3rem .45rem;flex-wrap:wrap;column-gap:.4rem;row-gap:0}
.head h3{text-transform:uppercase;letter-spacing:.03em;color:var(--card)}
.head .meta,.head .sub{color:var(--light)}
.head .count{margin-left:auto;font-size:.68rem;font-weight:600;color:var(--card);white-space:nowrap;display:inline}
.head .avatar{background:var(--light);color:var(--ink)}
.head .sub::after{content:none}
/* Rader: alltid tonet, tid i grå pille, farget type-bokstav */
.body{gap:2px;margin:2px 0 0}.body>li{border-bottom:none}
.body>li.gap{height:.4rem;border-bottom:1px dashed var(--muted)}
.slot{border-radius:.3rem;min-height:1.45rem}
.slot .time{background:rgba(37,30,76,.1);border-radius:var(--pill);padding:0 .35rem;font-weight:600}
.slot .kind{width:.95rem;height:.95rem;border-radius:.2rem;font-size:.62rem;font-weight:800;color:var(--card);opacity:1!important}
.slot .kind.k-I{background:var(--hr-inntak-edge);color:var(--hr-ink)}.slot .kind.k-O{background:var(--hr-folg-edge)}.slot .kind.k-A{background:var(--hr-muted)}.slot .kind.k-B{background:var(--hr-line);color:var(--hr-ink)}
.slot.booked .line strong{font-weight:700}
.slot .res{flex:none;font-size:.62rem;font-weight:800;background:var(--card);color:var(--ink);border-radius:.25rem;padding:0 .3rem}
.slot:hover:not(:disabled),.slot.booked:hover:not(:disabled){filter:brightness(.96)}
/* Én kalender (U5b): listen bruker hele bredden (høyst 72rem) med luftigere rader; timetypen står også på ledige rader */
.layout.single .column{min-width:0}
@media (min-width:900px){.layout.single .column{max-width:72rem}
.layout.single .slot{font-size:.88rem;min-height:2.5rem;padding:.25rem .55rem;column-gap:.5rem}
.layout.single .slot .time{padding:.05rem .45rem}.layout.single .slot .kind{width:1.05rem;height:1.05rem;font-size:.66rem}
.layout.single .slot .type,.layout.single .slot .ftype{font-size:.74rem;padding:.05rem .5rem}
.layout.single .slot .ftype{display:inline-block;flex:0 1 auto;min-width:0;margin-left:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-radius:var(--pill);background:var(--hr-soft);color:var(--hr-muted);font-weight:600}}
/* Faner i venstre kolonne som ekte faner (12–13 px, mørk tekst, klikkflate ≥ 32 px) */
.side .tabs{display:grid;grid-template-columns:1fr 1fr;gap:0;border-bottom:1px solid var(--line)}
.side .tabs button{min-height:2rem;padding:.2rem .3rem;font-size:.8rem;font-weight:700;letter-spacing:0;text-transform:none;color:var(--ink);border-bottom:3px solid transparent;border-radius:.3rem .3rem 0 0}
.side .tabs button[aria-pressed=true]{background:var(--light10);box-shadow:none;border-bottom-color:var(--ink)}
/* Ledig tid (U5b): pasientsøket øverst; sjeldne valg (pasientbooking, sperr, fjern, varighet, historikk) bak «Flere valg» */
#slot-note{border-top:1px solid var(--line);margin-top:.5rem;padding-top:.2rem}
.more-toggle,dialog.panel .more-toggle{display:flex;align-items:center;justify-content:space-between;gap:.5rem;width:100%;min-height:2.75rem;margin:.6rem 0 0;padding:.3rem 0;
border:0;border-top:1px solid var(--hr-line);border-radius:0;background:none;color:var(--hr-ink);font-weight:700;text-align:left}
.more-toggle::after{content:"";flex:none;width:.5rem;height:.5rem;margin-right:.3rem;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(45deg) translate(-2px,-2px)}
.more-toggle[aria-expanded=true]::after{transform:rotate(-135deg) translate(-2px,-2px)}
.more-toggle:hover:not(:disabled){background:none;text-decoration:underline}
#slot-more{display:flex;flex-direction:column;gap:.5rem;padding:0 0 .5rem}#slot-more[hidden]{display:none}
#slot-more .bar{margin:0}#slot-more #slot-history-button{align-self:flex-start}
#slot-dialog .switch{display:flex;align-items:center;justify-content:space-between;gap:.75rem;width:100%;min-height:2.75rem;padding:.25rem 0;border:0;border-radius:0;background:none;color:var(--hr-ink);font-weight:700;text-align:left}
#slot-dialog .switch:hover:not(:disabled){background:none}
.switch-track{flex:none;position:relative;width:2.75rem;height:1.6rem;border-radius:999px;background:var(--hr-line);transition:background .15s}
.switch-track::after{content:"";position:absolute;top:.2rem;left:.2rem;width:1.2rem;height:1.2rem;border-radius:50%;background:#fff;box-shadow:0 1px 2px rgba(15,18,30,.3);transition:transform .15s}
.switch[aria-checked=true] .switch-track{background:var(--hr-ink)}.switch[aria-checked=true] .switch-track::after{transform:translateX(1.15rem)}
@media (prefers-reduced-motion:reduce){.switch-track,.switch-track::after{transition:none}}
.conflict{display:flex;flex-wrap:wrap;align-items:center;gap:.35rem;border-left:4px solid var(--yellow);background:var(--yellow10);padding:.3rem .5rem;border-radius:.4rem;font-size:.8rem;margin:.25rem 0}
.conflict span{flex-basis:100%;font-weight:600}
/* Berøringsskjerm (nettbrett): rader og kontroller er minst 44 px høye */
/* Synlig for pasient (domene §3.4): ledig = normal tone, i kø = dempet, holdt tilbake = grå, passert = dempet; ingen farge per lege */
/* (Fargene for ledig, i kø, holdt tilbake og passert står i design B-blokken nederst.) */
.slot .q{flex:none;font-size:.62rem;font-weight:600;color:var(--ink90)}
.slot .vis{flex:none;margin-left:auto;font-size:.58rem;font-weight:700;border-radius:var(--pill);padding:0 .3rem;background:var(--card);color:var(--ink)}
.slot .vis.v-queued,.slot .vis.v-outside{background:transparent;box-shadow:inset 0 0 0 1px var(--hr-muted)}.slot .vis.v-held{background:var(--hr-soft);color:var(--hr-ink)}
.policy{display:flex;flex-wrap:wrap;align-items:center;gap:.25rem .45rem;background:var(--card);border-radius:.75rem;box-shadow:var(--shadow);padding:.3rem .5rem;margin:0 0 .35rem;font-size:.8rem}
.policy label.inline{font-weight:700;font-size:.8rem;margin:0}
.policy select{width:auto;min-height:1.85rem;padding:.1rem .3rem;border-width:1px;border-radius:.4rem;font-size:.82rem}
.policy details{flex-basis:100%;font-size:.78rem}.policy details[open]{display:flex;flex-wrap:wrap;align-items:center;gap:.25rem .45rem}
.policy summary{cursor:pointer;font-weight:600;color:var(--ink90);min-height:1.6rem;display:inline-flex;align-items:center}
.policy summary::after{content:" ▸";margin-left:.2rem}.policy details[open] summary{flex-basis:100%}.policy details[open] summary::after{content:" ▾"}
.policy summary:focus-visible{outline:3px solid var(--violet);outline-offset:2px}
.policy button{min-height:1.85rem;padding:.1rem .7rem;font-size:.8rem}.policy .hint{margin:0;font-size:.72rem}
.policy .error,.policy .proposal{flex-basis:100%;margin:.15rem 0;font-size:.78rem}
.release p{margin:0}
@media (pointer:coarse){.policy select,.policy button,.policy summary{min-height:2.75rem}}
@media (pointer:coarse){.slot{min-height:2.75rem}.side button,.side select,.side input:not([type=checkbox]):not([type=radio]),dialog.panel button,dialog.panel select,dialog.panel input:not([type=checkbox]):not([type=radio]),.minical .d,.tabs button,.side .tabs button{min-height:2.75rem}}

/* ── Design B (eiervalg 19.10.2026): merkevaren med rolige flater; timetype = farge på radene (inntak oransje, oppfølging
   fiolett, ledig stiplet), likt i Dagen min. Bare skallets tokens (--hr-*); kontrast (WCAG AA) måles i T-W53. ── */
body{background:var(--hr-bg)}
button,.buttonlink{border:1px solid var(--hr-line);border-radius:var(--hr-r)}
select,input{border-color:var(--hr-line)}
.primary{background:var(--hr-ink);color:#fff;border-color:var(--hr-ink)}.primary:hover:not(:disabled){background:var(--sh-ink90);border-color:var(--sh-ink90)}
.primary[aria-pressed=true]{background:var(--hr-ink);color:#fff}
button[aria-pressed=true]{background:var(--hr-soft);border-color:var(--hr-ink)}
.danger{border-color:var(--hr-warn-ink);color:var(--hr-warn-ink)}.danger:hover:not(:disabled){background:var(--hr-warn)}
.side,#grid-wrap,.policy{background:var(--hr-surface);border-radius:var(--hr-r-big);box-shadow:0 0 0 1px var(--hr-line)}
.daynav{background:var(--hr-soft);color:var(--hr-ink)}.daynav .icon:hover:not(:disabled){background:var(--hr-line)}
#day-title .wd{font-family:var(--hr-font-head);font-weight:500}
.minical .d.today{background:none;box-shadow:inset 0 0 0 1.5px var(--hr-ink)}
.minical .d[aria-current=date]{background:var(--hr-ink);color:#fff}
.modes{border:1px solid var(--hr-ink)}.modes button[aria-pressed=true],.side .modes button[aria-pressed=true]{background:var(--hr-ink);color:#fff}
.views{border:1px solid var(--hr-line)}.views button[aria-pressed=true],.side .views button[aria-pressed=true]{background:var(--hr-soft);color:var(--hr-ink);font-weight:700}
.side .tabs button[aria-pressed=true]{background:var(--hr-soft);border-bottom-color:var(--hr-ink)}
/* Kolonnehode (skissen): hvitt, avatar og navn, teller dempet til høyre; egen kolonne har mørk avatar */
.head,.column.own .head{background:var(--hr-surface);color:var(--hr-ink);border-bottom:1px solid var(--hr-line);border-radius:0}
.head h3{text-transform:none;letter-spacing:0;color:var(--hr-ink)}.head .count{color:var(--hr-muted)}.head .meta,.head .sub{color:var(--hr-muted)}
.head .avatar{background:var(--hr-soft);color:var(--hr-ink)}.column.own .head .avatar{background:var(--hr-ink);color:#fff}
/* Rader: annen timetype og sperret er nøytrale, avlyst er warn; valgt rad får ramme og beholder timetypens farge */
.slot{color:var(--hr-ink)}
.slot .time{background:rgba(37,30,76,.07)}
.slot .type,.slot .res{background:rgba(255,255,255,.7);color:var(--hr-ink)}
.slot.booked{background:var(--hr-soft);box-shadow:inset 3px 0 0 var(--hr-muted)}
.slot.hr-row--inntak{background:var(--hr-inntak);box-shadow:inset 3px 0 0 var(--hr-inntak-edge)}
.slot.hr-row--oppfolging{background:var(--hr-folg);box-shadow:inset 3px 0 0 var(--hr-folg-edge)}
.slot.free{background:transparent;color:var(--hr-muted);box-shadow:none}
.slot.hr-row--ledig{border:1.5px dashed var(--hr-line)}
.slot.free .type{background:var(--hr-soft)}
.slot.blocked,.slot.held,.slot.free.held{background:var(--hr-soft);color:var(--hr-muted);box-shadow:none}
.slot.free.queued,.slot.free.outside{background:transparent;color:var(--hr-muted)}
.slot.free.passed{opacity:.6}.slot.free.passed .line{font-style:italic}
.slot.cancelled{background:var(--hr-warn);color:var(--hr-ink);box-shadow:inset 3px 0 0 var(--hr-warn-ink)}
.slot.cancelled .type{background:var(--hr-surface)}
.slot.free:hover:not(:disabled){background:var(--hr-soft)}
#grid .slot .line.dim{color:var(--hr-muted);font-style:normal}
.slot .lbl,.slot .ftype{display:none}
#grid .slot.selected,#grid .slot.selected:hover:not(:disabled){outline:2px solid var(--hr-ink);outline-offset:-2px;filter:none}
#grid .slot.free.selected{background:var(--hr-soft)}
#grid .slot:focus-visible{outline:3px solid var(--hr-folg-edge);outline-offset:1px}
/* Panelet for valgt time/luke: hvitt ark med overskrift i merkevarens skrift; skallets ark (.hr-sheet) beholder panelets flyt her */
dialog.panel{background:var(--hr-surface);color:var(--hr-ink);border-left:1px solid var(--hr-line);border-radius:0;box-shadow:-12px 0 40px rgba(37,30,76,.12)}
dialog.panel.hr-sheet[open]{display:block}
.dialog-head{background:var(--hr-surface);border-bottom:1px solid var(--hr-line)}
.dialog-head h2{font-family:var(--hr-font-head);font-weight:500;font-size:1.35rem}
.dialog-head .when{margin:0;color:var(--hr-muted);font-weight:600;font-size:.9rem}
.kicker{color:var(--hr-muted)}
.strip{background:var(--hr-soft);border-color:var(--hr-line)}
dialog.panel .actions button{font-weight:700}
/* Kvittering og status: mørke merkevarelapper (som skallets .hr-toast) */
#toast{background:var(--hr-ink);color:#fff;border-left:0;border-radius:var(--hr-r)}
#toast button{background:transparent;color:#fff;border-color:rgba(255,255,255,.55)}#toast button:hover:not(:disabled){background:rgba(255,255,255,.12)}
#toast .primary{background:#fff;color:var(--hr-ink);border-color:#fff}#toast .primary:hover:not(:disabled){background:var(--hr-soft)}
#toast.bad{background:var(--hr-warn-ink)}
#status:not(.sr),.hoverline{background:var(--hr-ink);color:#fff;border:0}
/* ── Mobil (< 900 px): agenda (uke, dager, behandlere) over én liste. Venstre kolonne er et ark bak «Velg dato» og «⋯»;
   timen og bookingen er bunnark (.hr-sheet) som løftes over tastaturet (--tb-kb). Trykkflater ≥ 44 px. ── */
.agenda,.side-head{display:none}
@media (max-width:899.98px){
main{padding:12px 16px 24px}
.agenda{display:flex;flex-direction:column;gap:12px;margin:0 0 12px}
.agenda-top{display:flex;align-items:center;gap:4px}
.agenda-week{flex:1;min-width:0;margin:0;font-weight:700;font-size:15px;text-align:center}
.agenda-arrow{flex:none;min-width:44px;min-height:44px;padding:0;border:0;background:none;color:var(--hr-ink);font-size:1.7rem;line-height:1}
.agenda-btn{flex:none;min-height:44px;padding:0 14px}#agenda-tools{min-width:44px;padding:0 10px;font-size:1.3rem}
.agenda-days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:2px}
/* Plassen står før dagens data er lest (ukedagene, brikkene, oppsummeringen), så listen ikke skyves ned. */
.agenda-days:empty{min-height:58px}.agenda-people:empty{min-height:50px}.agenda-summary:empty::before{content:'\a0'}
.agenda-day{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-height:58px;padding:0;border:1px solid var(--hr-line);border-radius:var(--hr-r);background:var(--hr-surface);color:var(--hr-ink)}
.agenda-day .wd{font-size:12px;font-weight:600;color:var(--hr-muted)}.agenda-day .n{font-size:18px;font-weight:700;font-variant-numeric:tabular-nums}
.agenda-day.today .n{text-decoration:underline;text-underline-offset:3px}
.agenda-day[aria-current=date],.agenda-day[aria-current=date]:hover:not(:disabled){background:var(--hr-ink);border-color:var(--hr-ink);color:#fff}.agenda-day[aria-current=date] .wd{color:#fff}
.agenda-people .hr-chip[aria-pressed=true]:hover:not(:disabled){background:var(--hr-ink);color:#fff}
.agenda-people{display:flex;gap:8px;overflow-x:auto;padding:2px 0 4px;scrollbar-width:thin}
.agenda-people .hr-chip{flex:none;min-height:44px;white-space:nowrap}
.agenda-summary{margin:0;font-size:14px;color:var(--hr-muted)}
.layout{display:block}
.side{display:none}
#grid-wrap{background:none;box-shadow:none;border-radius:0;padding:0;overflow:visible}
#grid{flex-direction:column;gap:20px}
.column,#grid .column.empty{flex:none;width:100%;min-width:0}
.head,.column.own .head{background:none;border:0;padding:0 0 6px}
.body{gap:8px;margin:8px 0 0}.body>li.gap{display:none}.body>li.withj{gap:6px}
.slot,.layout.single .slot{min-height:56px;padding:8px 14px;column-gap:12px;border-radius:var(--hr-r);font-size:15px;line-height:1.3}
.slot .time{flex:none;width:3rem;padding:0;background:none;font-size:15px;font-weight:700}
.slot .kind{display:none}
.slot .line{flex:1 1 auto}.slot .o{display:none}.slot .lbl{display:inline}.slot.free .line{font-weight:600}
.slot .ftype{display:inline-block}
.slot .type,.slot .ftype{flex:0 1 auto;max-width:45%;margin-left:auto;padding:4px 9px;border-radius:999px;font-size:12px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.slot.free .ftype,.slot.free .type{background:var(--hr-soft);color:var(--hr-muted)}
.slot.hr-row--inntak{box-shadow:inset 4px 0 0 var(--hr-inntak-edge)}.slot.hr-row--oppfolging{box-shadow:inset 4px 0 0 var(--hr-folg-edge)}
.slot .vis,.slot .tag,.slot .res,.slot .q{font-size:12px;padding:2px 8px}
.jlink{width:44px;border-radius:var(--hr-r);background:var(--hr-surface);box-shadow:inset 0 0 0 1px var(--hr-line)}.jlink svg{width:1.1rem;height:1.1rem}
.empty{font-size:15px}
.hoverline{display:none!important}
#toast button{min-height:44px}
.policy select,.policy button,.policy summary{min-height:44px;font-size:15px}
/* Arket bak «Velg dato» og «⋯» */
body.side-dates .side,body.side-tools .side{display:flex;position:fixed;left:0;right:0;bottom:0;top:auto;z-index:41;max-height:calc(88dvh - var(--tb-kb,0px));margin:0 0 var(--tb-kb,0px);
overflow:auto;overscroll-behavior:contain;align-items:stretch;gap:12px;padding:12px 16px calc(20px + env(safe-area-inset-bottom));border-radius:var(--hr-r-big) var(--hr-r-big) 0 0;box-shadow:0 -12px 40px rgba(15,18,30,.18);font-size:15px}
.side-head{display:flex;align-items:center;justify-content:space-between;gap:8px}
.side-head .hr-title{font-size:1.35rem;outline:none}
body.side-dates .side>:not(.side-head):not(.daynav):not(.daybar):not(.minical):not(#toast){display:none}
.side #slot-dialog.inline .choices label,.side .choices label{min-height:44px;font-size:15px}
.side .linkish,.side #patient-search-filter-toggle{min-height:44px!important;padding:0 8px!important;font-size:14px!important}
body.side-tools .side>.daynav,body.side-tools .side>.daybar,body.side-tools .side>.minical,body.side-tools .side>.modes,body.side-tools .side>.views,body.side-tools #resource-filter{display:none}
.side button,.side select,.side input:not([type=checkbox]):not([type=radio]),.minical .d,.side .tabs button,.side label.inline{min-height:44px;font-size:15px}
.side input[type=checkbox],.side input[type=radio]{width:1.25rem;height:1.25rem}
.minical th{font-size:12px}.side .toggle{padding:.4rem .8rem}
.side-backdrop{position:fixed;inset:0;z-index:40;background:rgba(15,18,30,.42)}
/* Bunnarket for time og booking */
dialog.panel.hr-sheet{inset:auto 0 0 0;top:auto;width:100%;max-width:100%;height:auto;max-height:calc(88dvh - var(--tb-kb,0px));margin:0 0 var(--tb-kb,0px);
border:0;border-radius:var(--hr-r-big) var(--hr-r-big) 0 0;padding:0 16px calc(20px + env(safe-area-inset-bottom));box-shadow:0 -12px 40px rgba(15,18,30,.18);
font-size:15px;overflow:auto;overscroll-behavior:contain;animation:sheet-up .18s ease-out}
dialog.panel.hr-sheet::backdrop{background:rgba(15,18,30,.42)}
dialog.panel.hr-sheet .dialog-head{padding-top:18px}dialog.panel.hr-sheet .dialog-head h2{font-size:1.2rem}
dialog.panel.hr-sheet .dialog-head::before{content:"";position:absolute;top:6px;left:50%;width:44px;height:5px;margin-left:-22px;border-radius:999px;background:var(--hr-line)}
dialog.panel.hr-sheet button,dialog.panel.hr-sheet select,dialog.panel.hr-sheet input:not([type=checkbox]):not([type=radio]),dialog.panel.hr-sheet .buttonlink{min-height:44px;font-size:15px}
dialog.panel.hr-sheet .headbtns button{min-width:44px}
dialog.panel.hr-sheet .linkish,dialog.panel.hr-sheet #patient-search-filter-toggle{min-height:44px!important;padding:0 8px!important;font-size:14px!important}
dialog.panel.hr-sheet .actions button{flex:1 1 auto}
dialog.panel.hr-sheet label:not(.inline){font-size:14px}
dialog.panel.hr-sheet label.inline{min-height:44px;font-size:15px}
dialog.panel.hr-sheet .hint{font-size:14px}
/* Én behandler: oppsummeringen over listen sier hvem; kolonnehodet trengs ikke (Inntak beholder sitt med tallene for pasient) */
#grid .column:only-child:not(.intake) .head{display:none}}
/* Smal telefon: navnet får hele linjen, timetypen står under (som skissen) */
@media (max-width:599.98px){
.slot,.layout.single .slot{flex-wrap:wrap;row-gap:2px;align-content:center}
.slot .line{flex:1 1 0}
.slot .type,.slot .ftype,.slot.free .ftype,.slot.free .type{order:9;flex:1 0 calc(100% - 3rem - 12px);max-width:none;margin:0 0 0 calc(3rem + 12px);padding:0;border-radius:0;background:none;color:var(--hr-muted);font-size:13px;font-weight:600}}
@keyframes sheet-up{from{transform:translateY(32px);opacity:0}to{transform:none;opacity:1}}
@media (prefers-reduced-motion:reduce){dialog.panel.hr-sheet{animation:none}}
/* Treffene i pasientsøket (U5b, som skissen): store, rolige rader med navn og fødselsdato; å trykke på pasienten er bookingen */
#patient-results .patient-choice{gap:.15rem .6rem}
#patient-results .patient-choice label{flex:1 1 100%;gap:.6rem;min-height:3rem;padding:.4rem .75rem;border:1.5px solid transparent;border-radius:var(--hr-r);background:var(--hr-soft);font-weight:700}
#patient-results .patient-choice .patient-name{flex:1 1 auto;min-width:0}#patient-results .identity-badge{flex:none;white-space:nowrap}
#patient-results .patient-choice>.hint,#patient-results .identity-actions{margin:0 0 0 .75rem}
#patient-results .patient-choice label:hover{border-color:var(--hr-ink)}
#patient-results .patient-choice label:has(input:checked){border-color:var(--hr-ink);background:var(--hr-surface)}
#patient-results .identity-badge{background:var(--hr-surface);color:var(--hr-muted)}
#patient-results .register-area{display:flex;flex-direction:column;align-items:flex-start;gap:.3rem;padding:.5rem .75rem;border-radius:var(--hr-r);background:var(--hr-soft)}
#patient-results .register-area :is(.register-offer,.register-person){display:flex;flex-direction:column;align-items:flex-start;gap:.3rem}
#patient-results .register-area p{margin:0;overflow-wrap:anywhere}#patient-results .register-name{font-weight:700}
#patient-results .register-status:empty{display:none}
/* Book time-panelet på PC (U5b): romsligere felt og knapper (40 px), søkefeltet 44 px */
@media (min-width:900px){#slot-dialog.panel{padding:0 1.25rem 1.25rem;font-size:.92rem}
#slot-dialog.panel button,#slot-dialog.panel select,#slot-dialog.panel input:not([type=checkbox]):not([type=radio]){min-height:2.5rem;font-size:.9rem}
#slot-dialog.panel #patient-search{min-height:2.75rem;font-size:1rem}#slot-dialog.panel label:not(.inline){font-size:.82rem}
#slot-dialog.panel .more-toggle,#slot-dialog.panel .switch{min-height:2.75rem}}
/* Berøring fra 900 px (nettbrett på tvers): alt i panelet er minst 44 px, også lenkeknappene */
@media (min-width:900px) and (pointer:coarse){#slot-dialog.panel button,#slot-dialog.panel select,#slot-dialog.panel input:not([type=checkbox]):not([type=radio]){min-height:2.75rem}
#slot-dialog.panel .linkish,#slot-dialog.panel #patient-search-filter-toggle{min-height:2.75rem!important;padding:0 .5rem!important}}

.video-actions{display:flex;gap:8px;flex-wrap:wrap;margin:8px 0}.video-actions:empty{display:none}
.mobile-contact{margin:10px 0}.mobile-contact label{display:block;font-weight:600}.mobile-contact input{font:inherit;min-height:44px;border:1px solid var(--hr-line);border-radius:8px;padding:8px;max-width:100%;background:var(--hr-surface);color:var(--hr-ink)}
.mobile-contact p{margin:6px 0}.mobile-contact button{margin-right:8px}
#video-phone{padding:24px;width:min(92vw,440px);border:1px solid var(--hr-line);border-radius:16px;color:var(--hr-ink);background:var(--hr-surface)}
#video-phone::backdrop{background:#0006}#video-phone h2{margin-top:0}
