/* Ready Time owner app, the p123 look (direction "A מלוטש", chosen by the owner): one rhythm, quieter depth, clearer
   hierarchy, the five-tab bar with the calendar in the centre. Loaded before nikba.css and app.css, where the review layer
   sat; every rule starts with html:root, so each keeps the weight (0,1,1) it had in the review. */
/* ─── one token set, 44px targets, tabular numbers ─── */
html:root{--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:20px;--sp-6:24px;--sp-8:32px;
  --fs-xs:12px;--fs-sm:13px;--fs-md:15px;--fs-lg:17px;--fs-xl:20px;--fs-2xl:28px;
  --tap:44px;
  --m-fast:140ms;--m-base:240ms;--m-slow:380ms;
  --e-out:cubic-bezier(.22,1,.36,1);--e-inout:cubic-bezier(.65,0,.35,1);--e-sheet:cubic-bezier(.32,.72,0,1);}
html:root .tab, html:root .dst b, html:root .arow .t, html:root .req .slot, html:root .stats b{font-variant-numeric:tabular-nums}
html:root .btn{min-height:var(--tap)}
html:root .icon-btn{min-width:var(--tap);min-height:var(--tap)}
html:root{--r-sm:10px;--r-md:14px;--r-lg:18px;
  --line:#E9E6EA;
  --shadow:0 1px 1px rgba(20,18,22,.04),0 6px 18px -12px rgba(20,18,22,.16);}
