/* ═══ Routelink hub — surface styles (bookings · today · gate · walk-in ·
       capacity · sync · money surfaces · order emails · portfolio) ═══ */

/* ---------- booking lanes ---------- */
.lanes{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px;background:#ECE8DC;border-radius:11px;padding:4px;width:fit-content;max-width:100%}
.lanes .lane{display:flex;align-items:center;gap:7px;padding:7px 14px;border-radius:8px;font-size:12.6px;font-weight:500;color:var(--mut);white-space:nowrap}
.lanes .lane:hover:not(.on){background:rgba(255,255,255,.55);color:var(--ink)}
.lanes .lane.on{background:#fff;color:var(--ink);font-weight:600;box-shadow:0 1px 3px rgba(0,0,0,.1)}
.lanecount{font-size:10.5px;font-weight:700;font-variant-numeric:tabular-nums;background:#DDD8C9;color:var(--mut);border-radius:999px;padding:1px 7px;min-width:20px;text-align:center}
.lane.on .lanecount{background:var(--teal);color:#06272B}
.lane[data-lane=issues] .lanecount:not(:empty){background:#FDEBE3;color:var(--orange)}
.lane[data-lane=issues].on .lanecount{background:var(--orange);color:#fff}

.attchip{display:inline-block;font-size:10.5px;font-weight:700;letter-spacing:.4px;padding:2px 9px;border-radius:999px;white-space:nowrap}
.attchip.added{background:#E0F5F4;color:var(--teal-d)}
.attchip.changed{background:#FFF4E0;color:var(--amber)}
.reasonchip{display:inline-block;font-size:11px;font-weight:600;color:var(--orange);background:#FDEBE3;border-radius:999px;padding:2px 10px;white-space:nowrap}
tr.datehead td{background:var(--cream);font-weight:600;font-size:12.3px;color:var(--ink);border-bottom:1px solid #E3DCC8;padding:8px 12px}
tr.datehead .sub2{font-weight:500;color:var(--mut);font-size:11.5px}
tr.attn td:first-child{border-left:3px solid var(--amber)}
tr.dim td{opacity:.55}

.bulkbar{display:flex;align-items:center;gap:14px;background:#fff;border:1px solid var(--line);border-radius:11px;padding:8px 14px;margin-bottom:12px;flex-wrap:wrap}
.bulkbar .selall{display:flex;align-items:center;gap:7px;font-size:12.5px;color:var(--ink);cursor:pointer}
.bulkbar .sub{margin-top:0}
.bulkbar #bulkGo{margin-left:auto}
td.selcol,th.selcol{width:30px;padding-right:0}
td.selcol input,.bulkbar input[type=checkbox]{width:15px;height:15px;accent-color:var(--teal-d);cursor:pointer}
td.rowact{text-align:right;white-space:nowrap}

/* drawer task checklist + money */
.taskcard{background:#fff;border:1px solid var(--line);border-radius:11px;padding:12px 14px;margin:12px 0}
.tasktitle{font-size:10.5px;text-transform:uppercase;letter-spacing:1px;color:var(--mut);margin-bottom:8px;font-weight:600}
.taskrow{display:flex;align-items:center;gap:9px;font-size:12.8px;padding:4px 0;cursor:pointer}
.taskrow input{width:15px;height:15px;accent-color:var(--teal-d);cursor:pointer}
.note.issuenote{background:#FDEBE3;border-color:#F0CBB8;color:var(--orange);font-weight:500}
.moneycard{background:var(--cream);border:1px solid #E3DCC8;border-radius:11px;padding:12px 14px;margin:12px 0}
.moneycard .mrow{display:flex;justify-content:space-between;font-size:12.8px;padding:3px 0}
.moneycard .mrow span{color:var(--mut)}
.moneycard .mrow b{font-variant-numeric:tabular-nums;font-weight:600}
.moneycard .mrow.total{border-bottom:1px solid #E3DCC8;padding-bottom:7px;margin-bottom:5px}
.moneycard .mrow.venue b{color:var(--teal-d)}

/* ---------- today / capacity bars ---------- */
.needchip{font-size:11px;font-weight:600;color:var(--amber);background:#FFF4E0;border-radius:999px;padding:2px 10px;white-space:nowrap}
.prodblock{padding:12px 0;border-top:1px solid #EFEBDF}
.prodblock:first-of-type{border-top:none}
.prodhead{display:flex;align-items:baseline;justify-content:space-between;gap:10px;flex-wrap:wrap}
.prodhead b{font-size:13.5px}
.prodhead .frac{font-weight:500;color:var(--mut);font-size:12px;font-variant-numeric:tabular-nums}
.capnums{font-size:11.5px;color:var(--mut);font-variant-numeric:tabular-nums}
.capbar{height:9px;border-radius:99px;background:#ECE8DC;overflow:hidden;display:flex;margin:7px 0 9px}
.capbar .in{background:var(--teal-d)}
.capbar .bk{background:var(--ink)}
.caplegend{display:flex;gap:14px;font-size:10.5px;color:var(--mut);margin-bottom:6px}
.caplegend i{display:inline-block;width:8px;height:8px;border-radius:2px;margin-right:5px;vertical-align:baseline}

/* ---------- capacity calendar ---------- */
.calcard{padding:0;overflow-x:auto}
.calgrid{display:grid;grid-template-columns:repeat(7,minmax(120px,1fr));min-width:860px}
.calhead{font-size:10.5px;text-transform:uppercase;letter-spacing:1px;color:var(--mut);padding:9px 10px;border-bottom:2px solid var(--line)}
.calday{border-bottom:1px solid #EFEBDF;border-right:1px solid #EFEBDF;padding:7px 8px;min-height:78px;vertical-align:top}
.calday:nth-child(7n){border-right:none}
.calday.out{background:#FBF9F2}
.calday.past{opacity:.5}
.calday.now .caldnum{color:var(--teal-d)}
.calday.now{box-shadow:inset 0 0 0 2px var(--teal)}
.calday.shut{background:#FBF3F3}
.calday.click{cursor:pointer}
.calday.click:hover{background:#FBF9F2}
.calday.shut.click:hover{background:#F7ECEC}
.caldnum{font-size:12px;font-weight:600;margin-bottom:5px;display:flex;align-items:center;gap:6px}
.shutchip{font-size:9.5px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--red);background:#F5E9E9;border-radius:999px;padding:1px 7px}
.sessrow{display:flex;align-items:center;gap:6px;margin:3px 0;font-size:11px}
.sessrow .sesst{font-variant-numeric:tabular-nums;color:var(--mut);flex:none;width:34px}
.sessrow .sessbar{flex:1;height:7px;border-radius:99px;background:#ECE8DC;overflow:hidden;display:block}
.sessrow .sessbar i{display:block;height:100%;background:var(--ink);border-radius:99px}
.sessrow .sessn{flex:none;min-width:20px;text-align:right;font-weight:600;font-variant-numeric:tabular-nums;color:var(--green)}
.sessrow .sessn.low{color:var(--orange)}
.sessrow .sessn.none{color:var(--red)}
.sessrow.closed .sessclosed{font-size:10px;font-weight:600;color:var(--red)}
.nosess{color:var(--mut-l);font-size:12px}
.capsess{background:#fff;border:1px solid var(--line);border-radius:11px;padding:12px 14px;margin:10px 0}
.capsess.off{background:#FBF3F3;border-color:#EBD3D3}
.sessact{display:flex;align-items:center;gap:10px;margin-top:9px;flex-wrap:wrap}
.sessact input[type=number]{padding:5px 8px}
.dowpick{display:flex;gap:5px;flex-wrap:wrap}
.dowpick .dow{display:inline-flex;align-items:center;justify-content:center;border:1px solid #D8D3C4;border-radius:8px;padding:5px 9px;font-size:11.5px;font-weight:500;cursor:pointer;background:#fff}
.dowpick .dow input{position:absolute;opacity:0;pointer-events:none}
.dowpick .dow.on{background:var(--ink);color:#fff;border-color:var(--ink);font-weight:600}

/* ---------- My day (U1) ---------- */
.mdheadline{font-size:14px;font-weight:600;margin:2px 0 10px;color:var(--ink)}
.mdlist{display:flex;flex-direction:column;gap:8px;margin-bottom:14px}
.mditem{display:flex;align-items:center;gap:13px;width:100%;text-align:left;background:#fff;border:1px solid var(--line);border-radius:13px;padding:13px 16px;cursor:pointer;transition:transform .1s ease,box-shadow .1s ease}
.mditem:hover{transform:translateY(-1px);box-shadow:0 8px 22px rgba(14,22,51,.09)}
.mditem:focus-visible{outline:2px solid var(--teal)}
.mditem.urgent{border-left:3px solid var(--orange)}
.mdicon{flex:none;width:34px;height:34px;border-radius:10px;background:var(--cream);display:flex;align-items:center;justify-content:center;font-size:15px}
.mditem.urgent .mdicon{background:#FDEBE3}
.mdtxt{display:flex;flex-direction:column;gap:1px;min-width:0;flex:1}
.mdtxt b{font-size:13.6px;letter-spacing:-.1px}
.mdsub{font-size:11.5px;color:var(--mut)}
.mdcount{flex:none;font-size:13px;font-weight:700;font-variant-numeric:tabular-nums;background:var(--cream);border:1px solid #E3DCC8;border-radius:999px;padding:3px 11px}
.mditem.urgent .mdcount{background:#FDEBE3;border-color:#F0CBB8;color:var(--orange)}
.mdchev{flex:none;color:var(--teal-d);font-weight:700}
.mdclear{background:#E6F6F0;border:1px solid #BFE5D4;border-radius:13px;padding:22px;text-align:center;color:var(--mut);font-size:12.5px;margin-bottom:14px}
.mdclear b{display:block;color:var(--green);font-size:16px;margin-bottom:3px}
/* owner week digest */
.mdweek h2{margin-bottom:2px}
.wkrow{display:flex;align-items:center;gap:10px;padding:5px 0;font-size:12.3px}
.wkch{flex:none;width:130px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wkbar{flex:1;height:9px;border-radius:99px;background:#ECE8DC;overflow:hidden}
.wkbar i{display:block;height:100%;background:var(--teal-d);border-radius:99px}
.wkn{flex:none;min-width:110px;text-align:right;font-variant-numeric:tabular-nums;color:var(--mut)}
/* mgr schedule strip */
.mdsched{display:flex;gap:8px;overflow-x:auto;padding-bottom:4px;-webkit-overflow-scrolling:touch}
.schitem{flex:none;display:flex;flex-direction:column;align-items:flex-start;gap:2px;border:1px solid var(--line);border-radius:11px;padding:9px 12px;background:var(--cream);min-width:96px;cursor:pointer;text-align:left}
.schitem:hover{background:#EFEBDF}
.schitem b{font-size:13px;font-variant-numeric:tabular-nums}
.schitem .schname{font-size:10.5px;color:var(--mut);max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.schitem .schn{font-size:11px;font-weight:600;color:var(--teal-d);font-variant-numeric:tabular-nums}
.schitem.shut{background:#FBF3F3;border-color:#EBD3D3}
.schitem.shut .schn{color:var(--red)}
/* gate landing (phone-first) */
.gdcard{background:#fff;border:1px solid var(--line);border-radius:16px;padding:18px;margin-bottom:12px}
.gdprog{margin-bottom:14px}
.gdnums{font-size:15px;margin-bottom:8px}
.gdnums b{font-size:19px;font-variant-numeric:tabular-nums}
.gdprog .bar{height:10px;border-radius:99px;background:#ECE8DC;overflow:hidden}
.gdprog .bar .fill{height:100%;background:var(--teal-d);border-radius:99px;transition:width .3s ease}
.gdbig{width:100%;font-size:16px;padding:15px;border-radius:13px}

/* ---------- People & access (U5) ---------- */
.sharedchip{display:inline-block;font-size:9.5px;font-weight:700;letter-spacing:.8px;text-transform:uppercase;padding:2px 8px;border-radius:999px;background:#EEF3FB;color:#1D4ED8;vertical-align:middle}
.rolechip.navy{background:var(--cream);color:var(--ink);border:1px solid #E3DCC8}
.codebox{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:27px;font-weight:700;letter-spacing:7px;text-align:center;background:var(--cream);border:1px dashed #C9C2AD;border-radius:12px;padding:16px 10px;margin-top:12px;user-select:all}

/* ---------- gate ---------- */
.gateprog{display:flex;align-items:center;gap:12px;margin-bottom:12px;font-size:12.5px;color:var(--ink)}
.gateprog b{font-variant-numeric:tabular-nums}
.gateprog .bar{flex:1;height:6px;border-radius:99px;background:#ECE8DC;overflow:hidden}
.gateprog .bar .fill{height:100%;background:var(--teal-d);border-radius:99px;transition:width .3s ease}
.gatesync{font-size:11px;color:var(--mut);margin:-8px 2px 14px;text-align:right;font-variant-numeric:tabular-nums}
/* U2 gate pass: giant persistent search — sticks to the top while scrolling */
input.gatesearch{font-size:17px;padding:15px;width:100%;border-radius:13px;margin-bottom:14px;position:sticky;top:-8px;z-index:6;box-shadow:0 4px 16px rgba(14,22,51,.08)}
.gatecard{background:#fff;border:1px solid var(--line);border-radius:16px;padding:18px;display:flex;align-items:center;gap:14px;margin-bottom:10px;flex-wrap:wrap}
.gatecard b{font-size:16px}
.gatecard.done{background:#F2FAF9;border-color:#BFE7E5}
.gatecard .big{margin-left:auto;font-size:15px;padding:14px 26px;border-radius:13px;flex:none}
/* U2: FULL-SCREEN check-in result — green/amber/red, tap anywhere to dismiss */
.gatefs{position:fixed;inset:0;z-index:140;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;text-align:center;color:#fff;padding:28px;cursor:pointer;animation:fsin .18s ease}
@keyframes fsin{from{opacity:0}to{opacity:1}}
.gatefs.ok{background:var(--green)}
.gatefs.dup{background:var(--amber)}
.gatefs.err{background:var(--red)}
.gatefs .fsmark{font-size:64px;font-weight:700;line-height:1;width:110px;height:110px;border-radius:999px;background:rgba(255,255,255,.16);display:flex;align-items:center;justify-content:center;margin-bottom:10px}
.gatefs .fshead{font-size:30px;font-weight:700;letter-spacing:-.4px}
.gatefs .fssub{font-size:16px;color:rgba(255,255,255,.92)}
.gatefs .fssub2{font-size:13.5px;color:rgba(255,255,255,.75)}
.gatefs .fsdismiss{position:absolute;bottom:26px;left:0;right:0;font-size:12px;letter-spacing:1.4px;text-transform:uppercase;color:rgba(255,255,255,.65)}
.entchip.tap{cursor:pointer}
.entchip.tap:hover{background:#CBEEEC}
@media(max-width:700px){
  .gatecard .big{margin-left:0;width:100%;text-align:center}
}

/* ---------- walk-in ---------- */
.prodpick{display:flex;flex-direction:column;gap:8px;margin:10px 0}
.prodopt{display:flex;align-items:center;gap:12px;border:1px solid var(--line);border-radius:12px;padding:12px 14px;cursor:pointer;background:#fff;text-align:left;width:100%}
.prodopt:hover{background:#FBF9F2}
.prodopt.on{outline:2px solid var(--teal);border-color:transparent}
.prodopt .pname{font-weight:600;font-size:13.5px}
.prodopt .pprice{font-size:12px;color:var(--mut)}
.prodopt .pseats{margin-left:auto;text-align:right;font-size:12px;color:var(--teal-d);font-weight:600;white-space:nowrap}
.prodopt .pseats.low{color:var(--orange)}
.prodopt .pseats.none{color:var(--red)}
.stepper{display:inline-flex;align-items:center;gap:0;border:1px solid #D8D3C4;border-radius:9px;background:#fff;overflow:hidden}
.stepper button{width:38px;height:36px;font-size:17px;font-weight:600;color:var(--ink)}
.stepper button:hover{background:var(--cream)}
.stepper b{min-width:40px;text-align:center;font-size:15px;font-variant-numeric:tabular-nums}
.payseg{display:flex;gap:8px;flex-wrap:wrap}
.payseg button{border:1px solid #D8D3C4;border-radius:9px;padding:9px 16px;background:#fff;font-weight:500}
.payseg button.on{background:var(--ink);color:#fff;border-color:var(--ink);font-weight:600}
.wsuccess{background:#fff;border:1px solid var(--line);border-radius:16px;padding:30px;text-align:center;max-width:560px}
.wsuccess .wid{font-size:34px;font-weight:700;letter-spacing:1px;color:var(--teal-d);font-family:ui-monospace,Menlo,monospace;margin:10px 0}
.wsuccess .wok{display:inline-block;background:#E6F6F0;color:var(--green);font-weight:600;border-radius:999px;padding:4px 14px;font-size:12px;letter-spacing:.6px}
.walkform{max-width:560px}
.wrow{display:grid;grid-template-columns:110px 1fr;gap:10px 12px;align-items:center;margin:10px 0;font-size:12.8px}
.wrow>span{color:var(--mut);font-size:12px}
.wtotal{display:flex;justify-content:space-between;align-items:center;margin-top:14px;flex-wrap:wrap;gap:10px}
.wtotal h1{font-size:24px}

/* ---------- statements + reconcile ---------- */
.upcard h2{margin-bottom:2px}
.uprow{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.uprow input[type=file]{padding:6px;background:#fff;flex:1;min-width:210px}
.st.MATCHED{background:#E6F6F0;color:var(--green)}
.st.ROUNDING{background:#E0F5F4;color:var(--teal-d)}
.st.MISMATCH{background:#FFF4E0;color:var(--amber)}
.st.DUPLICATE{background:#FDEBE3;color:var(--orange)}
.st.ORPHAN-ROW{background:#FDEBE3;color:var(--orange)}
.st.CANCELLED-PAID{background:#F5E9E9;color:var(--red)}
.st.MISSING{background:#F5E9E9;color:var(--red)}
tr.misrow td{background:#FDF7F7}
.twbanner{display:flex;gap:10px;align-items:baseline;flex-wrap:wrap;border-radius:10px;padding:11px 15px;font-size:12.5px;margin-bottom:10px;border:1px solid}
.twbanner.leak{background:#FBEAEA;border-color:#E5C4C4;color:var(--red)}
.twbanner.leak b{font-size:14px}
.twbanner.ok{background:#E6F6F0;border-color:#BFE5D4;color:var(--green)}
.twbanner span{color:var(--mut);font-size:11.5px}

/* ---------- month locks + invoices ---------- */
.lockbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;background:#fff;border:1px solid var(--line);border-radius:12px;padding:10px 16px;margin-bottom:14px}
.lockbar.locked{background:#E0F5F4;border-color:#B5E4E2}
.lockbar .lockmsg{font-size:12.5px}
.lockbar.locked .lockmsg b{color:var(--teal-d)}
.lockbar .lockwhy{font-size:11px;color:var(--mut)}
.st.LOCKED{background:#E0F5F4;color:var(--teal-d)}
.pk{display:inline-block;font-size:10.5px;font-weight:700;letter-spacing:.6px;padding:2px 9px;border-radius:999px;vertical-align:middle}
.pk.LL{background:#E0F5F4;color:var(--teal-d)}
.pk.RL{background:#FDEBE3;color:var(--orange)}
.invgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(330px,1fr));gap:12px;margin-bottom:6px}
.invgrid .card{margin-bottom:0}
.invgrid td.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.invgrid tr.total td{font-weight:700;border-bottom:none;border-top:2px solid var(--ink)}
.basispill{display:inline-block;font-size:11px;font-weight:600;padding:3px 11px;border-radius:999px;background:#FFF4E0;color:var(--amber);white-space:nowrap}
.basispill.locked{background:#E0F5F4;color:var(--teal-d)}

/* ---------- system profile + sync ---------- */
.profchip{display:inline-block;font-size:10.5px;font-weight:600;letter-spacing:.4px;padding:2px 10px;border-radius:999px;white-space:nowrap;background:#EEF3FB;color:#1D4ED8;vertical-align:middle}
.profchip.none{background:#E0F5F4;color:var(--teal-d)}
.pushwrap{display:inline-flex;flex-direction:column;align-items:flex-start;gap:3px}
.synccap{font-size:10.5px;color:var(--mut);letter-spacing:.2px;white-space:nowrap}
.vcards{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:12px;margin-bottom:14px}
.vcard{margin-bottom:0}
.ladder{display:flex;flex-direction:column;gap:8px}
.lrung{display:flex;gap:10px;align-items:center;flex-wrap:wrap;padding:8px 10px;border:1px solid var(--line);border-radius:10px;font-size:12.5px}
.lrung .lstep{flex:none;font-size:10px;font-weight:700;letter-spacing:1px;padding:2px 8px;border-radius:6px;background:#EEE9DC;color:var(--mut)}
.lrung b{font-weight:600}
.lrung .sub2{flex:1 1 auto}
.lrung .lcfg{display:inline-flex;gap:6px}
.lrung .lcfg input{width:130px;font-size:11px;padding:4px 8px;background:#F3F0E8;color:var(--mut-l)}

/* ---------- entitlements (C1.5) ---------- */
.entcard{background:var(--cream);border:1px solid #E3DCC8;border-radius:12px;padding:12px 14px;margin:10px 0}
.entcard .entrow{display:flex;justify-content:space-between;gap:10px;font-size:12px;color:var(--mut);padding:2px 0}
.entcard .entrow.head{font-size:12.5px;color:inherit;font-weight:500;padding-bottom:6px;border-bottom:1px dashed var(--line);margin-bottom:4px}
.entcard .entbal{color:var(--teal-d);font-size:14px}
.entcard .btn{margin-top:8px}
.entchip{display:inline-block;font-size:10px;font-weight:600;padding:1px 8px;border-radius:999px;background:#EEE9DC;color:var(--mut);white-space:nowrap}
.entchip.on{background:#E0F5F4;color:var(--teal-d)}

/* ---------- order emails (R3a ingest inbox) ---------- */
.ingcard{margin-bottom:12px}
.inghead{display:flex;gap:12px;align-items:flex-start;justify-content:space-between;flex-wrap:wrap;margin-bottom:6px}
.ingverd{display:flex;gap:6px;flex-wrap:wrap}
.vchip{display:inline-block;font-size:9.5px;font-weight:700;letter-spacing:.8px;padding:2px 8px;border-radius:999px;background:#EEE9DC;color:var(--mut)}
.vchip.ok{background:#E6F6F0;color:var(--green)}
.vchip.bad{background:#FBEAEA;color:var(--red)}
.ingsum{width:auto;margin:6px 0 4px}
.ingsum th{text-align:left;font-size:10.5px;color:var(--mut);font-weight:600;padding:3px 14px 3px 0;vertical-align:top;white-space:nowrap}
.ingsum td{padding:3px 0;border-bottom:none}
.attrow{display:flex;gap:8px;flex-wrap:wrap;margin:8px 0 2px}
.attchipf{display:inline-flex;gap:6px;align-items:center;font-size:11.5px;font-weight:600;padding:4px 11px;border-radius:999px;background:#E0F5F4;color:var(--teal-d);text-decoration:none}
.attchipf:hover{background:#CBEEEC}
.attchipf.off{background:#EEE9DC;color:var(--mut)}
.ingfoot{display:flex;gap:10px;align-items:center;justify-content:space-between;flex-wrap:wrap;margin-top:10px;padding-top:10px;border-top:1px solid var(--line)}
.ingacts{display:inline-flex;gap:8px;flex-wrap:wrap}
.mapchip{display:inline-block;font-size:11px;font-weight:600;padding:3px 11px;border-radius:999px;background:#FFF4E0;color:var(--amber)}
.mapchip.ok{background:#E6F6F0;color:var(--green)}
