/* NailPilot V9 — canonical base primitives. */
:root{
  color-scheme:light;
  --np-canvas:#f6f3f1;--np-surface:#fffdfb;--np-surface-2:#f3edef;--np-material:rgba(255,253,251,.88);
  --np-text:#211a1f;--np-text-2:#6f666c;--np-text-3:#91868d;--np-line:rgba(66,43,55,.12);--np-line-2:rgba(66,43,55,.22);
  --np-accent:#7a3f70;--np-accent-hover:#68345f;--np-accent-soft:#f1e7ef;
  --np-green:#4d7956;--np-green-soft:#edf5ef;--np-amber:#9a6934;--np-amber-soft:#f8f0e5;--np-red:#a14b58;--np-red-soft:#faebed;--np-blue:#526f8d;--np-blue-soft:#eaf0f5;
  --np-r-control:16px;--np-r-card:22px;--np-r-sheet:30px;--np-control:44px;--np-gutter:clamp(16px,3vw,40px);--np-max:1280px;
  --np-shadow-float:0 18px 55px rgba(52,34,44,.12);--np-shadow-sheet:0 28px 80px rgba(38,24,32,.22);
}
*{box-sizing:border-box}html{min-width:320px;background:var(--np-canvas);font:100%/1.5 system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;text-size-adjust:100%;scroll-behavior:smooth}body{margin:0;background:var(--np-canvas);color:var(--np-text);font-synthesis:none;-webkit-font-smoothing:antialiased}body.modal-open{overflow:hidden}button,input,select,textarea{font:inherit}button,a,summary{-webkit-tap-highlight-color:transparent}button{color:inherit}a{color:inherit;text-decoration:none}h1,h2,h3,p{margin:0}small{font-size:.78rem;line-height:1.4}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--np-accent);outline-offset:3px}.np-skip{position:fixed;z-index:1000;top:12px;left:12px;padding:11px 16px;border-radius:14px;background:var(--np-text);color:white;transform:translateY(-160%)}.np-skip:focus{transform:none}.np-pressed{filter:brightness(.96) saturate(.96)!important;scale:.982!important;transition:scale 70ms ease-out,filter 70ms ease-out!important}.np-stage{min-width:0}.np-content{width:min(100%,calc(var(--np-max) + 2 * var(--np-gutter)));margin:auto;padding:0 var(--np-gutter) 56px}.muted,.np-quiet{color:var(--np-text-2)}

