:root{--green:#11733c;--green-dark:#075c2e;--green-soft:#e9f5ee;--red:#c3272b;--ink:#17211b;--muted:#66736b;--line:#dfe7e1;--surface:#fff;--bg:#f4f7f5;--shadow:0 12px 34px rgba(24,57,36,.08)}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.5 Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif}button,input,select,textarea{font:inherit}.topbar{height:76px;padding:0 max(24px,calc((100vw - 1180px)/2));display:flex;align-items:center;justify-content:space-between;background:#fff;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:5}.brand{display:flex;gap:12px;align-items:center;color:var(--ink);text-decoration:none}.brand span:last-child{display:flex;flex-direction:column}.brand strong{font-size:21px;letter-spacing:-.5px}.brand small{color:var(--muted);font-size:11px}.brand-mark{width:35px;height:38px;display:grid;grid-template-columns:repeat(3,9px);grid-template-rows:repeat(4,9px);gap:2px}.brand-mark i{background:var(--green);border-radius:2px}.brand-mark i:first-child{background:var(--red);border-radius:50%}.brand-mark i:nth-child(5){grid-row:3}.brand-mark i:nth-child(6){grid-row:4}.admin-link,.secondary{border:1px solid #b9c9bf;background:#fff;border-radius:9px;color:var(--green-dark);padding:10px 16px;font-weight:700;cursor:pointer}.admin-link:hover,.secondary:hover{background:var(--green-soft)}main{min-height:calc(100vh - 140px)}.teacher-view,.admin-view{max-width:1180px;margin:auto;padding:48px 24px 72px}.hero{text-align:center;max-width:700px;margin:0 auto 34px}.eyebrow{color:var(--green);font-size:12px;letter-spacing:1.4px;font-weight:800}.hero h1,.admin-heading h1{font-size:clamp(32px,5vw,48px);line-height:1.08;letter-spacing:-1.8px;margin:10px 0}.hero p,.admin-heading p{color:var(--muted);font-size:17px;margin:0}.teacher-grid{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(280px,.85fr);gap:24px;align-items:start}.card{background:var(--surface);border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow)}.ticket-form{padding:28px}.section-title{display:flex;gap:12px;align-items:center;margin:0 0 20px}.section-title:not(:first-child){margin-top:28px;padding-top:26px;border-top:1px solid var(--line)}.section-title>span{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:var(--green);color:white;font-weight:800}.section-title h2,.status-card h2,.queue h2{font-size:18px;margin:0}.section-title p,.status-card p{color:var(--muted);margin:1px 0 0;font-size:13px}.field-row{display:grid;grid-template-columns:.7fr 1.3fr;gap:14px}label{display:block;color:#334239;font-size:13px;font-weight:700;margin:14px 0}input,select,textarea{width:100%;border:1px solid #cdd9d1;border-radius:9px;background:#fff;color:var(--ink);padding:12px 13px;margin-top:7px;outline:none;transition:.2s}input:focus,select:focus,textarea:focus{border-color:var(--green);box-shadow:0 0 0 3px rgba(17,115,60,.12)}textarea{resize:vertical}.counter{display:block;text-align:right;color:var(--muted);font-weight:400;margin-top:3px}.primary{width:100%;border:0;border-radius:10px;padding:14px 20px;background:var(--green);color:#fff;font-weight:800;display:flex;justify-content:center;gap:10px;cursor:pointer;margin-top:22px;box-shadow:0 7px 18px rgba(17,115,60,.2)}.primary:hover{background:var(--green-dark)}.privacy{font-size:11px;text-align:center;color:var(--muted);margin:12px 0 0}.side-column{display:grid;gap:18px}.status-card{padding:28px;text-align:center}.status-icon{width:48px;height:48px;display:grid;place-items:center;margin:0 auto 14px;background:var(--green-soft);color:var(--green);border-radius:50%;font-size:27px}.protocol-search{display:flex;margin-top:22px}.protocol-search input{border-radius:9px 0 0 9px;margin:0}.protocol-search button{border:0;background:var(--green);color:#fff;border-radius:0 9px 9px 0;font-weight:700;padding:0 13px;cursor:pointer}.protocol-result{font-size:13px;margin-top:12px;color:var(--green-dark)}.my-tickets-owner{display:flex;justify-content:space-between;align-items:center;text-align:left;padding:10px 0;border-bottom:1px solid var(--line)}.my-tickets-owner span{font-size:10px;color:var(--muted)}.my-ticket-card{text-align:left;padding:13px 0;border-bottom:1px solid var(--line)}.my-ticket-card>div{display:flex;justify-content:space-between;align-items:center}.my-ticket-card h3{font-size:13px;margin:7px 0 4px}.my-ticket-card p{display:flex;flex-wrap:wrap;gap:5px 10px;color:var(--muted);font-size:10px;margin:0 0 6px}.my-ticket-card small{display:block;padding:7px 9px;background:var(--bg);border-radius:6px;color:var(--ink);font-size:10px}.my-tickets-empty{padding:18px 5px;color:var(--muted);text-align:center}.error-text{color:var(--red)}.service-note{padding:18px 20px;border-left:4px solid var(--green);background:var(--green-soft);border-radius:8px;display:flex;flex-direction:column}.service-note span{color:var(--muted);font-size:13px}.admin-heading{display:flex;align-items:end;justify-content:space-between;margin-bottom:28px}.admin-heading h1{font-size:38px}.metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:20px}.metrics article{background:#fff;border:1px solid var(--line);border-radius:14px;padding:18px;display:flex;align-items:center;gap:14px}.metrics article div{display:flex;flex-direction:column}.metrics small{color:var(--muted)}.metrics strong{font-size:24px}.metrics em{font-size:11px;color:var(--green);font-style:normal}.metric-icon{width:38px;height:38px;border-radius:9px;display:grid;place-items:center;font-weight:900}.metric-icon.red{background:#fdeced;color:#b52025}.metric-icon.amber{background:#fff3d8;color:#a46a00}.metric-icon.green{background:var(--green-soft);color:var(--green)}.metric-icon.blue{background:#e8f1fa;color:#2469a0}.dashboard-grid{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(310px,.75fr);gap:20px}.queue{overflow:hidden}.queue-head{padding:20px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center}.queue-head>div:first-child span{color:var(--muted);font-size:12px}.filters{display:flex;gap:8px}.filters input,.filters select{margin:0;padding:9px;font-size:12px}.ticket-list{max-height:620px;overflow:auto}.ticket-row{padding:17px 20px;border-bottom:1px solid var(--line);cursor:pointer;display:grid;grid-template-columns:1fr auto;gap:8px}.ticket-row:hover,.ticket-row.active{background:#f2f8f4}.ticket-row h3{font-size:14px;margin:4px 0}.ticket-meta{display:flex;flex-wrap:wrap;gap:6px 14px;color:var(--muted);font-size:11px}.ticket-id{font-size:11px;font-weight:800;color:var(--green)}.badge{display:inline-block;border-radius:99px;padding:4px 8px;font-size:10px;font-weight:800;height:max-content}.badge.waiting{background:#fff3d8;color:#8d5e00}.badge.active{background:#e8f1fa;color:#2469a0}.badge.done{background:var(--green-soft);color:var(--green)}.ticket-detail{padding:22px;min-height:420px}.detail-top{display:flex;justify-content:space-between;align-items:start}.ticket-detail h2{font-size:20px;margin:8px 0}.detail-data{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:20px 0}.detail-data div{background:var(--bg);padding:10px;border-radius:8px}.detail-data small{color:var(--muted);display:block}.detail-data strong{font-size:12px}.description-box{font-size:13px;border-left:3px solid var(--green);background:var(--green-soft);padding:12px;border-radius:5px}.ticket-detail label{margin-top:18px}.ticket-detail textarea{min-height:90px}.detail-actions{display:flex;gap:8px}.detail-actions button{flex:1}.toast{position:fixed;left:50%;bottom:25px;transform:translate(-50%,120px);opacity:0;transition:.3s;background:#153b25;color:#fff;padding:13px 18px;border-radius:9px;box-shadow:var(--shadow);z-index:10}.toast.show{transform:translate(-50%,0);opacity:1}footer{min-height:64px;padding:0 max(24px,calc((100vw - 1180px)/2));display:flex;align-items:center;justify-content:space-between;background:#0c3d23;color:#d9e8df;font-size:12px}@media(max-width:900px){.metrics{grid-template-columns:1fr 1fr}.dashboard-grid{grid-template-columns:1fr}.ticket-detail{min-height:auto}.teacher-grid{grid-template-columns:1fr}.side-column{grid-template-columns:1fr 1fr}}@media(max-width:620px){.topbar{height:66px;padding:0 16px}.brand small{display:none}.admin-link{font-size:12px;padding:8px 10px}.teacher-view,.admin-view{padding:30px 15px 54px}.hero{text-align:left;margin-bottom:22px}.hero h1{font-size:34px}.hero p{font-size:15px}.ticket-form,.status-card{padding:20px}.field-row{grid-template-columns:1fr}.side-column{grid-template-columns:1fr}.admin-heading{align-items:start;gap:16px}.admin-heading h1{font-size:30px}.admin-heading p{display:none}.metrics{grid-template-columns:1fr 1fr;gap:8px}.metrics article{padding:12px;gap:9px}.metric-icon{display:none}.metrics strong{font-size:20px}.dashboard-grid{display:block}.ticket-detail{margin-top:14px}.queue-head{align-items:start;gap:12px;flex-direction:column}.filters{width:100%;flex-direction:column}.ticket-list{max-height:none}.detail-data{grid-template-columns:1fr}.secondary{padding:8px 10px;font-size:12px}footer{padding:18px;display:grid;gap:4px}}

/* Meus chamados — painel de consulta */
.status-card{padding:28px 22px;overflow:hidden}.status-card .protocol-result{margin:20px -22px -28px;background:#f7faf8;border-top:1px solid var(--line);color:var(--ink)}.my-tickets-owner{display:grid;grid-template-columns:38px 1fr auto;gap:10px;align-items:center;padding:16px 18px;text-align:left;background:#fff;border-bottom:1px solid var(--line)}.owner-avatar{width:38px;height:38px;border-radius:11px;display:grid;place-items:center;background:var(--green);color:#fff;font-weight:900;font-size:16px}.my-tickets-owner>div:nth-child(2){display:flex;flex-direction:column;min-width:0}.my-tickets-owner>div:nth-child(2) span{font-size:8px;letter-spacing:1px;color:var(--muted);font-weight:800}.my-tickets-owner>div:nth-child(2) strong{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.my-tickets-owner em{font-size:9px;font-style:normal;font-weight:800;color:var(--green);background:var(--green-soft);padding:5px 8px;border-radius:99px}.my-tickets-list{padding:12px;display:grid;gap:10px}.my-ticket-card{padding:14px;background:#fff;border:1px solid var(--line);border-radius:11px;text-align:left;box-shadow:0 4px 12px rgba(24,57,36,.04)}.my-ticket-card header{display:flex;align-items:center;justify-content:space-between}.my-ticket-card header>strong{font-size:10px;letter-spacing:.5px;color:var(--green)}.my-ticket-card h3{font-size:14px;line-height:1.3;margin:10px 0 12px;color:var(--ink)}.my-ticket-meta{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}.my-ticket-meta span{display:flex;flex-direction:column;min-width:0;font-size:9px;color:#405047}.my-ticket-meta i{font-style:normal;font-size:8px;color:var(--muted);margin-bottom:2px}.my-ticket-card footer{min-height:auto;padding:9px 10px;margin-top:12px;background:var(--bg);border-radius:7px;color:var(--ink);display:flex;flex-direction:column;align-items:flex-start;gap:1px}.my-ticket-card footer span{font-size:8px;color:var(--muted);text-transform:uppercase;letter-spacing:.5px}.my-ticket-card footer strong{font-size:10px;font-weight:700}.my-tickets-empty{padding:30px 18px;display:flex;flex-direction:column;gap:4px;color:var(--muted);text-align:center}.my-tickets-empty strong{color:var(--ink);font-size:13px}.my-tickets-empty span{font-size:10px}@media(max-width:620px){.status-card .protocol-result{margin-left:-20px;margin-right:-20px;margin-bottom:-20px}.my-ticket-meta{grid-template-columns:1fr 1fr}.my-ticket-meta span:last-child{grid-column:1/-1}.my-tickets-owner{grid-template-columns:36px 1fr auto;padding:14px}.my-tickets-owner em{font-size:8px}}
/* Marca LabInfo TL */
.brand-new{gap:11px;min-width:0}.lab-symbol{width:38px;height:38px;flex:0 0 38px;padding:5px;display:grid;grid-template-columns:repeat(3,8px);grid-template-rows:repeat(3,8px);gap:2px;border-radius:11px;background:var(--green-soft)}.lab-symbol i{display:block;background:var(--green);border-radius:2px}.lab-symbol i:nth-child(1){grid-column:1}.lab-symbol i:nth-child(2){grid-column:2}.lab-symbol i:nth-child(3){grid-column:1;grid-row:2}.lab-symbol i:nth-child(4){grid-column:2;grid-row:2}.lab-symbol i:nth-child(5){grid-column:1;grid-row:3}.brand-new .brand-copy{display:grid!important;grid-template-columns:auto;line-height:1}.brand-new .brand-copy strong{font-size:20px;letter-spacing:-.7px;color:#173d28;white-space:nowrap}.brand-new .brand-copy strong b{font-weight:900;color:var(--green);margin-left:2px}.brand-new .brand-copy small{margin-top:5px;font-size:9px;line-height:1;text-transform:uppercase;letter-spacing:2.2px;font-weight:800;color:var(--muted)}.info-word{position:relative}.red-dot{position:absolute;width:5px;height:5px;border-radius:50%;background:var(--red);right:1.5px;top:-2px;box-shadow:0 0 0 2px #fff}@media(max-width:620px){.lab-symbol{width:34px;height:34px;flex-basis:34px;padding:4px}.brand-new .brand-copy small{display:block;font-size:8px}.brand-new .brand-copy strong{font-size:17px}}

.brand-new{gap:12px;height:44px;overflow:hidden}.brand-logo{display:block!important;width:168px!important;height:33px!important;min-width:0;max-width:168px!important;max-height:33px!important;object-fit:contain}.brand-system-name{padding-left:12px;border-left:1px solid var(--line);color:var(--muted);font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:1.5px}@media(max-width:620px){.brand-new{height:36px}.brand-logo{width:126px!important;height:25px!important;max-width:126px!important;max-height:25px!important}.brand-system-name{font-size:8px;padding-left:8px;letter-spacing:1px}}

.db-banner{padding:7px 14px;background:#fff3d8;color:#684800;text-align:center;font-size:11px}.db-banner code{font-weight:800}.login-card{width:min(430px,100%);padding:26px}.login-error{min-height:18px;color:var(--red);font-size:12px}.login-card .primary{margin-top:8px}
.hours-card{padding:24px;max-width:760px}.hours-card h2{margin:5px 0}.hours-card>p{color:var(--muted);font-size:13px}.hours-grid{margin:22px 0}.hours-row{display:grid;grid-template-columns:150px 1fr 1fr;gap:14px;align-items:center;padding:12px 0;border-bottom:1px solid var(--line)}.hours-day{display:flex;align-items:center;gap:9px;font-weight:700}.hours-day input{width:auto;margin:0}.hours-row label{margin:0;font-size:11px}.hours-row input[type=time]{margin-top:4px}.hours-card .primary{width:auto}@media(max-width:620px){.hours-row{grid-template-columns:1fr 1fr}.hours-day{grid-column:1/-1}}
.empty-state-detail{min-height:360px;display:grid;place-content:center;text-align:center;color:var(--muted);padding:28px}.empty-state-detail strong{color:var(--ink);font-size:17px}.empty-state-detail p{max-width:280px;margin:6px auto;font-size:12px}
.admin-heading-actions{display:flex;align-items:center;gap:10px}.account-menu{position:relative}.account-button{height:46px;display:flex;align-items:center;gap:9px;padding:5px 10px 5px 6px;border:1px solid var(--line);border-radius:11px;background:#fff;color:var(--ink);cursor:pointer}.account-button>span:first-child{width:33px;height:33px;display:grid;place-items:center;border-radius:9px;background:var(--green);color:#fff;font-size:11px;font-weight:900}.account-button>span:nth-child(2){display:flex;flex-direction:column;align-items:flex-start;max-width:180px}.account-button strong{font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.account-button small{font-size:9px;color:var(--muted)}.account-button b{font-size:10px;color:var(--muted)}.account-dropdown{position:absolute;right:0;top:52px;width:240px;padding:7px;background:#fff;border:1px solid var(--line);border-radius:11px;box-shadow:var(--shadow);z-index:8}.account-dropdown>div{display:flex;flex-direction:column;padding:10px;border-bottom:1px solid var(--line);margin-bottom:5px}.account-dropdown>div strong{font-size:12px}.account-dropdown>div small{font-size:10px;color:var(--muted);overflow:hidden;text-overflow:ellipsis}.account-dropdown button{display:block;width:100%;padding:10px;border:0;border-radius:7px;background:#fff;text-align:left;color:var(--ink);cursor:pointer}.account-dropdown button:hover{background:var(--green-soft)}#accountLogout{color:var(--red)}@media(max-width:760px){.admin-heading{flex-wrap:wrap}.admin-heading-actions{width:100%;justify-content:space-between}.account-button>span:nth-child(2){max-width:130px}}
@media(max-width:620px){.admin-heading-actions{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px}.account-menu{min-width:0}.account-button{width:100%;min-width:0}.account-button>span:nth-child(2){min-width:0;max-width:none}.admin-heading-actions>.admin-menu{position:relative}}
.csv-import{padding:20px 22px;margin-bottom:18px;display:grid;grid-template-columns:1fr auto;gap:16px;align-items:center}.csv-import h2{font-size:18px;margin:4px 0}.csv-import p{font-size:12px;color:var(--muted);margin:0}.csv-actions{display:flex;gap:8px;align-items:center}.csv-file-button{display:inline-flex;margin:0;cursor:pointer}.csv-preview{grid-column:1/-1;padding-top:16px;border-top:1px solid var(--line)}.csv-summary{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}.csv-summary span{padding:6px 10px;border-radius:99px;background:var(--green-soft);color:var(--green-dark);font-size:11px;font-weight:800}.csv-summary .csv-error-count{background:#fdeced;color:#a51f23}.csv-table-wrap{max-height:260px;overflow:auto;border:1px solid var(--line);border-radius:9px}.csv-table{width:100%;border-collapse:collapse;font-size:11px}.csv-table th,.csv-table td{padding:9px 10px;text-align:left;border-bottom:1px solid var(--line)}.csv-table th{position:sticky;top:0;background:var(--bg);color:var(--muted)}.csv-row-error{background:#fff8f8}.csv-row-error td:last-child{color:var(--red)}.csv-import-button{width:auto;margin:14px 0 0 auto}.csv-help{font-size:11px;color:var(--muted);margin:10px 0 0}@media(max-width:700px){.csv-import{grid-template-columns:1fr}.csv-actions{align-items:stretch;flex-direction:column}.csv-actions .secondary{text-align:center}.csv-preview{grid-column:auto}.csv-import-button{width:100%}}
.field-hint.pending{color:#8d5e00;font-weight:700}input:not([readonly])+#teacherIdentity{color:#8d5e00}
.registry-actions{display:flex;align-items:center;gap:7px}.registry-actions .secondary{padding:7px 9px;font-size:11px}@media(max-width:620px){.registry-actions{align-items:stretch;flex-direction:column}.registry-actions button{width:100%}}
.multi-assignee{display:grid;gap:7px;margin-top:7px;padding:10px;border:1px solid #cdd9d1;border-radius:9px;background:#fff;max-height:190px;overflow:auto}.multi-assignee label{display:flex;align-items:center;gap:9px;margin:0;padding:7px 8px;border-radius:7px;font-size:12px;cursor:pointer}.multi-assignee label:hover{background:var(--green-soft)}.multi-assignee input{width:auto;margin:0}.multi-assignee .team-option{border-bottom:1px solid var(--line);padding-bottom:10px;margin-bottom:2px;font-weight:800}
.queue-actions{display:flex;align-items:center;gap:8px}.archive-tickets{width:auto;margin:0;padding:10px 14px;background:#fff;color:var(--green-dark);border:1px solid #b9c9bf;box-shadow:none}.archive-tickets:not(:disabled):hover{background:var(--green-dark);color:#fff;border-color:var(--green-dark)}.archive-tickets:disabled,.archive-tickets:disabled:hover{opacity:.45;cursor:not-allowed;background:#fff;color:var(--green-dark);border-color:#b9c9bf}.ticket-row{grid-template-columns:auto 1fr auto}.ticket-select{width:18px;height:18px;margin:3px 2px 0 0;accent-color:var(--green)}.detail-close{display:none}.description-box{white-space:pre-wrap;line-height:1.65}.ticket-detail textarea{min-height:150px}@media(min-width:901px){.ticket-detail.detail-expanded{position:fixed;inset:88px max(28px,calc((100vw - 1180px)/2)) 24px;z-index:18;overflow:auto;padding:34px 42px;box-shadow:0 24px 80px rgba(7,35,20,.28);border-radius:18px}.ticket-detail.detail-expanded .detail-close{display:grid;position:sticky;float:right;top:0;width:38px;height:38px;place-items:center;border:0;border-radius:50%;background:var(--bg);font-size:22px;cursor:pointer;z-index:2}.ticket-detail.detail-expanded .detail-data{grid-template-columns:repeat(4,1fr)}.ticket-detail.detail-expanded .description-box{font-size:15px;padding:20px;min-height:110px}.ticket-detail.detail-expanded .ticket-attachments img{width:150px;height:150px}.ticket-detail.detail-expanded .multi-assignee{max-height:240px;grid-template-columns:repeat(2,1fr)}.ticket-detail.detail-expanded textarea{min-height:190px}.queue-head{gap:16px}.queue-head .filters{margin-left:auto}body.detail-open{overflow:hidden}}@media(max-width:900px){.queue-actions{width:100%;flex-wrap:wrap}.queue-actions .queue-create,.queue-actions .archive-tickets{flex:1}.ticket-row{grid-template-columns:auto 1fr auto}}
@media(min-width:901px){#ticketsSection .dashboard-grid{grid-template-columns:1fr}#ticketsSection .ticket-detail:not(.detail-expanded){display:none}#ticketsSection .ticket-detail.detail-expanded{display:block}}
[hidden]{display:none!important}
@media(min-width:901px){.ticket-detail.detail-expanded{inset:84px max(28px,calc((100vw - 1180px)/2)) auto!important;max-height:calc(100vh - 108px);min-height:0!important;padding:28px 34px 32px!important}.ticket-detail.detail-expanded .detail-close{display:flex!important;position:absolute!important;float:none!important;right:34px;top:27px;width:auto!important;height:40px!important;padding:0 14px!important;gap:7px;border:1px solid var(--line)!important;border-radius:10px!important;background:var(--bg)!important;color:var(--ink);font-size:0!important;font-weight:800}.ticket-detail.detail-expanded .detail-close:before{content:'Fechar';font-size:12px}.ticket-detail.detail-expanded .detail-close:after{content:'×';font-size:20px;line-height:1}.ticket-detail.detail-expanded .detail-top{padding-right:220px;min-height:50px}.ticket-detail.detail-expanded .detail-top>.badge{position:absolute;right:145px;top:30px;padding:8px 13px;font-size:12px}.ticket-detail.detail-expanded .ticket-workflow{margin:18px 0}.ticket-detail.detail-expanded .workflow-step{min-width:130px;gap:7px;font-size:12px;font-weight:700}.ticket-detail.detail-expanded .workflow-step i{width:38px;height:38px;font-size:13px}.ticket-detail.detail-expanded .ticket-workflow>b{height:3px}.ticket-detail.detail-expanded .detail-data{margin:18px 0}.ticket-detail.detail-expanded .description-box{min-height:82px;margin:16px 0}.ticket-detail.detail-expanded .multi-assignee{max-height:180px}.ticket-detail.detail-expanded .detail-actions button{min-height:56px}.ticket-detail.detail-expanded .resolution-box{margin-bottom:0}}
.topbar-admin-actions{margin-left:auto;display:flex;align-items:center;gap:10px}.topbar-admin-actions .admin-menu{position:static}.topbar-admin-actions #adminMenuButton{display:none}.topbar-admin-actions #adminMenuDropdown,.topbar-admin-actions #adminMenuDropdown[hidden]{position:static;display:flex!important;align-items:center;gap:4px;width:auto;padding:0;border:0;border-radius:0;box-shadow:none;background:transparent}.topbar-admin-actions #adminMenuDropdown button{width:auto;padding:9px 10px;border-radius:8px;background:transparent;color:var(--green-dark);font-size:11px;font-weight:800;white-space:nowrap}.topbar-admin-actions #adminMenuDropdown button:hover{background:var(--green-soft)}.topbar-admin-actions .account-button{height:42px}.topbar .topbar-admin-actions+.admin-link{margin-left:8px;padding:9px 12px}.admin-heading>.admin-heading-actions{display:none}@media(max-width:1100px){.topbar{padding-left:16px;padding-right:16px}.topbar-admin-actions #adminMenuDropdown button{padding:8px 6px;font-size:10px}.topbar-admin-actions .account-button>span:nth-child(2){display:none}.topbar-admin-actions .account-button{padding-right:7px}.brand-system-name{display:none}}@media(max-width:760px){.topbar-admin-actions{max-width:calc(100vw - 220px);overflow-x:auto;gap:5px;scrollbar-width:none}.topbar-admin-actions::-webkit-scrollbar{display:none}.topbar-admin-actions .account-menu{order:2}.topbar-admin-actions .admin-menu{order:1}.topbar-admin-actions #adminMenuDropdown button{font-size:9px}.topbar .brand-logo{width:105px!important}.topbar .admin-link{padding:8px 10px;font-size:12px}}
.topbar-admin-actions #adminMenuDropdown .future-menu-button{display:flex;align-items:center;gap:5px;color:var(--muted);opacity:.72;cursor:not-allowed}.future-menu-button small{padding:2px 5px;border-radius:99px;background:var(--bg);font-size:7px;text-transform:uppercase;letter-spacing:.4px}.admin-view:not([hidden])~* .brand{cursor:pointer}
.archived-queue{margin-top:20px;overflow:hidden}.archived-queue summary{display:flex;align-items:center;justify-content:space-between;padding:18px 22px;cursor:pointer;list-style:none;user-select:none}.archived-queue summary::-webkit-details-marker{display:none}.archived-queue summary span{display:flex;flex-direction:column}.archived-queue summary strong{font-size:17px}.archived-queue summary small{color:var(--muted);font-size:11px;font-weight:400}.archived-queue summary b{width:30px;height:30px;display:grid;place-items:center;border-radius:50%;background:var(--green-soft);color:var(--green);font-size:18px;transition:transform .2s}.archived-queue[open] summary{border-bottom:1px solid var(--line)}.archived-queue[open] summary b{transform:rotate(180deg)}.archived-toolbar{padding:14px 20px;border-bottom:1px solid var(--line);background:#f8fbf9}.archived-toolbar input{max-width:380px;margin:0}.archived-queue .ticket-list{max-height:440px}.archived-ticket-row{grid-template-columns:1fr auto}.archived-readonly{display:flex;flex-direction:column;margin:14px 0;padding:11px 14px;border-left:4px solid var(--muted);border-radius:7px;background:var(--bg)}.archived-readonly span{font-size:11px;color:var(--muted)}
.ticket-history{margin:20px 0}.ticket-history h3{margin:0 0 10px}.ticket-history article{padding:14px 16px;border-radius:12px;margin:8px 0;background:#f3f7f4;border-left:4px solid #087d3e}.ticket-history article.server-reply{background:#eef5ff;border-left-color:#2769a8}.ticket-history header{display:flex;justify-content:space-between;gap:12px;font-size:.86rem}.ticket-history time{color:#65736b;font-weight:400}.ticket-history p{white-space:pre-wrap;margin:8px 0 0;line-height:1.5}
.ticket-history .history-message.collapsed{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden}.history-toggle{margin:8px 0 0;padding:4px 0;border:0;background:transparent;color:var(--green-dark);font-weight:800;cursor:pointer}.server-reply .history-toggle{color:#195f9c}.history-toggle:hover{text-decoration:underline}
.feedback-confirmation{max-width:760px;margin:0 auto 22px;padding:18px 22px;display:flex;align-items:center;gap:14px;border-left:5px solid var(--green)}.feedback-confirmation>span{width:38px;height:38px;flex:0 0 auto;display:grid;place-items:center;border-radius:50%;background:var(--green);color:#fff;font-size:20px;font-weight:900}.feedback-confirmation strong{display:block}.feedback-confirmation p{margin:3px 0 0;color:var(--muted);font-size:12px}.feedback-confirmation.error-text{border-left-color:var(--red)}.feedback-confirmation.error-text>span{background:var(--red)}
.reservation-edit-modal{width:min(650px,100%);max-height:92vh;overflow:auto;padding:25px}.reservation-edit-modal .modal-actions .primary{width:auto}.reservation-row-actions [data-cancel-reservation]{color:#a51f23;border-color:#efc9cb}.reservation-row-actions .approve-reservation-button{border-color:var(--green);background:var(--green);color:#fff;box-shadow:0 5px 13px rgba(17,115,60,.16)}.reservation-row-actions .approve-reservation-button:hover{background:var(--green-dark)}.reservation-row-actions .approve-reservation-button.without-confirmation{border-color:#d58a00;background:#fff5dc;color:#875800;box-shadow:none}.reservation-row-actions .approve-reservation-button.without-confirmation:hover{background:#ffeab5}.reservation-row-actions .approve-reservation-button:disabled{opacity:.65;cursor:wait}.calendar-reservation{position:relative}.calendar-reservation:after{content:'Editar';position:absolute;right:5px;top:4px;padding:2px 5px;border-radius:5px;background:rgba(255,255,255,.88);color:var(--green-dark);font-size:8px;font-weight:800;opacity:0;transition:.15s}.calendar-reservation:hover:after{opacity:1}
.maintenance-card{padding:28px}.maintenance-head{display:flex;justify-content:space-between;align-items:flex-start;gap:18px}.maintenance-head h2{margin:5px 0}.maintenance-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-top:24px}.usage-card{padding:18px;border:1px solid #dce7df;border-radius:14px;background:#f8faf8}.usage-card>span,.usage-card>small,.usage-card>em{display:block;color:#65736b}.usage-card>strong{display:block;font-size:1.55rem;margin:7px 0}.usage-card>em{font-size:.75rem;margin-top:6px}.usage-bar{height:7px;background:#dfe8e2;border-radius:8px;margin-top:14px;overflow:hidden}.usage-bar i{display:block;height:100%;background:#07852a}.usage-card.warning .usage-bar i{background:#d66a00}.usage-card.danger .usage-bar i{background:#c62828}.maintenance-note{margin-top:20px;padding:16px;background:#f3f7f4;border-radius:12px}.maintenance-note p{margin:5px 0 0}@media(max-width:1000px){.maintenance-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:620px){.maintenance-head{display:block}.maintenance-head button{margin-top:12px}.maintenance-grid{grid-template-columns:1fr}}
.ticket-row.has-server-reply{background:#fff8ed;border-left:5px solid #d66a00}.server-reply-badge{display:inline-flex!important;width:max-content;margin-bottom:7px;padding:5px 9px;border-radius:999px;background:#d66a00;color:#fff!important;font-size:11px;font-weight:900}.server-reply-alert{display:flex;align-items:center;gap:12px;margin:14px 0;padding:13px 16px;border-radius:12px;background:#fff2df;border-left:5px solid #d66a00;color:#743800}.server-reply-alert strong{font-size:15px}.server-reply-alert span{font-size:13px}
.ticket-latest-event{display:block;min-width:0;margin-top:14px;padding:12px 14px;border-radius:11px;background:#f3f7f4}.ticket-latest-event>span{display:block;color:#65736b;font-size:11px;text-transform:uppercase;font-weight:800}.ticket-latest-event>strong{display:block;overflow-wrap:anywhere;margin-top:4px}.ticket-latest-event time{display:block;color:#65736b;font-size:12px;margin-top:3px}.ticket-details-toggle{display:block;margin-top:11px;border:0;background:transparent;color:#087d3e;font-weight:800;padding:5px 0}.public-ticket-timeline{width:100%;max-width:100%;box-sizing:border-box;margin-top:10px;padding:4px 4px 2px;overflow:hidden}.public-ticket-timeline>div{display:flex;width:100%;min-width:0;gap:11px;position:relative;padding:8px 0}.public-ticket-timeline i{width:10px;height:10px;margin-top:4px;border-radius:50%;background:#087d3e;flex:0 0 10px}.public-ticket-timeline span{display:block;min-width:0;max-width:100%}.public-ticket-timeline strong{display:block;overflow-wrap:anywhere;line-height:1.35}.public-ticket-timeline time{display:block;color:#65736b;font-size:12px;margin-top:3px;white-space:normal}.my-ticket-card{min-width:0;overflow:hidden}
.registry-head{flex-wrap:wrap}.delete-all-registry{border:1px solid #c62828;background:#fff;color:#a91f1f;border-radius:9px;padding:9px 12px;font-weight:800;cursor:pointer}.delete-all-registry:hover{background:#fff0f0}
.public-service-hours{margin-bottom:20px}.teacher-grid{grid-template-columns:minmax(0,1fr)}.teacher-grid>.ticket-form,.teacher-grid>.side-column{width:100%;min-width:0}.teacher-grid>.side-column{grid-template-columns:1fr}.teacher-grid .status-card{text-align:left}.teacher-grid .status-icon{margin-left:0}.teacher-grid .protocol-search{max-width:620px}@media(max-width:620px){.public-service-hours{margin-bottom:15px}.teacher-grid .status-card{text-align:center}.teacher-grid .status-icon{margin-left:auto}}
.toast{z-index:50}
.admin-processing{position:fixed;inset:0;z-index:80;display:grid;place-items:center;padding:20px;background:rgba(7,35,20,.44);backdrop-filter:blur(2px)}.admin-processing[hidden]{display:none}.admin-processing>div{min-width:250px;display:grid;justify-items:center;gap:7px;padding:24px 30px;border-radius:16px;background:#fff;box-shadow:0 24px 70px rgba(0,0,0,.2)}.admin-processing i{width:34px;height:34px;border:4px solid var(--green-soft);border-top-color:var(--green);border-radius:50%;animation:admin-spin .75s linear infinite}.admin-processing strong{font-size:17px}.admin-processing span{color:var(--muted);font-size:12px}@keyframes admin-spin{to{transform:rotate(360deg)}}body.is-processing{cursor:wait}
.delete-ticket-action,.delete-archived-ticket{border:1px solid #c62828;background:#fff;color:#a91f1f;border-radius:9px;padding:9px 12px;font-weight:800;cursor:pointer}.delete-ticket-action:disabled{opacity:.4;cursor:not-allowed}.delete-archived-ticket{align-self:center;margin-right:14px}.deletion-audit{margin-top:20px;padding:22px}.deletion-audit>div:first-child{margin-bottom:14px}.deletion-audit h2{margin:0}.deletion-audit>div>p{margin:3px 0;color:var(--muted)}.deletion-audit article{display:grid;grid-template-columns:.7fr 1.4fr 1.3fr .9fr;gap:10px;padding:13px 0;border-top:1px solid var(--line);align-items:center}.deletion-audit article p{grid-column:1/-1;margin:0;padding:8px 10px;background:#fff3f3;border-left:3px solid #c62828}.deletion-audit time{color:var(--muted);font-size:12px}@media(max-width:700px){.deletion-audit article{grid-template-columns:1fr}.deletion-audit article p{grid-column:auto}}
.ticket-row.ticket-received{background:#edf6ff;border-left:5px solid #2374b7}.ticket-row.ticket-progress{background:#fff8e8;border-left:5px solid #d58a00}.ticket-row.ticket-completed{background:#edf9f1;border-left:5px solid #168348}.ticket-row.ticket-waiting-reply{background:#fff1df!important;border-left-color:#e26b00!important;box-shadow:inset 0 0 0 1px #f3c17f}.ticket-row.ticket-received:hover{background:#e1f0ff}.ticket-row.ticket-progress:hover,.ticket-row.ticket-waiting-reply:hover{background:#ffeacb!important}.ticket-row.ticket-completed:hover{background:#e0f4e7}.ticket-row .badge{font-weight:900}.ticket-row.ticket-received .badge{background:#d8ecff;color:#155d96}.ticket-row.ticket-progress .badge{background:#ffebbd;color:#8d5900}.ticket-row.ticket-completed .badge{background:#d9f0e2;color:#086b37}@media(max-width:620px){.ticket-row{border-left-width:4px}.ticket-row .badge{justify-self:start}}
.feedback-confirmed-badge{display:inline-flex!important;width:max-content;margin:0 7px 7px 0;padding:5px 9px;border-radius:999px;background:#08783e;color:#fff!important;font-size:11px;font-weight:900}.feedback-confirmed-alert{display:flex;align-items:center;gap:12px;margin:14px 0;padding:13px 16px;border-radius:12px;background:#e7f7ed;border-left:5px solid #08783e;color:#075c2e}.feedback-confirmed-alert strong{font-size:15px}.feedback-confirmed-alert span{font-size:13px}

/* Portal e agenda de reservas */
.home-view{max-width:1060px;margin:auto;padding:72px 24px 100px;min-height:calc(100vh - 140px)}.home-hero{text-align:center;max-width:690px;margin:0 auto 38px}.home-hero h1{font-size:48px;line-height:1.08;margin:10px 0}.home-hero p{font-size:18px;color:var(--muted)}.service-choice-grid{display:grid;grid-template-columns:1fr 1fr;gap:22px}.service-choice{border:1px solid var(--line);padding:32px;text-align:left;cursor:pointer;color:var(--ink);font:inherit;transition:.2s}.service-choice:not(:disabled):hover{transform:translateY(-4px);border-color:var(--green);box-shadow:0 18px 45px rgba(17,115,60,.14)}.service-choice-icon{display:grid;width:58px;height:58px;place-items:center;border-radius:16px;background:var(--green-soft);font-size:28px;margin-bottom:22px}.service-choice small{display:block;color:var(--green);font-weight:900;letter-spacing:.08em}.service-choice strong{display:block;font-size:24px;margin:7px 0}.service-choice p{color:var(--muted);min-height:48px}.service-choice b{display:block;color:var(--green);margin-top:22px}.service-choice-disabled{opacity:.63;cursor:not-allowed}.service-choice-disabled .service-choice-icon{background:#eef1ef}.reservations-public-view{max-width:1180px;margin:auto;padding:48px 24px 90px}.reservation-public-head{display:flex;gap:22px;align-items:flex-start;margin-bottom:25px}.reservation-public-head .secondary{width:auto;margin-top:5px}.reservation-public-head h1{font-size:42px;margin:4px 0}.reservation-public-head p{color:var(--muted);margin:0}.reservation-public-grid{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(300px,.7fr);gap:22px}.reservation-form{padding:30px}.reservation-form .section-title:not(:first-child){margin-top:26px}.reservation-side{display:grid;align-content:start;gap:18px}.reservation-rules,.my-reservations{padding:24px}.reservation-rules h2,.my-reservations h2{font-size:19px;margin-top:0}.reservation-rules>div{display:flex;justify-content:space-between;padding:10px 0;border-bottom:1px solid var(--line)}.reservation-rules span,.reservation-rules small,.my-reservations>p{color:var(--muted)}.reservation-rules small{display:block;margin-top:14px}.reservation-confirmation{padding:20px 24px;margin-bottom:20px;border-left:5px solid var(--green)}.reservation-confirmation strong{font-size:18px}.public-reservation-item{padding:15px 0;border-bottom:1px solid var(--line)}.public-reservation-item header{display:flex;justify-content:space-between;gap:8px}.public-reservation-item h3{font-size:14px;margin:7px 0}.public-reservation-item p,.public-reservation-item small{font-size:11px;color:var(--muted)}.reservation-status{display:inline-flex;width:max-content;height:max-content;padding:5px 9px;border-radius:999px;font-size:10px;font-weight:900;background:#eef1ef;color:#536159}.status-autorizada{background:#dff3e7;color:#08733b}.status-cancelada{background:#fde6e7;color:#a91e25}.status-aguardando-confirmacao,.status-aguardando-autorizacao{background:#fff0c9;color:#855700}
.reservations-admin{min-width:0}.reservation-toolbar{display:flex;align-items:end;gap:10px;padding:16px;margin-bottom:15px}.reservation-toolbar>div{display:flex;align-items:center;gap:7px}.reservation-toolbar .secondary{padding:10px 13px}.reservation-toolbar strong{white-space:nowrap;margin-left:5px}.reservation-toolbar label{margin:0 0 0 auto;min-width:210px}.reservation-toolbar select{margin-top:3px;padding:9px}.reservation-toolbar .primary{width:auto;margin:0;padding:11px 16px;white-space:nowrap}.reservation-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:15px}.reservation-stats article{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;background:#fff;border:1px solid var(--line);border-radius:12px}.reservation-stats small{color:var(--muted)}.reservation-stats strong{font-size:25px}.reservation-calendar-wrap{overflow:auto;padding:0}.reservation-calendar{display:grid;grid-template-columns:76px repeat(6,minmax(145px,1fr));min-width:980px}.calendar-corner,.calendar-day{position:sticky;top:0;z-index:2;background:#f7faf8;border-bottom:1px solid var(--line);padding:12px;text-align:center}.calendar-day{display:flex;flex-direction:column}.calendar-day span{font-size:10px;color:var(--muted)}.calendar-time{padding:10px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);font-size:11px;font-weight:800;text-align:center;background:#fbfcfb}.calendar-cell{min-height:64px;padding:4px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);transition:.15s}.calendar-cell.drag-over{background:#dff3e7;box-shadow:inset 0 0 0 2px var(--green)}.calendar-reservation{padding:7px;border-radius:7px;background:#e5f4eb;border-left:4px solid var(--green);cursor:grab;box-shadow:0 3px 8px rgba(20,60,35,.08)}.calendar-reservation strong,.calendar-reservation span,.calendar-reservation small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.calendar-reservation strong{font-size:10px}.calendar-reservation span,.calendar-reservation small{font-size:9px;color:var(--muted)}.calendar-reservation.status-aguardando-confirmacao,.calendar-reservation.status-aguardando-autorizacao{background:#fff1d0;border-color:#d58a00}.reservation-list-card{margin-top:18px;overflow:hidden}.reservation-admin-row{display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:15px;padding:15px 20px;border-top:1px solid var(--line)}.reservation-admin-row h3{font-size:14px;margin:3px 0}.reservation-admin-row p{font-size:11px;color:var(--muted);margin:0}.reservation-row-actions{display:flex;gap:6px}.reservation-row-actions button{border:1px solid var(--line);background:#fff;border-radius:8px;padding:7px 10px;color:var(--green-dark);font-weight:800;cursor:pointer}.csv-reservation-modal{max-width:760px}.csv-summary,.csv-row{display:grid;grid-template-columns:100px 1fr 1.4fr;gap:8px;padding:9px;border-bottom:1px solid var(--line);font-size:11px}.csv-row small{grid-column:2/4;color:var(--green)}.csv-row.invalid{background:#fff1f1}.csv-row.invalid small{color:var(--red)}.#reservationCsvPreview{max-height:330px;overflow:auto}
@media(max-width:760px){.home-view{padding:44px 16px 70px}.home-hero{text-align:left}.home-hero h1{font-size:37px}.service-choice-grid{grid-template-columns:1fr}.service-choice{padding:24px}.service-choice p{min-height:0}.reservations-public-view{padding:28px 14px 65px}.reservation-public-head{display:block}.reservation-public-head .secondary{margin-bottom:18px}.reservation-public-head h1{font-size:34px}.reservation-public-grid{grid-template-columns:1fr}.reservation-form{padding:20px}.reservation-side{grid-row:2}.reservation-toolbar{align-items:stretch;flex-wrap:wrap}.reservation-toolbar>div{width:100%;justify-content:center}.reservation-toolbar label{margin:0;width:100%}.reservation-toolbar .primary,.reservation-toolbar>button{flex:1}.reservation-stats{gap:7px}.reservation-stats article{display:block;padding:12px}.reservation-admin-row{grid-template-columns:1fr auto}.reservation-row-actions{grid-column:1/3}.csv-summary,.csv-row{grid-template-columns:75px 1fr}.csv-row span:nth-of-type(2),.csv-row small{grid-column:1/3}}
#reservationCsvPreview{max-height:330px;overflow:auto}
.public-schedule-card{margin-top:24px;padding:24px;overflow:hidden}.public-schedule-head{display:flex;align-items:end;justify-content:space-between;gap:20px}.public-schedule-head h2{font-size:25px;margin:4px 0}.public-schedule-head p{color:var(--muted);margin:0}.public-schedule-head label{width:260px;margin:0}.public-week-navigation{display:flex;align-items:center;justify-content:center;gap:18px;margin:20px 0 14px}.public-week-navigation .secondary{padding:9px 13px}.public-schedule-scroll{overflow-x:auto;border:1px solid var(--line);border-radius:12px}.public-reservation-calendar .available-cell{background:#fbfdfc}.public-calendar-reservation{padding:7px;border-radius:7px;border-left:4px solid var(--green);background:#e5f4eb}.public-calendar-reservation.pending{border-color:#d58a00;background:#fff1d0}.public-calendar-reservation strong,.public-calendar-reservation span,.public-calendar-reservation small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.public-calendar-reservation strong{font-size:10px}.public-calendar-reservation span,.public-calendar-reservation small{font-size:9px;color:var(--muted)}.schedule-legend{display:flex;justify-content:flex-end;gap:18px;margin-top:13px;font-size:11px;color:var(--muted)}.schedule-legend span{display:flex;align-items:center;gap:6px}.schedule-legend i{width:10px;height:10px;border-radius:3px;background:#fff;border:1px solid var(--line)}.schedule-legend i.occupied{background:#e5f4eb;border-color:var(--green)}.schedule-legend i.pending{background:#fff1d0;border-color:#d58a00}
.reservations-public-view{display:flex;flex-direction:column}.reservations-public-view[hidden]{display:none}.reservation-public-head{order:1}.reservation-confirmation{order:2}.public-schedule-card{order:3;margin:0 0 20px}.reservation-form-toggle{order:4;width:100%;padding:18px 22px;display:flex;align-items:center;justify-content:space-between;border:1px solid #b9d2c2;background:#fff;color:var(--ink);cursor:pointer;text-align:left}.reservation-form-toggle>span{display:flex;align-items:center;gap:13px}.reservation-form-toggle i{width:38px;height:38px;display:grid;place-items:center;border-radius:10px;background:var(--green);color:#fff;font-size:24px;font-style:normal}.reservation-form-toggle strong,.reservation-form-toggle small{display:block}.reservation-form-toggle strong{font-size:17px}.reservation-form-toggle small{color:var(--muted);font-size:11px;margin-top:2px}.reservation-form-toggle b{color:var(--green-dark);font-size:12px}.reservation-form-toggle:hover{border-color:var(--green);background:#f9fcfa}.reservation-public-grid{order:5;display:block;margin-top:14px}.reservation-form{max-width:900px;margin:0 auto 20px}.reservation-side{display:grid;grid-template-columns:1fr 1fr;gap:18px}.reservation-side .reservation-rules,.reservation-side .my-reservations{height:100%}
@media(max-width:760px){.public-schedule-card{padding:18px 14px}.public-schedule-head{display:block}.public-schedule-head label{width:100%;margin-top:16px}.public-week-navigation{display:grid;grid-template-columns:1fr 1fr;gap:8px}.public-week-navigation strong{grid-column:1/3;grid-row:1;text-align:center}.public-week-navigation button{font-size:11px}.schedule-legend{justify-content:flex-start;flex-wrap:wrap}.public-reservation-calendar{min-width:980px}}
@media(max-width:760px){.reservation-form-toggle{padding:15px}.reservation-form-toggle small{max-width:210px}.reservation-form-toggle b{font-size:0}.reservation-form-toggle b:after{content:'↓';font-size:17px}.reservation-form-toggle[aria-expanded="true"] b:after{content:'↑'}.reservation-side{grid-template-columns:1fr}}

/* A altura visual acompanha a quantidade real de blocos de 45 minutos. */
.reservation-calendar .calendar-cell{position:relative;box-sizing:border-box;min-height:64px;overflow:visible}.reservation-calendar .calendar-reservation,.reservation-calendar .public-calendar-reservation{position:absolute;left:4px;right:4px;top:4px;z-index:2;min-height:calc(var(--reservation-rows,1) * 64px - 8px);height:calc(var(--reservation-rows,1) * 64px - 8px);overflow:hidden}.reservation-calendar .calendar-reservation:hover,.reservation-calendar .public-calendar-reservation:hover{z-index:4;box-shadow:0 7px 18px rgba(17,115,60,.18)}
.admin-route{min-height:100vh;background:linear-gradient(145deg,#eef5f1 0%,#f8faf9 52%,#e7f1eb 100%)}.admin-route main{min-height:calc(100vh - 76px)}.admin-route #homeView,.admin-route #teacherView,.admin-route #reservationsPublicView{display:none!important}.admin-route .topbar .admin-link{display:none}body.admin-route>footer{display:none}.admin-route .modal-backdrop{background:rgba(7,35,20,.58);-webkit-backdrop-filter:blur(7px);backdrop-filter:blur(7px)}.admin-route #loginModal .modal{box-shadow:0 24px 70px rgba(7,61,37,.18);border-top:5px solid var(--green)}
.admin-route #loginModal #closeLogin{display:none}

/* Janela de importacao da grade de reservas */
.admin-route #reservationCsvModal{background:rgba(7,35,20,.56);backdrop-filter:blur(3px)}
.csv-reservation-modal{width:min(820px,100%);max-width:820px;max-height:min(88vh,780px);padding:0;overflow:hidden;display:flex;flex-direction:column;border-radius:20px;box-shadow:0 28px 80px rgba(7,35,20,.24)}
.csv-modal-head{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;padding:25px 28px 20px;border-bottom:1px solid var(--line)}
.csv-modal-head h2{margin:5px 0 3px;font-size:25px;letter-spacing:-.4px}.csv-modal-head p{margin:0;color:var(--muted);font-size:12px}.csv-modal-head .modal-close{flex:0 0 auto}
.csv-modal-body{padding:20px 28px;overflow:auto}.csv-format-help{display:grid;gap:3px;padding:13px 15px;border-radius:11px;background:var(--green-soft);border-left:4px solid var(--green)}
.csv-format-help strong{font-size:12px;color:var(--green-dark)}.csv-format-help span{font-size:12px;font-weight:700}.csv-format-help small{color:var(--muted)}.csv-settings{grid-template-columns:1fr 1fr}
.csv-file-field{padding:14px;border:1px dashed #afc5b6;border-radius:11px;background:#fafcfb}.csv-file-field input{padding:9px;background:#fff}.csv-file-field small{display:block;margin-top:6px;color:var(--muted);font-weight:500}
.csv-summary{display:flex;gap:8px;position:sticky;top:0;z-index:1;padding:10px 0;background:#fff}.csv-summary strong,.csv-summary span{padding:6px 11px;border-radius:99px;font-size:11px}.csv-summary strong{background:var(--green-soft);color:var(--green-dark)}.csv-summary span{background:#fdeced;color:#a51f23;font-weight:800}
.csv-row{display:grid;grid-template-columns:65px minmax(130px,.8fr) minmax(230px,1.5fr);gap:7px 12px;padding:11px 12px;border:1px solid var(--line);border-radius:9px;margin-bottom:7px;font-size:11px;background:#fff}.csv-row>span:first-child{color:var(--muted)}.csv-row small{grid-column:2/4;color:var(--green);font-weight:600}.csv-row.invalid{background:#fff7f7;border-color:#f2d4d5}.csv-row.invalid small{color:var(--red)}
#reservationCsvPreview{max-height:300px;overflow:auto;margin-top:14px}.csv-preview-empty{display:grid;min-height:74px;place-items:center;border:1px dashed var(--line);border-radius:10px;color:var(--muted)}
.csv-modal-footer{padding:16px 28px 22px;border-top:1px solid var(--line);background:#fff}.csv-modal-footer .primary{margin:0}.csv-modal-footer .primary:disabled{background:#aab8b0;box-shadow:none;cursor:not-allowed}
.csv-import-progress{margin-bottom:12px}.csv-import-progress span{display:block;margin-bottom:6px;color:var(--muted);font-size:11px;font-weight:700}.csv-import-progress div{height:7px;overflow:hidden;border-radius:99px;background:#e6ede8}.csv-import-progress i{display:block;width:0;height:100%;border-radius:inherit;background:var(--green);transition:width .2s}.csv-import-errors{display:grid;gap:4px;margin-bottom:10px;padding:12px;border:1px solid #efc9cb;border-radius:9px;background:#fff4f4;color:#9d1d22}.csv-import-errors span{font-size:10px}
.choice-field{border:0;padding:0;margin:16px 0;min-width:0}.choice-field legend{padding:0;margin-bottom:8px;color:#334239;font-size:13px;font-weight:700}.choice-blocks{display:grid;gap:9px}.duration-choices{grid-template-columns:repeat(4,1fr)}.recurrence-choices{grid-template-columns:repeat(2,minmax(0,1fr))}.choice-block{min-height:62px;padding:10px 13px;border:1px solid #cdd9d1;border-radius:11px;background:#fff;color:var(--ink);text-align:left;cursor:pointer;transition:.16s}.choice-block:hover{border-color:#7eaa90;background:#f7fbf8}.choice-block.selected{border:2px solid var(--green);padding:9px 12px;background:var(--green-soft);box-shadow:0 0 0 3px rgba(17,115,60,.08)}.choice-block strong,.choice-block span{display:block}.choice-block strong{font-size:13px}.choice-block span{margin-top:2px;color:var(--muted);font-size:11px}.choice-block.selected strong{color:var(--green-dark)}.recurrence-row{grid-template-columns:1.35fr .65fr;align-items:end}.recurrence-row>.choice-field{margin-bottom:0}.recurrence-row>label{margin-bottom:0}
@media(max-width:760px){.csv-reservation-modal{max-height:94vh;border-radius:15px}.csv-modal-head{padding:20px 18px 15px}.csv-modal-head h2{font-size:21px}.csv-modal-body{padding:15px 18px}.csv-settings{grid-template-columns:1fr;gap:0}.csv-modal-footer{padding:13px 18px 17px}.csv-row{grid-template-columns:58px 1fr}.csv-row>span:nth-of-type(2),.csv-row small{grid-column:1/3}}
@media(max-width:620px){.duration-choices{grid-template-columns:repeat(2,1fr)}.recurrence-row{grid-template-columns:1fr}.recurrence-choices{grid-template-columns:1fr 1fr}}
.ticket-history .history-message.collapsed{
  display:block;
  max-height:4.5em;
  overflow:hidden;
}

/* Fluxo público de reservas: ação, escolha do espaço e agenda. */
.reservations-public-view .reservation-form-toggle{order:3;margin-bottom:14px}
.public-lab-picker{order:4;padding:24px;margin-bottom:14px}
.public-lab-picker-head h2{margin:4px 0;font-size:24px}.public-lab-picker-head p{margin:0;color:var(--muted)}
.public-lab-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px;margin-top:18px}
.public-lab-card{display:flex;flex-direction:column;justify-content:space-between;gap:12px;position:relative;min-height:148px;padding:18px;border:1.5px solid #dce8e0;border-radius:14px;background:#fff;color:var(--ink);text-align:left;cursor:pointer;box-shadow:0 1px 4px rgba(0,0,0,.03);transition:all .2s cubic-bezier(.16,1,.3,1)}
.public-lab-card:hover{transform:translateY(-2px);border-color:var(--green);box-shadow:0 10px 22px rgba(17,115,60,.1)}
.public-lab-card.selected{border:2px solid var(--green);background:linear-gradient(180deg,#f3f9f5 0%,#fff 100%);box-shadow:0 0 0 3px rgba(17,115,60,.12),0 8px 18px rgba(17,115,60,.06)}
.lab-card-header{display:flex;align-items:flex-start;gap:12px}
.public-lab-icon{width:40px;height:40px;min-width:40px;display:flex;align-items:center;justify-content:center;border-radius:10px;background:var(--green-soft);color:var(--green);font-size:18px;transition:all .2s ease}
.public-lab-card:hover .public-lab-icon{background:#daf0e1}
.public-lab-card.selected .public-lab-icon{background:var(--green);color:#fff}
.lab-card-title-group{display:flex;flex-direction:column;gap:3px;min-width:0;flex:1}
.lab-card-name{font-size:15.5px;font-weight:700;color:var(--ink);line-height:1.25;letter-spacing:-.01em;word-break:break-word}
.lab-card-location{font-size:12px;color:var(--muted);font-weight:500}
.lab-card-specs{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:2px}
.lab-spec-chip{display:inline-flex;align-items:center;gap:5px;padding:4px 8px;border-radius:7px;font-size:11.5px;font-weight:600;line-height:1.2;background:#f1f5f9;color:#334155;border:1px solid #e2e8f0}
.lab-spec-chip svg{opacity:.8;flex-shrink:0}
.lab-spec-pc{background:#f0fdf4;color:#166534;border-color:#bbf7d0}
.lab-spec-os{background:#f8fafc;color:#334155;border-color:#e2e8f0;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lab-card-footer{display:flex;align-items:center;justify-content:space-between;margin-top:auto;padding-top:10px;border-top:1px solid rgba(0,0,0,.05)}
.lab-card-status-badge{font-size:11px;font-weight:600;display:inline-flex;align-items:center;gap:4px}
.lab-card-status-badge.available{color:#15803d}
.lab-card-status-badge.active{color:#0d5c2e;font-weight:700}
.lab-card-action{display:inline-flex;align-items:center;gap:4px;font-size:12px;font-weight:700;color:var(--green);transition:transform .18s ease}
.public-lab-card:hover .lab-card-action{transform:translateX(3px)}
.public-lab-card.selected .lab-card-action{color:#0d5c2e;font-weight:800;transform:none}
.reservations-public-view .public-schedule-card{order:5}.reservations-public-view .reservation-public-grid{order:6}
.reservation-selected-lab{margin-bottom:15px;padding:13px 15px;border:1px solid #bad4c3;border-radius:11px;background:var(--green-soft)}.reservation-selected-lab strong,.reservation-selected-lab span{display:block}.reservation-selected-lab span{margin-top:3px;color:var(--muted);font-size:11px}
@media(max-width:620px){.public-lab-picker{padding:18px 14px}.public-lab-picker-head h2{font-size:21px}.public-lab-cards{grid-template-columns:1fr;gap:12px}.public-lab-card{min-height:auto;padding:16px}.reservations-public-view .reservation-form-toggle{position:relative;z-index:1}.public-schedule-card{scroll-margin-top:12px}}
.registry-actions{display:flex;align-items:center;gap:7px}.edit-lab-button{width:auto!important;padding:9px 14px!important}.cancel-lab-edit{margin-top:4px}
@media(max-width:620px){.registry-actions{align-items:stretch;flex-direction:column}.registry-actions button{width:100%!important}}
.reservation-time-row{grid-template-columns:1.15fr .8fr .8fr}.reservation-time-row input[type="time"]{font-variant-numeric:tabular-nums}
@media(max-width:620px){.reservation-time-row{grid-template-columns:1fr 1fr}.reservation-time-row label:first-child{grid-column:1/3}}
.reservation-pending-review{margin-bottom:15px;overflow:hidden;border:1px solid #efd39a;border-top:5px solid #d58a00}.reservation-pending-review[hidden]{display:none}.reservation-pending-head{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:18px 21px;background:#fffaf0;border-bottom:1px solid #efdcb6}.reservation-pending-head h2{margin:3px 0;font-size:21px}.reservation-pending-head p{margin:0;color:var(--muted);font-size:11px}.reservation-pending-head>strong{display:grid;min-width:42px;height:42px;place-items:center;border-radius:12px;background:#d58a00;color:#fff;font-size:20px}.reservation-pending-row{display:grid;grid-template-columns:minmax(260px,1fr) auto auto;align-items:center;gap:15px;padding:16px 21px;border-top:1px solid var(--line)}.reservation-pending-row:first-child{border-top:0}.reservation-pending-row h3{margin:4px 0;font-size:15px}.reservation-pending-row p{margin:0;color:var(--muted);font-size:11px}
@media(max-width:800px){.reservation-pending-row{grid-template-columns:1fr auto}.reservation-pending-row .reservation-row-actions{grid-column:1/3}.reservation-pending-row .reservation-row-actions button{flex:1}}
@media(max-width:540px){.reservation-pending-head{align-items:flex-start}.reservation-pending-row{grid-template-columns:1fr}.reservation-pending-row .reservation-status,.reservation-pending-row .reservation-row-actions{grid-column:1}.reservation-pending-row .reservation-row-actions{flex-direction:column}.reservation-pending-row .reservation-row-actions button{width:100%}}

/* Aviso de reservas pendentes na Central de Chamados. */
.reservation-review-notice{display:flex;align-items:center;justify-content:space-between;gap:24px;margin:0 0 24px;padding:20px 22px;border-left:5px solid #d58a00;background:linear-gradient(105deg,#fffaf0 0%,#fff 58%)}
.reservation-review-notice[hidden]{display:none}.reservation-review-heading{display:flex;align-items:center;gap:15px;min-width:280px}.reservation-review-icon{display:grid;flex:0 0 46px;width:46px;height:46px;place-items:center;border-radius:13px;background:#fff0c9;color:#a46600;font-size:23px}.reservation-review-heading h2{margin:3px 0;font-size:19px}.reservation-review-heading p{margin:0;color:var(--muted);font-size:11px}.reservation-review-statuses{display:flex;align-items:stretch;gap:10px}.reservation-review-status{display:grid;grid-template-columns:auto auto;column-gap:13px;min-width:195px;padding:11px 14px;border:1px solid var(--line);border-radius:11px;background:#fff}.reservation-review-status span{font-size:11px;font-weight:800}.reservation-review-status strong{grid-row:1/3;grid-column:2;align-self:center;font-size:25px}.reservation-review-status small{color:var(--muted);font-size:9px}.reservation-review-status.confirmed{border-color:#b9d9c5;background:#f2faf5}.reservation-review-status.confirmed strong{color:var(--green)}.reservation-review-status.unconfirmed{border-color:#efd39a;background:#fffaf0}.reservation-review-status.unconfirmed strong{color:#a46600}.reservation-review-statuses .primary{width:auto;margin:0;padding:11px 16px;white-space:nowrap}.has-pending-reservations:after{content:attr(data-pending);display:inline-grid;min-width:17px;height:17px;margin-left:5px;padding:0 4px;place-items:center;border-radius:99px;background:#d87900;color:#fff;font-size:9px}
@media(max-width:980px){.reservation-review-notice{align-items:stretch;flex-direction:column}.reservation-review-statuses{display:grid;grid-template-columns:1fr 1fr}.reservation-review-statuses .primary{grid-column:1/3}}
@media(max-width:620px){.reservation-review-notice{padding:17px 15px}.reservation-review-heading{align-items:flex-start;min-width:0}.reservation-review-heading h2{font-size:17px}.reservation-review-statuses{grid-template-columns:1fr}.reservation-review-statuses .primary{grid-column:1}.reservation-review-status{min-width:0}}

/* ==========================================================================
   Chat ao Vivo — Módulo de Atendimento Realtime e Chamados
   ========================================================================== */

.service-choice-grid{grid-template-columns:repeat(3,minmax(0,1fr))!important}
@media(max-width:980px){.service-choice-grid{grid-template-columns:1fr!important}}

.service-choice-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:4px}
.chat-status-badge{display:inline-flex;align-items:center;gap:5px;padding:3px 8px;border-radius:999px;font-size:10px;font-weight:800;letter-spacing:.3px}
.chat-status-badge.online{background:#dff3e7;color:#08733b}
.chat-status-badge.offline{background:#eef1ef;color:#6d7c73}

@keyframes chatPulse{
  0%{box-shadow:0 0 0 0 rgba(8,115,59,.7)}
  70%{box-shadow:0 0 0 6px rgba(8,115,59,0)}
  100%{box-shadow:0 0 0 0 rgba(8,115,59,0)}
}

/* Visão Pública de Chat */
.chat-public-view{max-width:1040px;margin:auto;padding:48px 24px 90px;display:flex;flex-direction:column}
.chat-public-head{display:flex;gap:20px;align-items:flex-start;margin-bottom:28px}
.chat-public-head .secondary{width:auto;margin-top:4px}
.chat-public-head h1{font-size:38px;line-height:1.1;margin:4px 0}
.chat-public-head p{color:var(--muted);margin:0;font-size:16px}

.chat-identify-card{max-width:680px;width:100%;margin:0 auto;padding:32px}
.chat-warning-banner{display:flex;align-items:center;gap:12px;margin:16px 0;padding:12px 16px;border-radius:10px;background:#fff8e8;border:1px solid #fedb99;font-size:12px;color:#7e5300}
.chat-warning-banner a{color:#075c2e;font-weight:700;text-decoration:underline}

/* Sala de espera */
.chat-waiting-card{max-width:580px;width:100%;margin:20px auto;padding:48px 32px;text-align:center;display:flex;flex-direction:column;align-items:center}
.chat-waiting-animation{position:relative;width:72px;height:72px;margin-bottom:20px;display:grid;place-items:center}
.waiting-icon{font-size:32px;z-index:2}
.waiting-ripple{position:absolute;inset:0;border:3px solid var(--green);border-radius:50%;animation:ripple 1.6s cubic-bezier(0,0.2,0.8,1) infinite}
@keyframes ripple{
  0%{transform:scale(0.6);opacity:1}
  100%{transform:scale(1.5);opacity:0}
}
.chat-waiting-card h2{font-size:24px;margin:8px 0}
.chat-waiting-card p{color:var(--muted);font-size:14px;max-width:420px;margin:0 auto 20px}
.chat-waiting-meta{display:grid;gap:6px;padding:14px 20px;border-radius:10px;background:var(--bg);border:1px solid var(--line);font-size:12px;width:100%;max-width:420px;margin-bottom:24px;text-align:left}
.chat-waiting-meta strong,.chat-waiting-meta em{font-style:normal;color:var(--ink)}

/* Sala Ativa de Chat */
.chat-active-card{max-width:880px;width:100%;margin:0 auto;display:flex;flex-direction:column;min-height:560px;overflow:hidden;border:1px solid var(--line)}
.chat-room-header{display:flex;align-items:center;justify-content:space-between;padding:16px 22px;background:#fbfdfc;border-bottom:1px solid var(--line)}
.chat-room-profile{display:flex;align-items:center;gap:12px}
.chat-tech-avatar{width:42px;height:42px;border-radius:12px;background:var(--green-soft);display:grid;place-items:center;font-size:20px}
.chat-room-profile strong{display:block;font-size:15px}
.chat-room-status{display:flex;align-items:center;gap:5px;font-size:11px;color:var(--green-dark);font-weight:700}
.live-dot{width:7px;height:7px;border-radius:50%;background:var(--green);display:inline-block}
.end-chat-btn{width:auto;margin:0;padding:8px 14px;font-size:12px;color:var(--red);border-color:#eccbcd}
.end-chat-btn:hover{background:#fff1f1}

.chat-messages-container{flex:1;min-height:360px;max-height:520px;overflow-y:auto;padding:22px;display:flex;flex-direction:column;gap:12px;background:#f8faf9}
.chat-bubble{max-width:76%;padding:11px 16px;border-radius:14px;font-size:13px;line-height:1.45;word-break:break-word;position:relative;animation:chatBubbleIn .18s ease-out}
@keyframes chatBubbleIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}

.chat-bubble.mine{align-self:flex-end;background:var(--green);color:#fff;border-bottom-right-radius:2px;box-shadow:0 3px 10px rgba(17,115,60,.14)}
.chat-bubble.mine .chat-bubble-meta{color:rgba(255,255,255,.82);text-align:right}
.chat-bubble.other{align-self:flex-start;background:#fff;color:var(--ink);border:1px solid var(--line);border-bottom-left-radius:2px;box-shadow:0 2px 6px rgba(0,0,0,.03)}
.chat-bubble.other .chat-bubble-meta{color:var(--muted)}
.chat-bubble.system{align-self:center;max-width:92%;background:#fff;border:1px dashed #b7cec1;color:var(--muted);font-size:11px;text-align:center;padding:7px 15px;border-radius:99px;margin:4px 0}
.chat-bubble-author{display:block;font-size:10px;font-weight:800;margin-bottom:3px;text-transform:uppercase;letter-spacing:.3px;opacity:.9}
.chat-bubble-text{white-space:pre-wrap}
.chat-bubble-meta{display:block;font-size:9px;margin-top:4px}

.chat-input-bar{display:flex;align-items:center;gap:10px;padding:14px 18px;background:#fff;border-top:1px solid var(--line)}
.chat-input-bar input{margin-top:0;padding:12px 14px}
.chat-send-btn{width:auto;margin-top:0;padding:12px 20px;white-space:nowrap}

/* Pós Atendimento */
.chat-ended-card{max-width:580px;width:100%;margin:20px auto;padding:44px 32px;text-align:center}
.chat-ended-icon{width:64px;height:64px;border-radius:50%;background:var(--green-soft);color:var(--green);font-size:32px;font-weight:900;display:grid;place-items:center;margin:0 auto 16px}
.chat-ended-card h2{font-size:25px;margin:6px 0}
.chat-ended-card p{color:var(--muted);font-size:13px;max-width:440px;margin:0 auto}
.chat-feedback-notice{display:flex;align-items:center;gap:14px;margin:22px auto;padding:16px 20px;background:#f3faf6;border:1px solid #cce8d7;border-left:4px solid var(--green);border-radius:12px;max-width:460px;text-align:left}
.chat-feedback-notice svg{flex-shrink:0;color:var(--green)}
.chat-feedback-notice strong{display:block;font-size:13px;color:var(--green-dark);margin-bottom:2px}
.chat-feedback-notice span{display:block;font-size:12px;color:var(--muted);line-height:1.4}
.chat-ended-actions{display:flex;gap:10px;justify-content:center;margin-top:24px}
.chat-ended-actions button{width:auto;margin:0}

/* Controles Técnicos no Topo */
.admin-top-controls{display:flex;align-items:center;gap:12px}
.staff-chat-toggle-wrap{display:flex;align-items:center;gap:8px;padding:6px 12px;background:#fff;border:1px solid var(--line);border-radius:99px}
.chat-toggle-label{font-size:12px;color:var(--muted)}
.chat-toggle-label strong{color:var(--ink)}
.switch-toggle{position:relative;display:inline-block;width:38px;height:22px;cursor:pointer}
.switch-toggle input{opacity:0;width:0;height:0;margin:0}
.toggle-slider{position:absolute;top:0;left:0;right:0;bottom:0;background:#ccd6cf;border-radius:22px;transition:.24s}
.toggle-slider:before{position:absolute;content:'';height:16px;width:16px;left:3px;bottom:3px;background:#fff;border-radius:50%;transition:.24s;box-shadow:0 1px 3px rgba(0,0,0,.2)}
.switch-toggle input:checked + .toggle-slider{background:var(--green)}
.switch-toggle input:checked + .toggle-slider:before{transform:translateX(16px)}

/* Notificação em Destaque Total de Chat ao Vivo para o Técnico */
.incoming-chat-backdrop {
  position: fixed;
  inset: 0;
  z-index: 120;
  display: grid;
  place-items: center;
  padding: 20px;
  background: rgba(7, 35, 20, 0.78);
  backdrop-filter: blur(8px);
  animation: fadeInBackdrop .2s ease-out;
}
@keyframes fadeInBackdrop {
  from { opacity: 0; }
  to { opacity: 1; }
}

.incoming-chat-modal {
  width: min(560px, 96vw);
  max-height: 90vh;
  overflow-y: auto;
  padding: 34px 28px;
  border-radius: 20px;
  background: #fff;
  border: 2px solid var(--green);
  box-shadow: 0 30px 80px rgba(0, 0, 0, 0.45), 0 0 0 1px rgba(22, 163, 74, 0.25);
  text-align: center;
  position: relative;
  animation: zoomInModal .25s cubic-bezier(0.16, 1, 0.3, 1);
}
@keyframes zoomInModal {
  from { opacity: 0; transform: scale(0.88); }
  to { opacity: 1; transform: scale(1); }
}

.incoming-chat-top-badge {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 6px 14px;
  border-radius: 999px;
  background: #fde8e8;
  color: #c52227;
  font-size: 11px;
  font-weight: 900;
  letter-spacing: .6px;
  margin-bottom: 18px;
}
.live-dot-pulse {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: #c52227;
  box-shadow: 0 0 0 0 rgba(197, 34, 39, 0.7);
  animation: liveDotPulse 1.2s infinite;
}
@keyframes liveDotPulse {
  0% { transform: scale(0.95); box-shadow: 0 0 0 0 rgba(197, 34, 39, 0.7); }
  70% { transform: scale(1); box-shadow: 0 0 0 8px rgba(197, 34, 39, 0); }
  100% { transform: scale(0.95); box-shadow: 0 0 0 0 rgba(197, 34, 39, 0); }
}

.incoming-chat-radar {
  position: relative;
  width: 80px;
  height: 80px;
  margin: 0 auto 18px;
  display: grid;
  place-items: center;
}
.incoming-chat-bell-icon {
  width: 64px;
  height: 64px;
  border-radius: 50%;
  background: var(--green-soft);
  color: var(--green);
  display: grid;
  place-items: center;
  position: relative;
  z-index: 2;
  box-shadow: 0 6px 18px rgba(17, 115, 60, 0.2);
  animation: bellRing 1.2s infinite;
}
.radar-pulse {
  position: absolute;
  inset: 0;
  border-radius: 50%;
  border: 2px solid var(--green);
  animation: radarWave 1.6s cubic-bezier(0, 0.2, 0.8, 1) infinite;
}
@keyframes radarWave {
  0% { transform: scale(0.7); opacity: 1; }
  100% { transform: scale(1.6); opacity: 0; }
}

.incoming-chat-modal h2 {
  font-size: 23px;
  line-height: 1.2;
  margin: 0 0 6px;
  color: var(--ink);
}
.incoming-chat-subtitle {
  font-size: 13px;
  color: var(--muted);
  margin: 0 0 20px;
}

.incoming-chat-details-card {
  padding: 18px 20px;
  background: #f8faf9;
  border: 1px solid #dce8df;
  border-radius: 14px;
  text-align: left;
  margin-bottom: 22px;
}
.incoming-chat-server-row {
  display: flex;
  align-items: center;
  gap: 12px;
  padding-bottom: 14px;
  border-bottom: 1px solid var(--line);
}
.incoming-chat-server-avatar {
  width: 40px;
  height: 40px;
  border-radius: 10px;
  background: var(--green-soft);
  color: var(--green);
  display: grid;
  place-items: center;
  flex-shrink: 0;
}
.incoming-chat-server-meta strong {
  display: block;
  font-size: 15px;
  color: var(--ink);
}
.incoming-chat-server-meta span {
  display: block;
  font-size: 11px;
  color: var(--muted);
  margin-top: 2px;
}

.incoming-chat-subject-box {
  padding-top: 14px;
}
.incoming-chat-subject-box small {
  display: block;
  font-size: 10px;
  font-weight: 800;
  color: var(--green-dark);
  letter-spacing: .6px;
  margin-bottom: 6px;
}
.incoming-chat-subject-box p {
  font-size: 13px;
  line-height: 1.45;
  color: var(--ink);
  margin: 0;
  background: #fff;
  padding: 11px 14px;
  border-radius: 8px;
  border: 1px solid var(--line);
  font-style: italic;
}

.incoming-chat-actions {
  display: grid;
  grid-template-columns: 1.5fr 1fr;
  gap: 12px;
}
.accept-chat-hero-btn {
  margin: 0;
  padding: 14px 22px;
  font-size: 14px;
  font-weight: 800;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  background: var(--green);
  box-shadow: 0 8px 22px rgba(17, 115, 60, 0.3);
  transition: .2s;
}
.accept-chat-hero-btn:hover {
  background: var(--green-dark);
  transform: translateY(-2px);
  box-shadow: 0 12px 28px rgba(17, 115, 60, 0.38);
}
.dismiss-chat-btn {
  margin: 0;
  padding: 14px 18px;
  font-size: 13px;
}

@media(max-width: 600px) {
  .incoming-chat-actions {
    grid-template-columns: 1fr;
  }
  .incoming-chat-modal {
    padding: 24px 18px;
  }
}

/* Notificação em Destaque Total de Novo Chamado na Fila para o Técnico */
.incoming-ticket-backdrop {
  position: fixed;
  inset: 0;
  z-index: 130;
  display: grid;
  place-items: center;
  padding: 20px;
  background: rgba(7, 35, 20, 0.78);
  backdrop-filter: blur(8px);
  animation: fadeInBackdrop .2s ease-out;
}

.incoming-ticket-modal {
  width: min(580px, 96vw);
  max-height: 90vh;
  overflow-y: auto;
  padding: 34px 28px;
  border-radius: 20px;
  background: #fff;
  border: 2px solid #2563eb;
  box-shadow: 0 30px 80px rgba(0, 0, 0, 0.45), 0 0 0 1px rgba(37, 99, 235, 0.25);
  text-align: center;
  position: relative;
  animation: zoomInModal .25s cubic-bezier(0.16, 1, 0.3, 1);
}

.incoming-ticket-top-badge {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 6px 14px;
  border-radius: 999px;
  background: #eef4ff;
  color: #1d4ed8;
  font-size: 11px;
  font-weight: 900;
  letter-spacing: .6px;
  margin-bottom: 18px;
}

.live-dot-pulse-blue {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: #2563eb;
  box-shadow: 0 0 0 0 rgba(37, 99, 235, 0.7);
  animation: liveDotPulseBlue 1.2s infinite;
}
@keyframes liveDotPulseBlue {
  0% { transform: scale(0.95); box-shadow: 0 0 0 0 rgba(37, 99, 235, 0.7); }
  70% { transform: scale(1); box-shadow: 0 0 0 8px rgba(37, 99, 235, 0); }
  100% { transform: scale(0.95); box-shadow: 0 0 0 0 rgba(37, 99, 235, 0); }
}

.incoming-ticket-radar {
  position: relative;
  width: 80px;
  height: 80px;
  margin: 0 auto 18px;
  display: grid;
  place-items: center;
}

.incoming-ticket-icon-box {
  width: 64px;
  height: 64px;
  border-radius: 50%;
  background: #e8f1fa;
  color: #1e5ba3;
  display: grid;
  place-items: center;
  position: relative;
  z-index: 2;
  box-shadow: 0 6px 18px rgba(30, 91, 163, 0.22);
  animation: bellRing 1.2s infinite;
}

.radar-pulse-blue {
  position: absolute;
  inset: 0;
  border-radius: 50%;
  border: 2px solid #2563eb;
  animation: radarWave 1.6s cubic-bezier(0, 0.2, 0.8, 1) infinite;
}

.incoming-ticket-modal h2 {
  font-size: 23px;
  line-height: 1.2;
  margin: 0 0 6px;
  color: var(--ink);
}

.incoming-ticket-subtitle {
  font-size: 13px;
  color: var(--muted);
  margin: 0 0 20px;
}

.incoming-ticket-details-card {
  padding: 18px 20px;
  background: #f8fafb;
  border: 1px solid #dbe5ee;
  border-radius: 14px;
  text-align: left;
  margin-bottom: 22px;
}

.incoming-ticket-header-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 12px;
}

.ticket-protocol-badge {
  font-size: 13px;
  font-weight: 900;
  color: #1e5ba3;
  background: #e8f1fa;
  padding: 4px 10px;
  border-radius: 6px;
}

.ticket-cat-badge {
  font-size: 11px;
  font-weight: 800;
  color: var(--muted);
  background: #fff;
  border: 1px solid var(--line);
  padding: 4px 10px;
  border-radius: 999px;
}

.incoming-ticket-server-row {
  display: flex;
  align-items: center;
  gap: 12px;
  padding-bottom: 12px;
  border-bottom: 1px solid var(--line);
}

.incoming-ticket-server-avatar {
  width: 38px;
  height: 38px;
  border-radius: 10px;
  background: #e8f1fa;
  color: #1e5ba3;
  display: grid;
  place-items: center;
  flex-shrink: 0;
}

.incoming-ticket-server-meta strong {
  display: block;
  font-size: 14px;
  color: var(--ink);
}

.incoming-ticket-server-meta span {
  display: block;
  font-size: 11px;
  color: var(--muted);
  margin-top: 2px;
}

.incoming-ticket-problem-box {
  padding-top: 12px;
}

.incoming-ticket-problem-box strong {
  display: block;
  font-size: 14px;
  color: var(--ink);
  margin-bottom: 6px;
}

.incoming-ticket-problem-box p {
  font-size: 12px;
  line-height: 1.45;
  color: var(--muted);
  margin: 0;
  background: #fff;
  padding: 10px 12px;
  border-radius: 8px;
  border: 1px solid var(--line);
  max-height: 110px;
  overflow-y: auto;
}

.incoming-ticket-actions {
  display: grid;
  grid-template-columns: 1.5fr 1fr;
  gap: 12px;
}

.view-ticket-hero-btn {
  margin: 0;
  padding: 14px 22px;
  font-size: 14px;
  font-weight: 800;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  background: #1e5ba3;
  box-shadow: 0 8px 22px rgba(30, 91, 163, 0.3);
  transition: .2s;
}

.view-ticket-hero-btn:hover {
  background: #15467e;
  transform: translateY(-2px);
  box-shadow: 0 12px 28px rgba(30, 91, 163, 0.38);
}

.dismiss-ticket-btn {
  margin: 0;
  padding: 14px 18px;
  font-size: 13px;
  font-weight: 700;
}

@media(max-width: 600px) {
  .incoming-ticket-actions {
    grid-template-columns: 1fr;
  }
  .incoming-ticket-modal {
    padding: 24px 18px;
  }
}

/* Modal de Chat Técnico */
.admin-chat-modal{width:min(820px,95vw);max-height:90vh;display:flex;flex-direction:column;padding:0;overflow:hidden}
.admin-chat-modal-head{padding:18px 24px;border-bottom:1px solid var(--line);margin-bottom:0;background:#fafdfb;display:flex;justify-content:space-between;align-items:center}
.admin-chat-user-info{display:flex;align-items:center;gap:12px}
.admin-chat-avatar{width:42px;height:42px;border-radius:12px;background:var(--green-soft);display:grid;place-items:center;font-size:20px}
.admin-chat-user-info h2{font-size:18px;margin:2px 0}
.admin-chat-user-info p{font-size:11px;color:var(--muted);margin:0}
.admin-chat-head-actions{display:flex;align-items:center;gap:10px}
.finish-ticket-btn{width:auto;margin:0;padding:9px 15px;font-size:12px;background:var(--green-dark)}
.admin-chat-messages-container{max-height:460px;min-height:360px}
.admin-chat-input-bar{border-radius:0 0 16px 16px}

/* Modal Gerar Chamado do Chat */
.chat-to-ticket-card{max-width:680px}
.chat-transcript-preview{background:#f4f8f5;font-family:ui-monospace,SFMono-Regular,Consolas,"Liberation Mono",Menlo,monospace;font-size:11px;line-height:1.55;color:#293b30}

@media(max-width:760px){
  .chat-public-view{padding:28px 14px 60px}
  .chat-public-head{display:block}
  .chat-public-head .secondary{margin-bottom:14px}
  .chat-public-head h1{font-size:28px}
  .chat-identify-card,.chat-waiting-card,.chat-active-card,.chat-ended-card{padding:20px}
  .chat-room-header{padding:12px 14px}
  .chat-messages-container{padding:14px;min-height:300px}
  .admin-top-controls{width:100%;justify-content:space-between;margin-top:10px}
  .incoming-chat-alert{right:12px;bottom:12px}
  .chat-ended-actions{flex-direction:column}
  .chat-ended-actions button{width:100%}
}

/* Painel / Central de Chat Técnico (Admin) */
.chat-admin-card{padding:28px}
.chat-admin-head{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;border-bottom:1px solid var(--line);padding-bottom:20px;margin-bottom:24px}
.chat-admin-head h2{margin:4px 0;font-size:24px}
.chat-admin-head p{color:var(--muted);margin:0;font-size:13px}
.chat-admin-head-status{display:flex;align-items:center;gap:12px}
.chat-admin-head-status button{width:auto;margin:0;padding:9px 16px;white-space:nowrap}

.chat-admin-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-bottom:28px}
.chat-admin-queue-card,.chat-admin-active-card{background:var(--bg);border:1px solid var(--line);border-radius:14px;padding:20px}
.chat-queue-heading{margin-bottom:16px}
.chat-queue-heading h3{display:flex;align-items:center;gap:8px;margin:0 0 4px;font-size:16px}
.chat-queue-heading p{margin:0;font-size:11px;color:var(--muted)}
.count-pill{padding:2px 8px;border-radius:999px;background:#e2e8e4;color:var(--ink);font-size:11px;font-weight:800}
.count-pill.active{background:#dff3e7;color:#08733b}

.chat-sessions-list{display:flex;flex-direction:column;gap:10px}
.chat-session-item{background:#fff;border:1px solid var(--line);border-radius:12px;padding:14px 16px;display:flex;align-items:center;justify-content:space-between;gap:14px;box-shadow:0 2px 6px rgba(0,0,0,.02)}
.chat-session-item.waiting-item{border-left:4px solid #d58a00}
.chat-session-item.active-item{border-left:4px solid var(--green)}
.chat-session-info{min-width:0;flex:1}
.chat-session-info strong{display:block;font-size:14px}
.chat-session-info small{display:block;color:var(--muted);font-size:11px;margin:2px 0 4px}
.chat-session-info p{margin:0;font-size:12px;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.chat-attend-btn{width:auto;margin:0;padding:9px 14px;font-size:12px;white-space:nowrap}
.chat-open-btn{width:auto;margin:0;padding:8px 12px;font-size:11px;white-space:nowrap}

.chat-admin-history{margin-top:20px;border-top:1px solid var(--line);padding-top:20px}
.chat-history-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}
.chat-history-heading h3{margin:0;font-size:16px}
.chat-history-heading button{width:auto;margin:0;padding:7px 12px;font-size:11px}
.chat-history-table{overflow-x:auto}
.chat-history-row{display:grid;grid-template-columns:1.5fr 2fr 1.2fr 1.2fr 1fr;gap:12px;align-items:center;padding:12px 14px;border-bottom:1px solid var(--line);font-size:12px}
.chat-history-head{background:var(--bg);font-weight:700;color:var(--muted);border-radius:8px}
.chat-menu-badge{display:inline-grid;place-items:center;min-width:18px;height:18px;padding:0 5px;border-radius:999px;background:var(--red);color:#fff;font-size:9px;font-weight:900;margin-left:4px}

@media(max-width:900px){
  .chat-admin-grid{grid-template-columns:1fr}
  .chat-history-row{min-width:680px}
}

/* ==========================================================================
   Ajustes Cirúrgicos de Responsividade para Smartphones (Mobile Enhancements)
   ========================================================================== */

@media (max-width: 768px) {
  /* Evita auto-zoom ao focar em campos no iOS Safari */
  input, select, textarea {
    font-size: 16px !important;
  }

  /* Chat Público em Smartphones */
  .chat-public-view {
    padding: 20px 14px 48px;
  }
  .chat-active-card {
    min-height: auto;
    height: calc(100dvh - 130px);
    border-radius: 12px;
  }
  .chat-messages-container {
    min-height: 200px;
    padding: 14px 12px;
  }
  .chat-bubble {
    max-width: 88%;
  }
  .chat-input-bar {
    padding: 10px 12px;
  }

  /* Modais de Chat e Detalhes no Mobile */
  .admin-chat-modal {
    width: 96vw;
    max-height: 94vh;
  }
  .admin-chat-messages-container {
    min-height: 220px;
    max-height: calc(94vh - 150px);
  }

  /* Detalhe do Chamado aberto pelo Técnico em Telas Menores */
  .ticket-detail.detail-expanded {
    position: fixed !important;
    inset: 0 !important;
    max-height: 100dvh !important;
    border-radius: 0 !important;
    padding: 20px 16px 40px !important;
    z-index: 90 !important;
    overflow-y: auto !important;
    background: #fff !important;
    box-shadow: 0 0 40px rgba(0, 0, 0, 0.25) !important;
  }
  .ticket-detail.detail-expanded .detail-close {
    display: flex !important;
    position: sticky !important;
    float: right !important;
    top: 0 !important;
    right: 0 !important;
    margin-bottom: 12px !important;
    background: var(--bg) !important;
    border: 1px solid var(--line) !important;
    border-radius: 8px !important;
    padding: 6px 12px !important;
    font-size: 12px !important;
    font-weight: 800 !important;
    cursor: pointer !important;
    z-index: 2 !important;
  }
  .ticket-detail.detail-expanded .detail-close:before {
    content: 'Fechar ';
  }
  .ticket-detail.detail-expanded .detail-close:after {
    content: ' ✕';
  }
  .ticket-detail.detail-expanded .detail-data {
    grid-template-columns: 1fr 1fr !important;
  }
  .ticket-detail.detail-expanded .detail-actions {
    flex-direction: column !important;
  }
  .ticket-detail.detail-expanded .detail-actions button {
    width: 100% !important;
  }

  /* Switch compacto no topo em telas mobile */
  .chat-toggle-label {
    display: none;
  }
  .staff-chat-toggle-wrap {
    padding: 4px 8px;
  }
  
  /* Cards de serviço no portal inicial com padding equilibrado */
  .service-choice {
    padding: 22px 18px !important;
  }
  .service-choice-icon {
    width: 46px !important;
    height: 46px !important;
    font-size: 22px !important;
    margin-bottom: 14px !important;
  }
}

/* Indicadores de status e ícones universais compatíveis com todos os dispositivos */

/* Contraste dos modais e do chamado em primeiro plano */
.admin-route .modal-backdrop{
  background:rgba(4,28,16,.62)!important;
  -webkit-backdrop-filter:blur(8px) saturate(.8);
  backdrop-filter:blur(8px) saturate(.8);
}
.admin-route .modal-backdrop>.card{
  border:1px solid rgba(255,255,255,.78);
  box-shadow:0 30px 90px rgba(2,22,12,.38),0 0 0 1px rgba(7,133,42,.12);
}
body.detail-open:before{
  content:'';position:fixed;inset:0;z-index:17;background:rgba(4,28,16,.57);
  -webkit-backdrop-filter:blur(7px) saturate(.82);backdrop-filter:blur(7px) saturate(.82);
}
.ticket-detail.detail-expanded{z-index:18!important;border:1px solid rgba(255,255,255,.8)!important;box-shadow:0 30px 90px rgba(2,22,12,.4)!important}

/* Edição dos dados trazidos por e-mail */
.ticket-edit-panel{margin:16px 0;border:1px solid var(--line);border-radius:12px;background:#f8fbf9;overflow:hidden}
.ticket-edit-panel.is-required{border-color:#d58a00;background:#fffaf0}
.ticket-edit-toggle{display:flex;width:100%;align-items:center;justify-content:space-between;gap:16px;padding:14px 16px;border:0;background:transparent;color:var(--ink);text-align:left;cursor:pointer}
.ticket-edit-toggle span{display:flex;flex-direction:column;gap:3px}.ticket-edit-toggle small{color:var(--muted);font-size:11px;font-weight:500}.ticket-edit-toggle>b{font-size:22px;color:var(--green)}
.ticket-edit-panel form{padding:0 16px 16px}.ticket-edit-panel form[hidden]{display:none}.ticket-edit-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:14px}.ticket-edit-actions button{width:auto;margin:0}.ticket-edit-actions .secondary{padding:12px 18px}
@media(max-width:620px){.ticket-edit-panel .field-row{grid-template-columns:1fr}.ticket-edit-actions{flex-direction:column-reverse}.ticket-edit-actions button{width:100%}}
.reservation-notification-modal{width:min(560px,100%);padding:30px;text-align:center}.notification-choice-icon{display:grid;width:58px;height:58px;margin:0 auto 16px;place-items:center;border-radius:50%;background:var(--green-soft);color:var(--green-dark);font-size:27px}.reservation-notification-modal h2{margin:8px 0 10px}.reservation-notification-modal>p{margin:0 auto 24px;max-width:430px;color:var(--muted);line-height:1.55}.notification-choice-actions{display:grid;grid-template-columns:auto 1fr 1fr;gap:10px}.notification-choice-actions button{width:auto;margin:0;min-height:48px}.notification-choice-actions .silent-action{border-color:#9eb4a6;background:#f7faf8}@media(max-width:620px){.reservation-notification-modal{padding:24px 18px}.notification-choice-actions{grid-template-columns:1fr}.notification-choice-actions #continueWithNotification{order:-2}.notification-choice-actions .silent-action{order:-1}}
.status-dot {
  display: inline-block;
  width: 7px;
  height: 7px;
  min-width: 7px;
  border-radius: 50%;
  background: #94a3b8;
  vertical-align: middle;
  margin-right: 4px;
}
.status-dot.online {
  background: #08733b;
  box-shadow: 0 0 0 0 rgba(8, 115, 59, 0.7);
  animation: chatPulse 1.8s infinite;
}
.status-dot.offline {
  background: #94a3b8;
}
.status-dot.waiting {
  background: #f59e0b;
}

.service-choice-icon svg {
  width: 28px;
  height: 28px;
  color: var(--green);
}
.service-choice:hover .service-choice-icon svg {
  color: var(--green-dark);
}

.metric-icon svg {
  width: 20px;
  height: 20px;
  display: block;
}

.status-icon svg {
  width: 22px;
  height: 22px;
  display: block;
  color: var(--green);
}

.chat-tech-avatar svg,
.admin-chat-avatar svg {
  width: 22px;
  height: 22px;
  color: var(--green);
}

.pulse-bell svg {
  width: 24px;
  height: 24px;
  color: var(--green);
}

.chat-ended-icon svg {
  width: 36px;
  height: 36px;
  color: var(--green);
}

.waiting-icon svg {
  width: 32px;
  height: 32px;
  color: var(--green);
}

.ticket-meta span {
  display: inline-flex;
  align-items: center;
  gap: 5px;
}
.ticket-meta svg {
  flex-shrink: 0;
  opacity: 0.75;
}

/* Intervalo completo em destaque nos cartões da agenda. */
.reservation-calendar .calendar-reservation .reservation-card-time,
.reservation-calendar .public-calendar-reservation .reservation-card-time {
  display: block;
  margin-top: 6px;
  overflow: visible;
  text-overflow: clip;
  white-space: nowrap;
  color: #075c2e;
  font-size: 12px;
  font-weight: 900;
  line-height: 1.25;
  letter-spacing: 0.15px;
}

@media (max-width: 760px) {
  .reservation-calendar .calendar-reservation .reservation-card-time,
  .reservation-calendar .public-calendar-reservation .reservation-card-time {
    font-size: 11px;
  }
}

/* Formulário técnico de reserva: margens internas e rolagem previsível. */
#staffReservationForm {
  width: min(680px, calc(100vw - 32px));
  max-height: calc(100vh - 36px);
  overflow-y: auto;
  padding: 26px;
  scrollbar-gutter: stable;
}

#staffReservationForm > .modal-close {
  float: right;
  margin: -8px -8px 0 12px;
}

#staffReservationForm > h2 {
  margin: 10px 0 20px;
}

@media (max-width: 620px) {
  #staffReservationForm {
    width: calc(100vw - 20px);
    max-height: calc(100dvh - 20px);
    padding: 20px 18px;
  }
}

/* Navegação técnica compacta: acessos principais, administração e conta. */
.topbar-admin-actions {
  min-width: 0;
  gap: 8px;
  overflow: visible;
}

.admin-nav-shell,
.primary-admin-nav {
  display: flex;
  align-items: center;
  gap: 4px;
}

.primary-admin-nav button,
.topbar-admin-actions .admin-menu #adminMenuButton {
  width: auto;
  min-height: 38px;
  padding: 8px 10px;
  border: 0;
  border-radius: 8px;
  background: transparent;
  color: var(--green-dark);
  font-size: 11px;
  font-weight: 800;
  white-space: nowrap;
  cursor: pointer;
}

.primary-admin-nav button:hover,
.primary-admin-nav button.active,
.topbar-admin-actions .admin-menu #adminMenuButton:hover {
  background: var(--green-soft);
}

.topbar-admin-actions .admin-menu {
  position: relative;
}

.topbar-admin-actions .admin-menu #adminMenuButton {
  display: inline-flex;
  align-items: center;
}

.topbar-admin-actions .admin-menu #adminMenuDropdown,
.topbar-admin-actions .admin-menu #adminMenuDropdown[hidden] {
  position: absolute;
  top: 45px;
  right: 0;
  z-index: 12;
  display: none !important;
  width: 210px;
  padding: 7px;
  border: 1px solid var(--line);
  border-radius: 11px;
  background: #fff;
  box-shadow: var(--shadow);
}

.topbar-admin-actions .admin-menu #adminMenuDropdown:not([hidden]) {
  display: grid !important;
}

.topbar-admin-actions .admin-menu #adminMenuDropdown button {
  width: 100%;
  padding: 10px;
  text-align: left;
  font-size: 11px;
}

.topbar-admin-actions #staffChatToggleWrap {
  padding: 6px 9px;
}

.topbar-admin-actions #staffChatToggleLabel {
  display: none;
}

.primary-admin-nav #chatMenuButton {
  display: inline-flex;
  align-items: center;
  gap: 5px;
}

.primary-admin-nav #topbarOnlineStaffPill {
  padding: 2px 6px !important;
  border: 0;
  background: var(--bg);
  font-size: 9px !important;
}

.mobile-admin-menu-button,
.mobile-admin-backdrop {
  display: none;
}

@media (max-width: 900px) {
  body.admin-nav-open {
    overflow: hidden;
  }

  .topbar-admin-actions {
    max-width: none;
    margin-left: auto;
    overflow: visible;
  }

  .mobile-admin-menu-button {
    display: flex;
    width: 42px;
    height: 42px;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 4px;
    padding: 0;
    border: 1px solid var(--line);
    border-radius: 10px;
    background: #fff;
    cursor: pointer;
  }

  .mobile-admin-menu-button span {
    width: 18px;
    height: 2px;
    border-radius: 2px;
    background: var(--green-dark);
    transition: transform .2s, opacity .2s;
  }

  .topbar-admin-actions.mobile-open .mobile-admin-menu-button span:nth-child(1) {
    transform: translateY(6px) rotate(45deg);
  }

  .topbar-admin-actions.mobile-open .mobile-admin-menu-button span:nth-child(2) {
    opacity: 0;
  }

  .topbar-admin-actions.mobile-open .mobile-admin-menu-button span:nth-child(3) {
    transform: translateY(-6px) rotate(-45deg);
  }

  .mobile-admin-backdrop {
    position: fixed;
    inset: 66px 0 0;
    z-index: 18;
    border: 0;
    background: rgba(7, 35, 20, .38);
  }

  .topbar-admin-actions.mobile-open .mobile-admin-backdrop {
    display: block;
  }

  .admin-nav-shell {
    position: fixed;
    top: 66px;
    right: 0;
    bottom: 0;
    z-index: 19;
    width: min(88vw, 340px);
    align-items: stretch;
    flex-direction: column;
    gap: 10px;
    padding: 18px;
    overflow-y: auto;
    background: #fff;
    box-shadow: -18px 0 40px rgba(7, 35, 20, .18);
    transform: translateX(105%);
    transition: transform .24s ease;
  }

  .topbar-admin-actions.mobile-open .admin-nav-shell {
    transform: translateX(0);
  }

  .primary-admin-nav {
    align-items: stretch;
    flex-direction: column;
    gap: 4px;
  }

  .primary-admin-nav button,
  .topbar-admin-actions .admin-menu #adminMenuDropdown button {
    display: flex;
    width: 100%;
    min-height: 45px;
    align-items: center;
    justify-content: flex-start;
    padding: 11px 12px;
    font-size: 13px;
    text-align: left;
  }

  .topbar-admin-actions .admin-menu {
    padding-top: 12px;
    border-top: 1px solid var(--line);
  }

  .topbar-admin-actions .admin-menu::before {
    content: 'ADMINISTRAÇÃO';
    display: block;
    padding: 0 12px 7px;
    color: var(--muted);
    font-size: 9px;
    font-weight: 900;
    letter-spacing: 1px;
  }

  .topbar-admin-actions .admin-menu #adminMenuButton {
    display: none;
  }

  .topbar-admin-actions .admin-menu #adminMenuDropdown,
  .topbar-admin-actions .admin-menu #adminMenuDropdown[hidden] {
    position: static;
    display: grid !important;
    width: 100%;
    padding: 0;
    border: 0;
    box-shadow: none;
  }

  .topbar-admin-actions #staffChatToggleWrap {
    justify-content: space-between;
    order: 3;
    padding: 13px 12px;
    border-radius: 10px;
    background: var(--green-soft);
  }

  .topbar-admin-actions #staffChatToggleLabel {
    display: inline;
    order: -1;
    font-size: 12px;
  }

  .topbar-admin-actions .account-menu {
    order: 4;
    margin-top: auto;
    padding-top: 12px;
    border-top: 1px solid var(--line);
  }

  .topbar-admin-actions .account-button {
    width: 100%;
    height: 50px;
  }

  .topbar-admin-actions .account-button > span:nth-child(2) {
    display: flex;
    max-width: none;
  }

  .topbar-admin-actions .account-dropdown {
    position: static;
    width: 100%;
    margin-top: 7px;
    box-shadow: none;
  }

  .topbar .brand-logo {
    width: 122px !important;
    height: auto !important;
  }
}



