:root{--navy:#071d32;--blue:#073f68;--mid:#0877a5;--cyan:#13b5c8;--cyan-light:#65d7df;--bg:#f4f7f8;--surface:#fff;--ink:#132433;--muted:#687a86;--line:#dce5e9;--shadow:0 12px 35px rgba(7,29,50,.08);--radius:18px}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--ink);font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;line-height:1.5}button,input,select{font:inherit}button,a{transition:.2s ease}button{cursor:pointer}.icon{display:inline-flex;width:19px;height:19px}.icon svg{width:100%;height:100%;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.product-logo{display:flex;flex-direction:column;align-items:center;gap:4px;text-decoration:none}.product-logo span{color:var(--mid);font-size:.65rem;font-weight:800;letter-spacing:.18em}.product-logo strong{color:var(--navy);font-size:1.45rem;letter-spacing:-.05em}.eyebrow{margin:0 0 12px;color:var(--mid);font-size:.7rem;font-weight:800;letter-spacing:.16em}.muted{color:var(--muted)}
.login-shell{min-height:100vh;display:grid;grid-template-columns:1.05fr .95fr}.login-brand{position:relative;overflow:hidden;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:56px;padding:55px 7vw;color:#fff;text-align:center;background:radial-gradient(circle at 82% 12%,rgba(19,181,200,.28),transparent 34%),linear-gradient(160deg,var(--navy) 0%,var(--blue) 82%)}.login-brand:before{content:"";position:absolute;inset:0;pointer-events:none;background-image:linear-gradient(rgba(255,255,255,.055) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.055) 1px,transparent 1px);background-size:40px 40px;-webkit-mask-image:radial-gradient(circle at 50% 38%,#000 0%,transparent 74%);mask-image:radial-gradient(circle at 50% 38%,#000 0%,transparent 74%)}.frame-inset{position:absolute;inset:22px;border:1px solid rgba(255,255,255,.14);pointer-events:none}.frame-inset i{position:absolute;width:13px;height:13px}.frame-inset i:before,.frame-inset i:after{content:"";position:absolute;background:rgba(255,255,255,.55)}.frame-inset i:before{width:100%;height:1px;top:50%}.frame-inset i:after{height:100%;width:1px;left:50%}.frame-inset i.tl{top:-6.5px;left:-6.5px}.frame-inset i.tr{top:-6.5px;right:-6.5px}.frame-inset i.bl{bottom:-6.5px;left:-6.5px}.frame-inset i.br{bottom:-6.5px;right:-6.5px}.brand-top{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;gap:14px}.brand-bottom{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;gap:18px}.eyebrow-tag{font-family:'JetBrains Mono',ui-monospace,monospace;font-size:.66rem;font-weight:600;letter-spacing:.22em;text-transform:uppercase;color:var(--cyan-light);display:flex;align-items:center;gap:8px}.eyebrow-tag .tick{width:22px;height:1px;background:rgba(255,255,255,.4)}.login-brand .product-logo span{color:var(--cyan-light)}.login-brand .product-logo strong{color:#fff}.login-brand .product-logo-dark{position:relative}.login-brand .product-logo-dark:before{content:"";position:absolute;left:14px;right:14px;top:0;height:2px;background:linear-gradient(90deg,var(--cyan),var(--cyan-light))}.login-brand h1{margin:0;font-family:'Space Grotesk',Inter,sans-serif;font-weight:700;font-size:clamp(4rem,7vw,7.5rem);line-height:.86;letter-spacing:-.03em}.login-brand h1 em{font-style:normal;color:var(--cyan-light)}.login-brand>div>p:last-child{max-width:570px;margin-left:auto;margin-right:auto;color:rgba(255,255,255,.67);font-size:1.2rem}.login-brand small{color:rgba(255,255,255,.55)}.login-panel{display:grid;place-items:center;padding:40px}.login-card{width:min(440px,100%);display:grid;gap:25px}.login-card h2{margin:0;font-size:2.3rem;letter-spacing:-.04em}.login-card p{margin:7px 0 0}.login-card>label{display:grid;gap:8px;font-size:.88rem;font-weight:650}.login-card input{width:100%;padding:14px 15px;border:1px solid var(--line);border-radius:11px;background:#fff;outline:none}.login-card input:focus{border-color:var(--cyan);box-shadow:0 0 0 4px rgba(19,181,200,.12)}.login-options{display:flex;justify-content:space-between;align-items:center;font-size:.82rem}.check{display:flex;gap:8px;align-items:center}.check input[type="checkbox"]{width:16px;height:16px;margin:0;accent-color:var(--navy)}.text-button{display:inline-flex;align-items:center;gap:6px;padding:0;border:0;background:none;color:var(--mid);font-weight:700}.text-button:hover{color:var(--cyan)}.primary-button,.secondary-button{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:14px 20px;border-radius:11px;font-weight:750}.primary-button{border:0;background:var(--navy);color:#fff;box-shadow:0 8px 22px rgba(7,29,50,.18)}.primary-button:hover{transform:translateY(-2px);background:var(--blue)}.secondary-button{border:1px solid var(--line);background:#fff;color:var(--navy)}.secure-note{text-align:center;color:var(--muted);font-size:.76rem}.mobile-logo{display:none}
.app-shell{min-height:100vh}.sidebar{position:fixed;inset:0 auto 0 0;width:248px;padding:30px 22px;display:flex;flex-direction:column;background:#fff;border-right:1px solid var(--line);z-index:20}.sidebar .product-logo{padding:0 10px 30px}.sidebar nav{display:grid;gap:5px}.sidebar nav button{display:flex;align-items:center;gap:13px;width:100%;padding:12px;border:0;border-radius:10px;background:none;color:var(--muted);text-align:left}.sidebar nav button:hover{background:var(--bg);color:var(--navy)}.sidebar nav button.active{background:#e9f5f7;color:var(--blue);font-weight:750}.sidebar-foot{margin-top:auto;display:grid;gap:12px;padding:15px 10px}.demo-chip{width:max-content;padding:5px 8px;border-radius:6px;background:#fff4d8;color:#936d15;font-size:.63rem;font-weight:800;letter-spacing:.12em}.sidebar-foot button{width:max-content;padding:0;border:0;background:none;color:var(--muted)}.sidebar-user{display:grid;gap:2px;padding-bottom:4px}.sidebar-user strong{color:var(--ink);font-size:.82rem;line-height:1.2}.sidebar-user span{color:var(--muted);font-size:.68rem}.workspace{margin-left:248px}.topbar{position:sticky;top:0;z-index:15;height:78px;padding:0 4vw;display:flex;align-items:center;justify-content:space-between;background:rgba(244,247,248,.88);backdrop-filter:blur(14px);border-bottom:1px solid rgba(220,229,233,.8)}.topbar-context{display:grid;font-size:.76rem;color:var(--muted)}.topbar-context strong{color:var(--ink);font-size:.9rem}.user-menu{display:flex;align-items:center;gap:10px}.user-menu>div:last-child{display:grid;font-size:.82rem}.user-menu span{color:var(--muted);font-size:.7rem}.my-profile-trigger{display:flex;align-items:center;gap:10px;border:0;background:none;padding:4px 6px;margin:-4px -6px;border-radius:10px;cursor:pointer;font:inherit;text-align:left}.my-profile-trigger:hover{background:var(--bg)}.my-profile-trigger>div:last-child{display:grid;font-size:.82rem}.avatar{display:grid;place-items:center;width:38px;height:38px;border-radius:50%;background:var(--navy);color:#fff;font-size:.75rem;font-weight:800}.mobile-menu{display:none;border:0;background:none;font-size:1.4rem}.content{max-width:1540px;margin:auto;padding:48px 4vw 90px}.page-header{display:flex;align-items:flex-end;justify-content:space-between;gap:30px;margin-bottom:38px}.page-header h1{margin:0;font-size:clamp(2.25rem,4vw,4.2rem);line-height:1;letter-spacing:-.055em}.page-header>div>p:last-child{margin:13px 0 0;color:var(--muted);font-size:1.02rem}.select,.filter-bar select{padding:11px 36px 11px 12px;border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--ink)}
.metric-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:15px}.metric-grid article{padding:22px;border:1px solid var(--line);border-radius:var(--radius);background:#fff;box-shadow:0 5px 20px rgba(7,29,50,.035)}.metric-grid span{display:block;color:var(--muted);font-size:.82rem}.metric-grid strong{display:block;margin:8px 0 3px;font-size:2rem;letter-spacing:-.05em}.metric-grid small{color:var(--mid)}.section-block{margin-top:54px}.section-title{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:20px}.section-title h2{margin:0;font-size:1.55rem;letter-spacing:-.035em}.section-title p{margin:5px 0 0;color:var(--muted);font-size:.86rem}.project-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:20px}.project-card{overflow:hidden;border:1px solid var(--line);border-radius:var(--radius);background:#fff;box-shadow:var(--shadow);transition:.25s}.project-card:hover{transform:translateY(-4px);box-shadow:0 18px 42px rgba(7,29,50,.12)}.project-image{position:relative;aspect-ratio:16/7;overflow:hidden}.project-image img,.project-hero img,.media-image img{width:100%;height:100%;display:block;object-fit:cover}.status{padding:6px 9px;border-radius:99px;background:#e1f6ee;color:#1d775b;font-size:.68rem;font-weight:800}.project-image .status{position:absolute;top:16px;right:16px}.demo-overlay{position:absolute;left:12px;bottom:12px;padding:5px 8px;border-radius:6px;background:rgba(7,29,50,.78);color:#fff;font-size:.62rem;font-weight:750;letter-spacing:.03em;backdrop-filter:blur(6px)}.project-body{display:grid;gap:18px;padding:24px}.project-code{margin:0;color:var(--mid);font-size:.67rem;font-weight:800;letter-spacing:.12em}.project-body h3{margin:3px 0;font-size:1.35rem}.location{margin:0;color:var(--muted);font-size:.83rem}.progress-row{display:flex;justify-content:space-between;color:var(--muted);font-size:.78rem}.progress-row strong{color:var(--ink)}.progress,.phase-progress{height:6px;overflow:hidden;border-radius:99px;background:#e9eef0}.progress i,.phase-progress i{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--mid),var(--cyan))}.project-meta{display:flex;justify-content:space-between;align-items:center;padding-top:16px;border-top:1px solid var(--line);color:var(--muted);font-size:.72rem}.project-meta button{display:inline-flex;align-items:center;gap:5px;border:0;background:none;color:var(--blue);font-weight:750}.dashboard-lower{display:grid;grid-template-columns:1.4fr .6fr;gap:20px;margin-top:54px}.activity-card,.phase-card{padding:25px;border:1px solid var(--line);border-radius:var(--radius);background:#fff}.activity-row{display:grid;grid-template-columns:auto 1fr auto;gap:14px;align-items:center;padding:16px 0;border-top:1px solid var(--line)}.activity-icon{display:grid;place-items:center;width:38px;height:38px;border-radius:10px;background:#e9f5f7;color:var(--mid)}.activity-row strong{font-size:.88rem}.activity-row p{margin:2px 0;color:var(--muted);font-size:.78rem}.activity-row time{color:var(--muted);font-size:.68rem;text-align:right}.phase-card{color:#fff;background:linear-gradient(145deg,var(--navy),var(--blue));border:0}.phase-card .eyebrow{color:var(--cyan-light)}.phase-card h3{margin:52px 0 8px;font-size:1.8rem;line-height:1.05}.phase-card p,.phase-card small{color:rgba(255,255,255,.65)}.phase-card .phase-progress{margin:38px 0 10px;background:rgba(255,255,255,.15)}
.project-hero{position:relative;height:min(50vw,520px);min-height:340px;overflow:hidden;border-radius:22px;box-shadow:var(--shadow)}.project-hero-info{position:absolute;inset:auto 25px 25px auto;display:flex;align-items:center;gap:28px;padding:16px 18px;border-radius:14px;background:rgba(255,255,255,.92);backdrop-filter:blur(10px)}.project-hero-info div{display:flex;align-items:baseline;gap:8px}.project-hero-info p{margin:0;color:var(--muted);font-size:.72rem}.project-hero-info strong{font-size:1.5rem}.project-facts{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;margin-top:20px;overflow:hidden;border:1px solid var(--line);border-radius:14px;background:var(--line)}.project-facts article{display:grid;gap:4px;padding:20px;background:#fff}.project-facts span{color:var(--muted);font-size:.72rem}.project-facts strong{font-size:.9rem}.media-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.media-card{overflow:hidden;border:1px solid var(--line);border-radius:16px;background:#fff;cursor:pointer;box-shadow:0 6px 22px rgba(7,29,50,.045);transition:.25s}.media-card:hover{transform:translateY(-3px);box-shadow:var(--shadow)}.media-image{position:relative;aspect-ratio:16/10;overflow:hidden}.media-card>div:last-child{padding:17px}.media-card span{color:var(--mid);font-size:.68rem;font-weight:750}.media-card h3{margin:5px 0 3px;font-size:1rem}.media-card p{margin:0;color:var(--muted);font-size:.78rem}.video-card .media-image:after{content:"";position:absolute;inset:0;background:linear-gradient(transparent,rgba(7,29,50,.35))}.play-button{position:absolute;z-index:2;left:50%;top:50%;display:grid;place-items:center;width:48px;height:48px;transform:translate(-50%,-50%);border:0;border-radius:50%;background:#fff;color:var(--navy);box-shadow:0 8px 24px rgba(0,0,0,.18)}.video-card time{position:absolute;z-index:2;right:12px;bottom:12px;padding:4px 7px;border-radius:5px;background:rgba(7,29,50,.78);color:#fff;font-size:.66rem}.filter-bar{display:flex;gap:12px;margin-bottom:30px;padding:16px;border:1px solid var(--line);border-radius:14px;background:#fff}.filter-bar label{display:grid;gap:5px;color:var(--muted);font-size:.68rem}.report-list{overflow:hidden;border:1px solid var(--line);border-radius:16px;background:#fff}.report-row{display:grid;grid-template-columns:auto 1fr auto;gap:16px;align-items:center;padding:20px;border-bottom:1px solid var(--line)}.report-row:last-child{border:0}.pdf-icon{display:grid;place-items:center;width:44px;height:50px;border-radius:8px;background:#e9f5f7;color:var(--blue);font-size:.68rem;font-weight:900}.report-row>div>span{color:var(--mid);font-size:.68rem;font-weight:750}.report-row h3{margin:3px 0;font-size:.95rem}.report-row p{margin:0;color:var(--muted);font-size:.75rem}.report-actions{display:flex;gap:8px}.report-actions a{display:inline-flex;align-items:center;gap:5px;padding:9px 12px;border:1px solid var(--line);border-radius:9px;color:var(--blue);text-decoration:none;font-size:.76rem;font-weight:750}.report-actions a:hover{border-color:var(--cyan);background:#f2fafb}.timeline{position:relative;max-width:950px;padding:5px 0}.timeline:before{content:"";position:absolute;left:153px;top:20px;bottom:20px;width:1px;background:var(--line)}.timeline article{display:grid;grid-template-columns:125px 30px 1fr;gap:14px;padding:13px 0}.timeline-date{display:grid;text-align:right}.timeline-date strong{font-size:.78rem}.timeline-date span{color:var(--muted);font-size:.68rem}.timeline-dot{position:relative;z-index:1;width:11px;height:11px;margin:5px auto;border:3px solid #fff;border-radius:50%;background:var(--cyan);box-shadow:0 0 0 1px var(--cyan)}.timeline-content{padding:18px;border:1px solid var(--line);border-radius:13px;background:#fff}.timeline-content>span{color:var(--mid);font-size:.65rem;font-weight:800}.timeline-content h3{margin:3px 0;font-size:.95rem}.timeline-content p{margin:0;color:var(--muted);font-size:.78rem}.toast{position:fixed;z-index:100;left:50%;bottom:25px;max-width:90%;padding:12px 18px;transform:translate(-50%,30px);border-radius:10px;background:var(--navy);color:#fff;font-size:.8rem;opacity:0;pointer-events:none;transition:.25s}.toast.show{transform:translate(-50%,0);opacity:1}.lightbox{position:fixed;z-index:90;inset:0;display:grid;place-items:center;padding:6vw;background:rgba(2,14,24,.92)}.lightbox img{max-width:100%;max-height:78vh;border-radius:14px;box-shadow:0 20px 70px rgba(0,0,0,.4)}.lightbox button{position:absolute;top:25px;right:30px;border:0;background:none;color:#fff;font-size:2rem}.lightbox span{position:absolute;bottom:25px;color:rgba(255,255,255,.7);font-size:.76rem}
@media(max-width:1100px){.metric-grid{grid-template-columns:repeat(2,1fr)}.project-grid{grid-template-columns:1fr}.media-grid{grid-template-columns:repeat(2,1fr)}.dashboard-lower{grid-template-columns:1fr}.login-brand{padding:45px}.login-brand h1{font-size:5rem}}
@media(max-width:780px){.login-shell{grid-template-columns:1fr}.login-brand{display:none}.login-panel{min-height:100vh;padding:28px}.mobile-logo{display:flex;align-items:baseline;gap:9px;margin-bottom:15px}.mobile-logo span{color:var(--mid);font-size:.62rem;font-weight:800;letter-spacing:.16em}.mobile-logo strong{font-size:1.35rem}.sidebar{transform:translateX(-100%);transition:.25s}.sidebar.open{transform:translateX(0);box-shadow:20px 0 50px rgba(7,29,50,.18)}.workspace{margin-left:0}.mobile-menu{display:block}.topbar-context{display:none}.content{padding:35px 20px 70px}.page-header{align-items:flex-start;flex-direction:column}.metric-grid{grid-template-columns:repeat(2,1fr)}.project-image{aspect-ratio:16/9}.project-meta{align-items:flex-start;gap:12px;flex-direction:column}.media-grid{grid-template-columns:1fr 1fr}.project-facts{grid-template-columns:1fr}.filter-bar{align-items:stretch;flex-direction:column}.filter-bar select{width:100%}.report-row{grid-template-columns:auto 1fr}.report-actions{grid-column:1/-1}.timeline:before{left:10px}.timeline article{grid-template-columns:20px 1fr}.timeline-date{grid-column:2;text-align:left}.timeline-dot{grid-column:1;grid-row:1/3}.timeline-content{grid-column:2}.project-hero-info{left:15px;right:15px;bottom:15px;justify-content:space-between}.project-hero{height:420px}}
@media(max-width:520px){.metric-grid{grid-template-columns:1fr 1fr;gap:10px}.metric-grid article{padding:17px}.metric-grid strong{font-size:1.6rem}.media-grid{grid-template-columns:1fr}.section-title{align-items:flex-start;flex-direction:column}.project-body{padding:20px}.login-options{align-items:flex-start;gap:12px;flex-direction:column}.project-hero{height:330px;min-height:0}.project-hero-info{align-items:flex-start;flex-direction:column;gap:8px}.report-actions{display:grid;grid-template-columns:1fr 1fr}.report-actions a{justify-content:center}.user-menu>div:last-child,.my-profile-trigger>div:last-child{display:none}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}

/* WhatsApp-first product flow */
.whatsapp-flow{display:grid;grid-template-columns:auto 1fr auto auto;gap:16px;align-items:center;margin-bottom:16px;padding:18px 20px;border:1px solid #cfe6dd;border-radius:var(--radius);background:linear-gradient(110deg,#f1fbf6,#fff);box-shadow:0 5px 20px rgba(7,29,50,.035)}
.wa-mark{display:grid;place-items:center;width:44px;height:44px;border-radius:13px;background:#1f9d68;color:#fff;font-size:.72rem;font-weight:900}
.whatsapp-flow p{margin:3px 0 0;color:var(--muted);font-size:.78rem}
.whatsapp-flow>div:nth-child(2)>strong{font-size:.86rem}
.live-dot{display:inline-block;width:7px;height:7px;margin-right:7px;border-radius:50%;background:#25a66e;box-shadow:0 0 0 4px rgba(37,166,110,.12)}
.sync-stats{display:flex;gap:22px}.sync-stats span{display:grid;color:var(--muted);font-size:.66rem}.sync-stats strong{color:var(--ink);font-size:.78rem}
.whatsapp-button{padding:11px 15px;border:0;border-radius:10px;background:#178c5b;color:#fff;font-size:.76rem;font-weight:800}.whatsapp-button:hover{transform:translateY(-2px);background:#107149}
.metric-grid strong.date-kpi{font-size:1.45rem}
.dashboard-lower{display:block}
.source-label{display:block;margin-bottom:2px;color:var(--mid);font-size:.62rem;font-weight:800}
.activity-row strong{display:block}
@media(max-width:1100px){.whatsapp-flow{grid-template-columns:auto 1fr auto}.sync-stats{display:none}}
@media(max-width:780px){.whatsapp-flow{grid-template-columns:auto 1fr}.whatsapp-button{grid-column:1/-1;width:100%}}
@media(max-width:520px){.whatsapp-flow{padding:16px}.whatsapp-flow p{font-size:.72rem}}

.product-logo img{display:block;width:150px;height:44px;object-fit:contain}.product-logo-dark{width:max-content;padding:8px 11px;border-radius:9px;background:rgba(255,255,255,.94)}.product-logo-dark strong{color:var(--navy)!important}.mobile-logo img{display:block;width:118px;height:35px;object-fit:contain}

/* Subscriber-area revision */
.login-brand .product-logo{gap:6px;transform:scale(1.1);transform-origin:center}.login-brand .product-logo span{font-size:.7rem}.login-brand .product-logo strong{font-size:1.6rem}
.login-brand h1{font-size:clamp(3.5rem,6vw,6.3rem);line-height:.9}
.topbar-context select{max-width:270px;padding:3px 24px 3px 0;border:0;background:transparent;color:var(--ink);font-weight:750;outline:none}
.project-card[role="button"]{cursor:pointer;outline:none}.project-card[role="button"]:focus-visible{box-shadow:0 0 0 4px rgba(19,181,200,.2),var(--shadow);border-color:var(--cyan)}
.open-project-label{display:inline-flex;align-items:center;gap:5px;color:var(--blue);font-weight:750}
.whatsapp-data-note{display:flex;align-items:center;gap:9px;margin:-18px 0 18px;color:var(--muted);font-size:.72rem}.whatsapp-data-note strong{color:#178c5b}.whatsapp-data-note>span:last-child{margin-left:auto}
.project-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;margin-bottom:18px;overflow:hidden;border:1px solid var(--line);border-radius:14px;background:var(--line)}.project-summary article{display:grid;gap:4px;padding:16px 18px;background:#fff}.project-summary span{color:var(--muted);font-size:.68rem}.project-summary strong{font-size:.84rem}
.filter-bar{position:relative;padding-top:31px}.filter-status{position:absolute;top:8px;left:16px;right:16px;display:flex;align-items:center;justify-content:space-between;color:var(--muted);font-size:.65rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.filter-status button{padding:0;border:0;background:none;color:var(--mid);font-size:.68rem;font-weight:800}.filter-bar.has-active-filter{border-color:rgba(19,181,200,.65);box-shadow:0 0 0 3px rgba(19,181,200,.08)}.filter-bar.has-active-filter .filter-status span{color:var(--mid)}
.reports-more{display:block;margin:16px auto 0;padding:11px 17px;border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--blue);font-size:.78rem;font-weight:800}.reports-more:hover{border-color:var(--cyan);transform:translateY(-2px)}
.empty-state{padding:22px;color:var(--muted);font-size:.82rem}
@media(max-width:780px){.topbar-context{display:grid}.topbar-context>span{display:none}.topbar-context select{max-width:190px}.project-summary{grid-template-columns:1fr 1fr}.whatsapp-data-note{align-items:flex-start;flex-wrap:wrap}.whatsapp-data-note>span:last-child{width:100%;margin-left:16px}}
@media(max-width:520px){.project-summary{grid-template-columns:1fr}.eyebrow-tag{font-size:.6rem}}
.role-chip{padding:5px 8px;border:1px solid var(--line);border-radius:7px;background:#fff;color:var(--blue)!important;font-size:.64rem!important;font-weight:800;white-space:nowrap}
@media(max-width:780px){.role-chip{display:none}}

/* Three-level access prototype */
.login-card select{width:100%;padding:14px 15px;border:1px solid var(--line);border-radius:11px;background:#fff;color:var(--ink);outline:none}.login-card select:focus{border-color:var(--cyan);box-shadow:0 0 0 4px rgba(19,181,200,.12)}
.admin-metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:15px}.admin-metrics article{padding:22px;border:1px solid var(--line);border-radius:var(--radius);background:#fff}.admin-metrics span,.admin-metrics small{display:block;color:var(--muted);font-size:.75rem}.admin-metrics strong{display:block;margin:6px 0;font-size:2rem}.admin-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:20px;margin-top:28px}.admin-card{padding:24px;border:1px solid var(--line);border-radius:var(--radius);background:#fff;box-shadow:0 6px 22px rgba(7,29,50,.04)}.admin-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:20px}.admin-card h2{margin:0;font-size:1.4rem}.admin-card-head>button,.admin-actions button{border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--blue);font-weight:750}.admin-card-head>button{padding:9px 12px}.admin-list{display:grid}.admin-list>div{position:relative;display:grid;gap:3px;padding:17px 90px 17px 0;border-top:1px solid var(--line)}.admin-list small{color:var(--muted)}.admin-list .status{position:absolute;top:18px;right:0}.admin-list .waiting{background:#fff4d8;color:#936d15}.order-code{color:var(--mid);font-size:.68rem;font-weight:800}.admin-actions{display:grid;gap:10px}.admin-actions button{display:grid;gap:2px;padding:16px;text-align:left}.admin-actions button:hover{border-color:var(--cyan);transform:translateY(-2px)}.admin-actions span{color:var(--muted);font-size:.75rem;font-weight:400}.admin-note{display:flex;align-items:center;gap:15px;margin-top:20px;padding:20px;border:1px solid #cfe6dd;border-radius:var(--radius);background:#f1fbf6}.admin-note p{margin:3px 0 0;color:var(--muted);font-size:.8rem}.admin-modal{position:fixed;z-index:120;inset:0;display:grid;place-items:center;padding:20px;background:rgba(2,14,24,.72);backdrop-filter:blur(8px)}.admin-dialog{position:relative;width:min(500px,100%);display:grid;gap:17px;padding:30px;border-radius:18px;background:#fff;box-shadow:0 30px 80px rgba(0,0,0,.25)}.admin-dialog h2,.admin-dialog p{margin:0}.admin-dialog>p:not(.eyebrow){color:var(--muted);font-size:.8rem}.admin-dialog label{display:grid;gap:6px;font-size:.78rem;font-weight:700}.admin-dialog input{padding:12px;border:1px solid var(--line);border-radius:9px;outline:none}.admin-close{position:absolute;top:16px;right:18px;border:0;background:none;font-size:1.5rem}
.admin-structure-list{display:grid}.admin-structure-list>div{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:17px 0;border-top:1px solid var(--line)}.admin-structure-list span{color:var(--muted);font-size:.8rem}.admin-create-options{display:grid;grid-template-columns:1fr 1fr;gap:12px}.admin-create-options button{display:grid;gap:5px;padding:20px;border:1px solid var(--line);border-radius:12px;background:#fff;color:var(--blue);text-align:left;cursor:pointer;transition:.2s ease}.admin-create-options button:hover,.admin-create-options button:focus-visible{border-color:var(--cyan);box-shadow:0 8px 20px rgba(6,76,115,.1);transform:translateY(-2px);outline:none}.admin-create-options span{color:var(--muted);font-size:.75rem;font-weight:400}
.admin-profile-card{margin-top:20px}.admin-profile-list{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.admin-profile-list>div{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:12px;padding:15px;border:1px solid var(--line);border-radius:12px}.admin-profile-list div div{display:grid;gap:2px}.admin-profile-list small{color:var(--muted);font-size:.7rem}.admin-profile-list b{padding:6px 9px;border-radius:999px;background:var(--soft);color:var(--blue);font-size:.68rem}.profile-avatar{display:grid;width:36px;height:36px;place-items:center;border-radius:50%;background:var(--blue);color:#fff;font-size:.7rem;font-weight:800}.admin-dialog select{width:100%;padding:12px;border:1px solid var(--line);border-radius:9px;background:#fff;color:var(--ink);outline:none}
.record-count{display:inline-grid;min-width:28px;height:24px;margin-left:6px;padding:0 8px;place-items:center;border-radius:999px;background:var(--soft);color:var(--blue);font-size:.72rem;vertical-align:middle}.registry-search{display:flex;align-items:center;gap:9px;margin-bottom:14px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:#f9fbfc;color:var(--muted)}.registry-search svg{width:17px;height:17px}.registry-search input{width:100%;border:0;outline:0;background:transparent;color:var(--ink);font:inherit}.registry-table{max-height:260px;overflow:auto;border:1px solid var(--line);border-radius:10px}.registry-row{display:grid;grid-template-columns:minmax(150px,1fr) 80px 80px;align-items:center;gap:14px;min-width:410px;padding:13px 14px;border-top:1px solid var(--line);font-size:.77rem}.registry-row:first-child{border-top:0}.registry-row span{color:var(--muted)}.registry-table-head{position:sticky;z-index:1;top:0;background:#f6f9fb;color:var(--muted);font-size:.68rem;font-weight:800;text-transform:uppercase;letter-spacing:.05em}.profile-registry .registry-row{grid-template-columns:minmax(145px,1.1fr) minmax(170px,1.3fr) minmax(110px,.8fr) minmax(90px,.6fr)}.profile-registry b{width:max-content;padding:5px 8px;border-radius:999px;background:var(--soft);color:var(--blue);font-size:.67rem}.access-status{width:max-content;padding:5px 8px;border-radius:999px;background:#eaf8f1;color:#14764d;font-size:.67rem}.registry-footer{margin:10px 2px 0;color:var(--muted);font-size:.7rem}.registry-row[hidden]{display:none}
.company-registry .registry-row{grid-template-columns:minmax(150px,1fr) minmax(230px,1.6fr) minmax(155px,1fr) minmax(90px,.55fr)}.project-registry .registry-row{grid-template-columns:minmax(160px,1.2fr) minmax(150px,1fr) minmax(170px,1.1fr) minmax(90px,.55fr)}.company-registry .registry-row>*:last-child,.project-registry .registry-row>*:last-child{justify-self:start}.registry-status{width:max-content;padding:5px 9px;border-radius:999px;background:#eaf8f1;color:#14764d;font-size:.67rem}
.registered-user-list{min-height:132px;padding:6px!important;overflow-y:auto}.registered-user-list option{margin:2px 0;padding:11px 10px;border-radius:7px;color:var(--ink)}.registered-user-list option:checked{background:var(--blue);color:#fff}.profile-dialog select:focus{border-color:var(--cyan);box-shadow:0 0 0 4px rgba(19,181,200,.12)}
.admin-head-actions{display:flex;align-items:center;gap:9px;flex-wrap:wrap;justify-content:flex-end}.admin-head-actions button{padding:10px 13px;border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--blue);font-weight:750;cursor:pointer}.admin-head-actions .primary-button{border-color:var(--blue);background:var(--blue);color:#fff}.admin-confirm{grid-template-columns:auto 1fr!important;align-items:start}.admin-confirm input{margin-top:2px}.admin-confirm span{color:var(--muted);font-size:.72rem;line-height:1.4}
@media(max-width:1000px){.admin-metrics{grid-template-columns:repeat(2,1fr)}.admin-grid{grid-template-columns:1fr}.admin-profile-list{grid-template-columns:1fr}}
@media(max-width:520px){.admin-metrics{grid-template-columns:1fr 1fr}.admin-metrics article{padding:16px}.admin-note{align-items:flex-start}.admin-dialog{padding:24px}}
@media(max-width:780px){
  html,body{max-width:100%;overflow-x:hidden}.content{width:100%;max-width:100%;padding:28px 14px 70px}.page-header h1{font-size:clamp(2.25rem,12vw,3.2rem);overflow-wrap:anywhere}.admin-metrics{grid-template-columns:1fr 1fr;gap:10px}.admin-metrics article{min-width:0;padding:16px 14px}.admin-card{min-width:0;padding:18px 14px}.admin-card-head{display:grid;grid-template-columns:1fr;gap:14px}.admin-head-actions{display:grid;grid-template-columns:1fr;justify-content:stretch}.admin-head-actions button{width:100%}.registry-table{width:100%;max-width:100%;overflow-x:auto}.registry-row{min-width:650px}.topbar{padding:0 14px}.user-menu{min-width:0}.user-menu>div:last-child,.my-profile-trigger>div:last-child{display:none}
}
@media(max-width:520px){.admin-metrics{grid-template-columns:1fr}.admin-metrics article{min-height:130px}.content{padding-left:12px;padding-right:12px}}
.admin-dialog{max-height:calc(100vh - 40px);overflow-y:auto}
.admin-card-description{margin:4px 0 0;color:var(--muted);font-size:.75rem}
.demo-role-switch{display:grid;gap:1px;padding:5px 9px;border:1px solid var(--line);border-radius:9px;background:#fff}.demo-role-switch>span{color:var(--muted)!important;font-size:.56rem!important;font-weight:700;text-transform:uppercase;letter-spacing:.07em}.demo-role-switch select{min-width:120px;padding:0 20px 0 0;border:0;background:transparent;color:var(--blue);font-size:.72rem;font-weight:850;outline:none}
.dashboard-scope{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-bottom:20px;padding:18px 20px;border:1px solid var(--line);border-radius:var(--radius);background:#fff;box-shadow:0 6px 22px rgba(7,29,50,.04)}.dashboard-scope>div{display:grid;gap:3px}.dashboard-scope .eyebrow{margin:0}.dashboard-scope strong{font-size:1.12rem}.dashboard-scope span{color:var(--muted);font-size:.75rem}.dashboard-scope label{display:grid;gap:6px;color:var(--muted);font-size:.68rem;font-weight:750}.dashboard-scope select{min-width:280px;padding:11px 36px 11px 12px;border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--ink);font-weight:700;outline:none}.dashboard-scope select:focus{border-color:var(--cyan);box-shadow:0 0 0 4px rgba(19,181,200,.12)}
.contractor-rating{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-top:20px;padding:22px 24px;border:1px solid var(--line);border-radius:var(--radius);background:#fff;box-shadow:0 6px 22px rgba(7,29,50,.04)}.contractor-rating h2,.contractor-rating p{margin:0}.contractor-rating>div{display:grid;gap:5px}.contractor-rating>div>p:last-child{color:var(--muted);font-size:.75rem}.contractor-rating form{display:flex;align-items:end;gap:16px}.contractor-rating fieldset{margin:0;padding:0;border:0}.contractor-rating legend{margin-bottom:7px;color:var(--muted);font-size:.68rem;font-weight:750}.rating-options{display:flex;gap:7px}.rating-options label{cursor:pointer}.rating-options input{position:absolute;opacity:0;pointer-events:none}.rating-options span{display:grid;width:38px;height:38px;place-items:center;border:1px solid var(--line);border-radius:9px;background:#fff;color:var(--blue);font-weight:850;transition:.18s ease}.rating-options input:checked+span{border-color:var(--blue);background:var(--blue);color:#fff;box-shadow:0 5px 14px rgba(5,43,70,.18)}.rating-options label:hover span{border-color:var(--cyan);transform:translateY(-1px)}
.evaluation-alarm{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:20px;padding:17px 19px;border:1px solid #f0c36a;border-radius:var(--radius);background:#fff8e8;box-shadow:0 6px 20px rgba(128,86,8,.08)}.evaluation-alarm strong{color:#79530a}.evaluation-alarm p{margin:3px 0 0;color:#7d6740;font-size:.78rem}.evaluation-alarm button{flex-shrink:0;padding:10px 14px;border:0;border-radius:9px;background:#9a6b10;color:#fff;font-weight:800;cursor:pointer}.metric-warning{border-color:#f0c36a!important;background:#fffaf0!important}.metric-warning strong{color:#9a6b10}
.notification-wrap{position:relative}.notification-bell{position:relative;display:grid;width:42px;height:42px;place-items:center;border:1px solid var(--line);border-radius:11px;background:#fff;color:var(--muted);cursor:pointer}.notification-bell .icon,.notification-bell svg{width:20px;height:20px}.notification-bell.has-alerts{border-color:#f0c36a;background:#fff8e8;color:#91620b}.notification-bell>b{position:absolute;top:-6px;right:-6px;display:grid;min-width:20px;height:20px;padding:0 5px;place-items:center;border:2px solid #fff;border-radius:999px;background:#d34a35;color:#fff;font-size:.62rem}.notification-panel{position:absolute;z-index:80;top:50px;right:0;width:min(340px,calc(100vw - 32px));padding:10px;border:1px solid var(--line);border-radius:14px;background:#fff;box-shadow:0 20px 50px rgba(5,30,48,.2)}.notification-panel[hidden]{display:none}.notification-panel>div{display:flex;align-items:center;justify-content:space-between;padding:9px 10px}.notification-panel>div span,.notification-panel>p{color:var(--muted);font-size:.72rem}.notification-panel>p{margin:4px;padding:13px;background:#f6f9fb;border-radius:9px}.notification-panel>button{display:grid;width:100%;gap:3px;padding:12px;border:0;border-radius:9px;background:#fff8e8;color:var(--ink);text-align:left;cursor:pointer}.notification-panel>button:hover{background:#fff1cc}.notification-panel>button span{color:#7d6740;font-size:.72rem}
@media(max-width:620px){.dashboard-scope,.contractor-rating,.evaluation-alarm{align-items:stretch;flex-direction:column}.dashboard-scope select{width:100%;min-width:0}.contractor-rating form{align-items:stretch;flex-direction:column}.rating-options{justify-content:space-between}.evaluation-alarm button{width:100%}}
@media(max-width:620px){.demo-role-switch>span{display:none}.demo-role-switch select{min-width:85px}.user-menu .avatar{display:none}}

.photo-count {
  position: absolute;
  right: 12px;
  bottom: 12px;
  padding: 7px 11px;
  border-radius: 999px;
  background: rgba(8, 40, 65, .88);
  color: #fff;
  font-size: 13px;
  font-weight: 700;
}

.media-thumb {
  position: relative;
}

.daily-media-card {
  cursor: pointer;
}

.asas-gallery-modal {
  position: fixed;
  inset: 0;
  z-index: 99999;
}

.asas-gallery-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(5, 20, 32, .82);
}

.asas-gallery-dialog {
  position: absolute;
  inset: 5vh 8vw;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
}

.asas-gallery-image {
  max-width: 100%;
  max-height: 72vh;
  object-fit: contain;
  border-radius: 12px;
}

.asas-gallery-info {
  width: min(900px, 90%);
  margin-top: 14px;
  color: white;
  text-align: center;
}

.asas-gallery-info p {
  margin: 6px 0 0;
}

.asas-gallery-close,
.asas-gallery-prev,
.asas-gallery-next {
  position: absolute;
  border: 0;
  background: rgba(255,255,255,.94);
  color: #082841;
  cursor: pointer;
  border-radius: 999px;
  font-weight: 700;
}

.asas-gallery-close {
  top: 0;
  right: 0;
  width: 46px;
  height: 46px;
  font-size: 28px;
}

.asas-gallery-prev,
.asas-gallery-next {
  top: 45%;
  width: 52px;
  height: 52px;
  font-size: 36px;
}

.asas-gallery-prev {
  left: 0;
}

.asas-gallery-next {
  right: 0;
}

.asas-gallery-counter {
  margin-bottom: 10px;
  color: white;
  font-weight: 700;
}


.day-card {
  cursor: pointer;
}

.day-photo-count {
  position: absolute;
  right: 14px;
  bottom: 14px;
  padding: 7px 12px;
  border-radius: 20px;
  background: rgba(7, 43, 68, .90);
  color: #fff !important;
  font-size: 13px;
  font-weight: 700;
}

.media-image {
  position: relative;
}

/* Galeria aprovada: somente ampliação das fotos */
.gallery-large .media-grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 24px;
}

.gallery-large .media-image {
  aspect-ratio: 4 / 3;
}

@media (max-width: 780px) {
  .gallery-large .media-grid { grid-template-columns: 1fr; }
}

.asas-day-lightbox .gallery-content {
  max-width: 1000px;
  text-align: center;
}

.asas-day-lightbox .gallery-caption {
  margin-top: 14px;
  color: #fff;
}

.gallery-position {
  position: absolute;
  top: 25px;
  left: 50%;
  transform: translateX(-50%);
  color: #fff;
  font-weight: 700;
}

.gallery-prev,
.gallery-next {
  position: absolute;
  top: 50%;
  width: 52px;
  height: 52px;
  border: 0;
  border-radius: 50%;
  font-size: 38px;
  cursor: pointer;
  transform: translateY(-50%);
}

.gallery-prev {
  left: 30px;
}

.gallery-next {
  right: 30px;
}


.gallery-caption {
  max-width: 900px;
  margin-left: auto;
  margin-right: auto;
}

.gallery-caption strong {
  display: block;
  margin-bottom: 8px;
}

.gallery-whatsapp-text {
  display: block !important;
  visibility: visible !important;
  opacity: 1 !important;
  margin: 0 auto;
  max-width: min(820px, 88vw);
  font-size: 1rem;
  line-height: 1.45;
  color: #fff !important;
  text-align: center;
}

/* Mantém foto, data e descrição sempre dentro da tela. */
.asas-day-lightbox .gallery-content {
  width: min(88vw, 1320px);
  max-width: none;
  max-height: calc(100vh - 90px);
  display: grid;
  grid-template-columns: minmax(280px, 360px) minmax(420px, 760px);
  gap: clamp(28px, 3vw, 48px);
  align-items: center;
  justify-content: center;
}
.asas-day-lightbox .gallery-content > img {
  display: block;
  width: auto;
  height: auto;
  width: auto;
  max-width: 100%;
  height: min(80vh, 880px);
  max-height: calc(100vh - 90px);
  object-fit: contain;
  border-radius: 14px;
  justify-self: start;
}

.asas-day-lightbox {
  padding: 54px 4vw 24px;
}

.asas-day-lightbox .gallery-caption {
  width: 100%;
  max-width: 360px;
  min-width: 0;
  margin: 0;
  text-align: left;
  justify-self: start;
}

.asas-day-lightbox .gallery-caption strong,
.asas-day-lightbox .gallery-whatsapp-text { text-align: left; }

.asas-day-lightbox .gallery-whatsapp-text {
  width: 100%;
  max-width: 100%;
  margin: 0;
  overflow-wrap: anywhere;
  word-break: normal;
}

@media (max-width: 780px) {
  .asas-day-lightbox { padding: 50px 12px 18px; }
  .asas-day-lightbox .gallery-content {
    display: flex;
    width: 96vw;
    flex-direction: column-reverse;
    gap: 10px;
  }
  .asas-day-lightbox .gallery-content > img {
    width: auto;
    height: auto;
    max-width: 96vw;
    max-height: calc(100vh - 205px);
  }
  .asas-day-lightbox .gallery-caption { max-width: 92vw; }
  .asas-day-lightbox .gallery-caption strong,
  .asas-day-lightbox .gallery-whatsapp-text { text-align: center; }
  .asas-day-lightbox .gallery-prev,.asas-day-lightbox .gallery-next{top:18px;width:44px;height:44px;transform:none}.asas-day-lightbox .gallery-prev{left:12px}.asas-day-lightbox .gallery-next{right:54px}.asas-day-lightbox .gallery-close{top:18px;right:10px}.gallery-position{top:27px}.asas-day-lightbox{touch-action:pan-y}
}
.asas-day-lightbox .gallery-caption {
  flex: 0 0 auto;
  width: min(900px, 90vw);
  margin: 14px auto 0;
  padding-bottom: 8px;
}

/* Marca com mais presença na tela de acesso. */
.login-brand .product-logo-dark {
  padding: 15px 20px;
  border-radius: 14px;
}
.login-brand .product-logo img {
  width: 174px;
  height: 52px;
}
.login-brand .product-logo strong {
  font-size: 2.15rem;
}
.mobile-logo img {
  width: 190px;
  height: 56px;
}
.login-error{margin:0;text-align:center;color:#a82929;font-size:.82rem;font-weight:700}
.admin-metrics{grid-template-columns:repeat(3,1fr)}
.app-version{display:block;color:var(--muted);font-size:.68rem;font-weight:700;letter-spacing:.04em}.login-card>.app-version{text-align:center}.admin-top-actions{display:flex;gap:10px;flex-wrap:wrap}
.password-field{position:relative}.password-field input{padding-right:88px}.password-field button{position:absolute;top:50%;right:10px;transform:translateY(-50%);padding:7px 9px;border:0;border-radius:7px;background:#edf3f5;color:var(--blue);font-size:.75rem;font-weight:800}.password-field button:hover{background:#e1ecef}
.admin-head-actions .danger-button{border-color:#efcaca;color:#a82929;background:#fff}.admin-head-actions .danger-button:hover{border-color:#d96b6b;background:#fff5f5}.delete-confirmation{display:flex!important;grid-template-columns:auto 1fr;align-items:center}.delete-confirmation input{width:16px;height:16px}.delete-submit{background:#a82929}.delete-submit:hover{background:#861f1f}
.admin-empty{padding:28px 0;color:var(--muted)}
.admin-empty strong{display:block;color:var(--ink);margin-bottom:4px}
.admin-empty p{margin:0}
.rdo-service-card{display:flex;align-items:center;justify-content:space-between;gap:24px;border-color:#bfe1d4;background:linear-gradient(135deg,#f5fcf9,#fff)}
.rdo-service-card h2{margin:0 0 6px}.rdo-service-card p:last-child{margin:0;color:var(--muted)}
.rdo-service-card .primary-button{flex:0 0 auto;background:#147a55}
.rdo-job-status{font-size:.78rem}.status-pending{color:#936d15}.status-processing{color:var(--mid)}.status-completed{color:#147a55}.status-failed{color:#a82929}
.rdo-job-history .registry-row{grid-template-columns:minmax(160px,1.2fr) minmax(140px,1fr) minmax(150px,1fr) minmax(130px,.8fr)}
@media (max-width:780px){.rdo-service-card{align-items:stretch;flex-direction:column}.rdo-service-card .primary-button{width:100%}.rdo-job-history .registry-row{grid-template-columns:1fr;min-width:0}.rdo-job-history .registry-table-head{display:none}}
.measurement-dialog-actions{display:flex;gap:8px;flex-wrap:wrap}
.measurement-dialog{width:min(760px,100%)}.measurement-dialog>button{justify-self:start}.measurement-groups{margin-bottom:14px}.measurement-groups .registry-row{grid-template-columns:1.2fr .7fr .8fr 1fr .8fr 1fr;min-width:640px}.measurement-card{padding:16px;border:1px solid var(--line);border-radius:12px;margin-bottom:14px}.measurement-card-head{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:12px}.measurement-status{padding:5px 10px;border-radius:999px;font-size:.7rem;font-weight:800}.measurement-status.status-draft{background:#fff4d8;color:#936d15}.measurement-status.status-approved{background:#eaf8f1;color:#14764d}.measurement-actions{display:flex;gap:8px;margin-left:auto}.measurement-approved-by{margin-left:auto;color:var(--muted);font-size:.75rem}.measurement-total-row{background:var(--soft);font-weight:800;color:var(--ink);border-top:2px solid var(--line)}.measurement-total-row strong{font-weight:800}
@media(max-width:520px){.measurement-groups .registry-row{min-width:0}.measurement-card-head{flex-direction:column;align-items:flex-start}.measurement-actions{margin-left:0}}

/* ===== ASAS — ajustes de tamanho e responsividade (somente visual) ===== */

/* Correcao: a tabela de usuarios passou a ter 5 colunas (com Telefone). */
.profile-registry .registry-row{grid-template-columns:minmax(130px,1.1fr) minmax(150px,1.2fr) minmax(105px,.8fr) minmax(95px,.7fr) minmax(90px,.7fr)}

@media (max-width:780px){
  /* Titulos ocupavam quase meia tela no celular. */
  .page-header h1{font-size:clamp(1.65rem,7vw,2.25rem);letter-spacing:-.03em}
  .page-header{margin-bottom:22px;gap:14px}
  .content{padding:22px 14px 60px}
  .admin-card{padding:16px 13px}
  .admin-card-head{margin-bottom:14px;gap:10px;flex-direction:column}
  .admin-card-head h2{font-size:1.05rem;line-height:1.25}
  .admin-card-description{font-size:.78rem}

  /* Botoes de acao: alvo de toque adequado e largura util. */
  .admin-head-actions{width:100%;justify-content:stretch;gap:8px}
  .admin-head-actions button{flex:1 1 auto;min-height:44px;padding:11px 12px;font-size:.82rem}
  .primary-button{min-height:44px}

  /* Tabelas viram cartoes empilhados, sem rolagem lateral. */
  .registry-table{max-height:none;overflow:visible}
  .registry-row{min-width:0;grid-template-columns:1fr;gap:4px;padding:12px 13px;font-size:.82rem}
  .registry-table-head{display:none}
  .profile-registry .registry-row,
  .project-registry .registry-row,
  .company-registry .registry-row{grid-template-columns:1fr}
  .registry-row strong{font-size:.92rem}
  .registry-row span,.registry-row b{color:var(--muted);font-size:.78rem}
  .registry-search input{min-height:44px}

  /* Cards de midia mais compactos. */
  .media-card>div:last-child{padding:13px}
  .media-card h3{font-size:.92rem}
  .media-card p{font-size:.75rem}
  .media-grid{gap:12px}
}

@media (max-width:520px){
  .page-header h1{font-size:1.5rem}
  .content{padding:18px 12px 54px}
  .topbar{height:64px}
  .media-grid{grid-template-columns:1fr;gap:10px}
  .admin-head-actions{flex-direction:column}
  .admin-head-actions button{width:100%}
  .record-count{height:21px;min-width:24px;font-size:.68rem}
  .admin-dialog{padding:18px}
  .admin-dialog h2{font-size:1.1rem}
  .admin-dialog input,.admin-dialog select{min-height:44px;font-size:16px}
}

/* ===== ASAS · campos v2 · inicio ===== */
/* Por que: input/select usam `font:inherit` e ficam DENTRO do <label>.
   Como cada label tem seu proprio font-size (.68rem, .78rem, .88rem),
   as caixas herdavam 10,9px / 12,5px / 14,1px e as alturas variavam
   de 38px a 66px. Abaixo de 16px o iOS ainda da zoom ao tocar. */

/* 1 · toda caixa de texto: 16px, sem heranca do rotulo */
.login-card input,
.login-card select,
.admin-dialog input,
.admin-dialog select,
.dashboard-scope select,
.filter-bar select,
.select,
.registry-search input{
  font-size:16px;
  line-height:1.35;
}

/* 2 · altura unica de 46px (acima do minimo de toque de 44px) */
.login-card input,
.login-card select,
.admin-dialog input,
.admin-dialog select,
.dashboard-scope select,
.filter-bar select,
.select{
  min-height:46px;
}

/* 3 · padding coerente */
.login-card input,
.admin-dialog input{padding:11px 14px}
.login-card select,
.admin-dialog select,
.dashboard-scope select,
.filter-bar select,
.select{padding:11px 34px 11px 14px}

/* 4 · busca: a altura fica no rotulo, nao no input (era 66px no celular) */
.registry-search{min-height:46px;padding:0 12px}
.registry-search input{min-height:0;padding:0;-webkit-appearance:none;appearance:none}

/* 5 · filtro do dashboard tinha min-width:280px fixo e estourava em 320-360px */
.dashboard-scope label{min-width:0;flex:0 1 280px}
.dashboard-scope select{width:100%;min-width:0}

/* 6 · excecoes: caixas que nao sao campo de texto */
.password-field input{padding-right:92px}
.delete-confirmation input{width:16px;height:16px;min-height:0;padding:0;flex:0 0 auto}
.rating-options input{width:auto;min-height:0;padding:0}
.notification-bell{width:44px;height:44px}
/* ===== ASAS · campos v2 · fim ===== */

/* ===== ASAS — padronizacao dos botoes admin ===== */
.admin-head-actions{flex-wrap:nowrap;align-items:center}
.admin-head-actions button,
.admin-head-actions .primary-button{
  min-height:42px;
  padding:10px 18px;
  border-radius:10px;
  font-size:.82rem;
  font-weight:750;
  white-space:nowrap;
  line-height:1;
  letter-spacing:.005em;
}
.admin-head-actions .primary-button{box-shadow:0 6px 18px rgba(7,29,50,.15)}
@media (max-width:900px){
  .admin-card-head{flex-direction:column;align-items:stretch;gap:12px}
  .admin-head-actions{width:100%;flex-wrap:wrap;justify-content:flex-start;gap:8px}
  .admin-head-actions button,
  .admin-head-actions .primary-button{flex:1 1 auto}
}
@media (max-width:520px){
  .admin-head-actions{flex-direction:column}
  .admin-head-actions button,
  .admin-head-actions .primary-button{width:100%}
}


/* ===== ASAS — arraste para atualizar ===== */
.pull-refresh{
  position:fixed;top:calc(env(safe-area-inset-top,0px) + 8px);left:50%;
  width:38px;height:38px;margin-top:-46px;
  display:flex;align-items:center;justify-content:center;
  border-radius:50%;background:#fff;
  box-shadow:0 6px 20px rgba(7,29,50,.18);
  transform:translate(-50%,0);opacity:0;
  transition:opacity .18s ease;
  pointer-events:none;z-index:60;
}
.pull-refresh-spinner{
  width:17px;height:17px;border-radius:50%;
  border:2.5px solid rgba(6,43,70,.18);border-top-color:#062b46;
  transition:transform .18s ease;
}
.pull-refresh.armed .pull-refresh-spinner{transform:rotate(180deg)}
.pull-refresh.loading .pull-refresh-spinner{animation:pull-spin .7s linear infinite}
@keyframes pull-spin{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){
  .pull-refresh.loading .pull-refresh-spinner{animation-duration:2s}
}

/* ===== ASAS — cartoes de obra sem foto ===== */
.obra-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(268px,1fr));gap:16px;margin-bottom:26px}
.obra-card{background:#fff;border:1px solid #E3E9EF;border-radius:14px;padding:18px 19px;cursor:pointer;transition:border-color .15s ease,box-shadow .15s ease,transform .15s ease}
.obra-card:hover,.obra-card:focus-visible{border-color:#9DC2E6;box-shadow:0 8px 22px rgba(7,29,50,.10);transform:translateY(-2px);outline:none}
.obra-card-topo{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}
.obra-card-codigo{font-size:.68rem;font-weight:800;letter-spacing:.09em;color:#2E7BB8;text-transform:uppercase}
.obra-card-status{font-size:.68rem;font-weight:700;color:#0E7A52;background:#E4F5EC;border-radius:999px;padding:4px 10px;white-space:nowrap}
.obra-card-status.encerrada{color:#5B6B7B;background:#EEF2F6}
.obra-card h3{margin:0;font-size:1.24rem;line-height:1.25;color:#062B46;letter-spacing:-.01em}
.obra-card-local{margin:6px 0 15px;font-size:.79rem;color:#6B7B8C}
.obra-card-progresso{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:7px}
.obra-card-progresso span{font-size:.78rem;color:#6B7B8C}
.obra-card-progresso strong{font-size:1.02rem;color:#062B46}
.obra-card-barra{height:7px;border-radius:999px;background:#EEF2F6;overflow:hidden}
.obra-card-barra i{display:block;height:100%;border-radius:999px;background:#3B82F6}
.obra-card-rodape{margin:14px 0 0;padding-top:12px;border-top:1px solid #EEF2F6;font-size:.72rem;color:#8B98A5}
@media (max-width:520px){
  .obra-grid{grid-template-columns:1fr;gap:12px}
  .obra-card{padding:15px 16px}
  .obra-card h3{font-size:1.12rem}
}

/* ===== ASAS — botao voltar ===== */
.voltar-button{display:inline-flex;align-items:center;gap:6px;margin-bottom:10px;padding:7px 13px;min-height:36px;border:1px solid #DCE3EA;border-radius:999px;background:#fff;color:#3E5062;font-size:.78rem;font-weight:700;cursor:pointer;transition:border-color .15s ease,color .15s ease,background .15s ease}
.voltar-button:hover,.voltar-button:focus-visible{border-color:#9DC2E6;color:#12507E;background:#F4F9FE;outline:none}
.voltar-button span{font-size:.95rem;line-height:1}
@media (max-width:520px){.voltar-button{min-height:40px;padding:8px 15px}}

/* ===== ASAS 4.4.30 — AJUSTE DASHBOARD MOBILE ===== */
@media (max-width: 900px){

  /* Barra superior permanece visível durante a rolagem */
  .topbar{
    position:sticky;
    top:0;
    z-index:50;
    background:#fff;
  }

  /*
   * O card externo do dashboard não deve impor altura.
   * A altura passa a ser exclusivamente a do conteúdo.
   */
  .dashboard-card,
  .dashboard-panel,
  .dashboard-section{
    min-height:0 !important;
    height:auto !important;
  }

  /*
   * Indicadores imediatamente abaixo do seletor.
   */
  .dashboard-grid,
  .dashboard-metrics,
  .metrics-grid,
  .kpi-grid{
    margin-top:16px !important;
    min-height:0 !important;
    height:auto !important;
  }

  /* Não mostrar o bloco informativo do WhatsApp no mobile */
  .whatsapp-status-card,
  .whatsapp-flow-card{
    display:none !important;
  }
}
/* ===== FIM AJUSTE DASHBOARD MOBILE ===== */


/* ===== ASAS MOBILE AJUSTE REAL ===== */
@media(max-width:780px){

  /* Barra superior fixa */
  .topbar{
    position:sticky !important;
    top:0 !important;
    z-index:100 !important;
    background:#fff !important;
  }

  /* Retira a caixa grande externa do seletor Dashboard */
  .dashboard-scope{
    display:block !important;
    margin-bottom:14px !important;
    padding:0 !important;
    border:0 !important;
    border-radius:0 !important;
    background:transparent !important;
    box-shadow:none !important;
  }

  .dashboard-scope > div{
    margin-bottom:10px !important;
  }

  .dashboard-scope label{
    width:100% !important;
    min-width:0 !important;
    display:grid !important;
    gap:6px !important;
  }

  .dashboard-scope select{
    width:100% !important;
    min-width:0 !important;
  }

  /* Indicadores logo abaixo do filtro */
  .metric-grid{
    margin-top:12px !important;
  }

  /* Remove totalmente a caixa do WhatsApp */
  .whatsapp-flow{
    display:none !important;
  }
}
/* ===== FIM ASAS MOBILE AJUSTE REAL ===== */


/* ===== ASAS MOBILE FINAL ===== */
@media (max-width:780px){

  /* Header realmente fixo */
  .topbar{
    position:fixed !important;
    top:0 !important;
    left:0 !important;
    right:0 !important;
    width:100% !important;
    height:64px !important;
    z-index:9999 !important;
    background:#fff !important;
  }

  .workspace{
    padding-top:64px !important;
  }

  /* Dashboard sem caixa gigante */
  .dashboard-scope{
    min-height:0 !important;
    height:auto !important;
    max-height:none !important;
    padding:0 !important;
    margin:0 0 14px !important;
    border:0 !important;
    border-radius:0 !important;
    box-shadow:none !important;
    background:transparent !important;
    align-items:stretch !important;
  }

  .dashboard-scope > div,
  .dashboard-scope > label{
    min-height:0 !important;
    height:auto !important;
  }

  .dashboard-scope label{
    width:100% !important;
  }

  .dashboard-scope select{
    width:100% !important;
    min-width:0 !important;
  }

  /* KPIs imediatamente abaixo do filtro */
  .metric-grid{
    margin-top:14px !important;
  }

  /* Remover caixa WhatsApp */
  .whatsapp-flow{
    display:none !important;
  }
}
/* ===== FIM ASAS MOBILE FINAL ===== */


/* ==========================================================
   ASAS 4.4.31 — TOPBAR MOBILE CONTEXTUAL
   ========================================================== */

@media (max-width:780px){

  .topbar{
    position:fixed !important;
    top:0 !important;
    left:0 !important;
    right:0 !important;
    width:100% !important;
    min-height:112px !important;
    height:auto !important;
    z-index:9999 !important;
    background:#fff !important;
    box-sizing:border-box !important;
    padding-bottom:10px !important;
    border-bottom:1px solid rgba(15,43,66,.10);
  }

  .workspace{
    padding-top:112px !important;
  }

  .asas-mobile-status{
    width:100%;
    display:flex;
    align-items:center;
    justify-content:flex-end;
    gap:18px;
    padding:5px 18px 0;
    box-sizing:border-box;
    font-size:12px;
    line-height:1.25;
  }

  .asas-online{
    display:flex;
    align-items:center;
    gap:7px;
    white-space:nowrap;
  }

  .asas-online strong{
    color:#10a96b;
    font-weight:700;
  }

  .asas-online-dot{
    display:inline-block;
    width:9px;
    height:9px;
    border-radius:50%;
    background:#18b879;
    box-shadow:0 0 0 4px rgba(24,184,121,.14);
  }

  .asas-last-update{
    display:flex;
    align-items:center;
    gap:7px;
    min-width:0;
    color:#71808d;
    white-space:nowrap;
  }

  .asas-last-update span{
    font-weight:600;
  }

  .asas-last-update strong{
    color:#102b42;
    font-weight:700;
  }

  .whatsapp-flow{
    display:none !important;
  }
}

@media (max-width:480px){
  .asas-mobile-status{
    justify-content:space-between;
    gap:8px;
    padding-left:14px;
    padding-right:14px;
    font-size:11px;
  }

  .asas-last-update{
    gap:5px;
  }
}

/* ===== FIM ASAS 4.4.31 ===== */

/* ===== ASAS 4.4.31 — TOPBAR MOBILE COMPACTA ===== */
@media (max-width:780px){

  .topbar{
    min-height:86px !important;
    height:86px !important;
    padding-bottom:0 !important;
    overflow:hidden !important;
  }

  .workspace{
    padding-top:86px !important;
  }

  .asas-mobile-status{
    position:absolute !important;
    left:0 !important;
    right:0 !important;
    bottom:0 !important;
    height:28px !important;
    padding:0 14px !important;
    display:flex !important;
    align-items:center !important;
    justify-content:space-between !important;
    gap:10px !important;
    box-sizing:border-box !important;
    border-top:1px solid rgba(15,43,66,.08);
    background:#fff !important;
    font-size:11px !important;
    line-height:1 !important;
  }

  .asas-online{
    flex:0 0 auto !important;
    gap:6px !important;
  }

  .asas-online-dot{
    width:8px !important;
    height:8px !important;
    box-shadow:none !important;
  }

  .asas-last-update{
    flex:1 1 auto !important;
    min-width:0 !important;
    justify-content:flex-end !important;
    gap:5px !important;
    overflow:hidden !important;
    white-space:nowrap !important;
  }

  .asas-last-update span{
    flex:0 0 auto !important;
  }

  .asas-last-update strong{
    min-width:0 !important;
    overflow:hidden !important;
    text-overflow:ellipsis !important;
    white-space:nowrap !important;
  }
}

/* celulares menores */
@media (max-width:390px){
  .asas-last-update span{
    display:none !important;
  }
}
/* ===== FIM TOPBAR MOBILE COMPACTA ===== */

/* ==========================================================
   ASAS 4.4.32 — STATUS MOBILE FINAL
   ========================================================== */

@media (max-width:780px){

  .asas-mobile-status{
    justify-content:flex-start !important;
    gap:8px !important;
    padding:0 20px !important;
    overflow:hidden !important;
  }

  .asas-online{
    flex:0 0 auto !important;
  }

  .asas-status-separator{
    flex:0 0 auto !important;
    color:#102b42 !important;
    margin:0 3px !important;
  }

  .asas-last-update{
    flex:0 1 auto !important;
    justify-content:flex-start !important;
    overflow:visible !important;
    white-space:nowrap !important;
  }

  .asas-last-update strong{
    overflow:visible !important;
    text-overflow:clip !important;
    white-space:nowrap !important;
    color:#102b42 !important;
  }
}

@media (max-width:390px){

  .asas-mobile-status{
    padding:0 14px !important;
    gap:6px !important;
    font-size:10.5px !important;
  }

  .asas-last-update{
    display:flex !important;
  }

  .asas-last-update span{
    display:inline !important;
  }
}

/* ===== FIM ASAS 4.4.32 ===== */

/* ===== ASAS 4.4.33 ===== */
@media (max-width:780px){

  /* Pequeno respiro depois da barra fixa */
  .admin-control-eyebrow{
    margin-top:12px !important;
  }

  /* menu acima da página e comportamento visual limpo */
  .sidebar.open{
    z-index:10001 !important;
  }
}
/* ===== FIM ASAS 4.4.33 ===== */

/* ==========================================================
   ASAS 4.4.36 — AJUSTES CONSOLIDADOS MOBILE
   ========================================================== */

@media (max-width:780px){

  /*
   * Mantém o respiro que existia acima de Administração,
   * mas sem exibir "CONTROLE ASAS".
   */
  .admin-control-eyebrow{
    display:block !important;
    height:18px !important;
    min-height:18px !important;
    margin:10px 0 6px !important;
    padding:0 !important;
    font-size:0 !important;
    line-height:0 !important;
  }

  /*
   * Status agrupado à esquerda.
   * Evita encostar no sino.
   */
  .asas-mobile-status{
    justify-content:flex-start !important;
    gap:7px !important;
    padding-left:18px !important;
    padding-right:82px !important;
    overflow:hidden !important;
  }

  .asas-online{
    flex:0 0 auto !important;
  }

  .asas-status-separator{
    flex:0 0 auto !important;
    margin:0 2px !important;
  }

  .asas-last-update{
    flex:0 1 auto !important;
    min-width:0 !important;
    justify-content:flex-start !important;
    white-space:nowrap !important;
  }

  .asas-last-update strong{
    min-width:0 !important;
    overflow:hidden !important;
    text-overflow:ellipsis !important;
    white-space:nowrap !important;
  }
}

/* ===== FIM ASAS 4.4.36 ===== */

/* ===== ASAS 4.4.37 ===== */
@media (max-width:780px){

  /* Respiro entre barra fixa e Administração */
  .page-header .eyebrow:empty,
  .page-header-eyebrow:empty,
  .eyebrow:empty{
    display:block !important;
    height:16px !important;
    min-height:16px !important;
    margin:0 0 6px !important;
  }
}
/* ===== FIM ASAS 4.4.37 ===== */

/* ==========================================================
   ASAS 4.4.39 — VISUALIZADOR MOBILE DE RDO
   ========================================================== */

.report-view-button{
  appearance:none;
  border:1px solid #d9e1e7;
  background:#fff;
  color:#006fa6;
  border-radius:10px;
  padding:10px 14px;
  font:inherit;
  font-weight:700;
  cursor:pointer;
}

@media(max-width:780px){

  body.rdo-viewer-open{
    overflow:hidden !important;
  }

  .asas-rdo-viewer{
    position:fixed;
    inset:0;
    z-index:20000;
    background:#eef2f4;
    display:flex;
    flex-direction:column;
  }

  .asas-rdo-viewer-bar{
    flex:0 0 auto;
    min-height:58px;
    padding:
      calc(env(safe-area-inset-top, 0px) + 8px)
      12px
      8px;
    display:grid;
    grid-template-columns:auto 1fr auto;
    align-items:center;
    gap:10px;
    background:#fff;
    border-bottom:1px solid #dce3e8;
    box-shadow:0 2px 10px rgba(15,43,66,.08);
  }

  .asas-rdo-back,
  .asas-rdo-close{
    appearance:none;
    border:0;
    background:transparent;
    color:#006fa6;
    font-size:14px;
    font-weight:800;
    padding:9px 5px;
  }

  .asas-rdo-close{
    font-size:20px;
    color:#102b42;
  }

  .asas-rdo-viewer-title{
    min-width:0;
    overflow:hidden;
    text-overflow:ellipsis;
    white-space:nowrap;
    text-align:center;
    color:#102b42;
    font-size:13px;
  }

  .asas-rdo-frame-wrap{
    flex:1 1 auto;
    min-height:0;
    width:100%;
    overflow:hidden;
    background:#e8edef;
  }

  .asas-rdo-frame{
    display:block;
    width:100%;
    height:100%;
    border:0;
    background:#fff;
  }

  /*
   * No celular o botão de Visualizar ganha área de toque maior.
   */
  .report-view-button,
  .report-actions a{
    min-height:44px;
    display:inline-flex;
    align-items:center;
    justify-content:center;
  }
}

/* ===== FIM ASAS 4.4.39 ===== */

/* ==========================================================
   ASAS 4.5.0 — REFRESH CONSOLIDADO
   ========================================================== */
@media(max-width:780px){
  .asas-mobile-status .asas-refresh-status{position:static;display:inline-flex;align-items:center;justify-content:center;flex:0 0 18px;width:18px;height:18px;min-width:18px;margin:0 2px;padding:0;border:0;background:transparent;box-shadow:none;color:#07875d;line-height:18px}
  .asas-mobile-status .asas-refresh-status[hidden]{display:none!important}
  .asas-mobile-status .asas-refresh-icon{display:block;width:18px;height:18px;font-size:16px;line-height:18px;text-align:center}
  body.asas-refreshing .asas-mobile-status .asas-refresh-icon{animation:asas450spin .7s linear infinite}
  @keyframes asas450spin{from{transform:rotate(0)}to{transform:rotate(360deg)}}
}
/* ===== FIM ASAS 4.5.0 ===== */

.asas-day-lightbox .gallery-close{position:absolute;z-index:100001;top:18px;right:18px;width:46px;height:46px;display:grid;place-items:center;border:0;border-radius:50%;background:rgba(255,255,255,.96);color:#082841;font-size:30px;font-weight:700;line-height:1;cursor:pointer;box-shadow:0 4px 18px rgba(0,0,0,.28)}

/* Correções de auditoria de design (desktop + mobile) — v4.5.54
   1. Placeholder de foto: existia no HTML mas não tinha estilo nenhum, então
      a área da capa ficava vazia quando a obra não tem foto ou a mídia falha.
   2. Cabeçalho da obra estourava a largura (1498px numa tela de 1440px):
      o título não encolhia e empurrava os botões + o select para fora.
   3. Alvos de toque abaixo de 44px no celular (mínimo recomendado). */
.project-image-empty{
  width:100%;height:100%;min-height:inherit;
  background:
    radial-gradient(circle at 30% 30%,rgba(255,255,255,.55),transparent 60%),
    linear-gradient(140deg,#e6eef1,#d3e0e6);
}
.project-image-empty:after{
  content:"Sem foto";
  position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
  color:var(--muted);font-size:.72rem;font-weight:750;letter-spacing:.08em;
}
.project-hero .project-image-empty,.project-image .project-image-empty,.media-image .project-image-empty{position:absolute;inset:0}

.page-header{flex-wrap:wrap}
.page-header>div{min-width:0}
.page-header h1{overflow-wrap:anywhere}
.admin-head-actions{min-width:0;max-width:100%}
.admin-head-actions .select{min-width:0;max-width:100%}

@media(max-width:780px){
  .admin-head-actions button,.admin-head-actions .select,.report-actions a,
  .filter-bar select,.sidebar nav button,.sidebar-foot button,
  .my-profile-trigger,.notification-bell{min-height:44px}
  .mobile-menu{min-width:44px;min-height:44px}
}

/* Alvos de toque: regra abrangente na área de conteúdo, topo e menu. O grid
   do cronograma fica de fora de propósito — ali a densidade é o que permite
   ver o mês inteiro na tela; forçar 44px por célula quebraria a leitura. */
@media(max-width:780px){
  .content button,.content a[href],.content select,.content input,
  .topbar button,.topbar select,.sidebar button{min-height:44px}
  .my-profile-trigger,.notification-bell,.mobile-menu{min-width:44px}
  .asas-grid-table button,.asas-grid-table a,.asas-grid-table input,
  .asas-grid-table td,.asas-grid-table th{min-height:0}
}

/* Os botões do cabeçalho admin tinham min-height:42px com especificidade
   maior que a regra geral de toque, então continuavam abaixo dos 44px no
   celular. Aqui a especificidade empata e a ordem decide. */
@media(max-width:780px){
  .admin-head-actions button,.admin-head-actions .primary-button{min-height:44px}
  .admin-head-actions{flex-wrap:wrap}
}

/* ===== Celular: correções de usabilidade do perfil cliente (v4.5.57) =====
   Feedback do cliente: "péssimo" no celular. O que estava quebrado, medido
   em 390px:
   1. Medição: tabela de 6 colunas espremida (min-width:0) sem rolagem — texto
      cortado pela direita e diálogo maior que a tela, cabeçalho escondido.
   2. Detalhe da obra: ~600px de botões/etiquetas antes de qualquer conteúdo,
      resumo em 6 linhas e um bloco vazio de 420px quando a obra não tem foto.
   3. Menu lateral: abre por cima do conteúdo sem fundo escurecido — o resto
      da tela continua clicável e não fica claro como fechar. */
@media(max-width:780px){
  /* 1. Medição — cada grupo vira um cartão de pares rótulo/valor (sem rolagem
     lateral). Os rótulos vêm do CSS porque a linha só tem <span>s. */
  .measurement-dialog{width:100%;max-width:100%;box-sizing:border-box}
  .admin-modal{align-items:flex-start;padding:10px}
  .admin-dialog{max-height:calc(100dvh - 20px);overflow:auto;box-sizing:border-box}
  .measurement-groups .registry-table-head{display:none}
  .measurement-groups .registry-row{display:grid;grid-template-columns:1fr 1fr;gap:4px 12px;padding:12px 10px;min-width:0}
  .measurement-groups .registry-row>strong{grid-column:1/-1;font-size:.9rem;margin-bottom:4px}
  .measurement-groups .registry-row>span{display:flex;justify-content:space-between;gap:8px;font-size:.8rem;min-width:0}
  .measurement-groups .registry-row>span::before{color:var(--muted);font-size:.68rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase}
  .measurement-groups .registry-row>span:nth-child(2)::before{content:"Peso"}
  .measurement-groups .registry-row>span:nth-child(3)::before{content:"% executada"}
  .measurement-groups .registry-row>span:nth-child(4)::before{content:"Contratado"}
  .measurement-groups .registry-row>span:nth-child(5)::before{content:"% no período"}
  .measurement-groups .registry-row>span:nth-child(6)::before{content:"No período"}
  .measurement-groups .measurement-total-row>strong{font-size:.95rem}

  /* 2. Detalhe da obra — ação em duas colunas; "Todas as obras" e o seletor
     de obra somem (o ← Voltar já faz isso); resumo em duas colunas sem a
     linha "Obra" (repete o título); herói só cresce se houver foto. */
  .project-view-actions,.page-header .admin-head-actions{grid-template-columns:1fr 1fr;gap:8px}
  .page-header .admin-head-actions #project-select{display:none}
  .project-summary{grid-template-columns:1fr 1fr;gap:1px}
  .project-summary article{padding:12px 14px}
  .project-summary article:nth-child(2){display:none}
  .project-summary span{font-size:.66rem}
  .project-summary strong{font-size:.86rem}
  .project-hero:has(.project-image-empty){height:auto;min-height:0;padding:14px}
  .project-hero:has(.project-image-empty) .project-image-empty{display:none}
  .project-hero:has(.project-image-empty) .project-hero-info{position:static;padding:0;background:none;backdrop-filter:none;justify-content:space-between;width:100%}
  .media-card .media-image:has(.project-image-empty){aspect-ratio:16/6}
  .media-image .project-image-empty:after{font-size:.66rem}

  /* 3. Menu lateral — fundo escurecido enquanto aberto. O clique no fundo cai
     fora da sidebar e o app já fecha o menu nesse caso. */
  body:has(.sidebar.open)::before{content:"";position:fixed;inset:0;z-index:19;background:rgba(7,29,50,.45)}
}
@media(max-width:780px){
  /* O cabeçalho da tabela de medição também é .registry-row: a regra de
     cartão (mesma especificidade, declarada depois) reexibia a linha e ela
     estourava a largura. Especificidade maior pra escondê-la de vez. */
  .measurement-groups .registry-row.registry-table-head{display:none}
  .admin-modal{overflow:auto}
}
@media(max-width:780px){
  /* Resumo em duas colunas com número ímpar de itens: a última célula ocupa
     a linha inteira em vez de deixar um quadrado cinza vazio. */
  .project-summary article:last-child{grid-column:1/-1}
}

/* Relatório de Despesas (fase 2, 09/09/2026) */
.expenses-dialog{width:min(1140px,100%)}  /* 13/09/2026: cinco caixas de dinheiro no Dashboard precisam de mais largura */
.expenses-toolbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:10px 0 14px}
.expenses-toolbar strong{min-width:150px;text-align:center}
.expenses-toolbar .primary-button{margin-left:auto}
.expenses-kpis{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:6px}
.expenses-kpis article{padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:var(--soft)}
.expenses-kpis span{display:block;font-size:.72rem;color:var(--muted);margin-bottom:4px}
.expenses-kpis strong{font-size:1.15rem;font-variant-numeric:tabular-nums}
.expenses-section{margin:14px 0}
.expenses-section h3{font-size:.9rem;margin:0 0 6px}
.registry-scroll{overflow-x:auto}
table.expenses-table{width:100%;border-collapse:collapse;font-size:.8rem;min-width:420px}
table.expenses-table th,table.expenses-table td{padding:6px 8px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
table.expenses-table th{font-size:.7rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
table.expenses-table .num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.expenses-neg{color:#b02c2c}
/* 13/09/2026: o valor e os três botões dividiam UMA coluna de 100px — o ✏️ e o 🗑 estouravam a linha
   e o overflow-x:hidden da janela cortava a edição. Cada um tem a sua coluna agora. */
.expenses-invoice summary{cursor:pointer;padding:8px 4px 8px 0;display:grid;grid-template-columns:78px minmax(0,1fr) 122px 74px 104px 84px;gap:8px;font-size:.8rem;border-bottom:1px solid var(--line);align-items:center}
.expenses-invoice summary>span{min-width:0;overflow-wrap:anywhere}
.expenses-invoice summary>span:first-of-type{white-space:nowrap}
.expenses-invoice summary .num{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums;overflow-wrap:normal}
.expenses-invoice-actions{display:flex;align-items:center;justify-content:flex-end;gap:2px;white-space:nowrap}
.expenses-photo-link{text-decoration:none;font-size:1rem;vertical-align:middle}
.expenses-photo-link:hover{filter:brightness(1.2)}
.expenses-invoice-body{padding:8px 0 12px}
.expenses-invoice-meta{font-size:.75rem;color:var(--muted);margin:8px 0 0}
/* Tela estreita: duas linhas por nota, com os botões sempre na coluna da direita. */
@media (max-width:900px){
  .expenses-invoice summary{grid-template-columns:74px minmax(0,1fr) 100px 84px;row-gap:2px;gap:6px}
  .expenses-invoice summary>span:nth-child(1){grid-area:1/1/2/2}
  .expenses-invoice summary>span:nth-child(2){grid-area:1/2/2/3}
  .expenses-invoice summary>span:nth-child(3){grid-area:2/1/3/3;font-size:.72rem;color:var(--muted)}
  .expenses-invoice summary>span:nth-child(4){grid-area:2/3/3/4;font-size:.72rem;color:var(--muted);text-align:right}
  .expenses-invoice summary .num{grid-area:1/3/2/4}
  .expenses-invoice-actions{grid-area:1/4/3/5;align-items:center}
  .expenses-invoice-description{grid-area:3/1/4/5}
}
/* Celular: o valor desce para a segunda linha; o nome precisa da largura inteira. */
@media (max-width:640px){
  .expenses-kpis{grid-template-columns:1fr}
  .expenses-toolbar .primary-button{margin-left:0}
  .expenses-invoice summary{grid-template-columns:74px minmax(0,1fr) 96px}
  .expenses-invoice summary>span:nth-child(1){grid-area:1/1/2/2}
  .expenses-invoice summary>span:nth-child(2){grid-area:1/2/2/3}
  .expenses-invoice-actions{grid-area:1/3/2/4}
  .expenses-invoice summary>span:nth-child(3){grid-area:2/1/3/2;text-align:left}
  .expenses-invoice summary>span:nth-child(4){grid-area:2/2/3/3;text-align:left}
  .expenses-invoice summary .num{grid-area:2/3/3/4}
  .expenses-invoice-description{grid-area:3/1/4/4}
}

/* Despesas 4.5.77: descrição do lançamento, gasto sem nota */
.expenses-invoice-row{display:grid;grid-template-columns:22px 1fr;gap:6px;align-items:start}
.expenses-invoice-row[hidden]{display:none}  /* 13/09/2026: o display:grid vencia o atributo hidden e o filtro não escondia as linhas */
.expenses-invoice-row>input[type=checkbox]{margin-top:12px}
.expenses-invoice-description{grid-column:1/-1;font-size:.75rem;color:var(--muted)}
.expenses-manual-tag{font-style:normal;background:var(--line);border-radius:4px;padding:0 5px;font-size:.7rem;margin-right:4px;white-space:nowrap}
.expenses-toolbar input[type=search]{flex:1;min-width:150px;padding:6px 8px;border:1px solid var(--line);border-radius:6px;font:inherit}
.expenses-form label{display:grid;gap:4px;font-size:.85rem;margin-bottom:8px}
.expenses-form input,.expenses-form select{padding:8px;border:1px solid var(--line);border-radius:6px;font:inherit}
.link-button{background:none;border:0;padding:0;color:var(--accent,#1a73e8);text-decoration:underline;cursor:pointer;font:inherit}

.expenses-list-head{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap;margin-bottom:6px}
.expenses-list-head h3{margin:0}
.expenses-list-actions{display:flex;gap:6px;flex-wrap:wrap}
.expenses-filter{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin:4px 0 10px;padding:8px 10px;border:1px solid var(--line,#e5e7eb);border-radius:10px;background:var(--surface-2,#f8fafc)}
.expenses-filter input[type=search]{flex:1 1 220px;min-width:160px}
.expenses-filter label{display:inline-flex;align-items:center;gap:4px;font-size:.85rem}
.expenses-filter input,.expenses-filter select{padding:6px 8px;border:1px solid var(--line,#d1d5db);border-radius:8px;font:inherit;background:#fff}

.expenses-report-current{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;padding:10px 12px;border:1px solid var(--line);border-radius:8px;margin:8px 0;background:var(--surface,#fafafa);font-size:.85rem}
.expenses-report-current small{color:var(--muted)}
.expenses-reports-list{margin:6px 0 10px;font-size:.85rem}
.expenses-reports-list summary{cursor:pointer;padding:6px 0}
.expenses-report-title{margin:0;font-size:1.3rem}
.expenses-report-title small{font-weight:normal;color:var(--muted);font-size:.85rem}
.expenses-view-button{padding:6px 14px;white-space:nowrap}

.expenses-assign-option{display:flex;gap:8px;align-items:center;padding:8px 10px;border:1px solid var(--line);border-radius:8px;margin-bottom:6px;font-size:.9rem;cursor:pointer}
.expenses-assign-option small{color:var(--muted)}
.expenses-assign-obra{display:grid;gap:4px;margin:4px 0 12px;font-weight:600;font-size:.9rem}
.expenses-assign-obra select{width:100%;max-width:100%;font-weight:400}
.expenses-assign-reports{display:grid}
/* 14/09/2026: .expenses-form label (display:grid) e .admin-dialog input (padding 12px) deixavam o radio enorme e acima do texto */
.admin-dialog .expenses-form .expenses-assign-option,.expenses-form .expenses-assign-option{display:flex;grid-template-columns:none;gap:10px;align-items:center;font-weight:600}
.admin-dialog .expenses-assign-option input[type=radio]{width:18px;height:18px;min-height:0;padding:0;margin:0;flex:0 0 auto;border-radius:50%}

.expenses-trash{background:none;border:0;padding:0 2px;margin-left:6px;cursor:pointer;font-size:1rem;vertical-align:middle;opacity:.7}
.expenses-trash:hover{opacity:1}

.expenses-items-scroll{max-height:calc(6 * 2.35rem);overflow-y:auto;border-bottom:1px solid var(--line)}
.expenses-hint{font-weight:normal;color:var(--muted);font-size:.75rem;margin-left:6px}

.expenses-filter{display:flex;gap:6px;align-items:center;font-size:.85rem}
.expenses-filter select{padding:6px 8px;border:1px solid var(--line);border-radius:6px;font:inherit}
.expenses-table td.negative{color:#b02c2c}
.expenses-dashboard-card{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap}
.expenses-kpis-4{grid-template-columns:repeat(4,1fr)}
@media (max-width:640px){.expenses-kpis-4{grid-template-columns:1fr 1fr}}
/* 12/09/2026: a janela é uma grade; tabela larga (Por obra) esticava as outras. Conteúdo não pode alargar a coluna. */
.expenses-dialog{min-width:0;overflow-x:hidden}
.expenses-dialog>*,.expenses-dialog [data-dash-body],.expenses-dialog [data-expenses-body],.expenses-dialog [data-expenses-screen],.expenses-dialog .expenses-section{min-width:0;max-width:100%}
.expenses-dialog .registry-scroll{max-width:100%}
.expenses-invoice-row{max-width:100%}
.expenses-table th{white-space:normal;line-height:1.2}
.expenses-table td.num,.expenses-table th.num{white-space:nowrap}
/* Dashboard em caixas (12/09/2026) */
.dash-cards{display:grid;gap:12px;margin:8px 0 18px}
.dash-cards.cols-2{grid-template-columns:repeat(2,1fr)}.dash-cards.cols-3{grid-template-columns:repeat(3,1fr)}.dash-cards.cols-4{grid-template-columns:repeat(4,1fr)}
.dash-cards.cols-5{grid-template-columns:repeat(auto-fit,minmax(196px,1fr));gap:10px}
.dash-cards article{border:1px solid var(--line);border-radius:12px;padding:14px 14px;background:#fff;display:flex;flex-direction:column;gap:4px;min-width:0}
.dash-cards article.dash-zero{opacity:.55}
.dash-cards article span{font-size:.8rem;color:var(--muted)}
.dash-cards article strong{font-size:clamp(1rem,1.45vw,1.3rem);white-space:nowrap;font-variant-numeric:tabular-nums;letter-spacing:-.01em}
.dash-cards article.dash-negativo strong{color:#b42318}.dash-cards article small{font-size:.75rem;color:var(--muted)}
.dash-cards article.dash-dark{background:#0f2340;color:#fff}.dash-cards article.dash-dark span,.dash-cards article.dash-dark small{color:#cfd8e3}.dash-cards article.dash-dark .dash-bar{background:#2a3f5f}
.dash-bar{height:8px;background:#eef1f4;border-radius:4px;overflow:hidden;margin-top:8px}.dash-bar span{display:block;height:100%;background:#1a73e8;min-width:2px}
.dash-pct{margin-top:2px}
.dash-obra strong{font-size:1.5rem}.dash-lines{margin-top:10px;display:grid;gap:6px}.dash-lines div{display:flex;justify-content:space-between;font-size:.9rem;border-top:1px solid var(--line);padding-top:6px}.dash-lines b{font-weight:600}
.dash-help{font-size:.85rem;color:var(--muted);margin:0 0 6px}
.dash-details{margin-top:8px;border-top:1px solid var(--line);padding-top:10px}.dash-details summary{cursor:pointer;font-weight:600;padding:6px 0}
.dash-scroll{max-height:270px;overflow-y:auto;padding-right:4px}
.expenses-dialog h3{margin:18px 0 4px}
@media(max-width:900px){.dash-cards.cols-5{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}.dash-cards.cols-4{grid-template-columns:repeat(2,1fr)}.dash-cards.cols-3{grid-template-columns:1fr 1fr}.dash-cards.cols-2{grid-template-columns:1fr}}
.dash-lines .dash-saldo{border-top:0;padding-top:8px}.dash-lines .dash-saldo b{font-size:1.05rem}
/* Livro financeiro ITC (12/09/2026) — tela do livro na Administração */
.livro-dialog{width:min(1080px,100%)}
.livro-tabs{display:flex;gap:2px;flex-wrap:wrap;border-bottom:1px solid var(--line);margin:8px 0 12px}
.livro-tabs button{border:0;background:none;padding:8px 11px;font-weight:700;color:var(--muted);cursor:pointer;border-bottom:3px solid transparent;font-size:.8rem}
.livro-tabs button.on{color:var(--blue);border-bottom-color:var(--cyan)}
.livro-toolbar{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin:6px 0 10px;font-size:.82rem}
.livro-toolbar select,.livro-toolbar input{padding:6px 9px;border:1px solid var(--line);border-radius:8px;background:#fff;font:inherit;font-size:.82rem}
.livro-scroll{max-height:62vh;overflow:auto;border:1px solid var(--line);border-radius:10px}
.livro-scroll table.expenses-table{min-width:900px}
.livro-scroll table.expenses-table th{position:sticky;top:0;background:#fff;z-index:1}
table.expenses-table td.num,table.expenses-table th.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
table.expenses-table td.wrap{white-space:normal;min-width:240px}
table.expenses-table tr.livro-total td{font-weight:800;background:#f4f7f8}
.livro-st{display:inline-block;font-size:.66rem;font-weight:800;padding:2px 6px;border-radius:6px;white-space:nowrap}
.livro-st-reemb{background:#fdf3d8;color:#7a5a00}.livro-st-conf{background:#e4eef7;color:#1f3864}.livro-st-ok{background:#e8f1de;color:#2f6a1c}.livro-st-pend{background:#fbe3dd;color:#9c0006}.livro-st-cinza{background:#f0f0f0;color:#555}.livro-st-roxo{background:#ede4f4;color:#4b2a6b}
.livro-check{display:grid;grid-template-columns:1fr auto auto;gap:12px;padding:7px 0;border-bottom:1px solid var(--line);font-size:.85rem;align-items:center}
.livro-check small{display:block;color:var(--muted);font-size:.74rem}
.livro-ok{display:inline-block;padding:2px 8px;border-radius:999px;background:#eaf8f1;color:#14764d;font-weight:800;font-size:.68rem}
.livro-warn{display:inline-block;padding:2px 8px;border-radius:999px;background:#fff4d8;color:#936d15;font-weight:800;font-size:.68rem}
.livro-bad{display:inline-block;padding:2px 8px;border-radius:999px;background:#fde3dd;color:#9c0006;font-weight:800;font-size:.68rem}
.livro-key{display:block;color:var(--muted);font-size:.7rem;font-family:ui-monospace,Menlo,monospace}
.livro-icons a,.livro-icons button{background:none;border:0;cursor:pointer;font-size:1rem;padding:0 3px;text-decoration:none}
.livro-neg{color:#b02c2c}.livro-pos{color:#14764d}
.livro-sync{margin:0 0 10px;font-size:.78rem;color:var(--muted);border-left:3px solid var(--brand,#1f7a5a);padding-left:10px}
.livro-sync-parado{border-left-color:#c8a227}
.livro-note{border:1px dashed var(--line);border-radius:10px;padding:10px 12px;font-size:.8rem;color:var(--muted);margin-top:12px}
.livro-detail dl{display:grid;grid-template-columns:180px 1fr;gap:6px 12px;font-size:.85rem;margin:0}.livro-detail dt{color:var(--muted);font-weight:600}.livro-detail dd{margin:0;overflow-wrap:anywhere}
@media(max-width:900px){.livro-tabs button{padding:7px 8px;font-size:.74rem}.livro-detail dl{grid-template-columns:1fr}}

/* Configurações (13/09/2026) — Rotina de mensagens e, na entrega 3, perfis de acesso */
.cfg-dialog{width:min(1100px,100%)}
.cfg-cabeca{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap;margin:6px 0 12px}
.cfg-cabeca h3{margin:0 0 4px}
.cfg-cabeca .admin-card-description{max-width:62ch;margin:0}
.cfg-tabela td{vertical-align:middle}
.cfg-tabela td.cfg-hora{font-variant-numeric:tabular-nums;white-space:nowrap;font-weight:600}
.cfg-sub{color:var(--muted);font-size:.75rem}
.cfg-acoes{white-space:nowrap;text-align:right}
.cfg-icone{background:none;border:0;padding:0 3px;cursor:pointer;font-size:1rem;opacity:.75}
.cfg-icone:hover{opacity:1}
.cfg-pill{display:inline-block;font-size:.7rem;padding:2px 8px;border-radius:20px;white-space:nowrap}
.cfg-pill.on{background:#e0f2ec;color:#0d7057}
.cfg-pill.off{background:var(--soft,#f1f3f5);color:var(--muted);border:1px solid var(--line)}
.cfg-pill.sys{background:#eef2ff;color:#3949ab}
.cfg-form{margin-top:16px;border:1px solid var(--line);border-radius:12px;padding:16px;background:var(--soft,#fafafa);display:flex;flex-direction:column;gap:12px}
.cfg-form h4{margin:0;font-size:1rem}
.cfg-grade{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px}
.cfg-form label{display:grid;gap:4px;font-size:.85rem}
.cfg-form input,.cfg-form select,.cfg-form textarea{padding:8px;border:1px solid var(--line);border-radius:6px;font:inherit;background:#fff}
.cfg-form textarea{resize:vertical;min-height:90px;line-height:1.4}
.cfg-form textarea[readonly]{background:var(--soft,#f1f3f5);color:var(--muted)}
.cfg-dias{border:1px solid var(--line);border-radius:8px;padding:8px 12px;display:flex;gap:14px;flex-wrap:wrap;background:#fff}
.cfg-dias[hidden]{display:none}  /* display:flex vence o atributo hidden — mesma pegadinha do filtro de notas */
.cfg-dias legend{font-size:.75rem;color:var(--muted);padding:0 4px}
.cfg-dias label{display:inline-flex;flex-direction:row;align-items:center;gap:5px;font-size:.85rem}
.cfg-dias input{width:auto}
.cfg-dica{font-size:.8rem;color:var(--muted);margin:0}
.cfg-dica code{background:var(--soft,#eef1f4);padding:1px 5px;border-radius:4px}
.cfg-botoes{display:flex;justify-content:flex-end;gap:8px}
.cfg-secundario{padding:8px 16px;border:1px solid var(--line);background:#fff;border-radius:8px;font:inherit;cursor:pointer}
@media (max-width:640px){.cfg-grade{grid-template-columns:1fr}}

/* Despesas, tela 1 (13/09/2026): Visualizar e Excluir lado a lado, mesma altura; notas sem relatório embaixo */
.expenses-report-actions{display:flex;gap:8px;align-items:center;justify-content:flex-end;flex-wrap:nowrap}
.expenses-report-actions .expenses-view-button,.expenses-report-actions .expenses-delete-button{min-height:38px;padding:6px 14px;white-space:nowrap;font:inherit;font-weight:600;border-radius:10px}
.expenses-delete-button{border:1px solid #efcaca;color:#a82929;background:#fff;cursor:pointer}
.expenses-delete-button:hover{border-color:#d96b6b;background:#fff5f5}
.expenses-unlinked{margin-top:22px;padding-top:14px;border-top:1px solid var(--line)}
.expenses-unlinked h3{display:flex;align-items:center;gap:8px}
.expenses-unlinked-actions{display:flex;gap:10px;align-items:center;justify-content:flex-end;flex-wrap:wrap;margin-top:10px}
.expenses-unlinked-actions label{display:flex;gap:8px;align-items:center;font-size:.85rem}
.expenses-unlinked-actions select{padding:7px 10px;border:1px solid var(--line);border-radius:8px;font:inherit;background:#fff;max-width:320px}
.expenses-pending-row td{color:var(--muted)}
/* table.expenses-table td tem vertical-align:top e especificidade maior: repetir o seletor completo */
table.expenses-table.expenses-reports-table td,.expenses-unlinked table.expenses-table td{vertical-align:middle}
.expenses-unlinked-actions label{white-space:nowrap}

/* Perfis e acessos (entrega 3, 13/09/2026) */
.cfg-empresas{display:flex;gap:6px;flex-wrap:wrap;margin:0 0 12px}
.cfg-empresas button{border:1px solid var(--line);background:#fff;border-radius:20px;padding:5px 14px;font:inherit;font-size:.85rem;cursor:pointer}
.cfg-empresas button.on{background:#0f2340;border-color:#0f2340;color:#fff}
.cfg-matriz th.cfg-perfil-col{text-align:center;text-transform:none;letter-spacing:0;font-size:.8rem;color:var(--ink,#16202b);min-width:120px;vertical-align:bottom}
.cfg-matriz th.cfg-perfil-col strong{display:block}
.cfg-matriz th.cfg-perfil-col .cfg-sub{display:block;font-weight:400}
.cfg-perfil-acoes{display:block;margin-top:2px}
.cfg-matriz td.cfg-celula{text-align:center}
.cfg-matriz td.cfg-celula input{width:18px;height:18px;cursor:pointer;accent-color:#0d7057}
.cfg-matriz td:first-child{position:sticky;left:0;background:#fff;min-width:230px}
.cfg-matriz tr.cfg-grupo td{background:var(--soft,#f4f7fa);font-size:.72rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:600;position:static}
.cfg-fora{color:var(--line,#cdd8e3);font-weight:600;cursor:help}
.cfg-pessoas-titulo{margin:18px 0 6px}
.cfg-pessoas select{padding:5px 8px;border:1px solid var(--line);border-radius:6px;font:inherit;background:#fff}
button[data-prf-salvar][disabled]{opacity:.5;cursor:default}
/* grade de perfis: o estilo geral de campos do diálogo (largura, padding, altura) não pode valer para a caixinha */
table.expenses-table.cfg-matriz td{vertical-align:middle;padding-top:7px;padding-bottom:7px}
.cfg-dialog .cfg-matriz td.cfg-celula input[type=checkbox]{width:18px;height:18px;min-height:0;min-width:0;padding:0;margin:0;display:inline-block;vertical-align:middle;box-shadow:none}
@media (max-width:640px){.cfg-matriz td:first-child{min-width:150px;max-width:170px;white-space:normal}.cfg-matriz th.cfg-perfil-col{min-width:92px}}

/* Extrato da fonte (13/09/2026): caixa de "Onde foi o dinheiro" clicável e a tela de extrato */
.dash-cards article.dash-clicavel{cursor:pointer;position:relative;transition:border-color .15s,box-shadow .15s,transform .15s}
.dash-cards article.dash-clicavel:hover{border-color:#1a73e8;box-shadow:0 6px 18px -10px rgba(15,35,64,.45);transform:translateY(-1px)}
.dash-cards article.dash-clicavel:focus-visible{outline:3px solid #1a73e8;outline-offset:2px}
.dash-ver-extrato{font-style:normal;font-size:.75rem;color:#1a73e8;font-weight:600;margin-top:6px;opacity:.75}
.dash-cards article.dash-clicavel:hover .dash-ver-extrato{opacity:1}
@media (prefers-reduced-motion:reduce){.dash-cards article.dash-clicavel{transition:none}.dash-cards article.dash-clicavel:hover{transform:none}}
.dash-extrato .expenses-list-head{align-items:flex-start}
.dash-extrato-titulo{margin:2px 0 2px;font-size:1.5rem}
.dash-extrato-resumo{margin-top:10px}
.dash-extrato-obras{font-size:.85rem;line-height:1.5;color:var(--ink,#16202b)}
table.expenses-table.dash-extrato-tabela td{vertical-align:middle}
.dash-extrato-tabela td.dash-acumulado{color:var(--muted);font-variant-numeric:tabular-nums}
.dash-extrato-tabela tfoot td{border-top:2px solid var(--line);border-bottom:0;font-size:.9rem}
/* Extrato no celular: cada nota vira um cartão — data e valor em cima, fornecedor no meio, obra/pagamento e acumulado embaixo */
@media (max-width:640px){
  .dash-extrato .registry-scroll{overflow-x:visible}
  table.expenses-table.dash-extrato-tabela{min-width:0}
  .dash-extrato-tabela thead{display:none}
  .dash-extrato-tabela tbody tr{display:grid;grid-template-columns:1fr auto auto;column-gap:10px;row-gap:2px;padding:10px 2px;border-bottom:1px solid var(--line)}
  .dash-extrato-tabela tbody td{border:0;padding:0}
  .dash-extrato-tabela tbody td:nth-child(1){grid-area:1/1/2/2;font-weight:600}
  .dash-extrato-tabela tbody td:nth-child(7){grid-area:1/2/2/3}
  .dash-extrato-tabela tbody td:nth-child(5){grid-area:1/3/2/4;font-weight:700}
  .dash-extrato-tabela tbody td:nth-child(3){grid-area:2/1/3/4}
  .dash-extrato-tabela tbody td:nth-child(2){grid-area:3/1/4/2;font-size:.75rem;color:var(--muted)}
  .dash-extrato-tabela tbody td:nth-child(4){grid-area:4/1/5/2;font-size:.75rem;color:var(--muted)}
  .dash-extrato-tabela tbody td.dash-acumulado{grid-area:3/2/5/4;font-size:.75rem;align-self:end;text-align:right}
  .dash-extrato-tabela tbody td.dash-acumulado::before{content:"acumulado ";font-weight:400}
  .dash-extrato-tabela tfoot tr{display:flex;justify-content:space-between;padding:10px 2px}
  .dash-extrato-tabela tfoot td{border:0;padding:0}
  .dash-extrato-tabela tfoot td:empty{display:none}
}
.dash-extrato-acoes{white-space:nowrap}
.dash-extrato-acoes .expenses-trash{margin-left:8px}
.expenses-manual-tag.expenses-sem-imagem{background:#fdf1e7;color:#9a4a12}

/* 14/09/2026 — Entrar com Face ID */
.face-id-button{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;min-height:50px;padding:12px 16px;border:1.5px solid var(--ink,#071d32);border-radius:12px;background:#fff;color:var(--ink,#071d32);font:inherit;font-weight:750;cursor:pointer}
.face-id-button[hidden],.login-divider[hidden]{display:none}
.face-id-button:disabled{opacity:.6;cursor:progress}
.face-id-button:focus-visible{outline:3px solid var(--cyan,#19a7ce);outline-offset:2px}
.face-id-icon{width:24px;height:24px;flex:0 0 auto}
.login-divider{display:flex;align-items:center;gap:10px;margin:0;color:var(--muted);font-size:.78rem}
.login-divider::before,.login-divider::after{content:"";flex:1;height:1px;background:var(--line)}
.face-id-perfil{display:grid;gap:8px;padding:14px;border:1px solid var(--line);border-radius:12px}
.face-id-perfil strong{font-size:.9rem}
.face-id-hint{margin:0;color:var(--muted);font-size:.8rem}
.face-id-lista{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.face-id-lista li{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:.88rem}
.face-id-lista li span{display:grid;gap:2px}
.face-id-lista small{color:var(--muted);font-size:.72rem}
.face-id-ativar{justify-self:start}

/* 14/09/2026 — extrato com uma linha por item: a nota começa com linha mais marcada; itens seguintes e ajuste mais leves */
.dash-extrato-tabela tr.dash-extrato-nota-inicio td{border-top:2px solid var(--line)}
.dash-extrato-tabela tr.dash-extrato-item-seguinte td{border-top:1px dashed var(--line)}
.dash-extrato-tabela tr.dash-extrato-item-seguinte td:nth-child(-n+2),.dash-extrato-tabela tr.dash-extrato-item-seguinte td:nth-child(4){color:var(--muted)}
.dash-extrato-tabela tr.dash-extrato-ajuste strong{font-weight:600;font-style:italic;color:var(--muted)}

/* 14/09/2026 — Caderno de RDOs */
.caderno-rdo{position:fixed;inset:0;z-index:10030;display:flex;flex-direction:column;background:var(--bg,#f4f7f9);color:var(--ink,#071d32)}
.caderno-barra{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 16px;background:#fff;border-bottom:1px solid var(--line)}
.caderno-barra strong{font-size:.95rem}
.caderno-conteudo{flex:1;overflow:auto;padding:24px 16px 60px}
.caderno-conteudo>*{max-width:980px;margin-left:auto;margin-right:auto}
.caderno-capa{display:grid;gap:6px;padding:24px;border-radius:16px;background:var(--ink,#071d32);color:#fff}
.caderno-capa .eyebrow{color:#7fd3f0;margin:0}
.caderno-capa h1{margin:0;font-size:clamp(1.6rem,4vw,2.3rem);text-wrap:balance}
.caderno-capa p{margin:0;color:#c9dbe6}
.caderno-periodo{font-weight:700;color:#fff !important}
.caderno-totais{display:flex;flex-wrap:wrap;gap:8px 18px;margin-top:8px}
.caderno-totais strong{font-size:1.3rem;font-variant-numeric:tabular-nums}
.caderno-indice{position:sticky;top:-24px;z-index:2;display:flex;flex-wrap:wrap;gap:6px;margin-top:16px;padding:10px 0;background:var(--bg,#f4f7f9)}
.caderno-indice a{padding:5px 10px;border:1px solid var(--line);border-radius:999px;background:#fff;color:var(--ink,#071d32);font-size:.8rem;font-weight:700;text-decoration:none;font-variant-numeric:tabular-nums}
.caderno-indice a:focus-visible{outline:3px solid var(--cyan,#19a7ce);outline-offset:2px}
.caderno-dia{display:grid;gap:10px;margin-top:18px;padding:20px;border:1px solid var(--line);border-radius:14px;background:#fff;scroll-margin-top:60px}
.caderno-dia-topo{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px}
.caderno-dia-topo h2{display:grid;margin:0;font-size:1.35rem;font-variant-numeric:tabular-nums}
.caderno-dia-topo h2 small{font-size:.72rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.caderno-avanco{margin:0;font-size:.9rem}
.caderno-resumo{margin:0;padding-left:18px;display:grid;gap:3px;font-size:.9rem}
.caderno-vazio,.caderno-encerramento{margin:0;color:var(--muted);font-size:.85rem}
.caderno-fotos{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:10px}
.caderno-fotos figure,.caderno-videos figure{margin:0;display:grid;gap:4px}
.caderno-fotos button{padding:0;border:0;border-radius:10px;overflow:hidden;background:#dfe7ec;cursor:zoom-in;aspect-ratio:3/4}
.caderno-fotos img{width:100%;height:100%;object-fit:cover;display:block}
.caderno-fotos figcaption,.caderno-videos figcaption{font-size:.75rem;color:var(--muted)}
.caderno-videos{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:10px}
.caderno-videos video{width:100%;max-height:320px;border-radius:10px;background:#000}
.caderno-rodape{margin-top:20px;color:var(--muted);font-size:.75rem;text-align:center}
.caderno-foto-ampliada{position:fixed;inset:0;z-index:10060;display:grid;place-items:center;padding:16px;background:rgba(2,14,24,.9);cursor:zoom-out}
.caderno-foto-ampliada img{max-width:100%;max-height:92vh;border-radius:8px}
.caderno-foto-ampliada button{position:absolute;top:12px;right:16px;border:0;background:none;color:#fff;font-size:2rem}
@media print{
  body.caderno-aberto>*:not(.caderno-rdo){display:none !important}
  .caderno-rdo{position:static;display:block;background:#fff}
  .caderno-conteudo{overflow:visible;padding:0}
  .caderno-barra,.caderno-indice,.caderno-videos video,.caderno-dia-topo .secondary-button{display:none !important}
  .caderno-capa{background:#fff;color:#000;border:1px solid #999}
  .caderno-capa p,.caderno-capa .eyebrow,.caderno-periodo{color:#000 !important}
  .caderno-dia{break-before:page;border:0;padding:0}
  .caderno-fotos{grid-template-columns:repeat(2,1fr)}
  .caderno-fotos button{aspect-ratio:auto}
  .caderno-fotos img{height:auto;max-height:120mm;object-fit:contain}
  .caderno-fotos figure{break-inside:avoid}
}
@media (max-width:560px){
  .caderno-barra strong{display:none}
  .caderno-barra .primary-button,.caderno-barra .secondary-button{padding:8px 12px;font-size:.85rem;min-height:40px}
  .caderno-conteudo{padding:14px 12px 50px}
  .caderno-capa,.caderno-dia{padding:16px}
  .caderno-fotos{grid-template-columns:repeat(2,1fr)}
}

/* 15/09/2026 — medição dentro do caderno (documento único no ASAS) */
.caderno-medicao{display:grid;gap:12px;margin-top:18px;padding:20px;border:1px solid var(--line);border-radius:14px;background:#fff;scroll-margin-top:60px}
.caderno-medicao-cartoes{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.caderno-medicao-cartoes article{display:grid;gap:2px;padding:12px 14px;border:1px solid var(--line);border-radius:10px}
.caderno-medicao-cartoes article:first-child{background:var(--ink,#071d32);color:#fff;border-color:var(--ink,#071d32)}
.caderno-medicao-cartoes span{font-size:.72rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;opacity:.8}
.caderno-medicao-cartoes strong{font-size:1.15rem;font-variant-numeric:tabular-nums;white-space:nowrap}
.caderno-medicao-tabela td.num,.caderno-medicao-tabela th.num{white-space:nowrap;font-variant-numeric:tabular-nums}
@media (max-width:560px){.caderno-medicao{padding:16px}.caderno-medicao-cartoes{grid-template-columns:1fr}}
@media print{.caderno-medicao{border:0;padding:0}.caderno-medicao .secondary-button{display:none !important}.caderno-medicao-cartoes article:first-child{background:#fff;color:#000;border-color:#999}.caderno-medicao .registry-scroll{overflow:visible}}

/* 15/09/2026 — aprovação do cliente e navegação entre medições no caderno */
.caderno-aviso{margin-top:14px;padding:12px 16px;border:1px solid var(--line);border-radius:12px;background:#fff;font-size:.9rem}
.caderno-aviso-pendente{border-color:#e7b54a;background:#fff7e2;color:#5a3f05}
.caderno-aviso-pendente a{font-weight:700;color:#5a3f05}
.caderno-aviso-ok{border-color:#7cc4a0;background:#eefaf3;color:#0f5132}
.caderno-medicoes{display:flex;flex-wrap:wrap;gap:6px}
.caderno-medicoes button,.caderno-medicoes span{padding:5px 10px;border:1px solid var(--line);border-radius:999px;background:#fff;color:var(--ink,#071d32);font:inherit;font-size:.8rem;font-weight:700;font-variant-numeric:tabular-nums;cursor:pointer}
.caderno-medicoes span{background:var(--ink,#071d32);color:#fff;border-color:var(--ink,#071d32);cursor:default}
.caderno-medicao-cartoes{grid-template-columns:repeat(3,1fr)}
.caderno-medicao-cartoes article:first-child{background:#fff;color:inherit;border-color:var(--line)}
.caderno-medicao-cartoes article.destaque{background:var(--ink,#071d32);color:#fff;border-color:var(--ink,#071d32)}
.caderno-medicao-cartoes small{font-size:.72rem;opacity:.75}
.caderno-aprovacao{display:grid;gap:10px;margin-top:18px;padding:20px;border:2px solid var(--ink,#071d32);border-radius:14px;background:#fff;scroll-margin-top:60px}
.caderno-aprovacao h2{margin:0;font-size:1.2rem}
.caderno-aprovacao p{margin:0}
.caderno-aprovacao .primary-button{justify-self:start}
@media (max-width:760px){.caderno-medicao-cartoes{grid-template-columns:repeat(2,1fr)}}
@media (max-width:420px){.caderno-medicao-cartoes{grid-template-columns:1fr}}
@media print{.caderno-aviso,.caderno-medicoes,.caderno-aprovacao .primary-button{display:none !important}.caderno-medicao-cartoes article.destaque{background:#fff;color:#000;border-color:#999}}

/* 15/09/2026 — cinco cartões (ordem da Joyce), cabeçalho em tabela com a versão digital, tabela de vídeos no PDF salvo */
.caderno-medicao-cartoes{grid-template-columns:repeat(5,minmax(0,1fr))}
.caderno-medicao-cartoes strong{font-size:1.05rem}
.caderno-cabecalho{width:100%;margin-top:6px;border-collapse:collapse;font-size:.88rem}
.caderno-cabecalho th,.caderno-cabecalho td{padding:5px 0;border-top:1px solid rgba(255,255,255,.16);text-align:left;vertical-align:top}
.caderno-cabecalho th{width:9.5rem;padding-right:12px;font-size:.72rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:#7fd3f0}
.caderno-cabecalho td{color:#fff}
.caderno-cabecalho td.caderno-periodo{font-weight:700}
.caderno-cabecalho a{display:inline-block;max-width:calc(100% - 7rem);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;vertical-align:bottom;color:#fff}
.caderno-copiar{margin-left:6px;padding:2px 10px;border:1px solid rgba(255,255,255,.5);border-radius:999px;background:transparent;color:#fff;font:inherit;font-size:.75rem;font-weight:700;cursor:pointer}
.caderno-copiar:focus-visible{outline:3px solid #7fd3f0;outline-offset:2px}
.caderno-videos-tabela{display:none;width:100%;border-collapse:collapse;font-size:.85rem}
.caderno-videos-tabela caption{text-align:left;font-weight:700;padding-bottom:4px}
.caderno-videos-tabela th,.caderno-videos-tabela td{padding:4px 8px;border:1px solid #999;text-align:left;vertical-align:top}
.caderno-videos-tabela td:first-child{white-space:nowrap;font-variant-numeric:tabular-nums}
.caderno-video-alvo{outline:4px solid var(--cyan,#19a7ce);outline-offset:3px}
@media (max-width:900px){.caderno-medicao-cartoes{grid-template-columns:repeat(2,minmax(0,1fr))}.caderno-medicao-cartoes article.destaque{grid-column:1/-1}}
@media (max-width:420px){.caderno-medicao-cartoes{grid-template-columns:1fr}.caderno-cabecalho th{width:6.5rem}}
@media print{
  .caderno-medicao-cartoes{grid-template-columns:repeat(5,minmax(0,1fr))}
  .caderno-medicao-cartoes article.destaque{grid-column:auto}
  .caderno-medicao-cartoes strong{font-size:.9rem}
  .caderno-cabecalho th,.caderno-cabecalho td{border-top-color:#ccc}
  .caderno-cabecalho th,.caderno-cabecalho td,.caderno-cabecalho a{color:#000 !important;transition:none}
  .caderno-cabecalho a{display:inline;max-width:none;white-space:normal;overflow-wrap:anywhere}
  .caderno-copiar,.caderno-videos{display:none !important}
  .caderno-videos-tabela{display:table;break-inside:avoid}
  .caderno-videos-tabela a{color:#000}
}

/* 15/09/2026 — anexar recibo / apagar imagem na linha do lançamento */
.nota-midia{display:inline-flex;flex-wrap:wrap;align-items:center;gap:4px}
.expenses-recibo-botao{padding:1px 8px;border:1px solid var(--line);border-radius:999px;background:#fff;color:var(--ink);font:inherit;font-size:.7rem;font-weight:700;line-height:1.6;white-space:nowrap;cursor:pointer}
.expenses-recibo-botao:hover{border-color:var(--cyan)}
.expenses-recibo-botao:focus-visible{outline:3px solid var(--cyan);outline-offset:2px}
.expenses-recibo-botao[data-recibo-apagar]{color:#9a2a12}
.expenses-recibo-botao:disabled{opacity:.5;cursor:wait}
@media print{.expenses-recibo-botao{display:none !important}}
.dash-extrato-acoes{white-space:normal}
.dash-extrato-acoes .nota-midia{display:flex;flex-direction:column;align-items:flex-start}
.dash-extrato-acoes .expenses-trash{margin:4px 0 0}
/* linha do relatório (grade de colunas fixas): a coluna das ações cresce e quebra linha; no celular só o ícone */
.expenses-invoice summary{grid-template-columns:78px minmax(0,1fr) 122px 74px 104px 172px}
.expenses-invoice-actions{flex-wrap:wrap;row-gap:4px}
@media (max-width:900px){.expenses-invoice summary{grid-template-columns:74px minmax(0,1fr) 100px 124px}}
@media (max-width:640px){.expenses-invoice summary{grid-template-columns:74px minmax(0,1fr) 104px}.expenses-invoice-actions .recibo-rotulo{display:none}}

/* 16/09/2026 — Aceitar / Excluir na nota aguardando confirmação */
.expenses-pending-actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:6px;white-space:nowrap}
.expenses-pending-actions .primary-button,.expenses-pending-actions .danger-button{min-height:34px;padding:4px 14px;font-size:.8rem}

/* 16/09/2026 — Projetos da obra */
.projetos-dialog{max-width:980px;width:min(980px,100%)}
.projetos-envio{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;align-items:start;margin:8px 0 18px;padding:14px;border:1px solid var(--line);border-radius:12px}
.projetos-envio label{min-width:0}
.projetos-envio input{width:100%;max-width:100%;min-width:0;box-sizing:border-box}
.projetos-envio .admin-dialog-actions{grid-column:1/-1;margin:0}
.projetos-tabela td{vertical-align:top}
.projetos-quando{white-space:nowrap;font-variant-numeric:tabular-nums}
.projetos-acoes{display:flex;flex-wrap:wrap;gap:6px;justify-content:flex-end}
.projetos-acoes .secondary-button,.projetos-acoes .danger-button{min-height:34px;padding:4px 12px;font-size:.8rem;text-decoration:none;white-space:nowrap}
@media (max-width:760px){.projetos-envio{grid-template-columns:1fr}}

/* 16/09/2026 — valor em dinheiro não quebra linha no texto da aprovação */
.caderno-valor{white-space:nowrap;font-variant-numeric:tabular-nums}

/* 16/09/2026 — aprovação do cliente no início da medição (antes no fim do documento) */
.caderno-medicao .caderno-aprovacao{display:grid;gap:10px;margin:0;padding:16px 18px;border-width:2px;scroll-margin-top:60px}
.caderno-medicao .caderno-aprovacao p{margin:0;line-height:1.5}
.caderno-medicao .caderno-aprovacao .primary-button{justify-self:start;min-height:44px}
@media print{.caderno-medicao .caderno-aprovacao{display:grid !important;border:1px solid #999;background:#fff;color:#000}}
.caderno-medicao .caderno-aprovacao.caderno-aviso-pendente{border-color:#e7b54a;background:#fff7e2;color:#5a3f05}
.caderno-medicao .caderno-aprovacao.caderno-aviso-ok{border-color:#7cc4a0;background:#eefaf3;color:#0f5132}
.caderno-medicao .caderno-aprovacao:not(.caderno-aviso-pendente):not(.caderno-aviso-ok){border-color:var(--line)}

/* 19/09/2026 — Acessos da obra */
.acessos-dialog{max-width:980px;width:min(980px,100%)}
.acessos-filtros{display:flex;flex-wrap:wrap;gap:12px 20px;align-items:end;margin:6px 0 14px}
.acessos-filtros select{min-width:120px}
.acessos-so-clientes{display:flex;align-items:center;gap:8px;font-weight:600}
.acessos-secao{display:grid;gap:8px;margin-top:14px}
.acessos-secao h3{margin:0}
.acessos-dia,.acessos-horarios{white-space:nowrap;font-variant-numeric:tabular-nums}
.acessos-horarios{white-space:normal;max-width:260px}
.acessos-vezes{font-weight:700;font-variant-numeric:tabular-nums}
.acessos-so-clientes input[type=checkbox]{width:18px;height:18px;min-height:0;margin:0;padding:0;flex:none}
.acessos-filtros label.acessos-so-clientes{display:flex;flex-direction:row;align-items:center;gap:8px;padding-bottom:10px}

/* 19/09/2026 — Editar obra: valor pago pelo cliente em texto e campo de novo pagamento */
.pago-cliente{display:grid;gap:6px;padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:#f6fafb}
.pago-cliente-atual{margin:0;font-size:.9rem}
.pago-cliente-atual strong{white-space:nowrap;font-variant-numeric:tabular-nums;font-size:1.05rem}

/* 19/09/2026 — avisos de RDO pelo WhatsApp na tela Acessos */
.acessos-situacao{display:inline-block;padding:2px 8px;border-radius:999px;background:#eef2f5;font-size:.75rem;font-weight:700;white-space:nowrap}
.acessos-situacao.lido{background:#eefaf3;color:#0f5132}
.acessos-situacao.entregue{background:#fff7e2;color:#5a3f05}
/* 22/09/2026 (Joyce): cronograma que passa do prazo contratado sinaliza atraso no card. */
.metric-grid article.metric-atraso{border-color:#f0b4b4;background:#fdf3f3}
.metric-grid article.metric-atraso strong{color:#a11c1c}
.metric-grid article.metric-atraso small{color:#a11c1c;font-weight:650}