/* Common controls used by the domain engine. */
.btn,.text-btn,.text-action,.icon-btn,.quiet-icon,.profile-chip,.np-primary-button,.np-secondary-button,.np-link-button,.np-icon-button{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:var(--np-control);padding:10px 16px;border:1px solid transparent;border-radius:var(--np-r-control);background:transparent;font-weight:700;line-height:1;cursor:pointer}.btn.primary,.np-primary-button{background:var(--np-accent);color:white}.btn.primary:hover,.np-primary-button:hover{background:var(--np-accent-hover)}.btn.outline,.btn.soft,.np-secondary-button{border-color:var(--np-line-2);background:var(--np-surface);color:var(--np-text)}.btn.danger{border-color:#e9c9ce;background:var(--np-red-soft);color:var(--np-red)}.text-btn,.text-action,.np-link-button{padding-inline:5px;color:var(--np-accent)}.icon-btn,.quiet-icon,.profile-chip,.np-icon-button{width:var(--np-control);padding:0;border-color:var(--np-line);background:var(--np-surface)}button:disabled,.btn:disabled{opacity:.45;cursor:not-allowed}.actions,.np-row-actions{display:flex;align-items:center;flex-wrap:wrap;gap:9px}.full-button{width:100%}

/* Forms. */
.form,.np-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.field,.form>label,.np-form-grid>label{display:grid;align-content:start;gap:6px}.field.full,.form>.full,.np-form-grid>.full{grid-column:1/-1}.field>span,.form label>span,.np-form-grid label>span{color:var(--np-text-2);font-size:12px;font-weight:650}.form input,.form select,.form textarea,.field input,.field select,.field textarea,.np-form-grid input,.np-form-grid select,.np-form-grid textarea{width:100%;min-height:44px;padding:10px 12px;border:1px solid var(--np-line-2);border-radius:14px;background:var(--np-surface);color:var(--np-text);box-shadow:none}.form textarea,.field textarea{min-height:112px;resize:vertical}.field.check>span,.field>span:has(input[type="checkbox"]){display:flex;align-items:center;gap:9px}.field input[type="checkbox"]{width:20px;min-height:20px}.compact-form{grid-template-columns:repeat(3,minmax(0,1fr))}.modal-actions,.drawer-actions{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:9px;margin-top:18px;padding-top:16px;border-top:1px solid var(--np-line)}.modal-actions>span:first-child{margin-right:auto}.booking-error,.cloud-error{padding:12px;border-radius:14px;background:var(--np-red-soft);color:var(--np-red)}

/* Accessible modal / iPad sheet. */
.modal-backdrop{position:fixed;z-index:100;inset:0;display:grid;place-items:center;padding:20px;background:rgba(28,20,24,.28);backdrop-filter:blur(3px);opacity:0;transition:opacity 160ms ease}.modal-backdrop.is-presented{opacity:1}.modal-backdrop.is-closing{pointer-events:none;opacity:0}.modal{position:relative;width:min(736px,calc(100vw - 32px));max-height:min(88dvh,928px);overflow:auto;padding:20px;border:1px solid rgba(255,255,255,.78);border-radius:var(--np-r-sheet);background:var(--np-material);backdrop-filter:blur(28px) saturate(140%);-webkit-backdrop-filter:blur(28px) saturate(140%);box-shadow:var(--np-shadow-sheet)}.modal-head{position:relative;display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:0 0 16px;border-bottom:1px solid var(--np-line)}.modal-head>div{display:grid}.modal-head small,.eyebrow{color:var(--np-accent);font-weight:700}.modal-head h2{font-size:23px;line-height:1.15;letter-spacing:-.025em}.modal-head p{color:var(--np-text-2);font-size:13px}.modal>.form,.modal form,.modal>div:not(.modal-head):not(.modal-actions):not(.drawer-actions),.modal>section{margin-top:16px}.diagnostic-json{max-height:52vh;overflow:auto;padding:14px;border:1px solid var(--np-line);border-radius:14px;background:#211a1f;color:#fff;font:12px/1.5 ui-monospace,SFMono-Regular,Menlo,monospace;white-space:pre-wrap;word-break:break-word}

/* Appointment and decision panels emitted by app.js. */
.card,.focus,.appointment-panel,.reliability-inline,.smart-stock-hero,.stock-detail-grid,.stock-detail-note,.cloud-panel,.readiness-hero,.container-panel{border:1px solid var(--np-line);border-radius:16px;background:var(--np-surface);box-shadow:none}.card{padding:16px}.focus{display:flex;align-items:center;gap:11px;padding:12px;margin:7px 0}.focus .icon{display:grid;place-items:center;flex:0 0 auto;width:32px;height:32px;border-radius:10px;background:var(--np-accent-soft);color:var(--np-accent)}.focus>div:nth-child(2){display:grid;flex:1}.focus small{color:var(--np-text-2)}.focus.warning{border-color:#ead4b7;background:var(--np-amber-soft)}.focus.danger,.focus.critical{border-color:#eccbd0;background:var(--np-red-soft)}.focus.good{border-color:#cee0c9;background:var(--np-green-soft)}.appointment-modal-grid,.stock-detail-grid,.diagnostic-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.appointment-panel{padding:16px}.appointment-panel h3{margin-bottom:11px}.drawer-row{display:flex;justify-content:space-between;gap:16px;padding:7px 0;border-bottom:1px solid var(--np-line);font-size:13px}.drawer-row span{color:var(--np-text-2)}.drawer-row.emphasis b{color:var(--np-accent)}.prep-checklist{display:grid;gap:6px;padding:0;margin:0;list-style:none}.prep-checklist li{display:flex;justify-content:space-between;gap:16px;padding:6px 0;border-bottom:1px solid var(--np-line)}.preference-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:11px}.preference-chips span,.status-pill,.badge{padding:5px 9px;border-radius:999px;background:var(--np-accent-soft);color:var(--np-accent);font-size:11px;font-weight:700}.appointment-alert{padding:11px;border-left:3px solid var(--np-red);background:var(--np-red-soft);color:var(--np-red)}details{border-top:1px solid var(--np-line)}details summary{padding:12px 0;color:var(--np-accent);font-weight:650;cursor:pointer}.breakdown{display:grid}.breakdown span{display:flex;justify-content:space-between;gap:16px;padding:7px 0;border-bottom:1px solid var(--np-line)}

/* Booking/planning editors. */
.slot-grid{display:flex;flex-wrap:wrap;gap:7px}.slot-btn,.next-slot{min-height:40px;padding:8px 11px;border:1px solid var(--np-line-2);border-radius:12px;background:var(--np-surface);cursor:pointer}.slot-btn.active,.slot-btn:hover,.next-slot:hover{border-color:var(--np-accent);background:var(--np-accent-soft);color:var(--np-accent)}.locked-schedule-row,.drawer-contact{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px;border:1px solid var(--np-line);border-radius:14px;background:var(--np-surface)}.availability-days{display:grid;gap:8px}.availability-day{display:grid;grid-template-columns:minmax(110px,.8fr) 1fr 1fr;gap:10px;align-items:center;padding:10px 0;border-bottom:1px solid var(--np-line)}.availability-day>label{display:flex;align-items:center;gap:8px}.availability-day>div{display:grid;grid-template-columns:1fr auto 1fr;gap:6px;align-items:center}.availability-day small{grid-column:1/-1;color:var(--np-text-2)}.booking-settings-intro{padding:12px;border-radius:14px;background:var(--np-accent-soft);color:var(--np-text-2);font-size:13px}.booking-options{margin-top:16px}

/* Stock and scanner tools. */
.guided-inventory,.container-list,.focus-list{display:grid}.guided-inventory>button,.container-row{display:grid;grid-template-columns:40px minmax(0,1fr) auto;gap:10px;align-items:center;padding:12px 0;border:0;border-bottom:1px solid var(--np-line);background:transparent;text-align:left}.guided-inventory>button>div,.container-row>div{display:grid}.guided-inventory small,.container-row small{color:var(--np-text-2)}.container-panel{padding:14px}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}.smart-stock-hero{display:flex;align-items:center;gap:13px;padding:16px}.stock-detail-grid{padding:16px}.stock-detail-grid>div{display:grid}.stock-detail-grid small{color:var(--np-text-2)}.stock-detail-note{padding:16px}.stock-detail-list{display:grid;gap:0}.stock-detail-list>span{display:flex;justify-content:space-between;gap:12px;padding:9px 0;border-bottom:1px solid var(--np-line);color:var(--np-text-2)}.quick-stock-value{display:grid;justify-items:center;gap:3px;padding:18px}.quick-stock-value strong{font-size:38px;letter-spacing:-.04em}.quick-stock-controls{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.quick-stock-controls button{min-height:48px;border:1px solid var(--np-line);border-radius:14px;background:var(--np-surface);font-weight:750}.scanner-status{padding:11px 12px;border-radius:14px;background:var(--np-accent-soft);color:var(--np-text-2)}.barcode-video{display:block;width:100%;min-height:220px;max-height:42vh;margin-top:12px;border-radius:18px;background:#181418;object-fit:cover}.barcode-manual{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:end}.barcode-manual label{display:grid;gap:5px}.scan-history{display:grid;gap:5px;margin-top:10px}.barcode-card{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px;border:1px solid var(--np-line);border-radius:16px;background:white}.barcode-card>div{display:grid}.barcode-svg{max-width:100%;height:auto}.barcode-actions,.label-count>div{display:flex;flex-wrap:wrap;gap:8px}.label-preview{display:grid;justify-items:center;gap:8px;padding:18px;border:1px dashed var(--np-line-2);border-radius:16px;background:white;text-align:center}

/* Planning surface primitives; V9/planning-v9.css owns the visual layer above them. */
.np-day-agenda{position:relative;min-height:640px;border:1px solid var(--np-line);border-radius:22px;background:var(--np-surface);overflow:hidden}.np-time-slot{position:relative;width:100%;height:52px;display:grid;grid-template-columns:74px 1fr;align-items:start;padding:0;border:0;background:transparent;color:var(--np-text-3);text-align:right;cursor:crosshair}.np-time-slot span{padding:4px 12px 0 0;font-size:11px;transform:translateY(-10px)}.np-time-slot i{display:block;border-top:1px solid var(--np-line)}.np-time-slot:hover i{border-color:var(--np-accent)}.np-event-layer{position:absolute;inset:0 16px 0 77px;pointer-events:none}.np-agenda-event{position:absolute;z-index:2;top:calc((var(--start) - var(--agenda-start)) / var(--agenda-step) * 52px + 3px);height:max(42px,calc(var(--duration) / var(--agenda-step) * 52px - 6px));left:0;width:min(544px,calc(100% - 8px));display:grid;grid-template-columns:1fr auto;grid-template-rows:auto auto auto;align-content:center;gap:0 13px;padding:8px 11px;border:1px solid #d8c6d1;border-left:3px solid var(--np-accent);border-radius:12px;background:#faf4f7;color:var(--np-text);text-align:left;pointer-events:auto;cursor:grab;touch-action:none;user-select:none;will-change:transform,scale,box-shadow}.np-agenda-event .np-event-time{grid-column:1;color:var(--np-accent);font-size:10px;font-weight:700}.np-agenda-event strong{grid-column:1;font-size:13px}.np-agenda-event small{grid-column:1;color:var(--np-text-2);font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.np-agenda-event>i{grid-column:2;grid-row:1/4;align-self:center;color:var(--np-accent);font-size:19px}.np-agenda-event.is-blocked{border-color:var(--np-line-2);border-left-color:var(--np-text-3);background:var(--np-surface-2)}.np-agenda-event.is-static{cursor:pointer;touch-action:manipulation}.np-agenda-event.is-pressed{scale:.985}.np-agenda-event.is-dragging{z-index:10;scale:1.012;opacity:.96;box-shadow:0 16px 40px rgba(53,34,44,.2);cursor:grabbing}.np-agenda-event.is-invalid{border-color:var(--np-red)}.np-drop-ghost{position:absolute;z-index:1;left:0;width:min(544px,calc(100% - 8px));border:2px dashed var(--np-green);border-radius:12px;background:rgba(77,121,86,.08);pointer-events:none}.np-drop-ghost::after{content:attr(data-label);position:absolute;top:4px;right:6px;padding:3px 6px;border-radius:7px;background:var(--np-green);color:white;font-size:10px;font-weight:720}.np-drop-ghost.is-invalid{border-color:var(--np-red);background:rgba(161,75,88,.08)}.np-drop-ghost.is-invalid::after{background:var(--np-red)}.np-now-line{position:absolute;z-index:4;left:66px;right:0;top:calc((var(--minute) - var(--agenda-start)) / var(--agenda-step) * 52px);border-top:2px solid var(--np-red);pointer-events:none}.np-now-line::before{content:"";position:absolute;left:9px;top:-5px;width:9px;height:9px;border-radius:50%;background:var(--np-red)}.np-now-line span{position:absolute;left:-61px;top:-12px;color:var(--np-red);font-size:11px;font-weight:700}.np-week,.np-month{border:1px solid var(--np-line);border-radius:22px;background:var(--np-surface);overflow:hidden}.np-week>header,.np-week-columns{display:grid;grid-template-columns:repeat(7,1fr)}.np-week>header{border-bottom:1px solid var(--np-line);background:var(--np-surface)}.np-week>header button{display:grid;justify-items:center;padding:12px;border:0;border-right:1px solid var(--np-line);background:transparent;cursor:pointer}.np-week>header button small{color:var(--np-text-2);text-transform:capitalize}.np-week>header button strong{font-size:20px}.np-week>header button.is-today strong{display:grid;place-items:center;width:32px;height:32px;border-radius:50%;background:var(--np-accent);color:white}.np-week-columns>section{min-height:544px;padding:8px;border-right:1px solid var(--np-line)}.np-week-event{width:100%;display:grid;gap:2px;margin-bottom:7px;padding:9px;border:1px solid #dccbd5;border-radius:11px;background:#faf4f7;text-align:left;cursor:pointer}.np-week-event time{color:var(--np-accent);font-size:11px;font-weight:730}.np-week-event strong{font-size:12px}.np-week-event small{color:var(--np-text-2);font-size:10px}.np-week-event.is-blocked{border-color:var(--np-line);background:var(--np-surface-2)}.np-week-empty{width:100%;padding:11px;border:1px dashed var(--np-line);border-radius:11px;background:transparent;color:var(--np-text-3);font-size:11px;cursor:pointer}.np-month>header,.np-month>div{display:grid;grid-template-columns:repeat(7,1fr)}.np-month>header{border-bottom:1px solid var(--np-line)}.np-month>header span{padding:10px;color:var(--np-text-3);font-size:11px;font-weight:720;text-align:center;text-transform:uppercase;letter-spacing:.06em}.np-month-day{position:relative;min-height:112px;display:grid;align-content:start;gap:5px;padding:11px;border:0;border-right:1px solid var(--np-line);border-bottom:1px solid var(--np-line);background:transparent;text-align:left;cursor:pointer}.np-month-day:hover{background:var(--np-surface-2)}.np-month-day strong{font-size:14px}.np-month-day>span{color:var(--np-text-2);font-size:11px}.np-month-day.is-outside{opacity:.38}.np-month-day.is-today strong{display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:var(--np-accent);color:white}.np-month-day>i{position:absolute;top:10px;right:10px;color:var(--np-text-3)}

#toast{position:fixed;z-index:200;left:50%;bottom:24px;max-width:min(448px,calc(100vw - 32px));padding:12px 16px;border-radius:999px;background:rgba(32,25,29,.92);color:white;box-shadow:var(--np-shadow-float);opacity:0;transform:translate(-50%,16px);pointer-events:none;transition:opacity 160ms ease,transform 160ms ease}#toast.show{opacity:1;transform:translate(-50%,0)}.splash,.fatal-card{min-height:100dvh;display:grid;place-items:center;align-content:center;gap:11px;padding:32px;text-align:center}.splash .logo,.fatal-card .logo{display:grid;place-items:center;width:64px;height:64px;border-radius:18px;background:var(--np-accent);color:white;font-weight:760}

@media(max-width:820px),(pointer:coarse){.modal-backdrop{place-items:end center;padding:0;background:rgba(28,20,24,calc(.32 * (1 - var(--sheet-progress,0))))}.modal{width:100%;max-height:92dvh;padding:18px;border-width:1px 0 0;border-radius:30px 30px 0 0;padding-bottom:max(18px,env(safe-area-inset-bottom))}.np-sheet-handle{padding-top:19px;touch-action:none}.np-sheet-handle::before{content:"";position:absolute;top:7px;left:50%;width:37px;height:4px;border-radius:99px;background:var(--np-line-2);transform:translateX(-50%)}.availability-day{grid-template-columns:1fr}.form,.np-form-grid{grid-template-columns:1fr}.field.full,.form>.full,.np-form-grid>.full{grid-column:auto}.appointment-modal-grid,.stock-detail-grid,.diagnostic-grid{grid-template-columns:1fr}.barcode-manual{grid-template-columns:1fr}.modal-actions{align-items:stretch;flex-direction:column-reverse}.modal-actions>*{width:100%}}
@media(max-width:620px){.np-event-layer{right:7px;left:62px}.np-time-slot{grid-template-columns:60px 1fr}.np-agenda-event{width:calc(100% - 4px)}.np-now-line{left:52px}.np-now-line span{left:-49px}.quick-stock-controls{grid-template-columns:repeat(2,1fr)}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.modal-backdrop,#toast{transition:none!important}.np-pressed{transition:none!important}}
@media(prefers-contrast:more){.modal,.card,.appointment-panel,.container-panel{border:2px solid #5e4a57;box-shadow:none}}
@supports not (backdrop-filter:blur(1px)){.modal{background:rgba(255,253,251,.98)}}
