@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Playfair+Display:ital,wght@0,600;1,600&display=swap');

:root{--bg:#020d10;--sidebar:#031115;--panel:#06171c;--card:#092027;--card2:#041318;--line:#1a3640;--line-soft:#102b33;--text:#e8efef;--muted:#9aadb7;--accent:#20d995;--accent-strong:#39e3a5;--accent-ink:#002219;--danger:#f26585;--success:#78b69f;--shadow:0 18px 50px rgba(0,0,0,.28)}
body[data-theme="emerald"]{--bg:#080d0b;--sidebar:#070b09;--panel:#101815;--card:#14201b;--card2:#0c1310;--line:#293c33;--line-soft:#1d2c26;--text:#f1eee6;--muted:#9cab9f;--accent:#a8c6ad;--accent-strong:#d8e2c8;--accent-ink:#0d1712;--danger:#c47a7f;--success:#82b69a}
body[data-theme="burgundy"]{--bg:#10090b;--sidebar:#0d0809;--panel:#1b1013;--card:#251519;--card2:#130b0d;--line:#493038;--line-soft:#342129;--text:#f7efec;--muted:#b7a0a5;--accent:#cf9a8b;--accent-strong:#ecd0c3;--accent-ink:#1c0e11;--danger:#e07c86;--success:#9fb69b}
body[data-theme="ivory"]{color-scheme:light;--bg:#f4efe7;--sidebar:#e9dfd2;--panel:#fbf7f1;--card:#fffaf4;--card2:#eee5d9;--line:#d7c7b4;--line-soft:#e5d9cb;--text:#2b221c;--muted:#786a5d;--accent:#aa7f43;--accent-strong:#79542a;--accent-ink:#fffaf4;--danger:#a24f59;--success:#557865;--shadow:0 18px 50px rgba(72,50,28,.14)}
*{box-sizing:border-box}
/* Auth state machine: the `hidden` attribute is authoritative for every root view.
   Without !important the class rules below (.auth-shell/.app-shell{display:grid})
   and the responsive media queries override the UA `[hidden]{display:none}`, which
   let the authenticated app shell render underneath the login screen. */
[hidden]{display:none!important}
html{background:var(--bg)}body{margin:0;background:radial-gradient(circle at 75% -20%,color-mix(in srgb,var(--accent) 7%,transparent),transparent 33%),var(--bg);color:var(--text);font-family:'DM Sans',system-ui,sans-serif;min-height:100vh}button,input,select,textarea{font:inherit}button{cursor:pointer}h1,h2,h3,p{margin-top:0}h2{font-family:'Playfair Display',Georgia,serif;font-size:clamp(2.1rem,4vw,3.3rem);line-height:1;margin-bottom:8px;font-weight:600}h2 em{color:var(--accent-strong);font-weight:600}h3{font-family:'Playfair Display',Georgia,serif;font-size:1.45rem;margin-bottom:4px}.muted{color:var(--muted)}.small{font-size:.82rem}.eyebrow{text-transform:uppercase;letter-spacing:.22em;font-size:.65rem;font-weight:700;color:var(--accent)}.toast{position:fixed;top:18px;right:18px;z-index:1000;max-width:360px;padding:12px 16px;border:1px solid var(--line);border-radius:12px;background:var(--panel);box-shadow:var(--shadow);opacity:0;transform:translateY(-10px);pointer-events:none;transition:.2s}.toast.show{opacity:1;transform:none}.toast.error{border-color:var(--danger)}

.auth-shell{min-height:100vh;display:grid;grid-template-columns:1.1fr .9fr;max-width:1200px;margin:auto;align-items:center;gap:70px;padding:50px}.auth-brand h1{font-family:'Playfair Display',Georgia,serif;font-size:clamp(4rem,8vw,7rem);line-height:.82;letter-spacing:-.055em;margin:18px 0 30px}.auth-brand h1 em{color:var(--accent);font-weight:600}.brand-logo-wrap{margin:18px 0 30px;line-height:0}.brand-logo{display:block;width:min(440px,74vw);height:auto}.brand-kicker{letter-spacing:.25em;text-transform:uppercase;font-size:.7rem;color:var(--muted)}.auth-brand p{max-width:430px;color:var(--muted);font-size:1.05rem}.brand-line{display:flex;align-items:center;gap:14px;color:var(--accent);font-size:.8rem;text-transform:uppercase;letter-spacing:.14em;margin-top:40px}.brand-line span{height:1px;width:55px;background:var(--accent)}.auth-card{background:linear-gradient(155deg,var(--card),var(--panel));border:1px solid var(--line);border-radius:24px;padding:34px;box-shadow:var(--shadow)}.auth-card h2{font-size:2.1rem;margin:8px 0 24px}
.form-stack{display:grid;gap:16px}.form-stack.compact{gap:12px}.form-grid{display:grid;gap:14px}.form-grid.two{grid-template-columns:1fr 1fr}label{display:grid;gap:7px;font-size:.8rem;color:var(--muted);font-weight:600}input,select,textarea{width:100%;color:var(--text);background:var(--card2);border:1px solid var(--line);border-radius:11px;padding:12px 13px;outline:none;min-height:44px}textarea{resize:vertical}input:focus,select:focus,textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 13%,transparent)}select option{background:var(--panel)}label.check-row{grid-auto-flow:column;justify-content:start;align-items:center;gap:10px;color:var(--text)}label.check-row input{width:auto;min-height:0;margin:0}.role-tag{display:inline-flex;margin-left:8px;border:1px solid var(--line);border-radius:999px;padding:2px 8px;color:var(--accent);font-size:.62rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;vertical-align:middle}
.btn,.icon-btn,.text-button{border:0;color:var(--text)}.btn{min-height:44px;padding:0 16px;border-radius:11px;font-weight:700}.btn.gold{background:linear-gradient(180deg,var(--accent-strong),var(--accent));color:var(--accent-ink);box-shadow:inset 0 1px rgba(255,255,255,.22)}.btn.ghost{background:var(--card2);border:1px solid var(--line)}.btn.ghost.danger{color:var(--danger);border-color:color-mix(in srgb,var(--danger) 45%,var(--line))}.btn.full{width:100%}.icon-btn{width:44px;height:44px;border-radius:11px;background:var(--card2);border:1px solid var(--line);font-size:1.3rem}.text-button{background:none;padding:6px;color:var(--accent);font-weight:700}.text-button:hover{text-decoration:underline}

.app-shell{min-height:100vh;display:grid;grid-template-columns:248px minmax(0,1fr)}.sidebar{position:sticky;top:0;height:100vh;display:flex;flex-direction:column;padding:26px 18px;background:linear-gradient(180deg,var(--sidebar),color-mix(in srgb,var(--sidebar) 92%,var(--accent)));border-right:1px solid var(--line-soft)}.studio-mark{display:flex;align-items:center;gap:12px;padding:0 8px 28px}.monogram{width:42px;height:42px;border:1px solid var(--accent);border-radius:50%;display:grid;place-items:center;font-family:'Playfair Display',serif;color:var(--accent);font-size:.8rem;letter-spacing:.06em}.brand-symbol{width:42px;height:42px;border-radius:50%;object-fit:cover;border:1px solid var(--accent);flex:none}.studio-name{font-family:'Playfair Display',serif;font-size:1.05rem;max-width:150px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.studio-sub{font-size:.65rem;letter-spacing:.15em;text-transform:uppercase;color:var(--muted);margin-top:2px}.side-nav{display:grid;gap:6px}.side-nav button{display:flex;align-items:center;gap:12px;min-height:46px;padding:0 13px;border:1px solid transparent;border-radius:11px;background:transparent;color:var(--muted);text-align:left;font-weight:600}.side-nav button span{width:20px;text-align:center;color:var(--accent)}.side-nav button:hover,.side-nav button.active{background:var(--card);border-color:var(--line-soft);color:var(--text)}.sidebar-bottom{margin-top:auto;border-top:1px solid var(--line-soft);padding:18px 8px 0}.user-mini{display:flex;align-items:center;gap:10px}.avatar{width:38px;height:38px;border-radius:50%;display:grid;place-items:center;border:1px solid var(--line);background:var(--card);color:var(--accent);font-weight:700}.user-mini strong,.user-mini small{display:block}.user-mini small{font-size:.7rem;color:var(--muted);margin-top:2px}.sidebar-bottom .text-button{padding-left:48px;margin-top:7px;font-size:.75rem;color:var(--muted)}
.content{min-width:0}.topbar{min-height:84px;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px 20px;padding:14px 34px;border-bottom:1px solid var(--line-soft);background:color-mix(in srgb,var(--bg) 88%,transparent);backdrop-filter:blur(12px);position:sticky;top:0;z-index:30}.artist-context{display:flex;align-items:center;gap:15px;min-width:0;flex:1 1 auto}.artist-context>.eyebrow{color:var(--muted);white-space:nowrap;flex:0 0 auto}.artist-selector-wrap{display:flex;align-items:center;gap:8px;min-width:0;flex:1 1 auto}.artist-selector-wrap select{border:0;background:transparent;min-height:40px;padding:4px 26px 4px 2px;font-weight:700;min-width:0;max-width:220px;flex:1 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.artist-dot{width:8px;height:8px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 5px color-mix(in srgb,var(--accent) 11%,transparent)}.top-actions{display:flex;gap:9px;align-items:center;flex:0 0 auto}.notif-btn{position:relative;flex:none}.notif-badge{position:absolute;top:-5px;right:-5px;min-width:18px;height:18px;padding:0 4px;border-radius:999px;background:var(--danger);color:#fff;font-size:.6rem;font-weight:800;display:flex;align-items:center;justify-content:center;line-height:1;border:2px solid var(--bg)}.notif-head-row{display:flex;align-items:center;justify-content:space-between;gap:14px}.notif-head-actions{display:flex;align-items:center;gap:10px}.notif-list{display:grid;gap:8px;max-height:62vh;overflow:auto;margin-top:4px}.notif-item{display:grid;gap:3px;width:100%;text-align:left;padding:12px;border:1px solid var(--line-soft);border-radius:12px;background:var(--card2);color:var(--text);cursor:pointer}.notif-item:hover{border-color:var(--accent)}.notif-item.unread{border-color:var(--accent);box-shadow:inset 3px 0 0 var(--accent)}.notif-item.saved{background:color-mix(in srgb,var(--success) 12%,var(--card2))}.notif-item.saved strong::after{content:"★";margin-left:6px;color:var(--success);font-size:.8em}.notif-item .notif-when{color:var(--muted);font-size:.72rem}.notif-item .notif-changes{display:grid;gap:1px;color:var(--muted);font-size:.72rem;margin-top:2px}.notif-tabs{display:flex;gap:6px;margin:2px 0 4px}.notif-tab{flex:1;min-height:34px;border:1px solid var(--line);border-radius:9px;background:var(--card2);color:var(--muted);font-size:.74rem;font-weight:700}.notif-tab.active{color:var(--accent-ink);background:var(--accent);border-color:var(--accent)}.notif-row{position:relative;overflow:hidden;border-radius:12px;touch-action:pan-y}.notif-row .notif-item{position:relative;z-index:2;will-change:transform}.notif-row.swiping .notif-item{transition:none;cursor:grabbing}.notif-swipe-hint{position:absolute;top:0;bottom:0;display:flex;align-items:center;padding:0 16px;font-weight:800;font-size:.8rem;color:#fff;z-index:1;opacity:0}.notif-swipe-hint.left{right:0;justify-content:flex-end;background:var(--danger)}.notif-swipe-hint.right{left:0;background:var(--success);color:var(--accent-ink)}.notif-row.reveal-left .notif-swipe-hint.left,.notif-row.reveal-right .notif-swipe-hint.right{opacity:1}.notif-row.will-commit .notif-swipe-hint{filter:brightness(1.15)}.notif-actions{display:none;gap:12px;justify-content:flex-end;padding:6px 4px 2px}.notif-actions .text-button.danger{color:var(--danger)}@media(hover:hover) and (pointer:fine){.notif-actions{display:flex}.notif-swipe-hint{display:none}}.menu-btn{display:none}.page{display:none;padding:38px 34px 60px;max-width:1500px;margin:auto}.page.active{display:block}.page-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:30px;margin-bottom:28px}.page-heading.hero-heading{align-items:center}.page-heading p{margin-bottom:0}.luxury-rule{width:min(38vw,440px);height:1px;background:linear-gradient(90deg,var(--line),var(--accent),transparent)}
.stats-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:13px;margin-bottom:18px}.stat-card{position:relative;overflow:hidden;min-height:132px;padding:18px;border:1px solid var(--line);border-radius:16px;background:linear-gradient(155deg,var(--card),var(--panel))}.stat-card:after{content:"";position:absolute;width:80px;height:80px;border:1px solid color-mix(in srgb,var(--accent) 15%,transparent);border-radius:50%;right:-24px;top:-26px}.stat-card .stat-label{display:block;color:var(--muted);font-size:.72rem;text-transform:uppercase;letter-spacing:.15em}.stat-card strong{display:block;font-family:'Playfair Display',serif;font-size:2.6rem;color:var(--accent-strong);line-height:1;margin-top:18px}.stat-card small{color:var(--muted)}.alert-stat strong{color:var(--danger)}
.panel{background:linear-gradient(155deg,var(--panel),var(--card2));border:1px solid var(--line);border-radius:18px;padding:20px}.overview-grid{display:grid;grid-template-columns:1.4fr .75fr;gap:18px;margin-bottom:18px}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:16px}.session-list{display:grid;gap:10px}.session-row{display:grid;grid-template-columns:74px minmax(0,1fr) auto;gap:16px;align-items:center;padding:15px;border:1px solid var(--line-soft);border-radius:13px;background:var(--card2)}.session-time{font-family:'Playfair Display',serif;font-size:1.2rem;color:var(--accent-strong)}.session-main strong{display:block}.session-main small{display:block;color:var(--muted);margin-top:4px}.status-row{display:flex;gap:6px;flex-wrap:wrap;margin-top:7px}.pill,.status{display:inline-flex;align-items:center;border:1px solid var(--line);border-radius:999px;padding:5px 9px;font-size:.68rem;color:var(--muted);white-space:nowrap}.status.ok{color:var(--success);border-color:color-mix(in srgb,var(--success) 40%,var(--line))}.status.warn{color:var(--danger);border-color:color-mix(in srgb,var(--danger) 40%,var(--line))}.session-actions{display:flex;gap:7px}.session-actions .btn{min-height:38px;padding:0 11px;font-size:.76rem}.empty-state{padding:30px;text-align:center;border:1px dashed var(--line);border-radius:13px;color:var(--muted)}.ai-teaser{position:relative;overflow:hidden}.ai-teaser:before{content:"";position:absolute;width:240px;height:240px;border:1px solid color-mix(in srgb,var(--accent) 10%,transparent);border-radius:50%;right:-130px;top:-90px}.ai-orb{width:46px;height:46px;border:1px solid var(--accent);border-radius:50%;display:grid;place-items:center;color:var(--accent);margin-bottom:24px}.ai-teaser h3{font-size:2rem}.ai-teaser p{line-height:1.6}.quick-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:16px}.quick-prompt{min-height:40px;border-radius:10px;border:1px solid var(--line);background:var(--card2);color:var(--muted);font-size:.74rem}.quick-prompt:hover{color:var(--text);border-color:var(--accent)}.week-preview{padding-bottom:14px}.mini-week{display:grid;grid-template-columns:repeat(7,1fr);gap:8px}.mini-day{min-width:0}.mini-day-head{padding:8px 4px;font-size:.68rem;text-transform:uppercase;letter-spacing:.12em;color:var(--muted)}.mini-day-head strong{display:block;color:var(--text);font-size:1rem;letter-spacing:0;margin-top:3px}.mini-booking,.mini-chip{padding:7px 9px;border-left:2px solid var(--accent);background:var(--card2);border-radius:7px;font-size:.7rem;margin-bottom:6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mini-chip[data-booking-detail]{cursor:pointer}.mini-chip[data-booking-detail]:hover{border-color:var(--accent-strong)}
.mini-chip.block{border-left:2px dashed color-mix(in srgb,var(--muted) 60%,var(--line));background:repeating-linear-gradient(135deg,color-mix(in srgb,var(--muted) 10%,var(--card2)),color-mix(in srgb,var(--muted) 10%,var(--card2)) 6px,transparent 6px,transparent 12px);color:var(--muted);text-transform:uppercase;letter-spacing:.04em}
.mini-empty{height:38px;border:1px dashed var(--line-soft);border-radius:7px}
.mini-day.is-today .mini-day-head strong{color:var(--accent-strong)}.mini-day.is-today .mini-day-head{color:var(--accent)}
.week-preview-nav{display:flex;align-items:center;gap:8px}.week-preview-nav .icon-btn{width:34px;height:34px;font-size:1rem}.week-preview-nav .btn{min-height:34px;padding:0 12px;font-size:.78rem}.week-preview-nav .btn.active{border-color:var(--accent);color:var(--accent)}
.ink-card.clickable{cursor:pointer;transition:border-color .15s,transform .15s}.ink-card.clickable:hover{border-color:var(--accent);transform:translateY(-2px)}.ink-card.clickable:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.calendar-controls{display:flex;gap:8px}.calendar-shell{border:1px solid var(--line);background:var(--panel);border-radius:18px;overflow:hidden}.calendar-title-row{flex:0 0 auto;min-height:58px;flex-wrap:wrap;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 18px;border-bottom:1px solid var(--line)}
.cal-title-actions{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
/* Maps-like pinch time-scale: 5 canonical levels (calendar-views.js), exposed
   here as a keyboard-accessible tab group. Order/ids/labels come from the
   shared model — this markup only supplies the id-to-button mapping. */
.cal-view-tabs{display:flex;align-items:center;gap:2px;flex-wrap:wrap;border:1px solid var(--line);border-radius:11px;padding:2px;background:var(--card2)}
.cal-view-tab{min-height:32px;padding:0 10px;border-radius:9px;background:none;border:1px solid transparent;color:var(--muted);font-size:.72rem;font-weight:700;white-space:nowrap}
.cal-view-tab:hover{color:var(--text)}
.cal-view-tab.active{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
.cal-view-tab:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
/* Calendar dimensions — one place. No pixel widths scattered in the grid or
   media queries. Day columns are fluid: the active 3-day or 7-day range always
   fits the available calendar canvas without horizontal day scrolling. */
.week-calendar{
  --cal-row:70px;                 /* px per hour — booking geometry base */
  --cal-time-axis-w:64px;         /* THE single source of truth: axis + corner column width */
  --cal-head-h:68px;              /* weekday header + corner height */
  --cal-day-count:7;              /* 3/7 — set inline per render (app.js); this is only the fallback */
  --cal-cols:repeat(var(--cal-day-count),minmax(0,1fr));
  --cal-cols-min:100%;
  display:flex;flex-direction:column;min-width:0;min-height:0;
}
/* STRUCTURE (not CSS-grid sticky, which is unreliable during long/momentum
   horizontal scroll on mobile): the time axis and the horizontally-scrolling
   day canvas are SEPARATE boxes that share the same row height + column
   tracks. The weekday header is a frozen row; it follows the day canvas
   horizontally via a JS-set --cal-x transform (kept in sync on 'scroll'). */
.cal-headrow{display:flex;flex:0 0 auto;z-index:4;background:var(--panel);border-bottom:1px solid var(--line)}
.cal-headrow .cal-corner{flex:0 0 var(--cal-time-axis-w);height:var(--cal-head-h);background:var(--panel);border-right:1px solid var(--line-soft)}
.cal-headscroll{flex:1 1 auto;min-width:0;overflow:hidden}
.cal-heads{display:grid;grid-template-columns:var(--cal-cols);min-width:var(--cal-cols-min);transform:translateX(var(--cal-x,0px))}
.cal-scrollrow{flex:1 1 auto;min-height:0;min-width:0;display:flex;align-items:flex-start;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
.cal-axis{flex:0 0 var(--cal-time-axis-w);display:flex;flex-direction:column;background:var(--panel);border-right:1px solid var(--line-soft);position:relative;z-index:2}
.cal-canvas{flex:1 1 auto;min-width:0;overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch}
.cal-grid{display:grid;grid-template-columns:var(--cal-cols);min-width:var(--cal-cols-min)}
/* The remaining vertical space is consumed by LAYOUT while the calendar page is
   shown — a flex chain from a viewport-tall root down to .calendar-scroll — so
   the header/time-axis stick inside the calendar without any "viewport minus N"
   guess that would break when the chrome above it grows (translations, browser
   UI, future controls). Only active in body.calendar-mode. */
body.calendar-mode{overflow:hidden}
body.calendar-mode .app-shell{height:100dvh}
body.calendar-mode .content{height:100%;min-height:0;min-width:0;display:flex;flex-direction:column;overflow:hidden}
body.calendar-mode .page[data-page-panel="calendar"]{flex:1 1 auto;min-height:0;min-width:0;width:auto;margin:0;max-width:none;display:flex;flex-direction:column;overflow:hidden;padding-bottom:0}
body.calendar-mode .calendar-shell{flex:1 1 auto;min-height:0;min-width:0;display:flex;flex-direction:column}
/* .calendar-scroll no longer scrolls — the vertical scroller is .cal-scrollrow
   and the horizontal one is .cal-canvas. It's just a flex passthrough that
   carries the layout-driven remaining height down to .week-calendar. */
.calendar-scroll{flex:1 1 auto;min-height:0;min-width:0;overflow:hidden;display:flex;flex-direction:column;touch-action:pan-x pan-y}
.cal-corner{z-index:5}
.cal-day-head{height:var(--cal-head-h);min-width:0;overflow:hidden;padding:13px 10px;text-align:center;border-left:1px solid var(--line-soft);font-size:.72rem;color:var(--muted);text-transform:uppercase;letter-spacing:.12em;background:var(--panel)}.cal-day-head strong{display:block;font-family:'Playfair Display',serif;font-size:1.3rem;color:var(--text);letter-spacing:0;margin-top:2px}
.cal-day-head.is-today{color:var(--accent);background:color-mix(in srgb,var(--accent) 14%,var(--panel))}.cal-day-head.is-today strong{color:var(--accent)}
.cal-time{height:var(--cal-row);padding:8px 8px 0 0;text-align:right;color:var(--muted);font-size:.68rem;border-top:1px solid var(--line-soft);background:var(--panel)}
.cal-cell{position:relative;height:var(--cal-row);border-top:1px solid var(--line-soft);border-left:1px solid var(--line-soft);padding:4px}.cal-cell.is-today{background:color-mix(in srgb,var(--accent) 5%,transparent)}.cal-cell.clickable:hover{background:color-mix(in srgb,var(--accent) 4%,transparent)}
.cal-now{position:absolute;left:0;right:0;height:0;border-top:2px solid var(--danger);z-index:4;pointer-events:none}.cal-now::before{content:"";position:absolute;left:-3px;top:-4px;width:7px;height:7px;border-radius:50%;background:var(--danger)}
.cal-booking{position:absolute;inset:4px;border:1px solid color-mix(in srgb,var(--accent) 32%,var(--line));border-left:3px solid var(--accent);border-radius:9px;background:linear-gradient(145deg,color-mix(in srgb,var(--accent) 8%,var(--card)),var(--card2));padding:7px;overflow:hidden;font-size:.68rem;z-index:2}.cal-booking strong{display:block;font-size:.72rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cal-booking small{color:var(--muted);display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* Short cards keep their REAL 30-minute geometry — never enlarged to fit text.
   Secondary lines are dropped; a tap still opens the full booking. */
.cal-booking--compact{padding:3px 6px;font-size:.62rem}.cal-booking--compact strong{font-size:.66rem}.cal-booking--compact small+small{display:none}
/* Availability blocks — deliberately unlike a booking: no accent, muted, hatched. */
.cal-block{position:absolute;left:4px;right:4px;border:1px dashed color-mix(in srgb,var(--muted) 55%,var(--line));border-left:3px solid color-mix(in srgb,var(--muted) 70%,var(--line));border-radius:9px;background:repeating-linear-gradient(135deg,color-mix(in srgb,var(--muted) 12%,var(--card2)),color-mix(in srgb,var(--muted) 12%,var(--card2)) 7px,transparent 7px,transparent 14px);color:var(--muted);padding:6px 7px;overflow:hidden;font-size:.66rem;z-index:1;cursor:pointer}.cal-block strong{display:block;font-size:.7rem;letter-spacing:.04em;text-transform:uppercase;color:color-mix(in srgb,var(--muted) 85%,var(--text))}.cal-block small{color:var(--muted)}
.cal-legend{display:flex;gap:16px;align-items:center;font-size:.7rem;color:var(--muted)}.cal-legend i{display:inline-block;width:22px;height:10px;border-radius:3px;margin-right:6px;vertical-align:middle}.cal-legend .lg-booking{background:var(--accent)}.cal-legend .lg-block{background:repeating-linear-gradient(135deg,var(--muted),var(--muted) 3px,transparent 3px,transparent 6px);border:1px dashed var(--muted)}
/* 1-month level: a compact calendar grid (date-picker.js supplies the cell
   layout) with a real per-day activity badge — no hourly time axis at this
   scale. A tap drills into the 3-day view centered on that date. */
.month-calendar{display:flex;flex-direction:column;min-width:0;min-height:0;padding:10px;overflow-y:auto}
.month-head-row{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin-bottom:4px}
.month-wd{text-align:center;font-size:.68rem;text-transform:uppercase;letter-spacing:.1em;color:var(--muted);padding:4px 0}
.month-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;flex:1 1 auto}
.month-day{position:relative;min-height:68px;padding:6px;border:1px solid var(--line-soft);border-radius:10px;background:var(--card2);color:var(--text);text-align:left;display:flex;flex-direction:column;gap:6px}
.month-day:hover{border-color:var(--accent)}
.month-day:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
.month-day.is-out{color:var(--muted);opacity:.5}
.month-day.is-today{border-color:var(--accent)}
.month-day.is-today .month-day-num{color:var(--accent)}
.month-day-num{font-family:'Playfair Display',serif;font-size:1rem}
.month-day-count{align-self:flex-start;display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 6px;border-radius:999px;background:var(--accent);color:var(--accent-ink);font-size:.68rem;font-weight:800}
.month-day.has-block::after{content:"";position:absolute;right:6px;top:6px;width:7px;height:7px;border-radius:50%;border:1px dashed var(--muted)}
/* 12-month level: 12 mini month-grids, responsive column count. A tap on a
   month header drills into that month (1m); a tap on a day drills into the
   3-day view centered on that date — same rule as the month grid above. */
.year-calendar{padding:12px;min-width:0;min-height:0;overflow-y:auto}
.year-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
.year-month{border:1px solid var(--line-soft);border-radius:12px;background:var(--card2);padding:9px}
.year-month-head{width:100%;text-align:left;background:none;border:0;color:var(--text);font-weight:700;font-size:.8rem;text-transform:capitalize;padding:2px 4px 8px;border-bottom:1px solid var(--line-soft);margin-bottom:6px}
.year-month-head:hover{color:var(--accent)}
.year-month-head:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
.year-month-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}
.year-day{aspect-ratio:1;min-height:0;padding:0;border:0;border-radius:5px;background:none;color:var(--muted);font-size:.62rem;display:flex;align-items:center;justify-content:center}
.year-day:hover{background:var(--card)}
.year-day:focus-visible{outline:1px solid var(--accent)}
.year-day.is-out{opacity:.35}
.year-day.is-today{color:var(--accent);font-weight:800}
.year-day.has-activity{background:color-mix(in srgb,var(--accent) 22%,transparent);color:var(--text);font-weight:700}
.flag-badge{display:inline-flex;align-items:center;gap:4px;border-radius:999px;padding:3px 8px;font-size:.66rem;font-weight:700;border:1px solid color-mix(in srgb,var(--danger) 45%,var(--line));color:var(--danger);background:color-mix(in srgb,var(--danger) 10%,transparent)}
.assistant-layout{display:grid;grid-template-columns:.8fr 1.2fr;gap:36px;align-items:center;min-height:calc(100vh - 200px)}.assistant-copy h2{font-size:clamp(2.7rem,5vw,5rem);letter-spacing:-.04em}.assistant-copy>p{color:var(--muted);max-width:520px;line-height:1.7}.context-card{display:flex;justify-content:space-between;gap:30px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:14px 0;margin-top:30px}.context-card span{color:var(--muted)}.context-card strong{color:var(--accent)}.chat-card{border:1px solid var(--line);border-radius:20px;background:linear-gradient(155deg,var(--panel),var(--card2));overflow:hidden;box-shadow:var(--shadow)}.chat-head{display:flex;align-items:center;justify-content:space-between;padding:16px 18px;border-bottom:1px solid var(--line)}.chat-head strong,.chat-head small{display:block}.chat-head small{color:var(--muted);font-size:.68rem;margin-top:2px}.online-dot{width:8px;height:8px;border-radius:50%;background:var(--success);box-shadow:0 0 0 5px color-mix(in srgb,var(--success) 10%,transparent)}.chat-messages{height:460px;overflow:auto;padding:18px;display:flex;flex-direction:column;gap:10px}.message{max-width:80%;padding:11px 13px;border-radius:13px;line-height:1.5;font-size:.88rem}.message.assistant{align-self:flex-start;background:var(--card);border:1px solid var(--line)}.message.user{align-self:flex-end;background:color-mix(in srgb,var(--accent) 16%,var(--card));border:1px solid color-mix(in srgb,var(--accent) 35%,var(--line))}.message.loading{color:var(--muted);font-style:italic}
.message.assistant strong{color:var(--text);font-weight:700}.message.assistant ul{margin:4px 0;padding-left:18px}
.ai-pres{align-self:flex-start;width:100%;max-width:min(430px,92vw);margin-top:2px;display:flex;flex-direction:column;gap:8px;font-size:.8rem}
.ai-pres-head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:6px}.ai-pres-titles{min-width:0}.ai-pres-titles strong{display:block;text-transform:capitalize}.ai-pres-titles small{color:var(--muted);font-size:.72rem}.ai-pres-meta{display:flex;flex-wrap:wrap;gap:5px;align-items:center}
.ai-chip{display:inline-block;border:1px solid var(--line);border-radius:999px;padding:1px 8px;font-size:.66rem;color:var(--muted);white-space:nowrap}.ai-chip.today{color:var(--accent-ink);background:var(--accent);border-color:var(--accent);font-weight:700}
.ai-pres-items{display:flex;flex-direction:column;gap:6px}
.ai-card{display:flex;gap:10px;border:1px solid var(--line);border-left:3px solid var(--accent);border-radius:11px;background:var(--card2);padding:9px 11px;min-width:0;text-align:left;width:100%}
.ai-card.booking[data-booking-detail]{cursor:pointer}.ai-card.booking[data-booking-detail]:hover{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 6%,var(--card2))}
.ai-card.block{border-left:3px dashed color-mix(in srgb,var(--muted) 60%,var(--line));background:repeating-linear-gradient(135deg,color-mix(in srgb,var(--muted) 9%,var(--card2)),color-mix(in srgb,var(--muted) 9%,var(--card2)) 6px,transparent 6px,transparent 12px);color:var(--muted)}
.ai-card-time{flex:0 0 auto;min-width:44px;display:flex;flex-direction:column;line-height:1.15}.ai-card-time strong{font-family:'Playfair Display',Georgia,serif;font-size:1rem;color:var(--accent-strong)}.ai-card-time small{color:var(--muted);font-size:.68rem}
.ai-card-body{min-width:0;flex:1;display:flex;flex-direction:column;gap:3px}.ai-card-body>small{color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ai-card-line{display:flex;gap:8px;align-items:baseline;min-width:0}.ai-card-line strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.ai-card-dur{flex:0 0 auto;color:var(--muted);font-size:.7rem}
.ai-badges{display:flex;flex-wrap:wrap;gap:4px;margin-top:2px}
.ai-badge{display:inline-block;border:1px solid var(--line);border-radius:6px;padding:0 6px;font-size:.64rem;color:var(--muted)}.ai-badge.s-confirmed{color:var(--success);border-color:color-mix(in srgb,var(--success) 40%,var(--line))}.ai-badge.s-cancelled,.ai-badge.s-no_show{color:var(--danger);border-color:color-mix(in srgb,var(--danger) 40%,var(--line))}.ai-badge.note{color:var(--accent)}
.ai-pres-empty{border:1px dashed var(--line);border-radius:10px;padding:14px;text-align:center;color:var(--muted)}.ai-pres-empty.small{padding:7px;font-size:.72rem}
.ai-pres-week{display:flex;flex-direction:column;gap:9px}.ai-day-group{border:1px solid var(--line-soft);border-radius:11px;padding:8px 9px;background:var(--card2)}.ai-day-group.is-today{border-color:var(--accent)}.ai-day-head{display:flex;flex-wrap:wrap;gap:5px;align-items:center;margin-bottom:6px}.ai-day-head strong{text-transform:capitalize}
.ai-avail{border-radius:10px;padding:9px 11px;font-weight:700}.ai-avail.free{color:var(--success);border:1px solid color-mix(in srgb,var(--success) 40%,var(--line));background:color-mix(in srgb,var(--success) 8%,var(--card2))}.ai-avail.busy{color:var(--danger);border:1px solid color-mix(in srgb,var(--danger) 40%,var(--line));background:color-mix(in srgb,var(--danger) 8%,var(--card2))}
.ai-slot-options{margin:0;padding-left:0;list-style:none;counter-reset:slot;display:grid;gap:6px}.ai-slot-options li{counter-increment:slot;display:flex;gap:10px;align-items:baseline;border:1px solid var(--line);border-radius:10px;padding:9px 11px;background:var(--card2)}.ai-slot-options li::before{content:counter(slot) ".";font-weight:800;color:var(--accent);flex:0 0 auto}
.ai-detail{border:1px solid var(--line);border-radius:11px;background:var(--card2);padding:4px 11px;display:flex;flex-direction:column}.ai-detail-row{display:flex;gap:10px;justify-content:space-between;padding:7px 0;border-bottom:1px solid var(--line-soft)}.ai-detail-row:last-child{border-bottom:0}.ai-detail-row small{color:var(--muted);flex:0 0 auto}.ai-detail-row span{text-align:right;min-width:0;overflow-wrap:anywhere}.ai-detail-row.notes span{text-align:left}.ai-detail-actions{padding:9px 0}.ai-detail-actions .btn{min-height:38px}
.ai-pres-more{color:var(--muted);font-size:.7rem;text-align:center}
.ai-debug{align-self:flex-start;max-width:92%;margin-top:-4px;font-size:.72rem}.ai-debug summary{cursor:pointer;color:var(--muted);letter-spacing:.1em;text-transform:uppercase;font-size:.62rem;font-weight:700;padding:3px 0}.ai-debug .ai-debug-body{border:1px solid var(--line-soft);border-radius:9px;background:var(--card2);padding:9px 11px;margin-top:5px;display:grid;gap:8px}.ai-debug-attempt{display:grid;gap:2px;border-left:2px solid var(--line);padding-left:8px}.ai-debug-handoff{border-left-color:var(--accent)}.ai-debug-h{color:var(--text);font-weight:600}.ai-debug-s{color:var(--muted)}.ai-debug-tag{display:inline-block;border:1px solid var(--line);border-radius:999px;padding:0 6px;font-size:.6rem;color:var(--accent);text-transform:uppercase;letter-spacing:.06em}.ai-debug-final{border-top:1px solid var(--line-soft);padding-top:6px;color:var(--muted)}
.chat-input{display:flex;gap:9px;padding:14px;border-top:1px solid var(--line);align-items:flex-end}.chat-input textarea{min-height:54px}.chat-input .btn{height:54px}
@keyframes micpulse{0%,100%{box-shadow:0 0 0 0 color-mix(in srgb,var(--danger) 55%,transparent)}50%{box-shadow:0 0 0 7px transparent}}
.composer-add.is-recording{border-color:var(--danger);color:var(--danger);animation:micpulse 1.4s ease-in-out infinite}
.voice-status{display:flex;align-items:center;gap:8px;padding:8px 16px;font-size:.78rem;color:var(--danger);border-top:1px solid var(--line)}.voice-status .rec-dot{width:9px;height:9px;border-radius:50%;background:var(--danger);animation:micpulse 1.4s ease-in-out infinite}#voiceStopBtn{margin-left:auto;font-size:.72rem;padding:4px 12px;height:auto}
/* chat composer action hub (＋) */
.chat-card{position:relative}
.composer-add{width:54px;min-width:54px;padding:0;font-size:1.35rem;line-height:1}
.composer-menu{position:absolute;left:14px;bottom:76px;z-index:30;min-width:220px;display:grid;gap:2px;padding:6px;background:var(--panel);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow)}
.composer-menu-item{display:flex;align-items:center;gap:10px;width:100%;text-align:left;background:transparent;border:0;color:var(--text);font:inherit;padding:11px 12px;border-radius:9px;cursor:pointer}
.composer-menu-item:hover,.composer-menu-item:focus{background:var(--card2);outline:none}
.composer-menu-item .cm-ico{font-size:1.15rem;width:22px;text-align:center}
.composer-attach{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:10px 14px;border-top:1px solid var(--line)}
.composer-thumbs{display:flex;gap:7px;flex-wrap:wrap}
.composer-thumb{position:relative;width:52px;height:66px;border:1px solid var(--line);border-radius:9px;overflow:hidden;cursor:grab}
.composer-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.composer-thumb-x{position:absolute;top:2px;right:2px;width:19px;height:19px;border-radius:50%;border:0;background:rgba(0,0,0,.62);color:#fff;font-size:12px;line-height:1;cursor:pointer}
.composer-analyze{height:44px;margin-left:auto}
/* the review result uses the full width of the chat column (not a narrow bubble),
   capped so inputs never stretch to absurd widths on very wide screens */
.import-review-msg{align-self:stretch;width:100%;max-width:100%!important}
.import-review{display:grid;gap:10px;width:100%;max-width:760px;margin-inline:auto}
.import-date-echo{font-size:.74rem;margin:0}.import-review h4{font-family:'Playfair Display',serif;font-size:1.15rem}.import-missing{font-size:.76rem;color:var(--danger);border:1px solid color-mix(in srgb,var(--danger) 45%,var(--line));border-radius:9px;padding:7px 10px}.import-rel{font-size:.74rem;color:var(--muted)}.import-rel-cancelled b,.import-rel-rejected b{color:var(--danger)}.import-override{display:flex;gap:8px;align-items:flex-start;font-size:.76rem;color:var(--danger);border:1px solid color-mix(in srgb,var(--danger) 45%,var(--line));border-radius:9px;padding:8px 10px}.import-override input{margin-top:2px}.import-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px}.import-f{display:grid;gap:4px;font-size:.72rem;color:var(--muted);min-width:0}.import-f input,.import-f select{width:100%;box-sizing:border-box;font:inherit;color:var(--text);background:var(--card2);border:1px solid var(--line);border-radius:8px;padding:9px 10px}.import-f-duration .import-dur-custom{display:flex;gap:8px;margin-top:5px}.import-f-duration .import-dur-custom label{flex:1;display:grid;gap:3px;font-size:.7rem;color:var(--muted)}.import-f-duration .import-dur-custom input{width:100%}.import-dur-error{margin-top:4px;font-size:.7rem;color:var(--danger)}
.import-f-date{position:relative}
.import-date-btn{width:100%;text-align:left;font:inherit;color:var(--text);background:var(--card2);border:1px solid var(--line);border-radius:8px;padding:9px 10px;cursor:pointer}
.import-date-pop{position:absolute;z-index:40;top:100%;left:0;margin-top:4px;width:min(300px,88vw);background:var(--panel);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow);padding:10px}
.import-date-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}
.import-date-head strong{font-size:.86rem;text-transform:capitalize}
.import-date-head button{width:30px;height:30px;border:1px solid var(--line);background:var(--card2);color:var(--text);border-radius:8px;cursor:pointer;font-size:1rem;line-height:1}
.import-date-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}
.import-date-wd{text-align:center;font-size:.62rem;color:var(--muted);padding:3px 0;text-transform:capitalize}
.import-date-cell{aspect-ratio:1;border:1px solid transparent;background:transparent;color:var(--text);border-radius:7px;cursor:pointer;font-size:.76rem}
.import-date-cell:hover{background:var(--card2)}
.import-date-cell.out{color:var(--muted);opacity:.55}
.import-date-cell.today{border-color:var(--accent)}
.import-date-cell.sel{background:var(--accent);color:#17110d;font-weight:700}
.import-date-cell:disabled{opacity:.3;cursor:not-allowed}
@media(max-width:760px){.import-date-pop{width:min(320px,92vw)}}.import-evidence{font-size:.74rem;color:var(--muted)}.import-evidence ul{margin:6px 0 0;padding-left:16px;display:grid;gap:3px}.import-actions{display:flex;gap:9px;justify-content:flex-end;flex-wrap:wrap}.import-actions .btn{flex:1}
@media(max-width:760px){
  .import-grid{grid-template-columns:1fr}
  /* action menu becomes a bottom sheet with real touch targets */
  .composer-menu{position:fixed;left:0;right:0;bottom:calc(64px + env(safe-area-inset-bottom,0px));top:auto;z-index:80;min-width:0;max-height:calc(100dvh - 96px);overflow-y:auto;border-radius:16px 16px 0 0;padding:8px;gap:4px}
  .composer-menu-item{padding:15px 14px;font-size:1rem}
  .composer-thumb{width:58px;height:74px}
  .composer-analyze{width:100%;margin-left:0;height:46px}
}
.search-wrap input{min-width:320px}.customer-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:13px}.customer-card{padding:18px;border:1px solid var(--line);border-radius:15px;background:linear-gradient(155deg,var(--card),var(--panel))}.customer-card .customer-avatar{width:42px;height:42px;border-radius:50%;display:grid;place-items:center;border:1px solid var(--line);color:var(--accent);margin-bottom:16px}.customer-card strong{font-family:'Playfair Display',serif;font-size:1.15rem}.customer-meta{display:grid;gap:5px;color:var(--muted);font-size:.77rem;margin-top:10px}.ink-hero{display:flex;align-items:center;justify-content:space-between;gap:30px;margin-bottom:18px}.ink-hero>div{max-width:650px}.scan-drop{width:180px;min-height:130px;display:flex;flex-direction:column;align-items:center;justify-content:center;border:1px dashed var(--accent);border-radius:15px;background:color-mix(in srgb,var(--accent) 5%,var(--card2));color:var(--accent);cursor:pointer;font-size:1.5rem}.scan-drop span{font-size:.8rem;font-weight:700;margin-top:7px}.scan-drop small{font-size:.65rem;color:var(--muted);margin-top:3px}.scan-drop input{display:none}.ink-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:13px}.ink-card{padding:18px;border:1px solid var(--line);border-radius:15px;background:var(--panel);position:relative;overflow:hidden}.ink-color{width:34px;height:34px;border:1px solid var(--line);border-radius:50%;background:var(--card2);margin-bottom:15px}.ink-card strong{display:block}.ink-lot{display:inline-flex;margin-top:9px;border:1px solid var(--line);border-radius:999px;padding:4px 8px;color:var(--accent);font-size:.68rem}.ink-dates{display:grid;gap:4px;color:var(--muted);font-size:.73rem;margin-top:12px}.ink-status{position:absolute;right:12px;top:12px}.admin-grid{display:grid;grid-template-columns:1.4fr .6fr;gap:18px}.artist-admin-list{display:grid;gap:9px}.artist-admin-row{display:grid;grid-template-columns:42px minmax(0,1fr) auto;align-items:center;gap:12px;padding:12px;border:1px solid var(--line-soft);border-radius:12px;background:var(--card2)}.artist-admin-row small{display:block;color:var(--muted)}.theme-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:18px}.theme-card{text-align:left;color:var(--text);background:var(--panel);border:1px solid var(--line);border-radius:18px;padding:18px}.theme-card.selected{border-color:var(--accent);box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 15%,transparent)}.theme-card strong,.theme-card small{display:block}.theme-card strong{font-family:'Playfair Display',serif;font-size:1.15rem;margin-top:15px}.theme-card small{color:var(--muted);margin-top:4px}.theme-swatch{height:110px;border-radius:13px;display:flex;align-items:end;padding:13px;gap:8px}.theme-swatch i{display:block;border-radius:50%;width:32px;height:32px;border:1px solid rgba(255,255,255,.16)}.theme-swatch.obsidian{background:#0c0a09}.theme-swatch.obsidian i:nth-child(1){background:#c9a366}.theme-swatch.obsidian i:nth-child(2){background:#f4ede3}.theme-swatch.obsidian i:nth-child(3){background:#6d272f}.theme-swatch.emerald{background:#080d0b}.theme-swatch.emerald i:nth-child(1){background:#a8c6ad}.theme-swatch.emerald i:nth-child(2){background:#f1eee6}.theme-swatch.emerald i:nth-child(3){background:#1d4b3b}.theme-swatch.burgundy{background:#10090b}.theme-swatch.burgundy i:nth-child(1){background:#cf9a8b}.theme-swatch.burgundy i:nth-child(2){background:#f7efec}.theme-swatch.burgundy i:nth-child(3){background:#641f31}.theme-swatch.ivory{background:#f4efe7;border:1px solid #d7c7b4}.theme-swatch.ivory i:nth-child(1){background:#aa7f43}.theme-swatch.ivory i:nth-child(2){background:#2b221c}.theme-swatch.ivory i:nth-child(3){background:#fffaf4;border-color:#cdbda9}
.modal{border:0;padding:0;background:transparent;color:var(--text);width:min(720px,calc(100% - 28px));max-width:none}.modal::backdrop{background:rgba(0,0,0,.72);backdrop-filter:blur(3px)}.modal-card{display:grid;gap:15px;background:linear-gradient(155deg,var(--panel),var(--card2));border:1px solid var(--line);border-radius:20px;padding:22px;box-shadow:var(--shadow);max-height:88vh;overflow:auto}.modal-card h3{font-size:1.8rem}.modal-head{display:flex;justify-content:space-between;align-items:flex-start}.modal-actions{display:flex;justify-content:flex-end;gap:9px;margin-top:7px}.warning-box{padding:12px;border:1px solid color-mix(in srgb,var(--danger) 50%,var(--line));border-radius:11px;background:color-mix(in srgb,var(--danger) 8%,var(--card));color:var(--danger);font-size:.78rem}.detail-hero{border-bottom:1px solid var(--line);padding-bottom:15px}.detail-meta{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.detail-meta div{padding:12px;border:1px solid var(--line-soft);border-radius:10px}.detail-meta small{display:block;color:var(--muted);margin-bottom:4px}
@media(max-width:1100px){.app-shell{grid-template-columns:210px minmax(0,1fr)}.sidebar{padding-left:12px;padding-right:12px}.overview-grid,.assistant-layout{grid-template-columns:1fr}.assistant-layout{align-items:start}.customer-grid,.ink-grid{grid-template-columns:repeat(2,1fr)}.admin-grid{grid-template-columns:1fr}.stats-grid{grid-template-columns:repeat(2,1fr)}.year-grid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:760px){.auth-shell{grid-template-columns:1fr;padding:26px 18px;gap:25px}.auth-brand{padding-top:10px}.auth-brand h1{font-size:4rem}.app-shell{display:block}.sidebar{position:fixed;z-index:80;left:0;top:0;width:250px;transform:translateX(-105%);transition:.2s;box-shadow:var(--shadow)}.sidebar.open{transform:none}.topbar{height:auto;min-height:76px;padding:12px 15px;gap:10px;flex-wrap:wrap}.menu-btn{display:block}.artist-context{order:3;width:100%;justify-content:space-between;border-top:1px solid var(--line-soft);padding-top:8px}.artist-context>.eyebrow{display:block}.top-actions .btn.ghost{display:none}.top-actions .btn{padding:0 12px}.page{padding:26px 15px 50px}.page-heading{align-items:flex-start;flex-direction:column;gap:12px}.luxury-rule{display:none}.stats-grid{grid-template-columns:1fr 1fr}.overview-grid{grid-template-columns:1fr}.session-row{grid-template-columns:62px minmax(0,1fr);gap:11px}.session-actions{grid-column:2}.mini-week{overflow:auto;grid-template-columns:repeat(7,120px)}.assistant-copy h2{font-size:3rem}.chat-messages{height:390px}.customer-grid,.ink-grid,.theme-grid{grid-template-columns:1fr}.ink-hero{align-items:stretch;flex-direction:column}.scan-drop{width:100%}.form-grid.two{grid-template-columns:1fr}.search-wrap,.search-wrap input{width:100%;min-width:0}.modal-actions{flex-wrap:wrap}.modal-actions .btn{flex:1}.calendar-heading{flex-direction:column}.admin-grid{grid-template-columns:1fr}}
.settings-block{margin-top:28px;padding-top:22px;border-top:1px solid var(--line-soft);max-width:520px}
.hp-field{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.settings-block .eyebrow{margin-bottom:12px}
.settings-field{display:flex;flex-direction:column;gap:6px;font-size:.82rem;font-weight:700;color:var(--muted)}
.settings-field select{width:100%;max-width:100%;min-height:44px;padding:10px 12px;border:1px solid var(--line);border-radius:12px;background:var(--card2);color:var(--text);font-weight:600;text-overflow:ellipsis}
.settings-field select:disabled{opacity:.55;cursor:not-allowed}
.settings-block .small{margin-top:8px;margin-bottom:0}
.warn-text{color:var(--accent-strong)}
.dummy-badge{display:inline-block;background:#b8320c;color:#fff;font-size:.58rem;font-weight:800;letter-spacing:.12em;padding:1px 5px;border-radius:4px;vertical-align:middle}
.dummy-strip{background:repeating-linear-gradient(45deg,#b8320c,#b8320c 10px,#8f2708 10px,#8f2708 20px);color:#fff;font-weight:800;letter-spacing:.18em;text-align:center;padding:6px;border-radius:8px;margin-bottom:12px;font-size:.72rem}
.cal-booking.is-dummy,.mini-chip.is-dummy,.ai-card.booking.is-dummy{outline:2px dashed #b8320c;outline-offset:-2px}
.ai-badge.dummy,.ai-chip.dummy{background:#b8320c;color:#fff;border-color:#b8320c}

/* Mobile calendar: compact chrome; a horizontally scrollable week with
   fluid-but-tappable day columns (~3 on a ~390px viewport). The remaining
   height is layout-driven (body.calendar-mode flex chain above) — no viewport
   subtraction. Sticky header/time-axis + geometry are shared with desktop. */
@media(max-width:760px){
  .page[data-page-panel="calendar"]{padding:14px 12px 0}
  .page[data-page-panel="calendar"] .calendar-heading{gap:8px;margin-bottom:10px;flex-direction:row;align-items:center;justify-content:space-between}
  .page[data-page-panel="calendar"] .calendar-heading .eyebrow,
  .page[data-page-panel="calendar"] .calendar-heading p.muted{display:none}
  .page[data-page-panel="calendar"] .calendar-heading h2{font-size:1.5rem;margin:0}
  .calendar-controls{gap:6px}
  .calendar-controls .btn.ghost{padding:0 10px;font-size:.76rem;min-height:34px}
  .calendar-controls .icon-btn{width:34px;height:34px}
  .calendar-shell{border-radius:12px}
  .calendar-title-row{min-height:38px;padding:8px 12px}
  .calendar-title-row .cal-legend{display:none}
  .cal-view-tabs{gap:0}
  .cal-view-tab{min-height:30px;padding:0 7px;font-size:.66rem}
  /* All active day columns fit the mobile canvas: 3d shows 3, 7d shows 7. */
  .week-calendar{--cal-time-axis-w:44px;--cal-head-h:54px}
  .cal-day-head{padding:7px 4px;font-size:.58rem;letter-spacing:.05em}
  .cal-day-head strong{font-size:1.02rem;margin-top:1px}
  .cal-time{font-size:.58rem;padding:6px 5px 0 0}
  .cal-booking{padding:5px;font-size:.62rem}.cal-booking strong{font-size:.64rem}
  /* 1-month level: smaller cells, count badge only (no wasted padding). */
  .month-calendar{padding:6px}
  .month-grid{gap:3px}
  .month-day{min-height:46px;padding:4px;border-radius:8px;gap:3px}
  .month-day-num{font-size:.82rem}
  .month-day-count{min-width:16px;height:16px;font-size:.6rem}
  /* 12-month level: 2 mini months per row fits down to a 320px viewport. */
  .year-calendar{padding:8px}
  .year-grid{grid-template-columns:repeat(2,1fr);gap:10px}
  .year-month-head{font-size:.74rem}
  .year-day{font-size:.58rem}
}

/* Focused mobile and account polish. */
.modal-feedback{margin:0 0 14px;padding:11px 13px;border:1px solid var(--danger);border-radius:10px;background:color-mix(in srgb,var(--danger) 12%,var(--card2));color:var(--text);font-size:.84rem;line-height:1.4}
.modal-feedback.ok{border-color:var(--success);background:color-mix(in srgb,var(--success) 12%,var(--card2))}
.notif-glyph{display:grid;place-items:center;width:100%;height:100%}.notif-glyph svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.saved-accounts{display:grid;gap:6px;margin-top:-4px}.saved-account-row{display:flex;align-items:center;gap:4px}.saved-account{display:flex;align-items:center;gap:9px;min-width:0;flex:1;padding:7px;border:1px solid var(--line-soft);border-radius:10px;background:var(--card2);color:var(--text);text-align:left}.saved-account small{display:block;color:var(--muted);font-size:.7rem;margin-top:2px;overflow:hidden;text-overflow:ellipsis}.saved-account .avatar{width:28px;height:28px;font-size:.7rem;flex:none}.saved-account-row>.danger{font-size:1.1rem;padding:4px 8px}
.sidebar-account-actions{display:flex;gap:4px;flex-wrap:wrap}.sidebar-account-actions .text-button{padding-left:0;margin-right:8px}.compact-select{min-height:36px;padding:7px 10px;width:auto}.test-tag{display:inline-block;margin-left:7px;padding:2px 7px;border:1px solid var(--accent);border-radius:999px;color:var(--accent);font-size:.62rem;font-weight:700;vertical-align:middle}.is-test-account{background:color-mix(in srgb,var(--accent) 5%,transparent)}
.assistant-layout,.chat-card,.chat-messages{min-width:0}.chat-card{max-width:100%;overflow:hidden}.chat-messages{overflow-y:auto}.message{overflow-wrap:anywhere;word-break:break-word}.modal-actions{display:flex;flex-wrap:wrap;gap:8px}
@media(max-width:760px){.auth-shell{grid-template-columns:1fr;padding:18px;gap:18px}.auth-brand{display:none}.auth-card{padding:22px;border-radius:18px}.form-grid.two{grid-template-columns:1fr}.modal{width:calc(100% - 16px);max-width:none;margin:auto;padding:0}.modal-card{width:100%;max-height:92dvh;padding:16px;overflow-y:auto;overscroll-behavior:contain}.modal-card .modal-actions{position:sticky;bottom:-16px;z-index:3;padding:12px 0 0;background:linear-gradient(180deg,transparent,var(--card2) 28%)}.modal-actions .btn{flex:1 1 45%;min-width:120px}.topbar{padding:10px 12px}.page{padding:22px 12px 40px}.assistant-layout{display:block}.chat-card{margin-top:18px}.chat-head{align-items:flex-start}.notif-list{max-height:82dvh}}
/* Global-admin studio directory. */
.studio-directory-panel{margin-bottom:18px}
.studio-admin-list{display:grid;gap:10px}
.studio-admin-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:18px;align-items:center;padding:15px;border:1px solid var(--line-soft);border-radius:13px;background:var(--card2)}
.studio-admin-row.is-inactive{opacity:.72}
.studio-admin-main{min-width:0}.studio-admin-title{display:flex;align-items:center;gap:9px;flex-wrap:wrap}.studio-admin-title strong{font-family:'Playfair Display',serif;font-size:1.05rem}.studio-admin-main>small{display:block;color:var(--muted);margin-top:3px}
.studio-admin-meta,.studio-admin-stats{display:flex;gap:8px 14px;flex-wrap:wrap;margin-top:9px;color:var(--muted);font-size:.72rem}.studio-admin-stats span{border:1px solid var(--line-soft);border-radius:999px;padding:3px 8px}
.studio-admin-actions{display:flex;gap:8px;align-items:center;justify-content:flex-end;flex-wrap:wrap}.studio-audit-meta{margin-top:4px}
@media(max-width:760px){.studio-admin-row{grid-template-columns:1fr}.studio-admin-actions{justify-content:stretch}.studio-admin-actions .btn{flex:1 1 45%}.studio-admin-meta,.studio-admin-stats{display:grid;grid-template-columns:1fr 1fr}}


/* Admin cards: compact, readable and mobile-first. */
.studio-admin-row{position:relative;align-items:start}
.studio-admin-heading{min-width:0;display:grid;gap:2px}
.studio-admin-heading>strong{font-family:'Playfair Display',Georgia,serif;font-size:1.1rem;line-height:1.25;overflow-wrap:anywhere}
.studio-admin-heading>small{display:block;color:var(--muted);font-size:.72rem;overflow-wrap:anywhere}
.studio-admin-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-top:12px}
.studio-admin-stats span{display:grid;gap:3px;min-width:0;padding:9px 10px;border:1px solid var(--line-soft);border-radius:10px;background:var(--card2)}
.studio-admin-stats strong{font-size:.95rem;line-height:1}
.studio-admin-stats small{font-size:.62rem;color:var(--muted);overflow:hidden;text-overflow:ellipsis}
.studio-admin-details{margin-top:10px}
.studio-admin-details>summary{display:inline-flex;align-items:center;gap:6px;color:var(--accent);font-size:.72rem;font-weight:700;cursor:pointer;list-style:none;appearance:none}
.studio-admin-details>summary::-webkit-details-marker{display:none}
.studio-admin-details>summary::marker{content:""}
.studio-admin-details>summary:focus-visible{outline:2px solid var(--accent);outline-offset:4px;border-radius:3px}
.studio-admin-details>summary::after{content:"⌄";font-size:.8rem;transition:transform .15s}
.studio-admin-details[open]>summary::after{transform:rotate(180deg)}
.studio-admin-meta{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:9px}
.studio-admin-meta span{display:grid;gap:2px;min-width:0;padding:8px;border:1px solid var(--line-soft);border-radius:9px}
.studio-admin-meta small{color:var(--muted);font-size:.62rem}
.studio-admin-meta strong{font-size:.72rem;overflow-wrap:anywhere}

.artist-admin-row{position:relative;grid-template-columns:42px minmax(0,1fr) 40px;align-items:center;min-width:0}
.artist-admin-row.is-inactive{opacity:.72}
.artist-admin-main{min-width:0}
.artist-admin-name{display:flex;align-items:center;gap:7px;flex-wrap:wrap;min-width:0}
.artist-admin-name strong{min-width:0;overflow-wrap:anywhere}
.artist-admin-email{display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-top:2px}
.artist-admin-badges{display:flex;flex-wrap:wrap;gap:5px;margin-top:6px}
.artist-admin-badges .test-tag,.artist-admin-badges .role-tag{margin-left:0}

.entity-action-menu{position:relative;justify-self:end;align-self:start;z-index:5}
.entity-action-menu>summary{display:grid;place-items:center;width:38px;height:38px;border:1px solid var(--line);border-radius:10px;background:var(--card2);color:var(--text);font-weight:800;letter-spacing:.08em;cursor:pointer;list-style:none;appearance:none;user-select:none}
.entity-action-menu>summary::-webkit-details-marker{display:none}
.entity-action-menu>summary::marker{content:""}
.entity-action-menu>summary:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
.entity-action-menu[open]>summary{border-color:var(--accent);color:var(--accent)}
.entity-action-popover{position:absolute;right:0;top:calc(100% + 6px);z-index:30;display:grid;min-width:190px;padding:6px;border:1px solid var(--line);border-radius:12px;background:var(--panel);box-shadow:var(--shadow)}
.entity-action-popover button{display:block;width:100%;min-height:42px;padding:9px 11px;border:0;border-radius:8px;background:transparent;color:var(--text);font:inherit;font-size:.8rem;font-weight:700;line-height:1.3;text-align:left;appearance:none}
.entity-action-popover button:hover,.entity-action-popover button:focus-visible{background:var(--card2);outline:none}
.entity-action-popover button.danger{color:var(--danger)}

@media(max-width:760px){
  .studio-directory-panel{padding:14px}
  .studio-admin-list{gap:12px}
  .studio-admin-row{grid-template-columns:minmax(0,1fr) 40px;gap:10px;padding:13px}
  .studio-admin-title{align-items:flex-start;gap:7px}
  .studio-admin-title>.status{font-size:.58rem}
  .studio-admin-stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}
  .studio-admin-stats span{padding:7px 8px}
  .studio-admin-meta{grid-template-columns:1fr}
  .artist-admin-row{grid-template-columns:38px minmax(0,1fr) 40px;gap:10px;padding:11px}
  .artist-admin-row .avatar{width:38px;height:38px}
  .artist-admin-name>.status{font-size:.56rem}
  .artist-admin-email{font-size:.68rem}
  .entity-action-popover{min-width:min(210px,calc(100vw - 42px))}
}


/* Empty AI chat onboarding: localized tips that rotate only until the user starts. */
.chat-onboarding-tip{display:grid;gap:5px;max-width:min(560px,90%);transition:opacity .18s ease,transform .18s ease}
.chat-onboarding-tip.is-changing{opacity:0;transform:translateY(4px)}
.chat-tip-kicker{color:var(--accent);font-size:.62rem;font-weight:800;letter-spacing:.16em;text-transform:uppercase}
.chat-tip-text{display:block;color:var(--text)}
@media(prefers-reduced-motion:reduce){.chat-onboarding-tip{transition:none}.chat-onboarding-tip.is-changing{transform:none}}

/* Session ink traceability — reuses registered studio ink, no parallel inventory model. */
.session-ink-panel{display:grid;gap:10px;padding:14px;border:1px solid var(--line);border-radius:14px;background:color-mix(in srgb,var(--card2) 78%,transparent)}
.session-ink-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.session-ink-head h4{margin:2px 0 0;font-size:1rem}
.session-ink-used{display:flex;flex-wrap:wrap;gap:7px}
.session-ink-chip{display:inline-flex;align-items:center;gap:7px;max-width:100%;padding:6px 8px;border:1px solid var(--line-soft);border-radius:999px;background:var(--card);font-size:.72rem}
.session-ink-chip>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.session-ink-chip button{border:0;background:transparent;color:var(--muted);cursor:pointer;font-size:1rem;line-height:1;padding:0 2px}
.session-ink-chip button:hover,.session-ink-chip button:focus-visible{color:var(--danger);outline:none}
.session-ink-picker{display:grid;gap:8px}
.session-ink-picker input{width:100%}
.session-ink-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;max-height:220px;overflow:auto}
.session-ink-option{display:grid;gap:2px;min-width:0;padding:9px 10px;border:1px solid var(--line-soft);border-radius:10px;background:var(--card);color:var(--text);text-align:left;cursor:pointer}
.session-ink-option:hover,.session-ink-option:focus-visible{border-color:var(--accent);outline:none}
.session-ink-option strong,.session-ink-option small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.session-ink-option small{color:var(--muted);font-size:.67rem}
.session-ink-empty{grid-column:1/-1;padding:8px 2px}
@media(max-width:760px){.session-ink-options{grid-template-columns:1fr}}
.nav-badge{margin-left:auto;min-width:18px;height:18px;padding:0 5px;border-radius:999px;background:var(--danger);color:#fff;font-size:.62rem;font-weight:800;display:inline-flex;align-items:center;justify-content:center;line-height:1}
.side-nav button .nav-badge[hidden]{display:none}
.sc-panel{display:grid;gap:12px;max-width:820px}
.sc-toolbar{display:flex;align-items:end;justify-content:space-between;gap:14px;flex-wrap:wrap}
.sc-recipient-label{min-width:min(100%,320px)}
.sc-recipient-label select{margin-top:4px}
.sc-messages{display:flex;flex-direction:column;gap:10px;min-height:260px;max-height:58vh;overflow-y:auto;padding:14px;border:1px solid var(--line);border-radius:16px;background:var(--card2)}
.sc-msg{max-width:88%;padding:10px 12px;border:1px solid var(--line-soft);border-radius:14px;background:var(--card);overflow-wrap:anywhere}
.sc-msg.mine{align-self:flex-end;border-color:color-mix(in srgb,var(--accent) 45%,var(--line))}
.sc-meta{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;margin-bottom:4px;font-size:.72rem;color:var(--muted)}
.sc-meta strong{color:var(--text)}
.sc-body{white-space:pre-wrap;font-size:.92rem;line-height:1.45}
.sc-attachment{display:block;width:min(100%,520px);margin-top:8px;padding:0;border-radius:14px;border:1px solid var(--line-soft);overflow:hidden;background:var(--card2);cursor:zoom-in}
.sc-attachment img{display:block;width:100%;height:auto;max-height:520px;object-fit:contain}
.sc-attachment-preview{display:flex;align-items:center;gap:12px;padding:10px 12px;border:1px solid var(--line);border-radius:14px;background:var(--card2)}
.sc-attachment-preview-image{flex:none;width:104px;height:104px;padding:0;border:0;border-radius:11px;background:transparent;overflow:hidden;cursor:zoom-in}.sc-attachment-preview-image img{display:block;width:100%;height:100%;object-fit:cover;border-radius:11px;border:1px solid var(--line-soft)}
.sc-media-viewer[hidden]{display:none}
.sc-media-viewer{position:fixed;inset:0;z-index:10000;display:flex;align-items:center;justify-content:center;padding:max(18px,env(safe-area-inset-top)) 18px max(18px,env(safe-area-inset-bottom));background:rgba(0,0,0,.94);touch-action:pinch-zoom}
.sc-media-viewer img{display:block;max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;user-select:none;-webkit-user-drag:none}
.sc-media-close{position:absolute;top:max(14px,env(safe-area-inset-top));right:14px;z-index:1;width:46px;height:46px;border:1px solid rgba(255,255,255,.28);border-radius:999px;background:rgba(20,20,20,.72);color:#fff;font-size:30px;line-height:1;cursor:pointer}
body.sc-media-open{overflow:hidden}
.sc-ref-chip{display:inline-block;max-width:100%;margin-top:6px;padding:4px 10px;border:1px solid var(--line);border-radius:999px;background:transparent;color:var(--accent);font-size:.74rem;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:pointer}
.sc-ref-chip:disabled{color:var(--muted);cursor:default}
.sc-ref{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.sc-ref>.sc-ref-chip{padding:8px 13px;font-size:.9rem;font-weight:650}
.sc-form{display:flex;gap:10px;align-items:flex-end}
.sc-form textarea{flex:1;min-width:0;resize:vertical;min-height:44px;padding:10px 12px;border:1px solid var(--line);border-radius:12px;background:var(--card2);color:var(--text);font:inherit}
.sc-attach-btn{flex:none;min-width:44px;padding:0 12px;font-size:1.25rem}
.sc-empty{margin:auto}
@media(max-width:760px){.sc-msg{max-width:96%}.sc-form{display:grid;grid-template-columns:auto 1fr}.sc-form textarea{grid-column:1/-1}.sc-form .btn.gold{grid-column:1/-1}.sc-toolbar{align-items:stretch}.sc-recipient-label{width:100%}}
.wl-list{display:grid;gap:8px;max-width:820px;margin-bottom:8px}
.wl-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 14px;border:1px solid var(--line-soft);border-radius:14px;background:var(--card)}
.wl-row>div{display:grid;gap:2px;min-width:0}
.wl-row small{overflow-wrap:anywhere}
.wl-days{border:1px solid var(--line-soft);border-radius:12px;padding:8px 12px}
.wl-days legend{font-size:.78rem;color:var(--muted);padding:0 6px}
.wl-days #wlWeekdays{display:flex;flex-wrap:wrap;gap:6px 14px}
.pj-row{display:grid;gap:2px;width:100%;text-align:left;padding:10px 12px;margin-bottom:6px;border:1px solid var(--line-soft);border-radius:12px;background:var(--card);color:var(--text);cursor:pointer}
.pj-row:hover,.pj-row:focus-visible{border-color:var(--accent);outline:none}
.pj-attach,.pj-upload{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:8px}
.pj-attach select,.pj-upload select,#pjStatus{min-height:40px;padding:6px 10px;border:1px solid var(--line);border-radius:10px;background:var(--card2);color:var(--text)}
.pj-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:10px}
.pj-fig{margin:0;display:grid;gap:4px;font-size:.7rem;color:var(--muted)}
.pj-fig img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:10px;border:1px solid var(--line-soft);background:var(--card2)}
.customer-media-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px;margin-top:8px}.customer-media-card{margin:0;display:grid;gap:5px;padding:8px;border:1px solid var(--line-soft);border-radius:12px;background:var(--card2)}.customer-media-card img{display:block;width:100%;aspect-ratio:1;object-fit:cover;border-radius:9px}.customer-media-card figcaption{display:grid;gap:2px;font-size:.72rem;color:var(--muted)}.customer-media-card figcaption strong{color:var(--text);font-size:.76rem}.customer-media-upload{margin-top:10px;padding-top:10px;border-top:1px solid var(--line-soft)}
.pj-timeline{margin:0;padding-left:18px;display:grid;gap:2px}
.daily-overview{margin-bottom:18px}
.do-body{display:grid;gap:6px;margin-top:8px}
.do-list{margin:0;padding-left:18px;display:grid;gap:3px;font-size:.88rem}
.pay-panel{display:grid;gap:6px;margin-top:6px}
.pay-row{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;font-size:.86rem}
.pay-row.voided{opacity:.55;text-decoration:line-through}
.pay-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:8px}
.pay-form input,.pay-form select{min-height:40px;padding:6px 10px;border:1px solid var(--line);border-radius:10px;background:var(--card2);color:var(--text)}
.fu-thumb{width:72px;height:72px;object-fit:cover;border-radius:8px;border:1px solid var(--line-soft)}
.an-filters{display:flex;flex-wrap:wrap;gap:10px 14px;align-items:flex-end;margin-bottom:14px}
.an-filters label{display:grid;gap:4px;font-size:.78rem;color:var(--muted)}
.an-filters input,.an-filters select{min-height:40px;padding:6px 10px;border:1px solid var(--line);border-radius:10px;background:var(--card2);color:var(--text)}
.an-body{display:grid;gap:14px}
.an-bars{display:grid;gap:6px}
.an-bar{display:grid;grid-template-columns:minmax(80px,120px) 1fr auto;gap:10px;align-items:center;font-size:.8rem}
.an-bar-track{height:10px;border-radius:999px;background:var(--card2);overflow:hidden}
.an-bar-track i{display:block;height:100%;background:var(--accent);border-radius:999px}
.an-bar-value{color:var(--muted);white-space:nowrap}
.an-table-wrap{overflow-x:auto}
.an-table{width:100%;border-collapse:collapse;font-size:.85rem}
.an-table th,.an-table td{padding:8px 10px;border-bottom:1px solid var(--line-soft);text-align:left;white-space:nowrap}
.an-table th{color:var(--muted);font-weight:600}
@media(max-width:760px){.an-bar{grid-template-columns:80px 1fr}.an-bar-value{grid-column:1/-1}}

/* Inventory */
.inv-qty{white-space:nowrap;text-align:right;display:grid;justify-items:end;gap:2px}
.inv-category-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.inv-category-card{display:grid;gap:3px;text-align:left;padding:12px;border:1px solid var(--line-soft);border-radius:12px;background:var(--card2);color:var(--text);cursor:pointer}.inv-category-card strong{font-size:.88rem}.inv-category-card small{font-size:.68rem;color:var(--muted);line-height:1.25}.inv-category-card.active{border-color:var(--accent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 45%,transparent);background:color-mix(in srgb,var(--accent) 8%,var(--card2))}.inv-section-title{margin-top:5px;padding-top:10px;border-top:1px solid var(--line-soft);font-size:.68rem;font-weight:800;letter-spacing:.15em;text-transform:uppercase;color:var(--muted)}.inv-code-preview{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:color-mix(in srgb,var(--accent) 7%,var(--card2))}.inv-code-preview span{font-size:.72rem;color:var(--muted)}.inv-code-preview strong{font-size:1.25rem;letter-spacing:.04em}.is-inactive{opacity:.6}
.chip.warn{background:color-mix(in srgb,var(--warn,#d9a441) 25%,transparent);color:var(--warn,#d9a441)}
@media(max-width:520px){.inv-category-grid{grid-template-columns:1fr 1fr}.inv-category-card{padding:10px}.inv-category-card small{font-size:.64rem}.inv-code-preview{position:sticky;top:-16px;z-index:2}}
.customer-artist-tag{margin-top:8px;font-size:.78rem;color:var(--muted)}
/* Studio calendar scope, artist colors, booking types and customer data. */
.calendar-scope-toolbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:0 0 12px}
.calendar-scope-switch{display:inline-flex;padding:3px;border:1px solid var(--line);border-radius:12px;background:var(--card2)}
.calendar-scope-btn{min-height:36px;padding:7px 12px;border:0;border-radius:9px;background:transparent;color:var(--muted);font:inherit;font-size:.78rem;font-weight:750;cursor:pointer}
.calendar-scope-btn.active{background:var(--accent);color:var(--bg)}
.calendar-artist-filters{display:flex;gap:7px;min-width:0;overflow-x:auto;padding:2px 1px;scrollbar-width:thin}
.artist-filter-chip{display:inline-flex;align-items:center;gap:7px;flex:none;min-height:34px;padding:6px 10px;border:1px solid var(--line-soft);border-radius:999px;background:var(--card2);color:var(--muted);font:inherit;font-size:.72rem;cursor:pointer}
.artist-filter-chip i{width:10px;height:10px;border-radius:50%;background:var(--artist-color,var(--muted));box-shadow:0 0 0 2px color-mix(in srgb,var(--artist-color,var(--muted)) 25%,transparent)}
.artist-filter-chip.active{border-color:color-mix(in srgb,var(--artist-color,var(--accent)) 55%,var(--line));color:var(--text)}
.cal-booking--studio{border-left:4px solid var(--artist-color)!important;background:color-mix(in srgb,var(--artist-color) 18%,var(--card2))!important}
.cal-artist-label{display:block;font-size:.6rem;font-weight:850;letter-spacing:.06em;text-transform:uppercase;color:var(--artist-color);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cal-block--studio{border-left:3px solid var(--artist-color)!important}
.calendar-color-dots,.year-color-dots{display:flex;gap:2px;position:absolute;left:4px;bottom:4px}
.calendar-color-dots i,.year-color-dots i{display:block;width:5px;height:5px;border-radius:50%;background:var(--dot-color)}
.year-color-dots{left:50%;bottom:1px;transform:translateX(-50%)}
.color-setting-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.color-setting-row input[type=color]{width:54px;height:42px;padding:3px;border:1px solid var(--line);border-radius:10px;background:var(--card2)}
.booking-type-form{display:grid;grid-template-columns:minmax(160px,2fr) 90px 120px 100px auto;gap:8px;align-items:end;margin:12px 0}
.booking-type-form label{display:grid;gap:4px;font-size:.72rem;color:var(--muted)}.booking-type-form input{min-height:40px}
.booking-types-list{display:grid;gap:7px}.booking-type-row{display:grid;grid-template-columns:14px minmax(0,1fr) auto;gap:10px;align-items:center;padding:10px 12px;border:1px solid var(--line-soft);border-radius:11px;background:var(--card2)}
.booking-type-row>div{display:grid;gap:2px}.booking-type-row small{color:var(--muted);font-size:.68rem}.booking-type-swatch{width:12px;height:36px;border-radius:999px;background:var(--type-color)}
.booking-type-actions{display:flex!important;gap:8px;align-items:center}.customer-data-details{margin-top:10px;padding:10px 12px;border:1px solid var(--line-soft);border-radius:11px;background:var(--card2)}
.customer-data-details>summary{cursor:pointer;font-weight:750;font-size:.78rem;color:var(--accent)}.data-history-list{display:grid;gap:5px;margin-top:9px}.data-history-row{display:flex;justify-content:space-between;gap:12px;font-size:.76rem}.data-history-row small{color:var(--muted);text-align:right}
@media(max-width:760px){.calendar-scope-toolbar{align-items:stretch}.calendar-scope-switch{width:100%}.calendar-scope-btn{flex:1}.calendar-artist-filters{width:100%}.booking-type-form{grid-template-columns:1fr 1fr}.booking-type-form>label:first-of-type,.booking-type-form>button{grid-column:1/-1}.data-history-row{display:grid;gap:2px}.data-history-row small{text-align:left}}

.booking-customer-picker{position:relative}
.booking-customer-suggestions[hidden]{display:none}
.booking-customer-suggestions{position:absolute;z-index:40;top:calc(100% + 6px);left:0;right:0;display:grid;max-height:250px;overflow-y:auto;padding:5px;border:1px solid var(--line);border-radius:12px;background:var(--card);box-shadow:0 16px 38px rgba(0,0,0,.38)}
.booking-customer-suggestion{display:grid;gap:3px;width:100%;padding:11px 12px;border:0;border-radius:9px;background:transparent;color:var(--text);font:inherit;text-align:left;cursor:pointer}
.booking-customer-suggestion:hover,.booking-customer-suggestion:focus-visible{background:color-mix(in srgb,var(--accent) 12%,var(--card2));outline:none}
.booking-customer-suggestion strong{font-size:.92rem}
.booking-customer-suggestion small{color:var(--muted);font-size:.72rem;overflow-wrap:anywhere}
