.app{display:flex;flex-direction:column;height:100%}.topbar{display:flex;gap:var(--space-4);align-items:center;height:var(--topbar-height);padding:0 var(--space-5);border-bottom:1px solid var(--line);background:var(--surface-card)}.topbar-brand{display:flex;gap:var(--space-3);align-items:center;color:var(--ink-strong)}.topbar-app{padding-left:var(--space-3);border-left:1px solid var(--line);color:var(--ink-muted);font-size:var(--text-micro);font-weight:700;letter-spacing:var(--tracking-label);text-transform:uppercase}.topbar-user{display:flex;flex-direction:column;align-items:flex-end;line-height:1.25}.topbar-user-name{color:var(--ink-strong);font-size:var(--text-small);font-weight:600}.topbar-user-role{color:var(--ink-faint);font-size:var(--text-micro);letter-spacing:.02em}.conn{display:inline-flex;gap:var(--space-2);align-items:center;padding:.125rem var(--space-2);border-radius:var(--radius-sm);font-size:var(--text-micro);font-weight:700;letter-spacing:var(--tracking-label);text-transform:uppercase}.conn-dot{width:.4rem;height:.4rem;border-radius:50%;background:currentColor}.conn-verbunden{color:var(--ok);background:var(--ok-soft)}.conn-verbindet{color:var(--warn);background:var(--warn-soft)}.conn-getrennt{color:var(--danger);background:var(--danger-soft)}.conn-getrennt .conn-dot{animation:pulse 1.6s var(--ease-out) infinite}@keyframes pulse{50%{opacity:.3}}@media(prefers-reduced-motion:reduce){.conn-getrennt .conn-dot{animation:none}}.tabbar{display:flex;gap:var(--space-1);align-items:stretch;height:var(--tabbar-height);padding:0 var(--space-5);border-bottom:1px solid var(--line);background:var(--surface-card);overflow-x:auto;scrollbar-width:none}.tabbar::-webkit-scrollbar{display:none}.tab{position:relative;padding:0 var(--space-4);border:none;background:transparent;color:var(--ink-muted);font:inherit;font-size:var(--text-small);font-weight:600;white-space:nowrap;cursor:pointer;transition:color var(--duration-fast) var(--ease-out)}.tab:hover,.tab[aria-current=page]{color:var(--ink-strong)}.tab[aria-current=page]:after{content:"";position:absolute;right:var(--space-3);bottom:-1px;left:var(--space-3);height:2px;background:var(--signal)}.app-main{flex:1;min-height:0;overflow:auto}.view{display:flex;flex-direction:column;gap:var(--space-5);max-width:100rem;margin:0 auto;padding:var(--space-5)}.view-full{display:flex;flex-direction:column;gap:var(--space-4);height:100%;padding:var(--space-4) var(--space-5);max-width:none}.view-head{display:flex;flex-wrap:wrap;gap:var(--space-4);align-items:flex-end;justify-content:space-between}.view-title{display:flex;flex-direction:column;gap:.125rem}.view-lead{color:var(--ink-muted);font-size:var(--text-small)}@media(max-width:60rem){.view-full{height:auto}}@media(max-width:40rem){.topbar,.tabbar{padding:0 var(--space-3)}.topbar-app,.conn-label{display:none}.view,.view-full{padding:var(--space-3)}}.loading{display:flex;gap:var(--space-3);align-items:center;justify-content:center;padding:var(--space-7);color:var(--ink-muted);font-size:var(--text-small)}.spinner{width:1rem;height:1rem;border:2px solid var(--line-strong);border-top-color:var(--signal);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.spinner{animation-duration:2s}}.login{display:grid;place-items:center;min-height:100%;padding:var(--space-5);background:linear-gradient(180deg,var(--surface-page) 0%,var(--surface-sunken) 100%),repeating-linear-gradient(90deg,transparent 0 4rem,rgb(12 12 13 / .02) 4rem 4.0625rem)}.login-panel{display:flex;flex-direction:column;gap:var(--space-5);width:min(24rem,100%);padding:var(--space-6);border:1px solid var(--line);border-top:3px solid var(--signal);border-radius:var(--radius);background:var(--surface-card);box-shadow:var(--shadow-float)}.login-brand{color:var(--ink-strong)}.login-intro h1{font-size:var(--text-title);margin-bottom:var(--space-1)}.login-intro p{font-size:var(--text-small)}.login-note{padding-top:var(--space-4);border-top:1px solid var(--line-hair);color:var(--ink-faint);font-size:var(--text-tiny);line-height:1.5}.login-note code{padding:.0625rem .25rem;border-radius:var(--radius-sm);background:var(--surface-sunken);color:var(--ink-muted);font-family:var(--font-numeric);font-size:.9em}.modal{width:min(38rem,calc(100vw - 2rem));max-height:min(92vh,56rem);padding:0;border:none;border-radius:var(--radius-lg);background:var(--surface-card);color:var(--ink);box-shadow:var(--shadow-modal)}.modal-schmal{width:min(26rem,calc(100vw - 2rem))}.modal-breit{width:min(58rem,calc(100vw - 2rem))}.modal-voll{width:min(76rem,calc(100vw - 2rem));height:min(92vh,60rem)}.modal::backdrop{background:#0c0c0d6b;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.modal[open]{display:flex;flex-direction:column;animation:modal-in var(--duration) var(--ease-out)}@keyframes modal-in{0%{opacity:0;transform:translateY(.75rem) scale(.99)}}@media(prefers-reduced-motion:reduce){.modal[open]{animation:none}}.modal-head{display:flex;gap:var(--space-4);align-items:flex-start;justify-content:space-between;padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--line)}.modal-head h2{font-size:var(--text-lead)}.modal-subtitle{margin-top:.125rem;color:var(--ink-muted);font-size:var(--text-tiny)}.modal-body{flex:1;padding:var(--space-5);overflow-y:auto}.modal-foot{display:flex;gap:var(--space-2);align-items:center;justify-content:flex-end;padding:var(--space-3) var(--space-5);border-top:1px solid var(--line);background:var(--surface-raised);border-radius:0 0 var(--radius-lg) var(--radius-lg)}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-4)}.form-grid .span-2,.form-grid .span-3,.form-grid .span-alle{grid-column:1 / -1}.modal-breit .form-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.modal-breit .form-grid .span-2{grid-column:span 2}.modal-voll .form-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.modal-voll .form-grid .span-2{grid-column:span 2}.modal-voll .form-grid .span-3{grid-column:span 3}@media(max-width:76rem){.modal-voll .form-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.modal-voll .form-grid .span-3{grid-column:1 / -1}}@media(max-width:58rem){.modal-breit .form-grid,.modal-voll .form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.modal-breit .form-grid .span-2,.modal-voll .form-grid .span-2{grid-column:1 / -1}}@media(max-width:34rem){.form-grid,.modal-breit .form-grid,.modal-voll .form-grid{grid-template-columns:minmax(0,1fr)}}.form-section{grid-column:1 / -1;display:flex;gap:var(--space-3);align-items:center;margin-top:var(--space-1)}.form-section:after{content:"";flex:1;height:1px;background:var(--line-hair)}.form-section:first-child{margin-top:0}.form-error{padding:var(--space-3);border:1px solid var(--danger-line);border-radius:var(--radius);background:var(--danger-soft);color:var(--danger);font-size:var(--text-small)}.toasts{position:fixed;right:var(--space-4);bottom:var(--space-4);z-index:60;display:flex;flex-direction:column;gap:var(--space-2);width:min(26rem,calc(100vw - 2rem));pointer-events:none}.toast{display:flex;gap:var(--space-3);align-items:flex-start;padding:var(--space-3) var(--space-3) var(--space-3) var(--space-4);border:1px solid var(--line);border-left:3px solid var(--ink-faint);border-radius:var(--radius);background:var(--surface-card);box-shadow:var(--shadow-float);pointer-events:auto;animation:toast-in var(--duration) var(--ease-out)}@keyframes toast-in{0%{opacity:0;transform:translateY(.5rem)}}@media(prefers-reduced-motion:reduce){.toast{animation:none}}.toast-ok{border-left-color:var(--ok)}.toast-warn{border-left-color:var(--warn)}.toast-error{border-left-color:var(--danger)}.toast-info{border-left-color:var(--signal)}.toast-body{display:flex;flex:1;flex-direction:column;gap:.125rem;min-width:0}.toast-message{color:var(--ink-strong);font-size:var(--text-small);font-weight:600}.toast-detail{color:var(--ink-muted);font-size:var(--text-tiny);line-height:1.45}.toast-close{flex:none;padding:0 var(--space-1);border:none;background:transparent;color:var(--ink-faint);font-size:var(--text-tiny);line-height:1.5;cursor:pointer;transition:color var(--duration-fast) var(--ease-out)}.toast-close:hover{color:var(--ink-strong)}.plan-toolbar{display:flex;flex-wrap:wrap;gap:var(--space-3);align-items:center;padding:var(--space-3) var(--space-4);border:1px solid var(--line);border-radius:var(--radius);background:var(--surface-card)}.plan-range-label{min-width:14rem;color:var(--ink-strong);font-size:var(--text-lead);font-weight:700;letter-spacing:var(--tracking-tight)}.plan-stepper{display:inline-flex}.plan-stepper .btn{border-radius:0;margin-left:-1px}.plan-stepper .btn:first-child{border-radius:var(--radius) 0 0 var(--radius);margin-left:0}.plan-stepper .btn:last-child{border-radius:0 var(--radius) var(--radius) 0}.plan-date-inputs{display:flex;gap:var(--space-2);align-items:center}.plan-date-inputs .input{width:9.5rem}.plan-scroll{flex:1;min-height:0;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface-sunken);overflow:auto;overscroll-behavior:contain}.plan-board{--col-w: 17rem;display:flex;align-items:stretch;min-height:100%}.plan-day{display:flex;flex-direction:column;flex:0 0 var(--col-w);min-width:0;background:var(--surface-page);border-right:1px solid var(--line)}.plan-day:last-child{border-right:0}.plan-day.is-weekend{background:var(--surface-sunken)}.plan-day.is-holiday{background:var(--feiertag-soft)}.plan-day-head{position:sticky;top:0;z-index:2;display:grid;grid-template-columns:auto 1fr;align-items:baseline;gap:0 var(--space-2);padding:var(--space-2) var(--space-3);background:var(--surface-card);border-bottom:1px solid var(--line-strong)}.plan-day.is-today .plan-day-head{box-shadow:inset 0 3px 0 var(--signal)}.plan-day-weekday{color:var(--ink-strong);font-weight:700}.plan-day-date{color:var(--ink-muted);font-size:var(--text-small)}.plan-day-holiday,.plan-day-tally{grid-column:1 / -1;color:var(--ink-muted);font-size:var(--text-micro)}.plan-day-holiday{color:var(--feiertag)}.plan-day-tally em{margin-left:var(--space-2);color:var(--warn);font-style:normal;font-weight:700}.plan-day-body{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-2)}.plan-day-empty{margin:0;padding:var(--space-4) var(--space-2);color:var(--ink-faint);font-size:var(--text-small);text-align:center}.plan-tile{position:relative;display:flex;flex-direction:column;border:1px solid var(--line);border-left:4px solid var(--site, var(--line-strong));border-radius:var(--radius);background:var(--surface-card);box-shadow:var(--shadow-raised);transition:box-shadow var(--duration-fast) var(--ease-out),border-color var(--duration-fast) var(--ease-out)}.plan-tile:hover{box-shadow:var(--shadow-float)}.plan-tile.is-empty{background:var(--surface-raised);box-shadow:none}.plan-tile.is-drop{border-color:var(--signal);box-shadow:0 0 0 2px var(--signal)}.plan-tile.is-permanent{border-color:color-mix(in oklab,var(--site, var(--line-strong)) 45%,var(--line));background:color-mix(in oklab,var(--site, var(--ink-faint)) 8%,var(--surface-card))}.plan-tile.is-permanent .plan-tile-head{background:color-mix(in oklab,var(--site, var(--ink-faint)) 14%,transparent);border-bottom-color:color-mix(in oklab,var(--site, var(--line-strong)) 30%,var(--line-hair))}.plan-tile.is-permanent.is-empty{box-shadow:var(--shadow-raised)}.plan-tile-head{display:grid;grid-template-columns:1fr auto auto auto;align-items:center;gap:var(--space-1);padding:var(--space-2) var(--space-2) var(--space-1) var(--space-2);border-bottom:1px solid var(--line-hair)}.plan-tile-open{display:flex;flex-direction:column;gap:.05rem;min-width:0;padding:0;border:0;background:none;color:var(--ink-strong);font:inherit;text-align:left;cursor:pointer}.plan-tile-open:disabled{cursor:default}.plan-tile-open:hover:not(:disabled) .plan-tile-name{color:var(--signal)}.plan-tile-name{font-weight:700;line-height:1.2;overflow-wrap:anywhere;transition:color var(--duration-fast) var(--ease-out)}.plan-tile-info{margin:0;padding:var(--space-1) var(--space-2);border-bottom:1px solid var(--line-hair);background:color-mix(in oklab,var(--site, var(--ink-faint)) 6%,transparent);color:var(--ink);font-size:var(--text-small);line-height:1.35;white-space:pre-wrap;overflow-wrap:anywhere}.plan-tile-count{padding:.05rem .35rem;border-radius:var(--radius-sm);background:color-mix(in oklab,var(--site, var(--ink-faint)) 14%,transparent);color:var(--ink);font-size:var(--text-micro);font-weight:700}.plan-tile-x{padding:0 .2rem;border:0;background:none;color:var(--ink-faint);font-size:var(--text-tiny);line-height:1;cursor:pointer}.plan-tile-x:hover:not(:disabled){color:var(--danger)}.plan-tile-edit:hover:not(:disabled){color:var(--signal)}.plan-tile-x:disabled{opacity:.4;cursor:default}.plan-tile-names{display:flex;flex-wrap:wrap;gap:var(--space-1);padding:var(--space-2)}.plan-tile-hint{color:var(--ink-faint);font-size:var(--text-micro);font-style:italic}.plan-crew{flex-basis:100%;padding:var(--space-1);border:1px solid color-mix(in oklab,var(--crew, var(--line-strong)) 45%,transparent);border-left:3px solid var(--crew, var(--line-strong));border-radius:var(--radius-sm);background:color-mix(in oklab,var(--crew, var(--ink-faint)) 6%,transparent)}.plan-crew-name{display:block;margin:0 0 var(--space-1) .1rem;color:var(--ink-muted);font-size:var(--text-micro);font-weight:700;letter-spacing:var(--tracking-label);text-transform:uppercase}.plan-crew-names{display:flex;flex-wrap:wrap;gap:var(--space-1)}.plan-tile-add,.plan-day-add{padding:var(--space-2);border:1px dashed var(--line-strong);background:none;color:var(--ink-muted);font:inherit;font-size:var(--text-small);cursor:pointer;transition:color var(--duration-fast) var(--ease-out),border-color var(--duration-fast) var(--ease-out)}.plan-tile-add{margin:0 var(--space-2) var(--space-2);border-radius:var(--radius-sm)}.plan-day-add{border-radius:var(--radius);font-weight:600}.plan-tile-add:hover:not(:disabled),.plan-day-add:hover:not(:disabled){border-color:var(--signal);color:var(--signal)}.plan-day-add:disabled{opacity:.4;cursor:default}.plan-tile-target{position:absolute;top:0;right:0;bottom:0;left:0;border:2px dashed var(--signal);border-radius:var(--radius);background:color-mix(in oklab,var(--signal-soft) 80%,transparent);color:var(--signal);font:inherit;font-size:var(--text-small);font-weight:700;letter-spacing:var(--tracking-label);text-transform:uppercase;cursor:pointer}.plan-tile-target:hover{background:var(--signal-soft)}.plan-chip{display:inline-flex;align-items:center;gap:.15rem;max-width:100%;padding:.1rem .25rem .1rem .4rem;border:1px solid color-mix(in oklab,var(--site, var(--ink-faint)) 35%,transparent);border-radius:var(--radius-sm);background:color-mix(in oklab,var(--site, var(--ink-faint)) 12%,transparent);color:var(--ink-strong);font-size:var(--text-small);line-height:1.3;cursor:grab}.plan-chip:active{cursor:grabbing}.plan-chip.has-conflict{border-color:var(--danger);background:var(--danger-soft)}.plan-chip.is-picked{border-color:var(--signal);background:var(--signal-soft);box-shadow:0 0 0 2px var(--signal-line)}.plan-chip-name{min-width:0;padding:0;border:0;background:none;color:inherit;font:inherit;text-align:left;overflow-wrap:anywhere;cursor:inherit}.plan-chip-name:disabled{cursor:default}.plan-chip-x{padding:0 .15rem;border:0;background:none;color:var(--ink-faint);font-size:1rem;line-height:1;cursor:pointer}.plan-chip-x:hover{color:var(--danger)}.plan-chip.is-open{background:var(--surface-card);border-style:dashed;border-color:var(--line-strong);color:var(--ink-muted)}.plan-chip.is-absent{background:color-mix(in oklab,var(--abs, var(--ink-faint)) 14%,transparent);border-color:color-mix(in oklab,var(--abs, var(--ink-faint)) 40%,transparent);cursor:default}.plan-chip.is-absent em{margin-left:.15rem;color:var(--abs);font-style:normal;font-weight:700;font-size:var(--text-micro)}.plan-conflict{display:inline-flex;align-items:center;justify-content:center;width:.9rem;height:.9rem;border-radius:50%;background:var(--danger);color:#fff;font-size:.625rem;font-weight:700}.plan-rest{margin-top:var(--space-1);padding:var(--space-2);border-top:1px solid var(--line)}.plan-rest-head{display:flex;gap:var(--space-2);align-items:baseline;justify-content:space-between;margin:0 0 var(--space-1);color:var(--ink-muted);font-size:var(--text-micro);font-weight:700;letter-spacing:var(--tracking-label);text-transform:uppercase}.plan-rest-head+.plan-rest-names+.plan-rest-head{margin-top:var(--space-3)}.plan-rest-names{display:flex;flex-wrap:wrap;gap:var(--space-1)}.plan-rest-none{color:var(--ink-faint);font-size:var(--text-micro);font-style:italic}.plan-pickbar{position:sticky;bottom:0;z-index:5;display:flex;gap:var(--space-3);align-items:center;justify-content:space-between;padding:var(--space-2) var(--space-4);border:1px solid var(--signal-line);border-radius:var(--radius);background:var(--signal-soft);box-shadow:var(--shadow-float)}.plan-pickbar-text{font-size:var(--text-small)}.plan-legend{display:flex;flex-wrap:wrap;gap:var(--space-4);align-items:center;color:var(--ink-muted);font-size:var(--text-micro)}.plan-legend-item{display:inline-flex;gap:var(--space-1);align-items:center}.plan-legend-hint{color:var(--ink-muted);font-size:var(--text-micro)}@media(max-width:60rem){.plan-scroll{flex:none;scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch}.plan-board{--col-w: min(86vw, 17rem);min-height:0}.plan-day{scroll-snap-align:start}}@media(hover:none){.plan-chip{padding:.3rem .35rem .3rem .55rem;font-size:var(--text-base)}.plan-chip-x{padding:0 .4rem;font-size:1.2rem}.plan-tile-x{padding:.25rem .5rem;font-size:var(--text-base)}.plan-tile-add,.plan-day-add{padding:var(--space-3)}.plan-tile-open{padding:var(--space-1) 0}}.modal.sdd-modal{width:min(72rem,calc(100vw - 2rem));height:min(92vh,60rem)}.sdd-range{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2) var(--space-3);padding:var(--space-3);margin-bottom:var(--space-4);background:var(--surface-sunken);border-radius:var(--radius)}.sdd-range label{font-weight:600}.sdd-range .muted{font-size:var(--text-small);color:var(--ink-muted)}.sdd-groups{display:grid;gap:var(--space-4)}.sdd-group h3{margin:0 0 var(--space-2);padding-left:var(--space-2);border-left:3px solid var(--crew, var(--line-strong));font-size:var(--text-small);color:var(--ink-muted);text-transform:uppercase;letter-spacing:.04em}.sdd-group-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);margin-bottom:var(--space-2)}.sdd-group-head h3{margin:0}.sdd-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(15rem,1fr));gap:var(--space-1)}.sdd-item{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2);border:1px solid transparent;border-radius:var(--radius-sm);cursor:pointer}.sdd-item:hover{background:var(--surface-sunken)}.sdd-item.is-on{background:var(--signal-soft);border-color:var(--signal-line)}.sdd-item-name{font-weight:600}.sdd-item-role{color:var(--ink-muted);font-size:var(--text-micro)}.sdd-item-flag{margin-left:auto;padding:.1rem .35rem;border-radius:var(--radius-sm);font-size:var(--text-micro);white-space:nowrap}.sdd-item-flag.is-absent{background:var(--warn-soft);color:var(--warn)}.sdd-item-flag.is-elsewhere{background:var(--surface-sunken);color:var(--ink-muted)}.sdd-item:has(input:disabled){opacity:.55;cursor:not-allowed}@media(hover:none){.sdd-item{padding:var(--space-3) var(--space-2)}}@media(max-width:34rem){.sdd-list{grid-template-columns:minmax(0,1fr)}.sdd-item{flex-wrap:wrap;row-gap:var(--space-1)}.sdd-item-name{flex:1 1 auto;min-width:0}.sdd-item-flag{margin-left:0;white-space:normal}.sdd-range .input{width:100%}}.modal.asd-modal{width:min(72rem,calc(100vw - 2rem));height:min(85vh,52rem)}.asd-quick{flex-basis:100%;display:flex;flex-wrap:wrap;gap:var(--space-2) var(--space-5)}.asd-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(14rem,1fr));gap:var(--space-2)}.asd-item{display:grid;gap:.1rem;width:100%;padding:var(--space-3);border:1px solid var(--line);border-left:4px solid var(--site, var(--line-strong));border-radius:var(--radius);background:var(--surface-card);font:inherit;text-align:left;cursor:pointer;transition:border-color var(--duration-fast) var(--ease-out),box-shadow var(--duration-fast) var(--ease-out)}.asd-item:hover:not(:disabled){border-color:var(--signal);box-shadow:var(--shadow-raised)}.asd-item:disabled{opacity:.5;cursor:default}.asd-item-name{color:var(--ink-strong);font-weight:700}.asd-item-note{color:var(--ink-muted);font-size:var(--text-micro)}.print-head h2{font-size:14pt}.print-head span{font-size:9pt}.vs-toolbar{display:flex;flex-wrap:wrap;gap:var(--space-3);align-items:center;padding:var(--space-3) var(--space-4);border:1px solid var(--line);border-radius:var(--radius);background:var(--surface-card)}.vs-range-label{color:var(--ink-strong);font-size:var(--text-lead);font-weight:700;letter-spacing:var(--tracking-tight)}.vs-readonly-badge{padding:.2rem .6rem;border:1px solid var(--line-strong);border-radius:999px;color:var(--ink-muted);font-size:var(--text-micro);font-weight:700;letter-spacing:var(--tracking-label);text-transform:uppercase}.vs-scroll{flex:1;min-height:0;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface-sunken);overflow:auto;overscroll-behavior:contain}.vs-canvas{--col-w: 19rem;display:flex;flex-direction:column;min-width:max-content;min-height:100%}.vs-head-row{position:sticky;top:0;z-index:2;display:flex}.vs-head-cell{display:flex;align-items:baseline;gap:var(--space-2);flex:0 0 var(--col-w);min-width:0;padding:var(--space-3);background:var(--surface-card);border-right:1px solid var(--line);border-bottom:1px solid var(--line-strong)}.vs-head-cell:last-child{border-right:0}.vs-head-cell.is-today{box-shadow:inset 0 3px 0 var(--signal)}.vs-fixed-band{display:grid;grid-template-columns:repeat(var(--cols),var(--col-w));border-bottom:2px solid var(--line-strong)}.vs-fixed-cell{min-width:0;padding:var(--space-2) var(--space-3);background:color-mix(in oklab,var(--site, var(--ink-faint)) 15%,var(--surface-page));border-right:1px solid var(--line);border-bottom:1px solid var(--line);box-shadow:inset 0 3px 0 var(--site, var(--line-strong))}.vs-fixed-cell.is-weekend{background:color-mix(in oklab,var(--site, var(--ink-faint)) 15%,var(--surface-sunken))}.vs-fixed-name{display:flex;align-items:baseline;gap:var(--space-2);color:color-mix(in oklab,var(--site, var(--ink)) 55%,var(--ink-strong));font-size:var(--text-small);font-weight:800;letter-spacing:var(--tracking-label);text-transform:uppercase}.vs-fixed-name em{padding:.05rem .4rem;border-radius:var(--radius-sm);background:color-mix(in oklab,var(--site, var(--ink-faint)) 22%,transparent);color:var(--ink);font-size:var(--text-micro);font-style:normal;font-weight:700}.vs-fixed-note{margin:.15rem 0 0;color:var(--ink);font-size:var(--text-small);line-height:1.4;white-space:pre-line;overflow-wrap:anywhere}.vs-fixed-empty{display:block;padding:.2rem 0;color:var(--ink-faint);font-size:var(--text-small)}.vs-board{display:flex;align-items:stretch;flex:1}.vs-day{display:flex;flex-direction:column;flex:0 0 var(--col-w);min-width:0;background:var(--surface-page);border-right:1px solid var(--line)}.vs-day:last-child{border-right:0}.vs-day.is-weekend{background:var(--surface-sunken)}.vs-day.is-holiday{background:var(--feiertag-soft)}.vs-day-weekday{color:var(--ink-strong);font-size:var(--text-lead);font-weight:700;letter-spacing:var(--tracking-tight)}.vs-day-date{color:var(--ink-muted);font-size:var(--text-small)}.vs-day-holiday{margin-left:auto;color:var(--feiertag);font-size:var(--text-micro);font-weight:700}.vs-day-body{display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-3)}.vs-day-empty{margin:0;padding:var(--space-5) var(--space-2);color:var(--ink-faint);font-size:var(--text-small);text-align:center}.vs-tile{border:1px solid var(--line);border-left:5px solid var(--site, var(--line-strong));border-radius:var(--radius);background:var(--surface-card);box-shadow:var(--shadow-raised);overflow:hidden}.vs-tile-head{display:flex;align-items:baseline;gap:var(--space-2);padding:var(--space-2) var(--space-3);background:color-mix(in oklab,var(--site, var(--ink-faint)) 10%,transparent);border-bottom:1px solid var(--line-hair)}.vs-tile-name{min-width:0;color:var(--ink-strong);font-size:var(--text-lead);font-weight:700;line-height:1.25;overflow-wrap:anywhere}.vs-tile-count{margin-left:auto;padding:.05rem .4rem;border-radius:var(--radius-sm);background:color-mix(in oklab,var(--site, var(--ink-faint)) 16%,transparent);color:var(--ink);font-size:var(--text-micro);font-weight:700}.vs-tile-note{margin:0;padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--line-hair);background:color-mix(in oklab,var(--site, var(--ink-faint)) 5%,transparent);color:var(--ink);font-size:var(--text-small);line-height:1.45;white-space:pre-line;overflow-wrap:anywhere}.vs-tile-hint{margin:0;padding:var(--space-2) var(--space-3);color:var(--ink-faint);font-size:var(--text-small);font-style:italic}.vs-names{list-style:none;margin:0;padding:var(--space-1) 0}.vs-tile .vs-names{padding:var(--space-1) var(--space-3) var(--space-2)}.vs-name{display:flex;align-items:center;gap:var(--space-2);padding:.2rem 0;color:var(--ink);font-size:var(--text-base);line-height:1.4;overflow-wrap:anywhere}.vs-name.has-conflict{color:var(--danger);font-weight:600}.vs-name.is-absent em{margin-left:auto;color:var(--abs, var(--ink-muted));font-size:var(--text-micro);font-style:normal;font-weight:700}.vs-names.is-muted .vs-name{color:var(--ink-muted);font-size:var(--text-small);padding:.1rem 0}.vs-rest{padding:var(--space-2) var(--space-1) 0;border-top:1px solid var(--line)}.vs-rest-head{margin:0 0 var(--space-1);color:var(--ink-muted);font-size:var(--text-micro);font-weight:700;letter-spacing:var(--tracking-label);text-transform:uppercase}.vs-legend{display:flex;flex-wrap:wrap;gap:var(--space-4);align-items:center;color:var(--ink-muted);font-size:var(--text-micro)}.vs-legend-item{display:inline-flex;gap:var(--space-1);align-items:center}@media(max-width:60rem){.vs-scroll{flex:none;scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch}.vs-canvas{--col-w: min(88vw, 19rem);min-height:0}.vs-day{scroll-snap-align:start}.vs-name{font-size:var(--text-lead);padding:.3rem 0}}.stat-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(8rem,1fr));gap:1px;padding:1px;border:1px solid var(--line);border-radius:var(--radius);background:var(--line-hair);overflow:hidden}.stat{display:flex;flex-direction:column;gap:var(--space-1);padding:var(--space-3);background:var(--surface-card)}.stat strong{color:var(--ink-strong);font-size:var(--text-lead);font-weight:700;letter-spacing:var(--tracking-tight);line-height:1}.stat-signal strong{color:var(--signal)}.stat-danger strong{color:var(--danger)}.upcoming{padding:var(--space-4)}.upcoming-head{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:var(--space-3)}.upcoming-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(17rem,1fr));gap:var(--space-2)}.upcoming-item{display:grid;grid-template-columns:auto 1fr;gap:.125rem var(--space-2);align-items:baseline;padding:var(--space-2) var(--space-3);border:1px solid var(--line);border-left:3px solid var(--abs, var(--line-strong));border-radius:var(--radius-sm);background:var(--surface-card);font:inherit;text-align:left;cursor:pointer;transition:background var(--duration-fast) var(--ease-out),box-shadow var(--duration-fast) var(--ease-out)}.upcoming-item:hover{background:var(--surface-raised);box-shadow:var(--shadow-raised)}.upcoming-type{color:var(--abs);font-size:var(--text-micro);font-weight:700;letter-spacing:var(--tracking-label);text-transform:uppercase}.upcoming-name{color:var(--ink-strong);font-size:var(--text-small);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.upcoming-dates{grid-column:1 / -1;color:var(--ink-muted);font-size:var(--text-tiny)}.pill{display:inline-block;min-width:3.25rem;padding:.0625rem var(--space-2);border-radius:var(--radius-sm);background:var(--surface-sunken);font-weight:600;text-align:right}.pill-ok{background:var(--ok-soft);color:var(--ok)}.pill-warn{background:var(--warn-soft);color:var(--warn)}.pill-danger{background:var(--danger-soft);color:var(--danger)}.table tbody tr.clickable{cursor:pointer}.table-foot{padding:var(--space-3) var(--space-4);border-top:1px solid var(--line-hair);background:var(--surface-raised);border-radius:0 0 var(--radius) var(--radius)}.badge.status-beantragt{background:var(--warn-soft);color:var(--warn)}.badge.status-genehmigt{background:var(--ok-soft);color:var(--ok)}.badge.status-abgelehnt{background:var(--surface-sunken);color:var(--ink-muted)}.avail-scroll{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface-card);overflow:auto;-webkit-user-select:none;user-select:none}.avail-grid{--name-w: 13rem;--cell-w: 2.1rem;display:grid;grid-template-columns:var(--name-w) repeat(var(--day-count),minmax(var(--cell-w),1fr))}.avail-corner,.avail-week,.avail-dayhead{position:sticky;top:0;background:var(--surface-card);z-index:2}.avail-corner{left:0;z-index:4;border-right:1px solid var(--line-strong);padding:var(--space-2) var(--space-3);color:var(--ink-muted);font-size:var(--text-micro);font-weight:700;text-transform:uppercase;letter-spacing:.04em;display:flex;align-items:flex-end}.avail-corner-weeks{top:0;border-right:1px solid var(--line-strong);border-bottom:0}.avail-week{padding:var(--space-2) var(--space-2) var(--space-1);border-left:1px solid var(--line);color:var(--ink-muted);font-size:var(--text-micro);font-weight:700;white-space:nowrap}.avail-corner:not(.avail-corner-weeks),.avail-dayhead{top:1.9rem;border-bottom:1px solid var(--line-strong)}.avail-dayhead{display:grid;justify-items:center;gap:0;padding:var(--space-1) 0;border-left:1px solid var(--line-hair);line-height:1.2}.avail-daynum{font-weight:700;color:var(--ink-strong)}.avail-dayname{font-size:var(--text-micro);color:var(--ink-faint)}.avail-dayhead.is-weekend{background:var(--surface-sunken)}.avail-dayhead.is-holiday{background:var(--feiertag-soft)}.avail-name{position:sticky;left:0;z-index:1;display:flex;flex-direction:column;justify-content:center;gap:0;padding:var(--space-1) var(--space-3);background:var(--surface-card);border-right:1px solid var(--line-strong);border-bottom:1px solid var(--line-hair)}.avail-name-text{border:0;background:none;padding:0;text-align:left;font:inherit;font-weight:600;color:var(--ink-strong);cursor:pointer}.avail-name-text:hover{color:var(--signal);text-decoration:underline}.avail-name-role{color:var(--ink-faint);font-size:var(--text-micro)}.avail-cell{min-height:2.1rem;border-left:1px solid var(--line-hair);border-bottom:1px solid var(--line-hair);display:grid;place-items:center;cursor:pointer;transition:filter var(--duration-fast) var(--ease-out)}.avail-cell.is-free{background:color-mix(in oklab,var(--ok) 22%,transparent)}.avail-cell.is-blocked{background:color-mix(in oklab,var(--danger) 28%,transparent);color:color-mix(in oklab,var(--danger) 75%,var(--ink-strong))}.avail-cell.is-blocked.is-pending{background:repeating-linear-gradient(45deg,color-mix(in oklab,var(--danger) 26%,transparent) 0 4px,transparent 4px 8px)}.avail-cell.is-weekend.is-free,.avail-cell.is-holiday.is-free{background:var(--surface-sunken)}.avail-cell.is-holiday.is-free{background:repeating-linear-gradient(45deg,var(--line-hair) 0 3px,var(--surface-sunken) 3px 7px)}.avail-cell:hover{filter:brightness(.94)}.avail-cell.is-drag{box-shadow:inset 0 0 0 2px var(--signal)}.avail-cell:focus-visible{outline:2px solid var(--signal);outline-offset:-2px}.avail-mark{font-size:var(--text-micro);font-weight:700}.avail-legend{display:flex;flex-wrap:wrap;gap:var(--space-4);align-items:center;color:var(--ink-muted);font-size:var(--text-micro)}.avail-legend-item{display:inline-flex;gap:var(--space-2);align-items:center}.avail-swatch{width:.9rem;height:.9rem;border-radius:3px;border:1px solid var(--line)}.avail-swatch.is-free{background:color-mix(in oklab,var(--ok) 22%,transparent)}.avail-swatch.is-blocked{background:color-mix(in oklab,var(--danger) 28%,transparent)}.avail-swatch.is-pending{background:repeating-linear-gradient(45deg,color-mix(in oklab,var(--danger) 26%,transparent) 0 3px,transparent 3px 6px)}.sdd-item.is-blocked .sdd-item-name{text-decoration:line-through;text-decoration-color:var(--danger)}.plan-toolbar input[type=search]{flex:0 1 16rem;min-width:10rem}.filter-bar{display:flex;flex-wrap:wrap;gap:var(--space-3);align-items:center;padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--line);background:var(--surface-raised);border-radius:var(--radius) var(--radius) 0 0}.filter-search{flex:1 1 16rem;min-width:0}.filter-select{flex:0 1 12rem}.cell-name{display:flex;gap:var(--space-2);align-items:center}.row-inactive td{opacity:.55}.row-actions{display:flex;gap:var(--space-2);justify-content:flex-end;opacity:0;transition:opacity var(--duration-fast) var(--ease-out)}tr:hover .row-actions,tr:focus-within .row-actions{opacity:1}@media(hover:none){.row-actions{opacity:1}}.crew-strip{display:grid;grid-template-columns:repeat(auto-fill,minmax(13rem,1fr));gap:var(--space-3)}.crew-card{position:relative;display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-4);padding-left:calc(var(--space-4) + 3px);border:1px solid var(--line);border-radius:var(--radius);background:var(--surface-card);overflow:hidden;transition:box-shadow var(--duration-fast) var(--ease-out)}.crew-card:hover{box-shadow:var(--shadow-raised)}.crew-card:before{content:"";position:absolute;top:0;bottom:0;left:0;width:3px;background:var(--crew, var(--line-strong))}.crew-card-plain:before{background:var(--line-strong)}.crew-card-head{display:flex;gap:var(--space-2);align-items:center;justify-content:space-between}.crew-card h3{font-size:var(--text-base)}.crew-count{color:var(--ink-strong);font-size:1.5rem;font-weight:700;letter-spacing:var(--tracking-tight);line-height:1}.crew-count span{color:var(--ink-muted);font-size:var(--text-tiny);font-weight:500;letter-spacing:0}.crew-card-actions{display:flex;gap:var(--space-1);margin-top:auto;margin-left:calc(var(--space-3) * -1);opacity:0;transition:opacity var(--duration-fast) var(--ease-out)}.crew-card:hover .crew-card-actions,.crew-card:focus-within .crew-card-actions{opacity:1}@media(hover:none){.crew-card-actions{opacity:1}}.site-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(19rem,1fr));gap:var(--space-3)}.site-card{position:relative;display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-4);padding-top:calc(var(--space-4) + 2px);border:1px solid var(--line);border-radius:var(--radius);background:var(--surface-card);transition:box-shadow var(--duration-fast) var(--ease-out),border-color var(--duration-fast) var(--ease-out)}.site-card:hover{border-color:var(--line-strong);box-shadow:var(--shadow-raised)}.site-card:before{content:"";position:absolute;top:0;right:0;left:0;height:3px;background:var(--site, var(--line-strong));border-radius:var(--radius) var(--radius) 0 0}.site-card.status-abgeschlossen,.site-card.status-pausiert{background:var(--surface-raised)}.site-card.status-abgeschlossen .site-name{color:var(--ink-muted)}.site-card-top{display:flex;gap:var(--space-2);align-items:center;justify-content:space-between}.badge-aktiv{background:var(--ok-soft);color:var(--ok)}.badge-geplant{background:var(--signal-soft);color:var(--signal)}.badge-pausiert{background:var(--warn-soft);color:var(--warn)}.badge-abgeschlossen{background:var(--surface-sunken);color:var(--ink-muted)}.site-name{font-size:var(--text-lead);line-height:1.25}.site-meta{display:grid;grid-template-columns:auto 1fr;gap:.25rem var(--space-3);margin:0;font-size:var(--text-tiny)}.site-meta dt{color:var(--ink-faint);font-weight:600;letter-spacing:.02em;white-space:nowrap}.site-meta dd{margin:0;color:var(--ink)}.site-notes{padding-top:var(--space-2);border-top:1px solid var(--line-hair);color:var(--ink-muted);font-size:var(--text-tiny);line-height:1.5}.site-card-actions{display:flex;gap:var(--space-2);margin-top:auto;padding-top:var(--space-2);opacity:0;transition:opacity var(--duration-fast) var(--ease-out)}.site-card:hover .site-card-actions,.site-card:focus-within .site-card-actions{opacity:1}@media(hover:none){.site-card-actions{opacity:1}}.site-order header h2{margin:0;font-size:var(--text-lead)}.site-order header .muted{margin:var(--space-1) 0 var(--space-3);color:var(--ink-muted);font-size:var(--text-small)}.site-order-list{list-style:none;margin:0;padding:0;display:grid;gap:var(--space-1);max-width:34rem}.site-order-list li{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);background:var(--surface-sunken);border-radius:var(--radius-sm);border-left:4px solid var(--site, var(--line-strong))}.site-order-rank{color:var(--ink-faint);font-size:var(--text-micro);min-width:1.2rem}.site-order-name{font-weight:600}.site-order-buttons{margin-left:auto;display:inline-flex;gap:var(--space-1)}.settings-card{padding:var(--space-5)}.settings-head{display:flex;flex-wrap:wrap;gap:var(--space-3);align-items:flex-start;justify-content:space-between;margin-bottom:var(--space-4);padding-bottom:var(--space-3);border-bottom:1px solid var(--line-hair)}.settings-head h2{font-size:var(--text-lead);margin-bottom:.125rem}.settings-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(13rem,1fr));gap:var(--space-4);align-items:end;max-width:48rem}.settings-form .span-2{grid-column:1 / -1}.audit-list{display:flex;flex-direction:column;gap:1px;margin:0 0 var(--space-3);padding:0;list-style:none;background:var(--line-hair);border:1px solid var(--line-hair);border-radius:var(--radius);overflow:hidden}.audit-list li{display:grid;grid-template-columns:10rem 9rem 1fr;gap:var(--space-3);align-items:baseline;padding:var(--space-2) var(--space-3);background:var(--surface-card);font-size:var(--text-tiny)}.audit-time{color:var(--ink-faint);white-space:nowrap}.audit-actor{color:var(--ink-strong);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.audit-summary{color:var(--ink-muted)}@media(max-width:46rem){.audit-list li{grid-template-columns:minmax(0,1fr);gap:.125rem}}:root{color-scheme:light;--surface-page: #f2f1ee;--surface-card: #ffffff;--surface-sunken: #e9e7e2;--surface-raised: #fbfaf9;--surface-inverse: #0c0c0d;--ink-strong: #0c0c0d;--ink: #232326;--ink-muted: #6b6863;--ink-faint: #9c9891;--ink-inverse: #f7f6f4;--line-hair: #eae7e1;--line: #dcd8d1;--line-strong: #bfbab1;--signal: #d4500a;--signal-hover: #b64308;--signal-ink: #ffffff;--signal-soft: #fdf0e8;--signal-line: #f3c3a3;--ok: #15803d;--ok-soft: #eaf6ee;--warn: #a45c05;--warn-soft: #fdf3e3;--danger: #b42318;--danger-hover: #96190f;--danger-soft: #fdeceb;--danger-line: #f2c4c0;--abs-urlaub: #0f766e;--abs-urlaub-soft: #e3f2f0;--abs-krank: #b42318;--abs-krank-soft: #fdeceb;--abs-frei: #57534e;--abs-frei-soft: #eeecea;--abs-schule: #6d28d9;--abs-schule-soft: #f0eafc;--abs-sonstiges: #92650a;--abs-sonstiges-soft: #faf1de;--feiertag: #7c3aed;--feiertag-soft: #f2ecfd;--font-sans: "Helvetica Neue", "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;--font-numeric: "SF Mono", "JetBrains Mono", ui-monospace, "Menlo", monospace;--text-micro: .6875rem;--text-tiny: .75rem;--text-small: .8125rem;--text-base: .875rem;--text-lead: 1rem;--text-title: clamp(1.25rem, 1.1rem + .5vw, 1.5rem);--text-display: clamp(1.75rem, 1.3rem + 1.8vw, 2.75rem);--tracking-label: .09em;--tracking-tight: -.015em;--tracking-display: -.03em;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.5rem;--space-6: 2rem;--space-7: 3rem;--radius-sm: 2px;--radius: 4px;--radius-lg: 8px;--shadow-raised: 0 1px 2px rgb(12 12 13 / .06), 0 1px 1px rgb(12 12 13 / .04);--shadow-float: 0 4px 12px rgb(12 12 13 / .1), 0 1px 3px rgb(12 12 13 / .06);--shadow-modal: 0 24px 48px -12px rgb(12 12 13 / .28), 0 0 0 1px rgb(12 12 13 / .06);--shadow-drag: 0 8px 20px rgb(12 12 13 / .22);--duration-fast: .12s;--duration: .2s;--ease-out: cubic-bezier(.16, 1, .3, 1);--plan-name-width: 15rem;--plan-row-height: 3rem;--plan-day-min: 5.5rem;--topbar-height: 3.5rem;--tabbar-height: 2.75rem}@media(prefers-reduced-motion:reduce){:root{--duration-fast: 1ms;--duration: 1ms}}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);min-height:2.25rem;padding:0 var(--space-4);border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--surface-card);color:var(--ink-strong);font:inherit;font-size:var(--text-small);font-weight:600;letter-spacing:.01em;white-space:nowrap;cursor:pointer;transition:background var(--duration-fast) var(--ease-out),border-color var(--duration-fast) var(--ease-out),transform var(--duration-fast) var(--ease-out),box-shadow var(--duration-fast) var(--ease-out)}.btn:hover:not(:disabled){background:var(--surface-raised);border-color:var(--ink-faint)}.btn:active:not(:disabled){transform:translateY(1px)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:var(--surface-inverse);border-color:var(--surface-inverse);color:var(--ink-inverse)}.btn-primary:hover:not(:disabled){background:#26262a;border-color:#26262a}.btn-signal{background:var(--signal);border-color:var(--signal);color:var(--signal-ink)}.btn-signal:hover:not(:disabled){background:var(--signal-hover);border-color:var(--signal-hover)}.btn-danger{background:var(--surface-card);border-color:var(--danger-line);color:var(--danger)}.btn-danger:hover:not(:disabled){background:var(--danger-soft);border-color:var(--danger)}.btn-ghost{background:transparent;border-color:transparent;color:var(--ink-muted)}.btn-ghost:hover:not(:disabled){background:var(--surface-sunken);border-color:transparent;color:var(--ink-strong)}.btn-small{min-height:1.75rem;padding:0 var(--space-3);font-size:var(--text-tiny)}.btn-icon{min-height:2.25rem;width:2.25rem;padding:0}.btn-icon.btn-small{min-height:1.75rem;width:1.75rem}.field{display:flex;flex-direction:column;gap:var(--space-1);min-width:0}.field>.label{margin-bottom:.125rem}.input,.select,.textarea{width:100%;min-height:2.25rem;padding:.375rem var(--space-3);border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--surface-card);color:var(--ink-strong);font:inherit;font-size:var(--text-small);transition:border-color var(--duration-fast) var(--ease-out),box-shadow var(--duration-fast) var(--ease-out)}.input:hover,.select:hover,.textarea:hover{border-color:var(--ink-faint)}.input:focus,.select:focus,.textarea:focus{border-color:var(--signal);box-shadow:0 0 0 3px var(--signal-soft);outline:none}.input:disabled,.select:disabled,.textarea:disabled{background:var(--surface-sunken);color:var(--ink-muted);cursor:not-allowed}.input::placeholder,.textarea::placeholder{color:var(--ink-faint)}.textarea{min-height:4.5rem;resize:vertical;line-height:1.5}.select{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding-right:var(--space-6);background-image:linear-gradient(45deg,transparent 50%,var(--ink-muted) 50%),linear-gradient(135deg,var(--ink-muted) 50%,transparent 50%);background-position:calc(100% - 1rem) 55%,calc(100% - .7rem) 55%;background-size:5px 5px,5px 5px;background-repeat:no-repeat;cursor:pointer}.field-error{color:var(--danger);font-size:var(--text-tiny);font-weight:500}.input[aria-invalid=true],.select[aria-invalid=true],.textarea[aria-invalid=true]{border-color:var(--danger)}.input[aria-invalid=true]:focus,.select[aria-invalid=true]:focus,.textarea[aria-invalid=true]:focus{box-shadow:0 0 0 3px var(--danger-soft)}.hint{color:var(--ink-muted);font-size:var(--text-tiny)}.check{display:inline-flex;align-items:center;gap:var(--space-2);font-size:var(--text-small);cursor:pointer;-webkit-user-select:none;user-select:none}.check input{width:1rem;height:1rem;accent-color:var(--signal);cursor:pointer}.segmented{display:inline-flex;padding:2px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface-sunken)}.segmented button{padding:.25rem var(--space-3);border:none;border-radius:var(--radius-sm);background:transparent;color:var(--ink-muted);font:inherit;font-size:var(--text-tiny);font-weight:600;cursor:pointer;transition:background var(--duration-fast) var(--ease-out),color var(--duration-fast) var(--ease-out)}.segmented button:hover{color:var(--ink-strong)}.segmented button[aria-pressed=true]{background:var(--surface-card);color:var(--ink-strong);box-shadow:var(--shadow-raised)}.color-grid{display:flex;flex-wrap:wrap;gap:var(--space-2)}.color-chip{width:1.75rem;height:1.75rem;padding:0;border:2px solid transparent;border-radius:var(--radius);box-shadow:inset 0 0 0 1px #0c0c0d26;cursor:pointer;transition:transform var(--duration-fast) var(--ease-out)}.color-chip:hover{transform:scale(1.1)}.color-chip[aria-pressed=true]{border-color:var(--ink-strong);transform:scale(1.1)}@media print{@page{size:A4 landscape;margin:10mm}body{background:#fff;font-size:9pt}.no-print,.topbar,.tabbar,.site-rail,.toasts,.skip-link{display:none!important}.app-main{padding:0!important;overflow:visible!important}.print-only{display:block!important}.print-head{display:flex!important;align-items:baseline;justify-content:space-between;margin-bottom:6mm;padding-bottom:2mm;border-bottom:1.5pt solid #000}.plan-scroll{overflow:visible!important;max-height:none!important;border:.5pt solid #999;background:#fff}.plan-board{display:grid!important;grid-template-columns:repeat(auto-fit,minmax(0,1fr));min-height:0!important}.plan-day{flex:none!important;background:#fff;break-inside:avoid}.plan-day-head{position:static!important}.plan-tile{box-shadow:none!important;break-inside:avoid}.plan-tile-add,.plan-day-add,.plan-tile-x,.plan-chip-x,.plan-tile-target{display:none!important}.card{border:.5pt solid #999;box-shadow:none}*{-webkit-print-color-adjust:exact;print-color-adjust:exact}}.print-only{display:none}*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--surface-page);color:var(--ink);font-family:var(--font-sans);font-size:var(--text-base);line-height:1.5;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;font-variant-numeric:tabular-nums}h1,h2,h3,h4{margin:0;color:var(--ink-strong);font-weight:700;letter-spacing:var(--tracking-tight);line-height:1.15}h1{font-size:var(--text-display);letter-spacing:var(--tracking-display)}h2{font-size:var(--text-title)}h3{font-size:var(--text-lead)}p{margin:0}.label{display:block;color:var(--ink-muted);font-size:var(--text-micro);font-weight:700;letter-spacing:var(--tracking-label);text-transform:uppercase}.muted{color:var(--ink-muted)}.faint{color:var(--ink-faint)}.numeric{font-variant-numeric:tabular-nums}.nowrap{white-space:nowrap}:where(a,button,input,select,textarea,[tabindex]):focus-visible{outline:2px solid var(--signal);outline-offset:2px;border-radius:var(--radius-sm)}::selection{background:var(--signal);color:var(--signal-ink)}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.skip-link{position:absolute;top:-3rem;left:var(--space-4);z-index:100;padding:var(--space-2) var(--space-4);background:var(--surface-inverse);color:var(--ink-inverse);border-radius:var(--radius);font-weight:600;text-decoration:none;transition:top var(--duration) var(--ease-out)}.skip-link:focus{top:var(--space-3)}.card{background:var(--surface-card);border:1px solid var(--line);border-radius:var(--radius)}.section-head{display:flex;flex-wrap:wrap;gap:var(--space-3);align-items:baseline;justify-content:space-between;margin-bottom:var(--space-4)}.stack{display:flex;flex-direction:column;gap:var(--space-4)}.row{display:flex;gap:var(--space-2);align-items:center}.row-wrap{flex-wrap:wrap}.spacer{flex:1}.table{width:100%;border-collapse:collapse;font-size:var(--text-small)}.table th{padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--line-strong);color:var(--ink-muted);font-size:var(--text-micro);font-weight:700;letter-spacing:var(--tracking-label);text-align:left;text-transform:uppercase;white-space:nowrap}.table td{padding:var(--space-3);border-bottom:1px solid var(--line-hair);vertical-align:middle}.table tbody tr:last-child td{border-bottom:none}.table tbody tr{transition:background var(--duration-fast) var(--ease-out)}.table tbody tr:hover{background:var(--surface-raised)}.table .align-right{text-align:right}.table-scroll{overflow-x:auto}.badge{display:inline-flex;align-items:center;gap:var(--space-1);padding:.125rem var(--space-2);border-radius:var(--radius-sm);background:var(--surface-sunken);color:var(--ink);font-size:var(--text-micro);font-weight:700;letter-spacing:.03em;text-transform:uppercase;white-space:nowrap}.swatch{flex:none;width:.75rem;height:.75rem;border-radius:var(--radius-sm);box-shadow:inset 0 0 0 1px #0c0c0d26}.empty{padding:var(--space-7) var(--space-5);color:var(--ink-muted);text-align:center}.empty h3{margin-bottom:var(--space-2);color:var(--ink)}
