/* Cubtopia Portal — uses the Cubtopia website palette */
:root{
  --navy:#0c1c39; --navy-soft:#14284d; --gold:#f5a621; --gold-deep:#ca8537;
  --sky-pale:#d9edfa; --bush:#4b794a; --paper:#f8f4ea; --cream:#fffaf0;
  --line:#e2dccb; --muted:#5b6478; --red:#b3261e; --red-pale:#fbe3e1;
  --green:#2e7d32; --green-pale:#e3f3e4; --amber-pale:#fff1d6;
}
*{box-sizing:border-box}
body{margin:0;font-family:"Nunito Sans",system-ui,sans-serif;color:var(--navy);background:var(--paper);font-size:15px;line-height:1.5}
h1,h2,h3{font-family:"Baloo 2",system-ui,sans-serif;line-height:1.15;margin:.2em 0 .5em}
h1{font-size:1.9rem} h2{font-size:1.35rem} h3{font-size:1.1rem}
a{color:#1f6fb2}
main{max-width:1280px;margin:0 auto;padding:1.25rem 1rem 3rem}
.foot{text-align:center;font-size:.8rem;color:var(--muted);padding:1rem}
.card{background:#fff;border:1px solid var(--line);border-radius:12px;padding:1.1rem 1.25rem;margin-bottom:1rem}
.card.narrow{max-width:460px;margin:2rem auto}
.grid{display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}
.stat{background:#fff;border:1px solid var(--line);border-radius:12px;padding:.9rem 1rem}
.stat b{display:block;font-family:"Baloo 2";font-size:1.9rem;line-height:1}
.stat small{color:var(--muted)}
.flash{padding:.7rem 1rem;border-radius:8px;margin-bottom:1rem;font-weight:700}
.flash.ok{background:var(--green-pale);color:var(--green)}
.flash.err{background:var(--red-pale);color:var(--red)}
.flash.info{background:var(--sky-pale)}
table{width:100%;border-collapse:collapse;background:#fff}
th,td{text-align:left;padding:.45rem .55rem;border-bottom:1px solid var(--line);vertical-align:top}
th{font-size:.8rem;text-transform:uppercase;letter-spacing:.03em;color:var(--muted);background:var(--cream)}
tr:hover td{background:#fcfaf4}
.table-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:10px}
.num{text-align:right;font-variant-numeric:tabular-nums}
label{display:block;font-weight:700;font-size:.88rem;margin:.6rem 0 .2rem}
input[type=text],input[type=email],input[type=password],input[type=date],input[type=time],input[type=datetime-local],input[type=search],input[type=number],select,textarea{
  width:100%;padding:.5rem .6rem;border:1px solid #c9c2ae;border-radius:8px;font:inherit;background:#fff}
textarea{min-height:80px}
.inline{display:flex;flex-wrap:wrap;gap:.5rem;align-items:end}
.inline>*{flex:0 1 auto}
.inline select,.inline input{width:auto;min-width:140px}
.filters{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;margin-bottom:1rem}
.filters input,.filters select{width:auto;min-width:130px}
button,.btn{display:inline-block;background:var(--navy);color:#fff;border:0;border-radius:8px;padding:.5rem .95rem;font:inherit;font-weight:700;cursor:pointer;text-decoration:none}
button:hover,.btn:hover{background:var(--navy-soft)}
.btn.gold,button.gold{background:var(--gold);color:var(--navy)}
.btn.light,button.light{background:#fff;color:var(--navy);border:1px solid var(--line)}
button.danger{background:var(--red)}
button.small,.btn.small{padding:.25rem .55rem;font-size:.82rem}
.badge{display:inline-block;padding:.08rem .5rem;border-radius:99px;font-size:.78rem;font-weight:700;background:#eee;white-space:nowrap}
.badge.ok{background:var(--green-pale);color:var(--green)}
.badge.bad{background:var(--red-pale);color:var(--red)}
.badge.warn{background:var(--amber-pale);color:#8a5a00}
.badge.info{background:var(--sky-pale);color:var(--navy)}
.muted{color:var(--muted)} .small{font-size:.85rem}
.pager{margin:.8rem 0}
.pager a,.pager strong{padding:.1rem .35rem}
.split{display:grid;grid-template-columns:1fr 1fr;gap:1rem}
@media (max-width:800px){.split{grid-template-columns:1fr}}
.kv{display:grid;grid-template-columns:170px 1fr;gap:.25rem .75rem}
.kv dt{font-weight:700;color:var(--muted);font-size:.88rem}
.kv dd{margin:0}
.warnlist li{margin:.25rem 0}
.tree ul{list-style:none;padding-left:1.1rem;margin:.25rem 0}
.tree>ul{padding-left:0}
details summary{cursor:pointer;font-weight:700}
.bulkbar{position:sticky;bottom:0;background:var(--navy);color:#fff;padding:.6rem 1rem;border-radius:10px;margin-top:.8rem}
.bulkbar label{color:#fff;display:inline;margin:0 .3rem 0 0}
.bulkbar select{width:auto}

/* Scan page */
body.scan main{max-width:760px}
.scanbox input{font-size:1.6rem;padding:.7rem;text-align:center}
.result{border-radius:14px;padding:1.4rem;margin-top:1rem;text-align:center;min-height:160px}
.result h2{font-size:2rem;margin:0}
.result.ok{background:#1f7a36;color:#fff}
.result.dup{background:#d98b00;color:#fff}
.result.bad{background:var(--red);color:#fff}
.result.idle{background:#fff;border:2px dashed var(--line);color:var(--muted)}
.result .alert{background:#fff;color:var(--red);font-weight:800;border-radius:8px;padding:.4rem .6rem;margin-top:.7rem;display:inline-block}
.counter{font-family:"Baloo 2";font-size:1.4rem}
.matches button{margin:.2rem}
@media (max-width:700px){
  .bulkbar{position:static}
  .filters input,.filters select{flex:1 1 45%}
  .kv{grid-template-columns:1fr}
}
.qr{max-width:240px;margin:1rem auto;background:#fff}
.qr svg{width:100%;height:auto;display:block}
code.secret{font-size:1.05rem;letter-spacing:.05em;word-break:break-all}
pre.codes{background:var(--cream);border:1px solid var(--line);border-radius:8px;padding:1rem;font-size:1.2rem;text-align:center;line-height:1.8}
.codeinput{font-size:1.5rem;letter-spacing:.2em;text-align:center}
.result.out{background:#1f5f99;color:#fff}
.result .who{font-size:1.4rem;margin:.3rem 0;font-weight:700}
.scanbox + .result{margin-top:1rem}
.seg{display:inline-flex;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:#fff}
.seg label{margin:0;padding:.5rem 1rem;cursor:pointer;font-weight:700}
.seg label{position:relative}
.seg input{position:absolute;opacity:0;left:0;top:0;width:1px;height:1px}
.seg input:checked + span{background:var(--navy);color:#fff;border-radius:6px;padding:.3rem .6rem}
.tabs{display:flex;gap:.3rem;flex-wrap:wrap;margin-bottom:1rem}
.tabs a{padding:.35rem .8rem;border-radius:8px;background:#fff;border:1px solid var(--line);text-decoration:none;color:var(--navy);font-weight:700}
.tabs a.on{background:var(--gold);border-color:var(--gold)}
@media print{
  .top,.foot,.noprint,form.filters,.bulkbar,button,.btn{display:none !important}
  body{background:#fff;font-size:11pt}
  main{max-width:none;padding:0}
  .card,.table-wrap{border:0}
  a{color:inherit;text-decoration:none}
}
body.scan.wide main{max-width:1100px}
.printonly{display:none}
@media print{.printonly{display:block}}
a.reportlink{text-decoration:none;color:inherit;display:block}
a.reportlink:hover{border-color:var(--gold);box-shadow:0 2px 10px rgba(12,28,57,.08)}
a.reportlink h2{margin:.1rem 0 .3rem}
a.reportlink p{margin:0;color:var(--muted);font-size:.92rem}
.swatch{display:inline-block;width:14px;height:14px;border-radius:3px;border:1px solid rgba(0,0,0,.2)}
tr.totalrow td{font-weight:800;background:var(--cream)}
.badge.exec{background:#111;color:#F5A621}
.filters label.small{display:inline-flex;gap:.35rem;align-items:center;margin:0;font-weight:700}
.badge.dark{background:#111;color:#fff}
.badge.cat{color:#fff}
.flash.alarm{background:#b3261e;color:#fff;font-size:1.05rem}
.flash.alarm a{color:#fff}
.syncstate{padding:.45rem .8rem;border-radius:8px;font-weight:700;font-size:.9rem;margin-bottom:.7rem}
.syncstate.ok{background:var(--green-pale);color:var(--green)}
.syncstate.warn{background:var(--amber-pale);color:#8a5a00}
.syncstate.bad{background:var(--red);color:#fff}
#livelist.flash,#livelist.card{margin-bottom:.7rem;font-weight:400}

/* Phone camera scanning */
.cam-start{display:block;width:100%;font-size:1.15rem;padding:.85rem;margin:.6rem 0;background:var(--gold);color:var(--navy)}
.cam-start:hover{background:var(--gold-deep)}
.cam{margin-top:.6rem;border-radius:14px;overflow:hidden;background:#111}
.cam-view{position:relative;height:min(46vh,400px)}
.cam video{display:block;width:100%;height:100%;object-fit:cover}
.cam-frame{position:absolute;top:50%;left:50%;height:68%;aspect-ratio:1;transform:translate(-50%,-50%);border:3px solid rgba(255,255,255,.9);border-radius:14px;box-shadow:0 0 0 100vmax rgba(0,0,0,.28);pointer-events:none}
.cam-frame.hit{animation:camhit .45s ease-out}
@keyframes camhit{0%{border-color:#4cd964;border-width:8px}100%{border-color:rgba(255,255,255,.9);border-width:3px}}
.cam-msg{position:absolute;left:50%;bottom:.6rem;transform:translateX(-50%);width:max-content;max-width:92%;background:rgba(0,0,0,.6);color:#fff;font-weight:700;font-size:.9rem;padding:.3rem .75rem;border-radius:99px;text-align:center}
.cam-msg.bad{background:var(--red);border-radius:10px}
.cam.off .cam-view{height:auto;padding:.8rem}
.cam.off video,.cam.off .cam-frame{display:none}
.cam.off .cam-msg{position:static;transform:none;max-width:none;width:auto}
.cam-tools{display:flex;gap:.5rem;justify-content:flex-end;padding:.5rem}
.cam-tools button.on{background:var(--gold);border-color:var(--gold)}
body.cam-on .scanbox label{font-size:.8rem;margin-top:0}
body.cam-on .scanbox input{font-size:1rem;padding:.45rem}
body.cam-on .result{margin-top:.6rem}


/* ---------- Phones ---------- */
@media (max-width:700px){
  body{font-size:15px}
  main{padding:.8rem .75rem 2.5rem}
  h1{font-size:1.55rem}
  /* 16px stops iPhones zooming in when a field is tapped */
  input[type=text],input[type=email],input[type=password],input[type=date],input[type=time],input[type=datetime-local],input[type=search],input[type=number],select,textarea{font-size:16px}
  .split>*,.grid>*{min-width:0}
  .card{overflow-wrap:break-word}
  .inline>*{flex:1 1 100%}
  .inline select,.inline input{width:100%;min-width:0}
  .inline>button,.inline>.btn{flex:0 0 auto}
  .grid{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:.6rem}
  .stat{padding:.6rem .75rem}
  .stat b{font-size:1.6rem}
  .card{padding:.9rem;border-radius:10px}
  th,td{padding:.4rem .45rem;font-size:.88rem}
  .m-hide{display:none}
  /* Roll call: hide Type and Since. Bus manifest: hide Card and Job. */
  .rollcall tr>:nth-child(4),.rollcall tr>:nth-child(7){display:none}
  .manifest:not(.has-select) tr>:nth-child(4),.manifest:not(.has-select) tr>:nth-child(5),
  .manifest.has-select tr>:nth-child(5),.manifest.has-select tr>:nth-child(6){display:none}
  button,.btn{padding:.6rem 1rem}
  button.small,.btn.small{padding:.45rem .7rem;font-size:.85rem}
  .tabs{flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;padding-bottom:.2rem}
  .tabs a{white-space:nowrap}
  .seg{display:flex;flex-wrap:wrap;width:100%}
  .seg label{flex:1 1 auto;text-align:center;padding:.55rem .5rem}
  .result{padding:1rem;min-height:120px}
  .result h2{font-size:1.6rem}
  .result .who{font-size:1.15rem}
  .scanbox input{font-size:1.3rem}
}

/* ---------- Shop ---------- */
body.shop-pos main{max-width:1400px}
.pos{display:grid;grid-template-columns:1fr 360px;gap:1rem;align-items:start}
.pos-products input[type=search]{margin-bottom:.8rem}
.pos-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:.7rem;align-items:start}
.pos-price{margin:0;font-weight:700;color:var(--gold-deep)}
.pos-tile{background:#fff;border:1px solid var(--line);border-radius:12px;padding:.7rem;display:flex;flex-direction:column;gap:.4rem}
.pos-tile img{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:8px;background:var(--cream)}
.pos-tile h3{margin:0;font-size:1.05rem}
.pos-opts{display:flex;flex-wrap:wrap;gap:.3rem}
.pos-opts button{flex:1 1 22%;min-width:58px;font-size:.95rem}
.pos-opts .stockn{display:block;font-weight:400;font-size:.75rem;color:var(--muted)}
.pos-opts button.soldout{opacity:.45;text-decoration:line-through}
.pos-cart{position:sticky;top:.75rem}
.pos-lines{list-style:none;margin:0 0 .5rem;padding:0;max-height:45vh;overflow:auto}
.pos-lines li{display:grid;grid-template-columns:1fr auto 70px;gap:.4rem;align-items:center;padding:.35rem 0;border-bottom:1px solid var(--line)}
.pos-lines .pl-qty{display:flex;align-items:center;gap:.3rem}
.pos-lines .pl-qty b{min-width:1.4rem;text-align:center}
.pos-lines .pl-amt{text-align:right;font-variant-numeric:tabular-nums}
.pos-total{display:flex;justify-content:space-between;font-family:"Baloo 2";font-size:1.5rem;margin:.4rem 0}
.pos-pay{display:grid;gap:.45rem;margin:.8rem 0 .6rem}
.pos-pay button{font-size:1.1rem;padding:.75rem}
.pos-pay button:disabled{opacity:.4;cursor:not-allowed}
.pos-modal{position:fixed;inset:0;background:rgba(12,28,57,.55);display:flex;align-items:flex-start;justify-content:center;padding:4vh 1rem;z-index:50;overflow:auto}
.pos-modal[hidden]{display:none}
.pos-dialog{width:100%;max-width:480px;margin:0}
.pos-cash{font-size:1.8rem;text-align:center}
.pos-quick{display:flex;flex-wrap:wrap;gap:.35rem}
.pos-change{font-family:"Baloo 2";font-size:1.6rem;text-align:center;margin:.5rem 0;color:var(--green)}
.pos-change.bad{color:var(--red)}
.pos-actions{display:flex;flex-wrap:wrap;gap:.5rem;justify-content:space-between;margin-top:1rem}
.pos-qr{max-width:300px}
.pos-state{min-height:0;padding:1rem}
.pos-state h2{font-size:1.4rem}
.pos-cardel{border:1px solid #c9c2ae;border-radius:8px;padding:.8rem;background:#fff;margin:.6rem 0}
.center{text-align:center}
.shop-thumb{width:56px;height:42px;object-fit:cover;border-radius:6px;background:var(--cream);display:block}
.order-items td.num{white-space:nowrap}
table.compact input[type=text],table.compact input[type=number]{padding:.3rem .4rem;min-width:70px}
.receipt{max-width:420px;margin:0 auto;background:#fff;border:1px solid var(--line);border-radius:12px;padding:1.25rem}
.receipt h1{font-size:1.4rem;margin:0}
.receipt table td,.receipt table th{padding:.3rem .2rem}
@media print{.receipt{border:0;max-width:none}}
@media (max-width:900px){
  .pos{grid-template-columns:1fr}
  .pos-cart{position:static;order:-1}
  .pos-lines{max-height:none}
}
@media (max-width:700px){
  .pos-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}
  .pos-modal{padding:.5rem}
}

/* =====================================================================
   Header and main menu
   ===================================================================== */
.top{position:sticky;top:0;z-index:50;background:var(--navy);color:#fff;box-shadow:0 6px 24px rgba(12,28,57,.16)}
.top-inner{max-width:1280px;margin:0 auto;height:64px;padding:0 1.25rem;display:flex;align-items:center;gap:1.5rem}
.brand{display:flex;align-items:center;gap:.6rem;color:#fff;text-decoration:none;font-family:"Baloo 2",system-ui,sans-serif;font-weight:800;font-size:1.2rem;white-space:nowrap;line-height:1}
.brand img{width:38px;height:38px;display:block}
.brand b{color:var(--gold);font-weight:800}
.mainnav{display:flex;align-items:center;gap:.15rem;flex:1;height:100%;min-width:0}
.navlink,.navtrigger{position:relative;display:inline-flex;align-items:center;gap:.35rem;height:40px;padding:0 .85rem;border:0;border-radius:10px;background:transparent;color:rgba(255,255,255,.82);font:inherit;font-weight:700;font-size:.94rem;text-decoration:none;cursor:pointer;white-space:nowrap;transition:background .15s,color .15s}
.navlink:hover,.navtrigger:hover,.navsec.open .navtrigger{background:rgba(255,255,255,.08);color:#fff}
.navlink.on,.navsec.on .navtrigger{color:#fff}
.navlink.on::after,.navsec.on .navtrigger::after{content:"";position:absolute;left:.85rem;right:.85rem;bottom:-12px;height:3px;border-radius:3px 3px 0 0;background:var(--gold)}
.navtrigger .chev{width:14px;height:14px;opacity:.75;transition:transform .2s}
.navsec.open .chev{transform:rotate(180deg)}
.navsec{position:relative;height:100%;display:flex;align-items:center}
.navmenu{position:absolute;top:100%;left:-.4rem;padding-top:6px;z-index:60;opacity:0;visibility:hidden;transform:translateY(6px);transition:opacity .16s ease,transform .16s ease,visibility 0s linear .16s}
.navsec.open .navmenu{opacity:1;visibility:visible;transform:none;transition:opacity .16s ease,transform .16s ease}
.navpanel{color:var(--navy);min-width:310px;background:#fff;border:1px solid rgba(12,28,57,.07);border-radius:16px;box-shadow:0 22px 50px rgba(12,28,57,.22),0 2px 6px rgba(12,28,57,.06);padding:.45rem}
.navitem{display:grid;grid-template-columns:38px 1fr;column-gap:.8rem;align-items:center;padding:.55rem .65rem;border-radius:11px;color:var(--navy);text-decoration:none;transition:background .12s}
.navitem:hover,.navitem:focus-visible{background:#f6f3eb}
.navitem .ico{grid-row:1 / span 2;width:38px;height:38px;border-radius:10px;display:grid;place-items:center;background:#eef3f9;color:var(--navy)}
.navitem .ico svg{width:19px;height:19px}
.navitem b{font-size:.94rem;line-height:1.25}
.navitem small{font-size:.8rem;color:var(--muted);line-height:1.3}
.navitem.on .ico{background:var(--gold)}
.navitem.on b::after{content:"";display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--gold);margin-left:.4rem;vertical-align:middle}

/* Account menu (right) */
.usermenu{margin-left:auto;height:100%}
.usermenu .navtrigger{padding:0 .5rem 0 .35rem;gap:.5rem}
.avatar{width:32px;height:32px;border-radius:50%;background:var(--gold);color:var(--navy);display:grid;place-items:center;font-weight:800;font-size:.8rem;letter-spacing:.02em}
.usermenu .navmenu{left:auto;right:-.4rem}
.usermenu .navpanel{min-width:240px}
.userhead{padding:.6rem .7rem .7rem;border-bottom:1px solid #efebe2;margin-bottom:.35rem}
.userhead b{display:block}
.userhead small{color:var(--muted);word-break:break-all}
.navitem.simple{grid-template-columns:1fr;padding:.55rem .7rem;font-weight:700;font-size:.93rem}

/* Burger (phones and small tablets) */
.menu-btn{display:none;width:42px;height:42px;padding:0;border-radius:10px;background:transparent;border:1px solid rgba(255,255,255,.25);align-items:center;justify-content:center}
.menu-btn:hover{background:rgba(255,255,255,.08)}
.burger,.burger::before,.burger::after{display:block;width:18px;height:2px;border-radius:2px;background:#fff;transition:transform .2s,background .2s}
.burger{position:relative}
.burger::before,.burger::after{content:"";position:absolute;left:0}
.burger::before{top:-6px}.burger::after{top:6px}
.top.open .burger{background:transparent}
.top.open .burger::before{transform:translateY(6px) rotate(45deg)}
.top.open .burger::after{transform:translateY(-6px) rotate(-45deg)}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

@media (max-width:960px){
  .top-inner{height:58px;padding:0 .9rem;gap:.75rem}
  .menu-btn{display:inline-flex;order:3}
  .usermenu{order:2}
  .usermenu .navtrigger .uname,.usermenu .navtrigger .chev{display:none}
  .mainnav{display:none;position:fixed;top:58px;left:0;right:0;bottom:0;height:auto;flex-direction:column;align-items:stretch;gap:0;padding:.75rem .9rem 2rem;background:#fff;overflow-y:auto;box-shadow:inset 0 1px 0 #efebe2}
  .top.open .mainnav{display:flex}
  body.nav-open{overflow:hidden}
  .mainnav>.navlink{color:var(--navy);height:auto;padding:.8rem .7rem;font-size:1.02rem;border-radius:11px}
  .mainnav>.navlink:hover{background:#f6f3eb;color:var(--navy)}
  .mainnav>.navlink.on{background:#fff6e2}
  .mainnav>.navlink.on::after{display:none}
  .mainnav .navsec{height:auto;display:block}
  .mainnav .navsec .navtrigger,.mainnav .navsec.on .navtrigger{background:none;pointer-events:none;height:auto;padding:1rem .7rem .3rem;color:var(--muted);font-size:.74rem;text-transform:uppercase;letter-spacing:.08em}
  .mainnav .navtrigger .chev,.mainnav .navsec.on .navtrigger::after{display:none}
  .mainnav .navmenu{position:static;opacity:1;visibility:visible;transform:none;padding:0;transition:none}
  .mainnav .navpanel{min-width:0;border:0;box-shadow:none;padding:0;border-radius:0}
  .mainnav .navitem{padding:.6rem .7rem}
}

/* =====================================================================
   Visual refresh: calmer surfaces, softer edges, clearer focus
   ===================================================================== */
:root{--paper:#f5f3ee;--line:#e6e1d5;--line-soft:#efebe2;--shadow:0 1px 2px rgba(12,28,57,.04),0 2px 8px rgba(12,28,57,.04);--focus:0 0 0 3px rgba(31,111,178,.18)}
body{background:var(--paper);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}
main{padding:1.75rem 1.25rem 3rem}
h1{font-size:2rem;letter-spacing:-.01em;margin-bottom:.6rem}
h2{letter-spacing:-.005em}
:focus-visible{outline:3px solid var(--gold);outline-offset:2px}
.card,.stat{border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow)}
.card{padding:1.3rem 1.45rem}
.stat{padding:1rem 1.15rem}
.stat b{font-size:2rem;margin-bottom:.15rem}
.table-wrap{background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow)}
.table-wrap table{background:transparent}
.card table,.table-wrap table{border-radius:inherit}
th{background:#faf8f3;font-size:.72rem;letter-spacing:.06em;font-weight:700;color:var(--muted);padding:.6rem .7rem;border-bottom:1px solid var(--line)}
td{padding:.6rem .7rem;border-bottom:1px solid var(--line-soft)}
.table-wrap tr:last-child td{border-bottom:0}
tr:hover td{background:#fbfaf6}
input[type=text],input[type=email],input[type=password],input[type=date],input[type=time],input[type=datetime-local],input[type=search],input[type=number],input[type=tel],select,textarea{
  border:1px solid #d8d2c3;border-radius:10px;padding:.55rem .7rem;background:#fff;transition:border-color .15s,box-shadow .15s}
input:focus,select:focus,textarea:focus{outline:none;border-color:#1f6fb2;box-shadow:var(--focus)}
label{color:var(--navy);margin:.75rem 0 .3rem}
button,.btn{border-radius:10px;padding:.55rem 1.05rem;transition:background .15s,box-shadow .15s,transform .05s}
button:active,.btn:active{transform:translateY(1px)}
.btn.light,button.light{border-color:var(--line);box-shadow:0 1px 1px rgba(12,28,57,.04)}
.btn.light:hover,button.light:hover{background:#faf8f3;border-color:#d8d2c3}
.btn.gold:hover,button.gold:hover{background:#f0a019}
button.danger:hover{background:#9c2019}
button.small,.btn.small{border-radius:8px}
.badge{padding:.12rem .55rem;font-size:.75rem;letter-spacing:.01em}
.flash{border-radius:12px;font-weight:600;border-left:4px solid currentColor;padding:.8rem 1.05rem}
.flash.info{border-left-color:#1f6fb2}
.flash.alarm{border-left-color:#7a160f}
.tabs{display:inline-flex;flex-wrap:wrap;gap:.2rem;padding:.25rem;background:#ebe7dc;border-radius:12px;margin-bottom:1.25rem}
.tabs a{border:0;background:transparent;border-radius:9px;padding:.42rem .9rem;color:var(--muted);transition:background .15s,color .15s}
.tabs a:hover{color:var(--navy);background:rgba(255,255,255,.55)}
.tabs a.on{background:#fff;color:var(--navy);box-shadow:0 1px 3px rgba(12,28,57,.12)}
.filters{background:#fff;border:1px solid var(--line);border-radius:14px;padding:.7rem;box-shadow:var(--shadow)}
.foot{padding:1.5rem 1rem 2rem}
.pos-tile,.pos-dialog{border-radius:16px}
@media (max-width:700px){
  main{padding:1rem .8rem 2.5rem}
  h1{font-size:1.6rem}
  .card{padding:1rem;border-radius:14px}
  .tabs{display:flex;flex-wrap:nowrap;width:100%}
}
/* Keep sticky panels and overlays clear of the sticky header */
.pos-cart{top:80px}
.pos-modal{z-index:100}
/* ---------- Site map ---------- */
body.map-page main{max-width:1500px}
.map-headrow{display:flex;flex-wrap:wrap;gap:.6rem 1rem;align-items:center;justify-content:space-between}
.map-headrow h1{margin-bottom:.3rem}
.map-actions{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}
.map-actions select{width:auto}
.map-actions a.badge{text-decoration:none}
.map-tools{display:flex;flex-wrap:wrap;gap:.4rem;align-items:center;background:#fff;border:1px solid var(--line);border-radius:12px;padding:.5rem .7rem;margin-bottom:.8rem}
.map-tools-label{font-weight:800;margin-right:.2rem}
.map-tools button.on,.map-toolrow button.on{background:var(--gold);border-color:var(--gold);color:var(--navy)}
.map-tools-hint{flex:1 1 260px;margin-left:.3rem}
.map-grid{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:1rem;align-items:start}
.map-main .cm-map{height:min(78vh,820px);border:1px solid var(--line);border-radius:12px}
.map-side{position:sticky;top:.75rem;max-height:calc(100vh - 1.5rem);overflow:auto}
.map-side .cm-detail{border-radius:12px;box-shadow:none}
.map-side .cm-legend-wrap h2{font-size:1.2rem}
.map-extra .map-vis{margin:.7rem 0 0}
.map-units{margin:.2rem 0 .3rem;padding-left:1.1rem;columns:2;column-gap:1rem;font-size:.9rem}
.map-edit-bar{display:flex;gap:.4rem;margin-top:.9rem;padding-top:.8rem;border-top:1px solid var(--line)}
.map-form h2{margin-top:0}
.map-form h3{margin:1rem 0 .3rem}
.map-row2{display:grid;grid-template-columns:96px 1fr;gap:.5rem}
.map-fieldhelp{margin:.25rem 0 0}
.map-check{display:flex;align-items:center;gap:.45rem;font-weight:700;margin:.7rem 0 .1rem}
.map-check input[type=checkbox]{width:18px;height:18px;margin:0}
.map-check input[type=color]{width:42px;height:30px;padding:0 2px;border:1px solid #c9c2ae;border-radius:6px;background:#fff;margin-left:auto}
.map-public{background:var(--cream);border:1px solid var(--line);border-radius:8px;padding:.45rem .6rem;margin-top:.9rem}
.map-photo{display:flex;gap:.6rem;align-items:center;margin-bottom:.4rem}
.map-photo img{width:90px;height:64px;object-fit:cover;border-radius:6px}
.map-photo .map-check{margin:0}
.map-toolrow{display:flex;gap:.35rem;flex-wrap:wrap}
.map-toolhelp{margin:.35rem 0 0}
.map-form-actions{display:flex;gap:.5rem;margin-top:1rem;position:sticky;bottom:0;background:#fff;padding:.6rem 0 .1rem}
.map-form-msg{background:var(--red-pale);color:var(--red);font-weight:700;border-radius:8px;padding:.5rem .7rem;margin-bottom:.4rem}
.map-flash{margin-bottom:.8rem}
.cm-lg-item .badge{margin-left:auto;font-size:.7rem}
body.map-editing .cm-legend-wrap{opacity:.55;pointer-events:none}
.map-cal{height:min(70vh,640px);border:1px solid var(--line);border-radius:12px}
.map-calbar{display:flex;flex-wrap:wrap;gap:.5rem 1rem;align-items:center;margin:.6rem 0}
.map-calbar label{margin:0;display:inline-flex;gap:.4rem;align-items:center}
.map-calbar input[type=range]{width:160px}
.map-nudge{display:inline-grid;grid-template-columns:repeat(3,36px);gap:3px}
.map-nudge button{padding:.3rem 0}
.cal-handle{background:none;border:0}
.cal-handle span{display:block;width:18px;height:18px;transform:translate(-50%,-50%);background:var(--gold);border:3px solid var(--navy);border-radius:50%;box-shadow:0 1px 4px rgba(0,0,0,.4);cursor:grab}
.cal-handle.centre span{width:26px;height:26px;border-radius:6px;background:#fff}
.plan-thumb{max-width:320px;border:1px solid var(--line);border-radius:8px;display:block}
.cat-row{display:grid;grid-template-columns:minmax(160px,1fr) 70px 90px auto auto;gap:.5rem;align-items:end;padding:.5rem 0;border-bottom:1px solid var(--line)}
.cat-row input[type=color]{height:38px;width:100%;padding:2px;border:1px solid #c9c2ae;border-radius:8px;background:#fff}
.cat-row label{margin-top:0}
@media (max-width:1000px){
  .map-grid{grid-template-columns:1fr}
  .map-side{position:static;max-height:none}
  .map-main .cm-map{height:60vh;min-height:340px}
  .cat-row{grid-template-columns:1fr 70px;}
}
@media print{
  body.map-page main{max-width:none}
  .map-grid{display:flex;gap:5mm;align-items:flex-start}
  .map-main{flex:0 0 auto}
  .map-side{position:static;max-height:none;overflow:visible;flex:1 1 auto;min-width:0}
  .map-side .card{border:0;padding:0}
  .map-form,.map-edit-bar,.map-flash{display:none !important}
  .cm-lg-item .badge{display:inline-block !important}
  .cm-lg-item{display:flex !important}
  .cm-chip{display:inline-flex !important}
  .mp-print-head{display:flex}
}
.map-tools [hidden],.map-form [hidden]{display:none !important}
/* ---------- Day workers, visitors, bump in/out ---------- */
.daylist{display:flex;flex-wrap:wrap;gap:.35rem}
.daypill{padding:.2rem .6rem;border-radius:99px;border:1px solid var(--line);background:#fff;color:var(--muted);font-weight:700;font-size:.85rem}
.daypill.on{background:#3E7D3C;border-color:#3E7D3C;color:#fff}
.daychips{display:flex;flex-wrap:wrap;gap:.35rem;margin:.3rem 0}
.daychip{display:inline-flex;margin:0;font-weight:700;font-size:.85rem;cursor:pointer}
.daychip input{position:absolute;opacity:0;width:1px;height:1px}
.daychip span{padding:.3rem .65rem;border:1px solid #c9c2ae;border-radius:99px;background:#fff}
.daychip.outside span{background:var(--cream);border-style:dashed}
.daychip input:checked + span{background:var(--navy);border-color:var(--navy);color:#fff}
.daychip input:focus-visible + span{outline:3px solid var(--gold);outline-offset:2px}
.bump-card h3{margin:0 0 .3rem}
.bump-card p{margin:.2rem 0}
.bump-head{display:flex;gap:1rem;justify-content:space-between;align-items:flex-start}
.bump-status{flex:none;text-align:right}
.bump-decide,.visitor-decide{margin-top:.7rem;padding-top:.7rem;border-top:1px solid var(--line)}
.bump-decide .inline{align-items:end}
.bump-decide label,.visitor-decide>label{margin-top:.3rem}
.bump-decide .seg label,.visitor-decide .seg label{margin:0;font-weight:700}
.bump-note{flex:1 1 200px !important}
.bump-note input{width:100% !important}
.bump-item{padding:.6rem 0;border-bottom:1px solid var(--line)}
.bump-item:last-child{border-bottom:0}
.bump-item p{margin:.15rem 0}
@media (max-width:700px){.bump-head{flex-direction:column;gap:.3rem}.bump-status{text-align:left}}
/* ---------- Photos ---------- */
.pphoto{display:block;width:100%;aspect-ratio:7/9;object-fit:cover;border-radius:8px;background:#E9E4D6}
.pphoto.none svg{display:block;width:100%;height:100%;border-radius:8px}
.photo-sync{display:flex;flex-wrap:wrap;gap:.8rem 1.5rem;align-items:center;justify-content:space-between}
.photo-sync form{margin:0}
.sync-bar{height:8px;background:var(--line);border-radius:99px;overflow:hidden;margin-top:.5rem;max-width:420px}
.sync-bar span{display:block;height:100%;width:0;background:var(--green);transition:width .3s}
.photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:.8rem;margin:.8rem 0}
.photo-card{position:relative;background:#fff;border:1px solid var(--line);border-radius:12px;padding:.6rem;display:flex;flex-direction:column;gap:.45rem}
.photo-frame{display:block}
.photo-meta{display:flex;flex-direction:column;gap:.15rem;line-height:1.3}
.photo-pick{position:absolute;top:.9rem;left:.9rem;margin:0;background:#fff;border-radius:6px;padding:.2rem .3rem;box-shadow:0 1px 4px rgba(0,0,0,.25)}
.photo-pick input{width:20px;height:20px;margin:0;display:block}
.photo-actions{display:flex;flex-wrap:wrap;gap:.35rem;align-items:center;margin-top:auto}
.inline-form{display:inline-flex;gap:.3rem;margin:0;align-items:center}
.deny-form select{width:auto;max-width:120px;padding:.25rem .3rem;font-size:.8rem}
.photo-upload{width:100%}
.photo-upload form{display:flex;flex-direction:column;gap:.35rem;margin-top:.35rem}
.photo-upload input[type=file]{font-size:.8rem}
.err-text{color:var(--red)}
.bulkbar-top{display:flex;flex-wrap:wrap;gap:.6rem;align-items:center;background:#fff;border:1px solid var(--line);border-radius:10px;padding:.5rem .8rem;margin:.5rem 0}
.bulkbar-top label{display:inline-flex;gap:.35rem;align-items:center;margin:0}
.person-photo{display:grid;grid-template-columns:150px 1fr;gap:1rem;align-items:start}
.person-photo .pphoto{width:150px}
@media (max-width:700px){.photo-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}.person-photo{grid-template-columns:110px 1fr}.person-photo .pphoto{width:110px}}
.photo-sync button:disabled{opacity:.45;cursor:default}
.photo-link{word-break:break-all}
details.card>summary{cursor:pointer}
.bump-add{margin-top:.6rem}
.bump-add .seg{margin:.2rem .5rem .2rem 0}

/* ---------- Program ---------- */
.pchip{display:inline-block;padding:.1rem .55rem;border-radius:999px;font-weight:700;font-size:.85rem;line-height:1.5;border:1px solid rgba(12,28,57,.12);white-space:nowrap}
.pchip.sm{font-size:.72rem;padding:0 .45rem}
.pchip.none{background:#eee;color:var(--muted)}
.pm-preview{margin:-.5rem 0 1rem;align-items:center}
.pm-preview label{margin:0}
.pnow{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-bottom:1.5rem}
.pnow-card{background:var(--navy);color:#fff;border-radius:16px;padding:1.2rem 1.4rem;box-shadow:var(--shadow)}
.pnow-card.next{background:#fff;color:var(--navy);border:1px solid var(--line)}
.pnow-card h2{font-size:1rem;text-transform:uppercase;letter-spacing:.04em;margin:0 0 .4rem;opacity:.8}
.pnow-card p{margin:.25rem 0}
.pnow-big{font-family:"Baloo 2",system-ui,sans-serif;font-size:2rem;font-weight:800;line-height:1.1}
.pnow-card .muted{color:inherit;opacity:.75}
.pdays{display:grid;gap:1rem;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));margin-bottom:1.5rem}
.pday{background:#fff;border:1px solid var(--line);border-radius:16px;overflow:hidden;box-shadow:var(--shadow)}
.pday.today{border-color:var(--gold);box-shadow:0 0 0 2px var(--gold)}
.pday h3{margin:0;padding:.7rem 1rem;background:var(--cream);border-bottom:1px solid var(--line)}
.pday h3 span{font-weight:600;color:var(--muted);font-size:.9rem}
.pday ul{list-style:none;margin:0;padding:0}
.pday li{display:grid;grid-template-columns:4.2rem 1fr;gap:.5rem;padding:.5rem .9rem;border-bottom:1px solid var(--line-soft,#efebe2);border-left:4px solid transparent}
.pday li:last-child{border-bottom:0}
.pday .pt{font-variant-numeric:tabular-nums;font-weight:700;font-size:.85rem}
.pday .pt small{font-weight:400;color:var(--muted)}
.pday li.on{background:#fff8e6}
.pk-meal{border-left-color:#9fb3e0 !important}
.pk-rotation{border-left-color:#7bb36b !important;background:#f3f9f0}
.pk-program,.pk-ceremony{border-left-color:#e9c95b !important}
.pk-guests{border-left-color:#e7a98a !important}
.pk-logistics{border-left-color:#7a8599 !important}
.pk-free{border-left-color:#c9c4b4 !important}
.prot{display:flex;flex-direction:column;gap:.15rem;margin-top:.3rem;font-size:.8rem}
.prot-table td,.prot-table th{white-space:nowrap}
.prot-table select{min-width:7.5rem}
.pcolour-totals{margin-bottom:1rem}
.pcolour-totals .stat .pchip{margin-bottom:.4rem}
a.pbase-card{display:block;text-decoration:none;color:inherit}
a.pbase-card:hover{border-color:var(--gold)}
.pact{border-top:1px solid var(--line);padding:.7rem 0}
.pact:first-of-type{border-top:0}
.pact h3{margin-bottom:.2rem}
.pact-people,.pstaff{margin:.2rem 0 .5rem;padding-left:1.1rem}
.pact-people li,.pstaff li{margin-bottom:.35rem}
.pstaff form{margin-top:.2rem}
@media (max-width:700px){
  .pnow{grid-template-columns:1fr}
  .pnow-big{font-size:1.6rem}
}

/* ---------- Risk assessments ---------- */
.ra-chip{display:inline-block;padding:.1rem .5rem;border-radius:6px;font-weight:800;font-size:.75rem;letter-spacing:.03em;color:#0c1c39}
.ra-strip{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}
.ra-form-title{font-family:"Baloo 2",system-ui,sans-serif;font-weight:800;color:#2b8fd6;font-size:1.2rem;margin:0 0 .4rem}
.ra-head{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 1rem}
.ra-head .ra-wide{grid-column:1/-1}
.ra-head input[readonly]{background:var(--cream);color:var(--muted)}
.ra-flow{display:flex;flex-wrap:wrap;gap:.3rem 1.4rem;list-style:none;padding:0;margin:.8rem 0;font-size:.82rem;font-weight:700;color:#4f81bd}
.ra-flow li:not(:last-child)::after{content:"→";margin-left:.6rem;color:var(--navy)}
.ra-help summary{cursor:pointer;font-weight:700}
.ra-matrix td{text-align:center;font-weight:800;font-size:.8rem}
.ra-dl dt{font-weight:700;margin-top:.4rem}.ra-dl dd{margin:0;font-size:.85rem}
.ra-row{padding:1rem 1.1rem}
.ra-row-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:.3rem}
.ra-row-grid{display:grid;grid-template-columns:2fr 2fr 1.4fr 2.6fr 1.4fr 1.4fr;gap:.6rem}
.ra-row-grid label{font-size:.75rem;font-weight:700;line-height:1.25;min-height:2.5em;margin:0 0 .2rem}
.ra-row-grid textarea{min-height:5.5rem}
.ra-pick{display:flex;flex-direction:column;gap:.3rem}
.ra-out{display:block;margin-top:.35rem;min-height:1.4rem}
.ra-actions{position:sticky;bottom:0;background:var(--paper);padding:.6rem 0;margin:0;z-index:2}
.ra-table td{font-size:.88rem}
.ra-stats{margin-bottom:1rem}
@media (max-width:1000px){.ra-row-grid{grid-template-columns:1fr 1fr}}
@media (max-width:600px){.ra-row-grid,.ra-head{grid-template-columns:1fr}.ra-row-grid label{min-height:0}}
.ra-actions{border-top:1px solid var(--line)}
.ra-suggest summary{cursor:pointer}
.ra-suggest-grp{display:flex;flex-wrap:wrap;gap:.35rem;align-items:center;margin:.55rem 0}
.ra-suggest-h{font-size:.75rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);flex-basis:100%}
.ra-suggest button.added{background:var(--green-pale);color:var(--green);border-color:var(--green-pale)}
.ra-row.ra-new{box-shadow:0 0 0 3px var(--gold);transition:box-shadow .4s}
.sug-item{border-top:1px solid var(--line);padding:.55rem 0}
.sug-item:first-of-type{border-top:0}
.sug-item summary{cursor:pointer}
.sug-item.sug-hidden summary strong{color:var(--muted)}
.sug-item form{margin-top:.5rem}
.sug-actions{display:flex;flex-wrap:wrap;gap:.4rem;align-items:center}

/* References */
.ref-answers{display:grid;grid-template-columns:minmax(0,1fr);gap:.2rem;margin:0}
.ref-answers dt{font-weight:700;margin-top:.8rem}
.ref-answers dd{margin:0;padding:.45rem .7rem;background:#f8f4ea;border-radius:8px;border-left:4px solid var(--line)}
.ref-answers dd.flagged{background:#fbe3e1;border-left-color:#b3261e}
fieldset.choices{border:0;padding:0;margin:.5rem 0;display:grid;gap:.4rem}
fieldset.choices label{font-weight:400;margin:0;display:flex;gap:.5rem;align-items:flex-start}
fieldset.choices input{width:auto;margin-top:.25rem}
.grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0 .8rem}
@media (max-width:700px){.grid3{grid-template-columns:1fr}}
.refs-page .photo-sync form.inline select{width:auto;min-width:0;padding:.2rem .4rem}

/* ---------- Bulk email ---------- */
.comms-head{display:flex;flex-wrap:wrap;gap:.6rem 1rem;align-items:center;justify-content:space-between}
.comms-head form{margin:0}
.comms-stats{margin-bottom:1rem}
.comms-stats a.stat{text-decoration:none;color:inherit}
.comms-stats a.stat:hover{border-color:var(--gold)}
.comms-settings{margin-top:1.5rem;max-width:640px}
.comms-layout{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:1rem;align-items:start}
.comms-side{position:sticky;top:80px;max-height:calc(100vh - 96px);overflow:auto}
@media (max-width:1000px){.comms-layout{grid-template-columns:1fr}.comms-side{position:static;max-height:none}}
.comms-kinds{border:0;padding:0;margin:0 0 .4rem;display:grid;grid-template-columns:1fr 1fr;gap:.6rem}
@media (max-width:640px){.comms-kinds{grid-template-columns:1fr}}
.comms-kind{display:flex;gap:.6rem;align-items:flex-start;font-weight:400;margin:0;padding:.75rem .85rem;border:1px solid var(--line);border-radius:12px;cursor:pointer;background:#fff}
.comms-kind:has(input:checked){border-color:var(--gold);background:var(--cream);box-shadow:0 0 0 2px rgba(245,166,33,.25)}
.comms-kind input{margin-top:.25rem}
.comms-help ul{margin:.3rem 0 .6rem;padding-left:1.2rem}
.comms-help code,.comms-page code{background:var(--cream);padding:0 .25rem;border-radius:4px}
.comms-combine{border:1px solid var(--line);border-radius:12px;padding:.5rem .9rem .7rem;margin-top:1rem}
.comms-combine legend{font-weight:700;font-size:.88rem;padding:0 .3rem}
label.check{display:flex;gap:.45rem;align-items:flex-start;font-weight:400;font-size:.9rem;margin:.25rem 0}
label.check input{margin-top:.2rem;flex:none}
.comms-group{border:1px solid var(--line);border-radius:14px;padding:.6rem 1rem .9rem;margin:0 0 1rem;position:relative;background:#fffdf8}
.comms-group legend{font-family:"Baloo 2",system-ui,sans-serif;font-size:1.1rem;font-weight:700;padding:0 .4rem}
.comms-remove{position:absolute;top:.4rem;right:.8rem}
.comms-gtext{margin:.1rem 0 .6rem;color:var(--muted)}
.comms-sec{border-top:1px solid var(--line);padding:.45rem 0}
.comms-sec>summary{cursor:pointer;font-weight:700;padding:.15rem 0}
.comms-filters{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:.4rem 1.2rem;margin-top:.5rem}
.comms-filter{min-width:0}
.comms-flabel{display:block;font-weight:700;font-size:.82rem;color:var(--muted);text-transform:uppercase;letter-spacing:.03em;margin-bottom:.15rem}
.comms-opts{display:block}
.comms-opts.long{max-height:190px;overflow:auto;border:1px solid var(--line);border-radius:8px;padding:.2rem .5rem;background:#fff}
.comms-find{margin-bottom:.3rem;padding:.3rem .5rem !important}
.comms-pick h3{margin-top:.6rem}
.comms-results{list-style:none;margin:.3rem 0;padding:.3rem;border:1px solid var(--line);border-radius:8px;background:#fff;max-height:240px;overflow:auto}
.comms-results li{margin:.15rem 0}
.comms-results button{width:100%;text-align:left}
.comms-chips{list-style:none;margin:.4rem 0;padding:0;display:flex;flex-wrap:wrap;gap:.35rem}
.comms-chips li{background:var(--sky-pale);border-radius:99px;padding:.15rem .3rem .15rem .7rem;font-size:.85rem;display:flex;gap:.3rem;align-items:center}
.comms-chips button{padding:0 .45rem;border-radius:99px;line-height:1.4}
.comms-summary.busy{opacity:.65}
.comms-total{font-size:1.05rem;margin:.2rem 0 .4rem}
.comms-total b{font-family:"Baloo 2",system-ui,sans-serif;font-size:2.2rem;line-height:1;margin-right:.2rem}
.comms-facts{margin:.2rem 0 .6rem;padding-left:1.1rem}
.comms-problems:empty{display:none}
.comms-problems{margin:.4rem 0;padding:.5rem .7rem;background:var(--red-pale);border-radius:8px}
.comms-actions{display:flex;flex-wrap:wrap;gap:.4rem}
.comms-vars ul{list-style:none;margin:0;padding:0}
.comms-vars li{margin:.3rem 0;line-height:1.3}
.comms-vars button{font-family:Consolas,Menlo,monospace;font-size:.78rem}
.comms-confirm{max-width:720px}
.comms-sendform input[name=confirm_count]{max-width:220px;font-size:1.3rem}
.comms-viewactions{margin:1rem 0}
.comms-viewactions form{margin:0}
.comms-contacts{display:grid;grid-template-columns:minmax(0,1fr) 380px;gap:1rem;align-items:start}
@media (max-width:1000px){.comms-contacts{grid-template-columns:1fr}}
label.check[hidden],[data-s-wrap][hidden]{display:none}

/* ---------- Team email ---------- */
.team-layout{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:1rem;align-items:start}
@media (max-width:900px){.team-layout{grid-template-columns:1fr}}
.team-types{border:1px solid var(--line);border-radius:12px;padding:.5rem .9rem .3rem;margin:0 0 .4rem}
.team-types legend{font-weight:700;font-size:.88rem;padding:0 .3rem}
.team-list{margin:0;padding-left:1.1rem;columns:2;column-gap:1.2rem}
.team-who{margin:0;padding-left:1.1rem;max-height:420px;overflow:auto}
.team-history{margin:0;padding-left:1.1rem}
.team-history li{margin:.35rem 0}
.team-message{border:1px solid var(--line);border-radius:10px;padding:.8rem 1rem;background:var(--cream)}
.team-message table{width:auto;background:none}.team-message td{border:0}.team-message tr:hover td{background:none}

/* =====================================================================
   Phones: bottom shortcut bar, home-screen app, stacked tables, compact filters
   ===================================================================== */
.m-only,.tabbar{display:none}
.app-back{display:none}
@media (max-width:800px){
  .m-only{display:block}
  /* iPhone notch / home bar when installed (status bar is see-through) */
  .top{padding-top:env(safe-area-inset-top)}
  .top-inner{padding-left:max(.9rem,env(safe-area-inset-left));padding-right:max(.9rem,env(safe-area-inset-right))}
  .mainnav{top:calc(58px + env(safe-area-inset-top))}
  main{padding-left:max(1rem,env(safe-area-inset-left));padding-right:max(1rem,env(safe-area-inset-right))}
  /* Inputs at 16px stop iPhones zooming in when you tap a field */
  input[type=text],input[type=email],input[type=password],input[type=date],input[type=time],input[type=datetime-local],input[type=search],input[type=number],select,textarea{font-size:16px}
  button,.btn{min-height:42px}
  button.small,.btn.small{min-height:34px}
  h1{font-size:1.6rem}

  /* Bottom shortcut bar */
  body.has-tabbar{padding-bottom:calc(64px + env(safe-area-inset-bottom))}
  .tabbar{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:45;background:#fff;border-top:1px solid var(--line);box-shadow:0 -6px 20px rgba(12,28,57,.1);padding:0 env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left)}
  .tab{flex:1 1 0;min-width:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-height:60px;padding:.35rem 0 .3rem;background:none;border:0;border-radius:0;color:var(--muted);font:inherit;font-size:.72rem;font-weight:700;text-decoration:none;cursor:pointer}
  .tab svg{width:24px;height:24px}
  .tab.on{color:var(--navy)}
  .tab.on svg{color:var(--gold-deep)}
  .tab:hover{background:none;color:var(--navy)}
  body.nav-open .tabbar{display:none}
  .bulkbar{bottom:calc(64px + env(safe-area-inset-bottom))}

  /* Dashboard: "Your tools" */
  .mtools h2{margin-top:.4rem}
  .mtools-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:.6rem;margin-bottom:1.2rem}
  .mtool{display:flex;align-items:center;gap:.6rem;background:#fff;border:1px solid var(--line);border-radius:14px;padding:.75rem .7rem;color:var(--navy);text-decoration:none;font-size:.95rem;min-height:58px}
  .mtool .ico{flex:none;width:36px;height:36px;border-radius:10px;display:grid;place-items:center;background:#eef3f9}
  .mtool .ico svg{width:19px;height:19px}
  .mtool b{line-height:1.2}

  /* Tables become cards (rows stacked, each value labelled with its column) */
  .table-wrap.stacked{border:0;background:none;box-shadow:none;overflow:visible}
  .table-wrap.stacked table,.table-wrap.stacked tbody,.table-wrap.stacked tr,.table-wrap.stacked td{display:block;width:100%}
  .table-wrap.stacked table{background:none}
  .table-wrap.stacked tr:first-child:has(th),.table-wrap.stacked thead{display:none}
  .table-wrap.stacked tr{position:relative;background:#fff;border:1px solid var(--line);border-radius:14px;margin-bottom:.6rem;padding:.55rem .85rem;box-shadow:0 1px 3px rgba(12,28,57,.05)}
  .table-wrap.stacked tr:hover td{background:none}
  .table-wrap.stacked td{border:0;padding:.2rem 0;display:grid;grid-template-columns:7.5rem minmax(0,1fr);gap:.6rem;text-align:left;overflow-wrap:anywhere}
  .table-wrap.stacked td::before{content:attr(data-label);font-size:.74rem;font-weight:800;text-transform:uppercase;letter-spacing:.03em;color:var(--muted);padding-top:.15rem}
  .table-wrap.stacked td.st-title{display:block;font-size:1.05rem;padding:.15rem 2.2rem .35rem 0}
  .table-wrap.stacked td.st-title::before{display:none}
  .table-wrap.stacked td.st-check{position:absolute;top:.55rem;right:.75rem;width:auto;padding:0}
  .table-wrap.stacked td.st-check::before{display:none}
  .table-wrap.stacked td.st-empty{display:none}
  .table-wrap.stacked td.st-wide{display:block}
  .table-wrap.stacked td.st-wide::before{display:none}
  .table-wrap.stacked td.num{text-align:left}
  .table-wrap.stacked .badge{white-space:normal}

  /* Filter bars: search box and button stay, the rest folds away */
  .filters.folding>*:not(.fold-keep){display:none}
  .filters.folding.open>*{display:revert}
  .filters .fold-toggle{display:inline-flex}
  .filters input[type=search]{flex:1 1 100%}
}
@media (min-width:801px){.filters .fold-toggle{display:none}}

/* Installed app: a back button in the header (there's no browser back button) */
@media (display-mode:standalone){
  .app-back:not([hidden]){display:inline-grid;place-items:center;width:38px;height:38px;margin-left:-.4rem;padding:0;border:0;border-radius:10px;background:transparent;color:#fff}
  .app-back svg{width:22px;height:22px}
  .foot{display:none}
}

/* "Add to home screen" tip */
.install-tip{position:fixed;left:0;right:0;bottom:0;z-index:46;padding:.6rem max(.6rem,env(safe-area-inset-left)) calc(.6rem + env(safe-area-inset-bottom))}
body.has-tabbar .install-tip{bottom:calc(60px + env(safe-area-inset-bottom));padding-bottom:.6rem}
.install-tip-in{max-width:560px;margin:0 auto;display:flex;align-items:center;gap:.7rem;background:var(--navy);color:#fff;border-radius:16px;padding:.7rem .8rem;box-shadow:0 12px 30px rgba(12,28,57,.35)}
.install-tip-in img{flex:none;border-radius:10px}
.install-tip-in p{margin:0;flex:1;font-size:.88rem;line-height:1.35}
.install-tip-in .share-ico{display:inline-block;width:15px;height:15px;vertical-align:-2px}
.install-tip-in button{flex:none}
@media print{.tabbar,.install-tip,.app-back{display:none!important}}
@media (max-width:800px){.photo-card{min-width:0}.photo-actions{flex-wrap:wrap;min-width:0}.photo-actions>*{min-width:0;max-width:100%}.photo-actions select{width:100%}}

/* View-only pages (Event Viewers on References, Shop and Email): no forms that change anything */
body.read-only form[method=post],body.read-only form[method=POST],body.read-only [data-rw],body.read-only .bulkbar{display:none!important}

/* ---------- Applicant view (View my application) ---------- */
.login-choice{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:1.25rem;max-width:960px;margin:2rem auto;align-items:start}
.login-choice .card.narrow{margin:0;max-width:none}
.app-entry{background:linear-gradient(160deg,var(--sky-pale),#fff 70%);border-color:#c5def0}
.app-entry h2{font-size:1.5rem}
.app-hint{background:var(--cream);border:1px solid var(--line);border-radius:10px;padding:.7rem .9rem;margin:1rem 0}
.app-hint p{margin:.2rem 0 .5rem}
.app-hint .inline{gap:.4rem}
.code-input{font-size:1.6rem;letter-spacing:.4em;text-align:center;font-variant-numeric:tabular-nums;max-width:12rem}
.app-bar{display:flex;justify-content:space-between;align-items:center;gap:.75rem;flex-wrap:wrap;margin-bottom:1rem}
.app-bar form{margin:0}
.app-hero{display:grid;grid-template-columns:110px 1fr;gap:1.1rem;align-items:center;background:var(--navy);color:#fff;border-radius:18px;padding:1.2rem 1.4rem;margin-bottom:1rem;box-shadow:var(--shadow);position:relative;overflow:hidden}
.app-hero::after{content:"";position:absolute;left:0;right:0;bottom:0;height:6px;background:var(--gold)}
.app-hero h1{color:#fff;margin:.05em 0 .25em;font-size:2rem}
.app-hero .small{color:#dbe6f3;margin:.3rem 0 0}
.app-hero .small strong{color:#fff}
.app-hero-photo{display:block;border:3px solid #fff;border-radius:12px;overflow:hidden;background:#fff}
.app-hero-photo .pphoto{border-radius:0}
.app-eyebrow{margin:0;font-size:.75rem;text-transform:uppercase;letter-spacing:.08em;color:var(--gold);font-weight:700}
.app-badges{margin:0}
.app-todo{border-left:5px solid var(--gold);background:var(--amber-pale)}
.app-todo ul{margin:.2rem 0 0;padding-left:1.2rem}
.app-todo li{margin:.2rem 0}
.app-list{list-style:none;margin:0;padding:0}
.app-list li{padding:.55rem 0;border-bottom:1px solid var(--line)}
.app-list li:last-child{border-bottom:0}
.app-sched{list-style:none;padding:0;margin:0 0 1rem}
.app-sched li{padding:.45rem 0;border-bottom:1px solid var(--line)}
.app-upload,.app-ref{margin-top:.75rem;border-top:1px solid var(--line);padding-top:.5rem}
.app-tips{margin:.2rem 0 .5rem;padding-left:1.1rem;color:var(--muted)}
.app-program details{margin-top:.75rem}
.app-program summary{cursor:pointer;font-weight:700}
.app-foot{text-align:center;margin-top:1.5rem}
@media (max-width:600px){
  .app-hero{grid-template-columns:84px 1fr;padding:1rem;gap:.85rem}
  .app-hero h1{font-size:1.5rem}
  .login-choice{margin:1rem auto}
}
