@font-face{font-family:Figtree Variable;font-style:normal;font-display:swap;font-weight:300 900;src:url(/assets/figtree-latin-ext-wght-normal-DCwSJGxG.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Figtree Variable;font-style:normal;font-display:swap;font-weight:300 900;src:url(/assets/figtree-latin-wght-normal-D_ZTVpCC.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{color-scheme:light dark;--font: "Figtree Variable", "Figtree", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--bg: #f3f6f1;--surface: #ffffff;--surface-2: #f8faf6;--surface-sunk: #eaefe7;--text: #1c2b20;--muted: #5e6d61;--faint: #8a978c;--line: #e0e7dd;--line-strong: #c9d4c5;--primary: #2f5d3a;--primary-hover: #264d30;--on-primary: #ffffff;--primary-soft: #dcebdd;--primary-text: #2f5d3a;--bad: #b83a4b;--bad-bg: #f8e1e4;--warn: #a86a12;--warn-bg: #f8ecd6;--ok: #2f7a45;--ok-bg: #e0f0e3;--focus: 0 0 0 3px color-mix(in srgb, var(--primary) 35%, transparent);--shadow-sm: 0 1px 2px rgb(28 43 32 / 6%), 0 1px 1px rgb(28 43 32 / 4%);--shadow-md: 0 4px 14px rgb(28 43 32 / 8%), 0 1px 3px rgb(28 43 32 / 6%);--shadow-lg: 0 18px 50px rgb(28 43 32 / 18%), 0 4px 12px rgb(28 43 32 / 8%);--radius-sm: 8px;--radius: 12px;--radius-lg: 18px;--ease: cubic-bezier(.2, .8, .2, 1);--ease-spring: cubic-bezier(.34, 1.4, .64, 1);--dur: .18s;--chip-0-bg: #dcebdd;--chip-0-fg: #1f4a2a;--chip-1-bg: #f3e3d3;--chip-1-fg: #6b4320;--chip-2-bg: #e1e6f2;--chip-2-fg: #263b6b;--chip-3-bg: #f2dde3;--chip-3-fg: #6e2238;--chip-4-bg: #e9eed5;--chip-4-fg: #46521a;--chip-5-bg: #d6ecea;--chip-5-fg: #145350;--chip-6-bg: #e7e1f2;--chip-6-fg: #45306e;--chip-7-bg: #f8e0d2;--chip-7-fg: #7a3a1a;--chip-8-bg: #dcebf5;--chip-8-fg: #1d4a6b;--chip-9-bg: #e8e4dd;--chip-9-fg: #4a4237}@media(prefers-color-scheme:dark){:root{--bg: #0f1511;--surface: #18211b;--surface-2: #1c261f;--surface-sunk: #131a15;--text: #e3eee5;--muted: #93a396;--faint: #6d7b70;--line: #243028;--line-strong: #324136;--primary: #7fbf8e;--primary-hover: #95cda2;--on-primary: #0f2415;--primary-soft: #21382a;--primary-text: #8fcb9d;--bad: #f07a8a;--bad-bg: #3a1a20;--warn: #e6b260;--warn-bg: #33270f;--ok: #7fbf8e;--ok-bg: #1d3324;--shadow-sm: 0 1px 2px rgb(0 0 0 / 30%);--shadow-md: 0 4px 14px rgb(0 0 0 / 35%), 0 1px 3px rgb(0 0 0 / 25%);--shadow-lg: 0 18px 50px rgb(0 0 0 / 55%), 0 4px 12px rgb(0 0 0 / 30%);--chip-0-bg: #21382a;--chip-0-fg: #cde8d3;--chip-1-bg: #3d3022;--chip-1-fg: #f0d9bf;--chip-2-bg: #262e43;--chip-2-fg: #cbd6f0;--chip-3-bg: #3e2630;--chip-3-fg: #f2cbd7;--chip-4-bg: #33391e;--chip-4-fg: #dde6b8;--chip-5-bg: #1d3836;--chip-5-fg: #bfe6e1;--chip-6-bg: #302845;--chip-6-fg: #dcd0f2;--chip-7-bg: #40291e;--chip-7-fg: #f5cdb8;--chip-8-bg: #1f3343;--chip-8-fg: #c5dff2;--chip-9-bg: #35312b;--chip-9-fg: #e2dbcf}}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%}body{margin:0;font-family:var(--font);font-size:15px;line-height:1.5;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;min-height:100dvh}h1,h2,h3,h4{margin:0;line-height:1.2;font-weight:650;letter-spacing:-.01em}p{margin:0}a{color:var(--primary-text)}button,input,select,textarea{font:inherit;color:inherit}:focus-visible{outline:none;box-shadow:var(--focus)}::selection{background:color-mix(in srgb,var(--primary) 30%,transparent)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.muted{color:var(--muted)}.small{font-size:13px}.stack{display:flex;flex-direction:column;gap:12px}.row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.spacer{flex:1}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:38px;padding:0 14px;border-radius:10px;border:1px solid var(--line-strong);background:var(--surface);color:var(--text);font-weight:560;font-size:14px;cursor:pointer;white-space:nowrap;transition:background var(--dur) var(--ease),border-color var(--dur) var(--ease),transform .12s var(--ease),box-shadow var(--dur) var(--ease),color var(--dur) var(--ease);-webkit-user-select:none;user-select:none}a.btn{text-decoration:none}.btn:hover{background:var(--surface-2);border-color:var(--faint)}.btn:active{transform:scale(.97)}.btn svg{width:17px;height:17px;flex:none}.btn--primary{background:var(--primary);border-color:var(--primary);color:var(--on-primary);box-shadow:var(--shadow-sm)}.btn--primary:hover{background:var(--primary-hover);border-color:var(--primary-hover)}.btn--ghost{background:transparent;border-color:transparent}.btn--ghost:hover{background:color-mix(in srgb,var(--text) 6%,transparent);border-color:transparent}.btn--danger{color:var(--bad);border-color:color-mix(in srgb,var(--bad) 40%,transparent)}.btn--danger:hover{background:var(--bad-bg);border-color:var(--bad)}.btn--danger-solid{background:var(--bad);border-color:var(--bad);color:#fff}.btn--sm{height:32px;padding:0 10px;font-size:13px;border-radius:8px}.btn--icon{width:38px;padding:0}.btn--sm.btn--icon{width:32px}.btn[disabled]{opacity:.45;cursor:default;transform:none}.btn--block{width:100%}.input,.select{height:40px;width:100%;padding:0 12px;border-radius:10px;border:1px solid var(--line-strong);background:var(--surface);transition:border-color var(--dur) var(--ease),box-shadow var(--dur) var(--ease)}.input:hover,.select:hover{border-color:var(--faint)}.input:focus,.select:focus{border-color:var(--primary);box-shadow:var(--focus);outline:none}.input::placeholder{color:var(--faint)}.input--code{font-variant-numeric:tabular-nums;letter-spacing:.12em;text-transform:uppercase;font-weight:600}.input--bare{border-color:transparent;background:transparent;padding:0 8px;height:34px}.input--bare:hover{border-color:var(--line-strong)}.label{display:block;font-size:13px;font-weight:600;color:var(--muted);margin-bottom:6px}.field-error{color:var(--bad);font-size:13px;margin-top:6px}.switch{position:relative;display:inline-flex;align-items:center;gap:10px;cursor:pointer}.switch input{appearance:none;width:42px;height:24px;margin:0;border-radius:99px;background:var(--line-strong);position:relative;cursor:pointer;transition:background var(--dur) var(--ease)}.switch input:after{content:"";position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:#fff;box-shadow:var(--shadow-sm);transition:transform var(--dur) var(--ease-spring)}.switch input:checked{background:var(--primary)}.switch input:checked:after{transform:translate(18px)}.page{width:100%;max-width:1280px;margin:0 auto;padding:0 16px 48px}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);padding:20px;box-shadow:var(--shadow-sm)}.card h2{font-size:17px;margin-bottom:4px}.section-title{font-size:16px;margin-bottom:4px}.topbar{position:sticky;top:0;z-index:30;background:color-mix(in srgb,var(--bg) 82%,transparent);backdrop-filter:saturate(1.4) blur(14px);-webkit-backdrop-filter:saturate(1.4) blur(14px);border-bottom:1px solid color-mix(in srgb,var(--line) 70%,transparent)}.topbar__inner{max-width:1280px;margin:0 auto;padding:10px 16px;display:flex;align-items:center;gap:10px;min-height:60px}.brand{display:flex;align-items:center;gap:10px;min-width:0;text-decoration:none;color:inherit}.brand__mark{width:32px;height:32px;flex:none}.brand__text{min-width:0}.brand__title{font-weight:700;font-size:16px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}.brand__sub{font-size:12px;color:var(--muted);display:block;white-space:nowrap}.tabs{display:flex;gap:4px;overflow-x:auto;scrollbar-width:none;padding:2px 16px 10px;max-width:1280px;margin:0 auto}.tabs::-webkit-scrollbar{display:none}.tab{position:relative;display:inline-flex;align-items:center;gap:7px;height:36px;padding:0 14px;border-radius:99px;color:var(--muted);text-decoration:none;font-weight:580;font-size:14px;white-space:nowrap;transition:color var(--dur) var(--ease),background var(--dur) var(--ease)}.tab svg{width:17px;height:17px}.tab:hover{color:var(--text);background:color-mix(in srgb,var(--text) 5%,transparent)}.tab[aria-current=page]{color:var(--on-primary);background:var(--primary)}.tab__count{font-variant-numeric:tabular-nums;font-size:12px;font-weight:650;padding:0 6px;border-radius:99px;background:color-mix(in srgb,currentColor 16%,transparent)}.pill{display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 10px;border-radius:99px;font-size:13px;font-weight:600;background:var(--surface-sunk);color:var(--muted);white-space:nowrap}.pill svg{width:15px;height:15px}.pill--bad{background:var(--bad-bg);color:var(--bad)}.pill--warn{background:var(--warn-bg);color:var(--warn)}.pill--ok{background:var(--ok-bg);color:var(--ok)}.pill--primary{background:var(--primary-soft);color:var(--primary-text)}button.pill{border:0;cursor:pointer}.banner{display:flex;align-items:flex-start;gap:10px;padding:12px 14px;border-radius:var(--radius);background:var(--surface-2);border:1px solid var(--line);font-size:14px;animation:rise .26s var(--ease)}.banner svg{flex:none;width:19px;height:19px;margin-top:1px}.banner--warn{background:var(--warn-bg);border-color:color-mix(in srgb,var(--warn) 30%,transparent)}.banner--warn>svg{color:var(--warn)}.banner--bad{background:var(--bad-bg);border-color:color-mix(in srgb,var(--bad) 30%,transparent)}.banner--bad>svg{color:var(--bad)}.banner--info>svg{color:var(--primary-text)}.banner__body{flex:1;min-width:0}.banner__actions{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}.save-state{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;color:var(--muted);white-space:nowrap}.save-state svg{width:15px;height:15px}.save-state--error{color:var(--bad)}.dot{width:7px;height:7px;border-radius:50%;background:currentColor;display:inline-block}.spin{animation:spin .9s linear infinite}.weekbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:18px 0 14px}.weekbar__nav{display:flex;align-items:center;gap:2px;background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:3px;box-shadow:var(--shadow-sm)}.weekbar__label{min-width:150px;text-align:center;padding:0 6px;line-height:1.15}.weekbar__week{font-weight:700;font-size:16px;display:block;font-variant-numeric:tabular-nums}.weekbar__range{font-size:12px;color:var(--muted);display:block}.chip{--chip-bg: var(--chip-0-bg);--chip-fg: var(--chip-0-fg);position:relative;display:flex;align-items:center;gap:5px;min-height:32px;padding:5px 9px;border-radius:9px;background:var(--chip-bg);color:var(--chip-fg);font-size:13.5px;font-weight:600;line-height:1.2;border:1.5px solid transparent;user-select:none;-webkit-user-select:none;touch-action:manipulation;transition:transform .14s var(--ease),box-shadow var(--dur) var(--ease),border-color var(--dur) var(--ease),opacity var(--dur) var(--ease);animation:chip-in .22s var(--ease-spring) both;min-width:0;text-align:left;width:100%}.chip__name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chip__note{display:block;font-weight:500;font-size:12px;opacity:.85;white-space:normal}.chip svg{width:13px;height:13px;flex:none;opacity:.75}.chip--interactive{cursor:grab}.chip--interactive:hover{box-shadow:var(--shadow-md);transform:translateY(-1px)}.chip--related{border-color:var(--chip-fg)}.chip--dim{opacity:.35}.chip--selected{border-color:var(--chip-fg);box-shadow:0 0 0 3px color-mix(in srgb,var(--chip-fg) 25%,transparent),var(--shadow-md);transform:translateY(-1px)}.chip--dragging{opacity:.3}.chip--overlay{cursor:grabbing;box-shadow:var(--shadow-lg);transform:rotate(-2deg) scale(1.05);animation:none}.chip--shared{border-color:var(--warn);border-style:dashed}.chip--elsewhere{background:var(--surface);border-color:var(--line-strong);color:var(--text)}.chip--unassigned{box-shadow:inset 0 0 0 1.5px color-mix(in srgb,var(--bad) 55%,transparent)}.swatch{width:12px;height:12px;border-radius:4px;background:var(--chip-bg);border:1.5px solid var(--chip-fg);flex:none}.plan-scroll{overflow-x:auto;margin:0 -16px;padding:0 16px 8px;scrollbar-width:thin}.plan{display:grid;grid-template-columns:minmax(118px,170px) repeat(var(--days),minmax(128px,1fr));gap:6px;min-width:min-content}.plan--single{grid-template-columns:minmax(100px,38%) minmax(0,1fr)}.plan__corner{position:sticky;left:0;z-index:3;background:var(--bg)}.plan__dayhead{padding:6px 10px 8px;border-radius:var(--radius-sm);line-height:1.2}.plan__dayhead--today{background:var(--primary-soft);color:var(--primary-text)}.plan__dayname{font-weight:700;font-size:14px;display:flex;align-items:center;gap:6px}.plan__date{font-size:12px;color:var(--muted)}.plan__dayhead--today .plan__date{color:inherit}.plan__rowhead{position:sticky;left:0;z-index:2;background:var(--bg);padding:8px 8px 8px 2px;display:flex;flex-direction:column;justify-content:center;min-width:0}.plan__roomname{font-weight:650;font-size:14px;overflow-wrap:anywhere}.plan__roomdesc{font-size:12px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.plan__rowhead--none .plan__roomname{color:var(--bad);display:flex;align-items:center;gap:6px}.plan__rowhead--none svg{width:16px;height:16px}.cell{position:relative;min-height:48px;padding:5px;border-radius:var(--radius);background:var(--surface);border:1px solid var(--line);display:flex;flex-direction:column;gap:4px;transition:background var(--dur) var(--ease),border-color var(--dur) var(--ease),box-shadow var(--dur) var(--ease),opacity var(--dur) var(--ease)}.cell--today{border-color:color-mix(in srgb,var(--primary) 35%,var(--line))}.cell--empty:after{content:"Ledigt";position:absolute;inset:0;display:grid;place-items:center;font-size:12px;color:var(--faint);pointer-events:none}.cell--closed{background:repeating-linear-gradient(-45deg,var(--surface-sunk),var(--surface-sunk) 6px,transparent 6px,transparent 12px);border-style:dashed}.cell--closed:after{content:"Ej tillgängligt";position:absolute;inset:0;display:grid;place-items:center;font-size:12px;color:var(--faint);pointer-events:none}.cell--closed:has(.chip):after{content:none}.cell--closed .chip{box-shadow:inset 0 0 0 1.5px var(--bad)}.cell--shared{border-color:var(--warn);background:color-mix(in srgb,var(--warn-bg) 60%,var(--surface))}.cell--none{background:transparent;border:1.5px dashed color-mix(in srgb,var(--bad) 30%,var(--line))}.cell--none.cell--empty:after{content:""}.cell--none:has(.chip--unassigned){background:color-mix(in srgb,var(--bad-bg) 55%,transparent);border-color:color-mix(in srgb,var(--bad) 55%,transparent)}.cell--droppable{cursor:pointer}.cell--target{border-color:var(--primary);border-style:solid;box-shadow:0 0 0 3px color-mix(in srgb,var(--primary) 22%,transparent);background:color-mix(in srgb,var(--primary-soft) 55%,var(--surface))}.cell--target.cell--empty:after{content:"Släpp här";color:var(--primary-text);font-weight:600}.cell--disabled{opacity:.4}.cell--pickable:hover{border-color:var(--primary);background:color-mix(in srgb,var(--primary-soft) 35%,var(--surface))}.daytabs{display:flex;gap:4px;padding:4px;background:var(--surface);border:1px solid var(--line);border-radius:14px;margin-bottom:12px;overflow-x:auto;scrollbar-width:none}.daytab{flex:1;min-width:52px;border:0;background:transparent;border-radius:10px;padding:6px 4px;cursor:pointer;line-height:1.15;position:relative;transition:background var(--dur) var(--ease),color var(--dur) var(--ease)}.daytab b{display:block;font-size:14px}.daytab span{font-size:11.5px;color:var(--muted)}.daytab[aria-selected=true]{background:var(--primary);color:var(--on-primary)}.daytab[aria-selected=true] span{color:inherit;opacity:.85}.daytab__alert{position:absolute;top:5px;right:7px;width:7px;height:7px;border-radius:50%;background:var(--bad)}.daytab--today:not([aria-selected=true]){color:var(--primary-text);box-shadow:inset 0 0 0 1.5px color-mix(in srgb,var(--primary) 40%,transparent)}.toolbar{display:flex;align-items:center;gap:8px 16px;flex-wrap:wrap;margin-bottom:14px}.toolbar__stats{display:flex;align-items:center;gap:6px;flex-wrap:wrap;flex:1;min-width:0}.toolbar__actions{display:flex;gap:8px}.actionbar{position:fixed;left:50%;bottom:max(16px,env(safe-area-inset-bottom));transform:translate(-50%);z-index:40;display:flex;align-items:center;gap:6px;padding:8px 8px 8px 14px;border-radius:16px;background:var(--surface);border:1px solid var(--line-strong);box-shadow:var(--shadow-lg);width:max-content;max-width:calc(100vw - 24px);flex-wrap:wrap;animation:pop-up .24s var(--ease-spring)}body:has(.actionbar) .page{padding-bottom:calc(var(--dock, 0px) + 140px)}.actionbar__who{display:flex;flex-direction:column;line-height:1.2;margin-right:6px;min-width:0}.actionbar__move{width:auto;height:34px;max-width:200px}.actionbar__who b{font-size:14px}.actionbar__who span{font-size:12px;color:var(--muted)}.tgrid{display:grid;grid-template-columns:minmax(110px,220px) repeat(var(--days),minmax(44px,72px)) auto;gap:4px 6px;align-items:center}.tgrid__head{border:0;background:transparent;cursor:pointer;font-size:12.5px;font-weight:650;color:var(--muted);padding:4px 0;border-radius:8px;line-height:1.15}.tgrid__head:hover{color:var(--text);background:color-mix(in srgb,var(--text) 5%,transparent)}.tgrid__name{display:flex;align-items:center;gap:8px;min-width:0;font-weight:600;font-size:14px;border:0;background:transparent;text-align:left;padding:6px 4px;border-radius:8px;cursor:pointer}.tgrid__name span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tgrid__name:hover{background:color-mix(in srgb,var(--text) 5%,transparent)}.tgrid__meta{font-size:12px;color:var(--muted);white-space:nowrap;padding-left:4px}.toggle{height:38px;border-radius:10px;border:1px solid var(--line-strong);background:var(--surface);cursor:pointer;display:grid;place-items:center;color:var(--faint);transition:background var(--dur) var(--ease),border-color var(--dur) var(--ease),color var(--dur) var(--ease),transform .12s var(--ease)}.toggle svg{width:18px;height:18px}.toggle:active{transform:scale(.92)}.toggle[aria-pressed=true]{background:var(--primary);border-color:var(--primary);color:var(--on-primary)}.toggle[aria-pressed=true] svg{animation:check-in .24s var(--ease-spring)}.toggle--room[aria-pressed=false]{background:repeating-linear-gradient(-45deg,var(--surface-sunk),var(--surface-sunk) 5px,var(--surface) 5px,var(--surface) 10px)}.toggle--changed{box-shadow:0 0 0 2px var(--bg),0 0 0 3.5px var(--warn)}.mini-days{display:inline-flex;gap:3px}.mini-day{width:32px;height:30px;border-radius:8px;border:1px solid var(--line-strong);background:var(--surface);font-size:12px;font-weight:650;color:var(--muted);cursor:pointer;transition:background var(--dur) var(--ease),color var(--dur) var(--ease),border-color var(--dur) var(--ease)}.mini-day[aria-pressed=true]{background:var(--primary-soft);border-color:color-mix(in srgb,var(--primary) 50%,transparent);color:var(--primary-text)}.list{display:flex;flex-direction:column;border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface);overflow:hidden}.list__row{display:grid;grid-template-columns:auto minmax(140px,1fr) auto auto;gap:10px;align-items:center;padding:10px 12px;border-top:1px solid var(--line);animation:rise .24s var(--ease)}.list__row:first-child{border-top:0}.list__row--room{grid-template-columns:minmax(120px,.8fr) minmax(120px,1fr) auto auto auto}.list__row .input--bare:first-of-type{font-weight:600}.list__controls{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.list__select{height:34px;width:auto;min-width:150px}.list__order{display:flex;gap:2px}.list__empty{padding:28px 16px;text-align:center;color:var(--muted)}.addbar{display:flex;gap:8px;margin-bottom:14px}.addbar .input{flex:1}.color-btn{width:26px;height:26px;border-radius:8px;border:1.5px solid var(--chip-fg);background:var(--chip-bg);cursor:pointer}dialog.dialog{border:0;padding:0;border-radius:20px;background:var(--surface);color:var(--text);box-shadow:var(--shadow-lg);width:min(480px,calc(100vw - 24px));max-height:calc(100dvh - 32px)}dialog.dialog[open]{animation:dialog-in .26s var(--ease-spring)}dialog.dialog::backdrop{background:#0a100c73;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);animation:fade-in .2s var(--ease)}.dialog__body{padding:22px;display:flex;flex-direction:column;gap:14px}.dialog__head{display:flex;align-items:flex-start;gap:12px}.dialog__head h2{font-size:19px;flex:1}.dialog__actions{display:flex;gap:8px;justify-content:flex-end;flex-wrap:wrap}.copybox{display:flex;align-items:center;gap:8px;padding:6px 6px 6px 12px;border-radius:12px;background:var(--surface-sunk);border:1px solid var(--line)}.copybox__text{flex:1;min-width:0;font-size:13.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-variant-numeric:tabular-nums}.code{font-weight:700;font-size:22px;letter-spacing:.12em;font-variant-numeric:tabular-nums}.toasts{position:fixed;z-index:60;left:50%;bottom:max(16px,env(safe-area-inset-bottom));transform:translate(-50%);display:flex;flex-direction:column;align-items:center;gap:8px;pointer-events:none;width:max-content;max-width:calc(100vw - 24px)}.toasts--raised{bottom:calc(max(16px,env(safe-area-inset-bottom)) + 76px)}.toast{pointer-events:auto;display:flex;align-items:center;gap:10px;padding:10px 10px 10px 14px;border-radius:14px;background:var(--text);color:var(--bg);box-shadow:var(--shadow-lg);font-size:14px;font-weight:550;animation:pop-up .26s var(--ease-spring)}.toast svg{width:18px;height:18px;flex:none}.toast button{border:0;background:color-mix(in srgb,var(--bg) 18%,transparent);color:inherit;font-weight:650;border-radius:8px;padding:5px 10px;cursor:pointer}.landing{display:grid;grid-template-columns:minmax(0,1fr);gap:20px;max-width:1080px;padding-top:32px}.landing>*{margin:0;max-width:none}.hero{align-self:center}.hero__brand{display:inline-flex;align-items:center;gap:10px;font-weight:700;font-size:15px;color:var(--primary-text);margin-bottom:18px;animation:rise .42s var(--ease) both}.hero__mark{width:36px;height:36px;animation:float-in .6s var(--ease-spring)}.hero h1{font-size:clamp(32px,4.4vw,46px);line-height:1.06;letter-spacing:-.03em;font-weight:750;text-wrap:balance;animation:rise .46s 40ms var(--ease) both}.hero p{margin-top:16px;max-width:34em;font-size:17px;color:var(--muted);text-wrap:pretty;animation:rise .46s 80ms var(--ease) both}.preview{background:var(--surface);border:1px solid var(--line);border-radius:22px;padding:14px;box-shadow:var(--shadow-lg);animation:rise .6s .12s var(--ease) both;min-width:0}.preview__bar{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:0 2px 12px}.preview__week{font-weight:700}.preview__grid{display:grid;grid-template-columns:auto repeat(5,minmax(0,1fr));gap:5px;align-items:stretch}.preview__day{font-size:12px;font-weight:700;text-align:center;padding:4px 0;border-radius:8px;color:var(--muted)}.preview__day--today{background:var(--primary-soft);color:var(--primary-text)}.preview__room{font-size:12.5px;font-weight:650;align-self:center;padding-right:6px}.preview__cell{min-height:40px;padding:4px;border-radius:10px;border:1px solid var(--line);background:var(--surface-2);display:flex;align-items:center;min-width:0}.preview__cell--today{border-color:color-mix(in srgb,var(--primary) 40%,var(--line))}.preview .chip{font-size:12px;min-height:28px;padding:4px 7px}@media(min-width:900px){.landing{grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);column-gap:56px;row-gap:28px;padding-top:72px}.landing>:not(.hero,.preview){grid-column:1 / -1}.preview{transform:rotate(1.2deg)}}@media(max-width:520px){.preview__grid{grid-template-columns:auto repeat(3,minmax(0,1fr))}.preview__edge{display:none!important}}@media(max-width:899px){.landing>.preview{order:3}.landing>.features{order:4}}.landing-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,320px),1fr));gap:16px}.landing-grid .card{animation:rise .42s var(--ease) both}.landing-grid .card:nth-child(2){animation-delay:70ms}.recents{animation:rise .42s .14s var(--ease) both}.recent{display:flex;align-items:center;gap:12px;padding:12px 14px;text-decoration:none;color:inherit;border-top:1px solid var(--line);transition:background var(--dur) var(--ease)}.recent:first-child{border-top:0}.recent:hover{background:var(--surface-2)}.recent svg{width:18px;height:18px;color:var(--muted)}.features{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,200px),1fr));gap:24px;padding-top:20px;color:var(--muted);font-size:14px}.features b{color:var(--text);display:block;margin-bottom:2px}.feature-icon{width:36px;height:36px;border-radius:10px;display:grid;place-items:center;background:var(--primary-soft);color:var(--primary-text);margin-bottom:8px}.feature-icon svg{width:19px;height:19px}.empty{text-align:center;padding:48px 20px;max-width:520px;margin:0 auto;animation:rise .36s var(--ease)}.empty__icon{width:56px;height:56px;border-radius:16px;display:grid;place-items:center;background:var(--primary-soft);color:var(--primary-text);margin:0 auto 16px}.empty__icon svg{width:28px;height:28px}.empty h2{font-size:20px;margin-bottom:6px}.empty p{color:var(--muted)}.empty .row{justify-content:center;margin-top:18px}.steps{display:grid;gap:10px;max-width:520px;margin:24px auto 0;text-align:left}.step{display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:var(--radius);background:var(--surface);border:1px solid var(--line);text-decoration:none;color:inherit;transition:border-color var(--dur) var(--ease),transform var(--dur) var(--ease)}.step:hover{border-color:var(--primary);transform:translate(2px)}.step__num{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;font-weight:700;font-size:13px;background:var(--surface-sunk);color:var(--muted);flex:none}.step--done .step__num{background:var(--primary);color:var(--on-primary)}.step svg{width:18px;height:18px}.person-head{max-width:640px;display:flex;align-items:center;gap:14px;margin:8px 0 18px}.avatar{width:52px;height:52px;border-radius:16px;display:grid;place-items:center;font-weight:750;font-size:19px;background:var(--chip-bg);color:var(--chip-fg);flex:none}.avatar--sm{width:44px;height:44px;border-radius:14px;font-size:16px}.person-head__name{font-size:24px;letter-spacing:-.02em}.daylist{display:grid;gap:10px;max-width:640px;margin:0;padding:0;list-style:none}.dayitem{display:grid;grid-template-columns:76px 1fr;gap:14px;align-items:center;padding:14px 16px;border-radius:var(--radius-lg);background:var(--surface);border:1px solid var(--line);animation:rise .32s var(--ease) both}.dayitem--today{border-color:var(--primary);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary) 18%,transparent)}.dayitem--today .dayitem__room{font-size:26px}.dayitem--off{background:transparent;border-style:dashed}.dayitem--past:not(.dayitem--today){opacity:.6}.dayitem__main{min-width:0}.dayitem__icon{width:.9em;height:.9em;vertical-align:-.08em}.dayitem__room--none{color:var(--bad)}.dayitem__mates{display:flex;align-items:center;gap:6px;margin-top:4px;font-size:13px;font-weight:600;color:var(--warn)}.dayitem__mates svg{width:15px;height:15px;flex:none}.dayitem__day b{display:block;font-size:15px}.dayitem__day span{font-size:12.5px;color:var(--muted)}.dayitem__room{font-size:20px;font-weight:700;letter-spacing:-.01em}.dayitem__desc{font-size:13px;color:var(--muted)}.dayitem__hint{display:inline-flex;align-items:center;gap:6px;margin-top:6px;font-size:12.5px;font-weight:600;color:var(--warn);background:var(--warn-bg);padding:3px 8px;border-radius:8px}.dayitem__hint svg{width:14px;height:14px}.today-tag{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--primary-text)}.me-card{display:flex;align-items:center;gap:14px;width:100%;max-width:640px;margin-bottom:14px;padding:12px 14px;border-radius:var(--radius-lg);border:1px solid color-mix(in srgb,var(--primary) 30%,var(--line));background:linear-gradient(135deg,var(--primary-soft),var(--surface) 70%);box-shadow:var(--shadow-sm);text-align:left;cursor:pointer;animation:rise .32s var(--ease) both;transition:box-shadow var(--dur) var(--ease),transform var(--dur) var(--ease)}.me-card:hover{box-shadow:var(--shadow-md);transform:translateY(-1px)}.me-card:active{transform:scale(.99)}.me-card__body{flex:1;min-width:0;display:flex;flex-direction:column;line-height:1.2}.me-card__label{font-size:12.5px;font-weight:600;color:var(--muted)}.me-card__value{font-size:21px;font-weight:750;letter-spacing:-.01em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.me-card__more{display:inline-flex;align-items:center;gap:2px;font-size:13px;font-weight:650;color:var(--primary-text);white-space:nowrap}.me-card__more svg{width:17px;height:17px}.person-picker{display:flex;gap:8px;align-items:center;max-width:360px;flex:1}@media(max-width:720px){body{font-size:14.5px}.hide-sm{display:none!important}.topbar{background:color-mix(in srgb,var(--bg) 94%,transparent);backdrop-filter:none;-webkit-backdrop-filter:none}.topbar__inner{min-height:56px;padding-block:8px}body:has(.tabs){--dock: calc(64px + env(safe-area-inset-bottom)) }.tabs{position:fixed;left:0;right:0;bottom:0;z-index:35;max-width:none;margin:0;gap:0;padding:4px 4px calc(4px + env(safe-area-inset-bottom));background:color-mix(in srgb,var(--surface) 90%,transparent);backdrop-filter:saturate(1.4) blur(16px);-webkit-backdrop-filter:saturate(1.4) blur(16px);border-top:1px solid var(--line);overflow:visible}.tab{flex:1 1 0;min-width:0;height:56px;padding:0 2px;flex-direction:column;justify-content:center;gap:3px;border-radius:12px;font-size:11px;font-weight:620;isolation:isolate}.tab>span:not(.tab__count){max-width:100%;overflow:hidden;text-overflow:ellipsis}.tab svg{width:22px;height:22px}.tab:hover{background:transparent}.tab[aria-current=page]{color:var(--primary-text);background:transparent}.tab[aria-current=page]:before{content:"";position:absolute;z-index:-1;top:6px;left:50%;width:52px;height:30px;margin-left:-26px;border-radius:99px;background:var(--primary-soft);animation:tab-pill .26s var(--ease-spring)}.tab__count{position:absolute;top:3px;left:calc(50% + 8px);min-width:17px;padding:0 4px;font-size:10px;line-height:16px;text-align:center;background:var(--surface-sunk);color:var(--muted);box-shadow:0 0 0 2px var(--surface)}.page{padding-bottom:calc(var(--dock, 0px) + 40px)}.toasts{bottom:calc(var(--dock, 0px) + max(12px,env(safe-area-inset-bottom)))}.toasts--raised{bottom:calc(var(--dock, 0px) + 124px)}.actionbar{left:8px;right:8px;bottom:calc(var(--dock, 0px) + 8px);transform:none;width:auto;max-width:none;padding:10px;animation-name:sheet-up}.actionbar__who{flex:1 1 calc(100% - 60px);padding-left:4px}.actionbar__close{order:1}.actionbar__move{order:2;flex:1 1 100%;max-width:none}.actionbar>.btn:not(.actionbar__close){order:3;flex:1 1 auto;height:34px}dialog.dialog{width:100%;max-width:100%;margin:auto 0 0;border-radius:22px 22px 0 0;max-height:calc(100dvh - 48px)}dialog.dialog[open]{animation:sheet-up .3s var(--ease)}.dialog__body{padding:22px 18px calc(18px + env(safe-area-inset-bottom))}.dialog__actions>.btn{flex:1}.toolbar{flex-direction:column;flex-wrap:nowrap;align-items:stretch;gap:10px}.toolbar__stats{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;margin:0 -16px;padding:0 16px}.toolbar__stats::-webkit-scrollbar{display:none}.toolbar__actions>.btn{flex:1 1 0;min-width:0;padding:0 10px}.list__row{grid-template-columns:auto minmax(0,1fr) auto;gap:8px 10px}.list__row--room{grid-template-columns:minmax(0,1fr) auto auto}.list__row>.list__wide{grid-column:1 / -1}.list__row>:last-child{grid-row:1;grid-column:-2}.list__row--room>.list__order{grid-row:1;grid-column:2}.list__select{flex:1;min-width:0}.tgrid{grid-template-columns:minmax(76px,1fr) repeat(var(--days),minmax(32px,44px));gap:4px}.tgrid__name span{white-space:normal;line-height:1.2;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.tgrid__meta{display:none}.weekbar__label{min-width:120px}.person-picker{flex-basis:100%;max-width:none;order:3}.dayitem{grid-template-columns:70px 1fr;padding:14px}.person-head__name{font-size:21px}.vt-day{touch-action:pan-y pinch-zoom}}@media(max-width:380px){.tab{font-size:10.5px;letter-spacing:-.01em}}@media(hover:none){.input--bare{border-color:var(--line)}}@media(min-width:721px){.show-sm{display:none!important}}@keyframes rise{0%{opacity:0;transform:translateY(8px)}}@keyframes fade-in{0%{opacity:0}}@keyframes chip-in{0%{opacity:0;transform:scale(.92)}}@keyframes pop-up{0%{opacity:0;transform:translate(-50%,16px) scale(.96)}}.toast{animation-name:toast-in}@keyframes toast-in{0%{opacity:0;transform:translateY(16px) scale(.96)}}@keyframes dialog-in{0%{opacity:0;transform:translateY(14px) scale(.97)}}@keyframes float-in{0%{opacity:0;transform:translateY(12px) rotate(-8deg) scale(.9)}}@keyframes sheet-up{0%{opacity:0;transform:translateY(24px)}}@keyframes tab-pill{0%{opacity:0;transform:scaleX(.5)}}@keyframes check-in{0%{transform:scale(.4);opacity:0}}@keyframes spin{to{transform:rotate(360deg)}}::view-transition-old(root),::view-transition-new(root){animation-duration:.22s;animation-timing-function:var(--ease)}html[data-nav=forward]::view-transition-old(main){animation:.2s var(--ease) both slide-out-left}html[data-nav=forward]::view-transition-new(main){animation:.24s var(--ease) both slide-in-right}html[data-nav=back]::view-transition-old(main){animation:.2s var(--ease) both slide-out-right}html[data-nav=back]::view-transition-new(main){animation:.24s var(--ease) both slide-in-left}.vt-main{view-transition-name:main}.vt-day{view-transition-name:day}html[data-day=forward]::view-transition-old(day){animation:.16s var(--ease) both slide-out-left}html[data-day=forward]::view-transition-new(day){animation:.22s var(--ease) both slide-in-right}html[data-day=back]::view-transition-old(day){animation:.16s var(--ease) both slide-out-right}html[data-day=back]::view-transition-new(day){animation:.22s var(--ease) both slide-in-left}@keyframes slide-out-left{to{opacity:0;transform:translate(-24px)}}@keyframes slide-in-right{0%{opacity:0;transform:translate(24px)}}@keyframes slide-out-right{to{opacity:0;transform:translate(24px)}}@keyframes slide-in-left{0%{opacity:0;transform:translate(-24px)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:1ms!important;animation-delay:0ms!important;transition-duration:1ms!important;scroll-behavior:auto!important}::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}}
