:root{--bg:#f5f5f5;--ink:#111;--card:#fff;--muted:#999;--line:#e5e5e5;--warn-bg:#fff4d6;--warn-ink:#7a5200;--font:"Montserrat","Arial Black",Arial,sans-serif;--cell:92px;--monthmin:330px}*{box-sizing:border-box}body,html{margin:0;padding:0}body{background:var(--bg);color:var(--ink);font-family:var(--font);font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased}body.no-scroll{overflow:hidden}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.45}a{color:var(--ink)}:focus-visible{outline:3px solid #2f5bd3;outline-offset:2px}p{margin:0}.eyebrow{font-size:12px;letter-spacing:.18em}.eyebrow,.label{font-weight:700;text-transform:uppercase}.label{font-size:11px;letter-spacing:.14em}.headline{margin:0;font-weight:900;text-transform:uppercase;letter-spacing:-.02em;line-height:.95;font-size:clamp(36px,7vw,56px)}.headline-xl{font-size:clamp(40px,8vw,92px);max-width:14ch}.section-title{margin:0;font-weight:900;text-transform:uppercase;letter-spacing:-.01em;font-size:22px}.muted{color:var(--muted)}.small{font-size:13px}.block{display:block}.mono{font-feature-settings:"tnum";font-variant-numeric:tabular-nums;white-space:nowrap;font-size:13px}.error{color:#b42318;font-weight:500}.notice{background:var(--card);border:2px solid var(--ink);border-radius:8px;padding:12px 14px;font-size:14px}.page{max-width:1680px;margin:0 auto;padding:0 20px 64px}.row{display:flex;gap:8px;align-items:center}.row.wrap{flex-wrap:wrap}.row-between{display:flex;gap:8px;align-items:center;justify-content:space-between}.stack{grid-gap:12px}.stack,.two{display:grid;gap:12px}.two{grid-template-columns:1fr 1fr;grid-gap:12px}.two>*{min-width:0}.rule{border:0;border-top:2px solid var(--ink);margin:24px 0}.panel .rule{margin:6px 0}.btn{border:2px solid var(--ink);background:transparent;border-radius:8px;padding:10px 16px;font-weight:700;font-size:12px;letter-spacing:.14em;text-transform:uppercase;white-space:nowrap}.btn:hover:not(:disabled){background:var(--card)}.btn-primary{background:var(--ink);color:#fff}.btn-primary:hover:not(:disabled){background:#333}.btn-sm{padding:7px 11px;font-size:11px}.btn-block{width:100%}.link-btn{border:0;background:none;padding:0;font-weight:700;text-decoration:underline;text-underline-offset:3px;text-align:left}.icon-btn{width:42px;height:42px;border:2px solid var(--ink);border-radius:8px;background:transparent;font-size:22px;line-height:1;flex:none}input,select,textarea{border:2px solid var(--ink);border-radius:6px;padding:10px 12px;background:var(--card);width:100%;min-width:0}select{width:auto}.field select{width:100%}textarea{resize:vertical}.field{display:grid;grid-gap:6px;gap:6px}.check{display:flex;gap:8px;align-items:flex-start;font-size:14px}.check input{width:auto;margin-top:3px}.login{min-height:100vh;display:grid;place-items:center;padding:24px 16px}.login-card{width:min(440px,100%);background:var(--card);border:2px solid var(--ink);border-radius:8px;padding:28px 24px;display:grid;grid-gap:16px;gap:16px}.login-logo{width:150px;height:auto}.code-input{font-size:28px;font-weight:900;letter-spacing:.4em;text-align:center}.topbar{background:var(--bg);border-bottom:2px solid var(--ink);display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:space-between;padding:12px 0}.hero{display:grid;grid-gap:14px;gap:14px;padding:36px 0 8px}.card{background:var(--card);border:2px solid var(--ink);border-radius:8px}.stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:12px;gap:12px}.stat{display:grid;grid-gap:6px;gap:6px;padding:16px 18px;text-align:left}.stat b{font-weight:900;font-size:44px;line-height:1;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.stat:hover{background:#fafafa}.working{margin-top:16px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:14px 0;display:grid;grid-gap:8px;gap:8px}.working p{max-width:90ch}.controls{display:grid;grid-gap:12px;gap:12px;padding-top:24px}.seg{display:inline-flex;border:2px solid var(--ink);border-radius:8px;overflow:hidden}.seg button{border:0;background:transparent;padding:8px 14px;font-weight:700;font-size:11px;letter-spacing:.14em;text-transform:uppercase}.seg button+button{border-left:2px solid var(--ink)}.seg button[aria-pressed=true]{background:var(--ink);color:#fff}.search{width:220px;max-width:100%;padding:8px 12px}.pills{display:flex;flex-wrap:wrap;gap:6px}.pill{border:2px solid var(--ink);background:transparent;border-radius:999px;padding:5px 12px;font-weight:700;font-size:11px;letter-spacing:.12em;text-transform:uppercase;display:inline-flex;gap:6px;align-items:center}.pill[aria-pressed=true]{background:var(--ink);color:#fff}.pill[aria-pressed=true] .swatch{outline:1px solid #fff}.tag{background:var(--ink);color:#fff;border-radius:3px;padding:4px 8px;font-weight:700;font-size:10px;letter-spacing:.14em;text-transform:uppercase}fieldset.plain{border:0;padding:0;margin:0;min-width:0}fieldset.plain:disabled input,fieldset.plain:disabled select,fieldset.plain:disabled textarea{background:#fafafa;border-color:var(--line);color:var(--ink);opacity:1}.swatch{width:9px;height:9px;border-radius:2px;display:inline-block;flex:none}.board-head{display:flex;flex-wrap:wrap;gap:12px;justify-content:space-between;align-items:flex-end;margin-bottom:14px}.zoom-label{font-weight:700;font-size:12px;min-width:42px;text-align:center;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.board{background:var(--bg);scroll-margin-top:80px}.board:-webkit-full-screen{overflow:auto;padding:20px}.board:fullscreen{overflow:auto;padding:20px}.empty{padding:48px 0;text-align:center;color:var(--muted);display:grid;grid-gap:12px;gap:12px;justify-items:center}.year-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,var(--monthmin)),1fr));grid-gap:16px;gap:16px}.month{background:var(--card);border:2px solid var(--ink);border-radius:8px;padding:12px;display:grid;grid-gap:8px;gap:8px;align-content:start;min-width:0}.month-head{display:flex;justify-content:space-between;align-items:baseline}.month-head h3{margin:0;font-weight:900;text-transform:uppercase;letter-spacing:.02em;font-size:18px}.month-open{border:0;background:none;font-size:12px;font-weight:500;color:var(--muted);padding:0}.month-open:hover{color:var(--ink)}.dow,.grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));grid-gap:2px;gap:2px}.dow span{font-size:10px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);text-align:center}.day{min-height:var(--cell);max-height:calc(var(--cell) * 1.5);overflow:auto;border:1px solid var(--line);border-radius:4px;padding:3px;display:flex;flex-direction:column;gap:2px;cursor:pointer;min-width:0}.day:hover{border-color:var(--ink)}.day-blank{visibility:hidden}.day-busy{background:#fafafa}.day-today{box-shadow:inset 0 0 0 2px #c2410c}.day-num{display:flex;justify-content:space-between;font-size:11px;color:var(--muted)}.day-num b{color:var(--ink);font-weight:700}.item{display:flex;gap:4px;align-items:flex-start;border:0;background:none;padding:1px 2px;text-align:left;border-radius:3px;width:100%;min-width:0;font-size:11px;line-height:1.2}.item:hover{background:var(--line)}.item .swatch{width:7px;height:7px;margin-top:3px}.item span{overflow-wrap:anywhere}.item-event span{font-weight:700}.item-ref span{color:#777;font-weight:400}.item-promo{border:1px dashed #8a6d00}.item-promo span{color:#8a6d00;font-weight:500}.month-big .day{min-height:120px;max-height:220px}.month-big .item{font-size:13px}.flex-row{border-top:1px solid var(--line);padding-top:8px;font-size:12px;display:flex;flex-wrap:wrap;gap:8px}.flex-item{display:inline-flex;flex-wrap:wrap;gap:6px;align-items:center}.need{background:var(--warn-bg);color:var(--warn-ink);font-weight:700;font-size:10px;letter-spacing:.12em;text-transform:uppercase;padding:2px 6px;border-radius:3px;white-space:nowrap}.table-wrap{overflow-x:auto;background:var(--card);border:2px solid var(--ink);border-radius:8px}table{border-collapse:collapse;width:100%;min-width:780px;font-size:14px}td,th{padding:10px 12px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}th{font-size:10px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}tbody tr{cursor:pointer}tbody tr:hover{background:#fafafa}tr.is-ref td{color:#777}tr.is-ref b{font-weight:500}.org-tag{display:inline-flex;gap:6px;align-items:center;font-size:13px;white-space:nowrap}.legend{display:flex;flex-wrap:wrap;gap:16px;font-size:13px;margin-top:14px}.legend span{display:inline-flex;gap:6px;align-items:center}.promo-key{border:1px dashed #8a6d00;color:#8a6d00;padding:0 6px;border-radius:3px}.notes{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,340px),1fr));grid-gap:24px;gap:24px}.notes p{color:#555;max-width:68ch}.notes b{color:var(--ink)}.scrim{position:fixed;inset:0;z-index:50;background:rgba(0,0,0,.45);display:flex;justify-content:flex-end}.panel{background:var(--bg);width:min(560px,100%);height:100%;overflow-y:auto;padding:24px 22px 32px;border-left:2px solid var(--ink);display:grid;grid-gap:16px;gap:16px;align-content:start}.panel-wide{width:min(680px,100%)}.panel-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.panel-title{margin:0;font-weight:900;text-transform:uppercase;letter-spacing:-.02em;line-height:.95;font-size:30px}.panel-foot{gap:8px;border-top:2px solid var(--ink);padding-top:14px}.confirm,.panel-foot{display:flex;flex-wrap:wrap;justify-content:space-between}.confirm{background:var(--warn-bg);color:var(--warn-ink);border-radius:8px;padding:12px 14px;gap:10px;align-items:center;font-weight:500}.day-entry{display:flex;gap:10px;align-items:flex-start;text-align:left;border:2px solid var(--ink);background:var(--card);border-radius:8px;padding:10px 12px}.day-entry .swatch{margin-top:6px}.team-row{display:flex;flex-wrap:wrap;gap:10px;justify-content:space-between;align-items:center;background:var(--card);border:2px solid var(--ink);border-radius:8px;padding:10px 12px}.team-removed{border-color:var(--line);opacity:.75}.team-who{display:grid;grid-gap:1px;gap:1px;min-width:0;overflow-wrap:anywhere}.team-row select{padding:6px 8px}.toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);z-index:60;background:var(--ink);color:#fff;padding:12px 18px;border-radius:8px;font-weight:500;font-size:14px;max-width:calc(100% - 32px)}.cals{display:grid;grid-gap:8px;gap:8px}.cals-head{display:flex;flex-wrap:wrap;gap:14px;align-items:center}.cals-head .link-btn[aria-pressed=true]{text-decoration-thickness:3px}.cals-tip{margin-left:auto}.cal-toggle{display:inline-flex;gap:8px;align-items:center;border:2px solid var(--line);background:transparent;border-radius:999px;padding:5px 14px 5px 6px;font-weight:700;font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);-webkit-user-select:none;-moz-user-select:none;user-select:none}.cal-toggle.is-on{border-color:var(--ink);color:var(--ink);background:var(--card)}.cal-check{width:18px;height:18px;border-radius:5px;border:2px solid var(--c);display:grid;place-items:center;font-size:12px;line-height:1;color:#fff;flex:none}.cal-toggle.is-on .cal-check{background:var(--c)}.cal{display:grid;grid-gap:12px;gap:12px;background:var(--bg)}.cal:-webkit-full-screen{overflow:auto;padding:20px}.cal:fullscreen{overflow:auto;padding:20px}.cal-nav{position:-webkit-sticky;position:sticky;top:0;z-index:20;background:var(--bg);border-bottom:2px solid var(--ink);padding:10px 0;justify-content:space-between}.cal-nav,.cal-nav-left,.cal-nav-right{display:flex;flex-wrap:wrap;gap:10px;align-items:center}.cal-title{margin:0;font-weight:900;text-transform:uppercase;letter-spacing:-.02em;font-size:clamp(20px,3vw,30px);line-height:1}.cal-body{touch-action:pan-y;min-width:0}.cal-hint{margin:0}.bar{display:flex;align-items:center;gap:3px;min-width:0;height:20px;margin:1px 2px;padding:0 6px;border:1px solid transparent;border-radius:4px;font-size:12px;font-weight:700;line-height:1;text-align:left;white-space:nowrap;overflow:hidden;z-index:2}.bar:hover{filter:brightness(.92)}.bar-promo,.bar-ref{font-weight:500}.bar-promo{background:#fff;border-style:dashed}.bar.cont-l{border-top-left-radius:0;border-bottom-left-radius:0;margin-left:0}.bar.cont-r{border-top-right-radius:0;border-bottom-right-radius:0;margin-right:0}.bar-text{overflow:hidden;text-overflow:ellipsis}.bar-arrow{opacity:.7}.dots{display:flex;gap:2px;justify-content:center;height:5px}.dots i{width:5px;height:5px;border-radius:50%;display:block}.dots i.dot-ref{background:#fff;box-shadow:inset 0 0 0 1px #aaa}.yv{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));grid-gap:14px;gap:14px}.yv-month{background:var(--card);border:2px solid var(--ink);border-radius:8px;padding:12px;display:grid;grid-gap:6px;gap:6px;align-content:start}.yv-title{border:0;background:none;padding:0;text-align:left;font-weight:900;text-transform:uppercase;font-size:16px;letter-spacing:.02em}.yv-title:hover{text-decoration:underline;text-underline-offset:3px}.yv-dow,.yv-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}.yv-dow span{font-size:10px;font-weight:700;color:var(--muted);text-align:center}.yv-day{border:0;background:none;border-radius:6px;padding:3px 0 2px;display:grid;grid-gap:2px;gap:2px;justify-items:center}.yv-day:hover{background:var(--line)}.yv-num{font-size:12px;line-height:1.2;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.yv-busy .yv-num{font-weight:900}.yv-day.is-today .yv-num{background:#c2410c;color:#fff;border-radius:999px;padding:0 5px}.yv-foot{display:flex;gap:8px;align-items:center;flex-wrap:wrap;border-top:1px solid var(--line);padding-top:6px}.mv{background:var(--card);border:2px solid var(--ink);border-radius:8px;overflow:hidden}.mv-dow{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border-bottom:2px solid var(--ink)}.mv-dow span{padding:6px 8px;font-size:10px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}.mv-week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));min-height:128px;border-bottom:1px solid var(--line)}.mv-week:last-child{border-bottom:0}.mv-cell{border-right:1px solid var(--line);cursor:pointer}.mv-cell:nth-child(7){border-right:0}.mv-cell:hover{background:#fafafa}.mv-cell.is-weekend{background:#fcfcfc}.mv-cell.is-out{background:#f7f7f7}.mv-num{justify-self:start;align-self:start;margin:4px 6px;border:0;background:none;padding:1px 6px;border-radius:999px;font-size:13px;font-weight:700;z-index:2;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.mv-num:hover{background:var(--line)}.mv-num.is-out{color:var(--muted);font-weight:500}.mv-num.is-today{background:#c2410c;color:#fff}.mv-more{justify-self:start;border:0;background:none;padding:2px 8px;font-size:12px;font-weight:700;color:#555;z-index:2}.mv-more:hover{color:var(--ink);text-decoration:underline}.mv-compact{border:0;background:none;overflow:visible;display:grid;grid-gap:12px;gap:12px}.mv-compact .mv-dow{border-bottom:0}.mv-compact .mv-dow span{text-align:center;padding:4px 0}.mvc-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));grid-gap:2px;gap:2px}.mvc-day{border:0;background:none;border-radius:10px;padding:6px 0;display:grid;grid-gap:3px;gap:3px;justify-items:center;min-height:44px}.mvc-num{font-size:16px;font-weight:500;width:30px;height:30px;display:grid;place-items:center;border-radius:999px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.mvc-day.is-out .mvc-num{color:#bbb}.mvc-day.is-today .mvc-num{color:#c2410c;font-weight:900}.mvc-day.is-selected .mvc-num{background:var(--ink);color:#fff;font-weight:700}.mvc-list{border-top:2px solid var(--ink);padding-top:12px;display:grid;grid-gap:10px;gap:10px}.wv{background:var(--card);border:2px solid var(--ink);border-radius:8px;overflow:hidden}.wv-cols,.wv-head,.wv-span{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}.wv-head{border-bottom:2px solid var(--ink)}.wv-headcell{border:0;border-right:1px solid var(--line);background:none;padding:8px;display:grid;grid-gap:2px;gap:2px;text-align:left}.wv-headcell:last-child{border-right:0}.wv-headcell b{font-size:24px;font-weight:900;line-height:1}.wv-headcell:hover{background:#fafafa}.wv-headcell.is-today b{color:#c2410c}.wv-span{padding:4px 0;border-bottom:1px solid var(--line);background:#fcfcfc}.wv-span .bar{height:22px}.wv-cols{min-height:320px}.wv-col{border-right:1px solid var(--line);padding:6px;display:grid;grid-gap:6px;gap:6px;align-content:start;min-width:0}.wv-col:last-child{border-right:0}.wv-flex{border-top:1px solid var(--line);padding:8px 10px;display:flex;flex-wrap:wrap;gap:10px;align-items:center}.wv-stack{display:grid;grid-gap:14px;gap:14px}.wv-day-block{display:grid;grid-gap:8px;gap:8px}.wv-day-head{border:0;border-bottom:2px solid var(--ink);background:none;padding:0 0 6px;text-align:left;display:flex;gap:8px;align-items:baseline}.wv-day-block.is-today .wv-day-head b{color:#c2410c}.daylist{display:grid;grid-gap:14px;gap:14px}.daylist-group{display:grid;grid-gap:6px;gap:6px}.dv{max-width:760px}.entry{display:flex;gap:10px;align-items:stretch;text-align:left;border:2px solid var(--ink);background:var(--card);border-radius:8px;padding:8px 10px;min-width:0;width:100%}.entry:hover{background:#fafafa}.entry-ref{border-color:var(--line)}.entry-promo{border-style:dashed;border-color:#8a6d00}.entry-stripe{width:4px;border-radius:2px;flex:none}.entry-body{display:grid;grid-gap:2px;gap:2px;min-width:0}.entry-name{font-weight:700;font-size:14px;line-height:1.3;overflow-wrap:anywhere}.entry-ref .entry-name{font-weight:500}.entry-meta{font-size:12px;color:#777;overflow-wrap:anywhere}.entry-notes{font-size:13px;color:#555;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.wv-col .entry{padding:6px 8px;gap:6px}.wv-col .entry-name{font-size:12px}.wv-col .entry-meta{font-size:11px}@media (max-width:760px){.cals-tip{display:none}.cal-nav{gap:8px}.cal-nav-left,.cal-nav-right{width:100%;justify-content:space-between}.cal-nav .seg button{padding:8px 9px;font-size:10px;letter-spacing:.1em}}@media (max-width:700px){.page{padding:0 16px 48px}.stats{grid-template-columns:1fr}.stat b{font-size:36px}.two{grid-template-columns:1fr}.search{width:100%}.panel{padding:20px 16px 28px}}@media (prefers-reduced-motion:no-preference){.panel{animation:slide-in .18s ease-out}@keyframes slide-in{0%{transform:translateX(24px);opacity:.6}}}