/* SwiftFlyerLab signed-in app */
:root{
  --night:#06110C;--ink:#0B1A14;--deep:#075C3A;--green:#0E7A4E;--bright:#1BA46B;--bg:#EEF6F1;--card:#FFFFFF;--soft:#F3F9F5;--field:#F7FBF8;
  --line:#DCEBE2;--body:#2A3A33;--muted:#5E6F67;--glass:#10241B;--glass-line:#1E3A2C;--warn-bg:#FFF1CC;--warn:#7A5200;--ok-bg:#E3F5EC;--ok:#0B5E3B;--danger:#B42318;
  --f:"Plus Jakarta Sans",system-ui,-apple-system,"Segoe UI",sans-serif;color-scheme:light;
}
*{box-sizing:border-box}
html,body{margin:0}
body{font-family:var(--f);background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;min-height:100vh}
[hidden]{display:none!important}
a{color:var(--green)}
:focus-visible{outline:3px solid var(--bright);outline-offset:3px;border-radius:8px}
h1,h2,h3{margin:0;letter-spacing:-.02em;color:var(--ink)}
p{margin:0}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.skip{position:absolute;left:-999px;top:8px;background:#fff;color:#0B1A14;padding:8px 14px;border-radius:8px;z-index:100;font-weight:700}
.skip:focus{left:12px}

/* shell */
.top{position:sticky;top:0;z-index:30;background:var(--night);padding:calc(12px + env(safe-area-inset-top)) calc(20px + env(safe-area-inset-right)) 12px calc(20px + env(safe-area-inset-left));display:flex;align-items:center;justify-content:space-between}
.top img{width:108px;height:auto;display:block}
.avatar{width:44px;height:44px;border-radius:50%;border:1px solid var(--glass-line);background:var(--glass) center/cover no-repeat;color:#fff;font:700 15px var(--f);display:grid;place-items:center;text-decoration:none;overflow:hidden}
.side{display:none}
.main{max-width:1080px;margin:0 auto;padding:22px 20px 110px;display:flex;flex-direction:column;gap:18px}
.tabs{position:fixed;left:0;right:0;bottom:0;z-index:30;background:#fff;border-top:1px solid var(--line);padding:6px 6px calc(10px + env(safe-area-inset-bottom));display:grid;grid-template-columns:repeat(5,minmax(0,1fr))}
.tabs a{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;min-height:52px;text-decoration:none;color:var(--muted);font-size:11px;font-weight:600}
.tabs a svg{width:22px;height:22px}
.tabs a.on{color:var(--green);font-weight:800}
/* Phones: a fixed-height shell (header, scrolling page, tab bar), so the tab bar never floats when the installed
   app's viewport is out of step with the screen (seen on iPhone home-screen apps). */
@media (max-width:899px){
  /* Pinned to the screen edges (not a 100dvh height): iPhone Safari reports a stale height after the toolbar or
     keyboard moves, which left the tab bar mid-screen with empty space below it. */
  html,body{height:100%;overflow:hidden}
  body{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;height:auto;min-height:0;overflow:hidden}
  .top{position:relative;flex:none}
  .main{flex:1 1 auto;min-height:0;width:100%;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior-y:contain;padding-bottom:28px}
  .tabs{position:relative;flex:none}
}
@media (min-width:900px){
  body{display:grid;grid-template-columns:248px 1fr}
  .top,.tabs{display:none}
  .side{display:flex;flex-direction:column;gap:26px;position:sticky;top:0;height:100vh;overflow-y:auto;overscroll-behavior:contain;background:var(--night);padding:calc(24px + env(safe-area-inset-top)) 16px 24px}
  .side img.logo{width:132px;margin-left:8px}
  .side nav{display:flex;flex-direction:column;gap:4px}
  .side nav a{min-height:44px;padding:0 14px;border-radius:12px;color:#CFE3D8;font-weight:600;font-size:15px;text-decoration:none;display:flex;align-items:center;justify-content:space-between}
  .side nav a.on{background:var(--glass);color:#fff;font-weight:700}
  .side .me{margin-top:auto;padding:12px;border-radius:14px;border:1px solid var(--glass-line);display:flex;gap:10px;align-items:center;color:#fff;text-decoration:none}
  .side .me .avatar{flex:none}
  .side .me span{display:flex;flex-direction:column;min-width:0}
  .side .me b{font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .side .me small{color:#8FB3A2;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .main{padding:36px 40px 60px;width:100%}
}
.soon-tag{font-size:10px;font-weight:800;letter-spacing:.06em;padding:3px 7px;border-radius:999px;background:var(--glass-line);color:#8EF0BE}

/* common */
.kicker{font-size:13px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--green)}
.hello h1{font-size:28px;line-height:1.15;font-weight:800}
.card{background:var(--card);border:1px solid var(--line);border-radius:22px;padding:18px;display:flex;flex-direction:column;gap:12px}
.card h2{font-size:18px;font-weight:800}
.dark{background:var(--ink);color:#fff;border:0}
.dark h2{color:#fff}.dark p{color:#B9CFC4}
.muted{color:var(--muted);font-size:14px;line-height:1.5;overflow-wrap:break-word}
.btn{min-height:48px;padding:0 20px;border-radius:999px;border:0;background:var(--green);color:#fff;font:800 15px var(--f);text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:8px;cursor:pointer;text-align:center;line-height:1.2}
.btn:disabled{opacity:.55;cursor:progress}
.btn.white{background:#fff;color:var(--deep)}
.btn.line{background:#fff;color:var(--green);border:1px solid var(--green);font-weight:700}
.btn.sm{min-height:40px;padding:0 14px;font-size:13px}
.btn.block{width:100%}
.row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.between{display:flex;justify-content:space-between;align-items:center;gap:10px}
/* long names, emails and references wrap inside their card; chips keep their size */
.between>:first-child{min-width:0}.between>.chip{flex:none}.between>span:not(.chip){overflow-wrap:anywhere}
.between.muted,.between:has(>h1),.card>.between{flex-wrap:wrap}
.row>.btn[style*="flex:1"]{flex:1 1 auto!important}
label.row{flex-wrap:nowrap}
.chip{font-size:12px;font-weight:700;padding:4px 10px;border-radius:999px;align-self:flex-start;white-space:nowrap}
.chip.ok{background:var(--ok-bg);color:var(--ok)}.chip.warn{background:var(--warn-bg);color:var(--warn)}.chip.draft{background:#EEF1F0;color:#3F4F48}.chip.dark{background:var(--ink);color:#fff}
.bar{height:8px;border-radius:99px;background:#E4EFE8;overflow:hidden}.bar i{display:block;height:100%;background:var(--green)}
.stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.stat{background:#fff;border:1px solid var(--line);border-radius:18px;padding:14px;display:flex;flex-direction:column;gap:2px}
.stat b{font-size:24px}.stat span{font-size:12px;color:var(--muted)}
.msg{font-size:14px;font-weight:600;min-height:1.2em}.msg.ok{color:var(--green)}.msg.err{color:var(--danger)}
.empty{text-align:center;padding:28px 16px;color:var(--muted);font-size:14px;line-height:1.5}
.grid2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.grid2>.empty,.grid2>p{grid-column:1/-1}
@media (min-width:900px){.stats{grid-template-columns:repeat(3,minmax(0,1fr))}.grid2{grid-template-columns:repeat(4,minmax(0,1fr))}.home-grid{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr);gap:18px;align-items:start}.home-grid .card>.btn{font-size:13px;padding:0 10px}}

/* orders */
.olist{display:flex;flex-direction:column;gap:10px}
.orow{background:#fff;border:1px solid var(--line);border-radius:18px;padding:12px;display:flex;gap:12px;align-items:center}
.orow.attn{border-color:#F1D98A}
.hotchip{margin-left:8px;background:#FFE7D6;color:#B4470F;font-size:11px;vertical-align:2px}
/* weekly flyers guide (Home, brands) */
.spin{width:22px;height:22px;flex:none;border-radius:50%;border:3px solid #CDEBD9;border-top-color:var(--green);animation:sflspin 1s linear infinite}
@keyframes sflspin{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){.spin{animation-duration:3s}}
.guide{gap:0}
.guide summary{cursor:pointer;display:flex;flex-direction:column;gap:2px;list-style:none}
.guide summary::-webkit-details-marker{display:none}
.guide summary b::after{content:" +";color:var(--green)}
.guide[open] summary b::after{content:" -"}
.gsteps{margin:12px 0 0;padding-left:20px;display:flex;flex-direction:column;gap:10px}
.gsteps li{font-size:14px;line-height:1.5}
.gsteps li b{display:block;color:var(--ink)}
.gsteps li span{color:var(--muted)}
.thumb{width:56px;height:70px;flex-shrink:0;border-radius:10px;background:var(--ink) center/cover no-repeat;display:grid;place-items:center;color:#F4B63F;font-size:9px;font-weight:800;text-align:center;padding:4px;text-transform:uppercase}
.orow .t{flex-grow:1;min-width:0;display:flex;flex-direction:column;gap:4px}
.orow strong{font-size:15px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.orow small{font-size:13px;color:var(--muted)}
/* small phones: the row's buttons move under the title so the title is not squeezed */
@media (max-width:479px){.orow{flex-wrap:wrap}.orow .t{flex:1 1 calc(100% - 68px)}.orow .t+.btn{margin-left:auto}}
.fcard{background:#fff;border:1px solid var(--line);border-radius:18px;padding:10px;display:flex;flex-direction:column;gap:8px;min-width:0}
.fcard .img{height:190px;border-radius:12px;background:var(--ink) center/cover no-repeat;display:flex;flex-direction:column;justify-content:flex-end;padding:12px;color:#fff;font-weight:800;font-size:15px;line-height:1.15;overflow:hidden;overflow-wrap:break-word}
.fcard .img span{font-size:10px;color:#F4B63F;letter-spacing:.08em}
.fcard strong{font-size:14px;line-height:1.3}
.fcard small{font-size:12px;color:var(--muted)}
.fcard .acts{display:flex;flex-wrap:wrap;gap:6px;margin-top:auto}
.fcard .acts>*{flex:1 1 auto}
.filters{display:flex;flex-wrap:wrap;gap:8px;overflow-x:auto;padding-bottom:2px}
.filters button{min-height:40px;padding:0 14px;border-radius:999px;border:1px solid var(--line);background:#fff;color:var(--ink);font:600 14px var(--f);white-space:nowrap;cursor:pointer}
.filters button[aria-pressed=true]{background:var(--ink);border-color:var(--ink);color:#fff;font-weight:700}

/* sheet */
.sheet{position:fixed;inset:0;z-index:60;background:rgba(6,17,12,.55);display:flex;align-items:flex-end;justify-content:center}
.sheet .panel{background:#fff;width:100%;max-width:480px;border-radius:24px 24px 0 0;padding:20px 20px calc(24px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:10px;max-height:90vh;overflow:auto}
@media (min-width:900px){.sheet{align-items:center}.sheet .panel{border-radius:24px}}
.size{min-height:58px;display:flex;align-items:center;gap:12px;padding:0 14px;border-radius:14px;border:1px solid var(--line);background:#fff;font:inherit;color:inherit;text-align:left;cursor:pointer;width:100%}
.size span{display:flex;flex-direction:column;flex-grow:1;min-width:0}.size b{font-size:14px}.size small{font-size:12px;color:var(--muted)}
.size em{white-space:nowrap;font-style:normal;font-size:12px;font-weight:700;color:#3F4F48}
.size[disabled]{background:var(--field);cursor:not-allowed;opacity:.7}

/* forms */
label.f{display:flex;flex-direction:column;gap:6px;font-size:13px;font-weight:700}
.f input[type=text],.f input[type=number],.f input[type=tel],.f input[type=url],.f input[type=email],.f input[type=password],.f select,.f textarea{min-height:46px;border-radius:12px;border:1px solid var(--line);background:var(--field);padding:0 14px;font:500 16px var(--f);color:var(--ink);width:100%}
.f textarea{padding:12px 14px;resize:vertical;min-height:90px}
.f input:disabled{background:#EEF1F0;color:#3F4F48}
.f input:focus,.f select:focus,.f textarea:focus{outline:none;border-color:var(--bright);box-shadow:0 0 0 4px rgba(27,164,107,.18)}
.colors{display:flex;gap:10px}
.colors input{width:52px;height:52px;border:1px solid var(--line);border-radius:12px;padding:3px;background:#fff;cursor:pointer}
.drop{position:relative;border:2px dashed #B9D3C4;border-radius:16px;padding:20px;display:flex;flex-direction:column;align-items:center;gap:6px;text-align:center;background:var(--field);cursor:pointer}
.drop input{position:absolute;inset:0;opacity:0;cursor:pointer}
.list{display:flex;flex-direction:column}
.list>*{min-height:56px;display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid #E4EFE8;font:600 15px var(--f);color:var(--ink);text-decoration:none;background:none;border-left:0;border-right:0;border-top:0;text-align:left;width:100%;padding:0;cursor:pointer}
.list>*:last-child{border-bottom:0}
.list .danger{color:var(--danger)}
.av-lg{width:84px;height:84px;border-radius:50%;background:var(--ink) center/cover no-repeat;color:#fff;font:800 26px var(--f);display:grid;place-items:center;flex-shrink:0}
.weeks{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:12px}
.weeks li{display:flex;gap:12px}.weeks .w{min-width:58px;font-size:12px;font-weight:800;color:var(--green);padding-top:2px}
.weeks b{font-size:14px}.weeks p{font-size:13px;color:var(--muted);line-height:1.45}
.uploads{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}
.uploads div{aspect-ratio:1;border-radius:10px;background:var(--soft) center/cover no-repeat;display:grid;place-items:center;font-size:11px;color:var(--muted);padding:4px;text-align:center;overflow:hidden}
.dcard{background:#fff;border:1px solid var(--line);border-radius:18px;padding:12px;display:flex;flex-wrap:wrap;gap:12px}
.dcard .img{width:96px;height:120px;border-radius:10px;background:var(--ink) center/cover no-repeat;flex-shrink:0;display:grid;place-items:center;color:#B9CFC4;font-size:11px;text-align:center;padding:6px}
.dcard .t{display:flex;flex-direction:column;gap:6px;min-width:0;flex:1 1 200px}
.dcard p{font-size:13px;line-height:1.45;color:var(--body);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}

/* studio */
.presets{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
.presets button{padding:0;border:0;background:none;display:flex;flex-direction:column;gap:5px;cursor:pointer;font:700 12px var(--f);color:var(--ink);align-items:center}
.presets img{width:100%;aspect-ratio:3/4;object-fit:cover;border-radius:12px;display:block;outline:0 solid transparent;outline-offset:2px}
.presets button[aria-pressed=true] img{outline:3px solid var(--green)}
.stage{position:relative;border-radius:20px;overflow:hidden;background:var(--ink)}
.stage img{width:100%;max-height:460px;object-fit:cover;display:block}
.stage .tag{position:absolute;left:12px;top:12px;font-size:12px;font-weight:800;padding:6px 10px;border-radius:999px;background:rgba(6,17,12,.78);color:#fff}
.mini{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}
.mini img{width:100%;height:88px;object-fit:cover;border-radius:10px;display:block}
.totop{position:fixed;right:16px;bottom:96px;z-index:60;width:46px;height:46px;border-radius:50%;border:0;background:var(--ink);color:#fff;display:grid;place-items:center;cursor:pointer;box-shadow:0 10px 26px rgba(0,0,0,.25);opacity:0;visibility:hidden;transform:translateY(8px);transition:opacity .2s,transform .2s,visibility .2s}
.totop.on{opacity:1;visibility:visible;transform:none}
.totop:focus-visible{outline:3px solid #1BA46B;outline-offset:2px}
@media (min-width:900px){.totop{right:28px;bottom:28px}}
.toast{position:fixed;left:50%;bottom:90px;transform:translateX(-50%);z-index:70;background:var(--ink);color:#fff;padding:12px 18px;border-radius:999px;font-size:14px;font-weight:600;box-shadow:0 12px 30px rgba(0,0,0,.25)}
@media (min-width:900px){.toast{bottom:30px}}
.loading{padding:60px 0;text-align:center;color:var(--muted)}
/* plans, install banner, notifications */
.plancards{display:flex;gap:10px;overflow-x:auto;scroll-snap-type:x mandatory;padding-bottom:6px;-webkit-overflow-scrolling:touch}
.plancards>.plancard{flex:0 0 82%;max-width:320px;scroll-snap-align:start}
@media (min-width:900px){.plancards>.plancard{flex-basis:280px}}
.plancard{display:flex;flex-direction:column;gap:6px;text-align:left;padding:16px;border-radius:18px;border:2px solid var(--line);background:#F7FBF8;font:500 13px var(--f);color:#2A3A33;cursor:pointer}
.plancard .pn{font-size:17px;color:var(--ink)}
.plancard .pt{font-size:12px;font-weight:700;color:#0E7A4E}
.plancard .pp{color:#5E6F67}.plancard .pp b{font-size:22px;color:var(--ink);font-weight:800}
.plancard ul{margin:4px 0 0;padding-left:18px;display:grid;gap:4px}
.plancard.pro{background:#0B1A14;border-color:#0B1A14;color:#CFE3D8}.plancard.pro .pn,.plancard.pro .pp b{color:#fff}.plancard.pro .pt{color:#7EE2B0}.plancard.pro .pp{color:#9FB8AC}
.plancard.on{border-color:#1BA46B;box-shadow:0 0 0 4px rgba(27,164,107,.18)}
.logo-prev{width:64px;height:64px;flex:none;border-radius:16px;border:1px solid #DCEBE2;background:#fff center/contain no-repeat;display:grid;place-items:center;font-weight:800;color:#5E6F67;font-size:13px}
.a2hs{position:fixed;left:12px;right:12px;bottom:calc(78px + env(safe-area-inset-bottom));z-index:55;display:flex;align-items:center;gap:12px;padding:12px 12px 12px 14px;border-radius:20px;background:#0B1A14;color:#CFE3D8;box-shadow:0 18px 40px rgba(0,0,0,.35);flex-wrap:wrap;padding-right:38px!important}
.a2hs img{border-radius:12px;flex:none}
.a2hs .t{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1 1 160px;font-size:12px;line-height:1.35}
.a2hs .t+.btn{margin-left:auto}
.a2hs .t b{color:#fff;font-size:14px}
.a2hs .x{position:absolute;top:6px;right:6px;background:none;border:0;color:#9FB8AC;font-size:24px;line-height:1;cursor:pointer;padding:4px 6px}
@media (min-width:900px){.a2hs{left:auto;right:24px;bottom:24px;max-width:440px}}
.steps{margin:0;padding-left:20px;display:grid;gap:10px;font-size:15px;color:var(--ink)}
/* admin: marketing and revenue */
.kpis{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:10px}
.kpi{background:#fff;border:1px solid var(--line);border-radius:16px;padding:14px;display:flex;flex-direction:column;gap:2px;min-width:0}
.kpi span{font-size:12px;font-weight:700;color:var(--muted)}.kpi b{font-size:22px;font-weight:800;color:var(--ink);overflow-wrap:anywhere}.kpi small{font-size:12px;color:var(--muted)}
.mlink.off{opacity:.7}
.mlink-url{display:flex;align-items:center;gap:8px;background:#F3F9F5;border-radius:12px;padding:8px 8px 8px 12px}
.mlink-url code{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:600 13px ui-monospace,Menlo,monospace;color:#0E7A4E}
.mstats{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:8px}
.mstats div{display:flex;flex-direction:column;gap:1px;min-width:0}.mstats span{font-size:11px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.mstats b{font-size:15px;overflow-wrap:anywhere}
.tbl{display:flex;flex-direction:column}
.tbl .tr{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:9px 0;border-top:1px solid #E4EFE8;font-size:14px}
.tbl .tr>span:first-child{flex:1 1 140px;min-width:0;overflow-wrap:anywhere}
.tbl .tr small{font-size:12px}
.barx{display:block;width:90px;height:8px;border-radius:99px;background:#E4EFE8;overflow:hidden;flex:none}.barx i{display:block;height:100%;background:#1BA46B;border-radius:99px}
.wallets{display:grid;grid-template-columns:1fr;gap:12px}
@media (min-width:900px){.wallets{grid-template-columns:1fr 1fr}}
.wallet .wbal{font-size:28px;font-weight:800;color:var(--ink)}
.sheet .panel.wide{max-width:720px}
/* delete buttons, Designer Studio */
.btn.line.danger{color:var(--danger);border-color:#F1C6C2}
.uploads>a{display:block;aspect-ratio:1;border-radius:12px;background:#E4EFE8 center/cover no-repeat}
.ds-demo{display:grid;grid-template-columns:1fr;gap:14px}
@media (min-width:900px){.ds-demo{grid-template-columns:minmax(0,360px) minmax(0,1fr);align-items:start}}
.ds-ref{position:relative;border-radius:20px;overflow:hidden;background:#0B1A14;box-shadow:0 18px 40px rgba(6,17,12,.18)}
.ds-ref img{display:block;width:100%;height:auto;opacity:.92}
.ds-tag{position:absolute;padding:5px 10px;border-radius:999px;background:rgba(255,255,255,.94);color:#0B1A14;font-size:12px;font-weight:800;border:2px dashed #1BA46B;white-space:nowrap}
.ds-fields{background:#fff;border:1px solid var(--line);border-radius:20px;padding:18px;display:flex;flex-direction:column;gap:10px}
.ds-field{display:flex;flex-direction:column;gap:2px;padding:10px 12px;border-radius:12px;background:#F3F9F5}
.ds-field span{font-weight:800;font-size:14px;color:var(--ink)}.ds-field small{font-size:13px;color:var(--muted);line-height:1.45}
.ds-form{display:flex;flex-direction:column;gap:14px}
.bizlist{list-style:none;padding:0;margin:4px 0;display:grid;gap:8px}
.bizlist li{position:relative;padding-left:26px;font-size:15px}
.bizlist li::before{content:"";position:absolute;left:0;top:3px;width:16px;height:16px;border-radius:50%;background:#1BA46B;box-shadow:inset 0 0 0 4px #E3F4EA}
.bizlist li.no{color:#6B7F75}
.bizlist li.no::before{background:#C9D6CF}
.dthumb{width:64px;height:80px;border-radius:10px;background:#EEF6F1 center/cover no-repeat;border:1px solid #DCEBE2}

/* graphic style picker (My brand, styleCard in dash-z.js) */
.stylegrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:8px}
.stylecell{display:flex;flex-direction:column;gap:3px;text-align:left;padding:10px 12px;border:1px solid #DCEBE2;border-radius:12px;background:#fff;color:var(--ink);font:inherit;cursor:pointer}
.stylecell span{font-size:13px;color:#3D4D45}.stylecell small{font-size:12px;color:#6B7C73}
.stylecell[aria-pressed=true]{border:2px solid var(--green);background:#F3F9F5;padding:9px 11px}

/* short desktop screens (laptops): the sidebar scrolls and its links are more compact, so the last link (Admin) stays reachable */
@media (min-width:900px) and (max-height:760px){.side{gap:16px}.side nav{gap:2px}.side nav a{min-height:38px}}

/* SFL Control (/sfl-control): admin sign-in with an authenticator code, and the admin shell */
.gate{min-height:100vh;min-height:100dvh;display:grid;place-items:center;padding:24px 16px;background:var(--night)}
.gate-card{width:100%;max-width:420px;background:#fff;border-radius:24px;padding:28px 24px;display:flex;flex-direction:column;gap:14px}
.gate-card h1{font-size:24px;font-weight:800}
.gate-card form{display:flex;flex-direction:column;gap:12px}
.gate-qr{width:200px;height:200px;align-self:center;background:#fff;border:1px solid #DCEBE2;border-radius:12px;padding:8px}
.gate-card code{word-break:break-all;font-size:13px}
#panel .side .adm-out{margin-top:6px;background:transparent;color:#fff;border-color:var(--glass-line)}
.gate-card input{font:500 16px var(--f);color:var(--ink);background:#fff;border:1px solid #DCEBE2;border-radius:12px;padding:11px 13px;width:100%;box-sizing:border-box}
.gate-card input:focus{outline:none;border-color:var(--bright);box-shadow:0 0 0 4px rgba(27,164,107,.18)}
.gate-card .f{display:flex;flex-direction:column;gap:6px;font-weight:700;font-size:14px}
@media (min-width:900px){body[data-mode=admin] #admView [role=tablist]{display:none}}
#panel .top .adm-out-top{margin-left:auto}
@media (min-width:900px){body[data-mode=admin]{display:block}#panel{display:grid;grid-template-columns:248px minmax(0,1fr)}}
@media (max-width:899px){body[data-mode=admin] #panel:not([hidden]){display:flex;flex-direction:column;flex:1 1 auto;min-height:0}body[data-mode=admin] .gate{flex:1 1 auto;min-height:0;overflow-y:auto}}
.adm-main{display:flex;flex-direction:column;gap:16px}

/* SFL Control redesign (28 Oct 2026): one page header per section, a scrolling tab bar on phones, a single field style for
   every admin form, and rules that keep text, fields and buttons inside their cards so nothing overlaps. */
body[data-mode=admin] #admView{display:flex;flex-direction:column;gap:16px;min-width:0;width:100%;max-width:1120px;margin:0 auto}
body[data-mode=admin] .adm-main{gap:16px;min-width:0}
.adm-head{display:flex;flex-direction:column;gap:4px;padding-bottom:4px}
.adm-head h1{font-size:28px;line-height:1.15;font-weight:800;letter-spacing:-.01em}
.adm-head p{margin:0}
.adm-tabs{display:flex;gap:8px;overflow-x:auto;scrollbar-width:none;margin:0 -20px;padding:2px 20px 6px;scroll-snap-type:x proximity}
.adm-tabs::-webkit-scrollbar{display:none}
.adm-tabs button{flex:none;scroll-snap-align:start;min-height:40px;padding:0 16px;border-radius:999px;border:1px solid var(--line);background:#fff;color:var(--ink);font:700 14px var(--f);cursor:pointer;white-space:nowrap}
.adm-tabs button.on{background:var(--ink);border-color:var(--ink);color:#fff}
@media (min-width:900px){.adm-tabs{display:none}}
.adm-body{display:flex;flex-direction:column;gap:14px;min-width:0}
/* cards and their content stay inside their box */
body[data-mode=admin] #admView .card{padding:20px;gap:12px;min-width:0;border-radius:18px;box-shadow:0 1px 2px rgba(6,17,12,.04)}
body[data-mode=admin] #admView .card>*{min-width:0;max-width:100%}
body[data-mode=admin] #admView :is(p,b,span,small,dd,a:not(.btn)){overflow-wrap:anywhere}
body[data-mode=admin] #admView .between{flex-wrap:wrap}
body[data-mode=admin] #admView .between>*{min-width:0}
body[data-mode=admin] #admView .row>*{min-width:0;max-width:100%}
body[data-mode=admin] #admView .btn{white-space:normal;line-height:1.2;max-width:100%}
body[data-mode=admin] #admView img,body[data-mode=admin] #admView video{max-width:100%;height:auto}
body[data-mode=admin] #admView [style*="display:grid"]>:is(p,.empty,.msg){grid-column:1/-1}
body[data-mode=admin] #admView .tbl{overflow-x:auto}
body[data-mode=admin] #admView .stats{grid-template-columns:repeat(auto-fit,minmax(140px,1fr))}
@media (max-width:599px){body[data-mode=admin] #admView [style*="repeat(2,minmax(0,1fr))"]{grid-template-columns:minmax(0,1fr)!important}}
/* one field style for every admin form */
body[data-mode=admin] #admView :is(input:not([type=checkbox]):not([type=radio]):not([type=file]):not([type=color]),select,textarea){min-height:44px;width:100%;max-width:100%;border-radius:12px;border:1px solid var(--line);background:var(--field);padding:0 13px;font:500 15px var(--f);color:var(--ink);box-sizing:border-box}
body[data-mode=admin] #admView textarea{padding:11px 13px;min-height:96px;resize:vertical}
body[data-mode=admin] #admView input[type=file]{max-width:100%;font:500 14px var(--f);padding:10px;border:1px dashed var(--line);border-radius:12px;background:var(--field);width:100%}
body[data-mode=admin] #admView :is(input,select,textarea):focus{outline:none;border-color:var(--bright);box-shadow:0 0 0 4px rgba(27,164,107,.18)}
body[data-mode=admin] #admView input[type=checkbox]{width:18px;height:18px;accent-color:var(--green);flex:none}
body[data-mode=admin] #admView label.f{min-width:0}
body[data-mode=admin] #admView details{min-width:0}
body[data-mode=admin] #admView details>summary{cursor:pointer;min-height:44px;display:flex;align-items:center;gap:10px;font-weight:800;list-style:none}
body[data-mode=admin] #admView details>summary::-webkit-details-marker{display:none}
body[data-mode=admin] #admView details>summary::before{content:"";width:8px;height:8px;border-right:2px solid var(--green);border-bottom:2px solid var(--green);transform:rotate(-45deg);transition:transform .15s;flex:none}
body[data-mode=admin] #admView details[open]>summary::before{transform:rotate(45deg)}
body[data-mode=admin] #admView details[open]>summary{margin-bottom:12px}
.adm-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr));gap:14px;align-items:end}
.adm-form>.msg,.adm-form>.adm-actions{grid-column:1/-1}
.adm-actions{display:flex;flex-wrap:wrap;gap:10px}
.adm-dl{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:8px 18px;margin:0;font-size:14px}
.adm-dl dt{color:var(--muted);font-weight:600}.adm-dl dd{margin:0;font-weight:700;overflow-wrap:anywhere}
/* who is online */
.pdot{display:inline-block;width:9px;height:9px;border-radius:50%;background:#34D399;box-shadow:0 0 0 3px rgba(52,211,153,.22);flex:none}
.presence{border:1px solid var(--glass-line);border-radius:14px;padding:12px;color:#fff}
.presence h2,.onpop h2{font-size:12px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:#8FB3A2;display:flex;align-items:center;gap:8px;margin-bottom:10px}
.presence h2 span{margin-left:auto;background:var(--glass);color:#fff;border-radius:999px;padding:2px 8px;font-size:12px;letter-spacing:0}
#onList,#onList2{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}
#onList li,#onList2 li{display:flex;align-items:center;gap:10px;min-width:0}
.pav{position:relative;flex:none;width:32px;height:32px;border-radius:50%;background:var(--glass);border:1px solid var(--glass-line);display:grid;place-items:center;font:800 12px var(--f);color:#CFE3D8}
.pav .pdot{position:absolute;right:-1px;bottom:-1px;width:10px;height:10px;box-shadow:0 0 0 2px var(--night);background:#4B5F55}
li.on .pav .pdot{background:#34D399}
.pt{display:flex;flex-direction:column;min-width:0}
.pt b{font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pt small{font-size:11.5px;color:#8FB3A2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
li:not(.on) .pt b{color:#B9CFC4;font-weight:600}
.ontop{margin-left:auto;margin-right:10px;min-height:36px;padding:0 12px;border-radius:999px;border:1px solid var(--glass-line);background:var(--glass);color:#fff;font:700 13px var(--f);display:inline-flex;align-items:center;gap:7px;cursor:pointer}
.ontop+.onpop+.adm-out-top{margin-left:0}
.onpop{position:absolute;top:calc(100% + 6px);right:12px;left:auto;width:min(320px,calc(100vw - 24px));background:var(--night);border:1px solid var(--glass-line);border-radius:16px;padding:14px;z-index:40;box-shadow:0 18px 40px rgba(0,0,0,.35);max-height:60vh;overflow-y:auto}
#panel .top{position:relative;gap:8px}
@media (min-width:900px){.ontop,.onpop{display:none!important}}
/* sign-in card */
.gate-card{gap:16px;padding:32px 26px;box-shadow:0 30px 60px rgba(0,0,0,.35)}
.gate-card>img{width:120px;height:auto}
.gate-card form .btn{width:100%}
.gate-card form .btn.line.sm{width:auto;align-self:center;border:0;background:transparent;text-decoration:underline}
.gate-card .msg:empty{display:none}
body[data-mode=admin] #admView :is(label.f,p,.row,.between)+label.f{margin-top:6px}
body[data-mode=admin] #admView label.f+:is(.row,.btn,button){margin-top:8px}
.fbt{display:flex;flex-direction:column;gap:10px;border-top:1px solid var(--line);padding-top:14px}
.fbt label.f small{font-weight:500}
/* Admin > Partner flyers > Review and correct */
.rvgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,240px),1fr));gap:14px}
.rvcard{display:flex;flex-direction:column;gap:8px;min-width:0;border:1px solid var(--line);border-radius:14px;padding:10px;background:#fff}
.rvimg{display:block;border-radius:10px;overflow:hidden;background:#0B1A14;aspect-ratio:4/5}
.rvimg img{width:100%;height:100%;object-fit:cover;display:block}
.rvnone{display:grid;place-items:center;color:#8FB3A2;font-size:13px}
.rvlog{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}
.rvlog li{display:flex;flex-direction:column;gap:2px;font-size:13px;background:var(--soft);border-radius:10px;padding:8px 10px;overflow-wrap:anywhere}
.rvform{display:flex;flex-direction:column;gap:8px}
/* Admin > Partner flyers: tile sizes (Large / Medium / Small, #admView[data-tile]), page numbers and the brand grid */
.tilegrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,200px),1fr));gap:14px}
#admView[data-tile=l] .tilegrid{grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr))}
#admView[data-tile=s] .tilegrid{grid-template-columns:repeat(auto-fill,minmax(min(100%,130px),1fr));gap:10px}
#admView[data-tile=s] .tilegrid .rvlog,#admView[data-tile=s] .tilegrid .rvcard>.muted{display:none}
#admView[data-tile=s] .tilegrid .btn{font-size:12px;min-height:34px;padding:0 10px}
.tilebar{display:flex;align-items:center;gap:6px;flex-wrap:wrap;align-self:flex-end}
.tilebar>.muted{font-size:13px;margin-right:2px}
.tilebar button{display:inline-flex;align-items:center;gap:6px;min-height:36px;padding:0 12px;border-radius:999px;border:1px solid var(--line);background:#fff;color:var(--ink);font:700 13px var(--f);cursor:pointer}
.tilebar button[aria-pressed=true]{background:var(--ink);border-color:var(--ink);color:#fff}
.pager{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:4px}
.pager button{min-width:38px;min-height:36px;padding:0 10px;border-radius:10px;border:1px solid var(--line);background:#fff;color:var(--ink);font:700 13px var(--f);cursor:pointer}
.pager button.on{background:var(--green);border-color:var(--green);color:#fff}
.pager button:disabled{opacity:.45;cursor:default}
.pager>.muted{font-size:13px;margin-left:4px}
.brandgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,290px),1fr));gap:12px}
.bcard{display:flex;flex-direction:column;gap:10px;min-width:0;border:1px solid var(--line);border-radius:14px;padding:14px;background:#fff}
/* Admin preview over the page (previewBox in dash-z.js) */
.pvbox{position:fixed;inset:0;z-index:80;background:rgba(6,17,12,.86);display:grid;place-items:center;padding:20px}
.pvin{display:flex;flex-direction:column;align-items:center;gap:12px;max-width:min(92vw,760px)}

/* Account: one section at a time from a scrolling tab bar */
.acct-tabs{display:flex;flex:none;gap:8px;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;padding:2px 0 4px;scroll-snap-type:x proximity}
.acct-tabs::-webkit-scrollbar{display:none}
.acct-tabs button{flex:none;scroll-snap-align:start;min-height:40px;padding:0 16px;border-radius:999px;border:1px solid #DCEBE2;background:#fff;font:700 14px var(--f);color:#2A3A33;cursor:pointer;white-space:nowrap}
.acct-tabs button[aria-selected=true]{background:#0E7A4E;border-color:#0E7A4E;color:#fff}
.acct-pane{display:flex;flex:none;flex-direction:column;gap:18px}
.acct-pane[hidden]{display:none}
/* brand identity: product and team photos */
.bsec{display:flex;flex-direction:column;gap:10px;padding-top:14px;border-top:1px solid #E4EFE8}
.bsec h3{font-size:16px;font-weight:800;color:var(--ink,#0B1A14)}
.bitems{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.bitem{display:flex;flex-direction:column;gap:4px;min-width:0}
.bitem small{font-size:12px;overflow-wrap:anywhere}
.bpic{aspect-ratio:1;border-radius:12px;background:#E4EFE8 center/cover no-repeat}
.bpic.gone{opacity:.35}
.bx{align-self:flex-start;border:0;background:none;padding:2px 0;font:700 12px var(--f);color:#B42318;cursor:pointer}
@media (max-width:520px){.bitems{grid-template-columns:repeat(3,minmax(0,1fr))}}
/* Admin > Revenue (6 Nov 2026): sections that open and close, the period dropdown and Show more / Show less */
body[data-mode=admin] details.fold>summary>span{flex:1;min-width:0;text-align:left}
body[data-mode=admin] .periodbox{display:flex;align-items:center;gap:8px;font-size:14px}
body[data-mode=admin] .periodbox select{width:auto;min-width:160px}
body[data-mode=admin] .morebtn{margin-top:10px}
