/* Loaded after base.css and pro.css, which are the approved 6c files, unchanged. */
@font-face{font-family:'Inter';font-style:normal;font-weight:400 600;font-display:swap;src:url(/fonts/inter-latin.woff2) format('woff2');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}

/* The mockup sets these with style attributes; the page CSP allows only stylesheet rules. */
#cal{min-width:820px}
.sw.grey{background:#f4f5f7;box-shadow:inset 0 0 0 1px #e3e5e9}
[hidden]{display:none!important}

/* Additions for the working app, in the 6c tokens */
.bar .set{display:inline-flex;align-items:center;gap:6px;color:#4b5058;font-size:13px;text-decoration:none;margin-right:12px}.bar .set[hidden]{display:none}.bk-btn svg,.bar .set svg{flex:none}.bar .set:hover{color:var(--ink)}
.bar .signin{background:var(--ink);color:#fff;height:32px;padding:0 12px;border-radius:10px;font-size:13px;font-weight:500;text-decoration:none;display:inline-flex;align-items:center;margin-right:12px;transition:background-color .15s}
.bar .signin:hover{background:#33363d}
.status{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);color:var(--muted);font-size:13px;text-align:center;max-width:420px;line-height:1.5}


.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:36px;padding:0 14px;border-radius:10px;border:1px solid #e3e5e9;background:#fff;color:var(--ink);font-size:13px;font-weight:500;text-decoration:none;white-space:nowrap;transition:background-color .15s}
.btn:hover{background:#f4f5f7}
.btn.dark{background:var(--ink);border-color:var(--ink);color:#fff}.btn.dark:hover{background:#33363d}
.btn:disabled{opacity:.5;cursor:default}
.field{display:grid;gap:6px;font-size:12px;color:var(--muted)}
.field input,.field select{height:34px;border:1px solid #e3e5e9;border-radius:8px;padding:0 10px;font:inherit;font-size:13px;color:var(--ink);background:#fff;width:100%}
.field input:focus,.field select:focus{outline:2px solid #dfe8ff;border-color:var(--free)}

/* Sign-in and missing-link pages */
.center{flex:1;display:grid;place-items:center;padding:0 var(--pad) 84px}
.center .box{display:grid;gap:14px;justify-items:center;text-align:center;max-width:360px}
.center p{color:var(--muted);font-size:14px}

/* Settings rows, also drawn in the landing page's app preview */
.sec{padding:22px 0;border-top:1px solid var(--line)}
.sec:first-child{border-top:0}
.sec h2{font-size:14px;font-weight:600;margin-bottom:4px}
.note{color:var(--muted);font-size:12px}
.sec>.note{margin-bottom:14px}
.grid2{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px}
.acct{border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin-bottom:10px}
.acct-head{display:flex;align-items:center;gap:10px}
.acct-head strong{font-weight:600;font-size:14px}.acct-head .note{flex:1}
.acct-head button{border:0;background:none;color:var(--muted);font-size:12px}.acct-head button:hover{color:#c62a2f}
.cal-row{display:flex;align-items:center;gap:10px;padding:6px 0;font-size:14px}
.cal-row input{width:16px;height:16px;accent-color:var(--free)}
.cal-row .note{margin-left:auto}
.err{color:#c62a2f;font-size:12px}
.connect{display:flex;flex-wrap:wrap;gap:8px;margin-top:4px}
.save-row{display:flex;align-items:center;gap:12px;margin-top:14px}

/* Sign-in modal: the page stays visible, blurred, behind it */
.scrim{position:fixed;inset:0;z-index:40;display:grid;place-items:center;padding:16px;background:rgba(246,248,252,.35);backdrop-filter:blur(0);-webkit-backdrop-filter:blur(0);opacity:0;transition:opacity .25s var(--ease),backdrop-filter .35s var(--ease),-webkit-backdrop-filter .35s var(--ease)}
.scrim.is-on{opacity:1;backdrop-filter:blur(14px) saturate(1.15);-webkit-backdrop-filter:blur(14px) saturate(1.15)}
.scrim.is-out{opacity:0}
.has-modal .dock{opacity:.6}
.modal{position:relative;width:min(380px,100%);background:#fff;border-radius:22px;overflow:hidden;
  box-shadow:0 0 0 1px rgba(15,17,20,.06),0 30px 80px -24px rgba(31,64,170,.35),0 10px 24px -12px rgba(15,17,20,.18);
  transform:translateY(12px) scale(.96);opacity:0;transition:transform .45s var(--spring),opacity .25s var(--ease)}
.scrim.is-on .modal{transform:none;opacity:1}
.scrim.is-out .modal{transform:scale(.97);opacity:0;transition-duration:.18s}
.modal-x{position:absolute;right:12px;top:12px;z-index:2;width:30px;height:30px;border:0;border-radius:50%;background:rgba(255,255,255,.7);color:var(--muted);font-size:20px;line-height:1;cursor:pointer;transition:background-color .15s,color .15s}
.modal-x:hover{background:#fff;color:var(--ink)}
.modal-body{display:grid;gap:10px;padding:22px 26px 24px;text-align:center}
.modal-body h2{font-size:19px;font-weight:600;letter-spacing:-.02em;line-height:1.3}
.modal-body p{color:var(--muted);font-size:13.5px;line-height:1.5;margin-bottom:6px}
.modal-body .fine{font-size:12px;margin:4px 0 0}
.btn.wide{width:100%;height:42px;font-size:14px;border-radius:12px}
.btn.wide:active{transform:scale(.985)}

/* The graphic: a week of open time in the app's blue */
.sg{position:relative;height:150px;display:grid;place-items:center;background:radial-gradient(120% 90% at 50% 0%,#dfe8ff 0%,#eef3ff 45%,#fff 100%)}
.sg::after{content:"";position:absolute;inset:auto 0 0;height:40px;background:linear-gradient(transparent,#fff)}
.sg-week{position:relative;z-index:1;display:flex;gap:7px;height:96px;padding:10px;border-radius:16px;background:rgba(255,255,255,.75);box-shadow:0 0 0 1px rgba(47,107,255,.10),0 12px 30px -14px rgba(47,107,255,.45)}
.sg-col{display:flex;flex-direction:column;gap:4px;width:26px}
.sg-b{border-radius:6px;transform-origin:top;animation:sg-in .6s var(--spring) both}
.sg-b.is-free{background:var(--free)}
.sg-b.is-busy{background:#e8ecf6}
.sg-b.is-hero{animation:sg-in .6s var(--spring) both,sg-glow 2.8s ease-in-out 1.2s infinite}
@keyframes sg-in{from{transform:scaleY(.2);opacity:0}to{transform:none;opacity:1}}
@keyframes sg-glow{0%,100%{box-shadow:0 0 0 0 rgba(47,107,255,0)}50%{box-shadow:0 0 0 5px rgba(47,107,255,.18)}}

/* Signed-out home: a quiet sample week behind the modal */
.deco{flex:1;display:flex;gap:6px;padding:8px var(--pad) var(--pad) calc(var(--pad) + 52px)}
.deco-col{flex:1;display:flex;flex-direction:column;gap:4px}
.deco-col:nth-child(5){margin-right:10px}
.deco-b{border-radius:7px;background:#f4f5f7}
.deco-b.is-free{background:var(--free)}

/* Start-time picker in the block menu: 30m or 15m steps, plus a typed start */
.ml-row{display:flex;align-items:center;justify-content:space-between;gap:8px}
.mini-seg{display:flex;background:#f1f2f4;border-radius:7px;padding:2px}
.mini-seg button{border:0;background:none;font:inherit;font-size:11px;color:var(--muted);height:20px;padding:0 7px;border-radius:5px;cursor:pointer}
.mini-seg button.is-on{background:#fff;color:var(--ink);box-shadow:0 1px 2px rgba(0,0,0,.08)}
.chips{max-height:188px;overflow:auto}
.chip.custom{background:#fff;color:var(--muted);box-shadow:inset 0 0 0 1px #e3e5e9}
.chip.custom:hover,.chip.custom:focus-visible{background:var(--free);color:#fff;box-shadow:none}
.custom-row{display:flex;gap:4px;align-items:center}
.custom-row input{height:26px;border:1px solid #c9d7ff;border-radius:7px;padding:0 6px;font:inherit;font-size:12px;color:var(--ink);background:#fff}
.custom-row input:focus{outline:2px solid #dfe8ff;border-color:var(--free)}
.custom-wrap{max-height:none;padding-top:2px}
/* Typed custom start (replaces the native time picker) */
.custom-box{display:grid;gap:4px;width:100%}
.custom-row input{width:110px;height:28px;font-weight:600;font-variant-numeric:tabular-nums}
.custom-row input::placeholder{color:#a9adb5;font-weight:500}
.custom-row.is-bad input{border-color:#f0b4b6;outline-color:#fde3e4}
.custom-row .chip:disabled{opacity:.45;cursor:default;transform:none;background:#f1f4fe;color:#2448b8}
.custom-hint{font-size:11px;color:var(--muted);padding-left:2px;min-height:14px}
.custom-row.is-bad + .custom-hint{color:#c62a2f}
/* A chip is a selection, not an action */
.chip.is-on{background:var(--free);color:#fff;box-shadow:0 0 0 2px #fff,0 0 0 3.5px var(--free)}
.chip.is-on:hover{background:var(--free-hover);color:#fff}

/* Meeting-length label in the dock */
.dock-label{color:#8d919b;font-size:12px;font-weight:500;padding:0 4px 0 10px;white-space:nowrap}

/* Step 2 of the block menu: one exact time, copy or book */
.menu.is-step{animation:step-in .22s var(--ease) both}
@keyframes step-in{from{opacity:.4;transform:translateX(8px)}to{opacity:1;transform:none}}
.mh-back{flex-direction:row;align-items:center;gap:6px;padding-left:4px}
.mh-back>div{display:flex;flex-direction:column;gap:1px}
.menu .back{border:0;background:none;width:28px;height:28px;border-radius:8px;font-size:20px;line-height:1;color:var(--muted);cursor:pointer;flex:none}
.menu .back:hover,.menu .back:focus-visible{background:#f2f3f5;color:var(--ink);outline:0}
.slot-book{padding:4px 6px 6px}
.book-form{display:grid;gap:10px}
.book-form .btn.wide{height:38px;font-size:13px;border-radius:10px}
.book-note{font-size:12px;color:var(--muted);line-height:1.45;padding:0 4px}
.book-note a{color:var(--free);text-decoration:none;font-weight:500}
.mi.is-done .mi-l{display:inline-flex;align-items:center;gap:5px;color:#1f8a4c;font-weight:600}
.mi.is-done .mi-l::before{content:"";width:12px;height:12px;flex:none;background:currentColor;
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M2.5 6.2 5 8.6l4.5-5' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat;
  mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M2.5 6.2 5 8.6l4.5-5' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat}

/* Profile photo or generated avatar inside the 6c .av circle */
.av.has-img{background:#fff;overflow:hidden;border:1px solid #dfe2e7;box-sizing:border-box}
.av2.has-img{box-shadow:0 0 0 2px #fff,0 0 0 3px #e3e5e9}
.av img{display:block;width:100%;height:100%;border-radius:50%;object-fit:cover}
.brand-mark{display:block;flex:none;width:30px;height:30px}

/* Onboarding: the sign-in modal's card, wider, with the same graphic and spring */
.modal.ob{width:min(540px,100%);display:flex;flex-direction:column;max-height:calc(100vh - 32px)}
.modal.ob .sg{height:118px;flex:none}
.modal.ob .sg-week{height:78px;padding:8px;gap:6px}
.modal.ob .sg-col{width:22px}
.ob-body{text-align:left;padding:4px 28px 24px;overflow:auto;min-height:0}
.ob-step{display:grid;gap:8px}
.ob-step.is-in{animation:step-in .26s var(--ease) both}
.ob-step>p{color:var(--muted);font-size:13.5px;line-height:1.5;margin:0}
.ob-progress{display:flex;gap:5px;margin-bottom:4px}
.ob-progress i{height:4px;width:22px;border-radius:2px;background:#e8ecf6;transition:background-color .3s,width .35s var(--spring)}
.ob-progress i.is-done{background:#9db7ff}
.ob-progress i.is-on{background:var(--free);width:34px}
.ob-content{display:grid;gap:12px;margin-top:10px}
.ob-msg{min-height:0;color:#c62a2f!important;font-size:12.5px!important}
.ob-msg:empty{display:none}
.ob-foot{display:flex;align-items:center;gap:8px;margin-top:12px}
.ob-foot .grow{flex:1}
.ob-skip{border:0;background:none;color:var(--muted);font-size:13px;padding:0 4px;height:36px}
.ob-skip:hover{color:var(--ink)}
.ob-acct{border:1px solid var(--line);border-radius:12px;padding:10px 14px}
.ob-acct-h{display:flex;align-items:baseline;gap:10px;padding-bottom:4px}
.ob-acct-h strong{font-weight:600;font-size:14px}
.ob-acct .cal-row{padding:5px 0}
.ob-acct .cal-row .note{margin-left:auto}
.ob-tz{margin-top:-2px}
.ob-handle{display:flex;align-items:center;height:42px;border:1px solid #e3e5e9;border-radius:10px;padding:0 6px 0 12px;background:#fff;font-size:15px}
.ob-handle:focus-within{outline:2px solid #dfe8ff;border-color:var(--free)}
.ob-handle .prefix{color:var(--muted);white-space:nowrap}
.ob-handle input{flex:1;min-width:0;border:0;outline:0;font:inherit;font-weight:600;color:var(--ink);background:none;height:100%}
.note.err{color:#c62a2f}
/* The finished link, drawn like the dock's link button */
.ob-link{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;height:50px;padding:0 6px 0 16px;border:0;border-radius:13px;background:#15171a;color:#fff;cursor:pointer;transition:transform .15s}
.ob-link:active{transform:scale(.985)}
.ob-link .url{font-weight:600;font-size:15px;letter-spacing:-.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ob-link .cp{position:relative;display:grid;place-items:center;min-width:72px;height:36px;background:var(--free);color:#fff;border-radius:9px;font-size:13px;font-weight:600;overflow:hidden;flex:none}
.ob-link .cp i{font-style:normal;transition:transform .3s var(--spring),opacity .2s}
.ob-link .cp i+i{position:absolute;transform:translateY(120%);opacity:0}
.ob-link.is-done .cp i:first-child{transform:translateY(-120%);opacity:0}
.ob-link.is-done .cp i+i{transform:none;opacity:1}

/* Custom dropdown (no native select) */
.dd{position:relative;min-width:0}
.dd-btn{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;height:34px;border:1px solid #e3e5e9;border-radius:8px;padding:0 10px;background:#fff;font-size:13px;color:var(--ink);text-align:left;transition:border-color .15s}
.dd-btn:hover{border-color:#cfd2d8}
.dd-btn:focus-visible,.dd.is-open .dd-btn{outline:2px solid #dfe8ff;border-color:var(--free)}
.dd-btn:disabled{opacity:.5;cursor:default}
.dd-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dd-text.is-empty{color:var(--muted)}
.dd-chev{flex:none;color:var(--muted);transition:transform .2s var(--ease)}
.dd.is-open .dd-chev{transform:rotate(180deg)}
.dd-pop{position:absolute;left:0;right:0;top:calc(100% + 6px);z-index:30;min-width:180px;padding:6px;background:#fff;border-radius:12px;
  box-shadow:0 0 0 1px rgba(15,17,20,.06),0 16px 40px -12px rgba(15,17,20,.28),0 4px 10px -4px rgba(15,17,20,.12);animation:menu-in .16s var(--ease) both}
.dd-pop.is-up{top:auto;bottom:calc(100% + 6px)}
.dd-search{width:100%;height:32px;border:1px solid #e3e5e9;border-radius:8px;padding:0 10px;margin-bottom:4px;font:inherit;font-size:13px;color:var(--ink)}
.dd-search:focus{outline:2px solid #dfe8ff;border-color:var(--free)}
.dd-list{max-height:232px;overflow:auto;display:grid;gap:1px}
.dd-item{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;min-height:32px;border:0;background:none;border-radius:7px;padding:0 10px;font-size:13px;color:var(--ink);text-align:left}
.dd-item small{color:var(--muted);font-size:11.5px}
.dd-item.is-active{background:#f2f3f5}
.dd-item[aria-selected=true]{color:var(--free);font-weight:600}
.dd-item[aria-selected=true]::after{content:"";width:6px;height:10px;border:solid var(--free);border-width:0 2px 2px 0;transform:rotate(45deg);margin-right:4px;flex:none}
.st .rc .dd-pop{left:auto;right:0;min-width:280px}
.dd-none{padding:8px 10px;font-size:12px;color:var(--muted)}
.dd-group{padding:8px 10px 4px;font-size:11.5px;font-weight:600;color:var(--muted)}
.dd-group:not(:first-child){margin-top:4px;border-top:1px solid var(--line);padding-top:10px}
.st .rc .dd.dd-zone .dd-pop{min-width:380px}
.dd-item small{white-space:nowrap}
.field>span{display:block}

/* Profile editor */
.pf{display:grid;gap:16px}
.pf-avatar{display:flex;gap:16px;align-items:flex-start}
.pf .av.pf-preview{width:64px;height:64px;font-size:26px;flex:none}
.pf-avatar-r{display:grid;gap:8px;min-width:0}
.pf-label{font-size:12px;color:var(--muted)}
.pf-choices{display:flex;flex-wrap:wrap;gap:6px}
.pf-choice{width:34px;height:34px;padding:0;border:0;border-radius:50%;background:#f4f5f7;display:grid;place-items:center;overflow:hidden;box-shadow:0 0 0 1px #e3e5e9;transition:box-shadow .15s,transform .15s var(--spring)}
@media (hover: hover) and (pointer: fine) {.pf-choice:hover {transform:translateY(-1px);}}
.pf-choice img{width:100%;height:100%;object-fit:cover;display:block}
.pf-choice[aria-checked=true]{box-shadow:0 0 0 2px #fff,0 0 0 4px var(--free)}
.pf-none{font-weight:600;font-size:13px;color:#fff;background:var(--ink);width:100%;height:100%;display:grid;place-items:center}
.pf-actions{display:flex;align-items:center;gap:12px}
.pf-upload{height:32px}
.pf-remove{border:0;background:none;color:var(--muted);font-size:12.5px}
.pf-remove:hover{color:#c62a2f}
.pf-msg{font-size:12px;color:var(--muted);min-height:0}
.pf-msg:empty{display:none}
.pf-contacts{display:grid;gap:8px}
.pf-contacts>.note{margin-top:-4px}
.pf-row{display:grid;grid-template-columns:1fr auto;gap:12px;align-items:end}
.pf-row .ck{height:34px}

/* The owner's note and chosen contact details on their public link */
.prof{display:flex;align-items:center;gap:14px;min-width:0;margin-right:14px;font-size:13px;color:var(--muted)}
.prof-note{max-width:280px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#4d525b}
.prof-c{display:inline-flex;align-items:center;gap:6px;color:var(--muted);text-decoration:none;white-space:nowrap;transition:color .15s}
.prof-c:hover{color:var(--ink)}
.prof-c svg{flex:none;color:#a2a6ae}
@media (max-width:980px){.prof{display:none}}
.pf-pick{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.pf-choices{background:none}
.pf-choice{background:#fff}
.pf-shuffle{border:0;background:#f1f4fe;color:#2448b8;font-size:12px;font-weight:600;height:28px;padding:0 10px;border-radius:7px;transition:background-color .15s,color .15s}
.pf-shuffle:hover{background:var(--free);color:#fff}

/* One-week mode when the grid is tight: no fixed min-width, a This week / Next week switch */
#cal.is-week{min-width:0}
.cal.is-week .c-head .c-day:nth-child(6),.cal.is-week .c-cols .c-col:nth-child(5){margin-right:0}
/* Two weeks side by side: the gap follows the first week's last column (grid.js marks it), weekends or not. */
.cal.has-split .c-head .c-day,.cal.has-split .c-cols .c-col{margin-right:0}
.cal.has-split:not(.is-week) .c-head .c-day.is-wk-end,.cal.has-split:not(.is-week) .c-cols .c-col.is-wk-end{margin-right:10px}
.c-weeknav{display:flex;gap:2px;align-self:flex-start;margin:0 0 8px var(--gut,52px);background:#f1f2f4;border-radius:9px;padding:3px}
.c-weeknav button{border:0;background:none;font:inherit;font-size:12px;color:var(--muted);height:26px;padding:0 10px;border-radius:7px;cursor:pointer}
.c-weeknav button.is-on{background:#fff;color:var(--ink);box-shadow:0 1px 2px rgba(0,0,0,.08)}
.dock button{white-space:nowrap}
.acct-head img{flex:none}
.connect .btn img{flex:none}

/* Optical centring: lowercase text sits below its line box centre, so the icon drops 1px to meet it */
.prof-c svg{display:block;transform:translateY(1px)}

/* Booking: the upcoming list on the owner page */
.bk-text{color:var(--muted);font-size:12.5px;line-height:1.45}
.bk-up{display:grid;gap:6px}
.bk-row{display:flex;align-items:center;gap:12px;border:1px solid var(--line);border-radius:12px;padding:10px 12px}
.bk-row-words{display:grid;gap:1px;flex:1;min-width:0}
.bk-row-words strong{font-size:13.5px;font-weight:600}
.bk-row-words .bk-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bk-when{font-size:12.5px;color:#3a3d44}
.bk-where{font-size:11.5px;color:var(--muted);white-space:nowrap}
.bk-cancel{border:1px solid #e3e5e9;background:#fff;border-radius:8px;height:30px;padding:0 10px;font:inherit;font-size:12.5px;color:var(--ink);white-space:nowrap;cursor:pointer;transition:background-color .15s,color .15s,border-color .15s}
.bk-cancel:hover{background:#f4f5f7}
.bk-cancel.is-confirm{border-color:#f0b4b6;color:#c62a2f;background:#fff5f5}

/* Owner page: the Bookings button and its popover */
.bk-wrap{margin-right:12px;display:flex;align-items:center}
.bk-btn{display:inline-flex;align-items:center;gap:6px;border:0;background:none;color:#4b5058;font:inherit;font-size:13px;cursor:pointer;padding:0}
.bk-btn:hover,.bk-btn[aria-expanded=true]{color:var(--ink)}
.bk-count{display:inline-grid;place-items:center;min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:var(--free);color:#fff;font-size:11px;font-weight:600}
.helppop.bkpop{width:380px;max-height:60vh;overflow:auto;padding:12px}
.bkpop-h{font-weight:600;color:var(--ink);margin-bottom:8px}
.bkpop .bk-row{padding:8px 10px}
.bkpop .bk-where{display:none}

/* Public link with booking off */
.book-off{font-size:12.5px;color:var(--muted);margin-right:14px;white-space:nowrap}

/* The booker's confirmation */
.modal.bk-done .modal-body{gap:8px}
.bk-done-how a{color:var(--free);text-decoration:none;font-weight:500}
.bk-done-when{color:var(--ink)!important;font-weight:600;font-size:14px!important;margin-bottom:0!important}
.modal.bk-done .btn.wide+.btn.wide{margin-top:2px}

/* Checkbox: a choice that applies when its form is saved */
.ck{display:inline-flex;align-items:center;gap:8px;height:34px;font-size:12.5px;color:#3a3d44;white-space:nowrap;cursor:pointer}
.cb{appearance:none;-webkit-appearance:none;width:16px;height:16px;margin:0;border-radius:4px;border:1.5px solid #c9ccd3;background:#fff;flex:none;display:grid;place-items:center;cursor:pointer;transition:background-color .15s,border-color .15s}
.cb::after{content:"";width:4px;height:8px;border:solid #fff;border-width:0 2px 2px 0;transform:translateY(-1px) rotate(45deg);opacity:0}
.cb:checked{background:var(--free);border-color:var(--free)}
.cb:checked::after{opacity:1}
.cb:focus-visible{outline:2px solid #dfe8ff;outline-offset:1px;border-color:var(--free)}
.cb:disabled{cursor:default}
.ck:has(.cb:disabled){opacity:.45;cursor:default}
.dd-text small{color:#6b7079;font-size:12px;margin-left:6px}

/* Settings: a dialog over the calendar in the sign-in modal's scrim and card */
.modal.st{--help:#6b7079;--edge:#e3e5e9;--ok:#1f8a4c;--bad:#c62a2f;width:min(940px,100%);height:min(740px,calc(100vh - 32px));display:grid;grid-template-columns:240px minmax(0,1fr)}
.st-x{position:absolute;right:16px;top:16px;z-index:2;width:30px;height:30px;border:0;border-radius:50%;background:#f4f5f7;color:var(--help);font-size:20px;line-height:1;display:grid;place-items:center;transition:background-color .15s,color .15s}
.st-x:hover{background:#eceef1;color:var(--ink)}
.st-side{background:#fafbfc;border-right:1px solid var(--line);padding:20px 12px;display:flex;flex-direction:column;gap:14px;min-height:0;overflow:auto}
.st-who{display:flex;align-items:center;gap:10px;padding:0 6px}
.st-who-t{min-width:0}
.st-title{font-weight:600;font-size:14px}
.st .av{flex:none}
.st .av.has-img{border-color:#dfe2e7}
.st .note,.sy .note{color:var(--help);font-size:12.5px;line-height:1.45}
.st-link{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.st .nav{display:grid;gap:2px;align-content:start}
.st .nav a{display:flex;align-items:center;gap:10px;height:34px;padding:0 10px;border-radius:8px;font-size:13.5px;color:#3a3d44;text-decoration:none;white-space:nowrap;transition:background-color .15s}
.st .nav a:hover{background:#f2f3f5}
.st .nav a svg{flex:none;color:var(--muted)}
.st .nav a[aria-current=page]{background:#f2f3f5;color:var(--ink);font-weight:600}
.st .nav a[aria-current=page] svg{color:var(--ink)}
.st .nav a:focus-visible{outline:2px solid #dfe8ff}
.st .nav hr{border:0;height:1px;background:var(--line);margin:8px 4px}
.st-list,.st .st-ptop{display:none}
.st-main{position:relative;min-width:0;min-height:0;display:flex;flex-direction:column}
.st-scroll{flex:1;min-height:0;overflow:auto;padding:28px 34px 34px}
.st-inner{padding-right:30px}
.st .sec{padding:0;border-top:0}
.st .sec-h{display:flex;align-items:center;gap:10px;margin-bottom:4px;min-height:22px}
.st .sec-h h2{font-size:15px;font-weight:600;letter-spacing:-.01em;margin:0}
.st .sec-h .grow{flex:1}
.st-saved{display:inline-flex;min-width:0}
.st .saved{display:inline-flex;align-items:center;gap:5px;color:var(--ok);font-size:12.5px;font-weight:500;white-space:nowrap}
.st .saved svg{flex:none}
.st .err{color:var(--bad);font-size:12.5px}
.st .f,.sy .f{display:grid;gap:6px;font-size:12.5px;color:var(--help);min-width:0}
.st .f>.lab,.sy .f>.lab{color:#3a3d44;font-weight:500}
.st .g2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.st .btn.sm,.sy .btn.sm{height:32px;padding:0 12px;font-size:12.5px}
.st .btn svg,.st .btn img{flex:none}
.st .btn.danger{color:var(--bad)}
.st .btn.red{background:var(--bad);border-color:var(--bad);color:#fff}
.st .btn.red:hover{background:#a9232a}
.st .linkbtn,.sy .linkbtn{border:0;background:none;color:var(--help);font-size:12.5px;padding:0;white-space:nowrap}
.st .linkbtn:hover,.sy .linkbtn:hover{color:var(--ink)}
.st .linkbtn.red,.sy .linkbtn.red{color:var(--bad)}
.st .input,.sy .input{height:34px;border:1px solid var(--edge);border-radius:8px;padding:0 10px;font:inherit;font-size:13px;color:var(--ink);background:#fff;width:100%;min-width:0}
.st .input::placeholder{color:#a9adb5}
.st .input:focus,.sy .input:focus{outline:2px solid #dfe8ff;border-color:var(--free)}
.st .w260{width:260px}.st .w220{width:220px}.st .w200{width:200px}
.st .src-ic{width:28px;height:28px;border-radius:8px;background:#f4f5f7;display:grid;place-items:center;flex:none;color:#4d525b}
/* Setting rows: the name and help on the left, the control on the right, in bordered lists */
.st .grp-l{font-size:12.5px;font-weight:600;color:#3a3d44;margin:22px 0 8px}
.st .grp-note{margin:-4px 0 10px}
.st .grp{border:1px solid var(--edge);border-radius:12px;background:#fff}
.st .sec>.note+.grp{margin-top:18px}
.st .grp+.grp{margin-top:12px}
.st .row{display:flex;align-items:center;gap:16px;padding:13px 16px;min-height:56px;border-top:1px solid var(--line);position:relative}
.st .grp>.row:first-child,.st .grp>[hidden]:first-child+.row{border-top:0}
.st .rl{flex:1;min-width:0;display:grid;gap:2px}
.st .rl>b{font-size:13.5px;font-weight:500}
.st .rl>span,.st .rl>.pf-label{font-size:12.5px;color:var(--help);line-height:1.45}
.st .rl>.err{color:var(--bad)}
.st .rc{display:flex;align-items:center;gap:8px;flex:none}
.st .row.stack{display:grid;gap:10px;align-items:stretch}
.st .row.stack .rc{flex:1;min-width:0;flex-wrap:wrap}
.st .row.stack .rc .input{flex:1}
.st .row.stack .rc .val{flex:1;min-width:0;height:auto;min-height:32px;white-space:normal;overflow-wrap:anywhere}
.st .empty{padding:16px;font-size:13px;color:var(--help)}
.st .ago{font-size:12.5px;color:var(--help);white-space:nowrap}
.st .rl>.ago-in{display:none}
.st .val{height:32px;display:flex;align-items:center;padding:0 12px;border-radius:8px;background:#f4f5f7;font-weight:600;font-size:13px;color:var(--ink);font-variant-numeric:tabular-nums;white-space:nowrap}
/* An account's header row in Calendars */
.st .acct{gap:10px;min-height:52px;margin:0;padding:13px 16px;border:0;background:#fafbfc;border-radius:12px 12px 0 0}
.st .grp>.acct+.row{border-top:1px solid var(--line)}
.st .acct>b{font-size:13.5px;font-weight:600}
.st .acct .em{color:var(--help);font-size:12.5px;flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.st .acct img{flex:none}
.st .row>p.err{padding:2px 0}
/* Switch */
.st .tg{position:relative;width:32px;height:18px;border:0;padding:0;border-radius:9px;background:#d3d6dc;flex:none;cursor:pointer;transition:background-color .15s}
.st .tg::after{content:"";position:absolute;left:2px;top:2px;width:14px;height:14px;border-radius:50%;background:#fff;box-shadow:0 1px 2px rgba(15,17,20,.25);transition:left .2s var(--ease)}
.st .tg[aria-checked=true]{background:var(--free)}
.st .tg[aria-checked=true]::after{left:16px}
.st .tg:disabled{background:#e6e8ec;cursor:default}
/* Hours: the days that take bookings, and hours for each day */
.st .days-row{align-items:flex-start}
.st .days-row>.rc{flex-direction:column;align-items:flex-end;gap:8px}
.st .day-chips{display:flex;gap:4px}
.st .day-chip{height:30px;min-width:44px;padding:0 8px;border:1px solid var(--edge);border-radius:8px;background:#fff;font-size:12.5px;font-weight:500;color:#3a3d44;transition:background-color .15s,border-color .15s,color .15s}
.st .day-chip:hover{border-color:#cfd2d8}
.st .day-chip[aria-pressed=true]{background:var(--free);border-color:var(--free);color:#fff}
.st .day-chip[aria-pressed=true]:hover{background:var(--free-hover);border-color:var(--free-hover)}
.st .day-chip:focus-visible{outline:2px solid #dfe8ff;outline-offset:1px}
.st .day-presets{display:flex;gap:16px}
.st .day-presets .linkbtn[aria-pressed=true]{color:var(--free);font-weight:600}
.st .st-expand{display:inline-flex;align-items:center;gap:6px;margin-top:18px;padding:4px 2px;border:0;background:none;font-size:13px;font-weight:500;color:#3a3d44;transition:color .15s}
.st .st-expand:hover{color:var(--ink)}
.st .st-expand svg{color:var(--help);transition:transform .2s var(--ease)}
.st .st-expand[aria-expanded=true] svg{transform:rotate(90deg)}
.st .st-expand:focus-visible{outline:2px solid #dfe8ff;border-radius:6px}
.st .perday{margin-top:6px}
.st .perday>.note{margin:0 0 10px}
.st .dayrow{align-items:flex-start}
.st .dayrow>.tg{margin-top:8px}
.st .dayrow>.rl{padding-top:7px}
.st .dayrow.is-off>.rl>b{color:var(--help)}
.st .dayrow>.rc{flex-direction:column;align-items:flex-end;gap:6px}
.st .dayrow .off{height:34px;display:flex;align-items:center;font-size:12.5px;color:var(--help)}
.st .range{display:flex;align-items:center;gap:6px}
.st .range .dd{width:108px}
.st .range .dash{color:var(--help);font-size:13px}
.st .range .range-x{width:28px;height:28px;border-radius:8px;flex:none}
.st .add-range{display:inline-flex;align-items:center;gap:5px;justify-self:start;height:24px;margin-top:2px;color:var(--free);font-weight:500}
.st .add-range:hover{color:var(--free-hover)}
.st .perday-foot{display:flex;justify-content:flex-end;margin-top:12px}
.st .tg:disabled::after{box-shadow:none}
.st .tg:focus-visible{outline:2px solid #dfe8ff;outline-offset:2px}
/* The "…" button and its menu, drawn as the block menu */
.st .more-wrap{position:relative;flex:none}
.st .more{width:28px;height:28px;border:0;border-radius:8px;background:none;color:var(--help);display:grid;place-items:center;transition:background-color .15s,color .15s}
.st .more:hover,.st .more.is-open{background:#f2f3f5;color:var(--ink)}
.st .more:focus-visible{outline:2px solid #dfe8ff}
.st .st-menu{position:absolute;right:-8px;top:calc(100% + 8px);min-width:200px;transform-origin:top right;animation:menu-in .16s var(--ease) both}
.st .st-menu .mi{justify-content:flex-start;white-space:nowrap}
.st .st-confirm{display:flex;justify-content:flex-end;gap:8px;padding:6px 6px 4px}
.st .st-menu .ml{padding:6px 10px 4px;font-size:12px;color:var(--help);line-height:1.4}
/* Your link: the address, then a field with Save and Cancel after Edit */
.st .linkcard{margin-top:18px;border:1px solid var(--edge);border-radius:14px;padding:18px 18px 18px 20px;display:flex;align-items:center;gap:10px}
.st .linkcard .url{flex:1;min-width:0;font-size:18px;font-weight:600;letter-spacing:-.015em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.st .linkcard .url span{color:var(--help);font-weight:500}
.st .linkedit{margin-top:18px;border:1px solid var(--edge);border-radius:14px;padding:16px 18px 16px 20px;display:grid;gap:10px}
.st .linkedit .r{display:flex;gap:8px}
.st .linkedit .btn{height:36px}
.st .handle{flex:1;display:flex;align-items:center;height:36px;min-width:0;border:1px solid var(--edge);border-radius:8px;padding:0 10px;background:#fff;font-size:13px}
.st .handle:focus-within{outline:2px solid #dfe8ff;border-color:var(--free)}
.st .handle .prefix{color:var(--help);white-space:nowrap}
.st .handle input{flex:1;min-width:0;border:0;outline:0;font:inherit;font-weight:600;color:var(--ink);background:none;height:100%;padding:0}
/* Profile: the picture row */
.st .row.pic{align-items:flex-start}
.st .row.pic .pf-preview{width:56px;height:56px;font-size:22px;flex:none}
.st .row.pic .pf-pick{margin-top:8px}
.st .row.pic .pf-msg{margin-top:4px}
.st .pf-upload{height:32px;padding:0 12px;font-size:12.5px}
.st .ck{height:auto;font-size:12.5px}
/* Calendars: the iCloud form inside the connect list */
.st .icloud-form .rl a,.st .remove-access a{color:var(--free);text-decoration:none;font-weight:500}
.st .icloud-form .rl a:hover,.st .remove-access a:hover{text-decoration:underline}
.st .icloud-form .rc{flex:none;justify-content:flex-start}
.st .remove-access{margin-top:14px;padding:10px 14px;border:1px solid var(--edge);border-radius:12px;background:#fafbfc}
/* Booking: the upcoming list inside its group */
.st .list{border:1px solid var(--edge);border-radius:12px;overflow:hidden}
.st .grp .list{border:0;border-radius:0}
.st .grp>.bk-table>.note{padding:16px;font-size:13px}
.st .li{display:flex;align-items:center;gap:12px;padding:10px 16px;border-top:1px solid var(--line);font-size:13px;min-width:0}
.st .li:first-child{border-top:0}
.st .li .when{width:150px;flex:none;font-weight:500}
.st .li .when .note{font-weight:400}
.st .li .who{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.st .li .who span{color:var(--help)}
.st .bk-cancel-link{margin-left:auto}
.st .bk-cancel-link.is-confirm{color:var(--bad)}
/* Account: deleting sits in its own list */
.st .grp-sep{margin-top:22px}
/* Phone: the dialog fills the screen and the nav is a list that opens each section */
.ptop{display:flex;align-items:center;gap:8px;height:56px;padding:0 8px 0 12px;border-bottom:1px solid var(--line);flex:none}
.ptop h3{font-size:16px;font-weight:600;flex:1;letter-spacing:-.01em;margin:0}
.st .ptop .st-saved{padding-right:8px}
.st .iconbtn{width:36px;height:36px;border:0;border-radius:10px;background:none;display:grid;place-items:center;color:#4d525b;flex:none}
.st .iconbtn:hover{background:#f2f3f5}
.st-me{display:flex;align-items:center;gap:12px;padding:16px}
.st-me .av{width:44px;height:44px;font-size:17px}
.st-me-name{font-weight:600}
.st .dlist{display:grid}
.st .dlist a{display:flex;align-items:center;gap:12px;height:52px;padding:0 16px;border-top:1px solid var(--line);font-size:15px;color:var(--ink);text-decoration:none}
.st .dlist a:first-child{border-top:0}
.st .dlist a:hover{background:#fafbfc}
.st .dlist .grow{flex:1}
.st .dlist svg.ch{color:#b5b9c0;flex:none}
@media (max-width:640px){
  .scrim.is-st{padding:0}
  .modal.st{width:100%;height:100%;border-radius:0;grid-template-columns:minmax(0,1fr)}
  .st-side{display:none}
  .st.is-list .st-list{display:flex;flex-direction:column;min-height:0;overflow:auto}
  .st.is-list .st-main{display:none}
  .st .st-ptop{display:flex}
  .st-list-h{padding-left:4px}
  .st-x{top:13px;right:8px}
  .st:not(.is-list) .st-x{display:none}
  .st .sec-h{display:none}
  .st-scroll{padding:16px}
  .st-inner{padding-right:0}
  .st .row{padding:12px 14px;gap:12px}
  /* Rows whose control needs the width put it under the name */
  .st .row.wide,.st .row:has(>.rc .btn){flex-wrap:wrap}
  .st .row.wide>.rc,.st .row:has(>.rc .btn)>.rc{width:100%;flex-wrap:wrap}
  .st .row.wide>.rc>.dd,.st .row.wide>.rc>.input{flex:1;width:auto}
  .st .row.pic>.rc{padding-left:68px}
  .st .row>.ago{display:none}
  .st .rl>.ago-in{display:block}
  .st .linkcard{flex-wrap:wrap;padding:14px 16px}
  .st .linkcard .url{flex-basis:100%;font-size:16px}
  .st .linkedit .r{flex-wrap:wrap}
  .st .linkedit .handle{flex-basis:100%}
  .st .g2{grid-template-columns:minmax(0,1fr)}
  .st .li .when{width:112px}
  /* Four avatar choices fit beside Shuffle on one row, as in the approved phone layout */
  .st .pf-choice:nth-child(n+5){display:none}
}
.st .iconbtn:focus{outline:0}
.st .iconbtn:focus-visible{outline:2px solid #dfe8ff}
.st .ptop h3:focus{outline:0}
.choices{display:grid;gap:8px}
.choice{display:grid;grid-template-columns:18px 1fr;gap:10px;align-items:start;padding:12px 14px;border:1px solid #e3e5e9;border-radius:12px;background:#fff;cursor:pointer;transition:border-color .15s,background-color .15s}
.choice.on{border-color:var(--free);box-shadow:0 0 0 1px var(--free);background:#f7f9ff}
.choice .rd{appearance:none;-webkit-appearance:none;width:18px;height:18px;margin:1px 0 0;border-radius:50%;border:1.5px solid #c9ccd3;background:#fff;cursor:pointer;transition:border-width .15s,border-color .15s}
.choice .rd:checked{border:5px solid var(--free)}
.choice .rd:focus-visible{outline:2px solid #dfe8ff;outline-offset:2px}
.choice label{display:block;cursor:pointer}
.choice b{display:block;font-size:13.5px;font-weight:600;margin-bottom:2px}
.choice .note{color:#6b7079;font-size:12.5px;line-height:1.45}
.choice .inner{margin-top:10px;cursor:default}
.choice .f{display:grid;gap:6px;font-size:12.5px;color:#6b7079;min-width:0;max-width:360px}
.choice .f>.lab{color:#3a3d44;font-weight:500}
.choice .bk-status{margin-top:8px}
.choice .connect{margin-top:8px}

/* Error and not-found pages. */
.brand-link{display:block;border-radius:8px}
.err-box{max-width:440px}
.err-box h2{font-size:22px;font-weight:600;letter-spacing:-.02em;color:var(--ink)}
.err-box p{line-height:1.55}
.center .err-code{font-size:13px;font-weight:500;color:var(--muted)}
.err-acts{display:flex;gap:8px;flex-wrap:wrap;justify-content:center;margin-top:6px}
.err-foot{display:flex;gap:18px;justify-content:center;padding:0 var(--pad) 28px;font-size:13px}
.err-foot a{color:var(--muted);text-decoration:none}.err-foot a:hover{color:var(--ink)}

/* Public link states with no grid: not set up yet, or times unavailable. */
.state{flex:1;display:grid;place-items:center;padding:0 var(--pad) 84px}
.state-box{display:grid;gap:12px;justify-items:center;text-align:center;max-width:440px}
.state-box h2{font-size:20px;font-weight:600;letter-spacing:-.02em}
.state-box p{color:var(--muted);font-size:14px;line-height:1.55}

/* Owner banner: a calendar to reconnect, or no calendars chosen yet. */
.banner{display:flex;align-items:center;gap:12px;margin:0 var(--pad) 12px;padding:10px 14px;border:1px solid #f3d6a6;background:#fff8ec;border-radius:12px;font-size:13px;line-height:1.45;color:#5b3d07;flex:none}
.banner p{flex:1}
.banner .btn{height:32px}

/* Booking step for a visitor who is not signed in, and the "booking as" line. */
.book-as{font-size:13px;color:var(--ink);line-height:1.45;padding:0 4px;overflow-wrap:anywhere}
.book-as span{display:block;color:var(--muted)}

.modal-body .fine a{color:inherit;text-decoration:underline;text-underline-offset:2px}.modal-body .fine a:hover{color:var(--ink)}

/* Settings: Read a calendar from my screen, the preview of what was read. It uses the calendar's grid look. */
.st .sr,.sy .sr{display:grid;gap:12px}
.sr-grid{--days:5;--gut:52px;border:1px solid var(--edge);border-radius:12px;padding:8px 10px 10px 0;background:#fff}
.sr-head{display:grid;grid-template-columns:var(--gut) repeat(var(--days),1fr);height:40px;align-items:center}
.sr-head .c-day{text-align:center;display:flex;flex-direction:column;line-height:1.15}
.sr-head .c-dow{font-size:11px;color:var(--muted)}
.sr-head .c-num{font-weight:600;font-size:13px}
.sr-body{display:grid;grid-template-columns:var(--gut) 1fr;position:relative}
.sr-gut{position:relative}
.sr-gut .c-hour{position:absolute;right:10px;transform:translateY(-50%);font-size:11px;color:var(--muted);white-space:nowrap}
.sr-cols{display:grid;grid-template-columns:repeat(var(--days),1fr);background-image:repeating-linear-gradient(to bottom,var(--line) 0 1px,transparent 1px calc(100% / var(--rows)));border-bottom:1px solid var(--line)}
.sr-col{position:relative;border-left:1px solid var(--line)}
.sr-col:last-child{border-right:1px solid var(--line)}
.sr-blk{position:absolute;left:3px;right:3px;margin-top:1px;border:0;border-radius:6px;background:#e3e6eb;color:#3a3d44;font-size:11px;font-weight:500;text-align:left;padding:3px 6px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;min-height:8px;line-height:1.3;transition:background-color .15s}
.sr-blk:hover{background:#d8dce3}
.sr-blk.is-on{background:#fff;box-shadow:inset 0 0 0 2px var(--free);color:var(--ink)}
.sr-blk:focus-visible{outline:2px solid #dfe8ff;outline-offset:1px}
.sr-edit{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap}
.sr-edit .f{width:130px}
.sr-edit .linkbtn{height:34px}
.st .sr-name{max-width:360px}
.st .sr-row,.sy .sr-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.sr-blk.is-short{font-size:0;padding:0}
.modal.st:focus{outline:0}

/* Owner page: the Calendars menu beside Bookings. Each item opens Settings at the place that does it. */
.cm-wrap{margin-right:12px;display:flex}
.cm-btn svg{flex:none}
.helppop.cmpop{width:320px;max-height:min(72vh,580px);overflow:auto;padding:6px;line-height:1.3}
.cmpop .cm-h{padding:8px 10px 4px;font-size:11px;font-weight:500}
.cmpop hr{border:0;height:1px;background:#eef0f3;margin:4px 6px}
.cm-mi{gap:12px;text-decoration:none}
.cm-l{display:flex;align-items:center;gap:10px;min-width:0}
.cm-l img,.cm-blank{flex:none;width:16px;height:16px}
.cm-t{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cm-r{flex:none;color:var(--muted);font-size:12px;font-variant-numeric:tabular-nums}
.cmpop .mi.primary .cm-t{color:var(--free)}
.cmpop .mi.primary .cm-r{color:var(--free);font-weight:600}
@media (max-width:640px){
  .helppop.cmpop{position:fixed;left:16px;right:16px;top:64px;width:auto;transform-origin:top center}
}
/* Under 521px the Calendars button keeps its word; the gear alone says Settings (see the phone block at the end). */

/* Settings: the row a shortcut opened, marked for a moment */
.st .is-target{animation:st-target 1.6s var(--ease) both}
@keyframes st-target{0%,45%{background:#eef3ff}100%{background:transparent}}

/* The setup checklist: one row per calendar type, in the onboarding card */
.modal.cl-modal{width:min(620px,100%)}
.modal.cl-modal:focus{outline:0}
.cl{display:grid;gap:8px}
.cl-list{border:1px solid #e3e5e9;border-radius:12px;overflow:hidden;background:#fff}
.cl-row{display:flex;align-items:center;gap:12px;padding:11px 14px;border-top:1px solid var(--line);min-height:58px}
.cl-row:first-child{border-top:0}
.cl-ic{width:30px;height:30px;border-radius:8px;background:#f4f5f7;display:grid;place-items:center;flex:none;color:#4d525b}
.cl-ic img{display:block}
.cl-words{flex:1;min-width:0;display:grid;gap:1px}
.cl-words b{font-size:13.5px;font-weight:500;color:var(--ink)}
.cl-words span{font-size:12px;color:var(--muted);line-height:1.4}
.cl-acts{display:flex;align-items:center;gap:6px;flex:none}
.cl .btn.sm{height:30px;padding:0 11px;font-size:12.5px;border-radius:9px}
.cl-quiet{border:0;background:none;color:var(--muted);font:inherit;font-size:12.5px;padding:0 6px;height:30px;white-space:nowrap;cursor:pointer;border-radius:7px}
.cl-quiet:hover{color:var(--ink)}
.cl-quiet:focus-visible{outline:2px solid #dfe8ff}
.cl-check{width:20px;height:20px;border-radius:50%;background:var(--free);color:#fff;display:grid;place-items:center;margin-right:4px}
.cl-check svg{display:block}
.cl-done-l{font-size:12.5px;font-weight:600;color:#3a3d44;margin-top:6px}
.cl-row.is-connected .cl-words b{color:#6b7079}
.cl-skipped{color:var(--muted);font-size:12.5px}
.cl-row.is-skipped .cl-words b{color:#6b7079}
.cl-row.is-skipped .cl-ic img{opacity:.5}
.modal-body .cl-msg{color:#c62a2f;font-size:12.5px;margin:0}
.cl-msg:empty{display:none}
.cl-left{font-size:12.5px;color:var(--muted);white-space:nowrap}
.cl-modal .ob-foot{margin-top:6px}
.modal-body .cl-text{margin:0 0 4px}
@media (max-width:640px){
  .cl-row{flex-wrap:wrap;row-gap:8px}
  .cl-acts{width:100%;padding-left:42px}
  .cl-acts .btn.sm{margin-left:auto;order:2}
}
/* First-login steps: the connect step is as wide as the checklist; the last step lists the next open times */
.modal.ob.ob-wide{width:min(620px,100%)}
.ob-times{display:grid;gap:8px}
.ob-step .ob-times-h{font-size:12.5px;font-weight:500;color:#3a3d44;margin:4px 0 0}
.ob-slots{display:grid;gap:6px}
.ob-slot{display:flex;align-items:center;justify-content:space-between;gap:12px;height:36px;padding:0 12px;border-radius:10px;background:#f1f4fe;color:#2448b8;font-size:13px}
.ob-slot-d{font-weight:600}
.ob-slot-t{font-variant-numeric:tabular-nums}
.ob-skip.ob-more{justify-self:start;padding:0;height:28px;color:var(--free);font-weight:500}
.ob-skip.ob-more:hover{color:var(--free-hover)}
/* Header: the title gives way to the buttons on a narrow screen and ends in an ellipsis */
.head-l>div{min-width:0}
.head-l h1,.head-l .sub{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.head-l .sub{display:block}
.bar>.pop-wrap,.bar>.set{flex:none}
@media (max-width:640px){.bar{gap:8px}.bk-wrap,.cm-wrap,.bar .set{margin-right:4px}}

/* The dock: a Sync button for screen-read calendars, right of the link. Several sources open a list above the dock. */
.dsync-wrap{position:relative;display:flex}
.dock .dsync{display:inline-flex;align-items:center;gap:7px;height:38px;padding:0 14px;border-radius:11px;background:var(--free);color:#fff;font-weight:600;position:relative;transition:background-color .15s}
.dock .dsync:hover{background:var(--free-hover);color:#fff}
.dock .dsync:focus-visible{outline:2px solid #9db7ff;outline-offset:2px}
.dsync svg{flex:none}
.dsync-t{max-width:200px;overflow:hidden;text-overflow:ellipsis}
.dsync-pop{position:absolute;right:0;bottom:calc(100% + 12px);width:280px;padding:6px;background:#fff;border-radius:12px;color:var(--ink);box-shadow:0 0 0 1px rgba(15,17,20,.06),0 16px 40px -12px rgba(15,17,20,.28);opacity:0;transform:translateY(4px) scale(.98);transform-origin:bottom right;pointer-events:none;transition:opacity .16s,transform .2s var(--ease);z-index:20}
.dsync-pop.is-on{opacity:1;transform:none;pointer-events:auto}
.dsync-pop .cm-h{padding:8px 10px 4px;font-size:11px;font-weight:500}
.dock .dsync-pop .mi{color:var(--ink);font-weight:400;height:34px;padding:0 10px;border-radius:8px}
.dock .dsync-pop .mi:hover,.dock .dsync-pop .mi:focus-visible{color:var(--ink);background:#f2f3f5}
@media (max-width:640px){.dsync-t{display:none}.dock .dsync{padding:0 11px}}
/* The toast sits above every dialog and its scrim, so a message shown while Settings is open is seen */
.toast{z-index:60}

/* The Sync dialog: one screen-read source, read again without opening Settings. The onboarding card, narrower. */
.modal.sy{--help:#6b7079;--edge:#e3e5e9;--bad:#c62a2f;width:min(560px,100%)}
.modal.sy:focus{outline:0}
.sy .ob-body{padding:24px 28px 24px;gap:14px}
.sy-head{display:flex;align-items:center;gap:12px;padding-right:28px}
.sy-ic{width:40px;height:40px;border-radius:11px;background:#f4f5f7;display:grid;place-items:center;flex:none}
.sy-ic img{display:block}
.sy-words{display:grid;gap:2px;min-width:0}
.sy-words h2{font-size:17px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sy-ago{font-size:12.5px;color:var(--help)}
.sy-main{display:grid;gap:12px}
.modal-body .sy-text{color:#3a3d44;margin:0}
.sy-go{gap:8px}
.sy-go svg{flex:none}
.sy-main .fine{margin:0;text-align:center}
.sy-wait{display:flex;align-items:center;justify-content:center;gap:10px;height:72px;border-radius:12px;background:#f6f8fd;color:#3a3d44;font-size:13.5px}
.sy-spin{width:16px;height:16px;border-radius:50%;border:2px solid #dfe8ff;border-top-color:var(--free);animation:sy-spin .8s linear infinite;flex:none}
@keyframes sy-spin{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){.sy-spin{animation-duration:2.4s}}
.sy-err{display:flex;align-items:flex-start;gap:10px;padding:12px 14px;border-radius:12px;background:#fdf1f1;color:var(--bad);font-size:13.5px;line-height:1.45}
.sy-err svg{flex:none;margin-top:1px}
.sy .sr .note{margin:0}
.sy .sr-row .note{flex:1;min-width:0}
.sy-done{display:grid;justify-items:center;gap:6px;padding:18px 0 10px;text-align:center}
.sy-done-ic{color:#1f8a4c;display:grid;animation:sy-pop .45s var(--spring) both}
.sy-done h3{font-size:16px;font-weight:600}
.modal-body .sy-done p{margin:0}
@keyframes sy-pop{from{transform:scale(.6);opacity:0}to{transform:none;opacity:1}}

/* Under the page title: the calendars that count as busy, after the range and time zone */
.hc-i{display:inline-flex;align-items:center;gap:5px;margin-left:10px;color:#4b5058;vertical-align:top}
.hc-i img,.hc-i svg{flex:none;display:block}
.hc-i svg{color:var(--muted)}

/* Owner page: who can book from the link, beside Bookings. Three states: anyone, one-time links only, no one. */
.ba-wrap{margin-right:12px;display:flex}
.ba-btn{display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 10px 0 11px;border-radius:10px;border:1px solid #e3e5e9;background:#fff;color:#3a3d44;font:inherit;font-size:13px;font-weight:500;white-space:nowrap;transition:background-color .15s,border-color .15s}
.ba-btn:hover{background:#f7f8fa}
.ba-btn:focus-visible{outline:2px solid #dfe8ff;outline-offset:1px}
.ba-btn svg{flex:none;display:block}
.ba-ic{display:grid;color:var(--free)}
.ba-car{color:var(--muted)}
.ba-btn.is-onetime{background:#eef3ff;border-color:#dfe8ff;color:var(--free)}
.ba-btn.is-onetime:hover{background:#e6edff}
.ba-btn.is-none{background:#f4f5f7}
.ba-btn.is-none .ba-ic{color:#6b7079}
.helppop.ba-pop{width:340px;padding:6px;top:40px;line-height:1.35}
.ba-h{padding:8px 10px 6px;font-size:12px;font-weight:600;color:#3a3d44}
.ba-opt{display:flex;align-items:flex-start;gap:10px;width:100%;border:0;background:none;font:inherit;text-align:left;padding:9px 10px;border-radius:9px;cursor:pointer}
.ba-opt:hover,.ba-opt:focus-visible{background:#f2f3f5;outline:0}
.ba-opt.is-on{background:#f5f8ff}
.ba-oi{width:28px;height:28px;border-radius:8px;background:#f4f5f7;display:grid;place-items:center;color:#4b5058;flex:none}
.ba-opt.is-on .ba-oi{background:#eef3ff;color:var(--free)}
.ba-ow{display:grid;gap:2px;flex:1;min-width:0}
.ba-ow b{font-size:13px;font-weight:600;color:var(--ink)}
.ba-ow span{font-size:12px;color:#6b7079;line-height:1.4}
.ba-ck{width:16px;flex:none;color:var(--free);padding-top:6px}
.dock .link .vo{font-size:11.5px;font-weight:600;color:#6b7079;background:#f1f2f4;border-radius:6px;padding:3px 7px;margin-left:-2px}
.dock .link .cp{padding:0 10px}
@media (max-width:520px){.ba-t{display:none}}
@media (max-width:640px){.ba-wrap{margin-right:4px}}

/* Block menu: copy items show what they copy on a second line */
.mi.has-ex{height:auto;min-height:34px;padding:7px 10px;align-items:flex-start}
.mi-w{display:grid;gap:1px;min-width:0}
.mi-ex{font-size:11.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:200px}
.mi.has-ex kbd{margin-top:1px}

/* Views and paging: Week, 2 weeks or Month, previous and next, Today, and the dates shown */
.c-tools{display:flex;align-items:center;gap:12px;margin:0 0 10px var(--gut,52px);flex:none;min-height:32px}
.c-views{display:flex;gap:2px;background:#f1f2f4;border-radius:9px;padding:3px}
.c-views button{border:0;background:none;font:inherit;font-size:12px;color:var(--muted);height:26px;padding:0 10px;border-radius:7px;cursor:pointer;transition:color .15s}
.c-views button:hover{color:var(--ink)}
.c-views button.is-on{background:#fff;color:var(--ink);box-shadow:0 1px 2px rgba(0,0,0,.08)}
.c-pager{display:flex;align-items:center;gap:2px}
.c-arrow{display:grid;place-items:center;width:30px;height:30px;border:0;background:none;color:var(--ink);border-radius:8px;transition:background-color .15s}
.c-arrow:hover:not(:disabled){background:#f1f2f4}
.c-today{height:30px;padding:0 11px;margin-left:4px;border:1px solid #e3e5e9;background:#fff;border-radius:8px;font-size:12px;font-weight:500;color:var(--ink);transition:background-color .15s,border-color .15s}
.c-today:hover:not(:disabled){background:#f6f7f9}
.c-arrow:disabled,.c-today:disabled{color:#c3c6cc;cursor:default}
.c-arrow:focus-visible,.c-today:focus-visible,.c-views button:focus-visible{outline:2px solid var(--free);outline-offset:1px}
.c-range{font-size:14px;font-weight:600;letter-spacing:-.01em;white-space:nowrap}
.c-tools .c-weeknav{margin:0 0 0 auto}
.cal .c-head,.cal .c-body,.cal .m-grid{transition:opacity .2s}
.cal.is-loading .c-head,.cal.is-loading .c-body,.cal.is-loading .m-grid{opacity:.45}
.c-day.is-past .c-num,.c-day.is-past .c-dow{color:#b5b8bf}

/* Month view: one box per day, Monday to Sunday, with the day's first open times */
.cal.is-month{min-width:640px}
.m-head{display:grid;grid-template-columns:repeat(7,1fr);margin-left:var(--gut,52px);flex:none;padding-bottom:6px}
.m-head span{font-size:11px;color:var(--muted);padding-left:8px}
.m-grid{flex:1;min-height:0;display:grid;grid-template-columns:repeat(7,1fr);grid-template-rows:repeat(var(--weeks,5),minmax(0,1fr));margin-left:var(--gut,52px);border-top:1px solid var(--line);border-left:1px solid var(--line)}
.m-day{display:flex;flex-direction:column;align-items:stretch;gap:4px;min-width:0;min-height:0;overflow:hidden;padding:6px 7px;border:0;border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:#fff;text-align:left;font:inherit;color:var(--ink)}
button.m-day{cursor:pointer;transition:background-color .15s}
button.m-day:hover{background:#f7f9ff}
button.m-day:focus-visible{outline:2px solid var(--free);outline-offset:-2px}
.m-num{font-size:12px;font-weight:600;line-height:18px}
.m-day.is-today .m-num{color:var(--free)}
.m-day.is-out .m-num{color:#b5b8bf}
.m-day.is-past{background:var(--busy)}
.m-day.is-past .m-num{color:#b5b8bf}
.m-slots{display:flex;flex-direction:column;gap:3px;min-height:0}
.m-slot{display:block;background:var(--free);color:#fff;font-size:11.5px;font-weight:500;line-height:20px;padding:0 6px;border-radius:5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.m-day.is-out .m-slot{background:#8fb0ff}
.m-more{font-size:11px;color:var(--muted);padding-left:2px}
.cal.is-month.is-first button.m-day{animation:cv-in .35s var(--ease) var(--d,0ms) both}
@keyframes cv-in{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}

/* Custom meeting length: the dock's Custom button opens this box above it */
.dur-pop{position:fixed;z-index:30;width:248px;padding:10px 12px 10px;background:#fff;border-radius:12px;color:var(--ink);box-shadow:0 0 0 1px rgba(15,17,20,.06),0 16px 40px -12px rgba(15,17,20,.28);display:grid;gap:7px;animation:cv-in .18s var(--ease) both}
.dur-pop-l{font-size:12px;font-weight:600}
.dur-pop .custom-row input{flex:1;width:auto}
.dur-pop .custom-row .chip{height:28px;padding:0 12px}

/* The dock's left end: previous, the dates shown (a menu of views and Today), next */
.dview{position:relative;display:flex;align-items:center;gap:2px}
.dview[hidden]+.dview-sep{display:none}
.dock .dv-arrow{width:30px;padding:0;display:grid;place-items:center}
.dock .dv-arrow:disabled{color:#5b5f68;cursor:default}
.dock .dv-label{display:inline-flex;align-items:center;gap:6px;color:#fff;font-variant-numeric:tabular-nums}
.dock .dv-label svg{color:#9a9ea7}
.dock .dv-label:hover,.dock .dv-label[aria-expanded=true]{background:#2c2f36}
.dv-pop{position:absolute;left:0;bottom:calc(100% + 12px);width:200px;padding:6px;background:#fff;border-radius:12px;color:var(--ink);box-shadow:0 0 0 1px rgba(15,17,20,.06),0 16px 40px -12px rgba(15,17,20,.28);opacity:0;transform:translateY(4px) scale(.98);transform-origin:bottom left;pointer-events:none;transition:opacity .16s,transform .2s var(--ease);z-index:20}
.dv-pop.is-on{opacity:1;transform:none;pointer-events:auto}
.dv-pop hr{border:0;height:1px;background:#eef0f3;margin:4px 6px}
.dock .dv-pop .dv-mi{color:var(--ink);font-weight:400;height:34px;padding:0 10px;border-radius:8px}
.dock .dv-pop .dv-mi:hover:not(:disabled),.dock .dv-pop .dv-mi:focus-visible{background:#f2f3f5;color:var(--ink)}
.dock .dv-pop .dv-mi.is-on{color:var(--free);font-weight:600}
.dock .dv-pop .dv-mi:disabled{color:#b5b8bf;cursor:default}
.dv-mi svg{flex:none}
.hc-i.is-icon{margin-left:8px;gap:0}
.hc-i.is-icon+.hc-i.is-icon{margin-left:6px}
/* The OpenCal mark (G, glass sheen) keeps room for its shadow inside the SVG; scaled so the tile is the size the flat mark was. */
img[src="/mark.svg"]{transform:scale(1.394)}

/* Contrast. pro.css declares the grey text as #8c9098 (3.2:1 on white). This grey measures 4.97:1 on white and 4.56:1 on
   the busy grey #f4f5f7: the time zone line, hour axis, weekday labels, "Last synced", notes and the visitor notices. */
:root{--muted:#6b7079}
/* Past days, other months' days and the disabled Today and arrows: quieter than current days (grey, not ink), and still
   4.5:1 or more. #70757e measures 4.63:1 on white. A past month day sits on the busy grey #f4f5f7, so it takes --muted
   (4.56:1 there). */
.c-day.is-past .c-num,.c-day.is-past .c-dow,.m-day.is-out .m-num{color:#70757e}
.m-day.is-past .m-num{color:var(--muted)}
.dock .dv-pop .dv-mi:disabled,.c-arrow:disabled,.c-today:disabled{color:#70757e}

/* A closed menu is out of the Tab order and hidden from screen readers. Visibility turns off after the fade-out. */
.helppop,.dsync-pop,.dv-pop{visibility:hidden;transition:opacity .16s,transform .2s var(--ease),visibility 0s linear .2s}
.helppop.is-on,.dsync-pop.is-on,.dv-pop.is-on{visibility:visible;transition:opacity .16s,transform .2s var(--ease),visibility 0s}
.helppop.bkpop:focus{outline:0}

/* A visitor notice in the header can be two lines (an unknown or expired one-time link) */
.book-off{white-space:normal;max-width:520px;text-align:right;line-height:1.4}

/* Who can book, One-time links only: the unused links, each with Turn off */
.ba-links hr{border:0;height:1px;background:#eef0f3;margin:4px 6px}
.ba-link{display:flex;align-items:center;gap:10px;padding:5px 10px}
.ba-lw{display:grid;gap:1px;flex:1;min-width:0}
.ba-lw b{font-size:12.5px;font-weight:500;color:var(--ink)}
.ba-lw span{font-size:12px;color:#6b7079}
.ba-off{flex:none;border:1px solid #e3e5e9;background:#fff;border-radius:8px;height:28px;padding:0 10px;font:inherit;font-size:12px;font-weight:500;color:var(--ink);white-space:nowrap;cursor:pointer;transition:background-color .15s}
.ba-off:hover{background:#f4f5f7}
.ba-off:focus-visible{outline:2px solid #dfe8ff;outline-offset:1px}
.ba-off:disabled{color:#70757e;cursor:default}
.ba-off.ba-off-all{display:block;margin:6px 10px 6px auto;border-color:#f0b4b6;color:#c62a2f;background:#fff5f5}

/* Cancel a booking: Keep beside the red Cancel booking */
.bk-acts{display:flex;align-items:center;gap:6px;flex:none}
.st .bk-acts{margin-left:auto}
.st .bk-acts .bk-cancel-link{margin-left:0}

/* Block labels in a narrow column. Each free block is a size container. Under 89px wide the label wraps after its
   dash, so the end time takes the second line; a block that is also too short for two lines shows no label. The
   button's aria-label always reads the whole range. Wide columns (every desktop width) match none of these queries. */
body:not(.lp) .cal .cell.is-free{container-type:size}
@container (max-width:88px){.cell .lbl{white-space:normal;padding:5px 4px;font-size:11.5px;line-height:1.25;letter-spacing:-.01em}}
@container (max-width:60px){.cell .lbl{padding:5px 3px;font-size:11px}}
@container (max-width:88px) and (max-height:40px){.cell .lbl{display:none}}

/* Phone, the app pages only (the landing loads this file and keeps its own phone layout).
   Decisions: the header becomes two rows, the title row and the controls row, so the title and time zone line always
   show. The dock stops being a centred pill wider than the screen and becomes a two-row bar across the bottom:
   meeting length and Copy times, then the dates, the link and Sync. Header menus open full width under the header. */
@keyframes dock-rise-m{from{opacity:0;transform:translateY(24px)}to{opacity:1;transform:none}}
@media (max-width:640px){
  body:not(.lp) .bar{position:relative;height:auto;flex-wrap:wrap;align-items:center;gap:6px 4px;padding-top:12px;padding-bottom:10px}
  /* The title row holds the title and the color key's ? at its right; every other control starts the second row */
  body:not(.lp) .bar>.head-l{flex:1 1 calc(100% - 44px);min-width:0}
  body:not(.lp) .bar>.pop-wrap:last-child{order:1;margin-left:auto;align-self:flex-start}
  body:not(.lp) .bar>:not(.head-l):not(.pop-wrap:last-child){order:2}
  body:not(.lp) .bar>.grow{display:none}
  body:not(.lp) .head-l h1{font-size:17px;line-height:1.3;white-space:normal;overflow-wrap:anywhere;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}
  body:not(.lp) .bar .bk-wrap,body:not(.lp) .bar .ba-wrap,body:not(.lp) .bar .cm-wrap,body:not(.lp) .bar .set{margin-right:0}
  body:not(.lp) .bar .bk-btn,body:not(.lp) .bar .set{min-height:40px;padding:0 8px;border-radius:10px}
  body:not(.lp) .bar>.bk-wrap:not([hidden]){margin-left:-8px}
  body:not(.lp) .bar .ba-btn{height:40px}
  body:not(.lp) .bar .help{width:32px;height:32px;position:relative}
  body:not(.lp) .bar .help::after{content:"";position:absolute;inset:-5px}
  /* The header menus hang from the header, full width, instead of from a button near the screen edge */
  body:not(.lp) .bar>.pop-wrap{position:static}
  body:not(.lp) .bar .helppop,body:not(.lp) .bar .helppop.cmpop,body:not(.lp) .bar .helppop.ba-pop,body:not(.lp) .bar .helppop.bkpop{position:absolute;left:var(--pad);right:var(--pad);top:calc(100% - 4px);width:auto;transform-origin:top center}
  body:not(.lp) .bar .helppop.bkpop,body:not(.lp) .bar .helppop.cmpop{max-height:min(60vh,520px)}
  /* A visitor's notice and Sign in take their own rows, left aligned, wrapping */
  body:not(.lp) .bar .book-off{flex:1 1 100%;max-width:none;margin:0;text-align:left;white-space:normal}
  body:not(.lp) .bar .signin{height:auto;min-height:40px;padding:8px 12px;margin:0;white-space:normal;line-height:1.35}

  /* Row one: the dates and the meeting lengths. The separator after the lengths becomes the line break. Row two: Copy
     times, the link and Sync. The order is the source order. */
  body:not(.lp) .dock{left:8px;right:8px;bottom:calc(8px + env(safe-area-inset-bottom));transform:none;flex-wrap:wrap;gap:3px 6px;animation-name:dock-rise-m}
  body:not(.lp) .dock>.sep{display:none}
  body:not(.lp) .dock>.sep:not(.dview-sep){display:block;flex:0 0 100%;height:0;margin:0;background:none}
  body:not(.lp) .dock-label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
  body:not(.lp) .dock button{height:40px}
  body:not(.lp) .dock .seg{flex:1 1 0;min-width:0}
  body:not(.lp) .dock .seg button{flex:1 1 auto;padding:0 5px}
  body:not(.lp) .dock .seg .pill{height:40px}
  body:not(.lp) .dock #copy{padding:0 10px}
  body:not(.lp) .dock .dv-arrow{width:28px}
  body:not(.lp) .dock .dv-label{padding:0 6px}
  body:not(.lp) .dock .link{flex:1 1 0;min-width:0;padding-left:12px}
  body:not(.lp) .dock .link .url{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left}
  body:not(.lp) .dock .link .vo,body:not(.lp) .dock .link .cp{flex:none}
  /* Sync sits on the second row, so its menu clears the first row to open above the whole dock */
  body:not(.lp) .dock .dsync-pop{bottom:calc(100% + 58px)}
  body:not(.lp) .cal-wrap{padding-bottom:calc(122px + env(safe-area-inset-bottom))}
  body:not(.lp) .toast{bottom:calc(124px + env(safe-area-inset-bottom))}
  body:not(.lp) .dur-pop input{font-size:16px}

  /* Settings: every control is at least 40px tall to touch, and inputs are 16px so iOS does not zoom on focus */
  body:not(.lp) .st .btn,body:not(.lp) .st .btn.sm,body:not(.lp) .st .pf-upload,body:not(.lp) .st .linkedit .btn{height:40px}
  body:not(.lp) .st .input,body:not(.lp) .st .dd-btn,body:not(.lp) .st .handle{height:40px;font-size:16px}
  body:not(.lp) .st .handle input{font-size:16px}
  body:not(.lp) .st .iconbtn,body:not(.lp) .st .more,body:not(.lp) .st .range .range-x{width:40px;height:40px}
  body:not(.lp) .st-x{width:40px;height:40px;top:8px;right:8px}
  body:not(.lp) .st .linkbtn,body:not(.lp) .st .add-range,body:not(.lp) .st .st-expand{display:inline-flex;align-items:center;min-height:40px}
  body:not(.lp) .st .ck{min-height:40px}
  body:not(.lp) .st .pf-choice{width:40px;height:40px}
  body:not(.lp) .st .pf-shuffle{height:40px;padding:0 12px}
  body:not(.lp) .st .bk-cancel,body:not(.lp) .st .ba-off{height:40px}
  body:not(.lp) .st .dd-item{min-height:40px}
  /* The switch keeps its 32 by 18 look inside a 54 by 40 target: a transparent border, cancelled by a negative margin */
  body:not(.lp) .st .tg{box-sizing:content-box;border:11px solid transparent;border-radius:20px;background-clip:padding-box;margin:-11px}
  /* Hours: the seven day buttons take a full row under the label and share it */
  body:not(.lp) .st .days-row{flex-wrap:wrap}
  body:not(.lp) .st .days-row>.rc{width:100%;align-items:stretch}
  body:not(.lp) .st .day-chips{width:100%}
  body:not(.lp) .st .day-chip{flex:1 1 0;min-width:0;height:40px;padding:0}
  body:not(.lp) .st .day-presets{gap:20px}
}
/* The narrowest phones: the gear alone stands for Settings (its word stays as the link's name) */
@media (max-width:520px){
  body:not(.lp) .bar .set{font-size:0;gap:0;min-width:40px;justify-content:center}
}
