:root{
  --ink:#15231f;--muted:#65736e;--paper:#f4f6f2;--card:#fff;--green:#0c6b52;--mint:#d9eee5;--lime:#d7f06a;--amber:#e9a13b;--red:#b23b31;--line:#dce3de;--shadow:0 12px 34px rgba(18,50,39,.08);
  --space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.5rem;--space-6:2rem;
  --radius-sm:8px;--radius-md:12px;--radius-lg:16px;--radius-xl:20px;
  --font-sm:.82rem;--font-md:1rem;--font-lg:1.25rem;--touch:44px;
}
.pager{display:flex;align-items:center;justify-content:center;gap:.65rem;flex-wrap:wrap;margin:1rem 0 .25rem;color:var(--muted);font-size:var(--font-sm)}
.pager .button{min-height:38px;padding:.4rem .75rem;font-size:.82rem}
.narrow{max-width:640px}
.ops-row{border-top:1px solid var(--line);padding:.85rem 0;display:grid;gap:.55rem}
.ops-row:first-of-type{border-top:0}
.ops-main{display:grid;grid-template-columns:auto 1fr auto;gap:.75rem;align-items:center}
.ops-main small{display:block;color:var(--muted)}
.ops-actions{display:grid;gap:.4rem}
.ops-actions .inline-form{flex-wrap:wrap}
@media(max-width:640px){.ops-main{grid-template-columns:auto 1fr}.ops-main .badge{grid-column:2;justify-self:start}}
*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font:15px/1.55 system-ui,-apple-system,"PingFang SC","Microsoft YaHei",sans-serif}a{color:inherit;text-decoration:none}button,.button,input,select,textarea{font:inherit}button,.button{border:0;border-radius:12px;padding:.7rem 1rem;font-weight:700;cursor:pointer;background:var(--green);color:#fff;display:inline-flex;align-items:center;justify-content:center}.topbar{height:72px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;padding:0 3vw;gap:2.2rem;position:sticky;top:0;z-index:20}.brand{display:flex;align-items:center;gap:.65rem;white-space:nowrap}.brand span,.login-mark{display:grid;place-items:center;background:var(--green);color:#fff;border-radius:10px;width:38px;height:38px;font-size:21px;font-weight:900}.topbar nav{display:flex;gap:.25rem;flex:1;overflow:auto}.topbar nav a{padding:.55rem .7rem;border-radius:8px;white-space:nowrap;color:#53615c}.topbar nav a:hover{background:var(--paper);color:var(--green)}.user{display:grid;grid-template-columns:1fr auto;column-gap:.6rem;text-align:right;line-height:1.2}.user small{grid-column:1}.user form{grid-column:2;grid-row:1/3}.link-btn{padding:.2rem;color:var(--muted);background:none}.shell{width:min(1180px,94vw);margin:0 auto;padding:2.2rem 0 5rem}.page-head{display:flex;justify-content:space-between;align-items:flex-end;gap:2rem;margin:1rem 0 1.7rem}.page-head.compact{margin-bottom:1rem}.page-head h1{font-size:clamp(1.9rem,4vw,3rem);margin:.1rem 0;line-height:1.1}.page-head p{margin:.3rem 0;color:var(--muted)}.eyebrow{text-transform:uppercase;letter-spacing:.14em;font-size:.76rem!important;font-weight:800;color:var(--green)!important}.actions,.footer-actions{display:flex;gap:.7rem;flex-wrap:wrap}.xl{padding:1rem 1.4rem;font-size:1.05rem}.dark{background:var(--ink)!important;color:#fff}.ghost{background:#fff!important;color:var(--ink)!important;border:1px solid var(--line)}.wide{width:100%}.stats{display:grid;gap:1rem;margin-bottom:1.2rem}.stats.three{grid-template-columns:repeat(3,1fr)}.stats.four{grid-template-columns:repeat(4,1fr)}.stat{background:#fff;border:1px solid var(--line);border-radius:16px;padding:1.3rem;box-shadow:var(--shadow)}.stat span{display:block;color:var(--muted)}.stat strong{font-size:2.2rem;line-height:1.25}.stat small{margin-left:.35rem;color:var(--muted)}.stat.accent{background:var(--green);color:#fff}.stat.accent span,.stat.accent small{color:#d7eee7}.stat.warn{border-top:4px solid var(--amber)}.panel{background:#fff;border:1px solid var(--line);border-radius:18px;padding:1.35rem;box-shadow:var(--shadow);margin-bottom:1.2rem}.panel h2{margin:.05rem 0 .8rem}.section-head,.spread{display:flex;justify-content:space-between;align-items:center;gap:1rem}.section-head{margin-bottom:1rem}.section-head h2,.section-head p{margin:0}.section-head p,.section-head span{color:var(--muted)}.vehicle-row,.resident-row,.session-row{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:1rem;padding:1rem .2rem;border-top:1px solid var(--line)}.vehicle-row:first-child,.resident-row:first-child{border-top:0}.vehicle-row:hover{background:#f8faf8}.vehicle-row small,.resident-row small,.session-row small{display:block;color:var(--muted)}.right{text-align:right}.plate{font:800 1.1rem/1 ui-monospace,"SFMono-Regular",monospace;letter-spacing:.08em;background:#eef3f0;border:1px solid #cad5cf;border-radius:6px;padding:.35rem .5rem;white-space:nowrap}.plate.big{font-size:2rem}.plate.small{font-size:.85rem}.badge{display:inline-block;background:#edf1ef;color:#51615b;border-radius:99px;padding:.2rem .55rem;font-size:.75rem;font-style:normal;white-space:nowrap}.badge.onsite,.badge.verified{background:var(--mint);color:var(--green)}.badge.pending_review,.badge.unconfirmed_exit{background:#fff0d9;color:#9a5c06}.badge.danger{background:#f9dedb;color:var(--red)}.empty{text-align:center;color:var(--muted);padding:3rem}.text-link{color:var(--green);font-weight:700}.form-card{max-width:820px;margin:auto}.stack{display:grid;gap:1rem}.grid2,.grid3{display:grid;grid-template-columns:repeat(2,1fr);gap:1rem}.grid3{grid-template-columns:repeat(3,1fr)}label{display:grid;gap:.35rem;color:#45534e;font-weight:650}input,select,textarea{width:100%;padding:.78rem .85rem;background:#fff;border:1px solid #becac4;border-radius:10px;color:var(--ink)}input:focus,select:focus,textarea:focus{outline:3px solid rgba(12,107,82,.14);border-color:var(--green)}.prominent input{text-transform:uppercase;font:800 1.3rem ui-monospace,monospace}.check{display:flex;align-items:center;gap:.5rem}.check input{width:auto}.form-actions{display:flex;justify-content:flex-end;gap:.8rem;margin-top:.5rem}.photo-drop{border:2px dashed #9fb4aa;background:#f4faf7;border-radius:14px;padding:1.2rem;text-align:center;margin-bottom:1rem}.photo-drop input{position:absolute;opacity:0;width:1px}.photo-drop label{cursor:pointer;color:var(--green)}.photo-drop span{color:var(--muted);font-weight:400}.searchbar{display:flex;gap:.65rem;margin-bottom:1.2rem}.searchbar input{font-size:1.05rem}.hero-search{max-width:800px}.hero-search input{font-size:1.3rem;padding:1rem}.exit-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1rem}.exit-card{margin:0}.exit-card details{margin-top:.7rem}.inline-form{display:flex;align-items:center;gap:.4rem}.inline-form input,.inline-form select{padding:.48rem;min-width:70px}.inline-form button{padding:.5rem .65rem}.content-grid{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(280px,.8fr);gap:1.2rem}.content-grid.equal{grid-template-columns:repeat(2,1fr)}.timeline-item{display:flex;gap:1rem;border-top:1px solid var(--line);padding:1.1rem 0}.timeline-item:first-of-type{border-top:0}.dot{width:10px;height:10px;border-radius:50%;background:var(--green);margin-top:.45rem}.grow{flex:1}.timeline-item p{margin:.35rem 0;color:var(--muted)}.privacy{display:flex;gap:.4rem;align-items:center;flex-wrap:wrap;background:#f6f8f7;padding:.6rem;border-radius:10px}.privacy select{width:auto;min-width:190px}.privacy button{padding:.45rem .65rem}.privacy output{color:var(--green);font-weight:800}.thumbs{display:flex;gap:.5rem;margin-top:.7rem}.thumbs img,.issue img{width:90px;height:65px;object-fit:cover;border-radius:8px}.issue{border-top:1px solid var(--line);padding:1rem 0}.issue:first-of-type{border-top:0}.issue p{margin:.4rem 0}.issue small,.muted{color:var(--muted)}.alert,.toast{border-radius:12px;padding:.8rem 1rem;margin-bottom:1rem}.alert.danger{background:#f9dedb;color:#7d241d}.toast{background:var(--mint);color:var(--green);position:relative}.segmented{background:#e9eeeb;border-radius:12px;padding:.25rem;display:flex;flex-wrap:wrap}.segmented a{padding:.48rem .7rem;border-radius:9px;color:var(--muted)}.segmented a.active{background:#fff;color:var(--ink);box-shadow:0 2px 6px #ccd4cf}.money-strip{display:grid;grid-template-columns:repeat(4,1fr);background:var(--ink);color:#fff;border-radius:16px;margin-bottom:1.2rem;overflow:hidden}.money-strip div{padding:1.2rem;border-right:1px solid #40514b}.money-strip span,.money-strip b{display:block}.money-strip span{color:#b7c4bf;font-size:.85rem}.money-strip b{font-size:1.4rem}.money-strip .difference{background:#344d44}.bar-row{display:grid;grid-template-columns:90px 1fr 30px;align-items:center;gap:.7rem;margin:.8rem 0}.bar-row div{height:10px;background:#edf1ef;border-radius:8px;overflow:hidden}.bar-row i{display:block;height:100%;background:var(--green);border-radius:8px}.rank-row{display:grid;grid-template-columns:30px 1fr auto;gap:.6rem;padding:.65rem 0;border-bottom:1px solid var(--line)}.rank-row span{display:grid;place-items:center;width:25px;height:25px;border-radius:50%;background:var(--mint);color:var(--green)}.rank-row em{font-style:normal;color:var(--muted)}.resident-row{grid-template-columns:1fr auto}.add-box{border-top:1px solid var(--line);margin-top:1rem;padding-top:1rem}.add-box summary{cursor:pointer;color:var(--green);font-weight:800}.add-box form{margin-top:1rem}.session-row{grid-template-columns:1fr auto}.danger-btn{background:#f8e4e1;color:var(--red)}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;min-width:760px}th,td{text-align:left;border-bottom:1px solid var(--line);padding:.75rem;vertical-align:top}th{color:var(--muted);font-size:.8rem}.floating-form{min-width:min(560px,80vw);margin-top:1rem}.test-result{display:block;margin-top:1rem;padding:.8rem;background:var(--paper);border-radius:10px}.login-shell{min-height:100vh;display:grid;place-items:center;padding:2rem}.login-card{width:min(480px,100%);background:#fff;border:1px solid var(--line);border-radius:24px;padding:2rem;box-shadow:0 30px 80px rgba(18,50,39,.16)}.login-card h1{font-size:2rem;margin:.2rem 0}.login-card details{margin-top:1rem}.demo{background:var(--paper);padding:.8rem;border-radius:10px}.report{background:#fff;border:1px solid var(--line);padding:3rem;max-width:1000px;margin:auto}.report>header{display:flex;justify-content:space-between;align-items:start;border-bottom:4px solid var(--green);padding-bottom:1.5rem}.report h1{font-size:2.4rem;margin:.2rem 0}.report-hero{display:grid;grid-template-columns:repeat(3,1fr);margin:2rem 0;background:var(--mint)}.report-hero div{padding:1.5rem}.report-hero span,.report-hero b,.report-hero small{display:block}.report-hero b{font-size:1.8rem}.report-line{display:grid;grid-template-columns:120px 1fr auto;padding:.8rem;border-bottom:1px solid var(--line)}.report footer{margin-top:3rem;border-top:1px solid var(--line);padding-top:1rem;color:var(--muted)}hr{border:0;border-top:1px solid var(--line);margin:1.5rem 0}
@media(max-width:800px){.topbar{height:auto;padding:.65rem 3vw;align-items:flex-start;flex-wrap:wrap;gap:.5rem}.brand{flex:1}.topbar nav{order:3;width:100%}.topbar nav a{padding:.5rem}.user small{display:none}.shell{padding-top:1rem}.page-head{display:block}.page-head .actions,.segmented{margin-top:1rem}.stats.three,.stats.four{grid-template-columns:repeat(2,1fr)}.content-grid,.content-grid.equal,.exit-grid{grid-template-columns:1fr}.money-strip{grid-template-columns:repeat(2,1fr)}.grid3{grid-template-columns:1fr}.vehicle-row{grid-template-columns:auto 1fr}.vehicle-row .right{grid-column:1/3;text-align:left}.report{padding:1.2rem}.report-hero{grid-template-columns:1fr}.report>header{display:block}.form-actions{position:sticky;bottom:.5rem;background:rgba(244,246,242,.9);padding:.7rem}.inline-form{flex-wrap:wrap}}
@media(max-width:480px){.grid2,.stats.three,.stats.four{grid-template-columns:1fr}.stat{padding:1rem}.stat strong{font-size:1.8rem}.money-strip{grid-template-columns:1fr}.plate.big{font-size:1.5rem}.login-card{padding:1.4rem}}
@media print{body{background:#fff}.topbar,.no-print{display:none!important}.shell{width:100%;padding:0}.report{border:0;padding:0;box-shadow:none}.report .money-strip{print-color-adjust:exact}.report-hero{print-color-adjust:exact}}

/* v0.2 mobile gate and master-data additions */
.mobile-menu,.guard-bottom{display:none}.admin-contact-link{font-size:.78rem;color:var(--green);white-space:nowrap}.user{grid-template-columns:auto auto auto;align-items:center}.user small,.user b{grid-column:1}.user .admin-contact-link{grid-column:2;grid-row:1/3}.user form{grid-column:3}.narrow{max-width:660px}.choice-chips{display:flex;gap:.55rem;flex-wrap:wrap}.choice-chips label{display:block}.choice-chips input{position:absolute;opacity:0;width:1px}.choice-chips span{display:block;border:1px solid #b9c6c0;background:#fff;border-radius:12px;padding:.72rem .9rem;min-height:44px;cursor:pointer}.choice-chips input:checked+span{background:var(--green);border-color:var(--green);color:#fff;box-shadow:0 3px 10px rgba(12,107,82,.22)}.compact-chips span{padding:.55rem .7rem}.form-section{padding:1rem 0;border-bottom:1px solid var(--line)}.form-section:first-child{padding-top:0}.form-section h2{display:flex;align-items:center;gap:.55rem;font-size:1.05rem}.form-section h2>span{display:grid;place-items:center;background:var(--mint);color:var(--green);width:28px;height:28px;border-radius:50%}.plate-input-wrap{display:grid;grid-template-columns:1fr auto auto;gap:.5rem;margin:1rem 0}.plate-input-wrap input{font:900 1.65rem ui-monospace,monospace;letter-spacing:.16em;text-align:center;background:#eef3f0}.plate-input-wrap button{background:#e8edea;color:var(--ink);padding:.55rem}.plate-keyboard p{margin:.75rem 0 .35rem;color:var(--muted);font-size:.8rem}.keys{display:grid;grid-template-columns:repeat(10,1fr);gap:.35rem}.keys button{background:#fff;color:var(--ink);border:1px solid #cbd4d0;border-radius:8px;padding:.5rem .25rem;min-height:42px}.keys button:hover{background:var(--mint);border-color:var(--green)}.keys .warn-key{background:#fff1d6;color:#8c5908}.no-plate{margin-top:1rem}.field-help{font-size:.83rem;color:var(--muted);margin:.35rem 0}.repeat-hint{display:block;color:var(--muted);margin-top:-.65rem}.repeat-hint.show{background:#fff1d6;color:#79500b;padding:.65rem;border-radius:9px;font-weight:700}.room-preview,.room-grid{display:flex;gap:.5rem;flex-wrap:wrap}.room-preview span{background:#edf3ef;padding:.4rem .6rem;border-radius:7px}.room-preview span.duplicate{background:#fff1d6;color:#8c5908}.building-group{border-top:1px solid var(--line);padding:.75rem 0}.building-group summary{font-size:1.05rem;font-weight:800;cursor:pointer}.building-group summary span{color:var(--muted);font-size:.8rem}.room-grid{padding:.8rem 0}.room-grid form{display:flex;align-items:center;background:#f3f6f4;border-radius:8px;padding:.3rem .45rem}.room-grid .link-btn{color:var(--red)}.import-kinds{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem}.import-kinds>div{background:var(--paper);border-radius:12px;padding:1rem}.import-kinds p{margin:.4rem 0}.import-kinds a{color:var(--green);font-weight:700}.import-preview{max-height:520px;overflow:auto}.import-row{display:grid;grid-template-columns:80px 1fr 220px;gap:.8rem;padding:.7rem;border-bottom:1px solid var(--line);font-size:.86rem}.import-row em{font-style:normal;color:var(--green)}.import-row.has-error{background:#fff3f1}.import-row.has-error em{color:var(--red)}.upload-row{display:grid;grid-template-columns:1fr minmax(180px,300px) auto;align-items:center;gap:.8rem;padding:1rem 0;border-bottom:1px solid var(--line)}.upload-row small{display:block;color:var(--muted)}.address-results{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:.65rem}.address-results>div{background:var(--paper);padding:.8rem;border-radius:10px}.address-results small{display:block;color:var(--muted)}
@media(max-width:800px){.desktop-nav{display:none!important}.mobile-menu{display:block;position:relative}.mobile-menu summary{list-style:none;background:var(--paper);border-radius:9px;padding:.5rem .7rem;font-weight:800}.mobile-menu[open] div{position:absolute;right:0;top:42px;background:#fff;border:1px solid var(--line);box-shadow:var(--shadow);border-radius:12px;padding:.5rem;display:grid;min-width:190px}.mobile-menu a{padding:.65rem;border-radius:7px}.mobile-menu a:hover{background:var(--paper)}.role-guard .topbar{height:60px;align-items:center;flex-wrap:nowrap}.role-guard .user small,.role-guard .user b{display:none}.role-guard .shell{padding-bottom:90px}.guard-bottom{position:fixed;display:grid;grid-template-columns:repeat(4,1fr);left:0;right:0;bottom:0;z-index:30;background:#fff;border-top:1px solid var(--line);padding:5px max(5px,env(safe-area-inset-right)) calc(5px + env(safe-area-inset-bottom)) max(5px,env(safe-area-inset-left));box-shadow:0 -8px 24px rgba(18,50,39,.1)}.guard-bottom a{display:grid;place-items:center;font-size:.73rem;color:var(--muted);min-height:52px}.guard-bottom b{font-size:1.35rem;color:var(--green);line-height:1}.import-kinds{grid-template-columns:1fr}.import-row{grid-template-columns:60px 1fr}.import-row em{grid-column:2}.upload-row{grid-template-columns:1fr}.keys{grid-template-columns:repeat(7,1fr)}.keys button{min-height:44px}.plate-keyboard{max-height:330px;overflow:auto}.entry-mobile{padding:1rem}.form-actions.entry-actions{position:static;display:grid;grid-template-columns:1fr 1fr;z-index:10}.entry-actions .primary{grid-column:1/3;grid-row:1}.topbar .brand strong{max-width:130px;overflow:hidden;text-overflow:ellipsis}.user{gap:.25rem}.admin-contact-link{font-size:.72rem}.room-grid form{min-height:44px}.table-wrap{-webkit-overflow-scrolling:touch;max-width:100%}.topbar .link-btn{min-width:42px;min-height:42px}}
@media(max-width:390px){body{font-size:14px}.shell{width:calc(100% - 20px)}.topbar{padding-left:10px;padding-right:10px}.brand span{width:34px;height:34px}.topbar .brand strong{max-width:105px}.page-head h1{font-size:1.75rem}.panel{padding:1rem;border-radius:14px}.keys{grid-template-columns:repeat(6,1fr)}.choice-chips{gap:.4rem}.choice-chips span{padding:.65rem .7rem}.plate-input-wrap{grid-template-columns:1fr auto}.plate-input-wrap #plate-clear{grid-column:2}.plate-input-wrap input{font-size:1.35rem}.actions .button{flex:1}.page-head .actions{display:grid;grid-template-columns:1fr 1fr}.searchbar{flex-wrap:wrap}.searchbar button{width:100%;min-height:46px}.user .link-btn{padding:.3rem}.admin-contact-link{max-width:56px;text-align:center}.stats .stat{min-width:0}.stat strong{overflow-wrap:anywhere}.privacy select{width:100%}.privacy button{flex:1}.inline-form input,.inline-form select{width:100%}.upload-row input{max-width:100%}}
@media(max-width:800px){.mobile-cards{overflow:visible}.mobile-cards table,.mobile-cards tbody,.mobile-cards tr,.mobile-cards td{display:block;min-width:0;width:100%}.mobile-cards thead{display:none}.mobile-cards tr{border:1px solid var(--line);border-radius:12px;margin:.8rem 0;padding:.5rem;background:#fff}.mobile-cards td{display:grid;grid-template-columns:105px minmax(0,1fr);gap:.5rem;border:0;padding:.48rem;overflow-wrap:anywhere}.mobile-cards td::before{content:attr(data-label);color:var(--muted);font-size:.8rem;font-weight:700}.mobile-cards td .inline-form{display:grid;grid-template-columns:1fr;min-width:0}}

.login-note{margin:1rem 0 0;color:var(--muted);font-size:.86rem}.building-card{border:1px solid var(--line);border-radius:16px;padding:1rem;margin-top:1rem;background:#fbfcfb}.building-card h3{margin:.1rem 0;font-size:1.15rem}.building-card .section-head{align-items:flex-start}.building-tools{background:var(--paper);border-radius:12px;padding:.75rem;margin-top:.8rem}.building-tools .inline-form{align-items:end;flex-wrap:wrap}.building-tools label{min-width:90px}.building-tools input{min-width:80px;padding:.58rem}.building-tools button{min-height:42px}.floor-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:.6rem;margin-top:.8rem}.floor-row{display:flex;align-items:end;gap:.45rem;background:#fff;border:1px solid var(--line);border-radius:10px;padding:.55rem}.floor-row strong{padding-bottom:.55rem;white-space:nowrap}.floor-row label{flex:1;font-size:.78rem}.floor-row input{padding:.48rem;min-width:0}.floor-row button{padding:.48rem .6rem;min-height:39px}.building-generate{margin-top:.8rem}.room-list{margin-top:.8rem}.room-list summary{cursor:pointer;color:var(--green);font-weight:700}.room-list .room-grid{max-height:180px;overflow:auto;margin-top:.5rem}.room-list .room-grid span{background:#edf3ef;padding:.3rem .5rem;border-radius:7px;font-size:.84rem}.search-suggestions{position:relative;z-index:5}.search-suggestions .suggestion-box{background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow);margin-top:-.7rem;margin-bottom:1rem;overflow:hidden}.search-suggestions .search-summary{padding:.65rem 1rem;margin:0;border-bottom:1px solid var(--line)}.search-suggestion-link{display:flex;width:100%;justify-content:space-between;align-items:center;text-align:left;background:#fff;color:var(--ink);border-bottom:1px solid var(--line);padding:.8rem 1rem}.search-suggestion-link:last-child{border-bottom:0}.search-suggestions small{display:block;color:var(--muted);font-weight:500}.search-summary{display:flex;gap:.55rem;flex-wrap:wrap;color:var(--muted);margin:.25rem 0 1rem}.search-summary span{background:#edf3ef;border-radius:999px;padding:.25rem .6rem}.search-summary .accent{color:var(--green);font-weight:800}

/* v0.3 focused mobile entry flow */
[hidden]{display:none!important}.visually-hidden{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
body.entry-page{background:#fbfaf7}.entry-page .topbar,.entry-page .guard-bottom{display:none!important}.entry-page .entry-shell{width:100%;max-width:none;margin:0;padding:0}.entry-flow{width:min(100%,430px);min-height:100vh;margin:0 auto;background:#fbfaf7;color:#13201c;padding-bottom:calc(96px + env(safe-area-inset-bottom));position:relative}.entry-flow button,.entry-flow input,.entry-flow textarea{font-family:inherit}.entry-flow-head{height:104px;display:grid;grid-template-columns:64px 1fr 64px;align-items:center;border-bottom:1px solid #e5e7e4;padding:15px 16px 11px;background:rgba(251,250,247,.96);position:sticky;top:0;z-index:16}.entry-flow-head>div{text-align:center}.entry-flow-head small{display:block;color:var(--green);font-size:13px;font-weight:700;letter-spacing:.03em}.entry-flow-head h1{font-size:27px;line-height:1.15;margin:5px 0 0;letter-spacing:.02em}.entry-back,.entry-more{min-height:44px;padding:0;background:transparent!important;color:var(--green)!important;font-size:14px;font-weight:750;border:0}.entry-back{display:flex;align-items:center;justify-content:flex-start}.entry-more{justify-content:flex-end}.entry-step{padding:25px 20px}.capture-copy .step-kicker{color:var(--green);font-weight:750;font-size:13px}.capture-copy h2{font-size:28px;line-height:1.25;margin:9px 0 5px}.capture-copy p{margin:0;color:#74807b}.capture-card{margin-top:24px}.capture-card input{position:absolute;opacity:0;width:1px;height:1px}.capture-target{min-height:300px;border-radius:24px;background:#eaf3ee;border:1px solid #d4e2db;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:30px;cursor:pointer;color:var(--green);box-shadow:0 16px 42px rgba(18,50,39,.07)}.capture-target .camera-mark{width:74px;height:74px;border-radius:50%;display:grid;place-items:center;background:var(--green);color:#fff;font-size:17px;font-weight:800;margin-bottom:18px}.capture-target strong{font-size:22px}.capture-target small{margin-top:8px;color:#71817a;font-weight:500;line-height:1.6}.manual-start{width:100%;min-height:54px;margin-top:18px;background:#fff!important;color:var(--green)!important;border:1px solid #cbd6d1!important}.exception-start{width:100%;min-height:44px;background:transparent!important;color:#6c7873!important;margin-top:6px;font-weight:650!important}.recognizing-step{text-align:center;padding-top:160px}.recognizing-step h2{font-size:25px;margin:0 0 5px}.recognizing-step p{color:var(--muted);margin:0}.recognizing-ring{height:4px;width:92px;border-radius:4px;background:var(--green);margin:0 auto 28px;animation:recognizing-pulse .8s ease-in-out infinite alternate}@keyframes recognizing-pulse{from{opacity:.28;transform:scaleX(.65)}to{opacity:1;transform:scaleX(1)}}
.details-step{padding-top:20px}.entry-result-card{display:grid;grid-template-columns:1.18fr 1fr;min-height:126px;background:#fff;border:1px solid #eef0ed;border-radius:20px;overflow:hidden;box-shadow:0 12px 34px rgba(18,50,39,.08)}.entry-photo-preview{min-width:0;background:#e9eeeb}.entry-photo-preview img{display:block;width:100%;height:100%;min-height:126px;object-fit:cover}.recognition-status{display:flex;flex-direction:column;justify-content:center;padding:18px}.recognition-status strong{color:var(--green);font-size:17px}.recognition-status small{display:block;color:#89918e;margin-top:8px;line-height:1.5}.entry-result-card.no-photo{grid-template-columns:1fr}.entry-result-card.no-photo .entry-photo-preview{display:none}.plate-confirm-block{margin-top:24px}.plate-confirm-block>label,.entry-field-label{display:block;color:#6d7773;font-size:15px;font-weight:750;margin-bottom:8px}.plate-confirm-field{width:100%;min-height:80px;background:#fff!important;border:2px solid var(--green)!important;border-radius:17px!important;color:#101814!important;padding:14px 16px!important;display:flex!important;justify-content:space-between!important;align-items:center!important}.plate-confirm-field>span{font:900 32px/1.1 ui-monospace,"SFMono-Regular",monospace;letter-spacing:.08em}.plate-confirm-field small{color:var(--green);font-size:13px;text-decoration:underline}.entry-field-group{margin-top:24px}.entry-field-label small{color:#9aa29e;font-weight:500}.entry-type-chips{display:flex;gap:10px;overflow-x:auto;padding:1px 1px 7px;scrollbar-width:none}.entry-type-chips::-webkit-scrollbar{display:none}.entry-type-chips label{flex:0 0 auto;display:block}.entry-type-chips input{position:absolute;opacity:0;width:1px}.entry-type-chips span{display:grid;place-items:center;min-width:100px;min-height:58px;border:1px solid #d2d8d5;border-radius:15px;background:#fff;color:#53605b;font-weight:760;padding:8px 14px}.entry-type-chips input:checked+span{background:var(--green);border-color:var(--green);color:#fff;box-shadow:0 7px 18px rgba(12,107,82,.18)}.destination-search-wrap{position:relative}.destination-search-wrap input,.phone-group input,.entry-field-group textarea{min-height:58px;border-radius:15px;border:1px solid #d3d9d6;padding:15px 62px 15px 16px;background:#fff;font-size:16px}.entry-field-group textarea{padding-right:16px;resize:vertical}.destination-search-wrap button{position:absolute;right:7px;top:7px;bottom:7px;background:#edf4f0!important;color:var(--green)!important;padding:0 12px}.destination-results{margin-top:8px;background:#fff;border:1px solid #d8dfdb;border-radius:15px;overflow:hidden;box-shadow:0 14px 30px rgba(18,50,39,.11)}.destination-results button{width:100%;display:flex;justify-content:space-between;align-items:center;text-align:left;background:#fff!important;color:var(--ink)!important;border-radius:0!important;border-bottom:1px solid #eef1ef!important;padding:14px 16px!important}.destination-results button:last-child{border-bottom:0!important}.destination-results strong,.destination-results small{display:block}.destination-results small{color:var(--muted);font-weight:500;margin-left:10px}.destination-selected{min-height:58px;border:1px solid #b9d5c9;background:#eef7f2;border-radius:15px;color:var(--green);font-weight:800;padding:16px}.destination-group.optional .entry-field-label::after{content:"（选填）";font-weight:500;color:#9aa29e}.repeat-hint{display:block;margin-top:8px;color:var(--muted)}.repeat-hint.show{background:#edf6f1;color:var(--green);padding:11px 13px;border-radius:12px;font-weight:700}.entry-warning{margin-top:20px;background:#fff2dc;color:#85570e;border-radius:13px;padding:12px 14px;font-weight:700}.entry-extras{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-top:20px}.entry-extras button{min-height:46px;background:#fff!important;color:#55635d!important;border:1px solid #d8dedb!important;padding:8px!important}.entry-submit-bar{position:fixed;z-index:15;left:50%;bottom:0;width:min(100%,430px);transform:translateX(-50%);padding:12px 20px calc(12px + env(safe-area-inset-bottom));background:rgba(251,250,247,.94);border-top:1px solid #e6e9e6;backdrop-filter:blur(12px)}.entry-submit{width:100%;min-height:62px;border-radius:17px!important;background:var(--green)!important;color:#fff!important;font-size:20px!important;box-shadow:0 10px 24px rgba(12,107,82,.22)}
.entry-sheet{position:fixed;z-index:60;inset:0}.sheet-backdrop{position:absolute!important;inset:0;width:100%;height:100%;border-radius:0!important;background:rgba(13,25,20,.48)!important;padding:0!important}.sheet-panel{position:absolute;left:50%;bottom:0;transform:translateX(-50%);width:min(100%,430px);max-height:92vh;overflow:auto;background:#fbfaf7;border-radius:25px 25px 0 0;padding:10px 18px calc(18px + env(safe-area-inset-bottom));box-shadow:0 -20px 60px rgba(12,25,20,.2)}.sheet-handle{width:42px;height:5px;border-radius:5px;background:#cbd2ce;margin:0 auto 13px}.sheet-head{display:flex;justify-content:space-between;align-items:center;gap:12px}.sheet-head small{display:block;color:var(--green);font-weight:750}.sheet-head h2{font-size:23px;margin:2px 0 0}.sheet-head>button{background:transparent!important;color:#6e7974!important;padding:8px!important}.sheet-plate-preview{display:flex;align-items:center;gap:10px;margin-top:16px}.sheet-plate-preview>span{flex:1;min-height:67px;border:2px solid var(--green);border-radius:15px;background:#fff;display:grid;place-items:center;font:900 27px/1 ui-monospace,monospace;letter-spacing:.08em}.sheet-plate-preview>button{align-self:stretch;background:#edf1ef!important;color:#4f5d57!important}.plate-kind-switch{display:grid;grid-template-columns:1fr 1fr 1fr;gap:5px;background:#e9eeeb;border-radius:13px;padding:4px;margin-top:13px}.plate-kind-switch button{min-height:42px;background:transparent!important;color:#62706a!important;padding:6px!important;font-size:13px}.plate-kind-switch button.active{background:#fff!important;color:var(--green)!important;box-shadow:0 3px 9px rgba(18,50,39,.08)}.context-keyboard{margin-top:13px}.keyboard-panel{display:grid;grid-template-columns:repeat(6,1fr);gap:7px;max-height:250px;overflow:auto;padding:1px}.keyboard-panel button{min-width:0;min-height:47px;background:#fff!important;color:#14211c!important;border:1px solid #d3dad6!important;border-radius:10px!important;padding:5px!important;font-size:17px!important;box-shadow:0 2px 5px rgba(18,50,39,.04)}.special-plate-box{margin-top:16px}.special-plate-box input{min-height:58px;font-size:20px;text-transform:uppercase}.special-plate-box p,.plate-helper{color:#7b8581;font-size:12px;margin:10px 2px}.sheet-done{width:100%;min-height:56px;border-radius:15px!important;font-size:18px!important}.sheet-done:disabled{background:#c6cfca!important;cursor:not-allowed}.compact-sheet{padding-bottom:calc(26px + env(safe-area-inset-bottom))}.exception-options{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:18px}.exception-options button{min-height:58px;background:#fff!important;color:var(--ink)!important;border:1px solid #d4dbd7!important}.sheet-open{overflow:hidden}
@media(min-width:431px){.entry-flow{margin-top:24px;margin-bottom:24px;border-radius:25px;overflow:hidden;box-shadow:0 24px 70px rgba(18,50,39,.12)}.entry-flow-head{position:relative}.entry-submit-bar{position:sticky;left:auto;bottom:0;width:100%;transform:none;margin-top:24px}.entry-sheet{display:grid;place-items:center}.sheet-panel{border-radius:25px;bottom:24px}.entry-page .entry-shell{padding-bottom:24px}}
@media(max-width:390px){.entry-flow-head{height:94px;grid-template-columns:55px 1fr 55px}.entry-flow-head h1{font-size:25px}.entry-step{padding-left:16px;padding-right:16px}.details-step{padding-top:16px}.entry-result-card{min-height:116px}.entry-photo-preview img{min-height:116px}.plate-confirm-field>span{font-size:29px}.entry-type-chips span{min-width:94px;min-height:54px}.entry-submit-bar{padding-left:16px;padding-right:16px}.sheet-panel{padding-left:14px;padding-right:14px}.keyboard-panel{gap:6px}.keyboard-panel button{min-height:45px}}

/* Keep recognition photography compact even when the uploaded image is portrait. */
.entry-result-card{height:126px;min-height:0}.entry-photo-preview{min-height:0;overflow:hidden}.entry-photo-preview img{height:100%;min-height:0}
@media(max-width:390px){.entry-result-card{height:116px;min-height:0}.entry-photo-preview img{min-height:0}}

/* v0.4 guard-only mobile shell, destination pickers, history suggestions */
.destination-pickers{display:grid;grid-template-columns:1fr 1fr;gap:.7rem}.destination-picker{position:relative}.destination-picker>label{font-size:.8rem;color:#74807b;margin-bottom:.35rem}.destination-picker input{min-height:56px;padding-right:12px}.destination-clear{margin-top:.55rem;background:#edf4f0!important;color:var(--green)!important;padding:.55rem .8rem!important}.plate-suggestions{margin-top:10px;border:1px solid #d8dfdb;border-radius:13px;background:#fff;overflow:hidden;box-shadow:0 12px 26px rgba(18,50,39,.08)}.plate-suggestions>small{display:block;padding:.55rem .75rem;color:var(--muted);border-bottom:1px solid #eef1ef}.plate-suggestions button{display:flex!important;align-items:center;justify-content:space-between;width:100%;min-height:48px;background:#fff!important;color:var(--ink)!important;border-radius:0!important;border-bottom:1px solid #eef1ef!important;padding:.6rem .75rem!important;text-align:left}.plate-suggestions button:last-child{border-bottom:0!important}.plate-suggestions strong{font:800 1.02rem ui-monospace,monospace;letter-spacing:.06em}.plate-suggestions span{font-size:.76rem;color:var(--muted);text-align:right}.exit-capture{display:grid;gap:.45rem;margin:.8rem 0}.exit-capture input{position:absolute;opacity:0;width:1px;height:1px}.exit-recognition-status{font-size:.82rem;color:var(--muted);min-height:1.35rem}.account-row{align-items:start}.account-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:.4rem}.account-actions details{position:relative}.account-actions details>form{position:absolute;right:0;top:42px;z-index:3;background:#fff;border:1px solid var(--line);border-radius:12px;padding:.6rem;box-shadow:var(--shadow);min-width:260px}.account-actions .inline-form input{min-width:0}.admin-contact-card{max-width:560px}.admin-contact-person{display:flex;align-items:center;gap:.8rem}.admin-contact-person .login-mark{width:52px;height:52px;border-radius:15px}.admin-contact-person strong{display:block;font-size:1.2rem}.admin-contact-person small{display:block;color:var(--muted)}.admin-phone{font:800 2rem ui-monospace,monospace;letter-spacing:.08em;margin:1.3rem 0;color:var(--green)}.type-admin-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 1.2rem}
.role-guard{background:#fbfaf7}.role-guard .topbar{width:min(100%,430px);height:60px;margin:0 auto;padding:8px 14px;gap:.5rem;position:sticky}.role-guard .topbar .brand{flex:1}.role-guard .topbar .brand strong{max-width:180px;overflow:hidden;text-overflow:ellipsis}.role-guard .topbar .user{display:flex;align-items:center;gap:.35rem}.role-guard .topbar .user small,.role-guard .topbar .user b{display:none}.role-guard .topbar .admin-contact-link{font-size:.72rem;max-width:72px;white-space:normal;text-align:center}.role-guard .shell{width:min(100%,430px);padding:1rem 14px 96px;margin:0 auto}.role-guard .page-head{display:block;margin:.35rem 0 1rem}.role-guard .page-head h1{font-size:1.8rem}.role-guard .page-head .actions{display:grid;grid-template-columns:1fr 1fr;gap:.55rem;margin-top:.85rem}.role-guard .page-head .actions .button{min-height:52px;padding:.7rem .5rem}.role-guard .content-grid,.role-guard .exit-grid{display:block}.role-guard .panel{padding:1rem;border-radius:16px}.role-guard .guard-flow-stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem}.role-guard .guard-flow-stats .stat{min-width:0}.role-guard .guard-bottom{position:fixed;display:grid;grid-template-columns:repeat(5,1fr);left:50%;right:auto;bottom:0;transform:translateX(-50%);width:min(100%,430px);z-index:30;background:#fff;border-top:1px solid var(--line);padding:5px max(5px,env(safe-area-inset-right)) calc(5px + env(safe-area-inset-bottom)) max(5px,env(safe-area-inset-left));box-shadow:0 -8px 24px rgba(18,50,39,.1)}.role-guard .guard-bottom a{display:grid;place-items:center;font-size:.7rem;color:var(--muted);min-height:52px}.role-guard .guard-bottom b{font-size:1.25rem;color:var(--green);line-height:1}.role-guard .vehicle-row{grid-template-columns:auto 1fr;gap:.65rem}.role-guard .vehicle-row .right{grid-column:1/3;text-align:left}.role-guard .stats.three{grid-template-columns:repeat(3,1fr);gap:.45rem}.role-guard .stat{padding:.7rem .55rem}.role-guard .stat strong{font-size:1.45rem}
@media(max-width:480px){.type-admin-list{grid-template-columns:1fr}.account-actions{justify-content:flex-start}.account-actions details>form{position:static;margin-top:.35rem;min-width:0}.admin-phone{font-size:1.5rem}}
/* 入场门牌：楼栋 + 房号始终同一行，不因窄屏拆成两行 */
.destination-pickers-row{
  display:grid!important;
  grid-template-columns:minmax(0,1fr) auto minmax(0,1.15fr)!important;
  gap:.35rem .4rem!important;
  align-items:end;
}
.destination-pickers-row .destination-picker>label{
  font-size:.72rem;margin-bottom:.2rem;
}
.destination-pickers-row .destination-picker input{
  min-height:44px;width:100%;
}
.destination-join{
  display:grid;place-items:center;
  min-height:44px;padding-bottom:1px;
  font-size:.92rem;font-weight:800;color:var(--muted);
}

.resident-issue-summary{margin-top:.55rem;padding:.65rem .75rem;background:#fff5e4;border-left:3px solid var(--amber);border-radius:8px;display:grid;gap:.25rem}.resident-issue-summary strong{color:#8c5908;font-size:.85rem}.resident-issue-summary a{color:var(--green);font-size:.82rem}

/* 入场沿用出场的门岗壳层；拍照流程只负责内容，不再替换全局导航。 */
.entry-page .topbar{display:flex!important}
.entry-page .entry-shell{width:min(100%,430px)!important;max-width:430px!important;margin:0 auto!important;padding:1rem 14px 96px!important}
.entry-page .entry-flow-head.page-head{height:auto;display:flex;grid-template-columns:none;align-items:flex-end;margin:.35rem 0 1rem;padding:0;border:0;background:transparent;position:static;text-align:left}
.entry-page .entry-flow-head>div{text-align:left}
.entry-page .entry-flow-head h1{font-size:1.8rem;line-height:1.1;margin:.1rem 0}
.entry-page .entry-flow-head .entry-head-help{font-size:15px;color:var(--muted);margin:.3rem 0;white-space:normal}
.entry-page .entry-flow-head .actions{margin-top:0;align-items:center}
.entry-page .entry-flow-head .entry-more{min-height:44px;color:var(--ink)!important;background:#fff!important;border:1px solid var(--line)!important}
.entry-page .entry-flow{width:100%;min-height:0;padding-bottom:calc(96px + env(safe-area-inset-bottom));background:transparent}
.entry-page .entry-flow{margin:0!important;border-radius:0!important;box-shadow:none!important;overflow:visible!important}
@media(max-width:800px){
  .entry-page .guard-bottom{display:grid!important}
.entry-page .entry-submit-bar{bottom:calc(62px + env(safe-area-inset-bottom))}
}

/* 门岗工作台：统一页面骨架，同时让当前车辆信息在手机上保持紧凑可扫读。 */
.entry-page .entry-flow-head.page-head{display:grid;margin:0;align-items:center;gap:0}
.entry-page .entry-flow-head .entry-head-help{font-size:12px;color:#7b8581;margin:4px 0 0;white-space:nowrap}
.guard-flow-stats{grid-template-columns:repeat(2,minmax(0,1fr))!important}
.guard-toolbar{display:flex;justify-content:space-between;align-items:center;gap:.8rem;margin:-.15rem 0 .7rem;flex-wrap:wrap}
.guard-window{display:flex;align-items:center;gap:.25rem;color:var(--muted);font-size:.78rem;white-space:nowrap}
.guard-window a{padding:.35rem .48rem;border-radius:8px;color:var(--muted)}
.guard-window a.active{background:var(--mint);color:var(--green);font-weight:800}
.compact-vehicle-row{grid-template-columns:auto minmax(0,1fr) auto;padding:.72rem .15rem;gap:.7rem}
.compact-vehicle-row .vehicle-row-main{min-width:0}
.compact-vehicle-row .vehicle-row-main b,.compact-vehicle-row .vehicle-row-main small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.compact-vehicle-row .right{min-width:78px}
.compact-vehicle-row .right small{white-space:nowrap}
.compact-vehicle-row .issue-count{color:var(--red)!important;font-weight:700}
.live-searchbar{align-items:flex-start}
.live-search-input{position:relative;flex:1}
.live-search-input .search-suggestions{position:absolute;left:0;right:0;top:calc(100% + .35rem);z-index:10}
.live-search-input .search-suggestions .suggestion-box{margin:0}
.vehicle-overview{padding:1rem 1.1rem}
.vehicle-overview-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:.8rem;padding-bottom:.85rem;border-bottom:1px solid var(--line)}
.vehicle-overview-grid span,.vehicle-overview-grid b{display:block}
.vehicle-overview-grid span{font-size:.78rem;color:var(--muted)}
.vehicle-overview-grid b{margin-top:.25rem}
.vehicle-overview-block{padding-top:.8rem}
.vehicle-overview-block h3{margin:0 0 .45rem;font-size:1rem}
.vehicle-host-row{display:flex;justify-content:space-between;gap:1rem;padding:.5rem 0;border-top:1px solid var(--line)}
.vehicle-host-row:first-of-type{border-top:0}
.vehicle-host-row b,.vehicle-host-row small{display:block}
.vehicle-host-row small{color:var(--muted);font-size:.82rem}
.whitelist-note{background:var(--mint);border-radius:10px;padding:.7rem .8rem;margin-top:.7rem}
.whitelist-note p{margin:.2rem 0 0;color:#456057}
@media(max-width:480px){
  .guard-flow-stats{grid-template-columns:repeat(2,1fr)!important;gap:.5rem!important}
  .guard-toolbar{align-items:stretch;display:grid;gap:.55rem}
  .guard-toolbar .segmented{width:100%;justify-content:space-between}
  .guard-toolbar .segmented a{padding:.45rem .5rem;font-size:.78rem}
  .guard-window{justify-content:space-between}
  .compact-vehicle-row{grid-template-columns:auto minmax(0,1fr) auto;gap:.5rem}
  .compact-vehicle-row .right{grid-column:auto;text-align:right;min-width:74px}
  .compact-vehicle-row .plate{font-size:.92rem;padding:.3rem .4rem}
  .vehicle-overview-grid{grid-template-columns:repeat(2,1fr)}
  .vehicle-overview-grid>div:last-child{grid-column:1/-1}
  .vehicle-overview + .stats.four{grid-template-columns:repeat(2,1fr)}
  .vehicle-overview + .stats.four .stat{padding:.8rem}
}

/* 最终覆盖旧版入场标题规则，确保入场与出场使用同一门岗页头。 */
.entry-page .guard-bottom{display:grid!important}
.entry-page .entry-flow-head.page-head{display:flex!important;grid-template-columns:none!important;align-items:flex-end;margin:.35rem 0 1rem!important;position:static!important}
.entry-page .entry-flow-head>div{text-align:left}
@media(max-width:800px){
  .entry-page .entry-flow-head.page-head{display:block!important;align-items:initial}
  .entry-page .entry-flow-head .actions{display:grid!important;grid-template-columns:1fr 1fr!important;margin-top:.85rem!important}
}

/* 后台导航分组与物业设置紧凑布局。 */
.desktop-nav{align-items:center;gap:.2rem!important}
.desktop-nav .nav-group{position:relative;flex:0 0 auto}
.desktop-nav .nav-group summary{list-style:none;padding:.55rem .7rem;border-radius:8px;color:#53615c;cursor:pointer;white-space:nowrap}
.desktop-nav .nav-group summary::-webkit-details-marker{display:none}
.desktop-nav .nav-group[open] summary,.desktop-nav .nav-group summary:hover{background:var(--paper);color:var(--green)}
.desktop-nav .nav-group>div{position:absolute;top:calc(100% + .35rem);left:0;z-index:40;display:grid;min-width:188px;padding:.35rem;background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow)}
.desktop-nav .nav-group>div a{padding:.58rem .7rem;border-radius:8px}
.desktop-nav .nav-group>div a:hover{background:var(--paper);color:var(--green)}
.desktop-nav .nav-group>div a.is-active{background:var(--mint);color:var(--green);font-weight:800}
.desktop-nav .nav-group-desc{
  margin:0;padding:.25rem .7rem .4rem;font-size:.7rem;color:var(--muted);font-weight:650;line-height:1.35;
  border-bottom:1px solid var(--line);margin-bottom:.2rem;
}
.desktop-nav > a.is-active,.desktop-nav summary.is-active{
  background:var(--mint)!important;color:var(--green)!important;font-weight:800;
}
.desktop-nav .nav-primary,.desktop-nav .nav-guard-link{font-weight:800;color:var(--green)!important}
.desktop-nav .nav-guard-link{margin-left:.15rem}
.admin-tabs-sep{display:inline-block;width:1px;height:1.1rem;background:var(--line);margin:0 .15rem;align-self:center;flex:0 0 auto}
.dash-list-cap{margin:.35rem 0 .1rem;font-size:.72rem;font-weight:750;color:var(--muted)}
.desktop-nav .nav-guard-link{border-left:1px solid var(--line);margin-left:.25rem;padding-left:.9rem!important}
.nav-badge{display:inline-block;margin-left:.28rem;min-width:1.1rem;padding:0 .28rem;border-radius:999px;background:var(--red);color:#fff;font-size:.68rem;font-weight:800;line-height:1.2;vertical-align:middle;text-align:center}
.admin-alert-link{display:flex;justify-content:space-between;align-items:center;gap:.75rem;margin:0 0 .85rem;padding:.7rem .9rem;background:#fff5e8;border:1px solid #f0d7b0;border-radius:12px;color:#8c5908;text-decoration:none}
.admin-alert-link strong{font-size:.95rem}.admin-alert-link span{font-size:.82rem;opacity:.9}
/* —— 后台紧凑管理页（基础设置起） —— */
.admin-page .shell{padding-top:1.1rem;padding-bottom:3rem}
.admin-head{display:flex;justify-content:space-between;align-items:flex-end;gap:1rem;margin:0 0 1rem}
.admin-head h1{margin:0;font-size:1.45rem;line-height:1.2;letter-spacing:-.01em}
.admin-sub{margin:.2rem 0 0;color:var(--muted);font-size:.82rem}
.admin-head-meta{display:flex;gap:.55rem;flex-wrap:wrap;color:var(--muted);font-size:.78rem}
.admin-head-meta span{background:#eef3f0;border-radius:999px;padding:.25rem .55rem}
.admin-tabs{display:flex;gap:.25rem;flex-wrap:wrap;margin:0 0 1rem;padding:.25rem;background:#e9eeeb;border-radius:12px;width:fit-content;max-width:100%}
.admin-tabs a{padding:.48rem .9rem;border-radius:9px;color:var(--muted);font-weight:700;font-size:.9rem}
.admin-tabs a.active{background:#fff;color:var(--ink);box-shadow:0 1px 4px rgba(18,50,39,.08)}
.admin-panel{background:#fff;border:1px solid var(--line);border-radius:14px;padding:1rem 1.05rem 1.05rem;box-shadow:var(--shadow);margin-bottom:1rem}
.admin-panel-head{display:flex;justify-content:space-between;align-items:baseline;gap:.75rem;margin:0 0 .75rem}
.admin-panel-head h2{margin:0;font-size:1.05rem}
.admin-panel-head span{color:var(--muted);font-size:.78rem;white-space:nowrap}
.admin-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.65rem .8rem}
.admin-form label{gap:.28rem;font-size:.82rem}
.admin-form input,.admin-form select{min-height:40px;padding:.5rem .65rem;border-radius:9px}
.admin-form-actions{display:flex;justify-content:flex-end;margin-top:.75rem}
.admin-form-actions button{min-height:40px;padding:.5rem 1rem}
.admin-checks{display:flex;flex-wrap:wrap;gap:.55rem 1rem;margin-top:.65rem}
.admin-table-wrap{overflow:auto;border:1px solid var(--line);border-radius:12px}
.admin-table{width:100%;border-collapse:collapse;min-width:520px;font-size:.9rem}
.admin-table th{background:#f5f8f6;color:var(--muted);font-size:.75rem;font-weight:700;text-align:left;padding:.55rem .7rem;border-bottom:1px solid var(--line);white-space:nowrap}
.admin-table td{padding:.55rem .7rem;border-bottom:1px solid #eef2ef;vertical-align:middle}
.admin-table tr:last-child td{border-bottom:0}
.admin-table tr.is-off{opacity:.62}
.admin-table .col-actions{white-space:nowrap;text-align:right}
.admin-table .empty-cell{text-align:center;color:var(--muted);padding:1.4rem}
.admin-inline{display:inline-flex;align-items:center;gap:.3rem;margin:0}
.admin-inline input{min-height:34px;padding:.35rem .5rem;border-radius:8px;min-width:0}
.admin-inline button,.admin-config-inline button,.admin-add-row button,.admin-toolbar button{min-height:34px;padding:.35rem .65rem;font-size:.8rem;border-radius:8px}
.admin-inline .linkish{background:transparent;color:var(--green);padding:.2rem .4rem;font-weight:700}
.admin-inline .danger-btn,.admin-table .danger-btn{background:#f8e4e1;color:var(--red)}
.col-actions form{display:inline-flex;vertical-align:middle}
.pill{display:inline-block;border-radius:999px;padding:.12rem .5rem;font-size:.72rem;font-weight:700}
.pill.on{background:var(--mint);color:var(--green)}
.pill.off{background:#f0eeed;color:#7a7a7a}
.tag{display:inline-block;background:#eef3f0;color:#456057;border-radius:6px;padding:.1rem .4rem;font-size:.72rem;margin-right:.2rem}
.tag.ghost{background:#f4f4f4;color:#888}
.muted-cell{color:var(--muted);font-size:.82rem}
.row-sub{display:block;color:var(--muted);font-size:.75rem;margin-top:.1rem}
.admin-add-row,.admin-toolbar{display:flex;gap:.45rem;align-items:center;margin:.75rem 0;flex-wrap:wrap}
.admin-add-row input,.admin-toolbar input{flex:1;min-width:140px;min-height:38px;padding:.45rem .65rem;border-radius:9px;border:1px solid #becac4}
.admin-add-box{margin-top:.75rem;border-top:1px solid var(--line);padding-top:.65rem}
.admin-add-box summary{cursor:pointer;color:var(--green);font-weight:800;font-size:.88rem}
.admin-add-box[open] summary{margin-bottom:.55rem}
.admin-config-inline{display:flex;align-items:end;gap:.35rem;flex-wrap:wrap}
.admin-config-inline label{display:grid;gap:.15rem;font-size:.72rem;color:var(--muted);min-width:64px}
.admin-config-inline input{min-height:34px;width:64px;padding:.3rem .4rem;border-radius:8px}
.admin-rooms{display:inline-block;margin-left:.25rem}
.admin-rooms summary{cursor:pointer;color:var(--green);font-size:.8rem;font-weight:700;list-style:none}
.admin-rooms summary::-webkit-details-marker{display:none}
.admin-rooms{position:relative}
.admin-pop{position:absolute;right:0;top:28px;z-index:8;min-width:min(360px,86vw);padding:.7rem;background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow)}
.room-chips{display:flex;flex-wrap:wrap;gap:.3rem;max-width:360px;margin-top:.4rem;padding:.45rem;background:#f6f8f7;border-radius:8px}
.room-chips span{background:#fff;border:1px solid var(--line);border-radius:6px;padding:.12rem .35rem;font-size:.72rem;font-variant-numeric:tabular-nums}
.admin-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.5rem;margin:0 0 .85rem}
.admin-stats>div{background:#fff;border:1px solid var(--line);border-radius:12px;padding:.65rem .75rem}
.admin-stats span{display:block;color:var(--muted);font-size:.75rem}
.admin-stats b{display:block;font-size:1.25rem;margin-top:.15rem;line-height:1.2}
.admin-stats small{color:var(--muted);font-size:.75rem}
.admin-stats.money>div{background:var(--ink);border-color:var(--ink);color:#fff}
.admin-stats.money span{color:#b7c4bf}
.admin-stats.money b{color:#fff}
.admin-stats.mini>div{padding:.5rem .65rem}
.admin-stats.mini b{font-size:1.05rem}
.admin-split{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(260px,.8fr);gap:.75rem;align-items:start}
.admin-side{display:grid;gap:.75rem}
.admin-mini-row{display:block;padding:.45rem 0;border-top:1px solid #eef2ef;text-decoration:none}
.admin-mini-row:first-child{border-top:0}
.admin-mini-row b,.admin-mini-row strong{display:block;font-size:.9rem}
.admin-mini-row small{display:block;color:var(--muted);font-size:.78rem;margin-top:.1rem}
.empty-inline{margin:0;font-size:.85rem}
.admin-actions-bar{display:flex;gap:.5rem;flex-wrap:wrap;margin-top:.5rem}
.admin-table-dense td,.admin-table-dense th{padding:.42rem .55rem;font-size:.84rem}
.detail-cell{max-width:280px;overflow-wrap:anywhere}
.nowrap{white-space:nowrap}
.compact-bar{margin:.4rem 0!important;grid-template-columns:72px 1fr 40px!important}
.compact-rank{padding:.4rem 0!important}
.compact-ai .ai-model-group{margin-bottom:.5rem}
.compact-ai summary{cursor:pointer;padding:.45rem .55rem;background:var(--paper);border-radius:10px;list-style:none}
.compact-ai summary::-webkit-details-marker{display:none}
.compact-ai summary small{display:block;color:var(--muted);font-weight:500;margin-top:.15rem}
.compact-ai .ai-model-options{margin-top:.45rem}
.compact-ai .ai-model-card-body{padding:.55rem!important}
@media(max-width:800px){
  .admin-head{display:block}
  .admin-head-meta{margin-top:.55rem}
  .admin-tabs{width:100%}
  .admin-form-grid{grid-template-columns:1fr}
  .admin-table{min-width:0}
  .building-table .col-actions{white-space:normal}
  .admin-stats{grid-template-columns:repeat(2,minmax(0,1fr))}
  .admin-split{grid-template-columns:1fr}
  .admin-pop{position:static;min-width:0;margin-top:.35rem}
}
.property-page .property-top-grid{align-items:start}
.property-page .panel{padding:1rem;border-radius:14px}
.property-page .section-head{margin-bottom:.65rem}
.property-page .section-head h2{font-size:1.15rem}
.gate-list{display:grid;gap:.35rem}
.gate-row{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:.6rem;padding:.55rem .6rem;background:var(--paper);border-radius:10px}
.gate-main b,.gate-main small{display:block}.gate-main small,.building-meta,.building-readonly{color:var(--muted);font-size:.8rem}
.gate-actions{display:flex;align-items:center;justify-content:flex-end;gap:.35rem;flex-wrap:wrap}.gate-actions button,.gate-edit summary{min-height:38px;padding:.45rem .65rem;font-size:.82rem}.gate-edit{position:relative}.gate-edit>summary{list-style:none;cursor:pointer}.gate-edit>summary::-webkit-details-marker{display:none}.gate-edit-form{position:absolute;right:0;top:43px;z-index:5;display:flex;gap:.35rem;min-width:230px;padding:.5rem;background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow)}.gate-edit-form input{min-width:0;padding:.5rem}.compact-add-form,.building-create-bar{display:flex;gap:.5rem;margin-top:.7rem}.compact-add-form input,.building-create-bar input{min-height:42px}.compact-add-form input{flex:1}.building-create-bar input:first-child{max-width:150px}.building-create-bar input:nth-child(2){flex:1}.compact-add-form button,.building-create-bar button{min-height:42px;white-space:nowrap}.compact-admin-row{padding:.55rem .2rem}.compact-admin-row button{min-height:38px;padding:.45rem .65rem;font-size:.82rem}.compact-add-box{margin-top:.7rem;padding-top:.7rem}.property-buildings{margin-top:1rem}.building-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(330px,1fr));gap:.7rem}.building-card{margin:0;padding:.8rem;border-radius:12px;background:#fbfcfb}.building-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:.6rem}.building-card-head h3{margin:0;font-size:1.1rem}.building-card-head form button{min-height:36px;padding:.4rem .55rem;font-size:.78rem;white-space:nowrap}.building-config{display:grid;grid-template-columns:1fr 1fr auto;align-items:end;gap:.5rem;margin-top:.7rem;padding-top:.7rem;border-top:1px solid var(--line)}.building-config label{font-size:.78rem;gap:.2rem}.building-config input{min-height:40px;padding:.5rem}.building-config button{min-height:40px;padding:.5rem .65rem;white-space:nowrap}.compact-help{margin:.35rem 0 0;font-size:.75rem}.building-generate{margin-top:.6rem}.building-generate button{width:100%;min-height:40px;padding:.5rem}.property-page .room-list{margin-top:.5rem}.property-page .room-list summary{font-size:.8rem}.property-page .room-list .room-grid{max-height:120px;padding:.45rem 0}.property-page .room-list .room-grid span{font-size:.75rem;padding:.2rem .4rem}.audit-summary{margin-bottom:1rem}.audit-summary .stat{padding:.85rem 1rem}.audit-summary .stat strong{font-size:1.7rem}.audit-filters{flex-wrap:wrap}.audit-filters input{flex:1 1 150px;min-width:120px}.audit-log-panel table{min-width:980px}.audit-log-panel td small{display:block;color:var(--muted);font-size:.75rem}.audit-log-panel td[data-label="详情"]{max-width:360px;overflow-wrap:anywhere}
@media(max-width:800px){.desktop-nav{display:none!important}.property-page .content-grid{display:grid}.property-page .building-list{grid-template-columns:1fr}.gate-actions{justify-content:flex-end}.gate-actions button,.gate-edit summary{min-height:42px}.building-create-bar,.compact-add-form{display:grid;grid-template-columns:1fr}.building-create-bar input:first-child{max-width:none}.building-config{grid-template-columns:1fr 1fr}.building-config button{grid-column:1/-1}.audit-filters{display:grid}.audit-filters input,.audit-filters button{width:100%}.mobile-menu[open] div strong{padding:.55rem .65rem .2rem;color:var(--green);font-size:.78rem}}
@media(max-width:390px){.gate-row{grid-template-columns:1fr}.gate-actions{justify-content:stretch}.gate-actions>*{flex:1}.gate-actions button,.gate-edit summary{width:100%}.gate-edit-form{position:static;min-width:0;margin-top:.35rem}.property-page .panel{padding:.85rem}.building-list{gap:.55rem}}
.type-actions{display:flex;align-items:center;justify-content:flex-end;gap:.35rem;flex-wrap:wrap}.type-actions button{min-height:38px;padding:.45rem .65rem;font-size:.82rem}
/* Dropdown panels must escape the top navigation's horizontal scroll container. */
.desktop-nav{overflow:visible!important;min-width:0}.desktop-nav .nav-group>div{pointer-events:auto}

/* 后台关联查询、住户档案和搜索优先的楼栋维护。 */
.nav-query{font-weight:800;color:var(--green)!important;background:var(--mint)}
.property-building-search{max-width:760px;margin:.6rem 0 1rem}.property-building-search input{font-size:1.05rem}.property-add-building{margin-top:.3rem}.building-maintenance{margin-top:.65rem;border-top:1px solid var(--line);padding-top:.55rem}.building-maintenance>summary{cursor:pointer;color:var(--green);font-weight:800;font-size:.85rem}.building-maintenance[open]>summary{margin-bottom:.65rem}.resident-searchbar{max-width:820px}.resident-title{font-size:1.02rem}.resident-card-actions{display:flex;align-items:flex-start;justify-content:flex-end;gap:.35rem;flex-wrap:wrap}.resident-card-actions button,.resident-card-actions summary{min-height:38px;padding:.45rem .65rem;font-size:.8rem}.resident-edit-form{min-width:min(360px,78vw);margin-top:.55rem;padding:.7rem;background:var(--paper);border:1px solid var(--line);border-radius:10px}.resident-edit-form input,.resident-edit-form select{padding:.55rem}.inline-edit{display:inline-block;margin-left:.25rem}.inline-edit summary{display:inline;color:var(--green);cursor:pointer;font-weight:700}.explore-period{max-width:max-content;margin:0 0 1rem}.explore-search{max-width:920px}.explore-stats{margin-top:.9rem}.explore-result-row{min-height:68px}.explore-empty{text-align:center;padding:2.5rem}.explore-examples{display:flex;justify-content:center;gap:.6rem;flex-wrap:wrap;margin:1rem 0}.explore-examples span{background:var(--mint);color:var(--green);padding:.5rem .75rem;border-radius:99px}.resident-detail-stats{margin-bottom:1rem}.linked-resident-list{display:flex;align-items:center;gap:.4rem;flex-wrap:wrap;margin-top:.7rem;padding-top:.6rem;border-top:1px solid var(--line)}.compact-stats{margin:0;gap:.65rem}.compact-stats .stat{padding:.8rem 1rem;box-shadow:none}.account-edit-form{min-width:min(360px,82vw);margin-top:.55rem;padding:.7rem;background:var(--paper);border:1px solid var(--line);border-radius:10px}.account-edit-form input,.account-edit-form select,.account-edit-form textarea{padding:.55rem}.analysis-overview{padding-bottom:.8rem}
@media(max-width:800px){.property-building-search{display:grid}.property-building-search .button{width:100%}.resident-card-actions{justify-content:flex-start}.explore-result-row{grid-template-columns:auto minmax(0,1fr)}.explore-result-row .right{grid-column:1/-1;text-align:left}.explore-result-row .right .badge{margin-right:.25rem}.account-edit-form{min-width:0}.compact-stats{grid-template-columns:repeat(3,1fr)!important}.compact-stats .stat{padding:.7rem .55rem}.compact-stats .stat strong{font-size:1.45rem}}
@media(max-width:480px){.property-building-search{gap:.45rem}.resident-searchbar{display:grid}.resident-searchbar .button{width:100%}.resident-card-actions{display:grid;grid-template-columns:1fr}.resident-card-actions details,.resident-card-actions details>summary,.resident-card-actions>form{width:100%}.explore-period{width:100%;justify-content:space-between}.explore-period a{padding:.45rem .45rem;font-size:.78rem}.compact-stats{grid-template-columns:1fr!important}.compact-stats .stat{display:flex;align-items:center;justify-content:space-between;gap:.4rem}.compact-stats .stat strong{font-size:1.35rem}.building-maintenance .building-config{margin-top:.3rem}}

/* AI 设置：按用途分组的详细模型选择，手机上单列可点。 */
.ai-settings-grid{align-items:start}.ai-model-field{border:0;border-top:1px solid var(--line);padding:1rem 0 0;margin:0}.ai-model-field legend{font-weight:800;font-size:1.1rem;padding:0}.ai-model-catalog{display:grid;gap:1rem}.ai-model-group{background:var(--paper);border-radius:14px;padding:.8rem}.ai-model-group-head h3{margin:0;font-size:.95rem}.ai-model-group-head p{margin:.15rem 0 .65rem;color:var(--muted);font-size:.8rem}.ai-model-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.6rem}.ai-model-card{display:block;cursor:pointer;min-width:0}.ai-model-card>input{position:absolute;opacity:0;width:1px;height:1px}.ai-model-card-body{display:grid;gap:.3rem;height:100%;padding:.7rem;border:1px solid var(--line);border-radius:11px;background:#fff}.ai-model-card:hover .ai-model-card-body,.ai-model-card.selected .ai-model-card-body{border-color:var(--green);box-shadow:0 0 0 2px rgba(12,107,82,.12);background:#f7fcf9}.ai-model-card:focus-within .ai-model-card-body{outline:3px solid rgba(12,107,82,.16)}.ai-model-card-title{display:flex;align-items:center;justify-content:space-between;gap:.35rem}.ai-model-card-title strong{font-size:.9rem}.ai-model-card-title em{font-style:normal;font-size:.68rem;color:var(--green);background:var(--mint);padding:.15rem .4rem;border-radius:99px;white-space:nowrap}.ai-model-card small{color:var(--muted);font-size:.76rem;line-height:1.4}.ai-model-card .ai-model-meta{color:#4e6e62}.ai-model-meta code{font-size:.7rem;overflow-wrap:anywhere}.ai-custom-card{margin-top:.7rem}.custom-model-row{margin-top:.65rem}.ai-key-field{display:grid;gap:.35rem}.ai-key-field>label{display:block}.ai-key-wrap{display:flex;gap:.5rem}.ai-key-wrap input{flex:1;font-family:ui-monospace,monospace}.ai-key-wrap button{flex:0 0 auto;min-width:58px;padding:.6rem .75rem}
@media(max-width:640px){.ai-model-options{grid-template-columns:1fr}.ai-model-group{padding:.7rem}.ai-key-wrap{align-items:stretch}.ai-key-wrap button{min-width:66px}}

.ai-model-modalities{color:#2f6354!important}.ai-model-price{font-weight:800;color:var(--green)!important}.ai-model-price-note{font-size:.7rem!important;color:#66776f!important}.ai-model-price-note a,.ai-pricing-note a{color:var(--green);text-decoration:underline}.ai-pricing-note{margin:.8rem 0 0;color:var(--muted);font-size:.76rem;line-height:1.5}
.ai-model-desc{display:block;color:#5b6b64!important}
.ai-model-card-title em.tier{background:#eef3f0;color:#4f635b}
.ai-usage-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.65rem;margin-bottom:.8rem}
.ai-stat{background:var(--paper);border-radius:12px;padding:.75rem .85rem}
.ai-stat span{display:block;color:var(--muted);font-size:.78rem}
.ai-stat b{display:block;margin-top:.25rem;font-size:1.35rem;line-height:1.2}
.ai-stat small{display:block;margin-top:.25rem;color:#6b7a74;font-size:.75rem}
.ai-model-usage{margin-top:.4rem}
.ai-log-table td.fail,.ai-log-table tr.fail td{background:#fff8f7}
.ai-log-table code{font-size:.72rem}
@media(max-width:800px){.ai-usage-stats{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:420px){.ai-usage-stats{grid-template-columns:1fr}}

/* 门岗第二轮：先做处置，再看异常；所有改动只作用于 guard shell。 */
.role-guard .guard-secondary-action{justify-self:start;min-height:42px;padding:.55rem .8rem}
.guard-more-row{display:flex;justify-content:space-between;align-items:center;gap:.7rem;border-top:1px solid var(--line);padding:.65rem .15rem 0;color:var(--muted);font-size:.8rem}
.guard-secondary-panels{display:grid;gap:.7rem}
.guard-event-summary .resident-row{padding:.65rem .15rem}
.guard-upload-alert{display:flex;justify-content:space-between;align-items:center;gap:.8rem;padding:.75rem 1rem;color:var(--green)}
.guard-upload-alert strong,.guard-upload-alert span{display:block}.guard-upload-alert span{font-size:.8rem;color:var(--muted)}
.guard-event-form{gap:.8rem}.event-vehicle-block{display:grid;gap:.45rem}.event-real-vehicle{display:grid;gap:.3rem}.event-real-vehicle input[type=text]{min-height:48px}.event-temp-toggle{display:flex;align-items:center;gap:.5rem;font-weight:750;color:var(--green)}.event-temp-toggle input{width:auto}.event-temp-feature[hidden],#event-custom-location-wrap[hidden]{display:none!important}.guard-event-submit{position:sticky;bottom:calc(72px + env(safe-area-inset-bottom));z-index:12;background:rgba(255,255,255,.94);padding-top:.45rem;margin-top:.1rem;backdrop-filter:blur(8px)}
.guard-bottom a.active{color:var(--green);font-weight:800;background:var(--mint);border-radius:10px}.guard-bottom a.active b{transform:translateY(-1px)}.guard-bottom a[aria-current="false"]{background:transparent}

/* 门岗第三轮：紧凑页头、费用预览、入场上下文、多住户选择、行内出场 */
.role-guard .compact-guard-head{margin:.15rem 0 .7rem!important}
.role-guard .compact-guard-head h1{font-size:1.55rem!important;margin:.05rem 0!important}
.role-guard .guard-primary-actions{display:grid;grid-template-columns:1fr 1fr;gap:.5rem;margin-top:.55rem}
.role-guard .guard-primary-actions .button{min-height:48px}
.role-guard .compact-stats-row{margin-bottom:.75rem;gap:.4rem!important}
.role-guard .compact-stats-row .stat{padding:.55rem .45rem!important}
.role-guard .compact-stats-row .stat strong{font-size:1.25rem!important}
.role-guard .compact-stats-row .stat span{font-size:.72rem}
.role-guard .compact-section-head{margin-bottom:.45rem}
.role-guard .compact-section-head h2{font-size:1rem;margin:0}
.guard-vehicle-row{align-items:center}
.guard-row-actions{display:grid;gap:.3rem;justify-items:end;min-width:72px}
.guard-row-actions .compact-action{min-height:34px;padding:.3rem .55rem;font-size:.78rem;border-radius:9px}
.guard-secondary-link{text-align:center;margin:1rem 0 0;color:var(--muted)}
.fee-preview{display:flex;flex-wrap:wrap;align-items:baseline;gap:.45rem .7rem;margin:.7rem 0;padding:.75rem .9rem;border-radius:12px;background:#f3f7f4;border:1px solid #d5e3db}
.fee-preview span{color:var(--muted);font-size:.8rem}.fee-preview strong{font-size:1.35rem;color:var(--green)}.fee-preview small{width:100%;color:#5f7269;font-size:.8rem}
.fee-preview.fee-free{background:#e8f6ee;border-color:#b7dcc8}
.fee-preview.fee-free strong{color:#0a5c45}
.entry-context{margin:12px 0 4px;display:grid;gap:6px}
.entry-context-line{margin:0;padding:10px 12px;border-radius:12px;font-size:.86rem;font-weight:700;line-height:1.4}
.entry-context-line.ok{background:#e8f6ee;color:#0a5c45}
.entry-context-line.warn{background:#fff1d6;color:#8c5908}
.entry-context-line.danger{background:#f9dedb;color:#7d241d}
.entry-context-line.muted{background:#eef2f0;color:#54635d;font-weight:600}
.resident-pick{margin-top:12px}.resident-options{display:grid;gap:8px;margin-top:6px}
.resident-options label{display:flex;align-items:center;gap:.55rem;padding:.7rem .85rem;border:1px solid #d2d8d5;border-radius:12px;background:#fff;cursor:pointer}
.resident-options input{width:auto}.resident-options input:checked+span{color:var(--green);font-weight:800}
.exit-meta{margin:.35rem 0 .2rem;color:var(--muted);font-size:.9rem}
.exit-unconfirmed{margin-top:.7rem;color:var(--muted)}
.badge.pending_review{background:#fff0d9;color:#9a5c06}
.badge.completed,.badge.verified{background:var(--mint);color:var(--green)}
.exit-searchbar .live-search-input{min-width:0}.exit-searchbar #exit-clear{width:auto!important;min-width:58px}.hero-search .search-submit{width:auto!important;min-width:78px;padding:.65rem .7rem;font-size:.82rem;white-space:nowrap}
.entry-page .capture-target{min-height:230px}.entry-page .capture-card{margin-top:16px}.entry-page .entry-more{white-space:nowrap}
@media(max-width:800px){
  .role-guard .page-head.guard-page-head{margin-bottom:.75rem}.role-guard .guard-secondary-action{min-height:44px}.role-guard .guard-upload-alert{padding:.7rem .8rem}
  .guard-event-form-panel{padding:.8rem}.guard-event-submit{bottom:calc(69px + env(safe-area-inset-bottom));margin-left:-.8rem;margin-right:-.8rem;padding:.45rem .8rem calc(.45rem + env(safe-area-inset-bottom))}
}
@media(max-width:390px){
  .role-guard .page-head .actions{grid-template-columns:1fr 1fr}.role-guard .page-head .guard-secondary-action{grid-column:1/-1;width:max-content}
  .entry-page .capture-target{min-height:230px;padding:22px}.entry-page .capture-target strong{font-size:19px}.entry-page .capture-target .camera-mark{width:64px;height:64px;margin-bottom:12px}
  .exit-searchbar{align-items:center;flex-wrap:nowrap}.exit-searchbar #exit-clear{min-height:48px}.hero-search{align-items:center;flex-wrap:nowrap}.hero-search .search-submit{min-height:48px}
}

/* Dense, task-first pass: keep the existing visual language but remove the
   desktop-sized whitespace that made the gate flows hard to scan on phones. */
body{font-size:14px}
.shell{padding-top:1.35rem}
.page-head{margin:.55rem 0 1rem;gap:1rem}
.page-head h1{font-size:2.25rem}
.panel{padding:1rem;border-radius:14px;margin-bottom:.8rem}
.panel h2{font-size:1.15rem;margin-bottom:.55rem}
.stat{padding:.9rem 1rem;border-radius:13px}
.stat strong{font-size:1.8rem}
.stats{gap:.65rem;margin-bottom:.8rem}
.vehicle-row{padding:.7rem .1rem;gap:.65rem}
.xl{padding:.75rem 1rem;font-size:.98rem}
.exit-flow-head .actions{align-items:center}
.exit-flow-head .actions .button{min-height:44px}
@media(max-width:800px){
  .role-guard .shell,.entry-page .entry-shell{padding-top:.7rem!important}
  .role-guard .page-head h1,.entry-page .entry-flow-head h1{font-size:1.6rem}
  .role-guard .page-head p{margin:.15rem 0}
  .role-guard .panel{padding:.78rem;border-radius:13px}
  .role-guard .stat{padding:.65rem .55rem}
  .role-guard .stat strong{font-size:1.3rem}
  .role-guard .stat span{font-size:.75rem}
  .role-guard .page-head .actions .button{min-height:46px}
  .exit-flow-head .actions{display:grid;grid-template-columns:1fr 1fr;margin-top:.6rem}
  .exit-flow-head .actions .button{width:100%;padding:.55rem .4rem}
  .searchbar{margin-bottom:.75rem}
  .exit-card .grid2{gap:.55rem}
}
@media(max-width:390px){
  .role-guard .shell{width:calc(100% - 16px)}
  .entry-page .entry-shell{padding-left:8px!important;padding-right:8px!important}
  .panel{padding:.75rem}
  .page-head h1{font-size:1.6rem}
  .entry-page .entry-flow-head .actions{margin-top:.6rem!important}
}

/* —— 2026-08 mobile polish: touch, AI catalog, exit/search/login —— */
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
button,.button,a,label,summary,input,select,textarea{-webkit-tap-highlight-color:rgba(12,107,82,.12)}
button,.button{touch-action:manipulation;user-select:none}
.toast{position:sticky;top:calc(8px + env(safe-area-inset-top));z-index:40;animation:toast-in .25s ease-out}
@keyframes toast-in{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}
.toast.toast-hide{opacity:0;transition:opacity .35s ease}

.ai-catalog-tip{margin:0 0 .75rem;padding:.65rem .8rem;background:var(--paper);border-radius:10px;font-size:.82rem;color:#54635d;line-height:1.45}
.ai-catalog-tip code{font-size:.78rem;background:#e8f0eb;padding:.1rem .35rem;border-radius:5px}
.ai-group-count{float:right;font-style:normal;font-size:.72rem;font-weight:700;color:var(--green);background:var(--mint);padding:.12rem .4rem;border-radius:99px}
.ai-model-tags{display:flex;gap:.25rem;flex-wrap:wrap;justify-content:flex-end}
.compact-ai summary{display:block}
.compact-ai .ai-model-options{grid-template-columns:repeat(2,minmax(0,1fr))}
@media(max-width:640px){
  .compact-ai .ai-model-options{grid-template-columns:1fr}
  .ai-log-table{min-width:0}
  .ai-log-table thead{display:none}
  .ai-log-table,.ai-log-table tbody,.ai-log-table tr,.ai-log-table td{display:block;width:100%}
  .ai-log-table tr{border:1px solid var(--line);border-radius:12px;margin:.55rem 0;padding:.45rem .55rem;background:#fff}
  .ai-log-table tr.fail{background:#fff8f7}
  .ai-log-table td{border:0;padding:.22rem 0;font-size:.84rem}
}

/* 出场：大触控拍照区 + 底部确认条 */
.exit-photo-btn{
  display:flex!important;flex-direction:column;align-items:center;justify-content:center;gap:.2rem;
  min-height:72px;width:100%;margin:0;padding:.85rem 1rem!important;
  background:#eef7f2!important;color:var(--green)!important;border:1.5px dashed #a8cbbb!important;
  border-radius:14px!important;font-weight:800;cursor:pointer;
}
.exit-photo-btn b{font-size:1.05rem}.exit-photo-btn small{font-weight:600;color:#5f7269;font-size:.78rem}
.exit-capture input:focus+label.exit-photo-btn,.exit-photo-btn:active{border-color:var(--green)!important;background:#e2f3ea!important}
.exit-recognition-status.ok{color:var(--green);font-weight:700}
.exit-recognition-status.warn{color:#8c5908;font-weight:700}
.exit-submit-bar{margin-top:.85rem}
.exit-confirm-btn{min-height:54px!important;font-size:1.05rem!important;border-radius:14px!important}
.exit-empty,.search-empty{padding:2rem 1rem!important}
.exit-empty strong,.search-empty strong{display:block;font-size:1.05rem;margin-bottom:.35rem}
.exit-empty p,.search-empty p{margin:0;color:var(--muted);font-size:.9rem}
.exit-unc-form{display:grid!important;grid-template-columns:1fr auto;gap:.45rem;margin-top:.5rem}
.exit-unc-form input{min-height:44px}
.exit-unc-form button{min-height:44px;white-space:nowrap}
.exit-fields label input{min-height:48px;font-size:16px}

/* 登录：手机满宽、输入 16px 防 iOS 缩放 */
.login-page .login-shell{padding:max(1rem,env(safe-area-inset-top)) 1rem max(1.5rem,env(safe-area-inset-bottom))}
.login-lead{margin:.15rem 0 1rem}
.login-form input,.login-form select{min-height:50px;font-size:16px;border-radius:12px}
.login-submit{min-height:54px;width:100%;border-radius:14px;margin-top:.25rem}
.login-remember{min-height:44px}
@media(max-width:480px){
  .login-card{padding:1.25rem 1.1rem;border-radius:18px;width:100%}
  .login-card h1{font-size:1.55rem}
}

/* 门岗车辆行：整行更好点、状态更清晰 */
.role-guard .guard-vehicle-row,.role-guard .search-result-row{
  border-radius:12px;padding:.7rem .55rem;margin:0 -.35rem;transition:background .12s ease;
}
.role-guard .guard-vehicle-row:active,.role-guard .search-result-row:active{background:#eef5f1}
.role-guard .guard-row-actions .compact-action{min-height:40px;min-width:64px;padding:.4rem .65rem}
.role-guard .guard-bottom a{border-radius:12px;transition:background .12s ease,color .12s ease}
.role-guard .guard-bottom a:active{background:#f0f5f2}
.role-guard .toast{left:8px;right:8px;width:auto}

/* 入场：识别中反馈 + 类型 chips 更好滑 */
.entry-page .capture-target:active{transform:scale(.99);background:#e2efe8}
.entry-page .entry-type-chips{scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;padding-bottom:10px}
.entry-page .entry-type-chips label{scroll-snap-align:start}
.entry-page .entry-type-chips span{min-height:52px}
.entry-page .entry-submit:active{transform:scale(.98)}
.entry-page .recognizing-step p.recognizing-hint{margin-top:10px;font-size:.85rem}
.entry-page .plate-confirm-field:active{background:#f7fcf9!important}
.entry-page .destination-picker input,.entry-page .phone-group input{font-size:16px}

/* 事件表单触控 */
.guard-event-form input,.guard-event-form textarea,.guard-event-form select{font-size:16px;min-height:48px}
.guard-event-form textarea{min-height:96px}
.choice-chips span{min-height:46px}

/* 后台手机菜单更好关、更好点 */
@media(max-width:800px){
  .mobile-menu[open] div{min-width:min(240px,78vw);max-height:70vh;overflow:auto;padding:.35rem}
  .mobile-menu a{min-height:44px;display:flex;align-items:center;padding:.7rem .75rem}
  .mobile-menu strong{display:block;padding:.55rem .75rem .15rem;font-size:.72rem;color:var(--green)}
  .admin-form-actions{position:sticky;bottom:calc(8px + env(safe-area-inset-bottom));z-index:8;background:rgba(244,246,242,.94);padding:.55rem 0;backdrop-filter:blur(8px)}
  .admin-form-actions button{width:100%;min-height:48px}
  .topbar{padding-top:max(.55rem,env(safe-area-inset-top))}
}
@media(max-width:390px){
  .exit-photo-btn{min-height:68px}
  .fee-preview strong{font-size:1.2rem}
  .role-guard .guard-bottom a span{font-size:.65rem}
}

/* 入场/出场确认弹框 */
.gate-confirm-overlay{
  position:fixed;inset:0;z-index:80;background:rgba(13,25,20,.5);
  display:grid;place-items:end center;padding:0 12px calc(12px + env(safe-area-inset-bottom));
}
.gate-confirm-card{
  width:min(100%,420px);background:#fbfaf7;border-radius:20px 20px 16px 16px;
  padding:1rem 1rem 1.1rem;box-shadow:0 -16px 50px rgba(12,25,20,.22);margin-bottom:max(8px,env(safe-area-inset-bottom));
}
.gate-confirm-card h2{margin:.1rem 0 .65rem;font-size:1.2rem}
.gate-confirm-list{list-style:none;margin:0;padding:0;display:grid;gap:.45rem}
.gate-confirm-list li{display:flex;justify-content:space-between;gap:.75rem;padding:.55rem .65rem;background:#fff;border:1px solid var(--line);border-radius:12px}
.gate-confirm-list span{color:var(--muted);font-size:.82rem;flex:0 0 auto}
.gate-confirm-list b{text-align:right;font-size:.92rem;overflow-wrap:anywhere}
.gate-confirm-actions{display:grid;grid-template-columns:1fr 1.2fr;gap:.55rem;margin-top:.9rem}
.gate-confirm-actions .button{min-height:48px}

/* 出场入场照 + 历史 */
.exit-entry-photo{margin:.65rem 0;border:1px solid #dce8e2;border-radius:14px;overflow:hidden;background:#f3f8f5}
.exit-entry-photo-head{display:flex;justify-content:space-between;align-items:center;padding:.45rem .7rem;font-size:.82rem;font-weight:700;color:var(--green)}
.exit-entry-photo img{display:block;width:100%;max-height:180px;object-fit:cover;background:#e5eee9}
.exit-entry-photo small{display:block;padding:.4rem .7rem .55rem;color:var(--muted);font-size:.75rem}
.exit-history{margin:.55rem 0;border-top:1px solid var(--line);padding-top:.45rem}
.exit-history summary{cursor:pointer;color:var(--green);font-weight:750;font-size:.86rem}
.exit-history ul{list-style:none;margin:.45rem 0 0;padding:0;display:grid;gap:.35rem}
.exit-history li{padding:.45rem .55rem;background:var(--paper);border-radius:10px}
.exit-history b,.exit-history small{display:block}.exit-history small{color:var(--muted);font-size:.76rem;margin-top:.1rem}

/* 车辆档案照片与当前在场 */
.vehicle-current-banner{display:flex;gap:.75rem;align-items:center;justify-content:space-between;margin-top:.75rem;padding:.7rem .8rem;background:#eef7f2;border:1px solid #cfe3d8;border-radius:12px}
.vehicle-current-banner b{display:block}.vehicle-current-banner small{display:block;color:#4f675c;margin-top:.2rem;font-size:.8rem}
.vehicle-current-thumb{position:relative;flex:0 0 72px;width:72px;height:56px;border-radius:10px;overflow:hidden}
.vehicle-current-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.vehicle-current-thumb span{position:absolute;left:0;right:0;bottom:0;background:rgba(0,0,0,.45);color:#fff;font-size:.65rem;text-align:center;padding:.1rem}
.vehicle-photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:.55rem}
.vehicle-photo-card{display:grid;gap:.3rem;text-decoration:none;color:inherit}
.vehicle-photo-card img{width:100%;height:88px;object-fit:cover;border-radius:10px;background:#e8eeea;display:block}
.vehicle-photo-card span b,.vehicle-photo-card span small{display:block}.vehicle-photo-card small{color:var(--muted);font-size:.72rem}
.vehicle-head-actions{display:flex;flex-wrap:wrap;gap:.4rem}
.thumbs a{display:inline-grid;gap:.15rem;text-align:center}
.thumbs a small{font-size:.7rem;color:var(--muted)}
.event-row-actions{display:flex;gap:.55rem;align-items:center;margin-top:.4rem}
.event-row-actions .compact-action{min-height:34px;padding:.3rem .55rem;font-size:.78rem}

@media(max-width:480px){
  .vehicle-current-banner{align-items:flex-start}
  .vehicle-head-actions{width:100%;display:grid;grid-template-columns:1fr 1fr}
  .vehicle-head-actions .button:last-child{grid-column:1/-1}
  .gate-confirm-overlay{place-items:end center}
}

/* —— 工作台密列表 + 事件半屏 —— */
.guard-dense-head{display:flex!important;align-items:flex-end;justify-content:space-between;gap:.75rem;margin:.1rem 0 .4rem!important}
.guard-dense-head h1{margin:0!important}
.guard-head-search{font-weight:800;min-height:40px;display:inline-flex;align-items:center;padding:.35rem .55rem;background:#fff;border:1px solid var(--line);border-radius:10px}
/* 工作台保留入场/出场，但压成紧凑双钮，不占回大卡片高度 */
.dense-primary-actions{display:grid!important;grid-template-columns:1fr 1fr;gap:.5rem;margin:0 0 .5rem!important}
.dense-primary-actions .button{min-height:48px;padding:.65rem .5rem;font-size:1.02rem;border-radius:14px}
.guard-stat-line{
  display:flex;flex-wrap:wrap;align-items:center;gap:.35rem .55rem;
  margin:0 0 .55rem;padding:.55rem .65rem;background:#fff;border:1px solid var(--line);
  border-radius:12px;font-size:.78rem;color:var(--muted);
}
.guard-stat-line span{white-space:nowrap}.guard-stat-line b{color:var(--ink);font-size:.95rem;margin-right:.12rem}
.guard-stat-line .on b{color:var(--green)}.guard-stat-line .warn b{color:#9a5c06}
.guard-stat-line .alert-link{color:var(--green);font-weight:800;margin-left:auto}
.dense-list-panel{padding:.55rem .6rem!important}
.dense-toolbar{margin:0 0 .35rem!important;gap:.4rem}
.dense-toolbar .segmented{flex:1;min-width:0}.dense-toolbar .segmented a{padding:.35rem .42rem;font-size:.76rem}
.dense-toolbar .guard-window a{padding:.28rem .38rem;font-size:.74rem}
.dense-vehicle-list{display:grid;gap:0}
.dense-vehicle-row{
  display:grid;grid-template-columns:minmax(0,1fr) 36px;align-items:stretch;
  border-top:1px solid #eef1ef;min-height:52px;
}
.dense-vehicle-row:first-child{border-top:0}
.dense-vehicle-row.is-alert{background:#fff8ef}
.dense-vehicle-row.has-issue{background:#fffbf7}
.dense-vehicle-row.is-alert{box-shadow:inset 3px 0 0 #e9a13b}
.dense-vehicle-row.has-issue{box-shadow:inset 3px 0 0 #c47a2a}
.dense-main{
  display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:.45rem .55rem;
  align-items:center;padding:.42rem .2rem .42rem .35rem;min-width:0;color:inherit;
}
.dense-plate{
  font:800 .82rem/1.1 ui-monospace,"SFMono-Regular",monospace;letter-spacing:.04em;
  background:#eef3f0;border:1px solid #cad5cf;border-radius:6px;padding:.32rem .4rem;white-space:nowrap;
}
.dense-mid{min-width:0}.dense-mid b,.dense-mid small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dense-mid b{font-size:.86rem;font-weight:750}.dense-mid small{color:var(--muted);font-size:.72rem;margin-top:.08rem}
.dense-right{display:grid;justify-items:end;gap:.18rem;min-width:52px}
.dense-stay{font-style:normal;font-weight:800;font-size:.78rem;color:#3d524a;font-variant-numeric:tabular-nums}
.dense-right .badge{font-size:.65rem;padding:.12rem .35rem}
.dense-more{
  display:grid;place-items:center;color:var(--muted);font-weight:900;letter-spacing:.05em;
  border-left:1px solid #eef1ef;font-size:.95rem;
}
.dense-more:active,.dense-main:active{background:#eef5f1}
.dense-pager{margin:.55rem 0 .15rem!important}.dense-pager .button{min-height:36px;padding:.35rem .65rem}
.dense-empty{padding:1.6rem .8rem!important}
.dense-empty strong{display:block;margin-bottom:.3rem}

/* 事件页 */
.event-page-head{display:flex!important;align-items:flex-end;justify-content:space-between!important}
.event-new-btn{min-height:42px!important;padding:.55rem .9rem!important;border-radius:12px!important;white-space:nowrap}
.event-tabs{display:flex;gap:.35rem;margin:0 0 .55rem;background:#e9eeeb;border-radius:12px;padding:.25rem}
.event-tabs a{flex:1;text-align:center;padding:.48rem .4rem;border-radius:9px;color:var(--muted);font-size:.84rem;font-weight:700}
.event-tabs a.active{background:#fff;color:var(--ink);box-shadow:0 2px 6px #ccd4cf}
.event-dense-list{display:grid;gap:0}
.event-dense-row{
  display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.55rem;
  padding:.65rem .15rem;border-top:1px solid #eef1ef;
}
.event-dense-row:first-child{border-top:0}
.event-dense-row.is-open{box-shadow:inset 3px 0 0 var(--red)}
.event-dense-title{font-size:.92rem}.event-dense-title b{margin-right:.15rem}
.event-dense-main small{display:block;color:var(--muted);font-size:.75rem;margin-top:.15rem}
.event-dense-main p{margin:.3rem 0 0;font-size:.84rem;color:#3a4842;line-height:1.4;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.event-dense-side{display:grid;justify-items:end;align-content:start;gap:.3rem;min-width:64px}
.event-resolve-form{display:grid;gap:.3rem;margin-top:.2rem;min-width:120px}
.event-resolve-form input{min-height:36px;padding:.35rem .45rem;font-size:.8rem}
.event-resolve-form button{min-height:34px;padding:.3rem .5rem;font-size:.78rem}

.event-sheet .event-sheet-panel{max-height:92vh;overflow:auto;padding-bottom:calc(12px + env(safe-area-inset-bottom))}
.event-sheet .guard-event-form{gap:.75rem;margin-top:.35rem}
.event-onsite-chips{display:flex;gap:.4rem;overflow-x:auto;padding:2px 0 6px;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.event-onsite-chips::-webkit-scrollbar{display:none}
.event-onsite-chip{
  flex:0 0 auto;min-height:40px;padding:.4rem .7rem;border-radius:99px;
  background:#fff!important;color:var(--ink)!important;border:1px solid #cfd8d3!important;
  font:700 .8rem ui-monospace,monospace;letter-spacing:.04em;
}
.event-onsite-chip.selected{background:var(--green)!important;color:#fff!important;border-color:var(--green)!important}
.event-fact-presets{display:flex;gap:.4rem;flex-wrap:wrap;margin-top:-.25rem}
.event-fact-presets button{
  min-height:34px;padding:.3rem .65rem;font-size:.78rem;font-weight:700;
  background:#edf4f0!important;color:var(--green)!important;border-radius:99px!important;
}
.event-photo-block input{position:absolute;opacity:0;width:1px;height:1px}
.event-photo-btn{
  display:flex!important;flex-direction:column;align-items:center;justify-content:center;gap:.15rem;
  min-height:64px;width:100%;padding:.7rem!important;margin:0;
  background:#eef7f2!important;color:var(--green)!important;border:1.5px dashed #a8cbbb!important;
  border-radius:14px!important;cursor:pointer;
}
.event-photo-btn b{font-size:.95rem}.event-photo-btn small{color:#5f7269;font-weight:600;font-size:.75rem}
.event-advanced{margin-top:.15rem;color:var(--muted);font-size:.85rem}
.event-advanced summary{cursor:pointer;font-weight:700;color:var(--green);padding:.35rem 0}
.event-advanced label{margin-top:.45rem}
.event-sheet-actions{position:sticky;bottom:0;padding:.55rem 0 calc(.35rem + env(safe-area-inset-bottom));
  background:linear-gradient(180deg,rgba(251,250,247,0),#fbfaf7 28%);margin-top:.25rem}
.event-sheet-actions button{min-height:52px;border-radius:14px!important;font-size:1.05rem!important}
.event-kind-chips span{min-height:44px;font-size:.84rem}

@media(max-width:390px){
  .dense-plate{font-size:.76rem;padding:.28rem .32rem}
  .dense-mid b{font-size:.82rem}
  .guard-stat-line{font-size:.72rem;gap:.3rem .4rem}
  .event-dense-row{grid-template-columns:1fr}
  .event-dense-side{justify-items:start;grid-auto-flow:column;justify-content:start;align-items:center}
}

/* ============================================================
   2026-08 dense polish: refined, compact, high information density
   Applies to guard shell + all admin data pages on phone.
   ============================================================ */
:root{
  --ink:#0f1c18;--muted:#5d6b66;--paper:#f2f5f2;--card:#fff;--green:#0a614b;
  --mint:#d7ede4;--line:#d4ddd8;--shadow:0 8px 22px rgba(12,40,32,.07);
  --radius-sm:8px;--radius-md:11px;--radius-lg:14px;
  --touch:44px;--font-sm:.78rem;--font-md:.92rem;
}

/* Global density */
body{font-size:14px;letter-spacing:.01em;-webkit-font-smoothing:antialiased}
.shell{padding:1rem 0 4.5rem}
.page-head{margin:.35rem 0 .7rem;gap:.75rem}
.page-head h1{font-size:clamp(1.35rem,4.2vw,1.85rem);letter-spacing:-.02em}
.page-head p,.admin-sub{font-size:.8rem;color:var(--muted);margin:.15rem 0 0}
.eyebrow{font-size:.7rem!important;letter-spacing:.08em;margin:0!important}
.panel{padding:.75rem .8rem;border-radius:var(--radius-lg);margin-bottom:.65rem;box-shadow:var(--shadow)}
.panel h2{font-size:1rem;margin:0 0 .45rem}
.section-head{margin-bottom:.45rem}
.button,.button.ghost,button{border-radius:var(--radius-md);font-size:.9rem}
.button.xl,.xl{padding:.7rem 1rem;font-size:.98rem}
.stat{padding:.7rem .75rem;border-radius:var(--radius-md)}
.stat strong{font-size:1.45rem}
.badge{font-size:.68rem;padding:.15rem .4rem}
.plate{font-size:.88rem;padding:.28rem .42rem;border-radius:6px}
.plate.big{font-size:1.35rem}
.plate.small{font-size:.8rem}
.toast{padding:.6rem .8rem;margin-bottom:.65rem;font-size:.86rem;border-radius:var(--radius-md)}

/* —— Guard shell —— */
.role-guard .topbar{
  width:min(100%,430px);height:52px;margin:0 auto;padding:6px 12px;
  border-bottom:1px solid var(--line);background:rgba(255,255,255,.94);backdrop-filter:blur(10px);
}
.role-guard .topbar .brand span{width:32px;height:32px;font-size:16px;border-radius:9px}
.role-guard .topbar .brand strong{font-size:.92rem;max-width:140px}
.role-guard .shell{width:min(100%,430px);padding:.55rem 12px calc(78px + env(safe-area-inset-bottom));margin:0 auto}
.role-guard .guard-bottom{
  width:min(100%,430px);left:50%;transform:translateX(-50%);
  padding:4px 6px calc(4px + env(safe-area-inset-bottom));
  grid-template-columns:repeat(5,1fr);gap:2px;
  background:rgba(255,255,255,.97);backdrop-filter:blur(12px);
  border-top:1px solid var(--line);box-shadow:0 -6px 18px rgba(12,40,32,.06);
}
.role-guard .guard-bottom a{min-height:50px;border-radius:12px;font-size:.62rem;gap:1px;padding:4px 0}
.role-guard .guard-bottom b{font-size:1.15rem}
.role-guard .guard-bottom a.active{background:var(--mint);color:var(--green)}

.guard-dense-head{margin:.05rem 0 .4rem!important;align-items:center}
.guard-dense-head h1{font-size:1.4rem!important;margin:0!important}
.guard-head-search{min-height:36px;padding:.3rem .55rem;font-size:.8rem;border-radius:999px}
.dense-primary-actions{gap:.4rem!important;margin:0 0 .45rem!important}
.dense-primary-actions .button{min-height:44px;border-radius:12px;font-size:.95rem;font-weight:800}
.guard-stat-line{
  margin:0 0 .45rem;padding:.42rem .55rem;border-radius:12px;gap:.25rem .4rem;
  font-size:.74rem;background:#fff;border:1px solid var(--line);
}
.guard-stat-line b{font-size:.9rem}
.dense-list-panel{padding:.4rem .45rem!important}
.dense-toolbar{gap:.3rem;margin:0 0 .25rem!important}
.dense-toolbar .segmented{padding:.18rem;border-radius:10px;background:#e8eeea}
.dense-toolbar .segmented a{padding:.32rem .4rem;font-size:.74rem;border-radius:8px}
.dense-toolbar .guard-window a{padding:.25rem .35rem;font-size:.72rem;border-radius:8px}
.dense-vehicle-row{min-height:48px}
.dense-main{padding:.32rem .15rem .32rem .25rem;gap:.4rem}
.dense-plate{
  font-size:.78rem;padding:.26rem .35rem;letter-spacing:.03em;
  background:#eef4f0;border-color:#c5d4cc;
}
.dense-mid b{font-size:.84rem;font-weight:700}
.dense-mid small{font-size:.7rem;margin-top:.04rem}
.dense-stay{font-size:.74rem}
.dense-right .badge{font-size:.62rem}
.dense-more{font-size:.88rem;width:34px}
.dense-main-link{
  display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:.45rem;align-items:center;
  padding:.4rem .35rem;border-top:1px solid #eef1ef;min-height:48px;color:inherit;
}
.dense-vehicle-list > a.dense-main-link:first-child,.dense-vehicle-list > .dense-vehicle-row:first-child{border-top:0}
.dense-main-link:active{background:#eef5f1}

/* Entry denser */
.entry-page .entry-shell{padding:.45rem 12px calc(78px + env(safe-area-inset-bottom))!important}
.entry-page .entry-flow-head h1{font-size:1.4rem!important}
.entry-page .capture-target{min-height:180px;border-radius:18px;padding:20px}
.entry-page .capture-target .camera-mark{width:56px;height:56px;margin-bottom:10px;font-size:15px}
.entry-page .capture-target strong{font-size:18px}
.entry-page .manual-start{min-height:46px;margin-top:12px}
.entry-page .entry-result-card{height:108px;border-radius:14px}
.entry-page .plate-confirm-field{min-height:64px;border-radius:14px!important}
.entry-page .plate-confirm-field>span{font-size:26px}
.entry-page .entry-type-chips span{min-width:88px;min-height:46px;border-radius:12px;font-size:.86rem}
.entry-page .entry-field-group{margin-top:16px}
.entry-page .entry-submit{min-height:52px;border-radius:14px!important;font-size:17px!important}
.entry-page .entry-submit-bar{padding:8px 12px calc(8px + env(safe-area-inset-bottom))}

/* Exit denser */
.exit-card{padding:.7rem!important}
.exit-meta{font-size:.82rem}
.fee-preview{padding:.55rem .7rem;margin:.5rem 0;border-radius:11px}
.fee-preview strong{font-size:1.15rem}
.exit-photo-btn{min-height:58px;border-radius:12px!important}
.exit-confirm-btn{min-height:48px!important;font-size:1rem!important}
.exit-entry-photo img{max-height:140px}

/* Events denser */
.event-page-head h1{font-size:1.4rem!important}
.event-new-btn{min-height:38px!important;padding:.45rem .75rem!important;font-size:.86rem!important}
.event-tabs{margin:0 0 .45rem;padding:.18rem;border-radius:11px}
.event-tabs a{padding:.4rem .3rem;font-size:.8rem}
.event-dense-row{padding:.5rem .1rem;gap:.45rem}
.event-dense-title{font-size:.86rem}
.event-dense-main p{font-size:.8rem;-webkit-line-clamp:2}
.event-sheet-panel{border-radius:18px 18px 0 0}
.event-kind-chips span{min-height:40px;font-size:.8rem;padding:6px 10px}
.event-onsite-chip{min-height:36px;font-size:.76rem}
.event-sheet-actions button{min-height:48px;font-size:1rem!important}

/* Search / vehicle */
.hero-search input{font-size:16px;min-height:46px;padding:.65rem .75rem;border-radius:12px}
.hero-search .search-submit{min-height:46px;border-radius:12px}
.search-summary{gap:.35rem;margin:.35rem 0 .55rem;font-size:.75rem}
.search-summary span{padding:.2rem .5rem}
.vehicle-overview{padding:.7rem .75rem}
.vehicle-overview-grid{gap:.45rem;padding-bottom:.55rem}
.vehicle-overview-grid b{font-size:.95rem}
.vehicle-photo-card img{height:76px;border-radius:9px}
.vehicle-stats .stat strong{font-size:1.25rem}
.timeline-item{padding:.7rem 0;gap:.65rem}
.timeline-item p{font-size:.82rem;margin:.2rem 0}

/* Uploads */
.dense-upload-row{
  display:grid;grid-template-columns:1fr auto auto;gap:.45rem;align-items:center;
  padding:.55rem .2rem;border-top:1px solid var(--line);
}
.dense-upload-row:first-child{border-top:0}
.dense-upload-meta b,.dense-upload-meta small{display:block}
.dense-upload-meta small{color:var(--muted);font-size:.74rem;margin-top:.1rem}
.dense-upload-pick{position:relative;min-height:40px}
.dense-upload-pick input{position:absolute;opacity:0;inset:0;width:100%;height:100%}
.dense-upload-pick span{
  display:grid;place-items:center;min-height:40px;padding:0 .65rem;border-radius:10px;
  background:#eef7f2;color:var(--green);border:1px dashed #a8cbbb;font-size:.8rem;font-weight:750;
}
.dense-upload-row button{min-height:40px;padding:.45rem .7rem;font-size:.82rem}

/* Login denser */
.login-page .login-shell{padding:max(.75rem,env(safe-area-inset-top)) .85rem max(1rem,env(safe-area-inset-bottom))}
.login-card{padding:1.15rem 1rem;border-radius:18px;box-shadow:0 18px 50px rgba(12,40,32,.12)}
.login-card h1{font-size:1.4rem;margin:.15rem 0}
.login-mark{width:42px;height:42px;border-radius:12px;font-size:20px}
.login-form{gap:.7rem}
.login-form input,.login-form select{min-height:46px;font-size:16px;border-radius:11px}
.login-submit{min-height:48px;border-radius:12px}
.login-note{font-size:.76rem;line-height:1.45}

/* —— Admin mobile dense —— */
.admin-page .shell{padding:.75rem 0 2.5rem}
.admin-head{margin:0 0 .65rem;gap:.55rem}
.admin-head h1{font-size:1.45rem;margin:0;letter-spacing:-.02em}
.admin-head-meta{gap:.35rem;font-size:.78rem}
.admin-tabs{gap:.2rem;padding:.2rem;border-radius:11px;margin-bottom:.6rem;background:#e8eeea;display:flex;flex-wrap:wrap}
.admin-tabs a{padding:.4rem .55rem;border-radius:8px;font-size:.8rem;font-weight:700;color:var(--muted)}
.admin-tabs a.active{background:#fff;color:var(--ink);box-shadow:0 1px 4px rgba(0,0,0,.06)}
.admin-panel{padding:.7rem .75rem;border-radius:var(--radius-lg);margin-bottom:.6rem}
.admin-panel-head{margin-bottom:.45rem}
.admin-panel-head h2{font-size:.98rem;margin:0}
.admin-panel-head span{font-size:.74rem;color:var(--muted)}
.admin-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.4rem;margin-bottom:.6rem}
.admin-stats > div,.admin-stats .stat{
  background:#fff;border:1px solid var(--line);border-radius:11px;padding:.55rem .55rem;
}
.admin-stats span{display:block;font-size:.7rem;color:var(--muted)}
.admin-stats b{display:block;font-size:1.15rem;margin-top:.15rem;line-height:1.15}
.admin-stats small{display:block;font-size:.7rem;color:var(--muted);margin-top:.1rem}
.admin-stats.money b{color:var(--green)}
.admin-stats.mini{grid-template-columns:repeat(4,minmax(0,1fr))}
.admin-form-grid{gap:.5rem}
.admin-form label{font-size:.8rem;gap:.25rem}
.admin-form input,.admin-form select,.admin-form textarea{min-height:42px;padding:.55rem .65rem;border-radius:10px;font-size:16px}
.admin-form-actions{margin-top:.5rem}
.admin-form-actions button{min-height:44px;width:100%}
.admin-table{font-size:.82rem}
.admin-table th,.admin-table td{padding:.45rem .4rem}
.admin-alert-link{
  display:flex;justify-content:space-between;align-items:center;gap:.5rem;
  padding:.65rem .75rem;margin-bottom:.6rem;border-radius:12px;background:#fff4e5;border:1px solid #f0d2a0;
  color:#8c5908;text-decoration:none;
}
.admin-alert-link strong{font-size:.9rem}.admin-alert-link span{font-size:.78rem}
.admin-toolbar{display:flex;gap:.45rem;margin-bottom:.55rem;flex-wrap:wrap}
.admin-toolbar input{min-height:44px;flex:1;font-size:16px}
.admin-toolbar button{min-height:44px}
.compact-add-form{display:flex;gap:.4rem;margin-top:.55rem}
.compact-add-form input{flex:1;min-height:42px}
.compact-add-form button{min-height:42px;white-space:nowrap}
.rank-row{padding:.45rem 0;font-size:.86rem}
.ai-usage-stats{gap:.4rem;margin-bottom:.55rem}
.ai-stat{padding:.55rem .6rem;border-radius:11px}
.ai-stat b{font-size:1.15rem}
.ai-model-card-body{padding:.55rem!important;gap:.2rem}
.ai-model-card-title strong{font-size:.86rem}
.audit-filters{gap:.4rem}
.pager{margin:.55rem 0 .15rem;font-size:.78rem;gap:.45rem}
.pager .button{min-height:34px;padding:.3rem .55rem;font-size:.78rem}

/* Admin tables → stacked cards on phone */
@media(max-width:800px){
  .admin-stats,.admin-stats.money,.admin-stats.mini{grid-template-columns:repeat(2,minmax(0,1fr))}
  .admin-split{grid-template-columns:1fr;gap:.55rem}
  .admin-head{display:block}
  .admin-head-meta{margin-top:.4rem;display:flex;flex-wrap:wrap;gap:.35rem}
  .admin-head-meta .button{min-height:36px;padding:.4rem .6rem;font-size:.8rem}
  .admin-table-wrap.mobile-cards{overflow:visible}
  .admin-table-wrap.mobile-cards table{min-width:0;width:100%}
  .admin-table-wrap.mobile-cards thead{display:none}
  .admin-table-wrap.mobile-cards,.admin-table-wrap.mobile-cards tbody,
  .admin-table-wrap.mobile-cards tr,.admin-table-wrap.mobile-cards td{display:block;width:100%}
  .admin-table-wrap.mobile-cards tr{
    border:1px solid var(--line);border-radius:12px;margin:0 0 .5rem;padding:.5rem .55rem;background:#fff;
  }
  .admin-table-wrap.mobile-cards td{
    border:0;padding:.22rem 0;display:flex;justify-content:space-between;gap:.55rem;align-items:flex-start;
    font-size:.84rem;
  }
  .admin-table-wrap.mobile-cards td:first-child{font-weight:750}
  .admin-table-wrap.mobile-cards .col-actions,
  .admin-table-wrap.mobile-cards td.col-actions{
    display:flex;flex-wrap:wrap;justify-content:flex-end;gap:.3rem;padding-top:.4rem;margin-top:.25rem;
    border-top:1px solid #eef1ef;
  }
  .admin-inline{display:inline-flex;gap:.3rem;flex-wrap:wrap;align-items:center}
  .admin-inline input{min-height:36px;font-size:14px}
  .admin-inline button{min-height:36px;padding:.35rem .55rem;font-size:.78rem}
  .desktop-nav{display:none!important}
  .mobile-menu{display:block}
  .topbar{height:auto;padding:.55rem 3vw;gap:.4rem}
  .topbar .brand strong{max-width:42vw;overflow:hidden;text-overflow:ellipsis}
  .user{font-size:.78rem}
  .user b{font-size:.82rem}
  .admin-contact-link{font-size:.72rem}
  /* Explore / residents denser */
  .explore-search{flex-wrap:nowrap}
  .building-list{grid-template-columns:1fr;gap:.5rem}
  .building-card{padding:.65rem}
  .resident-card-actions button,.resident-card-actions summary{min-height:36px;font-size:.78rem}
  .account-row{padding:.55rem 0}
  /* Data tables that still scroll */
  .table-wrap{border-radius:12px}
  .data-table.compact th,.data-table.compact td{padding:.4rem .35rem;font-size:.78rem}
  .ai-log-table{font-size:.78rem}
}

@media(max-width:420px){
  .admin-stats{grid-template-columns:repeat(2,minmax(0,1fr))}
  .role-guard .shell,.entry-page .entry-shell{width:100%}
  .role-guard .topbar,.role-guard .guard-bottom{width:100%;border-radius:0}
  .dense-primary-actions .button{font-size:.9rem}
  .login-card h1{font-size:1.28rem}
  body{font-size:13.5px}
}

/* Reduce empty states padding */
.dense-empty,.empty{padding:1.25rem .75rem!important;font-size:.88rem}
.empty strong{font-size:.95rem}
.search-empty{padding:1.5rem 1rem!important}

/* Confirm dialog tighter */
.gate-confirm-card{padding:.85rem .85rem .95rem;border-radius:16px}
.gate-confirm-card h2{font-size:1.08rem}
.gate-confirm-list li{padding:.45rem .55rem;border-radius:10px}
.gate-confirm-actions .button{min-height:44px}

/* AI page denser on phone */
@media(max-width:640px){
  .ai-model-options{grid-template-columns:1fr}
  .compact-ai .ai-model-card-body{padding:.5rem!important}
  .ai-usage-stats{grid-template-columns:repeat(2,minmax(0,1fr))}
}

/* ============================================================
   Event page v3 — find car first, then record (no manual location)
   ============================================================ */
.event-page .shell.entry-shell,
.role-guard.event-page .shell{padding-top:.45rem}
.event-top{
  display:flex;align-items:center;justify-content:space-between;gap:.6rem;
  margin:0 0 .4rem;
}
.event-top-main .eyebrow{margin:0!important}
.event-top-main h1{margin:0;font-size:1.35rem;letter-spacing:-.02em;line-height:1.15}
.event-fab{
  min-height:36px!important;padding:.4rem .75rem!important;border-radius:999px!important;
  font-size:.84rem!important;font-weight:800!important;flex:0 0 auto;
}
.event-page .event-tabs{
  display:grid;grid-template-columns:1fr 1fr 1fr;gap:0;margin:0 0 .45rem;
  background:#e6ece8;border-radius:11px;padding:3px;
}
.event-page .event-tabs a{
  display:flex;align-items:center;justify-content:center;gap:.25rem;
  min-height:36px;padding:.3rem .2rem;border-radius:9px;font-size:.8rem;font-weight:750;
  color:var(--muted);text-decoration:none;
}
.event-page .event-tabs a.active{background:#fff;color:var(--ink);box-shadow:0 1px 3px rgba(12,40,32,.08)}
.event-page .event-tabs em{
  font-style:normal;font-size:.68rem;font-weight:800;background:var(--mint);color:var(--green);
  min-width:1.15rem;height:1.15rem;padding:0 .28rem;border-radius:99px;display:inline-grid;place-items:center;
}

.event-list-shell{
  background:#fff;border:1px solid var(--line);border-radius:14px;overflow:hidden;
  box-shadow:var(--shadow);margin-bottom:.5rem;
}
.event-list{display:grid}
.event-row{
  display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:stretch;
  border-top:1px solid #eef1ef;min-height:52px;
}
.event-row:first-child{border-top:0}
.event-row.is-open{box-shadow:inset 3px 0 0 #c45c4a}
.event-row.is-done{opacity:.88}
.event-row-main{
  display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:.4rem .5rem;
  align-items:center;padding:.4rem .45rem .4rem .55rem;min-width:0;color:inherit;text-decoration:none;
}
.event-row-main:active{background:#f3f8f5}
.event-row-l{display:grid;gap:.18rem;justify-items:start}
.event-plate{
  font:800 .76rem/1.1 ui-monospace,"SFMono-Regular",monospace;letter-spacing:.03em;
  background:#eef4f0;border:1px solid #c8d6cf;border-radius:6px;padding:.22rem .34rem;white-space:nowrap;
}
.event-plate.temp{background:#fff1d6;border-color:#e8c98a;color:#8c5908}
.event-tag{font-size:.68rem;font-weight:750;color:var(--green);max-width:7.5rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.event-row-m{min-width:0}
.event-row-m b,.event-row-m small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.event-row-m b{font-size:.82rem;font-weight:700}
.event-row-m small{font-size:.7rem;color:var(--muted);margin-top:.06rem}
.event-status{
  font-style:normal;font-size:.62rem;font-weight:800;border-radius:99px;padding:.16rem .38rem;white-space:nowrap;
}
.event-status.open{background:#f9dedb;color:#8a2f28}
.event-status.done{background:var(--mint);color:var(--green)}
.event-row-ops{
  display:flex;flex-direction:column;justify-content:center;align-items:stretch;gap:.2rem;
  padding:.3rem .35rem .3rem 0;border-left:1px solid #eef1ef;min-width:48px;
}
.event-op{
  display:grid;place-items:center;min-height:30px;padding:0 .4rem;border-radius:8px;
  font-size:.72rem;font-weight:800;color:var(--green);background:#eef7f2;text-decoration:none;
}
.event-resolve{position:relative}
.event-resolve>summary{
  list-style:none;cursor:pointer;min-height:30px;display:grid;place-items:center;
  font-size:.72rem;font-weight:800;color:#8c5908;background:#fff6e8;border-radius:8px;padding:0 .4rem;
}
.event-resolve>summary::-webkit-details-marker{display:none}
.event-resolve[open]>form{
  position:absolute;right:0;top:34px;z-index:5;width:min(220px,70vw);
  display:grid;grid-template-columns:1fr auto;gap:.3rem;padding:.4rem;
  background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow);
}
.event-resolve input{min-height:34px;padding:.3rem .4rem;font-size:.8rem;border-radius:8px;border:1px solid #becac4}
.event-resolve button{min-height:34px;padding:.3rem .5rem;font-size:.76rem;border-radius:8px}
.event-empty{padding:1.6rem 1rem;text-align:center;color:var(--muted)}
.event-empty strong{display:block;color:var(--ink);font-size:.95rem;margin-bottom:.25rem}
.event-empty p{margin:0;font-size:.82rem}

/* Sheet form denser */
.event-sheet-panel{
  max-height:min(92vh,720px);overflow:auto;
  padding:8px 14px calc(10px + env(safe-area-inset-bottom))!important;
  border-radius:18px 18px 0 0!important;background:#f7f9f7!important;
}
.event-sheet-head{display:flex;align-items:flex-start;justify-content:space-between;gap:.6rem;margin:.1rem 0 .55rem}
.event-sheet-head small{display:block;color:var(--green);font-size:.72rem;font-weight:750}
.event-sheet-head h2{margin:.1rem 0 0;font-size:1.15rem}
.event-sheet-x{
  background:transparent!important;color:var(--muted)!important;border:0!important;
  min-height:36px;padding:.35rem .5rem!important;font-size:.86rem!important;font-weight:700!important;
}
.event-form{display:grid;gap:.65rem}
.ef-block{display:grid;gap:.3rem}
.ef-label{font-size:.76rem;font-weight:800;color:#5a6862}
.ef-label small{font-weight:600;color:#8a9690}
.ef-chips{display:flex;gap:6px;overflow-x:auto;padding:1px 1px 4px;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.ef-chips::-webkit-scrollbar{display:none}
.ef-chip{flex:0 0 auto;display:block}
.ef-chip>input{position:absolute;opacity:0;width:1px;height:1px}
.ef-chip>span{
  display:grid;place-items:center;min-height:36px;padding:0 .7rem;border-radius:999px;
  border:1px solid #cfd8d3;background:#fff;color:#44534d;font-size:.78rem;font-weight:750;
}
.ef-chip>input:checked+span{background:var(--green);border-color:var(--green);color:#fff}
.ef-plates{display:flex;gap:6px;overflow-x:auto;padding:1px 0 4px;scrollbar-width:none}
.ef-plates::-webkit-scrollbar{display:none}
.ef-plate,.event-onsite-chip.ef-plate{
  flex:0 0 auto;min-height:34px;padding:.3rem .55rem;border-radius:8px;
  font:750 .74rem ui-monospace,monospace;letter-spacing:.03em;
  background:#fff!important;color:var(--ink)!important;border:1px solid #cfd8d3!important;
}
.ef-plate.selected,.event-onsite-chip.selected{
  background:var(--green)!important;color:#fff!important;border-color:var(--green)!important;
}
.ef-input,.event-form .ef-input{
  width:100%;min-height:42px;padding:.55rem .65rem;border-radius:10px;
  border:1px solid #becac4;background:#fff;font-size:16px;
}
.ef-area{
  width:100%;min-height:64px;padding:.55rem .65rem;border-radius:10px;
  border:1px solid #becac4;background:#fff;font-size:16px;resize:vertical;
}
.ef-check{display:flex;align-items:center;gap:.4rem;font-size:.82rem;font-weight:750;color:var(--green)}
.ef-check input{width:auto}
.ef-field{display:grid;gap:.25rem;font-size:.78rem;font-weight:700;color:#5a6862}
.ef-presets{display:flex;gap:6px;flex-wrap:wrap}
.ef-presets button,.event-fact-presets button{
  min-height:30px!important;padding:.25rem .55rem!important;font-size:.74rem!important;font-weight:750!important;
  background:#e9f3ee!important;color:var(--green)!important;border-radius:999px!important;border:0!important;
}
.event-photo-block input{position:absolute;opacity:0;width:1px;height:1px}
.ef-photo,.event-photo-btn{
  display:flex!important;align-items:center;justify-content:center;gap:.45rem;
  min-height:48px!important;width:100%;margin:0;padding:.5rem!important;
  background:#eef7f2!important;color:var(--green)!important;border:1.5px dashed #a8cbbb!important;
  border-radius:12px!important;cursor:pointer;
}
.ef-photo b,.event-photo-btn b{font-size:.88rem}
.ef-photo small,.event-photo-btn small{color:#5f7269;font-weight:600;font-size:.72rem}
.ef-more{font-size:.8rem;color:var(--muted)}
.ef-more summary{cursor:pointer;color:var(--green);font-weight:750;padding:.2rem 0}
.ef-more .ef-input{margin-top:.35rem}
.ef-actions{
  position:sticky;bottom:0;padding:.45rem 0 calc(.2rem + env(safe-area-inset-bottom));
  background:linear-gradient(180deg,rgba(247,249,247,0),#f7f9f7 30%);
}
.ef-actions button{min-height:48px!important;border-radius:12px!important;font-size:1rem!important}
.ef-step{
  display:inline-flex;align-items:center;justify-content:center;
  width:1.15rem;height:1.15rem;margin-right:.28rem;border-radius:999px;
  background:var(--green);color:#fff;font-size:.68rem;font-weight:800;vertical-align:middle;
}
.ef-hint{margin:0;font-size:.72rem;color:var(--muted);line-height:1.35}
.event-when-chips span{min-height:38px;font-size:.78rem}
#event-occurred-at{margin-top:.15rem}
.dash-daily{margin-bottom:.7rem}
.dash-daily .admin-stats{margin:0}
.dash-long-list{margin-top:.45rem;display:grid;gap:0}
.dash-accounts{margin:.7rem 0}
.admin-stats b.warn{color:#b5473a}
.dense-table th,.dense-table td{padding:.4rem .45rem;font-size:.82rem}

@media(max-width:390px){
  .event-row-main{grid-template-columns:auto minmax(0,1fr);gap:.3rem .4rem}
  .event-status{grid-column:2;justify-self:end}
  .event-row-ops{min-width:44px}
  .event-tag{max-width:5.8rem}
}

/* —— Gate pages v3: entry / exit / search —— */
.gate-top{
  display:flex;align-items:flex-end;justify-content:space-between;gap:.5rem;
  margin:0 0 .55rem;
}
.gate-top-main .eyebrow{margin:0!important}
.gate-top-main h1{margin:0;font-size:1.35rem;letter-spacing:-.02em;line-height:1.15}
.gate-top-link,.gate-top-actions .button{
  min-height:36px!important;padding:.4rem .7rem!important;border-radius:10px!important;font-size:.82rem!important;
}
.gate-search{
  display:flex;gap:.4rem;align-items:center;margin:0 0 .55rem;
}
.gate-search .live-search-input{flex:1;min-width:0}
.gate-search input{
  width:100%;min-height:46px;font-size:16px;border-radius:12px;padding:.65rem .75rem;
  border:1px solid var(--line);background:#fff;
}
.gate-search-clear,.search-submit{
  min-height:46px!important;min-width:52px;padding:.5rem .65rem!important;
  border-radius:12px!important;font-size:.82rem!important;white-space:nowrap;
}
.gate-label{
  display:block;font-size:.76rem;font-weight:800;color:#5a6862;margin:0 0 .35rem;
}
.gate-label small{font-weight:600;color:#8a9690}
.gate-pick-block{margin:0 0 .6rem}
.gate-pick-block.compact{margin-bottom:.4rem}
.gate-plate-chips{
  display:flex;gap:6px;overflow-x:auto;padding:1px 0 4px;scrollbar-width:none;
  -webkit-overflow-scrolling:touch;
}
.gate-plate-chips::-webkit-scrollbar{display:none}
.gate-plate-chip{
  flex:0 0 auto;display:grid;gap:.1rem;min-height:40px;padding:.35rem .7rem;
  border-radius:10px;border:1px solid #c9d4ce;background:#fff;color:var(--ink);
  font-weight:750;font-size:.82rem;text-decoration:none;align-content:center;
}
.gate-plate-chip b{font-size:.84rem;line-height:1.1}
.gate-plate-chip small{font-size:.66rem;font-weight:600;color:var(--muted);white-space:nowrap}
.gate-plate-chip.selected,.gate-plate-chip:active{background:var(--green);border-color:var(--green);color:#fff}
.gate-plate-chip.selected small,.gate-plate-chip:active small{color:rgba(255,255,255,.85)}
.gate-plate-chip.alert{border-color:#e0b4a8;background:#fff6f4}
.gate-empty{
  padding:1.4rem 1rem;text-align:center;background:#fff;border:1px solid var(--line);
  border-radius:14px;color:var(--muted);
}
.gate-empty.soft{background:transparent;border-style:dashed}
.gate-empty strong{display:block;color:var(--ink);font-size:.95rem;margin-bottom:.25rem}
.gate-empty p{margin:0;font-size:.82rem}
.gate-empty a{color:var(--green);font-weight:750}

/* Exit card denser + one-screen selected layout */
.exit-page .exit-grid{display:block}
.exit-page.exit-page .shell{padding-top:.55rem!important}
.exit-search-tight{margin:0 0 .45rem}
.exit-card{
  background:#fff;border:1px solid var(--line);border-radius:14px;padding:.7rem .75rem;
  display:grid;gap:.5rem;
}
.exit-card-one{
  gap:.4rem;padding:.55rem .65rem .5rem;
}
.exit-one-head{
  display:flex;align-items:center;justify-content:space-between;gap:.4rem;
}
.exit-one-id{display:flex;align-items:center;flex-wrap:wrap;gap:.3rem;min-width:0}
.exit-plate{
  display:inline-block;font-size:1.12rem;font-weight:850;letter-spacing:.02em;
  color:var(--ink);line-height:1.15;
}
.exit-one-id .badge{font-size:.66rem;padding:.12rem .35rem}
.badge.ok{background:#e8f6ee;color:#0a5c45}
.exit-more-link{
  flex:0 0 auto;font-size:.76rem;font-weight:750;color:var(--green);
  padding:.28rem .5rem;border-radius:8px;background:#eef7f2;white-space:nowrap;
}
.exit-one-line{
  margin:0;padding:.35rem .45rem;border-radius:9px;background:#f5f8f6;
  font-size:.78rem;line-height:1.35;color:#3a4842;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.exit-one-line b{color:var(--ink);font-weight:800}
.exit-one-line.is-warn b{color:#b5473a}
.exit-one-action{
  display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:.4rem;align-items:end;
  padding:.4rem .45rem;border-radius:11px;background:#eef7f2;
}
.exit-one-action.is-free{background:#e8f6ee}
.exit-one-fee{min-width:4.2rem}
.exit-one-fee span{display:block;font-size:.66rem;color:var(--muted);font-weight:650}
.exit-one-fee strong{display:block;font-size:1.15rem;color:var(--green);line-height:1.15}
.exit-one-fee small{display:block;font-size:.66rem;color:#0a5c45;font-weight:650;max-width:5.5rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.exit-one-actual{display:grid;gap:.15rem;min-width:0;font-size:.68rem;font-weight:700;color:#5a6862}
.exit-one-actual input{
  min-height:40px;width:100%;font-size:16px;border-radius:9px;padding:.3rem .45rem;
  border:1px solid #becac4;background:#fff;
}
.exit-one-photo{position:relative}
.exit-one-photo input{position:absolute;opacity:0;width:1px;height:1px}
.exit-photo-mini{
  display:grid!important;place-items:center;width:44px;height:40px;margin:0;
  border-radius:10px!important;background:#fff!important;color:var(--green)!important;
  border:1.5px dashed #a8cbbb!important;cursor:pointer;font-size:1.05rem;padding:0!important;
}
.exit-photo-mini.has-file{background:var(--green)!important;color:#fff!important;border-style:solid!important}
.exit-card-one .exit-confirm-btn{
  min-height:48px!important;border-radius:12px!important;font-size:1.02rem!important;margin-top:.1rem;
}
.exit-one-more{
  font-size:.8rem;color:var(--muted);border-top:1px solid #eef1ef;padding-top:.25rem;margin-top:.05rem;
}
.exit-one-more>summary{
  cursor:pointer;font-weight:750;color:var(--green);padding:.2rem 0;list-style:none;
}
.exit-one-more>summary::-webkit-details-marker{display:none}
.exit-one-more[open]>summary{margin-bottom:.35rem}
.exit-one-note{display:grid;gap:.2rem;font-size:.76rem;font-weight:700;color:#5a6862;margin-bottom:.4rem}
.exit-one-note input{
  min-height:40px;font-size:16px;border-radius:9px;padding:.35rem .5rem;border:1px solid #becac4;
}
.exit-note{
  margin:0 0 .35rem;padding:.35rem .5rem;border-radius:9px;font-size:.76rem;line-height:1.35;
  background:#eef2f0;color:#3a4842;
}
.exit-note.ok{background:#e8f6ee;color:#0a5c45;font-weight:650}
.exit-issues{display:grid;gap:.25rem;margin-bottom:.35rem}
.exit-issue-row{
  display:grid;gap:.05rem;padding:.35rem .45rem;border-radius:9px;background:#fff6f4;
  border:1px solid #f0d5cf;text-decoration:none;
}
.exit-issue-row b{font-size:.78rem;color:#8a2f28}
.exit-issue-row small{font-size:.68rem;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.exit-thumb-inline{
  display:flex;align-items:center;gap:.45rem;margin-bottom:.4rem;text-decoration:none;color:var(--muted);font-size:.72rem;
}
.exit-thumb-inline img{
  width:56px;height:40px;object-fit:cover;border-radius:7px;border:1px solid var(--line);display:block;
}
.exit-history-block{margin:.2rem 0 .4rem}
.exit-history-block>b{display:block;font-size:.78rem;color:var(--ink);margin-bottom:.25rem}
.exit-history-block ul{margin:0;padding:0;list-style:none;display:grid;gap:.25rem}
.exit-history-block li{display:grid;gap:.02rem;padding:.25rem 0;border-top:1px solid #eef1ef}
.exit-history-block li b{font-size:.78rem;color:var(--ink)}
.exit-history-block li small{font-size:.68rem;color:var(--muted)}
.exit-unc-block{margin-top:.25rem;padding-top:.35rem;border-top:1px solid #eef1ef}
.exit-unc-block>b{display:block;font-size:.76rem;color:var(--muted);margin-bottom:.3rem}
.exit-unc-form{display:grid!important;grid-template-columns:1fr auto;gap:.35rem}
.exit-unc-form input{min-height:40px;font-size:16px}
.exit-unc-form button{min-height:40px;white-space:nowrap;padding:0 .7rem}

/* legacy class hooks kept for older dense rules */
.exit-facts{display:none}
.exit-photo-btn{display:none}
.exit-recognition-status{display:none}
.exit-fields{display:none}
.exit-submit-bar{display:none}

/* Search results denser */
.search-page .search-summary{
  display:flex;flex-wrap:wrap;gap:.3rem;margin:0 0 .5rem;font-size:.72rem;
}
.search-page .search-summary span{
  padding:.18rem .45rem;border-radius:999px;background:#eef2f0;color:var(--muted);font-weight:700;
}
.search-page .search-summary .accent{background:var(--mint);color:var(--green)}
.gate-list-shell{background:#fff;border:1px solid var(--line);border-radius:14px;overflow:hidden}
.gate-result-list{display:grid}
.gate-result-row{
  display:grid;grid-template-columns:minmax(0,1fr) auto;gap:0;
  border-top:1px solid #eef1ef;align-items:stretch;
}
.gate-result-row:first-child{border-top:0}
.gate-result-row.is-onsite{box-shadow:inset 3px 0 0 var(--green)}
.gate-result-row.has-issue{box-shadow:inset 3px 0 0 #c45c4a}
.gate-result-row.is-onsite.has-issue{box-shadow:inset 3px 0 0 #c45c4a}
.gate-result-main{
  display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:.35rem .5rem;
  align-items:center;padding:.55rem .55rem .55rem .6rem;min-width:0;text-decoration:none;color:inherit;
}
.gate-result-main:active{background:#f3f8f5}
.gate-result-l{display:grid;gap:.15rem;justify-items:start}
.gate-result-plate{
  display:inline-block;font-size:.86rem;font-weight:850;padding:.18rem .4rem;
  background:#eef7f2;border:1px solid #c5d9ce;border-radius:7px;letter-spacing:.01em;
}
.gate-result-tags{display:flex;gap:.2rem}
.gate-result-tags .mini{
  font-size:.62rem;font-weight:800;padding:.08rem .28rem;border-radius:5px;
  background:#eef2f0;color:var(--muted);font-style:normal;
}
.gate-result-tags .mini.ok{background:#e8f6ee;color:#0a5c45}
.gate-result-tags .mini.on{background:var(--mint);color:var(--green)}
.gate-result-tags .mini.danger{background:#f9dedb;color:#8a2f28}
.gate-result-m{min-width:0}
.gate-result-m b,.gate-result-m small{
  display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.gate-result-m b{font-size:.8rem;font-weight:700}
.gate-result-m small{font-size:.68rem;color:var(--muted);margin-top:.05rem}
.gate-result-status{
  font-size:.66rem;font-weight:800;font-style:normal;padding:.18rem .35rem;border-radius:6px;
  background:#eef2f0;color:var(--muted);white-space:nowrap;
}
.gate-result-status.open{background:#e8f6ee;color:#0a5c45}
.gate-result-status.done{background:#eef2f0}
.gate-result-ops{
  display:flex;flex-direction:column;justify-content:center;gap:.25rem;
  padding:.4rem .45rem .4rem 0;border-left:1px solid #f0f3f1;
}
.gate-op{
  min-height:30px;padding:.2rem .45rem;border-radius:8px;font-size:.72rem;font-weight:750;
  background:#eef2f0;color:var(--ink);text-align:center;text-decoration:none;white-space:nowrap;
}
.gate-op.primary{background:var(--green);color:#fff}

/* Entry denser step alignment */
.entry-page .gate-top{margin:.1rem 0 .5rem}
.entry-page .capture-copy{margin-bottom:.35rem}
.entry-page .capture-copy h2{margin:.15rem 0 0;font-size:1.15rem}
.entry-page .capture-copy p{margin:.15rem 0 0;font-size:.8rem;color:var(--muted)}
.entry-page .entry-alt-actions{display:grid;grid-template-columns:1fr 1fr;gap:.4rem;margin-top:.65rem}
.entry-page .manual-start,.entry-page .exception-start{
  min-height:44px;margin:0;border-radius:11px;font-size:.84rem;font-weight:750;
}
.entry-page .exception-start{background:#fff!important;color:var(--ink)!important;border:1px solid var(--line)!important}
.entry-page .entry-field-group{margin-top:.75rem}
.entry-page .entry-field-group .ef-label{margin-bottom:.3rem}
.entry-page .plate-confirm-block{margin-top:.65rem}
.entry-page .plate-confirm-field{min-height:56px}
.entry-page .entry-context{margin:.45rem 0;gap:4px}
.entry-page .entry-context-line{padding:.5rem .65rem;font-size:.78rem;border-radius:10px}
.entry-page .entry-type-chips span{min-height:42px;min-width:78px;font-size:.8rem}
.entry-page .destination-picker input{min-height:44px}
.entry-page .destination-pickers-row{margin-top:.1rem}
.entry-page .entry-result-card{height:96px;border-radius:12px}
.entry-page .recognition-status{padding:12px}
.entry-page .recognition-status strong{font-size:.92rem}
.entry-page .recognition-status small{font-size:.72rem;margin-top:4px}

@media(max-width:390px){
  .gate-result-main{grid-template-columns:auto minmax(0,1fr);gap:.25rem .4rem}
  .gate-result-status{grid-column:2;justify-self:end}
  .gate-result-ops{min-width:44px}
  .exit-one-action{grid-template-columns:auto minmax(0,1fr) auto;gap:.3rem}
  .exit-one-fee strong{font-size:1.05rem}
}

/* 中文文件选择 / 中文时间选择 */
.file-native{
  position:absolute!important;opacity:0!important;width:1px!important;height:1px!important;
  overflow:hidden!important;clip:rect(0,0,0,0)!important;
}
.file-zh-field{display:grid;gap:.3rem;position:relative}
.file-zh-field.inline{display:flex;align-items:center;gap:.45rem}
.file-zh-btn,.ef-photo.file-zh-btn{
  display:flex!important;flex-direction:column;align-items:center;justify-content:center;gap:.15rem;
  min-height:48px;padding:.55rem .75rem;border-radius:12px!important;cursor:pointer;
  background:#eef7f2!important;color:var(--green)!important;border:1.5px dashed #a8cbbb!important;
  font-weight:750;
}
.file-zh-btn b{font-size:.92rem}.file-zh-btn small{font-size:.72rem;font-weight:600;color:#5f7269}
.file-zh-btn.has-file,.ef-photo.has-file{border-style:solid!important;background:#e2f3ea!important}
.cn-time-preview{
  margin:.25rem 0 0;padding:.45rem .6rem;border-radius:10px;background:#eef7f2;
  font-size:.9rem;font-weight:750;color:var(--green);
}
.cn-datetime{display:grid;gap:.4rem;margin-top:.35rem}
.cn-datetime-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.35rem}
.cn-datetime-row:last-child{grid-template-columns:repeat(2,minmax(0,1fr))}
.cn-datetime label{display:grid;gap:.15rem;font-size:.75rem;font-weight:700;color:#5a6862}
.cn-datetime select{
  min-height:44px;font-size:16px;border-radius:10px;border:1px solid #becac4;
  padding:.3rem .4rem;background:#fff;
}

/* 车辆详情页 denser */
.vehicle-page .vehicle-top{align-items:flex-start}
.vehicle-plate-title{font-size:1.45rem!important;letter-spacing:.02em;font-weight:850}
.vehicle-sub{margin:.15rem 0 0;font-size:.86rem;color:var(--muted)}
.vehicle-top-actions{display:flex;flex-wrap:wrap;gap:.35rem}
.vehicle-top-actions .button{min-height:38px!important;padding:.4rem .7rem!important;font-size:.84rem!important}
.vehicle-alert{
  margin:0 0 .55rem;padding:.55rem .7rem;border-radius:11px;background:#fff1d6;color:#8c5908;
  font-size:.86rem;font-weight:700;
}
.vehicle-now{
  display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.55rem;align-items:center;
  margin:0 0 .55rem;padding:.65rem .7rem;border-radius:14px;background:#fff;border:1px solid var(--line);
}
.vehicle-now-head{display:flex;align-items:center;gap:.35rem;margin-bottom:.2rem}
.vehicle-now-main p{margin:.1rem 0;font-size:.86rem}
.vehicle-now-meta{color:var(--muted)!important;font-size:.8rem!important}
.vehicle-now-meta b{color:var(--ink)}
.vehicle-now-thumb{display:grid;gap:.2rem;text-decoration:none;color:var(--muted);font-size:.7rem;justify-items:center}
.vehicle-now-thumb img{width:72px;height:52px;object-fit:cover;border-radius:8px;border:1px solid var(--line);display:block}
.vehicle-stat-row{
  display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.35rem;margin:0 0 .55rem;
}
.vehicle-stat-row > div{
  background:#fff;border:1px solid var(--line);border-radius:11px;padding:.45rem .4rem;text-align:center;
}
.vehicle-stat-row span{display:block;font-size:.68rem;color:var(--muted)}
.vehicle-stat-row b{display:block;font-size:1.05rem;margin-top:.1rem;line-height:1.15}
.vehicle-stat-row small{font-size:.66rem;color:var(--muted)}
.vehicle-card{
  background:#fff;border:1px solid var(--line);border-radius:14px;padding:.65rem .7rem;margin:0 0 .55rem;
}
.vehicle-card-head{display:flex;align-items:baseline;justify-content:space-between;gap:.4rem;margin-bottom:.4rem}
.vehicle-card-head h2{margin:0;font-size:1rem}
.vehicle-card-label{display:block;font-size:.72rem;font-weight:800;color:#5a6862;margin-bottom:.25rem}
.vehicle-card-block{margin-bottom:.5rem}
.vehicle-card-block:last-child{margin-bottom:0}
.vehicle-card-block > b{display:block;font-size:.88rem}
.vehicle-card-block > small{display:block;font-size:.76rem;color:var(--muted);margin-top:.1rem}
.vehicle-host-line{
  display:flex;justify-content:space-between;gap:.4rem;padding:.35rem 0;border-top:1px solid #eef1ef;
}
.vehicle-host-line:first-of-type{border-top:0}
.vehicle-host-line b,.vehicle-host-line small{display:block}
.vehicle-host-line small{font-size:.74rem;color:var(--muted);margin-top:.05rem}
.vehicle-photo-scroll{
  display:flex;gap:.45rem;overflow-x:auto;padding-bottom:.15rem;scrollbar-width:none;
  -webkit-overflow-scrolling:touch;
}
.vehicle-photo-scroll::-webkit-scrollbar{display:none}
.vehicle-photo-tile{
  flex:0 0 auto;width:108px;text-decoration:none;color:inherit;
}
.vehicle-photo-tile img{
  display:block;width:108px;height:76px;object-fit:cover;border-radius:10px;border:1px solid var(--line);
}
.vehicle-photo-tile span{display:grid;gap:.05rem;padding:.25rem .1rem 0}
.vehicle-photo-tile b{font-size:.76rem}
.vehicle-photo-tile small{font-size:.66rem;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.vehicle-visit-list,.vehicle-issue-list{display:grid;gap:0}
.vehicle-visit-row,.vehicle-issue-row{
  padding:.55rem 0;border-top:1px solid #eef1ef;
}
.vehicle-visit-row:first-child,.vehicle-issue-row:first-child{border-top:0;padding-top:.15rem}
.vehicle-issue-row.is-open{box-shadow:inset 3px 0 0 #c45c4a;padding-left:.45rem}
.vehicle-visit-top{display:flex;align-items:flex-start;justify-content:space-between;gap:.4rem}
.vehicle-visit-top b{font-size:.88rem}
.vehicle-visit-time{margin:.2rem 0 .1rem;font-size:.8rem;color:var(--ink)}
.vehicle-visit-meta{margin:0;font-size:.78rem;color:var(--muted);line-height:1.4}
.vehicle-privacy{display:flex;flex-wrap:wrap;gap:.3rem;margin-top:.35rem;align-items:center}
.vehicle-privacy select{flex:1;min-width:10rem;min-height:36px;font-size:.8rem}
.vehicle-privacy button{min-height:36px;padding:.3rem .5rem;font-size:.78rem}
.vehicle-privacy output{width:100%;font-size:.78rem;color:var(--green)}
.vehicle-visit-thumbs{display:flex;gap:.35rem;margin-top:.35rem}
.vehicle-visit-thumbs a{display:grid;gap:.1rem;text-decoration:none;color:var(--muted);font-size:.66rem;justify-items:center}
.vehicle-visit-thumbs img{width:56px;height:40px;object-fit:cover;border-radius:7px;border:1px solid var(--line)}
.vehicle-issue-photo img{max-width:100%;max-height:140px;border-radius:10px;margin-top:.35rem}
.vehicle-resolution{margin:.25rem 0 0;font-size:.8rem}
.vehicle-resolve-form{display:grid;grid-template-columns:1fr auto;gap:.35rem;margin-top:.35rem}
.vehicle-resolve-form input{min-height:40px;font-size:16px}
.vehicle-resolve-form button{min-height:40px;white-space:nowrap}
.vehicle-empty{margin:0;padding:.4rem 0;color:var(--muted);font-size:.86rem}
.vehicle-tag-row{display:flex;flex-wrap:wrap;gap:.3rem;margin-top:.25rem}
.vehicle-tag{
  display:inline-block;padding:.2rem .45rem;border-radius:8px;background:#eef7f2;
  color:var(--green);font-size:.76rem;font-weight:750;text-decoration:none;
}
.vehicle-tag.muted{background:#eef2f0;color:var(--muted)}
.admin-page.vehicle-page .shell{max-width:920px}
.vehicle-alert.risk-watch{background:#fff1d6;color:#8c5908}
.vehicle-alert.risk-key{background:#fde8e4;color:#8a2f28}
.vehicle-alert.risk-restricted{background:#3a1512;color:#ffd4ce}
.vehicle-fee-row b.ok{color:var(--green)}
.vehicle-fee-row b.warn,.admin-stats b.warn{color:#b5473a}
.badge.risk-watch{background:#fff1d6;color:#8c5908}
.badge.risk-key{background:#fde8e4;color:#8a2f28}
.badge.risk-restricted{background:#3a1512;color:#ffd4ce}
.exit-risk-line{margin:0;padding:.35rem .5rem;border-radius:9px;font-size:.8rem;font-weight:750}
.exit-risk-line.risk-watch{background:#fff1d6;color:#8c5908}
.exit-risk-line.risk-key,.exit-risk-line.risk-restricted{background:#fde8e4;color:#8a2f28}
.risk-form-title{font-size:.95rem;margin:1rem 0 .45rem;color:var(--ink)}
.risk-form-actions{flex-direction:column;align-items:stretch;gap:.45rem}
.check-inline{display:flex;align-items:center;gap:.4rem;font-size:.86rem;font-weight:650}
.admin-form-grid .span-2{grid-column:1/-1}
.tag-x{border:0;background:transparent;color:inherit;cursor:pointer;font-weight:800;padding:0 .15rem}

/* —— Risk settings page (dense, ladder + rule rows) —— */
.risk-page .admin-head{margin-bottom:.65rem}
.risk-ladder{
  display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.4rem;margin:0 0 .65rem;
}
.risk-ladder-step{
  background:#fff;border:1px solid var(--line);border-radius:12px;padding:.55rem .65rem;
  border-top:3px solid #c5d0cb;
}
.risk-ladder-step em{display:block;font-style:normal;font-size:.72rem;font-weight:800;color:var(--muted);letter-spacing:.04em}
.risk-ladder-step b{display:block;font-size:.82rem;margin:.2rem 0 .1rem;line-height:1.25;font-weight:750}
.risk-ladder-step small{display:block;color:var(--muted);font-size:.7rem}
.risk-ladder-step.is-normal{border-top-color:#9db0a8}
.risk-ladder-step.is-watch{border-top-color:#e9a13b;background:#fffdf8}
.risk-ladder-step.is-watch em{color:#8c5908}
.risk-ladder-step.is-key{border-top-color:#c45a48;background:#fff9f8}
.risk-ladder-step.is-key em{color:#8a2f28}
.risk-ladder-step.is-restricted{border-top-color:#3a1512;background:#2a1210;color:#f6e7e4}
.risk-ladder-step.is-restricted em,.risk-ladder-step.is-restricted small{color:#d4b0aa}
.risk-ladder-step.is-restricted b{color:#fff}
.risk-quick-stats{margin-bottom:.65rem}
.risk-edit-split{align-items:start;margin-bottom:.55rem}
.risk-card .admin-panel-head{margin-bottom:.45rem}
.risk-rule-group{padding:.45rem 0;border-top:1px solid var(--line)}
.risk-rule-group:first-of-type{border-top:0;padding-top:0}
.risk-rule-caption{
  display:flex;align-items:center;justify-content:space-between;gap:.5rem;flex-wrap:wrap;
  font-size:.78rem;font-weight:800;color:#4a5a54;margin:0 0 .35rem;
}
.risk-window-inline{
  display:inline-flex!important;align-items:center;gap:.25rem;flex-direction:row!important;
  font-weight:650;color:var(--muted);font-size:.76rem;margin:0;
}
.risk-window-inline input{
  width:3.2rem;min-height:30px!important;padding:.2rem .35rem!important;text-align:center;
  font-weight:800;font-variant-numeric:tabular-nums;
}
.risk-rule-row{
  display:grid;grid-template-columns:1fr auto;align-items:center;gap:.55rem;
  padding:.32rem 0;min-height:40px;
}
.risk-rule-label b{display:block;font-size:.88rem;font-weight:750}
.risk-rule-label small{color:var(--muted);font-size:.72rem}
.risk-rule-field{
  display:flex;align-items:center;gap:.28rem;
  background:#f6f8f6;border:1px solid var(--line);border-radius:10px;padding:.15rem .4rem .15rem .45rem;
}
.risk-rule-field span{color:var(--muted);font-size:.78rem;font-weight:700;white-space:nowrap}
.risk-rule-field input[type=number]{
  width:3.6rem;min-height:32px!important;padding:.2rem .25rem!important;border:0!important;
  background:transparent!important;text-align:center;font-weight:800;font-variant-numeric:tabular-nums;
  font-size:.95rem;box-shadow:none!important;outline:none;
}
.risk-rule-field input[type=number]:focus{outline:none}
.risk-check{
  display:inline-flex!important;align-items:center;gap:.4rem;flex-direction:row!important;
  margin:0;font-size:.8rem;font-weight:650;color:#3d4d47;cursor:pointer;
}
.risk-check input{
  width:1rem!important;height:1rem!important;min-height:0!important;margin:0;padding:0!important;
  flex:0 0 auto;accent-color:var(--green);
}
.risk-type-chips{display:flex;flex-wrap:wrap;gap:.35rem}
.risk-chip{display:block;margin:0;cursor:pointer}
.risk-chip input{position:absolute;opacity:0;width:1px;height:1px}
.risk-chip span{
  display:block;padding:.32rem .55rem;border-radius:999px;border:1px solid #c8d4ce;
  background:#fff;font-size:.76rem;font-weight:700;color:#4a5a54;line-height:1.2;
}
.risk-chip input:checked+span{
  background:var(--green);border-color:var(--green);color:#fff;
  box-shadow:0 2px 8px rgba(12,107,82,.18);
}
.risk-extra-types{display:grid;gap:.28rem;margin-top:.45rem;font-size:.78rem;font-weight:650;color:var(--muted)}
.risk-extra-types input{min-height:38px;padding:.45rem .6rem;border-radius:9px;font-size:.86rem;font-weight:500;color:var(--ink)}
.risk-save-bar{
  display:flex;align-items:center;justify-content:space-between;gap:.75rem;flex-wrap:wrap;
  background:#fff;border:1px solid var(--line);border-radius:14px;padding:.55rem .75rem;
  margin:0 0 .75rem;box-shadow:var(--shadow);
  position:sticky;bottom:.65rem;z-index:6;
}
.risk-save-bar button{min-height:42px;padding:.55rem 1.25rem;border-radius:11px;font-weight:800}
.risk-lists{margin-top:.15rem}
.risk-list-row{
  display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:.55rem;
  padding:.5rem 0;border-top:1px solid var(--line);text-decoration:none;color:inherit;
}
.risk-list-row:first-of-type{border-top:0}
.risk-list-row:hover{background:#f7faf8;border-radius:8px;margin:0 -.25rem;padding-left:.25rem;padding-right:.25rem}
.risk-list-row.is-static:hover{background:transparent;margin:0;padding-left:0;padding-right:0}
.risk-list-mid{min-width:0}
.risk-list-mid b{display:block;font-size:.86rem}
.risk-list-mid small{display:block;color:var(--muted);font-size:.72rem;margin-top:.08rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.risk-addr{font-weight:800;font-size:.88rem;white-space:nowrap}
@media(max-width:800px){
  .risk-ladder{grid-template-columns:repeat(2,minmax(0,1fr))}
  .risk-save-bar{position:sticky;bottom:calc(8px + env(safe-area-inset-bottom));flex-direction:column;align-items:stretch}
  .risk-save-bar button{width:100%}
  .risk-list-row{grid-template-columns:auto 1fr;gap:.4rem}
  .risk-list-row .badge{grid-column:2;justify-self:start}
}
@media(max-width:480px){
  .risk-ladder{grid-template-columns:1fr 1fr}
  .risk-rule-field input[type=number]{width:3.2rem}
}

/* —— Billing / fee rule (dense ladder) —— */
.billing-page .admin-head{margin-bottom:.55rem}
.fee-rule-panel{padding:.65rem .75rem .7rem}
.fee-ladder{
  display:grid;grid-template-columns:repeat(auto-fill,minmax(92px,1fr));gap:.35rem;margin:.15rem 0 .45rem;
}
.fee-ladder-step{
  background:#f6f9f7;border:1px solid var(--line);border-radius:10px;padding:.4rem .45rem;
  border-top:3px solid var(--green);
}
.fee-ladder-step em{display:block;font-style:normal;font-size:.68rem;color:var(--muted);font-weight:700}
.fee-ladder-step b{display:block;font-size:.78rem;margin:.12rem 0;line-height:1.2}
.fee-ladder-step small{display:block;font-size:.92rem;font-weight:800;color:var(--green)}
.fee-ladder-step.is-free{border-top-color:#9db0a8;background:#f3f5f3}
.fee-ladder-step.is-free small{color:var(--muted)}
.fee-ladder-step.is-step{border-top-color:#e9a13b;background:#fffaf0}
.fee-ladder-step.is-step small{color:#8c5908}
.fee-preview-row{
  display:flex;flex-wrap:wrap;align-items:center;gap:.3rem;margin:0 0 .4rem;
}
.fee-preview-chip{
  display:inline-flex;align-items:center;gap:.25rem;padding:.18rem .45rem;border-radius:999px;
  background:#eef7f2;font-size:.74rem;color:#2d4a40;
}
.fee-preview-chip b{font-weight:800}
.fee-special-line{margin:.15rem 0 .1rem}
.fee-edit-box{margin-top:.45rem}
.fee-edit-form{display:grid;gap:.55rem}
.fee-edit-top{
  display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:.45rem .55rem;
}
.fee-edit-top label{display:grid;gap:.22rem;font-size:.78rem;font-weight:650;color:#45534e}
.fee-edit-top input,.fee-edit-top select{min-height:38px;padding:.4rem .55rem;border-radius:9px;font-size:.9rem}
.fee-section-label{font-size:.82rem;font-weight:800;color:#3d4d47;margin-bottom:.3rem}
.fee-section-label small{font-weight:550;color:var(--muted);margin-left:.25rem}
.fee-tier-table{display:grid;gap:.3rem}
.fee-tier-head,.fee-tier-row{
  display:grid;grid-template-columns:1fr 1fr 36px;gap:.35rem;align-items:center;
}
.fee-tier-head{font-size:.72rem;color:var(--muted);font-weight:700;padding:0 .15rem}
.fee-tier-row input{min-height:36px;padding:.35rem .5rem;border-radius:8px;text-align:center;font-weight:700}
.fee-tier-del{min-height:36px!important;padding:0!important;min-width:36px;color:var(--red)!important;border:1px solid var(--line)!important}
.fee-tier-tools{display:flex;flex-wrap:wrap;align-items:center;gap:.55rem;margin-top:.4rem}
.fee-inline-num{
  display:inline-flex!important;align-items:center;gap:.25rem;flex-direction:row!important;
  font-size:.8rem;font-weight:650;color:#45534e;margin:0;
}
.fee-inline-num input{width:3.4rem;min-height:34px;padding:.25rem .3rem;text-align:center;font-weight:800}
.fee-note-field{display:grid;gap:.22rem;font-size:.78rem;font-weight:650;color:#45534e}
.fee-note-field input{min-height:38px;padding:.4rem .55rem;border-radius:9px}
.fee-save-actions{margin-top:.15rem}
.fee-save-actions button{min-height:42px;width:auto;min-width:120px}
.fee-import-panel{padding:.55rem .7rem}
.fee-import-bar{margin:0}
.fee-filter-bar{margin:.45rem 0}
.fee-legacy-stats{margin:.2rem 0 .35rem}
@media(max-width:640px){
  .fee-ladder{grid-template-columns:repeat(3,minmax(0,1fr))}
  .fee-save-actions button{width:100%}
  .fee-tier-tools{flex-direction:column;align-items:stretch}
}

/* —— Event create full page (no sheet) —— */
.event-new-page .event-page-form{
  display:grid;gap:.75rem;padding:.15rem 0 1rem;
}
.event-new-page .event-page-actions{
  position:sticky;bottom:calc(58px + env(safe-area-inset-bottom));
  padding:.45rem 0 calc(.25rem + env(safe-area-inset-bottom));
  background:linear-gradient(180deg,rgba(251,250,247,0),#fbfaf7 28%);
  z-index:8;
}
.event-new-page .event-page-actions button{
  min-height:50px!important;border-radius:12px!important;font-size:1.05rem!important;width:100%;
}
.event-new-page .ef-input,.event-new-page .ef-area{font-size:16px}

/* —— Mobile gate ops: bump text size one step —— */
@media(max-width:800px){
  .role-guard,.entry-page{
    font-size:16px;
    line-height:1.5;
  }
  .role-guard .shell,.entry-page .entry-shell{
    font-size:16px;
  }
  .role-guard h1,.entry-page h1,.event-top h1,.gate-top h1{
    font-size:1.45rem!important;
  }
  .role-guard .eyebrow,.gate-top-main .eyebrow,.event-top-main .eyebrow{
    font-size:.82rem!important;
  }
  .role-guard .dense-plate,.role-guard .event-plate,.role-guard .gate-result-plate,.exit-plate{
    font-size:.95rem!important;
  }
  .role-guard .dense-mid b,.role-guard .event-row-m b,.role-guard .gate-result-m b,.exit-one-line{
    font-size:.9rem!important;
  }
  .role-guard .dense-mid small,.role-guard .event-row-m small,.role-guard .gate-result-m small{
    font-size:.8rem!important;
  }
  .role-guard .guard-stat-line,.role-guard .gate-label,.role-guard .ef-label,.entry-page .ef-label,.entry-page .entry-field-label{
    font-size:.86rem!important;
  }
  .role-guard .ef-chip>span,.role-guard .event-kind-chips span,.role-guard .gate-plate-chip,
  .entry-page .entry-type-chips span{
    font-size:.88rem!important;min-height:42px;
  }
  .role-guard input,.role-guard select,.role-guard textarea,
  .entry-page input,.entry-page select,.entry-page textarea{
    font-size:17px!important;
  }
  .role-guard .button,.role-guard button,.entry-page button,.entry-page .button,
  .role-guard .exit-confirm-btn,.event-page-actions button{
    font-size:1.02rem!important;
  }
  .role-guard .guard-bottom span{font-size:.78rem!important}
  .role-guard .guard-bottom b{font-size:1.3rem!important}
  .role-guard .badge,.role-guard .event-status,.role-guard .gate-result-status{
    font-size:.72rem!important;
  }
  .exit-one-fee strong{font-size:1.25rem!important}
  .exit-one-fee span,.exit-one-actual span{font-size:.76rem!important}
  .event-page .event-tabs a{font-size:.9rem!important;padding:.5rem .35rem!important}
  .event-page .event-fab,.event-page .event-op{font-size:.88rem!important}
}