@media (prefers-color-scheme:dark){
  html:root:not([data-theme="light"]){--line:#2C2830;--shadow:0 0 0 1px rgba(255,255,255,.03)}
}
html:root[data-theme="dark"]{--line:#2C2830;--shadow:0 0 0 1px rgba(255,255,255,.03)}
html:root h1{font-size:28px;font-weight:700;letter-spacing:-.02em}
html:root .eyebrow{font-size:12.5px;font-weight:600;color:var(--ink-3);letter-spacing:.01em}
html:root .sec:where(:not(.btn)), html:root .group .sec:where(:not(.btn)){font-size:13px;font-weight:700;color:var(--ink-2);letter-spacing:0;margin:0 4px 8px}
html:root .content{padding-top:16px}
/* stat tiles: same rhythm, number first */
html:root .dstats{gap:8px;margin:14px 0 6px}
html:root .dst{border-radius:16px;box-shadow:none;padding:10px 12px;gap:10px}
html:root .dst b{font-size:18px;font-weight:700}
html:root .dst small{font-weight:500;color:var(--ink-3)}
html:root .dst .ringsv{width:32px;height:32px}
/* week strip */
html:root .strip{gap:4px;margin:14px 0 12px}
html:root .strip button{min-height:56px}
/* now card: calmer: one gradient, no sweeping light */
html:root .now.nowx{border-radius:20px;box-shadow:0 14px 28px -20px color-mix(in srgb,var(--primary) 90%,transparent)}
html:root .now.nowx::after{display:none}
html:root .nowx .chipbtn{min-height:36px;padding:0 12px}
/* day rows: one card style, a status tag instead of mixed labels */
html:root .alist.xl{gap:6px}
html:root .alist.xl .arow{border-radius:14px;box-shadow:none;padding:11px 12px;min-height:max(var(--h,60px),60px)}
html:root .alist.xl .arow::before{inset-block:0;width:3px;border-radius:0}
html:root .alist.xl .av2{width:32px;height:32px;font-weight:700}
html:root .arow .t{font-size:15px;font-weight:700}
html:root .arow .nm{font-size:15px}
html:root .ctag, html:root .alist.xl .ptag{font-size:11.5px;font-weight:600;border-radius:6px;padding:1px 6px}
html:root .alist.xl .gapbox{border-radius:14px;min-height:var(--tap)}
html:root .alist.xl .gapbox::after{display:none}
/* requests */
html:root .req{border-radius:18px;padding:14px 14px 12px;box-shadow:none}
html:root .req .slot{font-size:19px;margin:10px 0 2px}
html:root .req .acts{gap:6px}
html:root .req .acts .btn{height:44px;min-height:44px;border-radius:12px}
html:root .pillx{border-radius:6px;font-size:11.5px;font-weight:600}
/* cards, lists, settings */
html:root .card{border-radius:18px;box-shadow:none;border:1px solid var(--line)}
html:root .set{border-radius:16px}
html:root .set button{min-height:52px;padding:12px 14px}
html:root .set button{border-bottom:0;position:relative}
html:root .set button+button::before{content:"";position:absolute;top:0;inset-inline-start:58px;inset-inline-end:0;border-top:1px solid var(--line)}
html:root .linkcard, html:root .socialentry, html:root .tourentry, html:root .growentry{border-radius:18px;box-shadow:none}
html:root .smallbtn{min-height:36px}
/* buttons: one shape (rounded rectangle) */
html:root .btn{border-radius:12px}
html:root .btn.sm{min-height:40px}
/* tab bar: the current soft pill, a little lighter */
html:root .tabbar button, html:root .tabbar.tabbar button{font-size:12.5px;min-height:58px}
html:root .tabbar button svg{width:24px;height:24px}
html:root .tabbar button::before{height:34px;width:60px;margin-left:-30px}
/* sheet: rises from below, the content settles */
html:root .sheet{border-radius:22px 22px 0 0;animation:uxA-up var(--m-slow) var(--e-sheet) both}
@keyframes uxA-up{from{transform:translateY(100%)}}
html:root .sheet-bg{animation:uxFade 240ms ease both}
@keyframes uxFade{from{opacity:0}}
@media (prefers-reduced-motion:reduce){
  html:root .sheet, html:root .sheet>*, html:root .sheet-bg{animation:none}
}
/* ─── per screen: appointment sheet, plan, success state, toast ─── */
html:root .sheet .ask{box-shadow:none;border-radius:16px}
html:root .sheet .ask .when{font-family:var(--font-ui);font-weight:700;font-size:21px}
html:root .sheet .ask>.row{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr))}
html:root .sheet .ask>.row .btn{margin:0;justify-content:center;padding-inline:6px;min-height:44px}
html:root .sheet .ask>.row .chip{grid-column:1/-1;justify-self:start}
html:root .chip{border-radius:7px;font-weight:600;font-size:12.5px}
html:root .addcard .addrow .btn.primary{background:var(--tint);color:var(--tint-ink);box-shadow:none}
html:root .mbar{height:10px}
/* success after approve / save */
html:root .req.ok .done svg{animation-duration:360ms}
/* toast */
html:root .toast{border-radius:14px}
@media (prefers-reduced-motion:reduce){
  html:root .toast, html:root .req.ok .done svg{animation:none;stroke-dashoffset:0}
}
/* status tags read in both themes (the dark theme had dark text on dark chips) */
html:root .chip.pending{background:var(--warn-bg);color:var(--warn-ink)}
html:root .chip.approved{background:var(--ok-bg);color:var(--ok-ink)}
html:root .chip.cancelled{background:var(--bad-soft);color:var(--now)}
html:root .chip.done{background:var(--tint-2);color:var(--tint-ink)}
html:root .sheet .ask>.row{grid-template-columns:1.5fr 1fr 1fr}
/* ─── the five-tab bar: בקשות · לקוחות · [יומן] · קיצור דרך · העסק שלי (nav5.js) ─── */
html:root .tabbar.t5, html:root .tabbar.tabbar.t5{grid-template-columns:repeat(5,minmax(0,1fr));overflow:visible}
/* p128: מאמן/ת בלי סטודיו. אין יומן ואין בקשות, ולכן שלוש לשוניות ובלי כפתור מורם באמצע */
html:root .tabbar.t3, html:root .tabbar.tabbar.t3{grid-template-columns:repeat(3,minmax(0,1fr))}
html:root .tabbar.t5 button{min-width:0;min-height:56px}
html:root .tabbar.t5 .tlb{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
html:root .tabbar.t5 button.tmain::before{display:none}
html:root .tabbar.t5 .tmic{display:grid;place-items:center;flex:none}
html:root .tabbar.t5 .tmic svg{width:26px;height:26px}
/* the calendar is a raised round button over the bar's edge */
html:root .tabbar.t5 .tmic{width:54px;height:54px;margin-top:-22px;border-radius:50%;background:var(--primary);color:var(--on-primary);box-shadow:0 0 0 5px var(--surface),0 10px 20px -8px color-mix(in srgb,var(--primary) 80%,transparent);transition:transform .2s var(--e-out)}
html:root .tabbar.t5 .tmain:active .tmic{transform:scale(.94)}
html:root .tabbar.t5 .tmain[aria-current="page"]{color:var(--primary)}
@media (prefers-reduced-motion:reduce){
  html:root .tabbar.t5 .tmic{transition:none}
}
/* ═══ detail audit ═══ */
/* one icon set: the sprite's line icons (24 grid, 1.75 stroke, round caps); icon-role emoji become the same line icons */
html:root svg.i{stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round}
html:root .tourico[data-ico]{font-size:0;color:var(--tint-ink);background:var(--tint)}
html:root .tourico[data-ico]::before{content:"";width:22px;height:22px;background:currentColor;-webkit-mask:var(--ico) center/contain no-repeat;mask:var(--ico) center/contain no-repeat}
/* p123 notes #2: every icon circle is the same 44px circle with a 22px glyph dead in its centre. The emoji text that a
   line icon replaces used to make a second grid row and push the glyph 6px up; the glyph now sits on top of it. */
html:root .socialentry>.tourico{flex:0 0 44px;width:44px;height:44px;position:relative;display:grid;place-items:center;padding:0;line-height:0;color:var(--tint-ink);background:var(--tint);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--tint-ink) 8%,transparent)}
html:root .tourico[data-ico]::before{position:absolute;inset:0;margin:auto}
html:root .socialentry>.tourico>svg{width:22px;height:22px;display:block;margin:auto;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round}
html:root .socialentry>.tourico.grow-ico>svg path{stroke-width:1.75}
html:root .socialentry{gap:14px}
html:root .tourico[data-ico="compass"]{--ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M15.5 8.5l-2 5-5 2 2-5z'/%3E%3C/svg%3E")}
html:root .tourico[data-ico="a11y"]{--ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9.25'/%3E%3Ccircle cx='12' cy='7.6' r='1.2'/%3E%3Cpath d='M7.5 10.2l4.5 1 4.5-1M12 11.2v3l-2.2 3.6M12 14.2l2.2 3.6'/%3E%3C/svg%3E")}
html:root .tourico[data-ico="bottle"]{--ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7 11a3 3 0 0 1 3-3h4a3 3 0 0 1 3 3v8a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2z'/%3E%3Cpath d='M10.5 8V5h3v3M13.5 5H16M7 14h10'/%3E%3C/svg%3E")}
html:root .tourico[data-ico="cake"]{--ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 21h16v-7.5a2 2 0 0 0-2-2H6a2 2 0 0 0-2 2z'/%3E%3Cpath d='M4 15.5c2.7 1.6 5.3 1.6 8 0s5.3-1.6 8 0M12 11.5V8M12 4.8v.4'/%3E%3C/svg%3E")}
/* status: one tag shape, readable in both themes; "ממתין" said once */
html:root .alist.xl .arow.pend:has(.ptag) .nm::after{content:none}
html:root :is(.ptag,.ctag,.pillx,.wchip,.addon){font-weight:600;letter-spacing:0;white-space:nowrap}
html:root .alist.xl .ptag, html:root .wchip{background:var(--warn-bg);color:var(--warn-ink)}
html:root .fitline.warn{color:var(--warn-ink);background:var(--warn-bg)}
html:root .fitline.ok{color:var(--ok-ink);background:var(--ok-bg)}
html:root .fitline.bad{color:var(--now);background:var(--bad-soft)}
/* badges: one size and colour everywhere (tab bar, data rows) */
html:root .tabbar button .badge, html:root .tabbar.tabbar button .badge, html:root .dk-entry .dk-badge{min-width:19px;height:19px;padding:0 5px;border-radius:10px;background:var(--now);color:var(--on-now,#fff);font-size:11.5px;font-weight:700;line-height:19px;font-variant-numeric:tabular-nums;box-shadow:0 0 0 2px var(--surface)}
/* numbers: tabular digits wherever amounts and counts line up */
html:root :is(.dk-kv,.dk-kpi b,.pamt,.mline,.tnum,.req .slot,.arow .pr,.arow .t,.strip .n,.dst b,.stats b,.kpi b){font-variant-numeric:tabular-nums}
/* focus and press: a visible focus ring, a quiet press on every row */
html:root :is(button,a,input,select,textarea,[tabindex]):focus-visible{outline:2px solid var(--primary);outline-offset:2px}
html:root :is(.set button,.dk-entry,.crow,.socialentry,.tourentry,.growentry):active{background:color-mix(in srgb,var(--primary) 7%,var(--surface))}
html:root .btn:disabled, html:root .btn[disabled]{opacity:.45;transform:none;box-shadow:none}
/* tap targets: at least 44px */
html:root :is(.plain,.smallbtn,.chipbtn,.askedit,.staffchips button,.chips button,.fchip,.typelist button,.provs button){min-height:44px}
html:root .askedit{min-width:44px}
html:root .plain{padding-inline:10px}
/* safe areas: sheets clear the home indicator */
html:root .sheet{padding-bottom:calc(18px + env(safe-area-inset-bottom))}
/* skeletons: one shimmer, tuned for both themes */
html:root :is(.sk,.skel .mbar,.dk-kpi.sk){position:relative;overflow:hidden;opacity:1;background:color-mix(in srgb,var(--ink) 6%,var(--surface));border-color:transparent}
html:root :is(.sk,.skel .mbar,.dk-kpi.sk)::after{content:"";position:absolute;inset:0;background:linear-gradient(100deg,transparent 30%,color-mix(in srgb,var(--surface) 70%,transparent) 50%,transparent 70%);transform:translateX(100%);animation:uxShimmer 1.3s ease-in-out infinite}
html:root .dk-kpi.sk>*{visibility:hidden}
@keyframes uxShimmer{to{transform:translateX(-100%)}}
/* empty states: a soft mark, a clear line, the next step */
html:root :is(.empty,.dayempty){text-align:center;padding:28px 16px;color:var(--ink-2)}
html:root :is(.empty,.dayempty)::before{content:"";display:block;width:56px;height:56px;margin:0 auto 12px;border-radius:50%;background:var(--tint);box-shadow:inset 0 0 0 8px var(--tint-2)}
html:root .empty .big, html:root .dayempty b{font-family:var(--font-ui);font-size:16px;font-weight:700;color:var(--ink)}
html:root .dk-empty{text-align:center;padding:22px 12px;color:var(--ink-2);border:1px dashed var(--line);border-radius:var(--r-lg)}
@media (prefers-reduced-motion:reduce){
  html:root :is(.sk,.skel .mbar,.dk-kpi.sk)::after{animation:none}
}
