/* QuoteIQ. Brand tokens follow arsmarthome.co.za: night background, amber action, cyan focus. */
@font-face{font-family:Manrope;src:url(fonts/Manrope-Regular.ttf);font-weight:400;font-display:swap}
@font-face{font-family:Manrope;src:url(fonts/Manrope-SemiBold.ttf);font-weight:600;font-display:swap}
@font-face{font-family:Manrope;src:url(fonts/Manrope-Bold.ttf);font-weight:800;font-display:swap}
@font-face{font-family:Unbounded;src:url(fonts/Unbounded-SemiBold.ttf);font-weight:600;font-display:swap}
:root{
  color-scheme:dark;
  --night:#05080B;--deep:#0A1219;--card:#0E1820;--card2:#14232D;--field:#0A141B;
  --line:rgba(160,200,220,.13);--line2:rgba(160,200,220,.26);
  --ink:#EAF2F5;--muted:#8EA2AB;--dim:#5B6E77;
  --amber:#FFB547;--amber-ink:#1B1200;--cyan:#4FD1FF;--green:#4ADE9A;--red:#FF7A7A;
  --display:Unbounded,ui-sans-serif,system-ui,sans-serif;
  --body:Manrope,ui-sans-serif,system-ui,sans-serif;
  --r1:6px;--r2:10px;--r3:14px;
  --side:224px;--top:60px;--tabs:62px;
}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--night);color:var(--ink);font:15px/1.5 var(--body);overflow-x:hidden}
h1,h2,h3,p{margin:0}
h1{font:600 18px/1.2 var(--display);letter-spacing:-.01em}
h2{font:600 15px/1.3 var(--body)}
a{color:var(--cyan)}
img{max-width:100%}
[hidden]{display:none!important}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer}
:focus-visible{outline:2px solid var(--cyan);outline-offset:2px}
.ico{fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex:none}
.muted{color:var(--muted)}
.hint{color:var(--muted);font-size:13px}
.tnum{font-variant-numeric:tabular-nums}
.grow{flex:1}
.center{display:flex;justify-content:center;padding:14px 0}

