/* vice.css — "Vice", the Cannabis Sourcerer scheme (build 990).
   Injected by app/vt_cannabis on the cannabis deployment only, as the LAST
   stylesheet in <head> (after haute.css, clear.css and each page's own
   <style>). The nursery never loads it.

   The look follows the new mark: a sunset-poster palette — deep navy chrome
   (headers, side rails, tab bars, sign-in screens), a pink→orange→gold
   "sunset" gradient for the active state and the few hero buttons, hot pink
   as the one accent, teal for "good", and a cool lavender-grey work area that
   stays light so tables and forms read for a whole shift.

   Contrast: every text/background pair here is ≥ 4.5:1 — ink #15112E on
   white/paper, cream #F6F0FF on navy, white on --clay #D8216F (5.0), muted
   cream #B9B0DC on navy (7.9), accent text #B0175A on white (7.3). */

/* ---- 1. tokens: the light work area, re-tinted ------------------------------------- */
:root, html.vt-cannabis, html.vt-cannabis body, html.vt-cannabis body.haute{
  --vice-navy:#0C0828; --vice-navy-2:#17103F; --vice-navy-3:#231A58; --vice-line-dark:#36297A;
  --vice-pink:#FF2D95; --vice-orange:#FF6A3D; --vice-gold:#FFB347; --vice-teal:#1FB6B0;
  --vice-cream:#F6F0FF; --vice-muted:#B9B0DC;
  --vice-sunset:linear-gradient(135deg,#FF2D95 0%,#FF6A3D 58%,#FFB347 100%);
  --vice-glow:radial-gradient(90% 60% at 50% -20%, rgba(255,45,149,.45), transparent 60%),
              radial-gradient(70% 50% at 100% 110%, rgba(31,182,176,.35), transparent 60%);

  --cream:#DAD7E8; --cream-alt:#CDC9DF;             /* background   */
  --paper:#F2F0F8; --bone:#ECE9F4;                  /* middle ground */
  --surface:#FFFFFF;                                /* foreground    */
  --ink:#15112E; --soil:#4D4870; --night-text:#F6F0FF;
  --line:#CBC6E0; --sage:#ABA5C9; --espresso:#17103F; --bark:#17103F;
  --clay:#D8216F; --clay-deep:#B0175A; --clay-soft:#FDE4EF; --accent-text:#B0175A; --on-accent:#FFFFFF;
  --gold:#E08A1E; --gold-soft:#FFF1DC; --warn-text:#8A4B00;
  --moss:#168F8A; --moss-deep:#117068; --moss-soft:#D9F4F2; --leaf:#168F8A; --leaf-d:#117068;
  --po-bg:#F2F0F8; --po-bg-alt:#FFFFFF;
  --lift:0 3px 12px rgba(21,17,46,.14), 0 1px 2px rgba(21,17,46,.10);
}
html.vt-cannabis body, html.vt-cannabis body.haute{background:var(--cream)}

/* focus rings and the odd hard-coded clay alpha */
html.vt-cannabis body.haute input:focus, html.vt-cannabis body.haute select:focus, html.vt-cannabis body.haute textarea:focus,
html.vt-cannabis body.haute .tt-f input:focus, html.vt-cannabis body.haute .tt-f select:focus, html.vt-cannabis body.haute .tt-f textarea:focus{
  border-color:var(--clay); box-shadow:0 0 0 3px rgba(216,33,111,.18)}
html.vt-cannabis .navitem.needs-attention{background:rgba(216,33,111,.14)}
html.vt-cannabis .navbell:hover, html.vt-cannabis .navgear:hover{background:rgba(255,255,255,.10)}

/* ---- 2. the side rail / top header (dispensary console, cultivator portal) ----------- */
html.vt-cannabis body.haute > header, html.vt-cannabis body.haute header.sidebar, html.vt-cannabis body.haute .app > header,
html.vt-cannabis.rail-on body.haute > header, html.vt-cannabis.rail-on header, html.vt-cannabis.rail-on.rail-compact header{
  background:var(--vice-sunset) top / 100% 4px no-repeat, var(--vice-navy) !important;
  color:var(--vice-cream); border-right:1px solid var(--vice-line-dark); border-bottom-color:var(--vice-line-dark);
  box-shadow:4px 0 24px rgba(12,8,40,.35)}
html.vt-cannabis header .tag, html.vt-cannabis header .brandmark, html.vt-cannabis header .brandmark .b1, html.vt-cannabis header .brandmark .b2{color:var(--vice-cream)}
html.vt-cannabis header .railtools, html.vt-cannabis header .authbox, html.vt-cannabis header .help-menu, html.vt-cannabis header .headstatbig{border-color:var(--vice-line-dark)}
html.vt-cannabis header .authbox, html.vt-cannabis header .authbox *{color:var(--vice-muted)}
html.vt-cannabis header .authbox b, html.vt-cannabis header .authbox strong{color:var(--vice-cream)}
html.vt-cannabis header .help-menu{background:var(--vice-navy-2); color:var(--vice-cream)}
html.vt-cannabis header .headstatbig{background:var(--vice-navy-2); color:var(--vice-cream)}
html.vt-cannabis header .headstatbig *{color:var(--vice-cream)}
html.vt-cannabis body.haute header .navitem, html.vt-cannabis body.haute header .navitem:not(.active){color:var(--vice-cream); background:transparent}
html.vt-cannabis body.haute header .navitem:not(.active):hover{background:rgba(255,255,255,.09); color:#FFFFFF}
html.vt-cannabis body.haute header .navitem.active, html.vt-cannabis .mainnav .navitem.active{
  background:var(--vice-sunset); color:#1A0B2E; font-weight:700; box-shadow:0 4px 14px rgba(255,45,149,.35)}
html.vt-cannabis .mainnav .navitem.active .reviewcount{background:#1A0B2E; color:var(--vice-cream)}
html.vt-cannabis .mainnav .navitem .reviewcount{background:var(--vice-pink); color:#1A0B2E}
html.vt-cannabis .navico-accent{stroke:var(--vice-gold)}
/* 990b: the "Cultivator portal" / "Dispensary console" switch link reads light on the navy */
html.vt-cannabis .mainnav .navitem-switch, html.vt-cannabis .navitem-switch{border:1.5px dashed rgba(255,255,255,.45); color:#FFFFFF !important; background:rgba(255,255,255,.06)}
html.vt-cannabis .mainnav .navitem-switch:hover{background:rgba(255,255,255,.14); color:#FFFFFF !important}
html.vt-cannabis .navitem-switch svg, html.vt-cannabis .navitem-switch .navico{stroke:var(--vice-gold); color:var(--vice-gold)}
/* 990b: the workspace / log-out buttons at the foot of the rail: boxed, light, dark lettering */
html.vt-cannabis header .authbox .authbtn, html.vt-cannabis header .authbox button{
  background:#F2F0F8; color:#15112E !important; border:1.5px solid #FFFFFF; border-radius:10px; font-weight:800; letter-spacing:.04em;
  box-shadow:0 2px 0 rgba(0,0,0,.35), inset 0 0 0 1px rgba(21,17,46,.25)}
html.vt-cannabis header .authbox .authbtn:hover, html.vt-cannabis header .authbox button:hover{background:#FFFFFF !important; color:var(--clay-deep) !important; border-color:#FFFFFF !important}
html.vt-cannabis header .authbox .authbtn *, html.vt-cannabis header .authbox button *{color:inherit !important}
html.vt-cannabis .navbell, html.vt-cannabis .navgear, html.vt-cannabis .navbell svg, html.vt-cannabis .navgear svg{color:var(--vice-cream); stroke:var(--vice-cream)}
html.vt-cannabis .navtoggle{background:var(--vice-navy-2); color:var(--vice-cream); border-color:var(--vice-line-dark)}
html.vt-cannabis.nav-open .mainnav{background:var(--vice-navy)}
/* the rail logo: the mark is transparent and sits straight on the navy */
html.vt-cannabis .brandrow img.brandlogo-h{filter:drop-shadow(0 6px 16px rgba(255,45,149,.25))}

/* ---- 3. dark bands and table heads: navy, with the sunset as a hairline ------------- */
html.vt-cannabis body.haute .dashboard, html.vt-cannabis body.haute #dashboard{
  background:var(--vice-glow), var(--vice-navy); color:var(--night-text); border-bottom:3px solid transparent;
  border-image:var(--vice-sunset) 1}
html.vt-cannabis .rowline.rowhead, html.vt-cannabis .crowline.crowhead, html.vt-cannabis table.rows th, html.vt-cannabis .esp-thead th,
html.vt-cannabis .cart-head, html.vt-cannabis .vendorbar, html.vt-cannabis .setup-dock, html.vt-cannabis .band-dark, html.vt-cannabis .esp-band,
html.vt-cannabis .vendordd-btn{background:var(--vice-navy-2); color:var(--vice-cream)}
html.vt-cannabis .pseg button.on, html.vt-cannabis .ordtab.on, html.vt-cannabis .resv-tab.on, html.vt-cannabis .langbtn.on{
  background:var(--vice-navy-2); color:var(--vice-cream)}
html.vt-cannabis body.haute .fulfill-tabs{background:var(--vice-navy-2); border-bottom-color:var(--vice-line-dark)}
html.vt-cannabis body.haute .ff-tab{background:var(--vice-navy-3); color:var(--vice-cream); border-color:var(--vice-line-dark)}
html.vt-cannabis body.haute .ff-tab:hover, html.vt-cannabis body.haute .ff-tab.on{background:var(--vice-sunset); color:#1A0B2E; border-color:transparent}
html.vt-cannabis .buyer-tab.on, html.vt-cannabis .viewbtn[aria-pressed="true"]{background:var(--clay); color:#FFFFFF}

/* ---- 4. buttons: hot pink, white text; the hover goes deeper, never lighter ---------- */
html.vt-cannabis body.haute button:hover:not(:disabled):not(.pipe-nudge):not(.cartclose):not(.cartdetach):not(.ff-step):not(.ff-orderrow):not(.pipe-whoLine):not(.tt-big):not(.hf-stage),
html.vt-cannabis body.haute a.pipe-ghost:hover, html.vt-cannabis body.haute .catchip:hover, html.vt-cannabis body.haute .pseg button:hover{
  background:var(--clay-deep) !important; color:#FFFFFF !important; border-color:var(--clay-deep) !important}
html.vt-cannabis .wssave, html.vt-cannabis .exportbtn, html.vt-cannabis button.go, html.vt-cannabis .btn-primary, html.vt-cannabis .install-cta,
html.vt-cannabis #go, html.vt-cannabis .at-btn.primary, html.vt-cannabis .fleet-save{background:var(--clay); color:#FFFFFF; border-color:var(--clay-deep)}
html.vt-cannabis .ghost, html.vt-cannabis button.ghost{background:var(--paper); color:var(--accent-text); border-color:var(--sage)}
html.vt-cannabis .ptab.owned{background:var(--moss); color:#FFFFFF} html.vt-cannabis .ptab.owned.current{outline-color:var(--moss-deep)}
html.vt-cannabis .sp-tag.owned, html.vt-cannabis .qb-badge.on{background:var(--moss-soft); color:var(--moss-deep)}

/* ---- 5. sign-in screens: the poster, full bleed ----------------------------------------- */
/* pages tagged <body data-vt="auth">: login, portal sign-in, forgot/reset password, accept invite */
html.vt-cannabis body[data-vt="auth"]{background:var(--vice-glow), var(--vice-navy); color:var(--vice-cream)}
html.vt-cannabis body[data-vt="auth"] .card, html.vt-cannabis body[data-vt="auth"] main.card{
  background:#FFFFFF; color:var(--ink); border:1px solid rgba(255,255,255,.12); box-shadow:0 24px 60px rgba(0,0,0,.45), 0 0 0 1px rgba(255,45,149,.25)}
/* text that sits on the navy, outside the card (a brand head, a footer line) */
html.vt-cannabis body[data-vt="auth"] > :not(.card):not(main):not(script):not(style), html.vt-cannabis body[data-vt="auth"] .brandhead .name{color:var(--vice-muted)}
html.vt-cannabis body[data-vt="auth"] .brandhead .name span{color:var(--vice-gold)}
html.vt-cannabis body[data-vt="auth"] .brandlock img, html.vt-cannabis body[data-vt="auth"] .brand img, html.vt-cannabis body[data-vt="auth"] .brandhead img{
  filter:drop-shadow(0 12px 30px rgba(255,45,149,.35))}
html.vt-cannabis body[data-vt="auth"] .card a, html.vt-cannabis body[data-vt="auth"] main.card a{color:var(--accent-text)}
html.vt-cannabis body[data-vt="auth"] .card button, html.vt-cannabis body[data-vt="auth"] main.card .btn, html.vt-cannabis body[data-vt="auth"] #go{text-align:center; text-align:center; 
  background:var(--vice-sunset); color:#1A0B2E; font-weight:800; border:none; letter-spacing:.02em; box-shadow:0 8px 22px rgba(255,45,149,.35)}
html.vt-cannabis body[data-vt="auth"] .card button:hover, html.vt-cannabis body[data-vt="auth"] #go:hover{filter:brightness(1.06); background:var(--vice-sunset) !important; color:#1A0B2E !important}

/* the Field App's sign-in (no card: the form sits on the poster) */
html.vt-cannabis #authView.auth{background:var(--vice-glow), var(--vice-navy); color:var(--vice-cream)}
html.vt-cannabis .auth .mark h1{color:var(--vice-cream)} html.vt-cannabis .auth .mark h1 i{color:var(--vice-gold)}
html.vt-cannabis .auth .mark p, html.vt-cannabis .auth .field label, html.vt-cannabis .auth .authswitch, html.vt-cannabis .auth .hint, html.vt-cannabis .auth p{color:var(--vice-muted)}
html.vt-cannabis .auth .authswitch a, html.vt-cannabis .auth .btn.ghost{color:#FFB3D6}
html.vt-cannabis .auth .field input, html.vt-cannabis .auth .field select{background:#FFFFFF; border-color:transparent; color:var(--ink)}
html.vt-cannabis .auth .langtoggle{border-color:var(--vice-line-dark)} html.vt-cannabis .auth .langbtn{background:var(--vice-navy-2); color:var(--vice-muted)}
html.vt-cannabis .auth .langbtn.on{background:var(--vice-sunset); color:#1A0B2E}
html.vt-cannabis .auth .mark .leaf{filter:drop-shadow(0 0 18px rgba(31,182,176,.6))}

/* ---- 6. the Field App chrome ----------------------------------------------------------- */
html.vt-cannabis .topbar{background:var(--vice-sunset) top / 100% 3px no-repeat, var(--vice-navy); color:var(--vice-cream); border-bottom:1px solid var(--vice-line-dark)}
html.vt-cannabis .topbar .who, html.vt-cannabis .topbar .logo, html.vt-cannabis .topbar .who *{color:var(--vice-cream)}
html.vt-cannabis .topbar .iconbtn{background:var(--vice-navy-2); color:var(--vice-cream); border-color:var(--vice-line-dark)}
html.vt-cannabis .topbar .langbtn{background:var(--vice-navy-2); color:var(--vice-muted)} html.vt-cannabis .topbar .langbtn.on{background:var(--vice-sunset); color:#1A0B2E}
html.vt-cannabis .topbar .langtoggle{border-color:var(--vice-line-dark)}
html.vt-cannabis #app .tabs, html.vt-cannabis body > .tabs{background:var(--vice-navy); border-top:1px solid var(--vice-line-dark)}
html.vt-cannabis #app .tabs button{color:var(--vice-muted); background:transparent}
html.vt-cannabis #app .tabs button.on{color:#FFFFFF !important; background:transparent !important; border-color:transparent; box-shadow:inset 0 3px 0 var(--vice-pink)}
html.vt-cannabis #app .tabs button.has-new::after{background:var(--vice-gold); box-shadow:0 0 0 2px var(--vice-navy)}
html.vt-cannabis .report-fab{background:var(--vice-sunset); color:#1A0B2E}

/* ---- 7. Procure Lite: a navy header card, the list below stays light ------------------- */
html.vt-cannabis body.haute .wrap > header{background:var(--vice-glow), var(--vice-navy); color:var(--vice-cream); border-bottom:3px solid transparent;
  border-image:var(--vice-sunset) 1; padding:22px 20px 18px; margin:12px 0 18px; border-radius:18px 18px 0 0}
html.vt-cannabis body.haute .wrap > header h1, html.vt-cannabis body.haute .wrap > header .brand .sub, html.vt-cannabis body.haute .wrap > header p{color:var(--vice-cream)}
html.vt-cannabis body.haute .wrap > header .langtoggle{border-color:var(--vice-line-dark)}
html.vt-cannabis body.haute .wrap > header .langbtn{background:var(--vice-navy-2); color:var(--vice-muted)}
html.vt-cannabis body.haute .wrap > header .langbtn.on{background:var(--vice-sunset); color:#1A0B2E}
html.vt-cannabis .modebtn[aria-pressed="true"]{color:var(--accent-text); box-shadow:inset 0 -3px 0 var(--clay)}

/* ---- 8. the customer shop ------------------------------------------------------------- */
html.vt-cannabis .top{background:var(--vice-sunset) top / 100% 3px no-repeat, var(--vice-navy); color:var(--vice-cream); border-bottom:1px solid var(--vice-line-dark)}
html.vt-cannabis .top h1{color:var(--vice-cream)} html.vt-cannabis .top select{background:var(--vice-navy-2); color:var(--vice-cream); border-color:var(--vice-line-dark)}
html.vt-cannabis .nav{background:var(--vice-navy); border-top:1px solid var(--vice-line-dark); border-color:var(--vice-line-dark)}
html.vt-cannabis .nav button{color:var(--vice-muted)} html.vt-cannabis .nav button.on{color:#FFFFFF; box-shadow:inset 0 3px 0 var(--vice-pink)}

/* ---- 9. the account site and the operator console --------------------------------------- */
html.vt-cannabis .brandbar{background:var(--vice-glow), var(--vice-navy); color:var(--vice-cream); border-radius:18px; padding:14px 22px; margin-bottom:22px;
  border-bottom:3px solid transparent; border-image:var(--vice-sunset) 1}
html.vt-cannabis .brandbar .name, html.vt-cannabis .brandbar .name span{color:var(--vice-cream)}
html.vt-cannabis .brandbar .name span{color:var(--vice-gold)}
html.vt-cannabis .brandbar .biz{background:rgba(255,255,255,.12); color:var(--vice-cream)}
html.vt-cannabis .ptabs{background:var(--vice-navy-2); border-bottom:1px solid var(--vice-line-dark); border-radius:14px; padding:8px}
html.vt-cannabis .ptab.locked{background:var(--vice-navy-3); color:var(--vice-muted)} html.vt-cannabis .ptab.dash{background:var(--vice-sunset); color:#1A0B2E}
html.vt-cannabis #dash .topbar{background:var(--vice-glow), var(--vice-navy); color:var(--vice-cream); border-radius:18px; padding:14px 22px; margin-bottom:18px}
html.vt-cannabis #dash .topbar *{color:var(--vice-cream)}
/* the Sign out button in that bar: a quiet outline on the navy, never a cream-on-cream blank */
html.vt-cannabis #dash .topbar button, html.vt-cannabis #dash .topbar button.ghost, html.vt-cannabis #dash .topbar #logout{
  background:rgba(255,255,255,.08); color:var(--vice-cream) !important; border:1px solid rgba(255,255,255,.28)}
html.vt-cannabis #dash .topbar button:hover{background:var(--clay-deep) !important; border-color:var(--clay-deep) !important}
html.vt-cannabis #dash .tabs button{background:var(--paper); color:var(--ink); border-color:var(--line)}
html.vt-cannabis #dash .tabs button.on{background:var(--vice-sunset); color:#1A0B2E; border-color:transparent}
/* the orb's glow follows the scheme (sourcerer.js paints the orb itself inline) */
html.vt-cannabis .sorc-orb, html.vt-cannabis button.sorc-orb{--sorc-glow:rgba(255,45,149,.0); --sorc-glow2:rgba(255,45,149,.55)}

/* ---- 10. "good" is teal, "needs you" is gold, "stop" is pink — same roles as before ---- */
html.vt-cannabis .pipe-due.soon, html.vt-cannabis .pipe-due.today{background:var(--gold-soft); color:var(--warn-text)}
html.vt-cannabis .pipe-due.overdue{background:var(--clay-soft); color:var(--clay-deep)}
html.vt-cannabis .msg.ok{background:var(--moss-soft); color:var(--moss-deep)}
html.vt-cannabis ::selection{background:rgba(255,45,149,.35)}

/* ---- 11. the mark's entrance on every sign-in screen (990) ------------------------------ */
/* The same sequence as the website's age gate, CSS only: the glow blooms, the mark rises in
   and settles, a neon sweep crosses it once, then it breathes. Off for reduced motion. */
html.vt-cannabis body[data-vt="auth"]{animation:vice-bloom 1.2s ease-out both}
html.vt-cannabis body[data-vt="auth"] .brandlock, html.vt-cannabis body[data-vt="auth"] .brand, html.vt-cannabis body[data-vt="auth"] .brandhead,
html.vt-cannabis #authView.auth .mark{position:relative; overflow:hidden; animation:vice-arrive 1.3s cubic-bezier(.2,.8,.2,1) .15s both, vice-float 7s ease-in-out 1.5s infinite}
html.vt-cannabis body[data-vt="auth"] .brandlock::after, html.vt-cannabis body[data-vt="auth"] .brand::after, html.vt-cannabis #authView.auth .mark::after{
  content:""; position:absolute; inset:0; pointer-events:none; opacity:0; mix-blend-mode:screen;
  background:linear-gradient(105deg, rgba(255,255,255,0) 40%, rgba(255,255,255,.55) 50%, rgba(255,255,255,0) 60%);
  animation:vice-sweep 1.2s ease-in-out 1.3s forwards}
html.vt-cannabis body[data-vt="auth"] .card, html.vt-cannabis body[data-vt="auth"] main.card{animation:vice-card .9s cubic-bezier(.2,.8,.2,1) .35s both}
html.vt-cannabis #authView.auth form, html.vt-cannabis #authView.auth .field, html.vt-cannabis #authView.auth .btn{animation:vice-card .9s cubic-bezier(.2,.8,.2,1) .35s both}
@keyframes vice-bloom{from{background-color:#070418} to{background-color:var(--vice-navy)}}
@keyframes vice-arrive{from{opacity:0; transform:translate3d(0,22px,0) scale(.96)} to{opacity:1; transform:translate3d(0,0,0) scale(1)}}
@keyframes vice-float{0%,100%{transform:translate3d(0,0,0)} 50%{transform:translate3d(0,-5px,0)}}
@keyframes vice-sweep{0%{opacity:0; transform:translateX(-60%)} 20%{opacity:1} 100%{opacity:0; transform:translateX(70%)}}
@keyframes vice-card{from{opacity:0; transform:translate3d(0,14px,0)} to{opacity:1; transform:none}}
@media (prefers-reduced-motion: reduce){
  html.vt-cannabis body[data-vt="auth"], html.vt-cannabis body[data-vt="auth"] .brandlock, html.vt-cannabis body[data-vt="auth"] .brand,
  html.vt-cannabis body[data-vt="auth"] .brandhead, html.vt-cannabis #authView.auth .mark, html.vt-cannabis body[data-vt="auth"] .card,
  html.vt-cannabis body[data-vt="auth"] main.card, html.vt-cannabis #authView.auth form, html.vt-cannabis #authView.auth .field, html.vt-cannabis #authView.auth .btn{animation:none}
  html.vt-cannabis body[data-vt="auth"] .brandlock::after, html.vt-cannabis body[data-vt="auth"] .brand::after, html.vt-cannabis #authView.auth .mark::after{display:none}
}