/* ---------- controls ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:42px;padding:0 16px;border-radius:var(--r1);
  border:1px solid var(--line2);background:var(--card2);color:var(--ink);font-weight:600;text-decoration:none;white-space:nowrap}
.btn:hover{border-color:var(--muted)}
.btn.primary{background:var(--amber);border-color:var(--amber);color:var(--amber-ink)}
.btn.primary:hover{background:#FFC466}
.btn.danger{background:var(--red);border-color:var(--red);color:#2A0606}
.btn.danger-text{background:transparent;border-color:transparent;color:var(--red);padding:0 8px}
.btn.small{min-height:34px;padding:0 12px;font-size:13.5px}
.btn.big{min-height:50px;padding:0 22px;font-size:16px}
.btn:disabled{opacity:.6;cursor:default}
.icon-btn{display:inline-grid;place-items:center;width:40px;height:40px;border-radius:var(--r1);border:0;background:transparent;color:var(--muted);text-decoration:none;flex:none}
.icon-btn:hover{background:var(--card2);color:var(--ink)}
.in{width:100%;min-height:42px;padding:9px 12px;border-radius:var(--r1);border:1px solid var(--line2);background:var(--field);color:var(--ink)}
.in::placeholder{color:var(--dim)}
.in:focus{border-color:var(--cyan);outline:none;box-shadow:0 0 0 2px rgba(79,209,255,.25)}
.in:disabled{opacity:.6}
.in.num{text-align:right;font-variant-numeric:tabular-nums}
.in.saved{border-color:var(--green)}
textarea.in{resize:vertical;line-height:1.45}
textarea.item-name,textarea.item-desc{resize:none}
select.in{appearance:none;padding-right:30px;background-image:linear-gradient(45deg,transparent 50%,var(--muted) 50%),linear-gradient(135deg,var(--muted) 50%,transparent 50%);
  background-position:calc(100% - 16px) 19px,calc(100% - 11px) 19px;background-size:5px 5px;background-repeat:no-repeat}
input[type=date].in{min-width:0}
.field{display:grid;gap:5px;min-width:0}
.field-label,.mini-label{font-size:12.5px;font-weight:600;color:var(--muted)}
.mini-label{display:block;margin-bottom:4px}
.form-err{color:var(--red);font-weight:600;min-height:1.3em}
.check{display:flex;gap:10px;align-items:flex-start;cursor:pointer}
.check input{width:18px;height:18px;margin:2px 0 0;accent-color:var(--amber);flex:none}
.stack{display:grid;gap:14px}
.stack.tight{gap:8px}
.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.row.end{justify-content:flex-end}
.row.tight{gap:6px;flex-wrap:nowrap}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.span2{grid-column:1/-1}
.pill{display:inline-flex;align-items:center;height:22px;padding:0 9px;border-radius:999px;font-size:12px;font-weight:600;border:1px solid var(--line2);color:var(--muted);white-space:nowrap}
.pill.sent{color:var(--cyan);border-color:rgba(79,209,255,.45)}
.pill.accepted{color:var(--green);border-color:rgba(74,222,154,.45)}
.pill.declined{color:var(--red);border-color:rgba(255,122,122,.45)}
.pill.expired{color:var(--amber);border-color:rgba(255,181,71,.45)}
.spin{width:16px;height:16px;border-radius:50%;border:2px solid currentColor;border-right-color:transparent;display:inline-block;animation:spin .7s linear infinite;flex:none}
.spin.big{width:44px;height:44px;border-width:3px;color:var(--amber)}
@keyframes spin{to{transform:rotate(360deg)}}

/* ---------- cards, lists ---------- */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r2);padding:18px;display:grid;gap:14px;min-width:0}
.card.flush{padding:0;gap:0;overflow:hidden}
.card-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 18px;border-bottom:1px solid var(--line)}
.empty{padding:34px 18px;text-align:center;color:var(--muted);display:grid;gap:14px;justify-items:center}
.empty.small{padding:16px 4px;font-size:14px;text-align:left;justify-items:start}
.loading{display:flex;gap:10px;align-items:center;justify-content:center;padding:60px 0;color:var(--muted)}
.banner{display:flex;gap:12px;align-items:center;padding:12px 16px;border-radius:var(--r2);border:1px solid var(--line2);background:var(--card);flex-wrap:wrap}
.banner>span{flex:1;min-width:220px}
.banner.good{border-color:rgba(74,222,154,.45);color:var(--green)}
.banner.warn{border-color:rgba(255,181,71,.45)}
.banner.warn>.ico{color:var(--amber)}
.toolbar{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.toolbar select.in{width:auto;max-width:240px}
.search{position:relative;flex:1;min-width:200px;display:block}
.search .ico{position:absolute;left:12px;top:12px;color:var(--muted)}
.search-in{padding-left:38px}
.chips{display:flex;gap:8px;overflow-x:auto;padding:2px;scrollbar-width:none}
.chips::-webkit-scrollbar{display:none}
.chip{display:inline-flex;gap:7px;align-items:center;height:34px;padding:0 13px;border-radius:999px;border:1px solid var(--line2);background:transparent;color:var(--muted);font-weight:600;font-size:13.5px;white-space:nowrap;flex:none}
.chip span{font-weight:400;font-size:12.5px}
.chip[aria-pressed=true]{background:var(--ink);border-color:var(--ink);color:var(--night)}
.qlist{display:grid}
.qrow{display:flex;gap:14px;align-items:center;justify-content:space-between;padding:13px 18px;border:0;border-bottom:1px solid var(--line);background:transparent;color:inherit;text-decoration:none;text-align:left;width:100%}
.qrow:last-child{border-bottom:0}
a.qrow:hover,button.qrow:hover{background:var(--card2)}
.qrow-main{display:grid;gap:2px;min-width:0;flex:1}
.qrow-main b{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.qrow-main small,.bits{color:var(--muted);font-size:13px;display:flex;gap:4px 14px;flex-wrap:wrap}
.qrow-side{display:flex;gap:12px;align-items:center;flex:none}
.as-btn{border:0;background:transparent;color:inherit;text-align:left;padding:0}
button.qrow.as-btn{padding:13px 18px}
.tabbar{display:flex;gap:4px;border-bottom:1px solid var(--line);overflow-x:auto;scrollbar-width:none}
.tabbar a{padding:10px 14px;color:var(--muted);text-decoration:none;font-weight:600;border-bottom:2px solid transparent;white-space:nowrap}
.tabbar a[aria-selected=true]{color:var(--ink);border-bottom-color:var(--amber)}
.narrow{max-width:760px;display:grid;gap:16px}
.plate{background:#fff;border:1px solid var(--line2);border-radius:var(--r1);padding:4px;display:grid;place-items:center;overflow:hidden;aspect-ratio:19/16}
button.plate{cursor:zoom-in}
.plate img{width:100%;height:100%;object-fit:contain;display:block}
.plate.big{width:100%;max-width:380px}
.no-photo{color:var(--dim);display:grid;place-items:center}
.plate.empty{background:var(--card2);border-style:dashed}

/* ---------- login ---------- */
.login{min-height:100dvh;display:grid;place-items:center;padding:24px;
  background:radial-gradient(700px 480px at 80% 0%,rgba(255,160,60,.13),transparent 60%),radial-gradient(600px 460px at 0% 90%,rgba(79,209,255,.07),transparent 60%)}
.login-card{width:min(400px,100%);display:grid;gap:14px;background:var(--card);border:1px solid var(--line);border-radius:var(--r3);padding:28px}
.login-logo{height:64px;width:auto;justify-self:start;object-fit:contain}
.login-card h1{font-size:24px;margin-top:6px}
.version{color:var(--dim);font-size:12.5px}

/* ---------- shell ---------- */
.shell{min-height:100dvh}
.side{display:none}
.main{min-width:0;padding-bottom:calc(var(--tabs) + env(safe-area-inset-bottom) + 20px)}
.top{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:var(--top);
  padding:8px 14px;padding-top:calc(8px + env(safe-area-inset-top));background:rgba(5,8,11,.92);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
.top-left{display:flex;align-items:center;gap:10px;min-width:0}
.top-left h1{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.top-title{display:grid;gap:3px;min-width:0}
.top-meta{display:flex;gap:8px;align-items:center}
.wide-btn{display:none}
.top-actions{display:flex;gap:8px;align-items:center;flex:none}
.view{padding:16px 14px;display:grid;gap:16px;max-width:1280px}
.tabs{position:fixed;left:0;right:0;bottom:0;z-index:30;display:grid;grid-template-columns:repeat(5,1fr);height:calc(var(--tabs) + env(safe-area-inset-bottom));
  padding-bottom:env(safe-area-inset-bottom);background:var(--deep);border-top:1px solid var(--line)}
.tabs a{display:grid;place-items:center;align-content:center;gap:3px;color:var(--muted);text-decoration:none;font-size:11.5px;font-weight:600}
.tabs a.on{color:var(--amber)}
.wide-only{display:none}
.save-state{color:var(--muted);font-size:13px;white-space:nowrap}
.save-state.bad{color:var(--red)}
@media(min-width:960px){
  .shell{display:grid;grid-template-columns:var(--side) 1fr}
  .side{display:flex;flex-direction:column;gap:18px;position:sticky;top:0;height:100dvh;padding:20px 14px;background:var(--deep);border-right:1px solid var(--line)}
  .brand img{height:52px;width:auto;display:block}
  .side-nav{display:grid;gap:4px}
  .side-nav a{display:flex;gap:12px;align-items:center;padding:11px 12px;border-radius:var(--r1);color:var(--muted);text-decoration:none;font-weight:600}
  .side-nav a:hover{color:var(--ink);background:var(--card)}
  .side-nav a.on{color:var(--amber);background:var(--card2)}
  .side-foot{margin-top:auto;display:grid;gap:10px}
  .who{display:flex;gap:10px;align-items:center;padding:8px;border-radius:var(--r1);border:1px solid var(--line);background:transparent;color:var(--ink);text-align:left}
  .who-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}
  .avatar{width:30px;height:30px;border-radius:50%;background:var(--card2);display:grid;place-items:center;font-weight:800;color:var(--amber)}
  .tabs{display:none}
  .main{padding-bottom:40px}
  .top{padding:10px 28px}
  .view{padding:24px 28px}
  h1{font-size:20px}
  .wide-only{display:inline}
  .wide-btn{display:inline-flex}
  .top-title{display:flex;gap:12px;align-items:center}
}

/* ---------- home ---------- */
.stats{display:grid;grid-template-columns:1fr 1fr;background:var(--card);border:1px solid var(--line);border-radius:var(--r2);overflow:hidden}
.stat{padding:16px 18px;display:grid;gap:2px;border-bottom:1px solid var(--line);border-right:1px solid var(--line)}
.stat span{color:var(--muted);font-size:13px;font-weight:600}
.stat b{font:600 19px/1.3 var(--display);font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.stat small{color:var(--muted)}
@media(min-width:900px){.stats{grid-template-columns:repeat(4,1fr)}.stat{border-bottom:0}.stat:last-child{border-right:0}}

/* ---------- quote editor ---------- */
.editor{display:grid;gap:16px;align-items:start}
.editor[inert]{opacity:.72}
.editor-main{display:grid;gap:16px;min-width:0}
.editor-side{display:grid;gap:16px;min-width:0}
@media(min-width:1180px){.editor{grid-template-columns:minmax(0,1fr) 330px}.editor-side{position:sticky;top:calc(var(--top) + 24px)}}
.suggest-wrap{position:relative}
.suggest{position:absolute;left:0;right:0;top:100%;z-index:15;margin-top:4px;background:var(--card2);border:1px solid var(--line2);border-radius:var(--r1);overflow:hidden;box-shadow:0 14px 34px rgba(0,0,0,.5)}
.suggest button{display:grid;gap:1px;width:100%;text-align:left;padding:10px 12px;border:0;border-bottom:1px solid var(--line);background:transparent}
.suggest button:hover{background:var(--card)}
.suggest small{color:var(--muted)}
.sections{display:grid;gap:16px;container-type:inline-size}
.sec{gap:0;padding:0}
.sec-head{display:flex;gap:8px;align-items:center;padding:12px 12px 12px 14px;border-bottom:1px solid var(--line)}
.sec-name{font-weight:800;font-size:16px;background:transparent;border-color:transparent;padding-left:6px}
.sec-name:hover{border-color:var(--line2)}
.items{display:grid;padding:0 14px}
.item{display:grid;grid-template-columns:64px 1fr 1fr auto;grid-template-areas:"photo text text text" "qty qty sum sum" "price price disc tools";gap:10px 12px;padding:14px 0;border-bottom:1px solid var(--line);align-items:start}
.item-photo{grid-area:photo;width:64px}
.item-text{grid-area:text;display:grid;gap:5px;min-width:0}
.item-name{font-weight:600;resize:none;overflow:hidden;min-height:42px}
.item-meta{display:none;gap:10px;align-items:center;color:var(--muted);font-size:13px;flex-wrap:wrap}
.item-meta.has-model,.item.optional .item-meta{display:flex}
.opt-pill{display:none}
.item.optional .opt-pill{display:inline-flex}
.item.optional .item-total{color:var(--muted)}
.item-desc{min-height:38px;font-size:14px;color:var(--muted);resize:none;overflow:hidden}
.item-desc:focus{color:var(--ink)}
.item-qty{grid-area:qty}
.item-qty .unit{color:var(--muted);margin-left:8px}
.item-price{grid-area:price}
.item-disc{grid-area:disc}
.item-sum{grid-area:sum;text-align:right}
.item-total{font-weight:800;font-variant-numeric:tabular-nums;min-height:42px;display:grid;align-items:center;justify-content:end}
.item-tools{grid-area:tools;display:flex;align-self:end}
.stepper{display:inline-flex;align-items:stretch;border:1px solid var(--line2);border-radius:var(--r1);background:var(--field);overflow:hidden;vertical-align:middle}
.stepper button{width:40px;border:0;background:var(--card2);color:var(--ink);display:grid;place-items:center}
.stepper button:hover{background:#1C303C}
.step-in{width:54px;border:0;border-radius:0;text-align:center;padding:9px 2px;font-variant-numeric:tabular-nums;background:transparent}
.step-in:focus{box-shadow:inset 0 0 0 2px var(--cyan)}
.sec-foot{display:flex;gap:12px;justify-content:space-between;align-items:center;flex-wrap:wrap;padding:14px}
.sec-total{display:flex;gap:14px;align-items:baseline;color:var(--muted);font-size:13.5px;margin-left:auto}
.sec-total b{color:var(--ink);font-size:16px;font-variant-numeric:tabular-nums}
.add-sec{justify-self:start;border-style:dashed}
@container (min-width:600px){
  .item{grid-template-columns:64px auto 112px 70px minmax(0,1fr) auto;grid-template-areas:"photo text text text text tools" "photo qty price disc sum sum";gap:8px 12px}
  .item-tools{align-self:start}
  .item-qty{display:grid;grid-template-columns:auto auto;align-items:center;justify-content:start}
  .item-qty .mini-label{grid-column:1/-1}
}
@container (min-width:960px){
  .item{grid-template-columns:64px minmax(0,1fr) auto 108px 66px 118px auto;grid-template-areas:"photo text qty price disc sum tools"}
  .item-qty{display:block}
  .item-qty .unit{display:block;margin:4px 0 0}
}
.totals{gap:10px}
.trow{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:center;font-variant-numeric:tabular-nums}
.trow.edit{grid-template-columns:1fr 124px minmax(84px,auto)}
.trow.edit.two{grid-template-columns:1fr 96px}
.trow.edit>:last-child{text-align:right}
.trow .row.tight .in.num{min-width:0}
.trow select.in{width:56px;flex:none;padding-left:9px}
.grand{display:flex;justify-content:space-between;align-items:baseline;gap:12px;padding:14px;border-radius:var(--r1);background:var(--night);border:1px solid var(--line2)}
.grand span:last-child{font:600 21px/1.1 var(--display);color:var(--amber);font-variant-numeric:tabular-nums}
.margin{display:grid;gap:2px;padding:10px 12px;border-radius:var(--r1);border:1px dashed var(--line2);font-size:13.5px}
.margin small{color:var(--muted)}
.total-bar{position:fixed;left:0;right:0;bottom:calc(var(--tabs) + env(safe-area-inset-bottom));z-index:25;display:flex;justify-content:space-between;align-items:baseline;gap:12px;
  padding:10px 16px;background:var(--card2);border-top:1px solid var(--line2);color:var(--muted)}
.total-bar b{font:600 17px/1.1 var(--display);color:var(--amber);font-variant-numeric:tabular-nums}
.view:has(.total-bar){padding-bottom:64px}
@media(min-width:1180px){.total-bar{display:none}.view:has(.total-bar){padding-bottom:24px}}
@media(min-width:960px) and (max-width:1179px){.total-bar{left:var(--side);bottom:0}}

/* ---------- dialogs, menus, toasts ---------- */
dialog.modal{border:1px solid var(--line2);border-radius:var(--r3);padding:0;background:var(--card);color:var(--ink);width:min(520px,calc(100vw - 24px));max-height:calc(100dvh - 24px);overflow:hidden}
dialog.modal[open]{display:flex;flex-direction:column}
dialog.modal.wide{width:min(780px,calc(100vw - 24px))}
dialog.modal.full{width:min(1120px,100vw);height:min(900px,100dvh);max-height:100dvh}
dialog.modal::backdrop{background:rgba(2,4,6,.74)}
.modal-head{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:14px 12px 14px 20px;border-bottom:1px solid var(--line);flex:none}
.modal-head h2{font:600 16px/1.3 var(--display)}
.modal-body{padding:20px;overflow-y:auto;flex:1;min-height:0}
.modal-foot{display:flex;gap:10px;justify-content:flex-end;align-items:center;padding:14px 20px;border-top:1px solid var(--line);flex:none;flex-wrap:wrap}
.modal-foot.inline{padding:6px 0 0;border-top:0}
@media(max-width:640px){dialog.modal.full{width:100vw;height:100dvh;max-width:100vw;border-radius:0;border:0}}
.menu{position:fixed;z-index:1000;min-width:210px;background:var(--card2);border:1px solid var(--line2);border-radius:var(--r2);padding:6px;display:grid;box-shadow:0 18px 44px rgba(0,0,0,.55)}
.menu button{display:flex;gap:10px;align-items:center;padding:11px 12px;border:0;border-radius:var(--r1);background:transparent;text-align:left;color:var(--ink)}
.menu button:hover{background:var(--card)}
.menu button.danger{color:var(--red)}
#toasts{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(var(--tabs) + env(safe-area-inset-bottom) + 70px);z-index:2000;display:grid;gap:8px;width:max-content;max-width:calc(100vw - 24px)}
.toast{display:flex;gap:10px;align-items:center;padding:12px 16px;border-radius:var(--r2);background:var(--ink);color:var(--night);font-weight:600;box-shadow:0 12px 30px rgba(0,0,0,.5)}
.toast.good .ico{color:#0E7A4B}
.toast.bad{background:#FFD9D9;color:#5A0B0B}
@media(min-width:960px){#toasts{bottom:28px}}

/* ---------- product picker and catalogue ---------- */
.picker-bar{display:grid;gap:10px;padding:12px 20px;border-bottom:1px solid var(--line);flex:none}
.pgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(152px,1fr));gap:12px}
.pcard{display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:auto 1fr auto;gap:8px;padding:10px;border-radius:var(--r2);border:1px solid var(--line);background:var(--deep);min-width:0}
.pcard.picked{border-color:var(--amber)}
.pcard .plate{width:100%}
.pcard-text{display:grid;gap:2px;align-content:start}
.pcard-text b{font-weight:600;font-size:14px;line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.pcard-text small{color:var(--muted);font-size:12.5px;overflow-wrap:anywhere}
.pcard-foot{display:grid;gap:8px}
.price{font-weight:800;font-variant-numeric:tabular-nums}
.price.none{font-weight:400;color:var(--dim);font-size:13px}
.pcard-add .btn,.pcard-add .stepper{width:100%;display:flex}
.pcard-add .step-in{flex:1 1 0;width:0;min-width:0}
.pcard-add .btn{background:transparent;color:var(--amber);border-color:rgba(255,181,71,.5)}
.pcard-add .btn:hover{background:rgba(255,181,71,.12)}
.pcard.picked .stepper{border-color:var(--amber)}
.info{display:grid;gap:20px}
.info-text{display:grid;gap:10px;align-content:start}
.info details{border-top:1px solid var(--line);padding-top:10px}
.info summary{font-weight:600;cursor:pointer}
.spec-list{margin:8px 0 0;padding-left:18px;display:grid;gap:5px;color:var(--muted);font-size:14px}
.spec-list .sub{list-style:none;margin-left:-18px;color:var(--ink);font-weight:600;margin-top:6px}
@media(min-width:700px){.info{grid-template-columns:300px 1fr}}
.share-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px}
.plist{display:grid}
.prow{display:grid;grid-template-columns:60px minmax(0,1fr) minmax(0,1fr) auto;grid-template-areas:"photo text text edit" "cost cost price price";gap:8px 12px;padding:12px 16px;border-bottom:1px solid var(--line);align-items:center}
.prow:last-child{border-bottom:0}
.prow .plate{width:60px;grid-area:photo}
.prow-text{grid-area:text;display:grid;gap:2px;min-width:0}
.prow-text b{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.prow .icon-btn{grid-area:edit}
.prow .pcell:nth-of-type(1){grid-area:cost}
.prow .pcell:nth-of-type(2){grid-area:price}
.pcell{display:block}
@media(min-width:720px){
  .prow{grid-template-columns:60px minmax(0,1fr) 124px 124px auto;grid-template-areas:"photo text cost price edit"}
}
.pform{display:grid;gap:18px}
.pform-photo{display:grid;gap:10px;justify-items:start;align-content:start}
.pform-photo .plate{width:200px}
@media(min-width:700px){.pform{grid-template-columns:210px 1fr}.pform>.modal-foot{grid-column:1/-1}}
@media(max-width:520px){.grid2{grid-template-columns:1fr}.pform .grid2,.card .grid2.keep{grid-template-columns:1fr 1fr}}

/* ---------- settings ---------- */
.logo-band{background:var(--night);border:1px solid var(--line2);border-bottom:3px solid var(--amber);border-radius:var(--r1);padding:18px}
.logo-band img{height:60px;width:auto;display:block}
.update-status{display:flex;gap:10px;align-items:center;min-height:28px}
.tick{width:30px;height:30px;border-radius:50%;background:var(--green);color:#03170D;display:grid;place-items:center;flex:none;animation:pop .28s ease-out}
.tick .ico{stroke-width:2.6}
@keyframes pop{from{transform:scale(.4);opacity:0}to{transform:scale(1);opacity:1}}
.updating{display:grid;gap:14px;justify-items:center;text-align:center;padding:10px 0}
.ring{height:56px;display:grid;place-items:center}
.ring.done .tick{width:54px;height:54px}
.update-msg{font-weight:600;min-height:1.5em}
.bar{width:100%;height:8px;border-radius:999px;background:var(--field);overflow:hidden;border:1px solid var(--line)}
.bar-fill{height:100%;width:3%;background:var(--amber);border-radius:999px;transition:width .6s ease}
@media(prefers-reduced-motion:reduce){*{animation-duration:.001ms!important;transition-duration:.001ms!important}.spin{animation-duration:1.6s!important}}
