/* source: styles.css */
@font-face{font-family:'Inter';font-style:normal;font-weight:400 800;font-display:swap;src:url(/fonts/inter-latin-ext.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF}
@font-face{font-family:'Inter';font-style:normal;font-weight:400 800;font-display:swap;src:url(/fonts/inter-latin.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'Plus Jakarta Sans';font-style:normal;font-weight:700 800;font-display:swap;src:url(/fonts/plus-jakarta-sans-latin-ext.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF}
@font-face{font-family:'Plus Jakarta Sans';font-style:normal;font-weight:700 800;font-display:swap;src:url(/fonts/plus-jakarta-sans-latin.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}:root{--bg: #f8fafc;--surface: #ffffff;--surface-2: #f1f5f4;--text: #1f2937;--muted: #64748b;--line: #e5e7eb;--brand: #007356;--brand-2: #1f2937;--brand-soft: #dff4ec;--sidebar-bg: #06251f;--sidebar-panel: rgba(255, 255, 255, .07);--sidebar-text: #e8f4ef;--sidebar-muted: #9fbdb4;--sidebar-line: rgba(255, 255, 255, .12);--gold: #c7a347;--success: #17844a;--warning: #c76b00;--danger: #c9362b;--info: #246bfe;--cal-vacation: #007356;--cal-dayoff: #246bfe;--cal-tolerance: #7c3aed;--cal-holiday: #c7a347;--cal-leave: #dc6803;--success-text: #17844a;--warning-text: #c76b00;--danger-text: #c9362b;--info-text: #246bfe;--shadow: 0 14px 34px rgba(10, 57, 52, .08);--shadow-strong: 0 24px 60px rgba(10, 57, 52, .14);--space-1: 8px;--space-2: 12px;--space-3: 16px;--space-4: 22px;--space-5: 28px;--text-2xs: 10px;--text-xs: 11px;--text-sm: 12px;--text-base: 13px;--text-md: 14px;--text-lg: 15px;--text-xl: 16px;--text-2xl: 18px;--text-3xl: 22px;--text-4xl: 28px;--radius-sm: 6px;--radius-md: 8px;--radius-lg: 10px;--radius-xl: 12px;--radius-2xl: 14px;--radius-3xl: 16px;--radius-pill: 999px;color-scheme:light}[data-theme=dark]{--bg: #0f1518;--surface: #151d21;--surface-2: #1f2a2f;--text: #f3f6f5;--muted: #a9b5b2;--line: #2d3a40;--brand: #00a86b;--brand-2: #e5e7eb;--brand-soft: #123c34;--sidebar-bg: #06251f;--sidebar-panel: rgba(255, 255, 255, .08);--sidebar-text: #edf7f4;--sidebar-muted: #91aaa3;--sidebar-line: rgba(255, 255, 255, .12);--success-text: #34d399;--warning-text: #fbbf24;--danger-text: #f87171;--info-text: #60a5fa;--shadow: 0 12px 34px rgba(0, 0, 0, .28);color-scheme:dark}[data-theme=dark] .terminal-pill.external{color:#7fb0e8}[data-theme=dark] .terminal-pill.self{color:#e3c481}[data-theme=dark] .terminal-pill.manual{color:#c3ccd4}[data-theme=dark] .terminal-pill.qr,[data-theme=dark] .badge.qr-badge{color:#c4b5fd}*{box-sizing:border-box}html,body{min-height:100%;overflow-x:hidden;overflow-x:clip;-webkit-text-size-adjust:100%}html{border-top:env(safe-area-inset-top,0px) solid var(--sidebar-bg)}.global-loading-bar{background:#00735633;height:4px;left:0;overflow:hidden;position:fixed;right:0;top:0;z-index:9999}.app-cold-start{align-items:center;display:flex;flex-direction:column;gap:16px;justify-content:center;min-height:50vh;padding:var(--space-5) var(--space-4);text-align:center}.app-cold-start h2{margin:0}.inline-spinner{border:3px solid color-mix(in srgb,var(--brand) 25%,transparent);border-radius:50%;border-top-color:var(--brand);display:inline-block;height:18px;width:18px;animation:global-loading-spin .7s linear infinite}.inline-spinner-lg{border-width:4px;height:40px;width:40px}.empty-state.loading-state{align-items:center;display:flex;gap:10px;justify-content:center}.empty-state-danger{color:var(--danger-text)}.global-loading-bar[hidden]{display:none}.global-loading-bar span{background:linear-gradient(90deg,var(--brand),var(--gold));border-radius:var(--radius-pill);height:100%;position:absolute;top:0;width:40%;animation:global-loading-sweep 1.1s ease-in-out infinite}@keyframes global-loading-sweep{0%{left:-40%}to{left:100%}}@media(prefers-reduced-motion:reduce){.global-loading-bar span{animation:none;left:0;width:100%}}@keyframes global-loading-spin{to{transform:rotate(360deg)}}body{margin:0;background:linear-gradient(180deg,rgba(0,122,90,.06),transparent 280px),var(--bg);color:var(--text);font-family:Inter,Segoe UI,Arial,sans-serif;font-size:var(--text-md);letter-spacing:0}h1,h2,h3,.brand strong{font-family:Plus Jakarta Sans,Inter,Segoe UI,Arial,sans-serif}[hidden]{display:none!important}.login-screen{align-items:stretch;background:var(--surface);display:grid;gap:clamp(22px,4vw,56px);grid-template-columns:minmax(360px,.95fr) minmax(340px,420px);min-height:100vh;padding:0 clamp(18px,4vw,56px) 0 0}.login-brand-panel{background:linear-gradient(145deg,#06251ffa,#007356f0),var(--sidebar-bg);border:1px solid rgba(255,255,255,.14);border-radius:0;box-shadow:var(--shadow-strong);color:#fff;display:flex;flex-direction:column;justify-content:center;min-height:100vh;overflow:hidden;padding:clamp(26px,4.4vw,52px) clamp(26px,4.4vw,52px) clamp(66px,7vw,84px);position:relative}.login-brand-panel.has-company-image{background:linear-gradient(145deg,#06251fdb,#007356b8),var(--company-image),var(--sidebar-bg);background-position:center;background-size:cover}.login-brand-panel:after{background:linear-gradient(90deg,transparent,rgba(199,163,71,.72),transparent);bottom:clamp(28px,5vw,56px);content:"";height:1px;left:clamp(28px,5vw,56px);position:absolute;right:clamp(28px,5vw,56px)}.login-company-name{bottom:clamp(24px,4vw,44px);color:var(--gold)!important;font-size:var(--text-base)!important;font-weight:800;left:clamp(28px,5vw,56px);letter-spacing:.1em;margin:0;position:absolute!important;right:clamp(28px,5vw,56px);text-transform:uppercase;z-index:1}.sr-only{height:1px;margin:-1px;overflow:hidden;position:absolute;width:1px;clip:rect(0,0,0,0)}.login-brand-lockup{display:block;margin-bottom:clamp(16px,3vw,32px);max-width:min(560px,100%);position:relative;z-index:1}.login-brand-lockup img{display:block;height:auto;max-height:clamp(104px,15vw,170px);object-fit:contain;object-position:left center;width:min(560px,100%)}.login-brand-panel h1{font-size:clamp(38px,7vw,76px);line-height:.95;margin:0 0 18px}.login-brand-panel p{color:#ffffffc7;font-size:17px;line-height:1.55;max-width:520px;position:relative;z-index:1}.login-brand-subtitle{color:#ecfdf5d1!important;font-weight:700;margin:0}.login-kicker{color:var(--gold);font-size:var(--text-xs);font-weight:800;letter-spacing:.18em;margin:0 0 12px;text-transform:uppercase}.login-proof{bottom:36px;display:flex;flex-wrap:wrap;gap:10px;left:clamp(28px,5vw,56px);position:absolute;right:clamp(28px,5vw,56px)}.login-proof span,.demo-users button{background:#ffffff1f;border:1px solid rgba(255,255,255,.22);border-radius:var(--radius-pill);color:#fff;font-size:var(--text-sm);font-weight:700;padding:8px 11px}.login-card{background:transparent;border:0;border-radius:0;box-shadow:none;display:grid;gap:16px;justify-self:center;align-self:center;max-width:440px;padding:clamp(20px,3vw,32px) 0;position:relative;width:100%}[data-theme=dark] .login-card{background:transparent}.login-card:before{display:none}.login-card h2{font-size:clamp(23px,2.4vw,28px);line-height:1.1;margin:0 0 6px}.login-muted{color:var(--muted);font-size:var(--text-base);line-height:1.45;margin:0}.login-alert{background:#c9362b1a;border:1px solid rgba(201,54,43,.24);border-radius:var(--radius-2xl);color:var(--danger-text);font-weight:700;padding:12px 14px}.login-alert.warning{background:#d99b1b1f;border-color:#d99b1b4d;color:#9a6b00;font-weight:600}.login-type-toggle{background:color-mix(in srgb,var(--surface-2) 82%,var(--brand-soft) 18%);border:1px solid var(--line);border-radius:var(--radius-pill);display:grid;gap:4px;grid-template-columns:repeat(2,minmax(0,1fr));padding:4px}.login-type-toggle button{background:transparent;border:0;border-radius:var(--radius-pill);color:var(--muted);cursor:pointer;font-weight:800;min-height:42px;padding:0 12px}.login-type-toggle button.active{background:linear-gradient(135deg,var(--brand),#008c66);color:#fff;box-shadow:0 10px 22px #00735638}.login-mode{display:grid;gap:12px}.login-card .field>span{color:color-mix(in srgb,var(--muted) 82%,var(--text) 18%);font-size:var(--text-xs);letter-spacing:.03em;margin-bottom:6px;text-transform:uppercase}.login-card .field input{background:color-mix(in srgb,var(--surface) 88%,var(--surface-2) 12%);border:1px solid var(--line);border-radius:var(--radius-lg);min-height:48px;padding:10px 12px}.login-card .field input::placeholder{color:color-mix(in srgb,var(--muted) 72%,transparent)}.login-card .field input:focus{background:var(--surface);border-color:color-mix(in srgb,var(--brand) 72%,var(--line) 28%)}.kiosk-link{align-items:center;background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius-md);color:var(--brand-2);display:inline-flex;font-weight:800;justify-content:center;min-height:42px;text-decoration:none}.check-row{align-items:center;color:var(--muted);display:flex;gap:10px;font-weight:600}.check-row input{accent-color:var(--brand);height:18px;width:18px}.check-grid{display:grid;gap:10px;grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}.check-grid .check-row{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius-md);color:var(--text);min-height:44px;padding:10px 12px}.weekday-picker{display:grid;gap:8px;grid-template-columns:repeat(7,minmax(54px,1fr))}.check-row.compact{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius-md);color:var(--text);justify-content:center;min-height:42px;padding:8px}.check-row.compact input{margin:0}.login-submit{background:linear-gradient(135deg,var(--brand),#00a16b);border-radius:var(--radius-lg);box-shadow:0 14px 28px #00735638;font-size:var(--text-lg);min-height:50px}.login-privacy-link{background:none;border:none;color:var(--muted);cursor:pointer;font-size:12.5px;margin-top:10px;text-align:center;text-decoration:underline;width:100%}.login-submit:hover,.login-submit:focus-visible{filter:brightness(1.03)}.demo-users{border-top:1px solid var(--line);display:flex;flex-wrap:wrap;gap:8px;padding-top:14px}.demo-users strong{color:var(--muted);flex-basis:100%;font-size:var(--text-sm)}.demo-users button{background:var(--surface-2);border-color:var(--line);color:var(--brand-2)}button,input,select,textarea{font:inherit;max-width:100%}button,a,input,select,textarea{touch-action:manipulation}button{cursor:pointer}.app-shell{display:flex;min-height:100vh;min-width:0}.sidebar{background:linear-gradient(180deg,rgba(0,122,90,.18),transparent 280px),var(--sidebar-bg);border-right:1px solid var(--sidebar-line);box-shadow:16px 0 36px #063f3521;display:flex;flex:0 0 268px;flex-direction:column;min-height:100vh;overflow:visible;padding:18px 14px;position:-webkit-sticky;position:sticky;top:0}.workspace,.content,.panel,.metric,.record-card,.table-wrap{min-width:0}.brand{align-items:center;display:flex;gap:12px;margin-bottom:18px;min-height:48px}.brand-mark{align-items:center;background:#ffffff1a;border-radius:var(--radius-md);color:var(--sidebar-bg);display:flex;font-weight:800;height:46px;justify-content:center;width:46px}.brand-mark.has-logo{background:#fff;overflow:hidden;padding:4px}.brand-mark.app-logo.has-logo{background:#00a86b24;border:1px solid rgba(0,168,107,.28);padding:5px}.brand-mark.company-logo.has-logo{background:#fff}.brand-mark.has-logo img{display:block;height:100%;object-fit:contain;width:100%}.sidebar .brand{background:#ffffff0d;border:1px solid rgba(255,255,255,.08);border-radius:var(--radius-lg);padding:9px}.user-chip{align-items:center;background:transparent;border:0;border-left:1px solid var(--line);border-radius:var(--radius-lg);display:flex;gap:10px;min-height:44px;padding-left:12px;padding-right:10px;text-align:left}.user-chip:hover,.user-chip:focus-visible{background:var(--surface-2);outline:0}.user-chip strong,.user-chip span{display:block}.user-chip span{color:var(--muted);font-size:var(--text-sm);margin-top:2px}#userRole{display:none}.brand strong,.brand span{display:block}.sidebar .brand strong{color:var(--sidebar-text)}.brand span{color:var(--sidebar-muted);font-size:var(--text-sm);margin-top:2px}.nav{align-content:start;display:grid;gap:8px;flex:0 1 auto;grid-auto-rows:max-content;min-height:0;overflow-y:visible;padding-right:6px;scrollbar-color:rgba(199,163,71,.78) rgba(255,255,255,.08);scrollbar-width:thin}.nav::-webkit-scrollbar,.sidebar::-webkit-scrollbar{width:8px}.nav::-webkit-scrollbar-track,.sidebar::-webkit-scrollbar-track{background:#ffffff0f;border-radius:var(--radius-pill)}.nav::-webkit-scrollbar-thumb,.sidebar::-webkit-scrollbar-thumb{background:linear-gradient(180deg,#c7a347db,#20a77ddb);border:2px solid var(--sidebar-bg);border-radius:var(--radius-pill)}.nav::-webkit-scrollbar-thumb:hover,.sidebar::-webkit-scrollbar-thumb:hover{background:linear-gradient(180deg,var(--gold),#20a77d)}.sidebar-footer{border-top:1px solid var(--sidebar-line);margin-top:12px;padding-top:12px}.sidebar-logout{align-items:center;background:#ffffff14;border:1px solid var(--sidebar-line);border-radius:var(--radius-md);color:var(--sidebar-text);display:flex;gap:10px;min-height:46px;padding:8px 10px;text-align:left;width:100%}.sidebar-logout:hover,.sidebar-logout:focus-visible{background:#c9a34729;color:#fff;outline:0}.sidebar-logout:hover .nav-icon,.sidebar-logout:focus-visible .nav-icon{background:#c9a34738;color:#fff}.nav-group{border:1px solid transparent;border-radius:var(--radius-lg)}.nav-group.open{background:var(--sidebar-panel);border-color:var(--sidebar-line)}.nav-group-toggle{align-items:center;background:transparent;border:0;border-radius:var(--radius-md);color:var(--sidebar-muted);display:flex;font-size:var(--text-xs);font-weight:800;justify-content:space-between;letter-spacing:.08em;min-height:44px;padding:8px 10px;text-transform:uppercase;width:100%}.nav-group-toggle:hover{background:#ffffff14;color:var(--sidebar-text)}.nav-chevron{color:var(--gold);display:inline-block;font-size:var(--text-md);letter-spacing:0;transition:transform .18s ease}.nav-group:not(.open) .nav-chevron{transform:rotate(-90deg)}.nav-group-items{display:none;gap:3px;padding:0 6px 7px}.nav-group.open .nav-group-items{display:grid}.nav-button{align-items:center;background:transparent;border:0;border-radius:var(--radius-sm);color:var(--sidebar-text);display:flex;gap:10px;min-height:44px;padding:7px 9px;text-align:left;transition:background .12s ease;width:100%}.nav-button:active{background:#fff3}.nav-item-with-submenu{position:relative}.nav-parent-row{align-items:center;display:grid;gap:4px;grid-template-columns:minmax(0,1fr) 34px}.nav-parent-row .nav-button{min-width:0}.nav-submenu-toggle{align-items:center;background:#ffffff14;border:0;border-radius:var(--radius-sm);color:var(--gold);cursor:pointer;display:inline-flex;font-size:var(--text-sm);font-weight:900;height:34px;justify-content:center;transition:transform .18s ease;width:34px}.nav-submenu-toggle:hover,.nav-submenu-toggle:focus-visible{background:#ffffff24;color:#fff;outline:0}.nav-submenu-toggle span{display:inline-block;transition:transform .18s ease;transform:rotate(-90deg)}.nav-item-with-submenu.open .nav-submenu-toggle span{transform:rotate(0)}.nav-submenu{display:none;gap:3px;margin:3px 0 8px 18px;padding-left:10px;position:relative}.nav-submenu:before{background:linear-gradient(180deg,transparent 0,var(--gold) 12%,var(--gold) 88%,transparent 100%);border-radius:var(--radius-pill);content:"";inset:5px auto 5px 0;position:absolute;width:2px}.nav-item-with-submenu.open .nav-submenu{display:grid}.nav-submenu-group-label{color:var(--sidebar-muted);font-size:var(--text-2xs);font-weight:800;letter-spacing:.08em;margin:2px 0 1px 7px;opacity:.75;text-transform:uppercase}.nav-submenu-button{align-items:center;background:transparent;border:0;border-radius:var(--radius-sm);color:var(--sidebar-muted);cursor:pointer;display:grid;gap:7px;grid-template-columns:22px minmax(0,1fr);min-height:32px;padding:5px 7px;text-align:left}.nav-submenu-button:hover,.nav-submenu-button:focus-visible,.nav-submenu-button.active{background:#c7a34724;color:#fff;outline:0}.nav-submenu-button span{align-items:center;display:inline-flex;justify-content:center}.nav-submenu-button svg{height:14px;width:14px}.nav-submenu-button strong{font-size:var(--text-sm);font-weight:800;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nav-button:hover,.nav-button.active{background:#ffffff1a}.nav-button.active{color:#fff;font-weight:700}.nav-icon{align-items:center;background:#ffffff14;border:1px solid rgba(255,255,255,.1);border-radius:7px;color:var(--sidebar-muted);display:inline-flex;flex:0 0 28px;height:28px;justify-content:center;width:28px}.nav-icon svg{height:17px;width:17px}.nav-button.active .nav-icon,.nav-button:hover .nav-icon{background:#ffffff29;color:#fff}.workspace{flex:1;min-width:0}.topbar{align-items:center;background:var(--surface);border-bottom:1px solid var(--line);display:flex;gap:12px;min-height:66px;padding:10px max(22px,env(safe-area-inset-right)) 10px max(22px,env(safe-area-inset-left));position:-webkit-sticky;position:sticky;top:0;z-index:5}.menu-button{display:none}.org-switcher{border-right:1px solid var(--line);min-width:174px;padding-right:14px}.org-switcher span,.global-search span{color:var(--muted);display:block;font-size:var(--text-xs);line-height:1.2}.org-switcher strong{display:block;font-size:var(--text-base);margin-top:2px}.global-search{flex:1;min-width:180px;position:relative}.global-search input,.field input,.field select,.field textarea{background:var(--surface-2);border:1px solid transparent;border-radius:var(--radius-sm);color:var(--text);font-size:var(--text-xl);min-height:44px;outline:0;padding:8px 10px;width:100%}.global-search input:focus,.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--brand);box-shadow:0 0 0 3px #00735624}.global-search-results{left:0;position:absolute;right:0;top:calc(100% + 8px);z-index:30}.global-search-panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-md);box-shadow:var(--shadow-strong);max-height:min(520px,70vh);overflow-y:auto;padding:8px}.global-search-head{align-items:center;color:var(--muted);display:flex;font-size:var(--text-sm);justify-content:space-between;padding:8px 8px 10px}.global-search-item{align-items:center;background:transparent;border:0;border-radius:var(--radius-md);color:var(--text);cursor:pointer;display:grid;gap:10px;grid-template-columns:38px minmax(0,1fr);min-height:56px;padding:8px;text-align:left;width:100%}.global-search-item:hover,.global-search-item:focus-visible{background:var(--surface-2);outline:0}.global-search-icon{align-items:center;background:var(--brand-soft);border-radius:var(--radius-md);color:var(--brand);display:inline-flex;height:38px;justify-content:center;width:38px}.global-search-icon svg{height:18px;width:18px}.global-search-item strong,.global-search-item small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.global-search-item small{color:var(--muted);font-size:var(--text-sm);margin-top:3px}.global-search-empty{color:var(--muted);padding:18px 10px}.primary-action,.secondary-action,.danger-action{border:0;border-radius:var(--radius-sm);min-height:44px;padding:8px 13px;white-space:nowrap}.primary-action{background:var(--brand);color:#fff;font-weight:700}.secondary-action{background:var(--surface-2);color:var(--text)}.icon-action{align-items:center;background:var(--surface-2);border:0;border-radius:var(--radius-sm);color:var(--muted);display:inline-flex;flex:0 0 auto;height:32px;justify-content:center;padding:0;width:32px}.icon-action:hover,.icon-action:focus-visible{background:color-mix(in srgb,var(--brand) 14%,var(--surface-2));color:var(--brand)}.icon-action svg{height:16px;width:16px}.qr-wallet-action{align-items:center;background:color-mix(in srgb,var(--brand) 14%,var(--surface-2));border:1px solid color-mix(in srgb,var(--brand) 40%,var(--line));color:var(--brand);display:inline-flex;font-weight:700;gap:6px;white-space:nowrap}.qr-wallet-action:hover{background:color-mix(in srgb,var(--brand) 24%,var(--surface-2))}.qr-wallet-action svg{height:16px;width:16px}.document-list{display:flex;flex-direction:column;gap:10px;margin-bottom:16px}.document-row{align-items:center;background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius-xl);display:flex;flex-wrap:wrap;gap:12px;justify-content:space-between;padding:12px 14px}.document-row-main{display:flex;flex-direction:column;gap:2px;min-width:0}.document-row-main span{color:var(--muted);font-size:var(--text-sm)}.document-row-main small{color:var(--muted);font-size:var(--text-xs);opacity:.85}.document-row-actions{align-items:center;display:flex;flex-wrap:wrap;gap:8px}.action-link{align-items:center;display:inline-flex;justify-content:center;text-decoration:none}.table-link{color:var(--brand);font-weight:700;text-decoration:none;word-break:break-all}.danger-action{background:#c9362b1f;color:var(--danger-text);font-weight:700}.icon-button{align-items:center;background:var(--surface-2);border:0;border-radius:var(--radius-sm);color:var(--text);display:inline-flex;flex:0 0 auto;height:44px;justify-content:center;min-width:44px;padding:0}.icon-button svg{color:currentColor;display:block;flex:0 0 auto;height:20px;max-height:20px;max-width:20px;pointer-events:none;stroke:currentColor;width:20px}.notification-button{position:relative}.notification-bell-mark{align-items:center;background:var(--brand);border-radius:50%;color:#fff;display:inline-flex;font-size:var(--text-base);font-weight:900;height:18px;justify-content:center;width:18px}.notification-bell-content,.notification-loading-content{align-items:center;display:inline-flex;justify-content:center}.notification-loading-content[hidden]{display:none}.notification-loading-content svg{animation:global-loading-spin .85s linear infinite;color:var(--brand);height:20px;width:20px}@media(prefers-reduced-motion:reduce){.notification-loading-content svg{animation:none}}.notification-button strong{align-items:center;background:var(--danger);border:2px solid var(--surface);border-radius:var(--radius-pill);color:#fff;display:inline-flex;font-size:var(--text-2xs);height:18px;justify-content:center;min-width:18px;padding:0 4px;position:absolute;right:-4px;top:-5px}.notification-button strong[hidden],.icon-button.menu-button{display:none}.avatar{align-items:center;background:var(--text);border-radius:50%;color:var(--surface);display:flex;font-size:var(--text-sm);font-weight:800;height:38px;justify-content:center;overflow:hidden;width:38px}.avatar.has-photo{background:var(--surface-2)}.avatar img{display:block;height:100%;object-fit:cover;width:100%}.page-head{align-items:center;display:flex;gap:16px;justify-content:space-between;padding:26px 28px 10px}.page-head h1{font-size:var(--text-4xl);line-height:1.15;margin:0}.eyebrow{color:var(--muted);font-size:var(--text-sm);font-weight:700;letter-spacing:0;margin:0 0 6px;text-transform:uppercase}.page-actions{align-items:center;display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}.content{display:grid;gap:var(--space-4);padding:18px max(28px,env(safe-area-inset-right)) 40px max(28px,env(safe-area-inset-left))}.grid{display:grid;gap:var(--space-4)}.kpi-grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}.kpi-grid.kpi-grid-compact{grid-template-columns:repeat(auto-fit,minmax(160px,1fr))}.dashboard-kpi-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.dashboard-analysis-grid{align-items:stretch;grid-template-columns:repeat(2,minmax(320px,1fr))}.dashboard-analysis-grid .panel,.dashboard-kpi-grid .metric{height:100%}.two-col{grid-template-columns:minmax(0,1.15fr) minmax(320px,.85fr)}.three-col{grid-template-columns:repeat(3,minmax(0,1fr))}.settings-grid{display:grid;grid-template-columns:repeat(2,minmax(240px,1fr)) auto;gap:14px;align-items:stretch}.switch{display:inline-block;flex-shrink:0;height:24px;position:relative;width:42px}.switch input{height:0;opacity:0;width:0}.switch-slider{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius-pill);cursor:pointer;inset:0;position:absolute;transition:background .15s ease}.switch-slider:before{background:var(--surface);border-radius:50%;bottom:2px;box-shadow:0 1px 2px #00000040;content:"";height:18px;left:2px;position:absolute;transition:transform .15s ease;width:18px}.switch input:checked+.switch-slider{background:var(--brand);border-color:var(--brand)}.switch input:checked+.switch-slider:before{transform:translate(18px)}.switch input:focus-visible+.switch-slider{outline:2px solid var(--brand);outline-offset:2px}.setting-toggle{display:grid;grid-template-columns:22px minmax(0,1fr);gap:12px;align-items:start;padding:14px;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface-soft)}.setting-toggle input{width:20px;height:20px;margin-top:2px;accent-color:var(--green)}.setting-toggle strong,.setting-toggle small{display:block}.setting-toggle small{margin-top:4px;color:var(--muted);line-height:1.35}.panel,.metric,.record-card,.modal{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-md);box-shadow:var(--shadow)}.metric{border-top:3px solid rgba(0,122,90,.18);min-height:118px;padding:var(--space-4)}.metric span{color:var(--muted);display:block;margin-bottom:10px}.metric strong{display:block;font-size:30px;line-height:1}.metric small{color:var(--muted);display:block;margin-top:12px}.metric-link{cursor:pointer;display:block;font:inherit;text-align:left;width:100%}.metric-link:hover{border-top-color:var(--brand)}.metric-warn{border-top-color:var(--danger-text)}.metric-warn strong{color:var(--danger-text)}.row-menu{position:relative;display:inline-block}.row-menu>summary{cursor:pointer;list-style:none;display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:var(--radius-md);border:1px solid var(--line);background:var(--surface);font-size:var(--text-2xl);line-height:1}.row-menu>summary::-webkit-details-marker{display:none}.row-menu>summary::marker{content:""}.row-menu[open]>summary{background:var(--surface-2)}.row-menu-panel{z-index:60;min-width:220px;display:flex;flex-direction:column;gap:6px;padding:8px;border-radius:var(--radius-lg);border:1px solid var(--line);background:var(--surface);box-shadow:0 12px 28px #0000002e}.row-menu-panel button{width:100%;text-align:left}.confirm-overlay{position:fixed;inset:0;z-index:200;background:#00000080;display:flex;align-items:center;justify-content:center;padding:18px}.confirm-dialog{background:var(--surface);border-radius:var(--radius-2xl);border:1px solid var(--line);box-shadow:0 20px 50px #00000059;max-width:420px;width:100%;padding:20px}.confirm-dialog h3{margin:0 0 10px}.confirm-dialog p{margin:0 0 18px;color:var(--muted);white-space:pre-line}.confirm-dialog-actions{display:flex;justify-content:flex-end;gap:10px}.inline-edit-input{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);color:var(--text);font-size:var(--text-md);min-height:38px;min-width:160px;padding:6px 10px;width:100%}.inline-edit-input:focus{border-color:var(--brand);box-shadow:0 0 0 3px #00735624;outline:0}.qr-scan-wrap{aspect-ratio:1 / 1;background:#000;border-radius:var(--radius-2xl);max-width:320px;margin:0 auto;overflow:hidden;width:100%}.qr-scan-wrap video{height:100%;object-fit:cover;width:100%}.bulk-actions-bar{align-items:center;background:color-mix(in srgb,var(--brand) 10%,var(--surface-2) 90%);border:1px solid var(--line);border-radius:var(--radius-md);display:flex;flex-wrap:wrap;gap:10px;margin:0 var(--space-4) var(--space-3);padding:10px 14px}.bulk-actions-bar span{font-weight:600;margin-right:auto}.bulk-actions-bar select{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);color:var(--text);min-height:38px;padding:6px 10px}.panel{overflow:hidden}.panel-header{align-items:center;border-bottom:1px solid var(--line);display:flex;gap:10px;justify-content:space-between;min-height:54px;padding:14px 18px}.panel-header h2{font-size:var(--text-xl);margin:0}.panel-header-actions{align-items:center;display:flex;flex-wrap:wrap;gap:10px;justify-content:flex-end}.time-bank-pair-list{display:flex;flex-direction:column;gap:8px;margin:12px 0}.time-bank-pair{align-items:center;background:var(--surface-soft);border-radius:var(--radius-md);display:grid;gap:4px 14px;grid-template-columns:auto 1fr auto;padding:10px 12px}.time-bank-pair.excluded{background:color-mix(in srgb,var(--warning) 10%,var(--surface-soft) 90%);color:var(--muted)}.panel-body{padding:var(--space-4)}.panel>.form-grid,.panel>.settings-grid,.panel>.form-actions{padding:var(--space-4)}.panel>.settings-form{padding:var(--space-4);display:flex;flex-direction:column;gap:var(--space-4)}.settings-toggle-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px}.settings-season-row{align-items:end;display:flex;flex-wrap:wrap;gap:var(--space-3)}.settings-season-row .field{flex:1 1 320px;min-width:0}.settings-season-row>button{flex:0 0 auto}.calendar-sync-row{align-items:center;display:flex;gap:8px;margin-top:6px}.calendar-sync-row input{flex:1 1 auto;min-width:0}.calendar-sync-row button{flex:0 0 auto}.it-assets-filter-bar{align-items:end;display:flex;flex-wrap:wrap;gap:var(--space-3);padding:var(--space-4)}.it-assets-filter-bar .field{flex:1 1 180px;min-width:0}.it-assets-filter-bar>button{flex:0 0 auto}.form-actions{align-items:end;display:flex;flex-wrap:wrap;gap:var(--space-3)}.form-actions .field{flex:1 1 200px;min-width:0}.form-actions>button{flex:0 0 auto}.grouped-table-heading-row td{background:var(--surface-2);font-size:var(--text-base);font-weight:700;padding:10px var(--space-3);white-space:nowrap}#remoteDevicesList td:nth-child(1),#remoteDevicesList td:nth-child(2),#remoteDevicesList td:nth-child(5){white-space:normal;word-break:break-word}#itAssetsTableWrap td:nth-child(3){white-space:normal;word-break:break-word}.table-toolbar{align-items:end;display:flex;flex-wrap:wrap;gap:var(--space-3);justify-content:flex-end;margin-bottom:var(--space-3);padding:var(--space-4) var(--space-4) 0}.filters{align-items:end;display:grid;gap:var(--space-3);grid-template-columns:minmax(220px,1fr) 160px 160px auto;margin-bottom:var(--space-4)}.field label{color:var(--muted);display:block;font-size:var(--text-sm);font-weight:700;margin-bottom:5px}.field>span{color:var(--muted);display:block;font-size:var(--text-sm);font-weight:800;margin-bottom:7px}.field{display:flex;flex-direction:column}.field-hint{display:block;margin-top:6px;color:var(--muted);font-size:var(--text-sm);line-height:1.4}.table-wrap{margin-top:var(--space-3);max-width:100%;overflow-x:auto;touch-action:pan-x pan-y;-webkit-overflow-scrolling:touch}.table-wrap table{min-width:680px}.panel>.table-wrap{margin-top:0;padding:var(--space-3) var(--space-4) var(--space-4)}.panel>.record-grid,.panel>.kiosk-card-grid{padding:var(--space-4)}.attendance-department-list{display:grid;gap:var(--space-3);padding:var(--space-4)}.attendance-department{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-md);overflow:hidden}.attendance-department>summary{align-items:center;cursor:pointer;display:flex;gap:var(--space-3);justify-content:space-between;list-style:none;min-height:56px;padding:12px 14px}.attendance-department>summary::-webkit-details-marker{display:none}.attendance-department>summary:before{color:var(--gold);content:">";font-weight:900;line-height:1;transform:rotate(0);transition:transform .18s ease}.attendance-department[open]>summary:before{transform:rotate(90deg)}.attendance-department-title{align-items:center;display:flex;flex:1;font-weight:800;gap:8px;min-width:0}.attendance-department-meta{align-items:center;display:inline-flex;flex-wrap:wrap;gap:6px;justify-content:flex-end}.attendance-department .table-wrap{border-top:1px solid var(--line);margin-top:0}.attendance-operational-panel .compact-kpi-grid{padding:var(--space-4) var(--space-4) 0}.operational-split{align-items:start;display:grid;gap:var(--space-4);grid-template-columns:minmax(220px,.45fr) minmax(0,1fr)}.attendance-op-bar.success .progress span{background:var(--success)}.attendance-op-bar.info .progress span{background:var(--info)}.attendance-op-bar.warning .progress span{background:var(--warning)}.attendance-issue-block{border-top:1px solid var(--line);display:grid;gap:var(--space-3);padding:0 var(--space-4) var(--space-4)}.panel-subheader{align-items:center;display:flex;gap:var(--space-3);justify-content:space-between;padding-top:var(--space-4)}.panel-subheader h3{font-size:var(--text-lg);margin:0}.attendance-time{align-items:center;display:inline-flex;flex-wrap:wrap;gap:5px}.attendance-time-cell{display:flex;flex-direction:column;gap:3px}.attendance-time-evidence{display:inline-flex}.attendance-time-evidence .evidence-button,.attendance-time-evidence .badge{font-size:var(--text-2xs);padding:3px 7px}.attendance-inference-pill{border-radius:var(--radius-pill);display:inline-flex;font-size:var(--text-2xs);font-weight:900;letter-spacing:0;line-height:1;padding:3px 5px;vertical-align:middle}.attendance-inference-pill.identified{background:#17844a1f;color:var(--success-text)}.attendance-inference-pill.approximated{background:#246bfe1f;color:var(--info-text)}.attendance-inference-pill.sequence{background:var(--surface-2);color:var(--muted)}.attendance-legend{align-items:center;border-top:1px solid var(--line);color:var(--muted);display:flex;flex-wrap:wrap;gap:8px 14px;padding:10px var(--space-4) var(--space-4)}.attendance-legend span{align-items:center;display:inline-flex;font-size:var(--text-sm);gap:6px}.attendance-status-cell{align-items:flex-start;display:inline-flex;flex-direction:column;gap:5px}.attendance-status-cell small{color:var(--muted);font-size:var(--text-xs);font-weight:800;white-space:nowrap}.attendance-status-cell strong{color:var(--text);font-size:var(--text-sm);white-space:nowrap}.attendance-evidence-list{align-items:flex-start;display:inline-flex;flex-direction:column;gap:6px;min-width:120px}.attendance-evidence-item{align-items:center;display:inline-flex;flex-wrap:wrap;gap:6px}.attendance-evidence-item>small{color:var(--muted);font-size:var(--text-2xs);font-weight:900;letter-spacing:.04em;text-transform:uppercase}.attendance-evidence-item .evidence-button{font-size:var(--text-xs);padding:5px 8px}table{border-collapse:collapse;width:100%}th,td{border-bottom:1px solid var(--line);padding:11px 10px;text-align:left;vertical-align:middle;white-space:nowrap}th{color:var(--muted);font-size:var(--text-sm);font-weight:800}tr:hover td{background:#0073560d}.badge{border-radius:var(--radius-pill);display:inline-flex;font-size:var(--text-sm);font-weight:800;line-height:1;padding:6px 9px}.employee-status-dot{background:var(--success);border-radius:50%;display:inline-block;height:10px;width:10px}.employee-status-dot-empty{display:inline-block;height:10px;width:10px}.dashboard-greeting{align-items:center;background:linear-gradient(135deg,var(--brand) 0%,color-mix(in srgb,var(--brand) 72%,#06251f 28%) 100%);border-radius:var(--radius-3xl);box-shadow:var(--shadow);color:#fff;display:flex;gap:16px;justify-content:space-between;padding:22px var(--space-4)}.dashboard-greeting-text h2{font-size:20px;margin:0 0 4px}.dashboard-greeting-text p{color:#ffffffd1;font-size:var(--text-md);margin:0}.dashboard-greeting-date{color:#ffffffd9;flex:0 0 auto;font-size:var(--text-sm);text-align:right;text-transform:capitalize}@media(max-width:520px){.dashboard-greeting{align-items:flex-start;flex-direction:column;gap:6px}.dashboard-greeting-date{text-align:left}}.employee-live-hero{align-items:flex-start;border-radius:var(--radius-3xl);box-shadow:var(--shadow);display:flex;flex-direction:column;gap:18px;overflow:hidden;padding:28px var(--space-4);position:relative}.employee-live-hero.working{background:linear-gradient(135deg,var(--success) 0%,color-mix(in srgb,var(--success) 78%,#0a3d2a 22%) 100%);color:#fff}.employee-live-hero.idle{background:var(--surface);border:1px solid var(--line);color:var(--text)}.employee-live-hero-body{align-items:center;display:flex;flex-wrap:wrap;gap:20px;position:relative;width:100%;z-index:1}.employee-live-hero-content{display:flex;flex:1;flex-direction:column;gap:18px;min-width:220px}.employee-live-hero-qr{align-items:center;background:transparent;border:0;color:inherit;cursor:pointer;display:flex;flex-direction:column;font:inherit;gap:6px;padding:0;text-align:center;transition:transform .12s ease}.employee-live-hero-qr:hover{transform:translateY(-2px)}.employee-live-hero-qr:active{transform:translateY(0)}.employee-live-hero-qr .employee-qr-code{min-height:108px;min-width:108px;padding:8px}.employee-live-hero-qr small{color:inherit;font-size:var(--text-xs);opacity:.8}.employee-live-hero-icon{align-items:center;color:#fff;display:flex;height:220px;justify-content:center;opacity:.12;pointer-events:none;position:absolute;right:-36px;top:-36px;transform:rotate(12deg);width:220px;z-index:0}.employee-live-hero.idle .employee-live-hero-icon{color:var(--text);opacity:.06}.employee-live-hero-icon svg{height:100%;stroke-width:1.2;width:100%}.employee-live-hero-main{display:flex;flex-direction:column;gap:4px;position:relative;width:100%;z-index:1}.employee-live-hero-label{align-items:center;display:flex;font-size:var(--text-lg);font-weight:800;gap:8px}.employee-live-hero-value{font-size:46px;font-variant-numeric:tabular-nums;font-weight:800;line-height:1}.employee-live-hero small{color:inherit;font-size:var(--text-base);opacity:.8}.employee-live-hero-complete{background:#ffffff38;border-radius:var(--radius-pill);display:inline-block;font-size:var(--text-sm);font-weight:800;margin-left:10px;padding:4px 10px;vertical-align:middle}.employee-live-hero.idle .employee-live-hero-complete{background:color-mix(in srgb,var(--success) 16%,transparent);color:var(--success-text);display:block;margin:6px 0 0;width:fit-content}.employee-live-hero-remaining{display:block;font-size:var(--text-sm);margin-top:6px;opacity:.85}.employee-live-hero-remaining strong{font-weight:800}.employee-live-hero.working .employee-live-hero-remaining.complete{color:#fff;font-weight:700;opacity:1}.employee-live-hero.idle .employee-live-hero-remaining{opacity:.75}.employee-live-hero.idle .employee-live-hero-remaining.complete{color:var(--success-text);opacity:1}.employee-live-periods{display:flex;flex-wrap:wrap;gap:8px;position:relative;width:100%;z-index:1}.employee-live-period{align-items:center;background:var(--surface-2);border-radius:var(--radius-lg);color:var(--text);display:inline-flex;font-size:var(--text-sm);gap:8px;padding:8px 12px 8px 8px}.employee-live-period-icon{align-items:center;background:var(--surface);border-radius:7px;display:inline-flex;height:26px;justify-content:center;width:26px}.employee-live-period-icon svg{height:15px;width:15px}.employee-live-period-time{font-variant-numeric:tabular-nums}.employee-live-period em{font-style:normal;font-variant-numeric:tabular-nums;font-weight:800}.employee-live-hero.working .employee-live-period{background:#ffffff24;color:#fff}.employee-live-hero.working .employee-live-period-icon{background:#fff3}.employee-live-hero.working .employee-live-period.current{background:#ffffff52}.request-attachment-preview{border-radius:var(--radius-md);display:block;margin-top:12px;max-width:100%}.employee-live-dot{background:#fff;border-radius:50%;box-shadow:0 0 #ffffff80;display:inline-block;height:10px;width:10px;animation:employee-live-pulse 1.8s ease-out infinite}@keyframes employee-live-pulse{0%{box-shadow:0 0 #ffffff80}70%{box-shadow:0 0 0 8px #fff0}to{box-shadow:0 0 #fff0}}@media(prefers-reduced-motion:reduce){.employee-live-dot{animation:none}}.attendance-sparkline{display:block;vertical-align:middle}.attendance-sparkline-empty{color:var(--muted)}.attendance-day-progress{display:flex;flex-direction:column;gap:5px;min-width:160px}.attendance-day-progress-bar{background:var(--line);border-radius:var(--radius-pill);display:flex;height:8px;overflow:hidden;width:100%}.attendance-day-progress-bar .worked{background:var(--success)}.attendance-day-progress-bar .overtime{background:var(--gold)}.attendance-day-progress-bar .remaining{background:transparent}.attendance-day-progress small{color:var(--muted);font-size:var(--text-xs)}.birthday-list{display:flex;flex-direction:column;gap:10px}.birthday-row{align-items:center;background:var(--surface-soft);border-radius:var(--radius-md);display:flex;gap:12px;padding:10px 12px}.birthday-row-info{display:flex;flex:1;flex-direction:column;min-width:0}.birthday-row-info strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.badge.success{background:#17844a1f;color:var(--success-text)}.badge.warning{background:#c76b0024;color:var(--warning-text)}.badge.danger{background:#c9362b21;color:var(--danger-text)}.badge.neutral{background:var(--surface-2);color:var(--muted)}.badge.info{background:#246bfe1f;color:var(--info-text)}.badge-row{align-items:center;display:inline-flex;flex-wrap:wrap;gap:6px}.progress{background:var(--surface-2);border-radius:var(--radius-pill);height:9px;overflow:hidden}.progress span{background:var(--brand);display:block;height:100%}.timeline{display:grid;gap:12px}.timeline-item{border-left:3px solid var(--brand);padding-left:11px}.timeline-item.warning{border-left-color:var(--warning)}.timeline-item.success{border-left-color:var(--success)}.timeline-item.danger{border-left-color:var(--danger)}.notifications-list{display:flex;flex-direction:column;gap:12px}.notifications-actions{display:flex;justify-content:flex-end;margin-bottom:4px}.timeline-item{align-items:center;display:flex;gap:10px;justify-content:space-between}.timeline-item-body{min-width:0}.timeline-item.is-read{border-left-color:var(--line);opacity:.6}.notification-read-flag{color:var(--muted);flex:0 0 auto;font-weight:700}.link-action{background:transparent;border:0;color:var(--brand);cursor:pointer;flex:0 0 auto;font-weight:800;padding:4px 2px;white-space:nowrap}.link-action:hover{text-decoration:underline}.attendance-hero,.employee-console,.kiosk-board{background:linear-gradient(135deg,#063f35fa,#007a5aeb);border:1px solid rgba(255,255,255,.18);border-radius:var(--radius-lg);box-shadow:var(--shadow-strong);color:#fff;display:grid;gap:18px;grid-template-columns:minmax(0,1fr) minmax(260px,360px);overflow:hidden;padding:22px}.attendance-hero h2,.kiosk-board h2{font-size:var(--text-4xl);line-height:1.1;margin:0 0 10px}.attendance-hero p,.kiosk-board p,.clock-card p{color:#ffffffc7;line-height:1.5;margin:0}.hero-stack,.employee-summary{display:grid;gap:10px;grid-template-columns:repeat(2,minmax(0,1fr))}.mini-stat{background:#ffffff1f;border:1px solid rgba(255,255,255,.18);border-radius:var(--radius-md);padding:13px}.mini-stat span,.mini-stat small{color:#ffffffb8;display:block;font-size:var(--text-sm)}.mini-stat strong{color:#fff;display:block;font-size:var(--text-3xl);line-height:1.1;margin:6px 0}.clock-card{background:#ffffff14;border:1px solid rgba(255,255,255,.18);border-radius:var(--radius-lg);padding:18px;position:relative}.clock-card h2{color:#fff;font-size:48px;line-height:1;margin:8px 0 10px}.status-dot{background:#35d07f;border:3px solid rgba(255,255,255,.8);border-radius:50%;height:16px;position:absolute;right:18px;top:18px;width:16px}.quick-actions,.request-grid{display:grid;gap:8px;grid-template-columns:repeat(4,minmax(0,1fr));margin-top:16px}.request-grid{grid-template-columns:repeat(2,minmax(0,1fr));margin-top:0}.request-grid button{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius-md);color:var(--text);font-weight:700;min-height:52px}.terminal-pill{align-items:flex-start;border-radius:var(--radius-pill);display:inline-flex;flex-direction:column;gap:1px;min-width:118px;padding:7px 11px}.terminal-pill strong{font-size:var(--text-sm);line-height:1.1}.terminal-pill small{font-size:var(--text-2xs);line-height:1.1}.terminal-pill.external{background:#2267b51a;color:#174f91}.terminal-pill.app{background:#007a5a1f;color:var(--brand)}.terminal-pill.self{background:#af802626;color:#7a5513}.terminal-pill.manual{background:#202d3a1a;color:#20313f}.terminal-pill.qr{background:#7c3aed1f;color:#6d28d9}.badge.qr-badge{background:#7c3aed24;color:#6d28d9}.kiosk-card-grid{display:grid;gap:var(--space-4);grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}.kiosk-config-card{background:linear-gradient(180deg,var(--surface),var(--surface-2));border:1px solid var(--line);border-radius:var(--radius-md);display:grid;gap:var(--space-3);min-height:260px;padding:var(--space-4)}.kiosk-config-card.is-muted{opacity:.72}.config-card-top,.config-card-actions{align-items:center;display:flex;gap:8px;justify-content:space-between}.config-icon{align-items:center;background:#007a5a1f;border-radius:var(--radius-md);color:var(--brand);display:inline-flex;height:40px;justify-content:center;width:40px}.config-icon svg{height:21px;width:21px}.kiosk-config-card h3{font-size:var(--text-2xl);margin:0}.kiosk-config-card p{color:var(--muted);margin:-6px 0 0}.kiosk-url-box{background:var(--surface);border:1px dashed var(--line);border-radius:var(--radius-md);color:var(--brand);font-size:var(--text-base);font-weight:800;padding:10px;word-break:break-all}.config-card-details{display:grid;gap:7px}.config-card-details .detail-row{background:transparent;border:0;padding:0}.empty-inline{align-items:center;background:var(--surface-2);border:1px dashed var(--line);border-radius:var(--radius-md);color:var(--muted);display:flex;min-height:120px;padding:18px}body[data-route=employee-area] .employee-top-cards{display:none}.employee-home{align-items:center;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-md);box-shadow:var(--shadow);display:flex;gap:16px;justify-content:space-between;margin-bottom:14px;padding:18px}.employee-home>div:not(.employee-home-meta){flex:1;min-width:0}.employee-home h2{font-size:var(--text-4xl);line-height:1.1;margin:0 0 6px}.employee-home p{color:var(--muted);margin:0}.employee-avatar{align-items:center;background:linear-gradient(135deg,var(--brand),#00a86b);border:1px solid rgba(0,115,86,.18);border-radius:var(--radius-xl);color:#fff;display:inline-flex;flex:0 0 auto;font-weight:900;justify-content:center;overflow:hidden;text-transform:uppercase}.employee-avatar.sm{border-radius:9px;font-size:var(--text-sm);height:34px;width:34px}.employee-avatar.md{height:44px;width:44px}.employee-avatar.lg{font-size:var(--text-3xl);height:68px;width:68px}.employee-avatar.xl{border-radius:var(--radius-3xl);font-size:var(--text-4xl);height:92px;width:92px}.employee-avatar.has-photo{background:var(--surface-2)}.employee-avatar img{display:block;height:100%;object-fit:cover;width:100%}.avatar-editor{align-items:center;background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius-md);display:flex;gap:14px;padding:14px}.avatar-editor strong,.avatar-editor span{display:block}.avatar-editor span{color:var(--muted);font-size:var(--text-sm);margin-top:4px}.employee-profile-head{align-items:center;display:grid;gap:16px;grid-template-columns:auto minmax(0,1fr) auto;padding:var(--space-4)}.employee-profile-head h2{margin:0 0 6px}.employee-profile-head span{color:var(--muted);font-weight:700}.employee-home-meta{align-items:flex-end;display:flex;flex-direction:column;gap:6px;justify-content:center;text-align:right}.employee-home-meta span,.employee-home-meta strong{border-radius:var(--radius-pill);display:inline-flex;font-size:var(--text-sm);font-weight:900;line-height:1;padding:8px 11px}.employee-home-meta span{background:var(--surface-2);color:var(--muted)}.employee-home-meta strong{background:var(--brand-soft);color:var(--brand)}.employee-home-actions{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}.employee-portal{align-items:start;display:grid;gap:var(--space-4);grid-template-columns:minmax(210px,250px) minmax(0,1fr)}.employee-side-menu{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-md);box-shadow:var(--shadow);display:grid;gap:var(--space-3);padding:var(--space-3);position:sticky;top:96px}.employee-side-profile{align-items:center;background:linear-gradient(135deg,#0073561f,#1f293714);border:1px solid rgba(0,115,86,.18);border-radius:var(--radius-md);display:flex;gap:10px;padding:12px}.employee-side-profile>span{align-items:center;background:var(--brand);border-radius:var(--radius-md);color:#fff;display:inline-flex;flex:0 0 42px;font-weight:900;height:42px;justify-content:center;width:42px}.employee-side-profile strong,.employee-side-profile small{display:block}.employee-side-profile small{color:var(--muted);font-size:var(--text-sm);margin-top:2px}.employee-menu{display:grid;gap:6px}.employee-menu-item{align-items:center;background:transparent;border:1px solid transparent;border-radius:var(--radius-md);color:var(--muted);cursor:pointer;display:grid;gap:10px;grid-template-columns:38px minmax(0,1fr);min-height:54px;padding:8px;text-align:left}.employee-menu-item:hover,.employee-menu-item:focus-visible{background:var(--surface-2);color:var(--text);outline:0}.employee-menu-item.active{background:var(--brand-soft);border-color:#00735638;color:var(--brand)}.employee-menu-icon{align-items:center;background:var(--surface-2);border-radius:var(--radius-md);color:currentColor;display:inline-flex;height:38px;justify-content:center;width:38px}.employee-menu-item.active .employee-menu-icon{background:#0073561f}.employee-menu-icon svg{height:19px;width:19px}.employee-menu-item strong,.employee-menu-item small{display:block}.employee-menu-item small{color:var(--muted);font-size:var(--text-xs);line-height:1.2;margin-top:2px}.employee-portal-main{display:grid;gap:var(--space-4);min-width:0}.employee-tabs{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-md);box-shadow:var(--shadow);display:grid;gap:6px;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));margin-bottom:14px;padding:6px}.employee-tabs button{background:transparent;border:0;border-radius:var(--radius-sm);color:var(--muted);cursor:pointer;font-weight:800;min-height:40px}.employee-tabs button.active{background:var(--brand-soft);color:var(--brand)}.employee-section{display:grid;gap:var(--space-4)}.employee-punch-grid{display:grid;gap:var(--space-3);grid-template-columns:repeat(4,minmax(0,1fr));padding:var(--space-4)}.employee-action-grid{display:grid;gap:var(--space-3);grid-template-columns:repeat(auto-fit,minmax(180px,1fr));padding:var(--space-4)}.employee-action-grid.compact{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.employee-action{align-items:center;background:var(--soft);border:1px solid var(--line);border-radius:var(--radius-md);color:var(--text);cursor:pointer;display:grid;gap:12px;grid-template-columns:44px minmax(0,1fr);min-height:74px;padding:12px;text-align:left;transition:background .18s ease,border-color .18s ease,transform .18s ease}.employee-action:hover{background:#fff;border-color:#00865b47;transform:translateY(-1px)}.employee-action.primary{background:var(--brand);border-color:var(--brand);color:#fff}.employee-action.primary:hover{background:var(--brand-dark);border-color:var(--brand-dark)}.employee-action-icon{align-items:center;background:#00865b1a;border-radius:var(--radius-md);color:var(--brand);display:grid;height:44px;justify-content:center;width:44px}.employee-action.primary .employee-action-icon{background:#ffffff2e;color:#fff}.employee-action-icon svg{height:22px;width:22px}.employee-action strong,.employee-action small{display:block;min-width:0}.employee-action strong{font-size:var(--text-lg);line-height:1.2}.employee-action small{color:var(--muted);font-size:var(--text-sm);line-height:1.3;margin-top:3px}.employee-action.primary small{color:#ffffffc7}.time-bank-filter{align-items:end;border-bottom:1px solid var(--line);display:flex;flex-wrap:wrap;gap:10px;padding:14px}.time-bank-filter label{display:grid;flex:1 1 150px;gap:6px}.time-bank-filter button{flex:0 0 auto}.time-bank-filter span{color:var(--muted);font-size:var(--text-sm);font-weight:800}.time-bank-filter input,.time-bank-filter select{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-md);color:var(--text);min-height:38px;padding:0 10px}.evidence-button{background:var(--brand-soft);border:1px solid rgba(0,134,91,.22);border-radius:var(--radius-pill);color:var(--brand);cursor:pointer;font-size:var(--text-sm);font-weight:800;padding:7px 10px}.evidence-stack{align-items:center;display:inline-flex;flex-wrap:wrap;gap:6px}.evidence-view{display:grid;gap:16px}.evidence-view img{background:#111827;border-radius:var(--radius-md);display:block;max-height:360px;object-fit:contain;width:100%}.evidence-photo-slot{align-items:center;background:#111827;border-radius:var(--radius-md);display:flex;justify-content:center;min-height:160px}.evidence-photo-slot .empty-state{color:var(--muted)}.employee-request-actions{border-bottom:1px solid var(--line);display:grid;gap:10px;grid-template-columns:repeat(4,minmax(0,1fr));padding:14px}.calendar-nav{align-items:center;display:flex;gap:8px}.calendar-nav-btn{align-items:center;background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius-pill);color:var(--text);cursor:pointer;display:inline-flex;font-size:var(--text-xl);font-weight:900;height:28px;justify-content:center;line-height:1;width:28px}.calendar-nav-btn:hover{background:var(--brand-soft);color:var(--brand)}.calendar-nav-label{background:#246bfe1f;border-radius:var(--radius-pill);color:var(--info-text);font-size:var(--text-sm);font-weight:800;min-width:128px;padding:5px 12px;text-align:center;text-transform:capitalize}.calendar-nav-today{background:none;border:0;color:var(--brand);cursor:pointer;font-size:var(--text-sm);font-weight:800;padding:4px 2px;text-decoration:underline}.absence-calendar{display:grid;gap:6px;grid-template-columns:repeat(7,minmax(0,1fr));padding:14px}.absence-calendar>strong{color:var(--muted);font-size:var(--text-sm);text-align:center}.calendar-day{align-content:start;background:var(--soft);border:1px solid var(--line);border-radius:var(--radius-md);display:grid;gap:4px;min-height:72px;padding:8px}.calendar-day.muted{background:transparent;border-color:transparent}.calendar-day span{font-weight:800}.calendar-day small{border-radius:var(--radius-pill);color:#fff;font-size:var(--text-xs);font-weight:800;padding:3px 6px}.calendar-day.vacation{border-color:color-mix(in srgb,var(--cal-vacation) 40%,transparent)}.calendar-day.vacation small{background:var(--cal-vacation);color:#fff}.calendar-day.dayoff{border-color:color-mix(in srgb,var(--cal-dayoff) 40%,transparent)}.calendar-day.dayoff small{background:var(--cal-dayoff);color:#fff}.calendar-day.tolerance{border-color:color-mix(in srgb,var(--cal-tolerance) 40%,transparent)}.calendar-day.tolerance small{background:var(--cal-tolerance);color:#fff}.calendar-day.leave{border-color:color-mix(in srgb,var(--cal-leave) 40%,transparent)}.calendar-day.leave small{background:var(--cal-leave);color:#fff}.calendar-day.holiday{border-color:color-mix(in srgb,var(--cal-holiday) 55%,transparent)}.calendar-day .holiday-label{background:var(--cal-holiday);color:#1f2937}.calendar-day .tolerance-label{background:var(--cal-tolerance);color:#fff}.calendar-day small.non-taken{opacity:.55;text-decoration:line-through}.calendar-day small[data-mark-non-taken],.team-calendar-day-names small[data-mark-non-taken]{cursor:pointer}.cal-legend-swatch{border-radius:4px;display:inline-block;height:12px;margin-right:5px;vertical-align:-1px;width:12px}.cal-legend-swatch.vacation{background:var(--cal-vacation)}.cal-legend-swatch.dayoff{background:var(--cal-dayoff)}.cal-legend-swatch.tolerance{background:var(--cal-tolerance)}.cal-legend-swatch.holiday{background:var(--cal-holiday)}.cal-legend-swatch.leave{background:var(--cal-leave)}.team-calendar-day{min-height:88px}.team-calendar-day-names{display:flex;flex-wrap:wrap;gap:3px}.team-calendar-day-names small{border-radius:var(--radius-pill);font-size:var(--text-2xs);font-weight:800;padding:3px 7px}.team-calendar-day-names small.vacation{background:var(--cal-vacation);color:#fff}.team-calendar-day-names small.dayoff{background:var(--cal-dayoff);color:#fff}.team-calendar-day-names small.tolerance{background:var(--cal-tolerance);color:#fff}small.leave{background:var(--cal-leave);color:#fff}small.half-day{background-image:linear-gradient(135deg,rgba(255,255,255,.55) 0 50%,transparent 50% 100%)}.team-calendar-day-names small.non-taken{opacity:.55;text-decoration:line-through}.team-calendar-day-names small.more{background:var(--surface-2);color:var(--muted)}.kiosk-pinpad{background:#ffffff1f;border:1px solid rgba(255,255,255,.2);border-radius:var(--radius-lg);display:grid;gap:8px;padding:16px;text-align:center}.kiosk-pinpad strong{color:var(--gold);letter-spacing:.12em}.kiosk-pinpad div{background:#ffffff1f;border-radius:var(--radius-md);color:#fff;font-size:var(--text-3xl);font-weight:800;padding:8px;word-spacing:18px}.analytics-grid{display:grid;gap:var(--space-4);grid-template-columns:repeat(4,minmax(0,1fr))}.analytics-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-md);box-shadow:var(--shadow);padding:16px}.analytics-card span,.analytics-card small{color:var(--muted);display:block}.analytics-card strong{display:block;font-size:32px;margin:8px 0}.analytics-card.success{border-top:3px solid var(--success)}.analytics-card.warning{border-top:3px solid var(--warning)}.analytics-card.info{border-top:3px solid var(--info)}.chart-list{display:grid;gap:14px}.trend-chart{display:block;height:200px;width:100%}.trend-chart-label{fill:var(--muted);font-size:10px}.donut-chart-wrap{align-items:center;display:flex;flex-wrap:wrap;gap:20px}.donut-chart-total{fill:var(--text);font-size:26px;font-weight:700}.donut-chart-total-label{fill:var(--muted);font-size:11px}.donut-chart-legend{display:grid;gap:8px;list-style:none;margin:0;padding:0}.donut-chart-legend li{align-items:center;color:var(--text);display:flex;gap:8px}.donut-chart-legend strong{margin-left:auto}.donut-chart-dot{border-radius:50%;display:inline-block;height:10px;width:10px}.bar-row{align-items:center;display:grid;gap:10px;grid-template-columns:100px 1fr 48px}.bar-row span,.bar-row strong{font-weight:700}.bar-label{display:grid;gap:2px;min-width:0}.bar-label strong{font-size:var(--text-base);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bar-label small{color:var(--muted);font-size:var(--text-xs);font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.kiosk-terminal-body{background:#061a16;min-height:100dvh;overflow:hidden}.kiosk-terminal{background:radial-gradient(ellipse 80% 60% at 50% 0%,rgba(16,185,129,.18),transparent 70%),radial-gradient(ellipse 60% 40% at 80% 100%,rgba(5,150,105,.1),transparent 70%),#061a16;color:#fff;display:grid;grid-template-columns:minmax(0,1fr) minmax(380px,480px);height:100dvh;overflow:hidden;position:relative}.kiosk-screensaver{align-items:center;background:linear-gradient(135deg,#03100e8a,#022d25b8),linear-gradient(115deg,transparent 0 42%,rgba(255,255,255,.08) 42% 43%,transparent 43% 100%),radial-gradient(circle at 18% 18%,rgba(201,166,76,.18),transparent 30%),radial-gradient(circle at 82% 75%,rgba(0,168,107,.18),transparent 34%);background-position:center;background-size:cover;border:0;backdrop-filter:blur(18px) saturate(.92);color:#fff;cursor:pointer;display:flex;inset:0;justify-content:center;opacity:0;padding:max(28px,env(safe-area-inset-top)) max(28px,env(safe-area-inset-right)) max(28px,env(safe-area-inset-bottom)) max(28px,env(safe-area-inset-left));pointer-events:none;position:fixed;text-align:center;transform:scale(1.01);transition:opacity .35s ease,transform .35s ease;z-index:80}.kiosk-screensaver.has-company-image{background:linear-gradient(135deg,#03100e94,#022d25b8),linear-gradient(115deg,transparent 0 42%,rgba(255,255,255,.08) 42% 43%,transparent 43% 100%),var(--company-image),var(--sidebar-bg);background-position:center;background-size:cover}.kiosk-screensaver:before{background:linear-gradient(180deg,#020a0924,#020a09b3),repeating-linear-gradient(135deg,rgba(255,255,255,.035) 0 1px,transparent 1px 22px),radial-gradient(circle at 50% 42%,rgba(255,255,255,.08),transparent 38%);content:"";inset:0;position:absolute}.kiosk-screensaver:after{border:1px solid rgba(255,255,255,.11);border-radius:34px;box-shadow:inset 0 0 0 1px #c9a64c14,0 28px 90px #00000047;content:"";inset:clamp(16px,2.2vw,34px);position:absolute}.kiosk-sleeping .kiosk-screensaver{opacity:1;pointer-events:auto;transform:scale(1)}.kiosk-screensaver-shell{align-items:center;display:grid;gap:clamp(13px,2vh,25px);justify-items:center;max-width:min(86vw,860px);position:relative;width:100%;z-index:1}.kiosk-screensaver-top{align-items:center;display:grid;gap:12px;justify-content:center;justify-items:center}.kiosk-screensaver-brand{align-items:center;background:#ffffff1f;border:1px solid rgba(201,166,76,.24);border-radius:22px;box-shadow:0 18px 60px #0003;color:var(--gold);display:inline-flex;font-size:clamp(18px,3vw,34px);font-weight:900;height:clamp(58px,8vw,84px);justify-content:center;line-height:1;overflow:hidden;padding:12px;position:relative;width:clamp(58px,8vw,84px)}.kiosk-screensaver-brand.has-logo img{display:block;height:100%;object-fit:contain;width:100%}.kiosk-screensaver-time{align-items:center;color:#fffffff0;display:grid;gap:8px;justify-items:center;line-height:1;position:relative}.kiosk-screensaver-time strong{color:#fffffff5;font-size:clamp(38px,7vw,82px);font-weight:900;letter-spacing:0;line-height:.95;text-align:center}.kiosk-screensaver-time small{color:#badbd1e0;font-size:clamp(13px,1.6vw,18px);font-weight:800;text-transform:capitalize}.kiosk-screensaver-top>strong{color:#c9a64cf5;display:block;font-size:clamp(16px,2vw,24px);font-weight:850;line-height:1.1;text-align:center}.kiosk-screensaver-title{color:#ecfdf5e6;display:block;font-size:clamp(22px,3.6vw,44px);font-style:normal;font-weight:800}.kiosk-screensaver-terminal{background:#c9a64c1f;border:1px solid rgba(201,166,76,.32);border-radius:var(--radius-pill);color:#ffefbff0;display:inline-flex;font-size:clamp(12px,1.45vw,16px);font-weight:850;padding:9px 18px}.kiosk-screensaver-action{align-items:center;display:inline-flex;flex-direction:column;gap:6px;max-width:740px;padding:4px 0}.kiosk-screensaver-action-pt{background:linear-gradient(90deg,#6ee7b7fa,#c9a64ceb);background-clip:text;-webkit-background-clip:text;color:transparent;font-size:clamp(24px,4.8vw,54px);font-weight:950;line-height:1.05;text-shadow:none}.kiosk-screensaver-en{color:#badbd1b8;display:block;font-size:clamp(11px,1.3vw,16px);font-style:italic;font-weight:700;letter-spacing:.01em}.kiosk-screensaver-hints{align-items:center;color:#badbd1c7;display:flex;flex-wrap:wrap;gap:10px 16px;justify-content:center}.kiosk-screensaver-hint{align-items:center;display:flex;flex-direction:column;gap:2px}.kiosk-screensaver-hint-row{align-items:center;display:inline-flex;font-size:clamp(12px,1.5vw,15px);font-weight:800;gap:6px}.kiosk-screensaver-hint .kiosk-screensaver-en{font-size:clamp(10px,1.2vw,13px);opacity:.85}.kiosk-screensaver-hints svg{color:var(--gold);height:17px;width:17px}.kiosk-camera-panel{display:grid;grid-template-rows:minmax(0,1fr) auto;gap:14px;min-height:0;padding:20px}.kiosk-brandline strong,.kiosk-brandline span{display:block}.kiosk-brandmark{align-items:center;background:transparent;border:0;cursor:pointer;display:inline-flex;height:36px;justify-content:flex-start;margin-bottom:8px;overflow:hidden;pointer-events:auto;width:36px}.kiosk-brandmark.has-logo img{display:block;height:100%;object-fit:contain;width:100%}.kiosk-brandline span{color:#ffffff8c;font-size:var(--text-sm);font-weight:700;margin-top:0}.kiosk-camera-frame{background:#00000057;border:1px solid rgba(255,255,255,.1);border-radius:28px;display:grid;min-height:0;overflow:hidden;place-items:center;position:relative}.kiosk-camera-overlay{align-items:flex-start;background:linear-gradient(180deg,rgba(0,0,0,.62),rgba(0,0,0,.22),transparent);display:grid;gap:18px;grid-template-columns:minmax(180px,.8fr) minmax(260px,1.2fr);left:0;padding:28px 32px 90px;pointer-events:none;position:absolute;right:0;top:0;z-index:3}.kiosk-camera-overlay [data-kiosk-logo-admin]{pointer-events:auto}.kiosk-clock{text-align:right}.kiosk-clock strong,.kiosk-clock span{display:block}.kiosk-clock strong{font-size:clamp(48px,7vw,86px);font-weight:900;line-height:1;text-shadow:0 10px 28px rgba(0,0,0,.42)}.kiosk-clock span{color:#ecfdf5e6;font-size:var(--text-xl);margin-top:8px;text-transform:capitalize}.kiosk-camera-frame:before,.kiosk-camera-frame:after{border-color:#34d399b3;border-style:solid;content:"";height:48px;position:absolute;width:48px}.kiosk-camera-frame:before{border-width:3px 0 0 3px;left:22px;top:22px}.kiosk-camera-frame:after{border-width:0 3px 3px 0;bottom:22px;right:22px}.kiosk-camera-placeholder{color:#ffffffa8;display:grid;gap:10px;max-width:360px;text-align:center;z-index:2}.kiosk-camera-placeholder span{align-items:center;background:#ffffff14;border-radius:20px;color:var(--gold);display:inline-flex;font-size:var(--text-3xl);font-weight:900;height:78px;justify-content:center;justify-self:center;letter-spacing:.12em;width:78px}.kiosk-camera-placeholder strong{color:#fff;font-size:var(--text-3xl)}.kiosk-camera-placeholder small{color:#ffffff73}.kiosk-camera-placeholder.warning span{color:#fc6}.kiosk-camera-placeholder.warning small{color:#ffe1a0d1}.kiosk-camera-video{height:100%;object-fit:cover;width:100%}.kiosk-sensors{display:flex;flex-wrap:wrap;gap:10px;justify-content:center}.kiosk-sensors span{align-items:center;background:#ffffff14;border:1px solid rgba(255,255,255,.1);border-radius:var(--radius-xl);color:#ffffffb8;display:inline-flex;gap:8px;max-width:100%;padding:8px 12px;word-break:break-word}.kiosk-sensors i{border-radius:50%;height:8px;width:8px}.kiosk-sensors i.ok{background:#34d399}.kiosk-sensors i.warn{background:#fc6}.kiosk-input-panel{background:#ffffff0f;border-left:1px solid rgba(255,255,255,.1);display:flex;flex-direction:column;gap:clamp(12px,1.65vh,18px);justify-content:center;padding:clamp(22px,3vw,34px);position:relative}.kiosk-lang-toggle{background:#ffffff14;border:1px solid rgba(255,255,255,.22);border-radius:var(--radius-pill);color:#fff;cursor:pointer;font-size:var(--text-base);font-weight:900;letter-spacing:.04em;padding:6px 14px;position:absolute;right:clamp(16px,2.4vw,28px);top:clamp(16px,2.4vh,28px)}.kiosk-input-panel h1{font-size:30px;line-height:1.1;margin:0 0 8px}.kiosk-input-panel p{color:#ffffff7a;line-height:1.45;margin:0}.kiosk-fields{display:grid;gap:10px}.kiosk-field{background:#ffffff1a;border:1px solid rgba(255,255,255,.1);border-radius:18px;color:#fff;padding:clamp(13px,1.7vh,16px);text-align:left}.kiosk-field.active{box-shadow:0 0 0 3px #34d39957}.kiosk-field span,.kiosk-field small{color:#6ee7b7bf;display:block;font-size:var(--text-xs);font-weight:800;letter-spacing:.18em;text-transform:uppercase}.kiosk-field strong{display:block;font-size:clamp(23px,2.7vw,28px);line-height:1.1;margin:7px 0}.kiosk-field small.found{color:#6ee7b7}.kiosk-field small.unknown{color:#fca5a5}.kiosk-numpad{display:grid;gap:clamp(8px,1.2vh,10px);grid-template-columns:repeat(3,minmax(0,1fr))}.kiosk-numpad button,.kiosk-punch-types button{background:#ffffff1a;border:1px solid rgba(255,255,255,.1);border-radius:18px;color:#fff;font-size:var(--text-4xl);font-weight:900;min-height:clamp(58px,8vh,76px)}.kiosk-numpad button:active,.kiosk-punch-types button:active,.kiosk-submit:active{transform:scale(.98)}.kiosk-punch-types{display:grid;gap:8px;grid-template-columns:repeat(4,minmax(0,1fr))}.kiosk-punch-types button{border-radius:var(--radius-2xl);font-size:var(--text-base);min-height:44px;position:relative}.kiosk-punch-types button.active{background:#10b981}.kiosk-punch-types button.suggested:after{background:#ffffff38;border-radius:var(--radius-pill);content:"auto";font-size:9px;font-weight:900;padding:2px 5px;position:absolute;right:6px;top:5px;text-transform:uppercase}.kiosk-submit{background:#10b981;border:0;border-radius:20px;color:#fff;font-size:20px;font-weight:900;min-height:64px;margin-top:2px}.kiosk-qr-toggle{align-items:center;background:#ffffff14;border:1px solid rgba(255,255,255,.18);border-radius:20px;color:#fff;display:flex;font-size:var(--text-2xl);font-weight:900;gap:10px;justify-content:center;min-height:64px;margin-top:8px;padding:10px 16px;text-align:center;white-space:nowrap}.kiosk-qr-toggle svg{flex-shrink:0;height:24px;width:24px}.kiosk-qr-toggle.active{background:#10b981;border-color:transparent;box-shadow:0 0 0 4px #10b98140}.kiosk-qr-status{color:#ffffffbf;display:block;font-size:var(--text-base);font-weight:700;min-height:18px;text-align:center}.kiosk-qr-scan-overlay{align-items:center;background:#00000073;display:flex;flex-direction:column;gap:20px;inset:0;justify-content:center;position:absolute;z-index:4}.kiosk-qr-scan-overlay strong{background:#00000080;border-radius:var(--radius-pill);color:#fff;font-size:var(--text-xl);padding:8px 18px}.kiosk-qr-scan-frame{height:min(46vw,300px);position:relative;width:min(46vw,300px)}.kiosk-qr-scan-frame .corner{border-color:#10b981;border-style:solid;height:44px;position:absolute;width:44px}.kiosk-qr-scan-frame .corner.tl{border-width:5px 0 0 5px;border-top-left-radius:12px;left:0;top:0}.kiosk-qr-scan-frame .corner.tr{border-width:5px 5px 0 0;border-top-right-radius:12px;right:0;top:0}.kiosk-qr-scan-frame .corner.bl{border-width:0 0 5px 5px;border-bottom-left-radius:12px;bottom:0;left:0}.kiosk-qr-scan-frame .corner.br{border-width:0 5px 5px 0;border-bottom-right-radius:12px;bottom:0;right:0}.kiosk-qr-scan-line{animation:kiosk-qr-scan-move 2.2s ease-in-out infinite;background:linear-gradient(90deg,transparent,#10b981,transparent);height:3px;left:8px;position:absolute;right:8px;top:8px}@keyframes kiosk-qr-scan-move{0%{top:8px}50%{top:calc(100% - 12px)}to{top:8px}}@media(prefers-reduced-motion:reduce){.kiosk-qr-scan-line{animation:none}}.employee-qr-body{align-items:center;display:flex;flex-wrap:wrap;gap:20px}.employee-qr-code{background:#fff;border-radius:var(--radius-xl);display:flex;min-height:140px;min-width:140px;align-items:center;justify-content:center;padding:10px}.employee-qr-code img{display:block}.employee-qr-info{color:var(--muted);flex:1;min-width:200px}.employee-qr-info p{margin:0 0 10px}.announcement-list{display:flex;flex-direction:column;gap:10px}.announcement-card{background:var(--surface-soft);border:1px solid var(--line);border-radius:var(--radius-lg);padding:14px 16px}.announcement-card.unread{background:color-mix(in srgb,var(--info) 8%,var(--surface-soft) 92%);border-color:color-mix(in srgb,var(--info) 35%,var(--line) 65%)}.announcement-card-head{align-items:center;display:flex;gap:8px;justify-content:space-between}.announcement-card p{color:var(--text);line-height:1.5;margin:8px 0 10px;white-space:pre-wrap}.announcement-card-foot{align-items:center;display:flex;gap:10px;justify-content:space-between}.announcement-card-foot small{color:var(--muted)}.announcement-banner{align-items:center;background:color-mix(in srgb,var(--info) 12%,var(--surface) 88%);border:1px solid color-mix(in srgb,var(--info) 35%,var(--line) 65%);border-radius:var(--radius-xl);color:var(--text);display:flex;font-weight:700;gap:10px;padding:12px 16px;text-align:left;width:100%}.announcement-banner svg{color:var(--info-text);flex-shrink:0;height:20px;width:20px}.kiosk-admin-pin{align-items:center;background:#081c23db;border:1px solid rgba(212,175,55,.42);border-radius:var(--radius-pill);box-shadow:0 16px 38px #00000038;color:#f5d46b;display:inline-flex;gap:8px;font-size:var(--text-base);font-weight:800;justify-content:center;min-height:44px;padding:0 18px;position:fixed;right:max(18px,env(safe-area-inset-right));top:max(18px,env(safe-area-inset-top));z-index:46}.kiosk-admin-pin svg{height:18px;width:18px}.kiosk-admin-pin:active{transform:scale(.98)}.kiosk-result{align-items:center;background:#00000094;display:flex;inset:0;justify-content:center;padding:calc(24px + env(safe-area-inset-top,0px)) calc(24px + env(safe-area-inset-right,0px)) calc(24px + env(safe-area-inset-bottom,0px)) calc(24px + env(safe-area-inset-left,0px));position:fixed;z-index:50}.kiosk-result>div{border-radius:30px;max-width:520px;padding:44px;text-align:center;width:100%}.kiosk-result.success>div{background:#10b981f0}.kiosk-result.danger>div{background:#dc2626f0}.kiosk-result strong{align-items:center;background:#fff3;border-radius:50%;display:inline-flex;font-size:42px;height:84px;justify-content:center;width:84px}.kiosk-result h2{color:#fff;font-size:34px;margin:20px 0 8px}.kiosk-result p{color:#ffffffc7;font-size:var(--text-2xl);margin:0}.timeline-item strong,.timeline-item span{display:block}.timeline-item span{color:var(--muted);font-size:var(--text-sm);margin-top:3px}.record-grid{display:grid;gap:var(--space-4);grid-template-columns:repeat(3,minmax(0,1fr))}.asset-type-strip{display:grid;gap:10px;grid-template-columns:repeat(7,minmax(120px,1fr));margin-bottom:14px;overflow-x:auto}.asset-type-strip article{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-md);box-shadow:var(--shadow);min-height:72px;padding:12px}.asset-type-strip strong,.asset-type-strip span{display:block}.asset-type-strip span{color:var(--muted);font-size:var(--text-sm);margin-top:6px}.asset-spec-grid{display:grid;gap:14px;grid-template-columns:repeat(3,minmax(0,1fr));margin-top:16px}.record-card{padding:15px}.record-card h3{font-size:var(--text-xl);margin:0 0 8px}.record-card p{color:var(--muted);line-height:1.45;margin:0 0 12px}.orgchart-workspace{display:grid;gap:var(--space-4);grid-template-columns:minmax(230px,290px) minmax(0,1fr) minmax(260px,330px);align-items:start}.orgchart-executive-band{background:color-mix(in srgb,var(--brand-soft) 58%,var(--surface) 42%);border:1px solid color-mix(in srgb,var(--gold) 28%,var(--line) 72%);border-radius:var(--radius-md);display:grid;gap:12px;margin-bottom:var(--space-4);padding:14px}.orgchart-executive-band.direction-band{background:color-mix(in srgb,var(--surface-2) 64%,var(--brand-soft) 36%);border-color:color-mix(in srgb,var(--brand) 24%,var(--line) 76%)}.orgchart-executive-grid{display:grid;gap:10px;grid-template-columns:repeat(auto-fit,minmax(230px,1fr))}.orgchart-flow{align-items:center;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-md);display:flex;flex-wrap:wrap;gap:8px;margin-bottom:var(--space-4);padding:10px 12px}.orgchart-flow span,.orgchart-flow strong{background:color-mix(in srgb,var(--surface-2) 72%,var(--brand-soft) 28%);border:1px solid var(--line);border-radius:var(--radius-pill);font-size:var(--text-sm);padding:7px 10px}.orgchart-flow span:after,.orgchart-flow strong:not(:last-child):after{color:var(--gold);content:">";font-weight:900;margin-left:10px}.orgchart-manager-card.executive{border-color:color-mix(in srgb,var(--gold) 28%,var(--line) 72%);grid-template-rows:auto minmax(0,1fr) auto}.orgchart-manager-card.direction{border-color:color-mix(in srgb,var(--brand) 24%,var(--line) 76%)}.orgchart-department-nav,.orgchart-detail-card,.orgchart-manager-sidebar{background:color-mix(in srgb,var(--surface) 94%,var(--brand) 6%);border:1px solid var(--line);border-radius:var(--radius-md);min-width:0}.orgchart-department-nav,.orgchart-manager-sidebar{display:grid;gap:12px;padding:12px}.orgchart-column-head strong,.orgchart-column-head small{display:block}.orgchart-column-head small,.orgchart-detail-header small,.orgchart-manager-card small,.orgchart-manager-card span,.orgchart-department-nav-item small,.orgchart-department-employee small{color:var(--muted);font-size:var(--text-sm)}.orgchart-department-list,.orgchart-manager-list,.orgchart-employee-list{display:grid;gap:8px}.orgchart-department-nav-item{align-items:center;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-md);color:var(--text);cursor:pointer;display:flex;gap:10px;justify-content:space-between;min-height:58px;padding:10px;text-align:left}.orgchart-department-nav-item:hover,.orgchart-department-nav-item.active{background:color-mix(in srgb,var(--brand-soft) 72%,var(--surface) 28%);border-color:color-mix(in srgb,var(--brand) 38%,var(--line) 62%)}.orgchart-department-nav-item strong,.orgchart-department-nav-item small{display:block}.orgchart-detail-card{display:grid;gap:14px;padding:16px}.orgchart-detail-header{align-items:flex-start;display:flex;gap:12px;justify-content:space-between}.orgchart-detail-header strong{display:block;font-size:20px}.orgchart-header-actions{align-items:flex-end;display:flex;flex-direction:column;gap:8px}.orgchart-header-actions .secondary-action{min-height:34px;padding:0 12px;white-space:nowrap}.orgchart-summary-strip{display:grid;gap:10px;grid-template-columns:repeat(3,minmax(0,1fr))}.orgchart-summary-strip>div{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius-md);padding:10px}.orgchart-summary-strip small,.orgchart-section>small{color:var(--muted);display:block;font-size:var(--text-xs);font-weight:850;letter-spacing:.04em;text-transform:uppercase}.orgchart-summary-strip strong{display:block;margin-top:4px}.orgchart-empty{align-self:center;color:var(--muted);font-size:var(--text-base)}.orgchart-section,.orgchart-pill-list{display:grid;gap:8px}.orgchart-pill-list.inline{align-items:center;display:flex;flex-wrap:wrap}.orgchart-assignee{align-items:center;align-self:flex-start;background:color-mix(in srgb,var(--brand-soft) 78%,var(--surface) 22%);border:1px solid color-mix(in srgb,var(--brand) 24%,var(--line) 76%);border-radius:var(--radius-pill);color:var(--text);display:inline-flex;gap:8px;flex:0 0 auto;min-height:30px;padding:6px 8px 6px 12px;width:fit-content}.orgchart-assignee.compact{min-height:28px;padding:5px 10px}.orgchart-assignee.compact strong{line-height:1.1}.orgchart-assignee strong{font-size:var(--text-sm)}.orgchart-assignee small{color:var(--muted);font-size:var(--text-2xs);font-weight:800;letter-spacing:.04em;text-transform:uppercase}.orgchart-assignee button{align-items:center;background:color-mix(in srgb,var(--danger) 12%,var(--surface) 88%);border:0;border-radius:var(--radius-pill);color:var(--danger-text);cursor:pointer;display:inline-flex;font-size:var(--text-xl);font-weight:900;height:24px;justify-content:center;line-height:1;width:24px}.orgchart-assignee button svg{height:14px;width:14px}.orgchart-manager-card,.orgchart-department-employee{align-items:center;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-md);display:grid;gap:10px;min-width:0;padding:10px}.orgchart-manager-card{align-items:stretch}.orgchart-manager-main,.orgchart-department-employee{grid-template-columns:auto minmax(0,1fr) auto}.orgchart-manager-main{align-items:center;display:grid;gap:10px}.orgchart-manager-card strong,.orgchart-manager-card small,.orgchart-manager-card span,.orgchart-department-employee strong,.orgchart-department-employee small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.orgchart-manager-scope{align-content:flex-start;align-items:flex-start;display:flex;flex-wrap:wrap;gap:6px}.orgchart-manager-scope.executive-scope{align-self:start;min-height:0}.orgchart-manager-list.compact{max-height:none}.orgchart-manager-list.compact .orgchart-manager-card{padding:9px}.orgchart-manager-list.compact .orgchart-manager-scope{max-height:none;overflow:visible}.orgchart-employee-actions{align-items:center;display:flex;flex-wrap:wrap;gap:7px;justify-content:flex-end}.orgchart-employee-actions .secondary-action{min-height:34px;padding:0 10px;white-space:nowrap}@media(max-width:1180px){.orgchart-workspace{grid-template-columns:minmax(220px,280px) minmax(0,1fr)}.orgchart-manager-sidebar{grid-column:1 / -1}.orgchart-manager-list.compact{grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}}.stat-list{display:grid;gap:10px}.stat-row{align-items:center;display:grid;gap:10px;grid-template-columns:112px 1fr 44px}.ai-box{background:linear-gradient(135deg,#00735629,#246bfe1a);border:1px solid rgba(0,115,86,.26);border-radius:var(--radius-md);padding:15px}.ai-box h3{margin:0 0 10px}.ai-box p{line-height:1.45;margin:0 0 12px}.split-detail{display:grid;gap:16px;grid-template-columns:minmax(0,1fr) 340px}.detail-list{align-content:start;display:grid;gap:10px}.detail-list p,.detail-list h3,.detail-list ul{margin:0}.mapping-legend{align-items:center;border-top:1px solid var(--line);display:flex;flex-wrap:wrap;gap:6px 12px;margin-top:14px;padding-top:14px}.mapping-legend small{color:var(--muted);margin-right:8px}.mapping-fields{display:grid;gap:10px;padding:0 18px 18px}.mapping-field-row{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius-md);display:grid;gap:8px;padding:12px 14px}.mapping-field-name{align-items:center;display:flex;font-family:SFMono-Regular,Consolas,monospace;font-size:var(--text-base);gap:8px}.mapping-sources{display:flex;flex-wrap:wrap;gap:8px}.mapping-source{align-items:flex-start;border-radius:var(--radius-md);display:inline-flex;flex-direction:column;gap:2px;padding:6px 10px}.mapping-source strong{font-size:var(--text-2xs);font-weight:800;letter-spacing:.05em;text-transform:uppercase}.mapping-source span{font-family:SFMono-Regular,Consolas,monospace;font-size:var(--text-sm);font-weight:600;word-break:break-word}.mapping-source.idonic{background:#246bfe1a;color:var(--info-text)}.mapping-source.phc{background:#c7a34729;color:#8a6d1f}[data-theme=dark] .mapping-source.phc{color:var(--gold)}.mapping-source.local{background:var(--brand-soft);color:var(--brand)}.mapping-source.none{background:var(--surface);color:var(--muted)}.mapping-rule{color:var(--muted);font-size:var(--text-base);line-height:1.45;margin:0}.detail-row{border-bottom:1px solid var(--line);display:flex;justify-content:space-between;padding-bottom:9px}.detail-row span{color:var(--muted)}.branding-split{display:grid;gap:var(--space-4);grid-template-columns:repeat(2,minmax(0,1fr));padding:var(--space-4)}.branding-card{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius-md);display:grid;gap:14px;padding:14px}.branding-card-head{align-items:center;display:grid;gap:12px;grid-template-columns:46px minmax(0,1fr)}.branding-card-head h3{font-size:var(--text-2xl);line-height:1.2;margin:2px 0 0}.tabs{display:flex;gap:6px;overflow-x:auto;padding:0 0 12px}.tab-button{background:var(--surface-2);border:0;border-radius:var(--radius-sm);color:var(--text);min-height:36px;padding:8px 12px}.tab-button.active{background:var(--brand);color:#fff}.kanban{display:grid;gap:12px;grid-template-columns:repeat(5,minmax(220px,1fr));overflow-x:auto}.kanban-column{background:var(--surface-2);border-radius:var(--radius-md);min-height:420px;padding:10px}.kanban-column h3{font-size:var(--text-base);margin:0 0 10px}.ticket-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-md);margin-bottom:10px;padding:12px}.ticket-card strong{display:block;margin-bottom:7px}.ticket-card p{color:var(--muted);margin:0 0 10px}.ticket-card{cursor:pointer}.ticket-comments{display:flex;flex-direction:column;gap:10px;margin:12px 0;max-height:320px;overflow-y:auto}.ticket-comment{background:var(--surface-2);border-radius:var(--radius-md);padding:10px 12px}.ticket-comment.internal{background:var(--warning-bg, rgba(198, 128, 0, .12))}.ticket-comment>div{display:flex;align-items:center;gap:8px;margin-bottom:4px;font-size:var(--text-sm)}.ticket-comment>div span:not(.badge){color:var(--muted);font-size:var(--text-xs)}.ticket-comment p{margin:0}.ticket-card-breached{border-color:var(--danger);box-shadow:inset 3px 0 0 var(--danger)}.kanban-column-dragover{outline:2px dashed var(--brand);outline-offset:-2px}.modal-backdrop{align-items:center;background:#0000006b;display:flex;inset:0;justify-content:center;padding:calc(18px + env(safe-area-inset-top,0px)) calc(18px + env(safe-area-inset-right,0px)) calc(18px + env(safe-area-inset-bottom,0px)) calc(18px + env(safe-area-inset-left,0px));position:fixed;z-index:20}.modal-backdrop[hidden]{display:none}.modal{max-height:min(780px,92vh);max-width:720px;overflow:auto;overscroll-behavior:contain;touch-action:pan-y;-webkit-overflow-scrolling:touch;width:100%}.modal.wide-modal{max-width:min(1040px,calc(100vw - 32px))}.modal.xwide-modal{max-height:min(920px,94vh);max-width:min(1280px,calc(100vw - 32px))}.detail-inline-action{align-items:center;display:flex;gap:8px}.detail-inline-action input{flex:1;min-width:0}.detail-inline-action button{flex-shrink:0;white-space:nowrap}.modal.qr-pass-modal{max-width:380px}.qr-pass-standalone{align-items:center;background:var(--sidebar-bg);display:flex;justify-content:center;min-height:100vh;min-height:100dvh;padding:24px}.qr-pass-standalone .qr-pass{max-width:380px;width:100%}.modal.qr-pass-modal #modalBody{padding:0 16px 20px}.qr-pass{align-items:center;background:linear-gradient(180deg,var(--sidebar-bg) 0%,rgba(7,26,34,.94) 42%,rgba(0,115,86,.96) 100%),var(--sidebar-bg);border-radius:22px;box-shadow:0 18px 42px #080f1e59;color:#fff;display:flex;flex-direction:column;gap:14px;overflow:hidden;padding:22px 22px 24px;position:relative;text-align:center}.qr-pass-top{align-items:center;display:flex;flex-direction:column;gap:8px;width:100%}.qr-pass-company-logo{height:auto;max-height:56px;max-width:72%;object-fit:contain;width:auto}.qr-pass-brand{font-size:var(--text-xl);font-weight:700;letter-spacing:.2px}.qr-pass-label{display:flex;flex-direction:column;font-size:var(--text-sm);gap:3px;opacity:.82;text-transform:uppercase;letter-spacing:.6px}.qr-pass-label-en,.qr-pass-hint-en,.qr-pass-export-en{color:var(--gold, #c7a347);display:block;font-weight:500;opacity:.92;text-transform:none}.qr-pass-label-en{font-size:var(--text-2xs);letter-spacing:.4px}.qr-pass-code{background:#fff;border-radius:var(--radius-3xl);box-shadow:0 8px 20px #00000040;padding:16px}.qr-pass-code img{display:block;height:auto;image-rendering:pixelated;width:min(240px,60vw)}.qr-pass-holder{display:flex;flex-direction:column;gap:2px}.qr-pass-holder strong{font-size:var(--text-2xl)}.qr-pass-holder span{font-size:var(--text-base);opacity:.85}.qr-pass-hint{font-size:var(--text-sm);margin:0;opacity:.8}.qr-pass-hint-en{font-size:var(--text-xs);margin-top:3px}.qr-pass-export{align-items:center;background:#ffffff29;border:1px solid rgba(255,255,255,.32);border-radius:var(--radius-pill);color:#fff;cursor:pointer;display:inline-flex;font-size:var(--text-md);font-weight:600;gap:8px;justify-content:center;padding:10px 20px;transition:background .14s ease}.qr-pass-export:hover{background:#ffffff42}.qr-card-secret-full{font-family:var(--font-mono, monospace);font-size:var(--text-lg);letter-spacing:.5px}.qr-card-view-mock-wrap{margin:0 auto;max-width:260px;width:100%}.qr-card-mock-qr img{height:100%;object-fit:contain;width:100%}.qr-card-export-menu button{background:transparent;border:none;border-radius:var(--radius-sm, 6px);color:inherit;cursor:pointer;font-size:var(--text-sm);padding:8px 10px;text-align:left}.qr-card-export-menu button:hover{background:var(--hover-bg, rgba(0, 0, 0, .05))}.qr-card-form-layout{align-items:start;display:grid;gap:20px;grid-template-columns:minmax(0,1fr) 220px}@media(max-width:720px){.qr-card-form-layout{grid-template-columns:1fr}}.qr-card-preview-wrap{display:flex;flex-direction:column;gap:8px;position:sticky;top:0}.qr-card-real-preview{border-radius:18px;box-shadow:0 12px 30px #080f1e59;display:block;max-width:100%;width:100%}.qr-card-mock{aspect-ratio:2 / 3;background:linear-gradient(135deg,#007356,#025a47);border-radius:18px;box-shadow:0 12px 30px #080f1e59;color:#fff;display:flex;flex-direction:column;overflow:hidden;padding:16px;position:relative;width:100%}.qr-card-mock-dots{background-image:radial-gradient(var(--gold, #cf9f3f) 1.4px,transparent 1.4px);background-size:9px 9px;height:46px;opacity:.85;position:absolute;width:46px}.qr-card-mock-dots-tr{right:10px;top:10px}.qr-card-mock-dots-bl{bottom:10px;left:10px}.qr-card-mock-top{align-items:center;display:flex;gap:10px;position:relative;z-index:1}.qr-card-mock-crest{height:34px;object-fit:contain;width:34px}.qr-card-mock-crest-text{border-right:2px solid var(--gold, #cf9f3f);font-size:var(--text-xs);font-weight:700;padding-right:8px}.qr-card-mock-title{display:flex;flex-direction:column;font-size:var(--text-xs);font-weight:700;letter-spacing:.5px;line-height:1.1}.qr-card-mock-title strong{color:var(--gold, #cf9f3f);font-size:var(--text-xl)}.qr-card-mock-panel{align-items:center;background:#f6f2e8;border-radius:14px;color:#123a30;display:flex;flex:1;flex-direction:column;gap:8px;margin-top:14px;padding:16px 12px;position:relative;z-index:1}.qr-card-mock-icon{color:#007356;width:26px}.qr-card-mock-panel h3{font-size:var(--text-md);margin:0;text-align:center}.qr-card-mock-divider{background:var(--gold, #cf9f3f);height:1px;margin:2px 0;width:70%}.qr-card-mock-qr{align-items:center;background:#fff;border:1.5px solid var(--gold, #cf9f3f);border-radius:10px;color:#123a30;display:flex;height:84px;justify-content:center;width:84px}.qr-card-mock-qr svg{width:54px}.qr-card-mock-secret{align-items:center;background:#025a47;border-radius:10px;color:#fff;display:flex;font-size:var(--text-sm);font-weight:700;gap:8px;padding:8px 12px;width:100%}.qr-card-mock-secret svg{color:var(--gold, #cf9f3f);flex-shrink:0;width:14px}.qr-card-mock-footer{align-items:flex-start;color:var(--gold, #cf9f3f);display:flex;font-size:9px;font-weight:600;gap:6px;justify-content:center;margin-top:12px;padding:0 12px;position:relative;text-align:center;z-index:1}.qr-card-mock-footer svg{flex-shrink:0;width:14px}.mobile-only{display:none!important}@media(max-width:640px){.mobile-only{display:inline-flex!important}}.qr-pass-export svg{flex:none;height:18px;width:18px}.qr-pass-export-label{display:flex;flex-direction:column;gap:2px;line-height:1.2;text-align:left}.qr-pass-export-en{font-size:10.5px;font-weight:500}.qr-pass-app{align-items:center;display:flex;gap:7px;justify-content:center;margin-top:4px;opacity:.62}.qr-pass-app-logo{height:18px;width:auto}.qr-pass-app span{font-size:var(--text-xs);font-weight:600;letter-spacing:.3px}.qr-pass-close{align-items:center;background:#ffffff29;border:0;border-radius:var(--radius-pill);color:#fff;cursor:pointer;display:none;height:40px;justify-content:center;position:absolute;right:14px;top:14px;width:40px;z-index:2}.qr-pass-close svg{height:20px;width:20px}@media(max-width:640px){.modal-backdrop:has(.modal.qr-pass-modal){padding:0}.modal.qr-pass-modal{border-radius:0;max-height:100vh;max-height:100dvh;max-width:100%;height:100vh;height:100dvh}.modal.qr-pass-modal header{display:none}.modal.qr-pass-modal #modalBody{align-items:stretch;display:flex;height:100%;padding:0}.modal.qr-pass-modal .qr-pass{border-radius:0;box-shadow:none;flex:1;justify-content:center;padding:calc(32px + env(safe-area-inset-top)) 24px calc(32px + env(safe-area-inset-bottom))}.qr-pass-close{display:flex;right:max(14px,env(safe-area-inset-right));top:max(14px,env(safe-area-inset-top))}.qr-pass-code img{width:min(320px,78vw)}}.modal header{align-items:center;background:var(--surface);border-bottom:1px solid var(--line);display:flex;justify-content:space-between;padding:14px 16px;position:sticky;top:0;z-index:5}.modal h2{font-size:var(--text-2xl);margin:0}#modalBody{padding:16px}.modal.feedback-modal{max-width:min(420px,calc(100vw - 32px))}.modal.feedback-modal #modalBody{padding:18px}.feedback-message{align-items:flex-start;border-radius:var(--radius-xl);display:grid;gap:6px;padding:14px 16px}.feedback-message.success{background:color-mix(in srgb,var(--success) 12%,var(--surface) 88%);border:1px solid color-mix(in srgb,var(--success) 32%,var(--line) 68%)}.feedback-message.danger{background:color-mix(in srgb,var(--danger) 12%,var(--surface) 88%);border:1px solid color-mix(in srgb,var(--danger) 32%,var(--line) 68%)}.feedback-message.warning{background:color-mix(in srgb,#d99b1b 14%,var(--surface) 86%);border:1px solid color-mix(in srgb,#d99b1b 34%,var(--line) 66%)}.feedback-message strong{color:var(--text);font-size:17px;line-height:1.25}.feedback-message span{color:var(--muted);font-size:var(--text-md)}.punch-feedback{align-items:center;border-radius:var(--radius-3xl);display:flex;flex-direction:column;gap:6px;padding:28px 20px;text-align:center}.punch-feedback.success{background:color-mix(in srgb,var(--success) 14%,var(--surface) 86%)}.punch-feedback.danger{background:color-mix(in srgb,var(--danger) 14%,var(--surface) 86%)}.punch-feedback-icon{align-items:center;border-radius:50%;display:flex;height:64px;justify-content:center;margin-bottom:6px;width:64px}.punch-feedback-icon svg{height:34px;width:34px}.punch-feedback.success .punch-feedback-icon{background:color-mix(in srgb,var(--success) 22%,transparent);color:var(--success-text)}.punch-feedback.danger .punch-feedback-icon{background:color-mix(in srgb,var(--danger) 22%,transparent);color:var(--danger-text)}.punch-feedback h2{font-size:20px;margin:0}.punch-feedback p{color:var(--muted);font-size:var(--text-lg);margin:0}.punch-feedback small{color:var(--muted);font-size:var(--text-base);opacity:.85}.modal-backdrop:has(.modal.punch-feedback-modal){padding:0}.modal.punch-feedback-modal{border-radius:0;max-height:100vh;max-height:100dvh;max-width:100%;height:100vh;height:100dvh}.modal.punch-feedback-modal header{display:none}.modal.punch-feedback-modal #modalBody{align-items:center;display:flex;height:100%;padding:0}.modal.punch-feedback-modal .punch-feedback{background:none;flex:1;justify-content:center;padding:calc(32px + env(safe-area-inset-top,0px)) 28px calc(32px + env(safe-area-inset-bottom,0px))}.modal.punch-feedback-modal .punch-feedback.success{background:linear-gradient(160deg,var(--success) 0%,color-mix(in srgb,var(--success) 55%,#0b1220) 100%)}.modal.punch-feedback-modal .punch-feedback.danger{background:linear-gradient(160deg,var(--danger) 0%,color-mix(in srgb,var(--danger) 55%,#0b1220) 100%)}.modal.punch-feedback-modal .punch-feedback.success .punch-feedback-icon,.modal.punch-feedback-modal .punch-feedback.danger .punch-feedback-icon{background:#fff3;color:#fff;height:88px;width:88px}.modal.punch-feedback-modal .punch-feedback.success .punch-feedback-icon svg,.modal.punch-feedback-modal .punch-feedback.danger .punch-feedback-icon svg{height:46px;width:46px}.modal.punch-feedback-modal .punch-feedback h2{color:#fff;font-size:26px;margin-top:8px}.modal.punch-feedback-modal .punch-feedback p{color:#ffffffe6;font-size:var(--text-xl)}.modal.punch-feedback-modal .punch-feedback small{color:#ffffffbf}.auth-error-modal{display:grid;gap:12px}.auth-error-modal strong{color:#b42318;display:block;font-size:var(--text-3xl);line-height:1.15}.auth-error-modal p{color:var(--muted);margin:0}.kiosk-admin-hero{background:linear-gradient(135deg,#0073561f,#c9a64c24),var(--surface-muted);border:1px solid var(--line);border-radius:var(--radius-3xl);padding:16px}.kiosk-admin-hero span,.kiosk-admin-hero small{color:var(--muted);display:block}.kiosk-admin-hero span{font-size:var(--text-xs);font-weight:900;letter-spacing:.14em;text-transform:uppercase}.kiosk-admin-hero strong{color:var(--text);display:block;font-size:24px;line-height:1.1;margin:6px 0}.kiosk-touch-keyboard{background:color-mix(in srgb,var(--surface-muted) 78%,transparent);border:1px solid var(--line);border-radius:var(--radius-2xl);display:grid;gap:8px;padding:10px}.kiosk-touch-keyboard.shift-active{border-color:color-mix(in srgb,var(--primary) 42%,var(--line));box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--primary) 18%,transparent)}.kiosk-touch-targets{display:grid;gap:8px;grid-template-columns:repeat(2,minmax(0,1fr));margin-bottom:2px}.kiosk-touch-targets button,.kiosk-touch-keyboard-row button{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);color:var(--text);font-weight:800;min-height:46px;touch-action:manipulation}.kiosk-touch-targets button.active,.kiosk-touch-keyboard-row button.active{background:var(--primary);border-color:var(--primary);color:#fff}.kiosk-touch-keyboard-row button.shift-on{background:#c9a64c;border-color:#a9831d;box-shadow:0 0 0 3px #c9a64c38;color:var(--sidebar-bg)}.kiosk-touch-keyboard-row{display:grid;gap:6px;grid-template-columns:repeat(10,minmax(0,1fr))}.kiosk-touch-keyboard-row:nth-child(4){grid-template-columns:repeat(9,minmax(0,1fr))}.kiosk-touch-keyboard-row:nth-child(5){grid-template-columns:1.25fr repeat(7,minmax(0,1fr)) 1.25fr}.kiosk-touch-keyboard-row:nth-child(6){grid-template-columns:repeat(5,minmax(0,1fr))}.kiosk-touch-keyboard-row button{font-size:var(--text-xl)}[data-kiosk-pin-keyboard] .kiosk-touch-keyboard-row{grid-template-columns:repeat(3,minmax(0,1fr))}[data-kiosk-pin-keyboard] .kiosk-touch-keyboard-row button{min-height:52px}.form-grid{display:grid;gap:12px;grid-template-columns:repeat(2,minmax(0,1fr))}.modal-actions{display:flex;flex-wrap:wrap;gap:10px}.modal-actions button{flex:1;min-width:140px}.form-section{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius-md);display:grid;gap:12px;grid-template-columns:repeat(2,minmax(0,1fr));padding:14px}.form-section h3{font-size:17px;margin:2px 0 0}.full{grid-column:1 / -1}.hardware-specs-header{align-items:center;display:flex;justify-content:space-between;gap:10px}.permission-grid{display:grid;gap:12px;grid-template-columns:repeat(2,minmax(0,1fr))}.permission-modules{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.permission-module-header{align-items:center;display:flex;gap:8px}.permission-select-all{border-bottom:1px solid var(--line);margin-bottom:4px;padding-bottom:10px}.permission-module-header input{accent-color:var(--brand);flex:0 0 16px;height:16px;width:16px}.permission-group{background:#0f5f5409;border:1px solid var(--line);border-radius:var(--radius-2xl);display:grid;gap:7px;padding:10px}.permission-group strong{color:var(--muted);font-size:var(--text-xs);letter-spacing:.08em;text-transform:uppercase}.permission-item{align-items:center;background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius-xl);display:flex;gap:8px;min-height:34px;padding:7px 9px}.permission-item input{accent-color:var(--brand);flex:0 0 18px;height:18px;width:18px}.permission-item small{color:var(--muted);display:block;flex-basis:100%;font-size:var(--text-xs);margin-left:26px}.profile-permissions{background:#0f5f5409;border:1px solid var(--line);border-radius:var(--radius-2xl);display:grid;gap:10px;padding:12px}.profile-permissions strong{color:var(--muted);font-size:var(--text-sm)}.profile-permissions div{display:flex;flex-wrap:wrap;gap:7px}.empty-state{color:var(--muted);padding:30px;text-align:center}@media(max-width:1120px){.login-screen{grid-template-columns:1fr;justify-items:center;min-height:100dvh;padding:clamp(14px,3vw,28px)}.login-brand-panel{border-radius:18px;max-width:680px;min-height:260px;width:100%}.login-brand-lockup img{max-height:142px}.login-card{max-width:520px}.kpi-grid,.dashboard-kpi-grid,.record-grid,.three-col,.asset-spec-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.two-col,.dashboard-analysis-grid,.split-detail,.branding-split,.attendance-hero,.operational-split,.employee-console,.employee-portal,.kiosk-board{grid-template-columns:1fr}.employee-menu,.employee-action-grid,.form-section{grid-template-columns:repeat(2,minmax(0,1fr))}.employee-side-menu{position:static}.employee-menu{display:grid}.filters{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:780px){.settings-grid{grid-template-columns:1fr}body.sidebar-open{overflow:hidden}.panel-header{align-items:flex-start;flex-wrap:wrap;gap:8px 10px}.panel-header>*:last-child{margin-left:auto}.panel-header-actions{flex-wrap:wrap;width:100%}.table-toolbar{flex-wrap:wrap;justify-content:flex-start}.qr-cards-table-wrap table,.qr-cards-table-wrap tbody,.qr-cards-table-wrap tr,.qr-cards-table-wrap td{display:block;width:100%}.qr-cards-table-wrap table{min-width:0}.qr-cards-table-wrap thead{display:none}.qr-cards-table-wrap tr{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);margin-bottom:10px;padding:10px 12px}.qr-cards-table-wrap td{align-items:center;border:0;display:flex;gap:12px;justify-content:space-between;padding:7px 0;text-align:right}.qr-cards-table-wrap td:not(:last-child){border-bottom:1px solid var(--line)}.qr-cards-table-wrap td:before{color:var(--muted);flex:0 0 auto;font-size:var(--text-xs);font-weight:600;text-align:left;text-transform:uppercase}.qr-cards-table-wrap td[data-label=""]:before,.qr-cards-table-wrap td[data-label=Acoes]:before{content:none}.qr-cards-table-wrap td:not([data-label=""]):not([data-label=Acoes]):before{content:attr(data-label)}.qr-cards-table-wrap td[data-label=""]{justify-content:flex-start}.qr-cards-table-wrap td[data-label=Acoes]{justify-content:flex-end}.qr-cards-table-wrap td[data-label="Link publico"]{align-items:stretch;flex-direction:column;gap:4px}.qr-cards-table-wrap td[data-label="Link publico"]:before{text-align:left}.qr-link-cell{align-items:center;display:flex;gap:8px;width:100%}.qr-link-cell code{flex:1 1 auto;min-width:0;overflow:hidden;text-align:left;text-overflow:ellipsis;white-space:nowrap}.absence-calendar{grid-template-columns:repeat(7,minmax(64px,1fr));overflow-x:auto;padding-bottom:10px}.orgchart-workspace{grid-template-columns:1fr}.orgchart-department-nav,.orgchart-manager-sidebar{max-height:none}.orgchart-department-list{display:grid;overflow:visible;padding-bottom:0}.orgchart-department-nav-item{width:100%}.orgchart-summary-strip{grid-template-columns:1fr}.orgchart-detail-header{display:grid}.orgchart-header-actions{align-items:stretch}.orgchart-department-employee{grid-template-columns:auto minmax(0,1fr)}.orgchart-employee-actions{grid-column:1 / -1;justify-content:flex-start}body.sidebar-open:before{background:#0315127a;content:"";inset:0;position:fixed;z-index:14}.login-screen{align-content:start;gap:0;padding:0 0 max(14px,env(safe-area-inset-bottom))}.login-brand-panel{background:linear-gradient(180deg,var(--sidebar-bg) 0%,rgba(7,26,34,.92) 40%,rgba(0,115,86,.96) 100%),var(--sidebar-bg);border:0;border-radius:0;box-shadow:none;justify-content:center;min-height:208px;padding:34px 22px 52px;width:100%}.login-brand-panel.has-company-image{background:linear-gradient(180deg,var(--sidebar-bg) 0%,rgba(7,26,34,.76) 48%,rgba(0,115,86,.74) 100%),var(--company-image),var(--sidebar-bg);background-position:center;background-size:cover}.login-brand-panel:after{display:none}.login-brand-lockup{margin:0 auto;max-width:min(232px,72vw)}.login-brand-lockup img{max-height:86px;object-position:center;width:100%}.login-company-name{bottom:auto;font-size:var(--text-sm)!important;left:auto;letter-spacing:1.4px;margin:14px auto 0;position:static!important;right:auto;text-align:center}.login-proof{position:static;margin-top:24px}.login-card{background:var(--surface);border-radius:26px 26px 0 0;box-shadow:0 -12px 32px #06251f29;gap:12px;margin-top:-26px;max-width:none;padding:30px 18px 8px;position:relative;width:100%;z-index:1}.login-kicker{margin-bottom:8px}.login-card h2{font-size:var(--text-3xl)}.login-muted{font-size:var(--text-sm)}.sidebar{bottom:0;display:flex;flex-direction:column;height:100dvh;left:0;max-height:100dvh;max-width:380px;overflow:hidden;padding:max(14px,env(safe-area-inset-top)) 12px max(14px,env(safe-area-inset-bottom));position:fixed;top:0;transform:translate(-100%);transition:transform .2s ease;width:min(92vw,380px);z-index:15}.sidebar .brand{flex:0 0 auto;margin-bottom:10px;min-height:54px}.sidebar .brand strong{font-size:var(--text-base);line-height:1.15}.sidebar .brand span{font-size:var(--text-xs)}body.sidebar-open .sidebar,.sidebar.open{transform:translate(0)}.nav{align-content:start;flex:1 1 auto;gap:7px;grid-auto-rows:max-content;margin-right:-6px;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:2px 6px 8px 0;-webkit-overflow-scrolling:touch}.sidebar-footer{flex:0 0 auto;margin-top:8px;padding-top:10px}.nav-group{border-radius:var(--radius-xl)}.nav-group-toggle{border-radius:var(--radius-lg);font-size:var(--text-2xs);min-height:46px;padding:9px 10px}.nav-group-items{gap:4px;padding:0 6px 8px}.nav-button{border-radius:9px;font-size:var(--text-md);min-height:48px;padding:9px 10px}.nav-icon{flex-basis:32px;height:32px;width:32px}.nav-icon svg{height:18px;width:18px}.nav-parent-row{gap:6px;grid-template-columns:minmax(0,1fr) 42px}.nav-submenu-toggle{border-radius:9px;height:42px;width:42px}.nav-submenu{gap:4px;margin:4px 0 9px 12px;padding-left:9px}.nav-submenu:before{inset:4px auto 4px 0}.nav-submenu-button{border-radius:9px;grid-template-columns:24px minmax(0,1fr);min-height:42px;padding:7px 8px}.nav-submenu-button strong{font-size:var(--text-base)}.sidebar-logout{border-radius:var(--radius-lg);min-height:48px}.menu-button,.icon-button.menu-button{display:inline-flex}.topbar{align-items:center;background:color-mix(in srgb,var(--surface) 96%,transparent);backdrop-filter:blur(14px);flex-wrap:nowrap;gap:10px;min-height:58px;padding:8px max(14px,env(safe-area-inset-right)) 8px max(14px,env(safe-area-inset-left));position:-webkit-sticky;position:sticky;top:0;z-index:13}.topbar .icon-button{height:42px;min-width:42px;width:42px}.topbar .icon-button svg{height:20px;width:20px}.org-switcher{border-right:0;min-width:0}.global-search{flex:0 1 auto;min-width:0;order:2;width:140px}.global-search span{display:none}.global-search input{min-height:42px;padding:8px}.topbar-actions{margin-left:auto}.user-chip{border-left:0;flex:0 1 auto;gap:8px;min-width:0;max-width:calc(100vw - 150px);padding-left:0}.user-chip>div{min-width:0}.user-chip strong,.user-chip span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.topbar #userAvatar{flex:0 0 auto;height:clamp(28px,8vw,36px);width:clamp(28px,8vw,36px);font-size:clamp(11px,3vw,13px)}.topbar #userName{font-size:clamp(12px,3.4vw,15px);line-height:1.15}.topbar #userMeta{font-size:clamp(10px,3vw,12px);line-height:1.1;margin-top:1px}.page-head{align-items:stretch;flex-direction:column;padding:20px max(16px,env(safe-area-inset-right)) 8px max(16px,env(safe-area-inset-left))}.page-actions{justify-content:flex-start}.content{gap:var(--space-3);padding:12px max(16px,env(safe-area-inset-right)) max(28px,env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left))}.kpi-grid,.dashboard-kpi-grid,.record-grid,.three-col,.dashboard-analysis-grid,.branding-split,.analytics-grid,.asset-spec-grid,.filters,.form-grid,.form-section,.hero-stack,.employee-summary,.quick-actions,.request-grid,.employee-action-grid{grid-template-columns:1fr}.employee-menu{display:flex;gap:8px;margin:0 -2px;overflow-x:auto;padding-bottom:2px;scrollbar-color:var(--brand) var(--surface-2);scrollbar-width:thin}.employee-menu::-webkit-scrollbar{height:8px}.employee-menu::-webkit-scrollbar-track{background:var(--surface-2);border-radius:var(--radius-pill)}.employee-menu::-webkit-scrollbar-thumb{background:var(--brand);border-radius:var(--radius-pill)}.employee-menu-item{flex:0 0 min(230px,76vw)}.employee-home{align-items:stretch;flex-direction:column}.topbar{background:var(--sidebar-bg);border-bottom-color:#ffffff24}.topbar .icon-button{background:#ffffff1a;color:var(--sidebar-text)}.topbar .icon-button:hover{background:#ffffff2e}.topbar .notification-button strong{border-color:var(--sidebar-bg)}.topbar .global-search input{background:#ffffff1f;color:var(--sidebar-text)}.topbar .global-search input::placeholder{color:var(--sidebar-muted)}.topbar .global-search span{color:var(--sidebar-muted)}.topbar .user-chip{border-left-color:#ffffff29}.topbar .user-chip strong{color:var(--sidebar-text)}.topbar #userMeta{color:var(--sidebar-muted)}.topbar .user-chip:hover,.topbar .user-chip:focus-visible{background:#ffffff14}.topbar .global-search{display:none}.topbar .user-chip{margin-left:auto}body[data-route=employee-area] .page-head{display:none}.employee-home-actions{justify-content:stretch}.employee-home-actions button{flex:1}.panel-header,.employee-home,.employee-profile-head,.avatar-editor,.config-card-top{align-items:stretch;flex-direction:column}.employee-profile-head{grid-template-columns:1fr}.panel-body,.metric,.employee-punch-grid,.employee-action-grid,.panel>.record-grid,.panel>.kiosk-card-grid{padding:var(--space-3)}.primary-action,.secondary-action,.danger-action,.action-link,.request-grid button,.employee-menu-item,.tab-button{justify-content:center;min-height:44px;width:100%}.employee-menu-item{justify-content:start;width:auto}.topbar .primary-action,.topbar .secondary-action,.topbar .danger-action,.topbar .action-link{width:auto}.table-wrap{margin-left:calc(var(--space-3) * -1);margin-right:calc(var(--space-3) * -1);padding-left:var(--space-3);padding-right:var(--space-3)}.kiosk-terminal{grid-template-columns:1fr;overflow:auto}.kiosk-camera-panel{min-height:42dvh;padding:18px}.kiosk-input-panel{border-left:0;border-top:1px solid rgba(255,255,255,.1);padding:18px}.kiosk-screensaver-shell{max-width:88vw}.kiosk-screensaver-top{flex-direction:column;text-align:center}.kiosk-screensaver-top>strong{text-align:center}.kiosk-screensaver-action{padding:10px 18px}.kiosk-punch-types{grid-template-columns:repeat(2,minmax(0,1fr))}.quick-hide{display:none}}@media(max-width:420px){.sidebar{border-right:0;max-width:none;width:min(96vw,390px)}.brand-mark{height:42px;width:42px}.topbar{gap:8px}.org-switcher{flex:1 1 auto;min-width:0;padding-right:0}.topbar-actions{gap:6px}.user-chip{max-width:calc(100vw - 132px);min-height:42px}.user-chip .avatar{height:34px;width:34px}.nav-button,.nav-group-toggle,.sidebar-logout{min-height:50px}.nav-submenu-button{min-height:44px}}@media(max-width:520px){.login-screen{grid-template-columns:minmax(0,1fr);min-height:100dvh}.kpi-grid.kpi-grid-compact{grid-template-columns:minmax(0,1fr)}.employee-live-hero{padding:20px 16px;gap:14px}.employee-live-hero-icon{height:140px;right:-24px;top:-24px;width:140px}.employee-live-hero-value{font-size:34px}.employee-live-hero-body{gap:16px}.employee-live-hero-qr .employee-qr-code{min-height:92px;min-width:92px}.employee-live-hero-complete{display:block;margin:6px 0 0;width:fit-content}.login-brand-panel{min-height:196px}.login-brand-lockup{max-width:min(220px,72vw)}.login-brand-lockup img{max-height:82px}.login-card{padding:28px 18px 8px}.login-type-toggle{border-radius:var(--radius-xl);gap:4px;padding:4px}.login-type-toggle button,.login-submit{min-height:44px}.topbar{min-height:auto}.org-switcher{display:none}.global-search{width:92px}.global-search input{font-size:var(--text-md);padding:8px 10px}.page-head h1,.metric strong{font-size:24px}.modal-backdrop{align-items:stretch;padding:calc(10px + env(safe-area-inset-top,0px)) calc(10px + env(safe-area-inset-right,0px)) calc(10px + env(safe-area-inset-bottom,0px)) calc(10px + env(safe-area-inset-left,0px))}.modal{max-height:none}.modal.feedback-modal{align-self:flex-start;margin-top:max(72px,env(safe-area-inset-top));max-height:none}.calendar-grid{min-width:620px}}.badge.manual-evidence{background:#202d3a1a;color:#20313f}[data-theme=dark] .badge.manual-evidence{color:#c3ccd4}@media print{body.printing-it-asset-qr>*:not(.modal-backdrop){display:none!important}body.printing-it-asset-qr .modal-backdrop>*:not(.modal){display:none!important}body.printing-it-asset-qr .modal>header{display:none!important}body.printing-it-asset-qr .modal>#modalBody>*:not(.it-asset-qr-label){display:none!important}body.printing-it-asset-qr .modal{box-shadow:none!important;position:static!important}body.printing-it-asset-qr .it-asset-qr-label{width:max-content;max-width:280px;margin:0 auto;background:#fff!important;color:#000!important;box-shadow:none!important;border:1px solid #000;border-radius:var(--radius-sm);padding:10px}body.printing-it-asset-qr .it-asset-qr-label .qr-pass-code{box-shadow:none!important;padding:0}body.printing-it-asset-qr .it-asset-qr-label .qr-pass-code img{width:220px}body.printing-it-asset-qr .it-asset-qr-label .qr-pass-holder strong,body.printing-it-asset-qr .it-asset-qr-label .qr-pass-holder span{color:#000!important}}.modal-backdrop.modal-backdrop-punch{padding:0}.modal.punch-feedback-modal{align-self:stretch;margin-top:0}

.panel>.field-hint,.panel>p.field-hint{padding:0 var(--space-4)}
.panel>.tabs{padding:0 var(--space-4) 12px}
.panel>h3{padding:0 var(--space-4);margin-top:var(--space-4)}
.panel>.chart-list{padding:0 var(--space-4) var(--space-4)}
.panel>.record-grid{padding:0 var(--space-4) var(--space-4)}

/* ---- Login brand panel (reusable: login / password-setup / pin-setup) -------------------------- */
.login-screen{grid-template-columns:1.15fr 1fr;min-height:100vh}
.login-brand-panel{align-items:center;background:
    radial-gradient(640px 480px at 88% -8%,color-mix(in srgb,var(--brand) 55%,transparent) 0%,transparent 60%),
    radial-gradient(560px 460px at -8% 112%,color-mix(in srgb,#2563eb 46%,transparent) 0%,transparent 62%),
    radial-gradient(900px 900px at 50% 46%,color-mix(in srgb,var(--brand) 16%,transparent) 0%,transparent 72%),
    linear-gradient(160deg,color-mix(in srgb,var(--brand) 20%,#04110d) 0%,color-mix(in srgb,var(--brand) 52%,#04110d) 55%,color-mix(in srgb,var(--brand) 76%,#04110d) 100%);
  border:0;border-radius:0 56px 56px 0;box-shadow:var(--shadow-strong);color:#fff;display:flex;flex-direction:column;justify-content:center;min-height:100vh;overflow:hidden;padding:clamp(26px,4.4vw,52px) clamp(26px,4.4vw,52px) clamp(66px,7vw,84px);position:relative}
.login-brand-grid{inset:0;position:absolute;pointer-events:none;
  background-image:repeating-linear-gradient(0deg,#ffffff0f 0 1px,transparent 1px 46px),repeating-linear-gradient(90deg,#ffffff0f 0 1px,transparent 1px 46px);
  mask-image:radial-gradient(120% 120% at 50% 38%,#000 55%,transparent 100%);-webkit-mask-image:radial-gradient(120% 120% at 50% 38%,#000 55%,transparent 100%)}
.login-brand-top{position:relative;text-align:center;z-index:1}
.login-brand-logo{filter:drop-shadow(0 10px 22px #00000055);height:72px;margin:0 auto 18px;width:72px}
.login-brand-logo img{display:block;height:100%;object-fit:contain;width:100%}
.login-brand-logo:not(.has-logo){align-items:center;background:#ffffff1f;border-radius:var(--radius-xl);color:#fff;display:flex;font-size:26px;font-weight:800;justify-content:center}
.login-brand-name{color:#fff;font-size:clamp(30px,4vw,44px);font-weight:800;letter-spacing:-1.7px;line-height:1.08;margin:0}
.login-brand-tagline{color:var(--gold);font-size:12px;font-weight:700;letter-spacing:.12em;margin:10px 0 0;text-transform:uppercase}
.login-activity-wrap{align-items:center;display:flex;justify-content:center;margin-top:clamp(28px,4vw,40px);position:relative;width:100%;z-index:1}
.login-activity-orbits{height:160%;left:50%;mask-image:linear-gradient(to bottom,transparent 0%,#000 24%,#000 100%);-webkit-mask-image:linear-gradient(to bottom,transparent 0%,#000 24%,#000 100%);pointer-events:none;position:absolute;top:50%;transform:translate(-50%,-50%);width:160%}
.orbit-ring{fill:none;stroke:#ffffff1f;stroke-width:1}
.orbit-arc{fill:none;stroke-linecap:round;stroke-width:2;transform-box:fill-box;transform-origin:center}
.orbit-arc-a{animation:login-orbit-spin 46s linear infinite;stroke:color-mix(in srgb,var(--brand) 65%,#fff 20%)}
.orbit-arc-b{animation:login-orbit-spin-rev 70s linear infinite;stroke:#60a5fa}
@keyframes login-orbit-spin{to{transform:rotate(360deg)}}
@keyframes login-orbit-spin-rev{to{transform:rotate(-360deg)}}
.orbit-ripple{fill:none;opacity:0;stroke-width:2;transform-box:fill-box;transform-origin:center}
.orbit-ripple.ripple-done{animation:login-orbit-ripple .9s ease-out;stroke:#34d399}
.orbit-ripple.ripple-attention{animation:login-orbit-ripple .9s ease-out;stroke:#f59e0b}
@keyframes login-orbit-ripple{0%{opacity:.9;r:30;stroke-width:3}100%{opacity:0;r:210;stroke-width:1}}
.login-activity-panel{background:linear-gradient(160deg,#ffffff24 0%,#ffffff0a 100%);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid #ffffff38;border-radius:22px;box-shadow:0 30px 60px -20px #00000066,inset 0 1px 0 #ffffff40;display:flex;flex-direction:column;gap:14px;padding:18px;position:relative;width:min(440px,80%);z-index:1}
.login-activity-chips{display:flex;flex-wrap:wrap;gap:6px;justify-content:center}
.login-activity-chip{align-items:center;background:#ffffff14;border:1px solid #ffffff24;border-radius:999px;color:#ffffffb3;display:flex;font-size:10.5px;font-weight:700;gap:5px;padding:4px 9px;white-space:nowrap;transition:background .25s ease,border-color .25s ease,color .25s ease}
.login-activity-chip svg{height:13px;width:13px}
.login-activity-chip.active{background:color-mix(in srgb,var(--brand) 55%,transparent);border-color:color-mix(in srgb,var(--brand) 70%,#fff 20%);color:#fff}
.login-activity-list{display:flex;flex-direction:column;gap:8px;min-height:188px}
.login-activity-row{align-items:center;background:#ffffff0d;border:1px solid #ffffff1a;border-radius:12px;display:flex;gap:10px;opacity:1;padding:8px 10px;transform:translateY(0);transition:opacity .35s ease,transform .35s ease}
.login-activity-row.state-arriving{opacity:0;transform:translateY(14px)}
.login-activity-icon{align-items:center;background:#ffffff14;border-radius:8px;display:flex;flex-shrink:0;height:26px;justify-content:center;width:26px}
.login-activity-icon svg{color:#fff;height:14px;width:14px}
.login-activity-text{color:#fff;flex:1;font-size:12.5px;font-weight:600}
.login-activity-status{flex-shrink:0}
.status-dot{background:#f59e0b;border-radius:50%;display:block;height:9px;opacity:0;width:9px}
.state-syncing .status-dot{animation:login-status-pulse .6s ease-in-out infinite;opacity:1}
@keyframes login-status-pulse{0%,100%{opacity:.6;transform:scale(.8)}50%{opacity:1;transform:scale(1.15)}}
.status-badge{align-items:center;border-radius:50%;display:flex;font-size:11px;font-weight:800;height:18px;justify-content:center;width:18px}
.status-badge.done{background:#34d399;box-shadow:0 0 0 4px #34d39933;color:#063b2a}
.status-badge.done svg{height:11px;width:11px}
.status-badge.attention{background:#f59e0b;box-shadow:0 0 0 4px #f59e0b33;color:#3a2404}
.login-activity-footer{align-items:center;border-top:1px solid #ffffff1f;color:#ffffffb3;display:flex;font-size:11px;font-weight:700;justify-content:space-between;letter-spacing:.08em;padding-top:10px;text-transform:uppercase}
.login-activity-footer strong{color:#fff;font-size:18px;letter-spacing:0}
.login-card h2{margin-top:0}
.login-card .field>span{font-size:12px}
@media(min-width:701px){
  .login-screen{grid-template-columns:1.15fr 1fr!important}
  .login-brand-panel{border-radius:0 56px 56px 0!important}
}
@media(min-width:701px) and (max-width:980px){
  .login-brand-panel{border-radius:0 40px 40px 0!important}
}
@media(max-width:700px){
  .login-screen{grid-template-columns:1fr!important;min-height:100dvh!important}
  .login-brand-panel{border-radius:0 0 34px 34px!important;min-height:0!important;padding:28px 20px 40px!important}
  .login-brand-logo{height:46px;width:46px}
  .login-brand-name{font-size:28px;letter-spacing:-1px}
  .login-activity-orbits{display:none}
  .login-activity-footer{display:none}
  .login-activity-list{min-height:0}
  .login-activity-row:nth-last-child(n+4){display:none}
  .login-card .field input{font-size:16px}
}
@media(prefers-reduced-motion:reduce){
  .orbit-arc-a,.orbit-arc-b{animation-duration:.01s}
  .orbit-ripple.ripple-done,.orbit-ripple.ripple-attention{animation-duration:.01s}
  .state-syncing .status-dot{animation-duration:.01s}
  .login-activity-row{transition-duration:.01s}
}
.login-brand-panel h1.login-brand-name{font-size:clamp(30px,4vw,44px)!important;line-height:1.08!important;margin:0!important}
.login-brand-panel p.login-brand-tagline{color:var(--gold)!important;font-size:12px!important;font-weight:700!important;line-height:1.3!important;max-width:none!important;letter-spacing:.12em!important;text-transform:uppercase!important}
.login-activity-chip small{display:none}
.login-activity-chip{padding:7px}
.orbit-spin-a,.orbit-spin-b{transform-origin:220px 220px}
.orbit-spin-a{animation:login-orbit-spin2 46s linear infinite}
.orbit-spin-b{animation:login-orbit-spin2 70s linear infinite reverse}
@keyframes login-orbit-spin2{100%{transform:rotate(360deg)}}
.login-activity-orbits circle[stroke="#fff"]{stroke-opacity:.14}
.login-activity-orbits{mask-image:linear-gradient(rgba(0,0,0,0) 21%,rgba(0,0,0,1) 36%)!important;-webkit-mask-image:linear-gradient(rgba(0,0,0,0) 21%,rgba(0,0,0,1) 36%)!important}
.orbit-ripple{transform-origin:220px 220px;fill:none;opacity:0}
.orbit-ripple.ripple-done{animation:login-ripple2 2s ease-out forwards;stroke:#34d399}
.orbit-ripple.ripple-attention{animation:login-ripple2 2s ease-out forwards;stroke:#f59e0b}
@keyframes login-ripple2{0%{opacity:.85;transform:scale(1)}100%{opacity:0;transform:scale(2.05)}}
.login-activity-orbits circle{fill:none!important}
.orbit-spin-a,.orbit-spin-b,.orbit-ripple{transform-box:fill-box!important;transform-origin:center!important}
.login-brand-grid{background-image:linear-gradient(rgba(255,255,255,.06) 1px,rgba(0,0,0,0) 1px),linear-gradient(90deg,rgba(255,255,255,.06) 1px,rgba(0,0,0,0) 1px)!important;background-size:46px 46px!important;mask-image:radial-gradient(70% 62% at 50% 46%,#000,rgba(0,0,0,0) 78%)!important;-webkit-mask-image:radial-gradient(70% 62% at 50% 46%,#000,rgba(0,0,0,0) 78%)!important}
@media(max-width:700px),(display-mode:standalone) and (max-width:900px){
  .login-screen{display:flex!important;flex-direction:column;height:100dvh;min-height:100dvh!important;overflow-y:auto;padding:0!important}
  .login-brand-panel{flex:0 0 auto;min-height:0!important;padding:max(18px,env(safe-area-inset-top)) 20px 22px!important;border-radius:0 0 28px 28px!important}
  .login-activity-wrap,.login-brand-tagline,.login-company-name{display:none!important}
  .login-brand-logo{height:40px;margin-bottom:8px;width:40px}
  .login-brand-name{font-size:26px!important}
  .login-card{flex:1 1 auto;justify-content:center;margin:0!important;max-width:none!important;padding:22px 20px max(22px,env(safe-area-inset-bottom))!important;box-shadow:none!important;border-radius:0!important}
}
@media(max-width:700px),(display-mode:standalone) and (max-width:900px){
  .login-brand-panel{align-items:stretch!important;gap:10px;padding:max(14px,env(safe-area-inset-top)) 16px 14px!important}
  .login-brand-top{align-items:center;display:grid;gap:0 12px;grid-template-columns:auto 1fr;text-align:left}
  .login-brand-logo{grid-row:1/3;height:44px!important;margin:0!important;width:44px!important}
  .login-brand-name{align-self:end;font-size:24px!important;line-height:1.05!important}
  .login-brand-tagline{align-self:start;display:block!important;font-size:10px!important;letter-spacing:.08em!important;margin:2px 0 0!important}
  .login-activity-wrap{display:flex!important;margin-top:0!important}
  .login-activity-panel{gap:8px!important;padding:10px!important;width:100%!important}
  .login-activity-list{gap:5px;min-height:0!important}
  .login-activity-row{padding:5px 8px}
  .login-activity-row:nth-last-child(n+3){display:none!important}
  .login-activity-footer{display:none!important}
  .login-company-name{display:block!important;font-size:10px!important;letter-spacing:.1em!important;margin:0!important;position:static!important;text-align:center}
  .login-card{gap:10px!important;padding:14px 18px max(14px,env(safe-area-inset-bottom))!important}
  .login-card h2{font-size:22px!important}
  .login-card .field input{min-height:42px!important}
}
.branding-card-head{grid-template-columns:46px minmax(0,1fr) auto!important}
.branding-card-head>.secondary-action{white-space:nowrap}
@media(max-width:700px){.branding-card-head{grid-template-columns:46px minmax(0,1fr)!important}.branding-card-head>.secondary-action{grid-column:1/-1;width:100%}}
.branding-card-head>.secondary-action{background:var(--brand);border:1px solid var(--brand);border-radius:var(--radius-md);color:#fff;font-weight:700;min-height:38px;padding:8px 14px}
.branding-card-head>.secondary-action:hover{filter:brightness(1.08)}

.kiosk-form-overlay{position:fixed;inset:0;z-index:99999;background:rgba(5,16,20,.86);display:flex;align-items:stretch;justify-content:center;padding:max(12px,env(safe-area-inset-top)) 12px 12px}
.kiosk-form-card{width:min(900px,100%);display:flex;flex-direction:column;background:#fff;border-radius:18px;overflow:hidden;box-shadow:0 24px 80px rgba(0,0,0,.5)}
.kiosk-form-card header{display:flex;align-items:center;gap:14px;padding:14px 18px;background:#007356;color:#fff}
.kiosk-form-card header div{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.kiosk-form-card header strong{font-size:18px}
.kiosk-form-card header span{font-size:12px;opacity:.85}
.kiosk-form-timer{font-variant-numeric:tabular-nums;font-size:20px;background:rgba(255,255,255,.16);padding:6px 12px;border-radius:10px}
.kiosk-form-frame{flex:1;width:100%;border:0;background:#fff}

.punch-form-checks .check-grid{grid-template-columns:repeat(auto-fill,minmax(190px,1fr))}
.punch-form-checks .check-row{flex-direction:row!important;align-items:center!important;justify-content:flex-start!important;gap:10px;min-height:42px;padding:8px 12px;cursor:pointer}
.punch-form-checks .check-row input[type=checkbox]{flex:0 0 18px;width:18px!important;height:18px!important;min-height:0!important;padding:0!important;margin:0}
.punch-form-checks .check-row span{font-size:13px;font-weight:600;text-transform:none;letter-spacing:0;color:var(--text)}
.punch-form-checks .check-row{display:flex!important}

/* Login em telemovel / webapp: tudo cabe no ecrã (sem rolar), mantendo animação, tagline e nome */
@media(max-width:700px),(display-mode:standalone) and (max-width:900px){
  .login-screen{height:100dvh!important;min-height:100dvh!important;overflow:hidden!important}
  .login-brand-panel{flex:0 0 auto;gap:6px!important;padding:max(8px,env(safe-area-inset-top)) 14px 8px!important}
  .login-card{flex:1 1 auto;min-height:0;justify-content:center;gap:8px!important;padding:10px 18px max(12px,env(safe-area-inset-bottom))!important}
  .login-card h2{font-size:21px!important;line-height:1.15;margin:0}
  .login-card .login-muted{font-size:11.5px!important;line-height:1.3;margin:2px 0 0!important}
  .login-card .login-type-toggle{padding:3px!important;gap:3px!important}
  .login-card .login-type-toggle button{height:36px!important;min-height:36px!important;font-size:13px!important;padding:0 10px!important}
  .login-card .field{gap:3px!important}
  .login-card .field span{font-size:10.5px!important}
  .login-card .field input{height:38px!important;min-height:38px!important;padding:6px 12px!important}
  .login-card .check-row{min-height:0!important;font-size:12.5px}
  .login-card .login-submit{min-height:40px!important;height:40px!important}
  .login-card .login-privacy-link{padding:0 6px!important;font-size:12px!important}
}
@media(max-width:700px) and (max-height:700px){
  .login-brand-panel{gap:4px!important;padding-bottom:6px!important}
  .login-brand-panel .login-brand-logo{width:34px!important;height:34px!important}
  .login-brand-panel .login-activity-panel{padding:8px 10px!important}
}

/* Webapp / telemovel: notch e barra de estado verdes (sem degrade para branco) + formulario a subir apos a abertura */
@media(max-width:700px),(display-mode:standalone) and (max-width:900px){
  html:has(#loginScreen:not([hidden])){background:#06251f}
  .login-brand-panel{background:#06251f!important}
}

/* ---- Abertura da webapp: o verde ocupa o ecra (logo, nome e animacao do login) e sobe ate a barra superior,
   revelando o formulario. So transform/opacity/clip-path - o layout final nunca muda. ---- */
@property --gh{syntax:"<length>";inherits:false;initial-value:100vh}
.login-splash-overlay{position:fixed;inset:0;z-index:99998;--gh:100dvh;background:#06251f;clip-path:inset(0 0 0 0);transition:--gh 1s cubic-bezier(.22,.8,.24,1),clip-path 1s cubic-bezier(.22,.8,.24,1);pointer-events:none;will-change:clip-path}
.login-splash-overlay.is-leaving{--gh:var(--h);clip-path:inset(0 0 calc(100% - var(--h)) 0)}
.login-screen.login-intro .login-brand-panel{position:relative;z-index:99999;background:transparent!important;transform:translateY(var(--dy,0px));opacity:0;animation:introPanelIn .7s ease .1s forwards;will-change:transform}
.login-screen.login-intro .login-card{opacity:0;transform:translateY(60px)}
.login-screen.login-intro-run .login-brand-panel{transform:none;transition:transform 1s cubic-bezier(.22,.8,.24,1)}
.login-screen.login-intro-run .login-card{opacity:1;transform:none;transition:opacity .7s ease .4s,transform .9s cubic-bezier(.22,.8,.24,1) .3s}
@keyframes introPanelIn{from{opacity:0}to{opacity:1}}
@media(prefers-reduced-motion:reduce){.login-splash-overlay,.login-screen.login-intro .login-brand-panel{animation:none!important;transition:none!important}}

/* ---- Botao Entrar: estado "a entrar" ---- */
.login-submit.is-busy{pointer-events:none;opacity:.9}
.login-submit.is-busy::after{content:"";display:inline-block;width:15px;height:15px;margin-left:10px;vertical-align:-2px;border:2px solid rgba(255,255,255,.4);border-top-color:#fff;border-radius:50%;animation:loginSpin .7s linear infinite}
@keyframes loginSpin{to{transform:rotate(360deg)}}

/* ---- Entrada na app apos o login (anima so os contentores, nao os cartoes, para nao repetir quando chegam dados) ---- */
.app-shell.app-enter{animation:appEnter .5s ease both}
.app-shell.app-enter .workspace{animation:contentRise .7s cubic-bezier(.22,.8,.24,1) both}
@keyframes appEnter{from{opacity:0}to{opacity:1}}
@keyframes contentRise{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){.app-shell.app-enter,.app-shell.app-enter .workspace{animation:none!important}}

/* Login em telemovel / webapp (iPhone): o verde ocupa tambem a zona do notch, o cabecalho fica centrado e a altura
   do painel e fixa (as linhas de atividade nao a fazem crescer a meio da animacao). */
@media(max-width:700px),(display-mode:standalone) and (max-width:900px){
  html:has(#loginScreen:not([hidden])){border-top:0!important;background:#06251f!important}
  html:has(#loginScreen:not([hidden])) body{background:#06251f}
  .login-brand-panel .login-activity-list{min-height:81px}
  .login-brand-panel .login-brand-top{grid-template-columns:auto auto!important;justify-content:center!important;text-align:left!important}
}
@media(max-width:700px),(display-mode:standalone) and (max-width:900px){.login-screen .login-brand-panel .login-activity-list{min-height:81px!important}}

/* ---- Login webapp (iPhone): cabecalho em coluna centrada, formulario sem titulo, botoes iguais ao "Entrar" ---- */
@media(max-width:700px),(display-mode:standalone) and (max-width:900px){
  .login-screen{position:fixed!important;inset:0!important;height:auto!important;min-height:0!important}
  .login-brand-panel .login-brand-top{grid-template-columns:1fr!important;justify-items:center!important;text-align:center!important;gap:2px!important}
  .login-brand-panel .login-brand-top .login-brand-logo{grid-row:auto!important;grid-column:1!important;margin:0 0 2px!important}
  .login-brand-panel .login-brand-top .login-brand-name,.login-brand-panel .login-brand-top .login-brand-tagline{grid-column:1!important;text-align:center!important}
  .login-screen .login-card{display:flex!important;flex-direction:column!important;justify-content:flex-start!important;gap:10px!important;padding:14px 18px max(14px,env(safe-area-inset-bottom))!important}
  .login-screen .login-card h2{display:none!important}
  .login-screen .login-card .login-muted{margin:0!important;text-align:center;font-size:12px!important;line-height:1.3}
  .login-screen .login-card .login-type-toggle{display:grid!important;grid-template-columns:1fr 1fr;gap:10px!important;padding:0!important;background:none!important;border:0!important;box-shadow:none!important;border-radius:0!important}
  .login-screen .login-card .login-type-toggle button{height:42px!important;min-height:42px!important;border-radius:6px!important;border:1px solid var(--line)!important;background:#fdfefe!important;background-image:none!important;color:var(--muted)!important;font-size:14px!important;font-weight:700!important;box-shadow:none!important}
  .login-screen .login-card .login-type-toggle button.active{background:var(--brand)!important;border-color:var(--brand)!important;color:#fff!important;box-shadow:0 10px 22px rgba(0,115,86,.22)!important}
  .login-screen .login-card .login-privacy-link{margin-top:auto!important}
  .login-splash-overlay{clip-path:inset(0 0 0 0 round 0 0 28px 28px)!important}
  .login-splash-overlay.is-leaving{clip-path:inset(0 0 calc(100% - var(--h)) 0 round 0 0 28px 28px)!important}
}
@media(max-width:700px) and (max-height:720px){
  .login-screen .login-card .login-muted{display:none!important}
  .login-screen .login-card{gap:8px!important;padding-top:10px!important}
}
@media(max-width:700px),(display-mode:standalone) and (max-width:900px){.login-screen .login-card .login-mode{margin-top:4px}}
@media(max-width:700px) and (min-height:780px){.login-screen .login-card{gap:16px!important;padding-top:20px!important}}

/* ---- iPhone webapp: o ecra tem de chegar ao fundo (a altura calculada pelo iOS fica aquem), arranque com marca visivel ---- */
@media(max-width:700px),(display-mode:standalone) and (max-width:900px){
  .login-screen{bottom:calc(-1 * var(--vgap,0px))!important}
  .login-splash-overlay{bottom:calc(-1 * var(--vgap,0px))!important}
  html:has(#loginScreen:not([hidden])){background:#fff!important;transition:background-color .9s ease}
  html:has(#loginScreen.login-intro:not(.login-intro-run)){background:#007356!important}
  html:has(#loginScreen:not([hidden])) body{background:transparent!important}
  .login-screen.login-intro .login-brand-panel{opacity:1!important;animation:none!important}
  .login-screen.login-intro .login-activity-wrap{opacity:0;animation:introPanelIn .8s ease .45s forwards}
}

/* ---- Botoes Colaborador / Administracao em todas as versoes: iguais ao "Entrar" (cantos de 6px, ativo a verde solido) ---- */
.login-card .login-type-toggle{display:grid!important;grid-template-columns:1fr 1fr;gap:10px!important;padding:0!important;background:none!important;border:0!important;box-shadow:none!important;border-radius:0!important}
.login-card .login-type-toggle button{height:44px!important;min-height:44px!important;border-radius:6px!important;border:1px solid var(--line)!important;background:#fdfefe!important;background-image:none!important;color:var(--muted)!important;font-size:14px!important;font-weight:700!important;box-shadow:none!important}
.login-card .login-type-toggle button.active{background:var(--brand)!important;border-color:var(--brand)!important;color:#fff!important;box-shadow:0 10px 22px rgba(0,115,86,.22)!important}
@media(max-width:700px),(display-mode:standalone) and (max-width:900px){html:has(#loginScreen:not([hidden])){transition:none!important}html:has(#loginScreen.login-intro-run){transition:background-color .9s ease!important}}

/* ---- Seletor Colaborador / Administracao: fundo verde leve a demarcar, botoes com os cantos do Entrar (web e mobile); sem titulo/frase ---- */
.login-screen .login-card .login-type-toggle{display:grid!important;grid-template-columns:1fr 1fr!important;gap:4px!important;padding:4px!important;background:rgba(0,115,86,.08)!important;border:1px solid rgba(0,115,86,.16)!important;border-radius:10px!important;box-shadow:none!important}
.login-screen .login-card .login-type-toggle button{height:40px!important;min-height:40px!important;border:0!important;border-radius:6px!important;background:transparent!important;background-image:none!important;color:var(--muted)!important;font-weight:700!important;box-shadow:none!important}
.login-screen .login-card .login-type-toggle button.active{background:var(--brand)!important;color:#fff!important;box-shadow:0 8px 18px rgba(0,115,86,.22)!important}
.login-screen .login-card > div:first-child:has(> h2){display:none!important}

/* ---- Abertura: o ecra de login (agora fixo = camada propria) tem de ficar acima do fundo verde da abertura ---- */
.login-screen.login-intro{z-index:99999!important;background:transparent!important}
@media(max-width:700px),(display-mode:standalone) and (max-width:900px){
  html:has(#loginScreen.login-intro-run){transition:none!important;background:#fff!important}
}

/* ---- iOS: o efeito de borda da barra de estado usa a cor de fundo do topo da pagina e a possibilidade de a pagina rolar.
   No login: topo do html verde (nao branco) e documento sem scroll/bounce. ---- */
@media(max-width:700px),(display-mode:standalone) and (max-width:900px){
  html:has(#loginScreen:not([hidden])){background:linear-gradient(180deg,#06251f 0,#06251f 200px,#fff 200px)!important;height:100%;overflow:hidden;overscroll-behavior:none}
  html:has(#loginScreen:not([hidden])) body{height:100%;overflow:hidden;overscroll-behavior:none;background:transparent!important}
  html:has(#loginScreen.login-intro:not(.login-intro-run)){background:#007356!important}
}

/* ---- Abertura fluida: a camada verde so usa transform (scaleY a partir do topo) em sincronia com o painel ---- */
.login-splash-overlay{
  clip-path:none!important;
  transform-origin:50% 0;
  background:linear-gradient(180deg,#06251f 0,#06251f 45%,#007356 100%)!important;
  border-radius:0 0 28px 28px / 0 0 var(--ry,28px) var(--ry,28px);
  transition:transform 1s cubic-bezier(.22,.8,.24,1)!important;
  will-change:transform;
  backface-visibility:hidden
}
.login-splash-overlay.is-leaving{clip-path:none!important;transform:scaleY(var(--s,.4))!important}
.login-screen.login-intro-run .login-brand-panel{transition:transform 1s cubic-bezier(.22,.8,.24,1)!important}
.login-screen.login-intro .login-brand-panel{will-change:transform}

/* O ecra de login escondido tem de ficar mesmo escondido (a regra display:flex!important do mobile vencia o atributo hidden e deixava o login por cima da app) */
.login-screen[hidden],#loginScreen[hidden]{display:none!important;visibility:hidden!important}

/* Faixa sob a barra de estado: a app sempre teve html{border-top:env(safe-area-inset-top) solid ...}; no login mantem-se, com a cor do topo do painel */
@media(max-width:700px),(display-mode:standalone) and (max-width:900px){html:has(#loginScreen:not([hidden])){border-top:env(safe-area-inset-top,0px) solid #06251f!important}}

/* ---- Aviso "Instale como app" (so iPhone/iPad no Safari) ---- */
.install-hint{position:fixed;left:12px;right:12px;bottom:calc(12px + env(safe-area-inset-bottom,0px));z-index:99990;display:flex;align-items:center;gap:10px;padding:11px 12px 11px 14px;border-radius:12px;background:#0b2f27;color:#fff;box-shadow:0 14px 34px rgba(0,0,0,.28);border:1px solid rgba(255,255,255,.12)}
.install-hint-text{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.install-hint-text strong{font-size:13px;font-weight:800}
.install-hint-text span{font-size:11.5px;line-height:1.35;opacity:.85}
.install-hint button{flex:0 0 auto;width:30px;height:30px;border:0;border-radius:8px;background:rgba(255,255,255,.12);color:#fff;font-size:20px;line-height:1;cursor:pointer}
@media(min-width:901px){.install-hint{max-width:420px;left:auto}}

/* ---- iOS: o desvanecimento do topo toma a cor de fundo (background-color) do html; tem de ser uma cor SOLIDA escura
   (um gradiente ou um fundo claro dao um desvanecimento branco). App: azul escuro; login: verde do topo do painel. ---- */
@media(max-width:900px),(display-mode:standalone){
  html{background-color:#06251f!important;background-image:none!important}
  html:has(#loginScreen:not([hidden])),html:has(#loginScreen.login-intro),html:has(#loginScreen.login-intro-run){background-color:#06251f!important;background-image:none!important;transition:none!important}
}

/* ---- iPhone (webapp): o login fica dentro da area visivel (link de privacidade visivel), o brasao desce abaixo do
   desvanecimento do sistema, e a faixa por baixo da area visivel passa a ser pintada pelo fundo do html:
   background-color escuro (para o topo) + um bloco claro nos primeiros 100px do "tile", que se repete na faixa. ---- */
@media(max-width:700px),(display-mode:standalone) and (max-width:900px){
  .login-screen{bottom:0!important}
  .login-splash-overlay{bottom:0!important}
  .login-brand-panel{padding-top:max(8px,calc(env(safe-area-inset-top,0px) * 1.4))!important}
}

/* ---- Titulo do formulario de login: "Entrar" + subtitulo que muda com o separador (web e mobile) ---- */
.login-screen .login-card > div.login-heading:first-child{display:block!important;margin:0 0 2px}
.login-screen .login-card > div.login-heading:first-child > h2{display:block!important;margin:0!important;font-size:26px!important;font-weight:800;letter-spacing:-.02em;line-height:1.1}
.login-screen .login-card > div.login-heading:first-child > .login-muted{display:block!important;margin:6px 0 0!important;font-size:13.5px!important;line-height:1.35;text-align:left!important}
/* telemoveis baixos: nao ha espaco em branco a preencher, esconde-se para o formulario caber sem scroll */
@media(max-width:700px) and (max-height:779px){
  .login-screen .login-card > div.login-heading:first-child{display:none!important}
}
@media(max-width:700px) and (min-height:780px){
  .login-screen .login-card > div.login-heading:first-child > h2{font-size:24px!important}
}

/* ---- Webapp instalada (iOS): o desvanecimento claro no topo aparece quando o DOCUMENTO rola por baixo da barra de estado
   (e e o que fazia a app depois do login). No login ja nao rolava e o efeito desapareceu; na app passa a rolar-se a area de
   conteudo por dentro (.workspace) e o documento fica fixo, sem deslocamento. So na webapp instalada (standalone). ---- */
@media (display-mode: standalone) and (max-width: 900px){
  html,body{height:100%;overflow:hidden!important;overscroll-behavior:none}
  .app-shell{height:100%;min-height:0!important}
  .workspace{height:100%;min-height:0;overflow-x:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior-y:contain}
}

/* ---- Cabecalho da app como uma app nativa (iPhone): faixa FIXA da cor do cabecalho por baixo do notch/barra de estado.
   No login esta zona ficou limpa por existir um elemento fixo encostado ao topo; na app so havia a faixa da pagina e o iOS
   pintava o seu proprio desvanecimento claro. Fica por baixo do menu (15) e das janelas (>=20), por cima da barra (13). ---- */
@media(max-width:900px){
  #appShell:not([hidden])::before{position:fixed;top:0;left:0;right:0;height:env(safe-area-inset-top,0px);background:var(--sidebar-bg);z-index:14;pointer-events:none}
}
@media(max-width:900px){
  #appShell:not([hidden])::before{content:'';display:block}
}



/* cartoes de kiosk: acoes em grelha, sem sobreposicao */
.config-card-actions{display:flex!important;flex-wrap:wrap!important;gap:8px!important}
.config-card-actions>*{flex:1 1 calc(50% - 8px)!important;min-width:0!important;white-space:nowrap;justify-content:center;text-align:center}
.config-card-actions>.primary-action{flex-basis:100%!important}

/* Modo de demonstração: faixa no topo e botão no ecrã de entrada */






.acesso-demo{gap:10px}.acesso-demo svg{width:18px;height:18px}
.acesso-demo-nota{margin:8px 0 0;text-align:center;font-size:.85rem;color:var(--muted,#64748b)}

/* Navegação contextual: uma única linha abre a página e as respetivas secções. */
.nav-parent-integrated{display:block;grid-template-columns:none}
.nav-parent-integrated .nav-button{display:grid;grid-template-columns:34px minmax(0,1fr) 24px;width:100%}
.nav-parent-integrated .nav-button>span:nth-child(2){overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nav-integrated-chevron{align-items:center;color:var(--sidebar-muted);display:flex;font-size:24px;font-weight:500;justify-content:center;line-height:1;transform:rotate(0);transition:transform .18s ease,color .18s ease}
.nav-item-with-submenu.open .nav-integrated-chevron{color:var(--gold);transform:rotate(90deg)}
.nav-parent-integrated .nav-button:hover .nav-integrated-chevron,.nav-parent-integrated .nav-button:focus-visible .nav-integrated-chevron{color:#fff}
.nav-item-with-submenu.active>.nav-parent-integrated .nav-button{box-shadow:none}
.nav-item-with-submenu.active>.nav-parent-integrated .nav-button svg{color:var(--marca-menta,#2fd294)}

/* Menu lateral no telemóvel/web app: o botão Sair fica acima da barra inferior do iPhone (zona segura) */
@media (max-width:900px){
  .sidebar{max-height:100dvh}
  .sidebar-footer{padding-bottom:calc(14px + env(safe-area-inset-bottom))}
}

/* posto (kiosk) de demonstração */
.kiosk-demo-marca{position:fixed;left:50%;top:max(8px,env(safe-area-inset-top));transform:translateX(-50%);z-index:3000;background:#f59e0b;color:#1f2937;font-weight:700;font-size:.85rem;padding:6px 14px;border-radius:999px;box-shadow:0 4px 14px rgba(0,0,0,.2);pointer-events:none}

/* Superfície padrão: conteúdo de cartões nunca encosta aos limites. Tabelas e tabs mantêm o modo fluido. */
.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg)}
.panel:not(:has(>.panel-header)):not(:has(>.tabs)):not(:has(>.table-wrap)):not(:has(>.table-scroller)){padding:var(--space-4)}
.panel:has(>.panel-header)>:is(.empty-state,.form-grid,.panel-body,.field-hint,.login-alert){margin-left:var(--space-4);margin-right:var(--space-4)}
.panel:has(>.panel-header)>.empty-state,.panel:has(>.panel-header)>.form-grid,.panel:has(>.panel-header)>.panel-body{margin-top:var(--space-3);margin-bottom:var(--space-3)}

/* source: styles-a11y.css */
/* =====================================================================================================================
   AUDITORIA UX/UI (2026-10) - correcoes concretas, sem redesenho. Tokens, acessibilidade, toque, mobile.
   ===================================================================================================================== */

/* -- Tokens: contraste >= 4.5:1 do texto de estado/secundario sobre os fundos claros (antes 3.2 a 4.4) -- */
:root:not([data-theme="dark"]){--muted:#5b6b7f;--success-text:#0f6b3a;--warning-text:#8f4d00;--danger-text:#b32d23;--info-text:#1a56d6}
:root{--text-2xs:11px;--touch:44px}
.badge.qr-badge{color:#5b21b6}
small{font-size:12px}

/* -- Foco visivel por teclado em todos os controlos (WCAG 2.4.7 / 2.4.11); regras existentes com outline:0 mantem o seu proprio realce -- */
:where(a[href],button,input,select,textarea,summary,[role="button"],[tabindex]:not([tabindex="-1"])):focus-visible{outline:2px solid var(--brand);outline-offset:2px}
:where(.sidebar,.topbar,.login-brand-panel) :where(a[href],button,[role="button"]):focus-visible{outline-color:#fff}
:where(input,select,textarea):focus-visible{outline-offset:0}

/* -- Toque: sem atraso de duplo-toque nem realce cinzento do iOS -- */
html{-webkit-tap-highlight-color:transparent}
:where(a,button,input,select,textarea,label,summary,[role="button"]){touch-action:manipulation}

/* -- Movimento reduzido (preferencia do sistema) -- */
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto!important}
  /* Mantém os indicadores funcionais; elimina o movimento decorativo e as entradas dos componentes. */
  .employee-live-dot,.acesso-arte-cartao,.acesso-arte-ponto{animation:none!important}
  .acesso-mock-palco *,.acesso-mock-palco,.acesso-mock-slogan,.acesso-mock-slogan-2 span{animation:none!important}
  .sidebar,.nav-button,.primary-action,.secondary-action,.danger-action,.icon-button{transition:none!important}
}

/* -- Alvos de toque >= 44px em ecras tateis e em telemovel/tablet (WCAG 2.5.8 / HIG) -- */
@media (pointer:coarse),(max-width:900px){
  .icon-button,.user-chip,.calendar-nav-btn,.evidence-button,.qr-wallet-action,.row-menu-toggle{min-width:var(--touch);min-height:var(--touch)}
  input[type="checkbox"],input[type="radio"]{width:22px;height:22px}
  .check-row,.permission-item{min-height:var(--touch)}
  .badge,.attendance-inference-pill{font-size:var(--text-xs)}
}

/* -- Telemovel: indicadores (KPI) em 2 colunas e compactos em vez de uma coluna de cartoes altos -- */
@media (max-width:700px){
  .kpi-grid,.kpi-grid.kpi-grid-compact,.dashboard-kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:10px!important}
  .metric{min-height:0;padding:12px}
  .metric span{margin-bottom:6px;font-size:var(--text-sm)}
  .metric strong{font-size:24px}
  .metric small{margin-top:6px;font-size:var(--text-sm)}
}

/* -- Tabelas em telemovel: cada linha passa a cartao (etiqueta + valor); acima de 640px mantem-se a tabela com scroll -- */
@media (max-width:640px){
  .table-wrap:has(> table.rt){overflow:visible;border:0;background:transparent;box-shadow:none}
  .table-wrap table.rt{display:block;width:100%;min-width:0!important;border:0}
  .table-wrap table.rt thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
  .table-wrap table.rt tbody{display:block}
  .table-wrap table.rt tr{display:block;position:relative;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-md);padding:4px 14px;margin:0 0 10px;box-shadow:var(--shadow)}
  .table-wrap table.rt td{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;width:auto;padding:9px 0!important;border:0!important;border-bottom:1px solid var(--line)!important;text-align:right;white-space:normal!important;word-break:break-word}
  .table-wrap table.rt td:last-child{border-bottom:0!important}
  .table-wrap table.rt td::before{content:attr(data-label);flex:0 0 36%;max-width:44%;color:var(--muted);font-size:var(--text-sm);font-weight:700;text-align:left}
  .table-wrap table.rt td[data-title]{display:block;padding:10px 0 8px!important;font-size:15px;font-weight:800;text-align:left}
  .table-wrap table.rt td[data-title]::before,.table-wrap table.rt td[data-kind]::before,.table-wrap table.rt td:not([data-label])::before{display:none}
  .table-wrap table.rt td[data-kind="actions"]{display:flex;flex-wrap:wrap;justify-content:flex-start;gap:8px;padding:10px 0 6px!important}
  .table-wrap table.rt td[data-kind="select"]{position:absolute;top:8px;right:10px;width:auto;padding:0!important;border:0!important}
}

/* -- Ligacao "Saltar para o conteudo" (so visivel com o foco do teclado) -- */
.skip-link{position:fixed;left:12px;top:-60px;z-index:100000;padding:10px 14px;border-radius:var(--radius-md);background:var(--brand);color:#fff;font-weight:700;text-decoration:none;transition:top .15s}
.skip-link:focus{top:max(12px,env(safe-area-inset-top,0px))}
#content:focus{outline:0}

/* -- Auditoria, 2.a volta: tamanhos que escaparam (cabecalho 42px, campos/botoes 34-38px, texto 14px em campos, contraste do QR) -- */
.topbar .icon-button{height:var(--touch,44px);min-width:var(--touch,44px);width:var(--touch,44px)}
.qr-wallet-action{color:#005f46}
@media (pointer:coarse),(max-width:900px){
  input[type="checkbox"],input[type="radio"]{width:24px;height:24px}
  input:not([type="checkbox"],[type="radio"],[type="file"],[type="range"],[type="hidden"]),select,textarea{font-size:max(16px,1em);min-height:var(--touch,44px)}
  .primary-action,.secondary-action,.danger-action,.tab-button{min-height:var(--touch,44px)}
}

/* -- Barra de navegacao inferior (area do colaborador, telemovel) -- */
.bottom-nav{display:none}
@media (max-width:780px){
  .bottom-nav{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));position:fixed;left:0;right:0;bottom:0;z-index:12;background:var(--surface);border-top:1px solid var(--line);padding:4px 6px max(6px,env(safe-area-inset-bottom));box-shadow:0 -10px 28px rgba(7,26,34,.08)}
  .bottom-nav-item{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;min-height:56px;padding:6px 2px;background:transparent;border:0;border-radius:var(--radius-md);color:var(--muted);font:inherit;font-size:var(--text-xs);font-weight:700;cursor:pointer;position:relative}
  .bottom-nav-icon{display:inline-flex;height:24px;width:24px;align-items:center;justify-content:center}
  .bottom-nav-icon svg{height:22px;width:22px}
  .bottom-nav-label{line-height:1.1;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .bottom-nav-item.active{color:var(--brand)}
  .bottom-nav-item.active::before{content:'';position:absolute;top:0;left:30%;right:30%;height:3px;border-radius:0 0 3px 3px;background:var(--brand)}
  body.has-bottom-nav .workspace{padding-bottom:calc(76px + env(safe-area-inset-bottom,0px))}
}

/* -- Pormenores da 2.a volta: filtro do banco de horas, accoes do organograma, alvos de toque restantes -- */
.time-bank-filter label,.time-bank-filter select{min-width:0;max-width:100%}
@media (max-width:1100px){.orgchart-header-actions{align-items:stretch}}
@media (pointer:coarse),(max-width:900px){
  :is(.primary-action,.secondary-action,.danger-action,.tab-button,.icon-action){min-height:var(--touch,44px)!important}
  .icon-action{min-width:var(--touch,44px)}
  input:not([type="checkbox"],[type="radio"],[type="file"],[type="range"],[type="hidden"]),select,textarea{min-height:var(--touch,44px)!important}
}

/* -- Auditoria (3.a volta): tablet/portatil pequeno e alvos minimos em desktop (WCAG 2.5.8: 24px) -- */
@media (max-width:1100px){
  .orgchart-workspace{grid-template-columns:1fr}
  .orgchart-department-nav,.orgchart-manager-sidebar{max-height:none}
  .orgchart-department-list{display:grid;overflow:visible;padding-bottom:0}
  .orgchart-department-nav-item{width:100%}
  .orgchart-summary-strip{grid-template-columns:1fr}
  .orgchart-detail-header{display:grid}
  .orgchart-header-actions{align-items:stretch}
  .orgchart-department-employee{grid-template-columns:auto minmax(0,1fr)}
  .orgchart-employee-actions{grid-column:1 / -1;justify-content:flex-start}
}
@media (pointer:fine) and (min-width:901px){.evidence-button,.qr-wallet-action,.icon-action,.calendar-nav-btn{min-height:24px}}
@media (pointer:fine) and (min-width:901px){input[type="checkbox"],input[type="radio"]{width:18px;height:18px}}

/* -- Tema escuro: texto branco sobre o verde de marca dava 3.08:1; fundo mais fundo nestes botoes (>=4.5:1); QR volta a usar a cor de marca -- */
:root[data-theme="dark"] :is(.primary-action,.tab-button.active,.notification-bell-mark,.login-submit){background:#00855a}
:root[data-theme="dark"] .qr-wallet-action{color:var(--brand)}
:root[data-theme="dark"] :is(.evidence-button,.qr-wallet-action){color:#3ddc9c}

.modal:focus{outline:0}

/* -- Login em telemovel: botoes do seletor e Entrar com 44px (alvo de toque), mantendo tudo no ecra -- */
@media(max-width:700px),(display-mode:standalone) and (max-width:900px){
  .login-screen .login-card .login-type-toggle button{height:44px!important;min-height:44px!important}
  .login-screen .login-card .login-submit{height:44px!important;min-height:44px!important}
}
.user-chip-meta{font-size:max(11px,var(--text-xs))}

/* -- 2.a auditoria: acertos finais -- */
input[type="checkbox"],input[type="radio"]{flex:none}
.config-card-actions{flex-wrap:wrap}
.config-card-actions>:is(button,a){flex:1 1 120px;min-width:0;width:auto}
.kiosk-config-card{grid-template-columns:minmax(0,1fr)}
.kiosk-card-grid>*{min-width:0}
td a:not(.primary-action,.secondary-action,.danger-action,.action-link){display:inline-flex;align-items:center;min-height:24px}
.login-alert.warning{color:var(--warning-text)}
:root[data-theme="dark"] .skip-link{background:#00855a;color:#fff}
@media (pointer:coarse),(max-width:900px){
  .tab-button{min-width:var(--touch,44px)}
  .nav-submenu-toggle{height:var(--touch,44px);width:var(--touch,44px)}
  td a:not(.primary-action,.secondary-action,.danger-action,.action-link){min-height:var(--touch,44px)}
  .punch-form-checks .check-row input[type=checkbox]{flex:0 0 24px;width:24px!important;height:24px!important}
}

/* -- Carteira QR / ecras de feedback a ecra inteiro no telemovel: sem o afastamento de 72px das mensagens -- */
@media(max-width:640px){
  .modal.feedback-modal:is(.qr-pass-modal,.punch-feedback-modal){align-self:stretch;margin-top:0}
}
.qr-pass-close{height:44px;width:44px}
.qr-pass .empty-state{color:#5b6b7f}

/* -- Login no telemovel: textos minimos de 11px e, em ecras com altura para isso, alvos de toque de 44px.
   Em ecras baixos (iPhone SE, 360x640) mantem-se a versao compacta para o formulario caber sem scroll. -- */
@media(max-width:700px),(display-mode:standalone) and (max-width:900px){
  .login-card .field span{font-size:11px!important}
  .login-company-name{font-size:11px!important}
  .login-card .login-privacy-link{padding:5px 6px!important}
}
@media(max-width:700px) and (min-height:760px){
  .login-card .field input{height:44px!important;min-height:44px!important}
  .login-card .login-privacy-link{align-items:center;display:flex!important;justify-content:center;min-height:44px;padding:0 6px!important}
  .login-card .login-type-toggle button{height:44px!important;min-height:44px!important}
}
@media(display-mode:standalone) and (max-width:900px) and (min-height:760px){
  .login-card .field input{height:44px!important;min-height:44px!important}
  .login-card .login-privacy-link{align-items:center;display:flex!important;justify-content:center;min-height:44px;padding:0 6px!important}
  .login-card .login-type-toggle button{height:44px!important;min-height:44px!important}
}
:root[data-theme="dark"] .login-screen .login-card .login-type-toggle button.active{background:#00855a!important;border-color:#00855a!important}

/* -- Kiosk: contraste (branco sobre #10b981 dava 2.5:1; sobre #047857 da 5.5:1), telemovel e alvos de toque -- */
.kiosk-punch-types button.active,.kiosk-submit,.kiosk-qr-toggle.active{background:#047857}
.kiosk-result.success>div{background:#047857f0}
.kiosk-screensaver-hint .kiosk-screensaver-en{font-size:clamp(11px,1.2vw,13px)}
.kiosk-lang-toggle{min-height:44px;min-width:44px}
@media(max-width:600px){
  .kiosk-camera-overlay{grid-template-columns:minmax(0,1fr) auto;gap:12px;padding:20px 16px 70px}
  .kiosk-clock strong{font-size:clamp(34px,12vw,48px)}
}
/* -- Login: em ecras baixos a ligacao de privacidade fica com 24px (minimo WCAG) sem empurrar o formulario -- */
@media(max-width:700px) and (max-height:759px){
  .login-card .login-privacy-link{padding:0 6px!important;min-height:24px;display:flex!important;align-items:center;justify-content:center}
}
@media(display-mode:standalone) and (max-width:900px) and (max-height:759px){
  .login-card .login-privacy-link{padding:0 6px!important;min-height:24px;display:flex!important;align-items:center;justify-content:center}
}

.login-privacy-link{align-items:center;display:flex;justify-content:center;min-height:24px}

@media (pointer:coarse),(max-width:900px){.nav-submenu-toggle{flex:none}}
@media (pointer:coarse),(max-width:900px){.nav-parent-row{grid-template-columns:minmax(0,1fr) var(--touch,44px)}}

/* -- Identidade: marca da ePlataforma no topo; brasao da organizacao junto ao nome no rodape do login -- */
.login-company-crest{display:inline-block;height:26px;margin-right:10px;vertical-align:middle}
.login-company-crest:not(.has-logo){display:none}
.login-company-crest img{display:block;height:100%;width:auto;filter:drop-shadow(0 4px 10px rgba(0,0,0,.35))}
@media(max-width:700px),(display-mode:standalone) and (max-width:900px){
  .login-company-crest{height:22px;margin-right:8px}
}
@media(max-width:700px) and (max-height:640px){.login-company-crest{display:none}}
@media(display-mode:standalone) and (max-width:900px) and (max-height:640px){.login-company-crest{display:none}}

/* -- Confirmacao de picagem em ecra inteiro: o verde enche o ecra (antes ficava um cartao arredondado no meio de um fundo branco) -- */
.modal.punch-feedback-modal{border:0;box-shadow:none;overflow:hidden;background:transparent}
.modal.punch-feedback-modal #modalBody{align-items:stretch}
.modal.punch-feedback-modal .punch-feedback{border-radius:0;min-height:100%;width:100%}
@keyframes punchFeedbackIn{from{opacity:0}to{opacity:1}}
@keyframes punchFeedbackPop{0%{opacity:0;transform:scale(.55)}60%{opacity:1;transform:scale(1.08)}100%{opacity:1;transform:none}}
@keyframes punchFeedbackRise{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
.modal-backdrop-punch .modal.punch-feedback-modal{animation:punchFeedbackIn .22s ease-out both}
.modal.punch-feedback-modal .punch-feedback-icon{animation:punchFeedbackPop .55s cubic-bezier(.22,1,.36,1) .08s both}
.modal.punch-feedback-modal .punch-feedback h2,.modal.punch-feedback-modal .punch-feedback p,.modal.punch-feedback-modal .punch-feedback small{animation:punchFeedbackRise .45s ease-out .22s both}
@media(prefers-reduced-motion:reduce){
  .modal-backdrop-punch .modal.punch-feedback-modal,.modal.punch-feedback-modal .punch-feedback-icon,.modal.punch-feedback-modal .punch-feedback h2,.modal.punch-feedback-modal .punch-feedback p,.modal.punch-feedback-modal .punch-feedback small{animation:none}
}

img[data-auth-src]:not([src]){visibility:hidden}


/* source: styles-components.css */
/* Equipamento com risco de seguranca: motivos no relatorio de seguranca e na lista de dispositivos */
.it-risk-reasons{display:inline-flex;flex-wrap:wrap;gap:6px}

/* Dashboard por modulo: cartoes que se adaptam ao espaco real da area de conteudo, incluindo portateis com a barra lateral aberta. */
.dashboard-modules-wrap{display:grid;gap:var(--space-4)}
.dashboard-section-head{align-items:center;display:flex;flex-wrap:wrap;gap:6px 12px;justify-content:space-between}
.dashboard-section-head h2{font-size:var(--text-xl);margin:0}
.dashboard-modules{align-items:stretch;grid-template-columns:repeat(auto-fit,minmax(min(100%,560px),1fr))}
.dashboard-module{display:flex;flex-direction:column}
.dashboard-module-wide{grid-column:1/-1}
.dashboard-module-header{align-items:center}
.dashboard-module-heading{align-items:center;display:flex;gap:12px;min-width:0}
.dashboard-module-heading>div{display:grid;gap:3px;min-width:0}
.dashboard-module-heading h2{margin:0}
.dashboard-module-heading small{color:var(--muted);font-size:var(--text-sm);font-weight:600;line-height:1.3}
.dashboard-module-icon{align-items:center;background:var(--brand-soft);border:1px solid color-mix(in srgb,var(--brand) 18%,var(--line));border-radius:12px;color:var(--brand);display:flex;flex:0 0 auto;height:44px;justify-content:center;width:44px}
.dashboard-module-icon svg{height:20px;width:20px}
.dashboard-module-header-actions{align-items:center;display:flex;flex-wrap:wrap;gap:8px;margin-left:auto}
.dashboard-module-open{align-items:center;background:transparent;border:1px solid var(--line);border-radius:9px;color:var(--brand);display:inline-flex;font-size:var(--text-sm);font-weight:800;gap:7px;min-height:34px;padding:6px 10px;transition:background .15s,border-color .15s,transform .15s}
.dashboard-module-open:hover{background:var(--brand-soft);border-color:color-mix(in srgb,var(--brand) 30%,var(--line));transform:translateY(-1px)}
.dashboard-module-open:focus-visible{outline:2px solid var(--brand);outline-offset:2px}
.dashboard-module-open{color:var(--text,#1f2937)}
.dashboard-module-open:hover{color:var(--brand)}
.dashboard-module .panel-body{display:flex;flex:1;flex-direction:column;gap:var(--space-4)}
.dashboard-module-kpis{gap:12px;grid-template-columns:repeat(var(--kpi-cols,2),minmax(0,1fr))}
.dashboard-module-kpis .metric{height:100%;min-width:0;padding:14px}

/* Fotografia do utilizador: selecao no perfil e enquadramento antes de guardar. */
.profile-photo-editor{align-items:center;background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius-2xl);display:grid;gap:18px;grid-template-columns:auto minmax(0,1fr);padding:16px}
.profile-photo-editor p{color:var(--muted);line-height:1.45;margin:5px 0 12px}
.profile-photo-editor small{color:var(--success-text);display:block;font-weight:700;margin-top:9px;min-height:1.2em}
.profile-photo-preview{align-items:center;background:var(--brand-soft);border:3px solid var(--surface);border-radius:50%;box-shadow:0 0 0 1px var(--line);color:var(--brand);display:flex;font-size:26px;font-weight:800;height:104px;justify-content:center;overflow:visible;padding:0;position:relative;width:104px}
.profile-photo-preview>img{border-radius:50%;height:100%;object-fit:cover;width:100%}
.profile-photo-preview>.employee-avatar{border:0;border-radius:50%;height:100%;width:100%}
.profile-photo-preview>.employee-avatar img{border-radius:50%;height:100%;object-fit:cover;width:100%}
.profile-photo-camera{align-items:center;background:var(--brand);border:3px solid var(--surface);border-radius:50%;bottom:-3px;color:#fff;display:flex;height:34px;justify-content:center;position:absolute;right:-3px;width:34px}
.profile-photo-camera svg{height:17px;width:17px}
.profile-photo-actions{display:flex;flex-wrap:wrap;gap:8px}
.profile-photo-actions button{min-height:40px}
.avatar-crop-backdrop{align-items:center;background:#061b17bf;display:flex;inset:0;justify-content:center;padding:18px;position:fixed;z-index:10050}
.avatar-crop-dialog{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-3xl);box-shadow:var(--shadow-strong);display:grid;gap:18px;max-height:calc(100dvh - 36px);max-width:520px;overflow:auto;padding:20px;width:100%}
.avatar-crop-dialog>header{align-items:flex-start;display:flex;gap:16px;justify-content:space-between}
.avatar-crop-dialog h2{font-size:21px;margin:0}
.avatar-crop-dialog header p{color:var(--muted);line-height:1.45;margin:5px 0 0}
.avatar-crop-stage{background:#071f1a;display:grid;justify-content:center;margin:auto;max-width:360px;overflow:hidden;padding:14px;width:100%}
.avatar-crop-stage canvas{border:3px solid #fff;border-radius:50%;box-shadow:0 0 0 999px #0005;cursor:grab;display:block;height:auto;max-width:100%;touch-action:none;width:332px}
.avatar-crop-stage canvas:active{cursor:grabbing}
.avatar-crop-zoom{align-items:center;display:grid;gap:12px;grid-template-columns:auto minmax(0,1fr)}
.avatar-crop-zoom span{font-weight:800}
.avatar-crop-zoom input{accent-color:var(--brand);width:100%}
@media(max-width:520px){.profile-photo-editor{grid-template-columns:1fr;justify-items:center;text-align:center}.profile-photo-actions{justify-content:center}.avatar-crop-dialog{padding:16px}.avatar-crop-stage{padding:10px}}
@media(max-width:700px){
  .dashboard-module-kpis{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
  .dashboard-module-kpis>.metric:last-child:nth-child(odd){grid-column:1/-1}
}
@media(max-width:520px){
  .dashboard-module-header-actions{margin-left:0;width:100%}
  .dashboard-module-open{margin-left:auto}
}
@media(max-width:360px){
  .dashboard-module-kpis{grid-template-columns:1fr}
  .dashboard-module-kpis>.metric:last-child:nth-child(odd){grid-column:auto}
}
.dashboard-module-chart{align-content:center;border-top:1px solid var(--line);display:grid;flex:1;gap:12px;padding-top:var(--space-4)}
.dashboard-module-chart-head{align-items:center;display:flex;flex-wrap:wrap;gap:6px 10px;justify-content:space-between}
.dashboard-module-chart-head h3{font-size:var(--text-md);margin:0}

/* A analise longa continua disponivel, mas nao domina a primeira leitura do dashboard. */
.dashboard-attendance-details{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-3xl);box-shadow:var(--shadow);overflow:hidden}
.dashboard-attendance-details>summary{align-items:center;cursor:pointer;display:grid;gap:14px;grid-template-columns:auto minmax(0,1fr) auto;list-style:none;padding:18px 20px;transition:background .15s}
.dashboard-attendance-details>summary::-webkit-details-marker{display:none}
.dashboard-attendance-details>summary::marker{content:""}
.dashboard-attendance-details>summary:hover{background:color-mix(in srgb,var(--brand-soft) 42%,var(--surface))}
.dashboard-attendance-details>summary:focus-visible{outline:2px solid var(--brand);outline-offset:-3px}
.dashboard-attendance-details-icon{align-items:center;background:var(--brand-soft);border-radius:11px;color:var(--brand);display:flex;height:42px;justify-content:center;width:42px}
.dashboard-attendance-details-icon svg{height:20px;width:20px}
.dashboard-attendance-details-copy{display:grid;gap:3px;min-width:0}
.dashboard-attendance-details-copy strong{font-family:Plus Jakarta Sans,Inter,Segoe UI,Arial,sans-serif;font-size:var(--text-xl)}
.dashboard-attendance-details-copy small{color:var(--muted);line-height:1.35}
.dashboard-attendance-details-toggle{align-items:center;color:var(--brand);display:flex;font-size:var(--text-sm);font-weight:800;gap:8px;white-space:nowrap}
.dashboard-attendance-hide{display:none}
.dashboard-attendance-details[open] .dashboard-attendance-show{display:none}
.dashboard-attendance-details[open] .dashboard-attendance-hide{display:inline}
.dashboard-attendance-details-toggle b{font-size:18px;transition:transform .18s}
.dashboard-attendance-details[open] .dashboard-attendance-details-toggle b{transform:rotate(180deg)}
.dashboard-attendance-details-body{border-top:1px solid var(--line);display:grid;gap:var(--space-4);padding:var(--space-4)}
@media(max-width:520px){
  .dashboard-attendance-details>summary{gap:10px;grid-template-columns:auto minmax(0,1fr) auto;padding:15px}
  .dashboard-attendance-details-copy strong{font-size:var(--text-lg)}
  .dashboard-attendance-details-toggle>span{display:none!important}
  .dashboard-attendance-details-body{padding:12px}
}

/* Aniversarios: lista vertical compacta, recolhida por defeito para nao alongar o dashboard. */
.dashboard-birthdays{overflow:hidden}
.dashboard-birthdays>.dashboard-birthdays-head{align-items:center;cursor:pointer;display:grid;gap:12px;grid-template-columns:minmax(0,1fr) auto auto;list-style:none;min-height:62px;padding:10px 14px}
.dashboard-birthdays>.dashboard-birthdays-head::-webkit-details-marker{display:none}
.dashboard-birthdays>.dashboard-birthdays-head::marker{content:""}
.dashboard-birthdays>.dashboard-birthdays-head:hover{background:color-mix(in srgb,var(--brand-soft) 36%,var(--surface))}
.dashboard-birthdays>.dashboard-birthdays-head:focus-visible{outline:2px solid var(--brand);outline-offset:-3px}
.dashboard-birthdays-heading{align-items:center;display:flex;gap:11px;min-width:0}
.dashboard-birthdays-heading>div{display:grid;gap:2px;min-width:0}
.dashboard-birthdays-heading h2{font-size:var(--text-xl);margin:0}
.dashboard-birthdays-heading small{color:var(--muted);font-size:var(--text-sm)}
.dashboard-birthdays-icon{align-items:center;background:var(--brand-soft);border-radius:10px;color:var(--brand);display:flex;flex:0 0 auto;height:36px;justify-content:center;width:36px}
.dashboard-birthdays-icon svg{height:18px;width:18px}
.dashboard-birthdays-toggle{align-items:center;color:var(--brand);display:flex;font-size:var(--text-sm);font-weight:800;gap:7px;white-space:nowrap}
.dashboard-birthdays-hide{display:none}
.dashboard-birthdays[open] .dashboard-birthdays-show{display:none}
.dashboard-birthdays[open] .dashboard-birthdays-hide{display:inline}
.dashboard-birthdays-toggle b{font-size:18px;transition:transform .18s}
.dashboard-birthdays[open] .dashboard-birthdays-toggle b{transform:rotate(180deg)}
.dashboard-birthdays .birthday-list{border-top:1px solid var(--line);display:flex;flex-direction:column;gap:6px;max-height:min(310px,50vh);overflow-y:auto;overscroll-behavior-block:contain;padding:8px 12px 12px;scrollbar-color:var(--brand) var(--surface-2);scrollbar-width:thin}
.dashboard-birthdays .birthday-list::-webkit-scrollbar{width:7px}
.dashboard-birthdays .birthday-list::-webkit-scrollbar-track{background:var(--surface-2);border-radius:999px}
.dashboard-birthdays .birthday-list::-webkit-scrollbar-thumb{background:var(--brand);border-radius:999px}
.dashboard-birthdays .birthday-row{background:var(--surface-2);border:1px solid var(--line);gap:9px;min-height:48px;padding:6px 9px}
.dashboard-birthdays .birthday-row .employee-avatar{height:32px;width:32px}
.dashboard-birthdays .birthday-row-info strong{font-size:var(--text-base)}
.dashboard-birthdays .birthday-row-info small{font-size:var(--text-xs)}
.dashboard-birthdays .birthday-row>.badge{flex:0 0 auto}
.dashboard-birthdays .birthday-list>.empty-state{padding:10px 0;text-align:left}
@media(max-width:520px){
  .dashboard-birthdays>.dashboard-birthdays-head{gap:9px;grid-template-columns:minmax(0,1fr) auto auto;padding:9px 12px}
  .dashboard-birthdays-toggle>span{display:none!important}
  .dashboard-birthdays .birthday-list{max-height:min(286px,48vh)}
}

/* Cabecalho do dashboard: o texto dos pedidos pendentes e um botao; linha do pedido destacada ao chegar la */
.dashboard-greeting-link{background:none;border:0;border-radius:6px;color:inherit;cursor:pointer;font:inherit;margin:0 0 0 -4px;padding:2px 4px;text-align:left;text-decoration:underline;text-decoration-color:#ffffff80;text-underline-offset:3px}
.dashboard-greeting-link:hover{background:#ffffff1f;text-decoration-color:#fff}
.dashboard-greeting-link:focus-visible{outline:2px solid #fff;outline-offset:2px}
.request-row-focus{outline:2px solid var(--warning);outline-offset:-2px}
.request-row-focus td{animation:requestRowFocus 4s ease-out}
@keyframes requestRowFocus{0%,60%{background:color-mix(in srgb,var(--warning) 28%,transparent)}100%{background:transparent}}
@media(prefers-reduced-motion:reduce){.request-row-focus td{animation:none;background:color-mix(in srgb,var(--warning) 22%,transparent)}}

/* ===== Filtros e pesquisa: estilo unificado em todos os modulos (mesmo desenho dos filtros das Assembleias) =====
   Aplica-se as barras de filtros existentes: .table-toolbar, .time-bank-filter, .it-assets-filter-bar e .form-actions com campos. */
:is(.table-toolbar,.time-bank-filter,.it-assets-filter-bar,.form-actions:has(>.field)){gap:12px 14px;align-items:end}
:is(.table-toolbar,.time-bank-filter,.it-assets-filter-bar,.form-actions:has(>.field)) :is(.field,label){gap:6px}
:is(.table-toolbar,.time-bank-filter,.it-assets-filter-bar,.form-actions:has(>.field)) :is(.field>span,label>span:first-child){font-size:var(--text-xs,11px);font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
:is(.table-toolbar,.time-bank-filter,.it-assets-filter-bar,.form-actions:has(>.field)) :is(input:not([type=checkbox]):not([type=radio]):not([type=file]),select){height:42px;min-height:42px;padding:0 12px;border:1px solid var(--line);border-radius:var(--radius-lg,10px);background-color:var(--surface);color:var(--text);font-size:var(--text-md,14px);box-shadow:none;transition:border-color .15s,box-shadow .15s}
:is(.table-toolbar,.time-bank-filter,.it-assets-filter-bar,.form-actions:has(>.field)) :is(input:not([type=checkbox]):not([type=radio]):not([type=file]),select):hover{border-color:color-mix(in srgb,var(--brand) 35%,var(--line))}
:is(.table-toolbar,.time-bank-filter,.it-assets-filter-bar,.form-actions:has(>.field)) :is(input:not([type=checkbox]):not([type=radio]):not([type=file]),select):focus{outline:0;border-color:var(--brand);box-shadow:0 0 0 4px color-mix(in srgb,var(--brand) 16%,transparent)}
:is(.table-toolbar,.time-bank-filter,.it-assets-filter-bar,.form-actions:has(>.field)) input::placeholder{color:color-mix(in srgb,var(--muted) 80%,transparent)}
:is(.table-toolbar,.time-bank-filter,.it-assets-filter-bar,.form-actions:has(>.field)) select:not([multiple]){appearance:none;-webkit-appearance:none;padding-right:38px;cursor:pointer;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;background-size:16px}
:is(.table-toolbar,.time-bank-filter,.it-assets-filter-bar,.form-actions:has(>.field)) :is(input[type=search],input[name=query],input[placeholder^="Pesquis"],input[placeholder^="Procur"],input[placeholder^="Categoria, marca"]){padding-left:40px!important;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='m20 20-3.5-3.5'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:left 13px center;background-size:17px}
:is(.table-toolbar,.time-bank-filter,.it-assets-filter-bar,.form-actions:has(>.field)) input[type=date]::-webkit-calendar-picker-indicator{cursor:pointer;opacity:.55}
:is(.table-toolbar,.time-bank-filter,.it-assets-filter-bar,.form-actions:has(>.field)) input[type=date]::-webkit-calendar-picker-indicator:hover{opacity:1}
:root[data-theme="dark"] :is(.table-toolbar,.time-bank-filter,.it-assets-filter-bar,.form-actions:has(>.field)) input[type=date]{color-scheme:dark}
:is(.table-toolbar,.time-bank-filter,.it-assets-filter-bar,.form-actions:has(>.field)) :is(.secondary-action,.primary-action,.danger-action){min-height:42px;border-radius:var(--radius-lg,10px)}
.time-bank-filter{padding:16px 20px;background:color-mix(in srgb,var(--surface-2) 45%,var(--surface))}
.it-assets-filter-bar{margin:0 var(--space-4) var(--space-3);padding:16px;border-radius:var(--radius-xl,12px);background:var(--surface-2);border:1px solid var(--line)}
:is(.table-toolbar,.time-bank-filter,.it-assets-filter-bar,.form-actions:has(>.field)) select:not([multiple]){min-width:170px}
.table-toolbar>.field{min-width:210px}

/* ===== Componentes de pesquisa e filtros "fx-" (public/filtros-ui.js): Equipamentos e Pedidos de manutencao ===== */
.fx-barra{display:flex;flex-direction:column;gap:12px;padding:16px 20px 4px}
.fx-linha{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.fx-resultados{justify-content:space-between}
.fx-search{position:relative;display:flex;align-items:center;flex:1 1 320px;min-width:0}
.fx-search svg{position:absolute;left:15px;width:18px;height:18px;fill:none;stroke:var(--muted);stroke-width:2;stroke-linecap:round;pointer-events:none}
.fx-search input{width:100%;height:48px;padding:0 14px 0 44px;border:1px solid var(--line);border-radius:var(--radius-xl,12px);background:var(--surface);color:var(--text);font-size:var(--text-lg,15px);transition:border-color .15s,box-shadow .15s}
.fx-search input::placeholder{color:color-mix(in srgb,var(--muted) 80%,transparent)}
.fx-search input:hover,.fx-campo select:hover{border-color:color-mix(in srgb,var(--brand) 35%,var(--line))}
.fx-search input:focus,.fx-campo select:focus{outline:0;border-color:var(--brand);box-shadow:0 0 0 4px color-mix(in srgb,var(--brand) 16%,transparent)}
.fx-btn-filtros{display:inline-flex;align-items:center;gap:8px;height:48px;padding:0 18px;border:1px solid var(--line);border-radius:var(--radius-xl,12px);background:var(--surface);color:var(--text);font:inherit;font-weight:600;cursor:pointer;transition:all .15s}
.fx-btn-filtros svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round}
.fx-btn-filtros:hover{border-color:var(--brand);color:var(--brand)}
.fx-btn-filtros.aberto{background:var(--brand-soft);border-color:var(--brand);color:var(--brand)}
.fx-contador{display:inline-grid;place-items:center;min-width:20px;height:20px;padding:0 6px;border-radius:999px;background:var(--brand);color:#fff;font-size:11px;font-weight:700}
.fx-painel{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:14px 16px;padding:16px;border-radius:var(--radius-xl,12px);background:var(--surface-2);border:1px solid var(--line)}
.fx-painel[hidden]{display:none}
.fx-campo{display:flex;flex-direction:column;gap:6px;min-width:0}
.fx-campo>span{font-size:var(--text-xs,11px);font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.fx-campo select{appearance:none;-webkit-appearance:none;width:100%;height:42px;min-height:42px;padding:0 38px 0 12px;border:1px solid var(--line);border-radius:var(--radius-lg,10px);color:var(--text);font-size:var(--text-md,14px);cursor:pointer;
  background:var(--surface) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") no-repeat right 12px center/16px;transition:border-color .15s,box-shadow .15s}
.fx-segmentos{display:inline-flex;flex-wrap:wrap;gap:4px;padding:4px;border-radius:var(--radius-xl,12px);background:var(--surface-2)}
.fx-seg{display:inline-flex;align-items:center;gap:7px;height:34px;padding:0 12px;border:0;border-radius:9px;background:transparent;color:var(--muted);font:inherit;font-size:var(--text-md,14px);font-weight:600;cursor:pointer;white-space:nowrap;transition:all .15s}
.fx-seg span{font-size:var(--text-sm,12px);font-weight:700;padding:1px 7px;border-radius:999px;background:color-mix(in srgb,var(--muted) 14%,transparent);color:var(--muted)}
.fx-seg:hover{color:var(--text)}
.fx-seg.ativo{background:var(--surface);color:var(--text);box-shadow:0 1px 3px rgba(0,0,0,.08),0 1px 2px rgba(0,0,0,.05)}
.fx-seg.ativo span{background:var(--brand-soft);color:var(--brand)}
.fx-dot{width:8px;height:8px;border-radius:50%;display:inline-block}
.fx-dot-verde{background:#16a34a}.fx-dot-amarelo{background:#f59e0b}.fx-dot-vermelho{background:#dc2626}.fx-dot-cinza{background:#94a3b8}.fx-dot-azul{background:#3b82f6}
.fx-tags{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.fx-tag{display:inline-flex;align-items:center;gap:4px;height:28px;padding:0 4px 0 10px;border-radius:999px;background:var(--brand-soft);color:var(--brand);font-size:var(--text-sm,12px)}
.fx-tag button{display:grid;place-items:center;width:20px;height:20px;border:0;border-radius:50%;background:transparent;color:inherit;cursor:pointer}
.fx-tag button:hover{background:color-mix(in srgb,var(--brand) 18%,transparent)}
.fx-tag svg{width:12px;height:12px;fill:none;stroke:currentColor;stroke-width:2.5;stroke-linecap:round}
.fx-tag-limpar{border:0;background:none;color:var(--muted);font:inherit;font-size:var(--text-sm,12px);font-weight:600;cursor:pointer;padding:0 6px}.fx-tag-limpar:hover{color:var(--danger-text,#b32d23)}
.fx-barra+*{margin-top:8px}
@media (max-width:640px){.fx-barra{padding:12px}.fx-btn-filtros{flex:1;justify-content:center}.fx-segmentos{width:100%}.fx-seg{flex:1 1 auto;justify-content:center}}

/* ===== Organograma: acertos de formatacao ===== */
/* avatares com iniciais: a regra ".orgchart-manager-card span" (texto cinzento, display:block, reticencias) apanhava tambem o avatar */
.orgchart-manager-card .employee-avatar,.orgchart-department-employee .employee-avatar{display:inline-flex;align-items:center;justify-content:center;color:#fff;font-size:var(--text-sm);font-weight:900;line-height:1;white-space:nowrap;text-overflow:clip;letter-spacing:.02em}
.orgchart-manager-card .employee-avatar.has-photo,.orgchart-department-employee .employee-avatar.has-photo{color:var(--text)}
.orgchart-manager-card .employee-avatar>span,.orgchart-department-employee .employee-avatar>span{display:inline;color:inherit;font-size:inherit;white-space:nowrap}
/* linhas de informacao dos cartoes: quebrar em vez de cortar com reticencias */
.orgchart-manager-main>div>small,.orgchart-manager-main>div>span{white-space:normal;overflow:visible;text-overflow:clip;line-height:1.35}
.orgchart-manager-main>div>strong{white-space:normal;line-height:1.25}
/* etiquetas de departamento (ex.: "Academia PROPRIO DEPT."): numa linha */
.orgchart-manager-card .orgchart-assignee strong,.orgchart-manager-card .orgchart-assignee small{display:inline;white-space:nowrap;overflow:visible}
.orgchart-assignee{gap:6px}
/* contador M / D / E na lista de departamentos: nao partir e nao apertar o nome */
.orgchart-department-nav-item>span:first-child{min-width:0}
.orgchart-department-nav-item .badge{flex:0 0 auto;white-space:nowrap;letter-spacing:.02em}
/* cabecalho: botoes e o estado "Gestao ativa" alinhados na mesma linha */
.orgchart-panel>.panel-header .panel-actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:8px}
.orgchart-manager-card .orgchart-assignee small{margin-left:6px}
.orgchart-panel>.panel-header{flex-wrap:wrap}.orgchart-panel>.panel-header .panel-actions{flex:0 1 auto;flex-wrap:nowrap}
@media (max-width:1100px){.orgchart-panel>.panel-header .panel-actions{flex-wrap:wrap}}

/* ===== Caixas de selecao (combobox): estilo base moderno em toda a plataforma =====
   :where() tem especificidade 0, por isso qualquer estilo proprio de um modulo continua a mandar;
   a seta propria e o appearance:none aplicam-se a todas as selects simples. */
:where(select:not([multiple]):not([size])){height:40px;min-height:40px;padding:0 38px 0 12px;border:1px solid var(--line);border-radius:var(--radius-lg,10px);background-color:var(--surface);color:var(--text);font:inherit;font-size:var(--text-md,14px);font-weight:500;line-height:1.2;max-width:100%;transition:border-color .15s,box-shadow .15s}
select:not([multiple]):not([size]){appearance:none;-webkit-appearance:none;padding-right:38px;cursor:pointer;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;background-size:16px}
select:not([multiple]):not([size]):hover:not(:disabled){border-color:color-mix(in srgb,var(--brand) 35%,var(--line))}
select:not([multiple]):not([size]):focus{outline:0;border-color:var(--brand);box-shadow:0 0 0 4px color-mix(in srgb,var(--brand) 16%,transparent)}
select:not([multiple]):not([size]):disabled{opacity:.6;cursor:not-allowed}
:root[data-theme="dark"] select{color-scheme:dark}

/* Combobox pesquisavel de fornecedor: o mesmo padrao visual e funcional de Compras. */
.obr-fornecedor-picker{position:relative;width:100%}
.obr-fornecedor-picker>input[role="combobox"]{width:100%;min-height:40px;padding-right:40px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;background-size:16px}
.obr-fornecedor-select-nativo{position:absolute!important;width:1px!important;height:1px!important;overflow:hidden!important;clip:rect(0 0 0 0)!important;clip-path:inset(50%)!important;white-space:nowrap!important}
.obr-fornecedor-resultados{z-index:30;max-height:280px;overflow:auto}
.obr-fornecedor-resultados button{width:100%;text-align:left}

/* Pedidos de manutencao: descricao com mudancas de linha e pre-visualizacao de anexos */
.facility-request-description{white-space:pre-wrap;line-height:1.55;margin:12px 0;padding:12px 14px;border-radius:var(--radius-lg,10px);background:var(--surface-2);border:1px solid var(--line)}
.facility-attachment-preview{margin:10px 0;display:grid;gap:6px;max-width:520px}
.facility-attachment-preview img,.facility-attachment-preview video{width:100%;max-height:360px;object-fit:contain;border-radius:var(--radius-lg,10px);border:1px solid var(--line);background:var(--surface-2)}
.facility-attachment-preview figcaption{font-size:var(--text-sm);color:var(--muted)}.facility-attachment-preview figcaption a{color:var(--brand);font-weight:600}

/* Service Desk: quadro com colunas Fechado/Cancelado e seletor Lista | Quadro */
.kanban{grid-template-columns:repeat(var(--kanban-cols,5),minmax(220px,1fr))}
.kanban-column-final{background:color-mix(in srgb,var(--surface-2) 70%,var(--surface))}
.kanban-ver-mais{width:100%;margin-top:8px}
.page-actions .fx-segmentos,.actions .fx-segmentos{vertical-align:middle}

/* Service Desk: cartoes do quadro legiveis */
.kanban{grid-template-columns:repeat(var(--kanban-cols,5),minmax(260px,1fr));padding-bottom:8px}
.kanban-column{display:flex;flex-direction:column;gap:10px;padding:12px}
.kanban-column>h3{display:flex;align-items:center;justify-content:space-between;margin:0 0 2px;font-size:var(--text-md,14px);text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}
.kanban .ticket-card{display:flex;flex-direction:column;gap:8px;margin:0;padding:12px 14px;border-radius:var(--radius-lg,10px);box-shadow:0 1px 2px rgba(0,0,0,.04);transition:border-color .15s,box-shadow .15s,transform .15s}
.kanban .ticket-card:hover{border-color:color-mix(in srgb,var(--brand) 45%,var(--line));box-shadow:0 6px 16px rgba(10,57,52,.10);transform:translateY(-1px)}
.kanban .ticket-card-fechado{opacity:.92}
.tc-topo{display:flex;align-items:center;justify-content:space-between;gap:8px}
.tc-id{font-size:var(--text-xs,11px);font-weight:700;letter-spacing:.04em;color:var(--muted)}
.kanban .ticket-card .tc-titulo{margin:0;color:var(--text);font-size:var(--text-md,14px);font-weight:600;line-height:1.4;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.tc-chips{display:flex;flex-wrap:wrap;gap:4px}.tc-chips:empty{display:none}
.tc-chip{font-size:var(--text-xs,11px);font-weight:600;padding:2px 8px;border-radius:999px;background:var(--surface-2);color:var(--muted);border:1px solid var(--line)}
.tc-pessoa{display:flex;align-items:center;gap:8px;font-size:var(--text-sm,12px);color:var(--text);min-width:0}
.tc-pessoa>span:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tc-avatar{flex:0 0 auto;display:inline-grid;place-items:center;width:24px;height:24px;border-radius:7px;background:linear-gradient(135deg,var(--brand),#00a86b);color:#fff;font-size:10px;font-weight:800}
.tc-avatar-sm{width:20px;height:20px;border-radius:6px;font-size:9px}
.tc-rodape{display:flex;align-items:center;justify-content:space-between;gap:8px;padding-top:8px;border-top:1px solid var(--line);font-size:var(--text-xs,11px);color:var(--muted)}
.tc-tecnico{display:inline-flex;align-items:center;gap:6px;font-weight:600;color:var(--text);white-space:nowrap}.tc-tecnico.vazio{color:var(--muted);font-weight:500;font-style:italic}
.tc-sla{font-size:var(--text-xs,11px);font-weight:600;color:var(--muted)}.tc-sla.atrasado{color:var(--danger-text,#b32d23)}

/* Quadros (Service Desk e Manutencao): colunas com scroll proprio, cabecalho fixo, barra de prioridade */
.kanban{align-items:start}
.kanban-column{max-height:calc(100vh - 230px);min-height:260px;overflow:hidden;padding:0;border:1px solid var(--line)}
.kanban-column>h3{position:sticky;top:0;z-index:1;margin:0;padding:12px 14px;background:inherit;border-bottom:1px solid var(--line)}
.kanban-column>h3>span:first-child{display:inline-flex;align-items:center;gap:8px;color:var(--text)}
.kanban-count{min-width:24px;height:22px;padding:0 8px;border-radius:999px;background:var(--surface);border:1px solid var(--line);display:inline-grid;place-items:center;font-size:var(--text-xs,11px);font-weight:700;color:var(--muted)}
.kanban-cards{display:flex;flex-direction:column;gap:10px;padding:12px;overflow-y:auto;max-height:calc(100vh - 280px)}
.kanban-vazio{padding:28px 10px;text-align:center;color:var(--muted);font-size:var(--text-sm,12px);border:1px dashed var(--line);border-radius:var(--radius-lg,10px)}
.kanban .kanban-card{border:1px solid var(--line)}
.kanban .kanban-card.prio-urgente,.kanban .kanban-card.prio-critica{border-color:color-mix(in srgb,#dc2626 55%,var(--line))}
.kanban .kanban-card.prio-alta{border-color:color-mix(in srgb,#f59e0b 55%,var(--line))}
.kanban .kanban-card.prio-media{border-color:color-mix(in srgb,#3b82f6 55%,var(--line))}
.kanban .kanban-card.prio-baixa{border-color:color-mix(in srgb,#94a3b8 55%,var(--line))}
.kanban .ticket-card-breached{box-shadow:0 0 0 1px var(--danger) inset}
/* Pedidos de manutencao: lista arrumada */
.mnt-lista table{table-layout:auto}
.mnt-pedido{display:flex;flex-direction:column;gap:2px;max-width:460px;padding:0;border:0;background:none;color:inherit;font:inherit;text-align:left;cursor:pointer}
.mnt-pedido small{font-size:var(--text-xs,11px);font-weight:700;letter-spacing:.03em;color:var(--muted)}
.mnt-pedido strong{font-weight:600;line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.mnt-pedido:hover strong{color:var(--brand)}
.mnt-data{font-size:var(--text-sm,12px);color:var(--muted);white-space:nowrap}
.mnt-paginacao{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;padding:14px 20px;border-top:1px solid var(--line);color:var(--muted)}
.mnt-paginacao>div{display:inline-flex;align-items:center;gap:8px}.mnt-paginacao strong{color:var(--text)}
.mnt-paginacao .asb-pag-btn{display:grid;place-items:center;width:36px;height:36px;border:1px solid var(--line);border-radius:var(--radius-lg,10px);background:var(--surface);color:var(--text);cursor:pointer;font-size:20px;line-height:1}
.mnt-paginacao .asb-pag-btn:disabled{opacity:.4;cursor:default}
.mnt-lista td,.mnt-lista th{white-space:normal}
.mnt-lista td:nth-child(1){min-width:260px}.mnt-lista .mnt-pedido{max-width:420px}
.mnt-lista td:nth-child(3),.mnt-lista td:nth-child(6){max-width:170px}
.mnt-lista td:nth-child(4),.mnt-lista td:nth-child(5),.mnt-lista td:nth-child(7){white-space:nowrap}

/* Quadros: sem scroll interno (a pagina cresce); colunas finais com 5 + Mostrar mais */
.kanban-column{max-height:none;overflow:visible;min-height:200px}
.kanban-cards{max-height:none;overflow:visible}
.kanban-column>h3{position:static;border-radius:var(--radius-md) var(--radius-md) 0 0}
.kanban-mais{display:flex;flex-direction:column;align-items:center;gap:6px;padding-top:4px}.kanban-mais .secondary-action{width:100%}
.kanban-link{border:0;background:none;color:var(--brand);font:inherit;font-size:var(--text-sm,12px);font-weight:600;cursor:pointer}.kanban-link:hover{text-decoration:underline}

/* Equipa - produtividade (Manutencao e Service Desk) */
.equipa-panel .panel-header{flex-wrap:wrap;gap:12px}
.equipa-panel .panel-header small{display:block;margin-top:4px}
.equipa-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:14px}
.equipa-card{display:flex;flex-direction:column;gap:14px;padding:16px;border:1px solid var(--line);border-radius:var(--radius-xl,12px);background:var(--surface)}
.equipa-card header{display:flex;align-items:center;gap:12px}
.equipa-card header strong{display:block;font-size:var(--text-lg,15px)}.equipa-card header small{color:var(--muted);font-size:var(--text-sm,12px)}
.equipa-avatar{width:40px;height:40px;border-radius:12px;font-size:14px}
.equipa-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.equipa-stats>div{padding:10px;border-radius:var(--radius-lg,10px);background:var(--surface-2);text-align:center}
.equipa-stats span{display:block;font-size:var(--text-xs,11px);color:var(--muted);font-weight:600}
.equipa-stats strong{display:block;margin-top:4px;font-size:20px;line-height:1.1}
.equipa-stats .alerta{background:color-mix(in srgb,var(--danger,#dc2626) 12%,var(--surface))}.equipa-stats .alerta strong{color:var(--danger-text,#b32d23)}
.equipa-barra>div{display:flex;justify-content:space-between;font-size:var(--text-sm,12px);color:var(--muted);margin-bottom:6px}.equipa-barra strong{color:var(--text)}
.equipa-barra i{display:block;height:8px;border-radius:999px;background:var(--surface-2);overflow:hidden}
.equipa-barra b{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--brand),#00a86b)}
.equipa-barra.volume b{background:linear-gradient(90deg,#3b82f6,#60a5fa)}
@media (max-width:520px){.equipa-stats{grid-template-columns:repeat(2,1fr)}}

/* Quadros: sem scroll horizontal - as colunas ajustam-se a largura e passam para a linha seguinte se nao couberem */
.kanban-column{min-width:0}
.kanban .ticket-card{min-width:0}.kanban .tc-pessoa>span:last-child,.kanban .tc-tecnico{min-width:0;overflow:hidden;text-overflow:ellipsis}
.kanban .tc-rodape{flex-wrap:wrap}

/* Quadros numa so linha, sem scroll horizontal: colunas vazias encolhem numa faixa vertical;
   as colunas com conteudo dividem a largura e, quando largas, mostram os cartoes em grelha */
.kanban{display:flex!important;gap:10px;align-items:stretch;overflow:visible!important}
.kanban>.kanban-column{flex:1 1 0;min-width:0}
.kanban>.kanban-column.kanban-column-vazia{flex:0 0 52px;min-height:220px}
.kanban-column-vazia>h3{writing-mode:vertical-rl;transform:rotate(180deg);display:flex;flex-direction:row-reverse;justify-content:flex-end;gap:10px;height:100%;padding:14px 0;border-bottom:0;align-items:center}
.kanban-column-vazia>h3>span:first-child{gap:10px}
.kanban-column-vazia>h3 .kanban-count{writing-mode:horizontal-tb;transform:rotate(180deg)}
.kanban-column-vazia .kanban-cards{display:none}
.kanban-column-vazia.kanban-column-dragover{flex-basis:200px}
.kanban-cards{display:grid!important;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));align-content:start}
.kanban-cards>.kanban-mais,.kanban-cards>.kanban-vazio{grid-column:1/-1}
.kanban-column-vazia>h3{transform:none!important;flex-direction:row!important;justify-content:flex-start!important;height:auto;padding:14px 0 14px}
.kanban-column-vazia>h3 .kanban-count{transform:none!important;margin-top:4px}
.kanban-column-vazia>h3>span:first-child{flex-direction:row}
.kanban-column-vazia .kanban-cards{display:none!important}

/* Quadros: titulo da coluna e botao de abrir/fechar */
.kanban-column>h3{padding:0!important}
.kanban-toggle{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;padding:12px 14px;border:0;background:none;color:inherit;font:inherit;text-transform:inherit;letter-spacing:inherit;cursor:pointer;border-radius:inherit}
.kanban-toggle>span:first-child{display:inline-flex;align-items:center;gap:8px;color:var(--text)}
.kanban-toggle:hover{background:color-mix(in srgb,var(--brand) 8%,transparent)}
.kanban-column-vazia{cursor:pointer}
.kanban-column-vazia>h3{height:100%}
.kanban-column-vazia .kanban-toggle{writing-mode:vertical-rl;flex-direction:row;justify-content:flex-start;height:100%;min-height:200px;padding:14px 0}
.kanban-column-vazia .kanban-toggle>span:first-child{gap:10px}
.kanban-column-vazia .kanban-count{writing-mode:horizontal-tb;margin-top:6px}

/* Tabelas: ajustar a largura disponivel em vez de scroll horizontal (o texto parte de linha; etiquetas e botoes ficam inteiros) */
.table-wrap table{min-width:0;width:100%}
.table-wrap th,.table-wrap td{white-space:normal;overflow-wrap:break-word;word-break:normal}
.table-wrap .badge,.table-wrap button,.table-wrap .secondary-action,.table-wrap .primary-action,.table-wrap .danger-action{white-space:nowrap}
.table-wrap td:has(> button + button),.table-wrap td:has(> .secondary-action + .secondary-action){white-space:normal}
/* paineis com tabelas largas (6+ colunas) dentro de grelhas de 2 colunas ocupam a linha toda */
.grid>.panel:has(.table-wrap table th:nth-child(6)),.grid>section:has(.table-wrap table th:nth-child(6)){grid-column:1/-1}
.kanban:not(:has(.kanban-column:not(.kanban-column-vazia)))::after{content:"Todas as colunas estão fechadas. Clique no nome de uma coluna para ver os pedidos.";flex:1;display:grid;place-items:center;padding:40px;color:var(--muted);font-size:var(--text-md,14px);border:1px dashed var(--line);border-radius:var(--radius-md)}
/* quadros dentro de paineis: margens */
.panel>.kanban{padding:0 20px 20px}
.panel>.table-wrap{margin-top:0}

/* Dashboard: hero de boas-vindas */
.dashboard-hero{align-items:center;border:1px solid rgba(255,255,255,.14)!important;border-radius:var(--radius-3xl,16px)!important;box-shadow:0 20px 50px rgba(0,48,37,.3),inset 0 1px 0 rgba(255,255,255,.12);color:#fff;display:flex!important;gap:24px;isolation:isolate;justify-content:space-between;overflow:hidden;padding:28px 30px!important;position:relative;
  background:radial-gradient(760px 280px at 92% -45%,rgba(0,168,107,.24),transparent 62%),radial-gradient(520px 240px at -10% 120%,rgba(212,175,55,.13),transparent 62%),linear-gradient(135deg,#053f33 0%,#006247 50%,#092f28 100%)!important}
.dashboard-hero::before{background-image:linear-gradient(rgba(255,255,255,.045) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.045) 1px,transparent 1px);background-size:28px 28px;content:"";inset:0;mask-image:linear-gradient(90deg,transparent 0%,#000 58%,transparent 100%);-webkit-mask-image:linear-gradient(90deg,transparent 0%,#000 58%,transparent 100%);pointer-events:none;position:absolute;z-index:0}
.dashboard-hero::after{border:1px solid rgba(255,255,255,.08);border-radius:50%;content:"";height:250px;pointer-events:none;position:absolute;right:-72px;top:-118px;width:250px;z-index:0}
.dashboard-hero-crest{position:absolute;right:210px;top:50%;width:170px;height:170px;object-fit:contain;transform:translateY(-50%) rotate(-8deg);opacity:.09;filter:grayscale(1) brightness(3);pointer-events:none}
.dashboard-hero-main{display:flex;flex:1;flex-direction:column;gap:8px;min-width:0;position:relative;z-index:1}
.dashboard-hero-eyebrow{font-size:var(--text-xs,11px);font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:#d4af37}
.dashboard-hero h2{margin:0;font-size:clamp(22px,2.4vw,28px);line-height:1.1;font-weight:800;letter-spacing:-.01em;color:#fff}
.dashboard-hero-context{margin:0;font-size:var(--text-lg,15px);color:#e8f5f0}
.dashboard-hero-meta{display:flex;flex-wrap:wrap;gap:7px;margin-top:3px}
.dashboard-hero-meta>span{align-items:center;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.13);border-radius:999px;color:#e8f5f0;display:inline-flex;font-size:var(--text-sm);font-weight:700;gap:7px;min-height:30px;padding:5px 10px}
.dashboard-hero-meta svg{height:15px;width:15px}
.dashboard-hero-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:14px}
.dashboard-hero-pill{display:inline-flex;align-items:center;gap:10px;height:40px;padding:0 16px 0 6px;border-radius:999px;border:1px solid rgba(255,255,255,.22);background:rgba(255,255,255,.12);color:#fff;font:inherit;font-size:var(--text-md,14px);font-weight:600;backdrop-filter:blur(6px)}
.dashboard-hero-pill.ok{padding-left:14px}
.dashboard-hero-pill.alerta{cursor:pointer;transition:background .15s,transform .15s}
.dashboard-hero-pill.alerta:hover{background:rgba(255,255,255,.2);transform:translateY(-1px)}
.dashboard-hero-pill-count{display:inline-grid;place-items:center;min-width:28px;height:28px;padding:0 8px;border-radius:999px;background:#f5b301;color:#2b2100;font-weight:800}
.dashboard-hero-pill-dot{width:8px;height:8px;border-radius:50%;background:#4ade80;box-shadow:0 0 0 4px rgba(74,222,128,.25)}
.dashboard-hero-clock{align-items:flex-end;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);background:rgba(255,255,255,.075);border:1px solid rgba(255,255,255,.14);border-radius:18px;display:flex;flex:0 0 auto;flex-direction:column;gap:4px;min-width:245px;padding:15px 17px;position:relative;text-align:right;z-index:1}
.dashboard-hero-clock-label{align-items:center;color:#d9eee7;display:inline-flex;font-size:var(--text-xs);font-weight:800;gap:6px;letter-spacing:.06em;text-transform:uppercase}
.dashboard-hero-clock-label svg{height:14px;width:14px}
.dashboard-hero-clock-time{color:#fff;font-family:Plus Jakarta Sans,Inter,Segoe UI,Arial,sans-serif;font-size:clamp(40px,4.5vw,52px);font-variant-numeric:tabular-nums;font-weight:800;letter-spacing:-.03em;line-height:1}
.dashboard-hero-clock-date{color:#e8f5f0;font-size:var(--text-md,14px);font-weight:600}
.dashboard-hero :is(.hero-avisos):focus-visible{box-shadow:0 0 0 4px rgba(6,37,31,.38);outline:3px solid #fff;outline-offset:2px}
@media (max-width:780px){
  .dashboard-hero{align-items:flex-start;flex-direction:column;gap:18px;padding:22px!important}
  .dashboard-hero-main{padding-right:54px;width:100%}
  .dashboard-hero-main .hero-brand-seal{max-width:calc(100% - 2px)}
  .dashboard-hero-main .hero-brand-seal span{overflow:hidden;text-overflow:ellipsis}
  .dashboard-hero-clock{align-items:center;display:grid;gap:2px 14px;grid-template-columns:minmax(0,1fr) auto;min-width:0;padding:12px 14px;text-align:left;width:100%}
  .dashboard-hero-clock-label{grid-column:1;grid-row:1}
  .dashboard-hero-clock-date{font-size:13px;grid-column:1;grid-row:2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .dashboard-hero-clock-time{font-size:36px;grid-column:2;grid-row:1/3}
  .dashboard-hero-crest{right:-30px;width:180px;height:180px}
}
@media (max-width:420px){.dashboard-hero{padding-inline:16px!important}.dashboard-hero-clock-time{font-size:32px}.dashboard-hero-meta>span{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}

/* Area do colaborador: hero pessoal (mesmo estilo do Dashboard) */
.employee-hero-v2{border:1px solid rgba(255,255,255,.14)!important;box-shadow:0 20px 50px rgba(0,48,37,.3),inset 0 1px 0 rgba(255,255,255,.12)!important;color:#fff!important;gap:16px!important;isolation:isolate;padding:26px 28px!important;
  background:radial-gradient(720px 270px at 92% -45%,rgba(0,168,107,.24),transparent 62%),radial-gradient(500px 230px at -10% 120%,rgba(212,175,55,.12),transparent 62%),linear-gradient(135deg,#053f33 0%,#006247 50%,#092f28 100%)!important}
.employee-hero-v2.idle{background:radial-gradient(700px 260px at 90% -45%,rgba(148,163,184,.16),transparent 62%),linear-gradient(135deg,#213238 0%,#263b40 52%,#14262a 100%)!important}
.employee-hero-v2.status-paused{background:radial-gradient(680px 260px at 92% -45%,rgba(245,179,1,.16),transparent 62%),linear-gradient(135deg,#183931 0%,#315044 52%,#172b27 100%)!important}
.employee-hero-v2.status-stopped{background:radial-gradient(680px 260px at 92% -45%,rgba(148,163,184,.14),transparent 62%),linear-gradient(135deg,#1c3036 0%,#294047 52%,#14262b 100%)!important}
.employee-hero-v2::before{background-image:linear-gradient(rgba(255,255,255,.04) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.04) 1px,transparent 1px);background-size:28px 28px;content:"";inset:0;mask-image:linear-gradient(90deg,transparent 0%,#000 58%,transparent 100%);-webkit-mask-image:linear-gradient(90deg,transparent 0%,#000 58%,transparent 100%);pointer-events:none;position:absolute;z-index:0}
.employee-hero-v2::after{border:1px solid rgba(255,255,255,.07);border-radius:50%;content:"";height:260px;pointer-events:none;position:absolute;right:-86px;top:-130px;width:260px;z-index:0}
.employee-live-hero-crest{position:absolute;right:190px;top:50%;width:240px;height:240px;object-fit:contain;transform:translateY(-50%) rotate(-8deg);opacity:.09;filter:grayscale(1) brightness(3);pointer-events:none;z-index:0}
.employee-hero-identity{align-items:center;border-bottom:1px solid rgba(255,255,255,.14);display:flex;gap:14px;padding-bottom:16px;position:relative;width:100%;z-index:1}
.employee-hero-identity .employee-avatar{width:52px;height:52px;border-radius:16px;border:2px solid rgba(255,255,255,.35);box-shadow:0 6px 18px rgba(0,0,0,.2)}
.employee-hero-identity-copy{display:grid;flex:1;gap:2px;min-width:0}
.employee-hero-v2 .employee-hero-kicker{color:#ffe7a3!important;font-size:10px!important;font-weight:800;letter-spacing:.12em;line-height:1.2;text-transform:uppercase}
.employee-hero-identity h2{color:#fff;font-size:clamp(20px,2.2vw,26px);font-weight:800;line-height:1.15;margin:0;max-width:100%;overflow-wrap:anywhere}
.employee-hero-identity>div>.employee-hero-meta{color:#e8f5f0;display:block;font-size:var(--text-md,14px);margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.employee-live-hero-body{align-items:stretch;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);background:rgba(255,255,255,.065);border:1px solid rgba(255,255,255,.12);border-radius:20px;gap:18px;padding:18px;z-index:1}
.employee-live-hero-content{gap:14px}
.employee-live-hero-main{gap:6px}
.employee-hero-v2 .employee-live-hero-label{align-items:center;background:rgba(255,255,255,.09);border:1px solid rgba(255,255,255,.13);border-radius:999px;color:#fff;display:flex;font-size:var(--text-base);padding:6px 10px;width:fit-content}
.employee-hero-v2.status-paused .employee-live-hero-label{background:rgba(245,179,1,.12);border-color:rgba(245,179,1,.3)}
.employee-hero-v2.status-stopped .employee-live-hero-label{background:rgba(148,163,184,.12);border-color:rgba(203,213,225,.22)}
.employee-hero-v2 .employee-live-hero-value{font-size:clamp(44px,4.6vw,58px);letter-spacing:-.035em}
.employee-live-hero-total{color:#e8f5f0!important;font-size:var(--text-sm)!important;font-weight:700;opacity:1!important}
.employee-hero-v2 small,.employee-hero-v2 .employee-live-hero-remaining{color:#e8f5f0!important;opacity:1!important}
.employee-hero-v2.idle .employee-live-hero-complete{background:rgba(255,255,255,.18);color:#fff}
.employee-hero-status{width:10px;height:10px;border-radius:50%;background:#94a3b8;box-shadow:0 0 0 4px rgba(148,163,184,.25)}
.employee-hero-status.pausa{background:#f5b301;box-shadow:0 0 0 4px rgba(245,179,1,.25)}
.employee-hero-v2 .employee-live-dot{animation:heroPulse 1.6s ease-in-out infinite}
@keyframes heroPulse{0%,100%{box-shadow:0 0 0 0 rgba(74,222,128,.55)}50%{box-shadow:0 0 0 7px rgba(74,222,128,0)}}
.employee-hero-progress{margin-top:10px;max-width:460px}
.employee-hero-progress>div{color:#e8f5f0;display:flex;font-size:var(--text-sm,12px);justify-content:space-between;margin-bottom:7px}.employee-hero-progress strong{color:#fff}
.employee-hero-progress i{background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.08);border-radius:999px;display:block;height:10px;overflow:hidden}
.employee-hero-progress b{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#4ade80,#d4af37);transition:width .6s ease}
.employee-live-periods-block{display:grid;gap:8px}
.employee-live-periods-title{align-items:center;color:#d9eee7;display:inline-flex;font-size:var(--text-xs);font-weight:800;gap:6px;letter-spacing:.05em;text-transform:uppercase}
.employee-live-periods-title svg{height:14px;width:14px}
.employee-hero-v2 .employee-live-period{background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.11);color:#fff}
.employee-hero-v2 .employee-live-period-icon{background:rgba(255,255,255,.13);color:#fff}
.employee-hero-v2 .employee-live-hero-qr{background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.12);border-radius:18px;min-width:136px;padding:10px 12px}
.employee-live-hero-qr-title{color:#fff;font-size:var(--text-sm);font-weight:800}
.employee-hero-v2 .employee-live-hero-qr .employee-qr-code{border-radius:14px;box-shadow:0 10px 26px rgba(0,0,0,.25);min-height:108px;min-width:108px;padding:7px}
.employee-hero-v2 :is(.employee-live-hero-qr,.employee-hero-qr-mini,.hero-avisos):focus-visible{box-shadow:0 0 0 4px rgba(6,37,31,.4);outline:3px solid #fff;outline-offset:2px}
@media (min-width:1100px){.employee-hero-v2 .employee-live-hero-body{display:grid;grid-template-columns:minmax(0,1fr) auto}}
@media (hover:hover){.employee-hero-v2 .employee-live-hero-qr:hover{background:rgba(255,255,255,.11);transform:translateY(-2px)}}
@media(prefers-reduced-motion:reduce){.employee-hero-v2 .employee-live-dot{animation:none!important}.employee-hero-v2 .employee-hero-progress b,.employee-hero-v2 .employee-live-hero-qr{transition:none!important}.employee-hero-v2 .employee-live-hero-qr:hover,.employee-hero-v2 .employee-live-hero-qr:active{transform:none!important}}

/* Selo discreto da empresa nos heros (como no rodape do login) */
.dashboard-hero-crest,.employee-live-hero-crest{display:none!important}
.hero-brand-seal{align-items:center!important;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.14);border-radius:999px;color:#e8f5f0!important;display:inline-flex!important;font-size:10.5px!important;font-weight:700!important;gap:8px!important;height:30px;letter-spacing:.08em!important;line-height:1;max-width:100%;overflow:hidden;padding:0 12px 0 6px;text-transform:uppercase;white-space:nowrap;width:auto!important}
.hero-brand-seal img{display:block;flex:0 0 auto;height:20px!important;object-fit:contain;width:20px!important}
.hero-brand-seal span{color:#e8f5f0!important;display:block!important;font-size:10.5px!important;letter-spacing:.08em!important;line-height:1!important;margin:0!important;min-width:0;overflow:hidden;text-overflow:ellipsis}
.dashboard-hero-main .hero-brand-seal{align-self:flex-start;margin-bottom:6px}
.employee-hero-identity .hero-brand-seal{align-self:center!important;margin-left:auto}

/* Area do colaborador: "Precisa da sua atencao" */
.emp-atencao{display:flex;flex-direction:column;gap:10px}
.emp-atencao h2{margin:0;font-size:var(--text-xl,16px)}
.emp-atencao-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:10px}
.emp-atencao-item{display:flex;align-items:center;gap:12px;padding:14px;border:1px solid var(--line);border:1px solid var(--line);border-radius:var(--radius-lg,10px);background:var(--surface)}
.emp-atencao-item.verde{border-color:color-mix(in srgb,#16a34a 55%,var(--line))}.emp-atencao-item.amarelo{border-color:color-mix(in srgb,#f59e0b 55%,var(--line))}.emp-atencao-item.azul{border-color:color-mix(in srgb,#3b82f6 55%,var(--line))}.emp-atencao-item.vermelho{border-color:color-mix(in srgb,#dc2626 55%,var(--line))}
.emp-atencao-icon{flex:0 0 auto;display:grid;place-items:center;width:38px;height:38px;border-radius:10px;background:var(--surface-2);color:var(--brand)}
.emp-atencao-icon svg{width:20px;height:20px}
.emp-atencao-item>div{flex:1;min-width:0}
.emp-atencao-item strong{display:block;font-size:var(--text-md,14px)}
.emp-atencao-item small{display:block;margin-top:2px;color:var(--muted);font-size:var(--text-sm,12px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.emp-atencao-item .secondary-action{flex:0 0 auto;white-space:nowrap}

/* Area do colaborador: pedidos recentes em lista */
.emp-pedidos{list-style:none;margin:0;padding:6px 16px 12px}
.emp-pedido{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--line)}
.emp-pedido:last-child{border-bottom:0}
.emp-pedido-icon{flex:0 0 auto;display:grid;place-items:center;width:34px;height:34px;border-radius:10px;background:var(--surface-2);color:var(--brand)}
.emp-pedido-icon svg{width:18px;height:18px}
.emp-pedido>div{flex:1;min-width:0}.emp-pedido strong{display:block;font-size:var(--text-md,14px)}.emp-pedido small{color:var(--muted);font-size:var(--text-sm,12px)}
.emp-pedido .row-menu-panel{right:0;left:auto}

/* Telemovel */
@media (max-width:640px){
  .emp-atencao-grid{grid-template-columns:1fr}
  .emp-atencao-item{flex-wrap:wrap}
  .emp-atencao-item .secondary-action{width:100%;min-height:44px}
  .emp-atencao-item small{white-space:normal}
}

/* Telemovel: tabelas simples passam a cartoes (cada celula com o nome da coluna) */
@media (max-width:640px){
  .table-wrap table[data-rotulada]{display:block;min-width:0!important;width:100%}
  .table-wrap table[data-rotulada] thead{display:none}
  .table-wrap table[data-rotulada] tbody{display:flex;flex-direction:column;gap:10px}
  .table-wrap table[data-rotulada] tr{display:block;padding:10px 12px;border:1px solid var(--line);border-radius:var(--radius-lg,10px);background:var(--surface)}
  .table-wrap table[data-rotulada] td{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;padding:6px 0!important;border:0!important;border-bottom:1px dashed var(--line)!important;text-align:right;white-space:normal!important;background:transparent}
  .table-wrap table[data-rotulada] td:last-child{border-bottom:0!important}
  .table-wrap table[data-rotulada] td::before{content:attr(data-label);flex:0 0 auto;max-width:45%;text-align:left;font-size:var(--text-xs,11px);font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}
  .table-wrap table[data-rotulada] td[data-label=""]::before{display:none}
  .table-wrap{overflow-x:visible!important}
}

/* Registar picagem no telemovel: botao principal + outras picagens */
.emp-picagem-mobile{display:none}
@media (max-width:640px){
  .employee-section{display:flex;flex-direction:column;gap:16px}
  .employee-section>.employee-live-hero{order:-3}
  .employee-section>.emp-picagem{order:-2}
  .emp-picagem .employee-action-grid{display:none!important}
  .emp-picagem .panel-header .badge{display:none}
  .emp-picagem-mobile{display:flex;flex-direction:column;gap:10px;padding:14px}
  .emp-picagem-principal{display:flex;align-items:center;gap:14px;width:100%;min-height:76px;padding:14px 18px;border:0;border-radius:18px;color:#fff;font:inherit;text-align:left;cursor:pointer;
    background:linear-gradient(135deg,#00734f,#00a86b);box-shadow:0 10px 24px rgba(0,115,79,.35);transition:transform .12s}
  .emp-picagem-principal:active{transform:scale(.98)}
  .emp-picagem-principal-icon{display:grid;place-items:center;width:46px;height:46px;border-radius:14px;background:rgba(255,255,255,.2);flex:0 0 auto}
  .emp-picagem-principal-icon svg{width:24px;height:24px}
  .emp-picagem-principal strong{display:block;font-size:19px;font-weight:800}
  .emp-picagem-principal small{display:block;margin-top:2px;font-size:13px;opacity:.85}
  .emp-picagem-outras-label{margin-top:4px;font-size:var(--text-xs,11px);font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
  .emp-picagem-outras{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
  .emp-picagem-outra{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;min-height:64px;padding:8px;border:1px solid var(--line);border-radius:14px;background:var(--surface);color:var(--text);font:inherit;font-size:var(--text-sm,12px);font-weight:600;cursor:pointer}
  .emp-picagem-outra svg{width:20px;height:20px;color:var(--brand)}
  .emp-picagem-outra:active{background:var(--surface-2)}
}

/* Hero da area do colaborador no telemovel: uma coluna, limpo */
.employee-hero-qr-mini{display:none}
@media (max-width:780px){
  .employee-hero-v2{padding:18px 16px!important;gap:12px!important;border-radius:20px!important}
  .employee-hero-v2 .hero-brand-seal{display:none!important}
  .employee-hero-identity{flex-wrap:nowrap!important;gap:12px;padding-bottom:12px}
  .employee-hero-identity .employee-avatar{width:44px;height:44px;border-radius:13px}
  .employee-hero-identity-copy{flex:1;min-width:0}
  .employee-hero-identity h2{font-size:19px!important}
  .employee-hero-identity .employee-hero-meta{font-size:13px!important;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .employee-hero-qr-mini{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;flex:0 0 auto;width:52px;height:52px;border-radius:14px;border:1px solid rgba(255,255,255,.25);background:rgba(255,255,255,.12);color:#fff;font:inherit;font-size:10px;font-weight:800;letter-spacing:.06em;cursor:pointer}
  .employee-hero-qr-mini span{color:#fff;font-size:10px;line-height:1;margin:0}
  .employee-hero-qr-mini svg{width:22px;height:22px}
  .employee-hero-v2 .employee-live-hero-qr{display:none!important}
  .employee-hero-v2 .employee-live-hero-body{display:block;padding:14px}
  .employee-hero-v2 .employee-live-hero-content{gap:12px;min-width:0}
  .employee-hero-v2 .employee-live-hero-main{padding-right:52px}
  .employee-hero-v2 .employee-live-hero-label{font-size:13px}
  .employee-hero-v2 .employee-live-hero-value{font-size:clamp(38px,9vw,44px)!important;letter-spacing:-.025em}
  .employee-hero-v2 .employee-live-hero-total{display:block;font-size:13px!important}
  .employee-hero-v2 .employee-live-hero-remaining{font-size:13px!important;line-height:1.4;margin-top:2px}
  .employee-hero-v2 .employee-hero-progress{max-width:none;margin-top:10px}
  .employee-live-periods-block{margin-top:2px}
  .employee-hero-v2 .employee-live-periods{display:flex!important;flex-direction:column;font-size:12px;gap:6px;width:100%}
  .employee-hero-v2 .employee-live-period{align-items:center;box-sizing:border-box;display:flex!important;font-size:12px;gap:8px!important;min-height:0!important;padding:8px 12px!important;width:100%!important}
  .employee-hero-v2 .employee-live-period-icon{width:24px!important;height:24px!important}
  .employee-hero-v2 .employee-live-period-time{flex:1;min-width:0}
  .employee-hero-v2 .employee-live-period em,.employee-hero-v2 .employee-live-period strong{font-style:normal;font-weight:800;margin-left:auto}
}
@media (max-width:420px){.employee-hero-v2 .employee-live-hero-value{font-size:clamp(34px,9vw,38px)!important}.employee-hero-v2 .employee-live-hero-body{padding:12px}}

/* Barra de baixo no telemovel: encostada ao fundo (inclui a zona do indicador do iPhone) e botao central em destaque */
@media (max-width:780px){html.has-bottom-nav-root,body.has-bottom-nav{background:var(--surface)}}
.bottom-nav{align-items:end;padding:6px 8px calc(6px + env(safe-area-inset-bottom,0px))!important;border-top:1px solid var(--line);background:color-mix(in srgb,var(--surface) 92%,transparent)!important;backdrop-filter:saturate(1.6) blur(16px);-webkit-backdrop-filter:saturate(1.6) blur(16px)}
.bottom-nav::after{content:"";position:absolute;left:0;right:0;top:100%;height:120px;background:var(--surface)}
.bottom-nav-center{overflow:visible}
.bottom-nav-center-circle{display:grid;place-items:center;width:60px;height:60px;margin-top:-30px;border-radius:50%;color:#fff;background:linear-gradient(135deg,#00734f,#00a86b);box-shadow:0 10px 24px rgba(0,115,79,.4),0 0 0 5px var(--surface);transition:transform .12s}
.bottom-nav-center-circle svg{width:28px;height:28px}
.bottom-nav-center:active .bottom-nav-center-circle{transform:scale(.94)}
.bottom-nav-center .bottom-nav-label{color:var(--brand)}
.bottom-nav-center::before{display:none!important}
/* painel rapido */
.quick-sheet{position:fixed;inset:0;z-index:200}
.quick-sheet-backdrop{position:absolute;inset:0;background:rgba(6,26,22,.5);opacity:0;transition:opacity .2s}
.quick-sheet-panel{position:absolute;left:0;right:0;bottom:0;display:flex;flex-direction:column;gap:10px;padding:10px 16px calc(18px + env(safe-area-inset-bottom,0px));border-radius:24px 24px 0 0;background:var(--surface);box-shadow:0 -12px 40px rgba(0,0,0,.25);transform:translateY(100%);transition:transform .25s cubic-bezier(.22,.8,.24,1)}
.quick-sheet.open .quick-sheet-backdrop{opacity:1}
.quick-sheet.open .quick-sheet-panel{transform:translateY(0)}
.quick-sheet-handle{align-self:center;width:42px;height:5px;border-radius:999px;background:var(--line);margin-bottom:4px}
.quick-sheet h3{margin:0 0 4px;font-size:17px}
.quick-sheet .emp-picagem-principal{display:flex;align-items:center;gap:14px;width:100%;min-height:76px;padding:14px 18px;border:0;border-radius:18px;color:#fff;font:inherit;text-align:left;background:linear-gradient(135deg,#00734f,#00a86b);box-shadow:0 10px 24px rgba(0,115,79,.35)}
.quick-sheet .emp-picagem-principal-icon{display:grid;place-items:center;width:46px;height:46px;border-radius:14px;background:rgba(255,255,255,.2)}
.quick-sheet .emp-picagem-principal-icon svg{width:24px;height:24px}
.quick-sheet .emp-picagem-principal strong{display:block;font-size:19px;font-weight:800}.quick-sheet .emp-picagem-principal small{display:block;font-size:13px;opacity:.85}
.quick-sheet .emp-picagem-outras-label{font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.quick-sheet .emp-picagem-outras{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.quick-sheet .emp-picagem-outra{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;min-height:64px;border:1px solid var(--line);border-radius:14px;background:var(--surface);color:var(--text);font:inherit;font-size:12px;font-weight:600}
.quick-sheet .emp-picagem-outra svg{width:20px;height:20px;color:var(--brand)}
.quick-sheet-qr{display:flex;align-items:center;justify-content:center;gap:10px;min-height:52px;border:1px solid var(--line);border-radius:14px;background:var(--surface-2);color:var(--text);font:inherit;font-weight:700}
.quick-sheet-qr svg{width:20px;height:20px;color:var(--brand)}

/* iPhone: a barra de cima ocupa tambem a zona do relogio/notch, com a mesma cor solida (como uma app nativa) */
@media (max-width:780px){
  html{border-top:0!important;background:#06251f}
  .topbar{padding-top:calc(8px + env(safe-area-inset-top,0px))!important;background:#06251f!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important;border-bottom:1px solid rgba(255,255,255,.08)!important}
  body.has-bottom-nav{background:var(--bg)}
}
.quick-sheet-panel{max-height:calc(100dvh - 40px);overflow-y:auto}

/* iPhone (Safari): a zona por baixo da barra de baixo (barra flutuante do Safari / indicador) fica com a mesma cor da barra */
@media (max-width:780px){html:has(body.has-bottom-nav){background:var(--surface)!important}body.has-bottom-nav{min-height:100dvh}}

/* iPhone / Safari iOS 26: para o Safari usar a cor da app nas zonas do relogio e do fundo (em vez do degrade),
   as barras tem de ser FIXAS, de cor SOLIDA e encostadas a extremidade do ecra. */
@media (max-width:780px){
  .topbar{position:fixed!important;top:0;left:0;right:0;z-index:13;box-sizing:border-box;min-height:calc(61px + env(safe-area-inset-top,0px));background:#06251f!important}
  .workspace{padding-top:calc(61px + env(safe-area-inset-top,0px))!important}
  .bottom-nav{background:var(--surface)!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important}
}

/* Tema: so no menu lateral (acima do Sair) */
#themeToggle{display:none!important}
.sidebar-theme{margin-bottom:8px}

/* Tema no menu lateral: discreto (linha simples com interruptor) */
.sidebar-theme{background:transparent!important;border:0!important;box-shadow:none!important;min-height:0!important;padding:6px 10px!important;margin:0 0 6px!important;gap:8px!important;font-size:12px!important;font-weight:600!important;color:var(--sidebar-muted,rgba(255,255,255,.6))!important;width:100%;justify-content:flex-start}
.sidebar-theme .nav-icon{width:16px!important;height:16px!important;background:transparent!important;border:0!important;opacity:.8}
.sidebar-theme .nav-icon svg{width:15px;height:15px}
.sidebar-theme::after{content:"";margin-left:auto;width:28px;height:16px;border-radius:999px;background:rgba(255,255,255,.18);box-shadow:inset 0 0 0 1px rgba(255,255,255,.12);
  background-image:radial-gradient(circle at 8px 50%,#fff 5px,transparent 5.5px);transition:background-position .2s}
:root[data-theme="dark"] .sidebar-theme::after{background-color:var(--brand);background-image:radial-gradient(circle at 20px 50%,#fff 5px,transparent 5.5px)}
.sidebar-theme:hover{color:var(--sidebar-text,#fff)!important;background:rgba(255,255,255,.05)!important}

/* Picagem sugerida: ao passar o rato fica verde mais escuro (a variavel --brand-dark nao existia e o botao ficava transparente) */
.employee-action.primary:hover{background:color-mix(in srgb,var(--brand) 82%,#000)!important;border-color:color-mix(in srgb,var(--brand) 82%,#000)!important;color:#fff!important}

.collapsible-list-toggle{align-items:center;display:inline-flex;justify-content:center;min-height:38px;min-width:38px;padding:7px;width:38px}
.collapsible-list-toggle svg{height:18px;width:18px}
@media(max-width:780px){.panel:has(.collapsible-list-toggle)>.panel-header .panel-header-actions{display:flex;align-items:center;justify-content:space-between;width:100%}.collapsible-list-toggle{flex:0 0 42px;min-height:42px;width:42px}}

/* Area do colaborador > Avisos: conteudo, estado e acoes em zonas distintas. */
.employee-alerts-panel>.panel-header{align-items:center}
.employee-alerts-panel>.panel-header h2{margin:0}
.employee-alerts-panel>.panel-header .field-hint{margin:4px 0 0}
.employee-alerts-panel .announcement-list{gap:12px}
.employee-alerts-panel .announcement-card{border-radius:14px;padding:16px 18px;box-shadow:0 6px 18px rgba(10,57,52,.04)}
.employee-alerts-panel .announcement-card-head strong{font-size:15px;line-height:1.35}
.notification-card.requires-action{border:1px solid color-mix(in srgb,var(--warning) 45%,var(--line));background:color-mix(in srgb,var(--warning) 5%,var(--surface) 95%)}
.notification-card-detail{color:var(--muted)!important;line-height:1.55!important;margin:9px 0 14px!important;white-space:normal!important}
.notification-card-footer{align-items:center;border-top:1px solid var(--line);display:flex;gap:12px;justify-content:space-between;padding-top:12px}
.notification-card-state{align-items:center;display:flex;flex:0 0 auto}
.notification-card-actions{align-items:center;display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end;margin-left:auto}
.notification-card-actions button{min-height:38px}
.notification-card-actions .primary-action{box-shadow:0 7px 16px color-mix(in srgb,var(--brand) 22%,transparent)}
@media(max-width:780px){
  .employee-alerts-panel>.panel-header{align-items:flex-start}
  .employee-alerts-panel>.panel-header>.badge{margin-left:0!important}
  .employee-alerts-panel .announcement-card{padding:14px}
  .notification-card-footer{align-items:stretch;flex-direction:column}
  .notification-card-actions{display:grid;grid-template-columns:1fr;margin-left:0;width:100%}
  .notification-card-actions button{justify-content:center;width:100%}
}

/* === Layout mobile global (<=780px) ===
   Regras transversais para todos os modulos: nada pode ficar mais largo do que o ecra (o .workspace tem overflow-x:hidden,
   por isso o que transborda fica cortado). Causas corrigidas: grelha do .content com coluna "auto" que crescia para o
   min-content dos filhos, grelhas de metricas/calendario com larguras minimas fixas e o kanban com colunas lado a lado. */
@media (max-width:780px){
  .content{grid-template-columns:minmax(0,1fr)!important}
  .content>*,.employee-section,.employee-section>*,.grid>*,.panel,.panel>*,.panel-body,.panel-body>*{min-width:0;max-width:100%}
  .content{overflow-wrap:break-word}
  .content td,.content .detail-list dd,.content .detail-list span{overflow-wrap:anywhere}
  /* metricas: 2 colunas que encolhem (1 coluna em ecras muito estreitos) */
  .kpi-grid,.dashboard-kpi-grid,.record-grid,.grid.four-col,.grid.three-col{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:10px!important}
  .metric{min-width:0;padding:12px 14px}
  .metric span{font-size:12px}
  .metric strong{font-size:26px;line-height:1.15;overflow-wrap:anywhere}
  .metric small{font-size:12px}
  .grid.two-col,.grid.split,.split-grid{grid-template-columns:minmax(0,1fr)!important}
  /* cabecalhos de painel: titulo e pills/acoes passam para baixo quando nao cabem */
  .panel-header{flex-wrap:wrap;gap:8px 10px;min-width:0}
  .panel-header h2,.panel-header h3{min-width:0;font-size:17px;overflow-wrap:anywhere}
  .panel-header>*{max-width:100%}
  /* separadores: ocupam a largura toda; se nao couberem deslizam so dentro da propria barra */
  /* separadores: ocupam a largura toda e passam a 2.a linha quando nao cabem (sem scroll lateral).
     O .tab-button tinha width:100% (regra dos botoes de toque), o que punha cada separador com a largura da barra. */
  .tabs{flex-wrap:wrap;overflow:visible!important;max-width:100%;gap:6px}
  .tabs>.tab-button,.tabs>button,.tabs>a{width:auto!important;flex:1 1 auto;min-width:0;padding:8px 12px;white-space:normal;text-align:center;line-height:1.2}
  /* calendarios mensais: 7 colunas que cabem no ecra */
  .absence-calendar,.team-calendar{grid-template-columns:repeat(7,minmax(0,1fr))!important;overflow:visible!important;gap:3px!important;padding:8px!important}
  .absence-calendar>*{min-width:0}
  .absence-calendar .calendar-day{min-width:0;min-height:44px;padding:4px 3px!important;font-size:11px}
  .absence-calendar .calendar-day *{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .absence-calendar>strong{font-size:11px}
  /* kanban (Service Desk e Manutencao): colunas empilhadas; as recolhidas viram uma barra horizontal */
  .kanban{flex-direction:column!important;gap:10px}
  .kanban>.kanban-column,.kanban>.kanban-column.kanban-column-vazia{flex:0 0 auto!important;width:100%;min-height:0!important}
  .kanban-column-vazia>h3{writing-mode:horizontal-tb!important;transform:none!important;flex-direction:row!important;height:auto!important;padding:12px 14px!important}
  .kanban-column-vazia>h3 .kanban-count{writing-mode:horizontal-tb!important;margin:0!important}
  .kanban-toggle{width:100%}
  /* formularios: 16px evita o zoom automatico do iOS; alvos de toque >=44px */
  input:not([type=checkbox]):not([type=radio]),select,textarea{font-size:16px!important;max-width:100%}
  .primary-action,.secondary-action,.danger-action{min-height:44px}
  .form-grid,.form-row{grid-template-columns:minmax(0,1fr)!important}
  /* menus de acoes (tres pontos): nunca saem pelo lado direito */
  .row-menu-panel{max-width:calc(100vw - 32px)}
  /* tabelas em cartao: o valor pode passar para baixo do rotulo; badges e nomes longos quebram */
  .table-wrap table[data-rotulada] td{flex-wrap:wrap}
  .table-wrap table[data-rotulada] td>*{min-width:0;max-width:100%}
  .content .badge,.content .pill{max-width:100%;white-space:normal;overflow-wrap:anywhere}
  .content span,.content strong,.content small{overflow-wrap:break-word}
  /* imagens, graficos e media */
  .content img,.content svg,.content video,.content canvas,.content iframe{max-width:100%}
  .content pre,.content code{white-space:pre-wrap;overflow-wrap:anywhere}
}
@media (max-width:360px){
  .kpi-grid,.dashboard-kpi-grid,.record-grid,.grid.four-col,.grid.three-col{grid-template-columns:minmax(0,1fr)!important}
}
@media (max-width:780px){
  /* grelhas de caixas de verificacao (permissoes, tecnicos...): 1 coluna e texto que quebra */
  .permission-grid{grid-template-columns:minmax(0,1fr)!important}
  .check-row{min-width:0}
  .check-row>span{min-width:0;overflow-wrap:anywhere}
}
@media (max-width:780px){
  /* kanban empilhado: a coluna recolhida e so uma barra com o nome e a contagem (sem texto na vertical) */
  .kanban-column-vazia .kanban-toggle{writing-mode:horizontal-tb!important;flex-direction:row!important;justify-content:space-between!important;height:auto!important;min-height:44px!important;padding:12px 14px!important}
  .kanban-column-vazia>h3{padding:0!important}
  .kanban-column-vazia{min-height:0!important;height:auto!important}
}

/* QR de picagem no cabecalho da area de colaborador: conteudo centrado na caixa (que estica a altura do painel) */
.employee-hero-v2 .employee-live-hero-qr{justify-content:center;gap:10px;padding:14px 16px}

/* Cabecalho da area de colaborador mais compacto em ecra largo: registos de hoje ao lado do cronometro,
   cronometro e QR ligeiramente menores */
@media (min-width:1100px){
  .employee-hero-v2 .employee-live-hero-content{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:28px;align-items:center}
  .employee-hero-v2 .employee-live-hero-content>:not(.employee-live-hero-main){align-self:center;margin:0!important}
  .employee-hero-v2 .employee-live-hero-value{font-size:clamp(40px,3.4vw,50px)}
  .employee-hero-v2 .employee-hero-progress{margin-top:8px}
  .employee-hero-v2 .employee-live-hero-qr{min-width:118px;padding:10px 14px;gap:6px}
  .employee-hero-v2 .employee-live-hero-qr .employee-qr-code{min-height:88px;min-width:88px;padding:6px}
  .employee-hero-v2 .employee-live-hero-qr .employee-qr-code :is(img,canvas,svg){max-width:88px;max-height:88px}
}

/* Picagem mobile: preparação e confirmação usam o mesmo splash de estado. */
.modal.punch-feedback-modal .punch-feedback.preparing{
  gap:14px;
}
.modal.punch-feedback-modal .punch-feedback.preparing h2{
  margin:0;
}
.modal.punch-feedback-modal .punch-feedback.preparing p{
  max-width:340px;
  line-height:1.45;
}
.punch-preparing-loader{
  display:grid;
  height:88px;
  margin:0 0 6px;
  place-items:center;
  width:88px;
}
.punch-preparing-loader>*{
  grid-area:1/1;
}
.punch-preparing-spinner{
  border-color:rgba(255,255,255,.3);
  border-top-color:#fff;
  border-width:4px;
  height:88px;
  width:88px;
}
.punch-preparing-loader img{
  filter:drop-shadow(0 2px 5px rgba(0,0,0,.22));
  height:36px;
  opacity:.96;
  width:36px;
}
@media (max-width:780px){
  .modal.punch-preparing-modal .punch-feedback.preparing{
    background:linear-gradient(160deg,var(--success) 0%,color-mix(in srgb,var(--success) 55%,#0b1220) 100%);
  }
}

/* Cabecalho da area de colaborador (ecra largo), v2: coluna fixa com cronometro e progresso, divisoria,
   e registos de hoje alinhados ao topo a ocupar o resto (grelha de cartoes) */
@media (min-width:1100px){
  .employee-hero-v2 .employee-live-hero-content{grid-template-columns:minmax(320px,440px) minmax(0,1fr);gap:0;align-items:stretch}
  .employee-hero-v2 .employee-live-hero-content:not(:has(.employee-live-periods-block)){grid-template-columns:minmax(0,1fr)}
  .employee-hero-v2 .employee-live-hero-main{padding-right:32px;display:flex;flex-direction:column;justify-content:center;min-width:0}
  .employee-hero-v2 .employee-live-hero-content:not(:has(.employee-live-periods-block)) .employee-live-hero-main{max-width:440px;padding-right:0}
  .employee-hero-v2 .employee-hero-progress{max-width:none;width:100%}
  .employee-hero-v2 .employee-live-hero-content>.employee-live-periods-block{align-self:stretch!important;align-content:start;gap:12px;border-left:1px solid rgba(255,255,255,.12);padding:6px 0 6px 32px}
  .employee-hero-v2 .employee-live-periods{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:8px}
  .employee-hero-v2 .employee-live-period{width:auto;justify-content:flex-start}
}

/* Ligacao discreta para a politica de privacidade no fundo do menu lateral */
.sidebar-privacidade{appearance:none;background:none;border:0;color:var(--sidebar-text);opacity:.6;font:500 12px/1.2 var(--marca-fonte-texto,Inter,sans-serif);padding:10px 10px 2px;text-align:left;cursor:pointer;text-decoration:underline;text-underline-offset:3px;width:100%}
.sidebar-privacidade:hover,.sidebar-privacidade:focus-visible{opacity:1;outline:0}

/* Privacidade no menu lateral, v2: nota pequena e esbatida, sem sublinhado */
.sidebar-privacidade{display:inline-flex;align-items:center;gap:5px;width:auto;margin:8px auto 0;padding:4px 8px;border-radius:6px;opacity:.42;font-size:11px;font-weight:500;letter-spacing:.01em;text-decoration:none!important;transition:opacity .15s}
.sidebar-privacidade svg{width:12px;height:12px;flex:0 0 auto}
.sidebar-privacidade:hover,.sidebar-privacidade:focus-visible{opacity:.85;background:#ffffff0d}
.sidebar-footer{display:flex;flex-direction:column}

.analytics-absent-badges{display:inline-flex;gap:6px;align-items:center}.analytics-absent-dept{display:block;color:var(--muted);font-size:12px;font-weight:500}
.analytics-faltas-nota{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:0 0 10px;padding:10px 12px;border-radius:12px;background:color-mix(in srgb,var(--danger) 8%,transparent);color:var(--text);font-size:.9rem}.analytics-faltas-nota svg{width:16px;height:16px;color:var(--danger);flex:0 0 auto}.analytics-faltas-nota span{flex:1 1 220px}

/* Registos de hoje no cabecalho da area de colaborador: cartoes maiores, com a identificacao do periodo,
   que repartem entre si a largura disponivel */
.employee-live-period-info{display:flex;flex-direction:column;gap:2px;min-width:0}
.employee-live-period-label{font-size:10.5px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;opacity:.75}
@media (min-width:1100px){
  .employee-hero-v2 .employee-live-periods{grid-template-columns:repeat(auto-fit,minmax(210px,1fr))!important;gap:10px}
  .employee-hero-v2 .employee-live-period{display:flex!important;align-items:center;gap:12px!important;min-height:68px;padding:12px 16px!important;border-radius:14px;box-sizing:border-box;width:100%!important}
  .employee-hero-v2 .employee-live-period-icon{width:32px!important;height:32px!important;flex:0 0 auto}
  .employee-hero-v2 .employee-live-period-time{font-size:14px;font-weight:600}
  .employee-hero-v2 .employee-live-period em{margin-left:auto;font-style:normal;font-size:17px;font-weight:800;font-variant-numeric:tabular-nums}
}

/* Registos de hoje v2: cartao com cabecalho (periodo + duracao) e as duas marcacoes identificadas */
.employee-hero-v2 .employee-live-period.periodo-v2{display:flex!important;flex-direction:column!important;align-items:stretch!important;gap:8px!important;min-height:0;padding:12px 14px!important;border-radius:14px;box-sizing:border-box;width:100%!important}
.periodo-topo{display:flex;align-items:center;gap:8px;min-width:0}
.periodo-topo .employee-live-period-icon{width:26px!important;height:26px!important;flex:0 0 auto}
.periodo-topo .employee-live-period-label{flex:1 1 auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.periodo-topo em{margin-left:auto;font-style:normal;font-weight:800;font-size:16px;font-variant-numeric:tabular-nums;white-space:nowrap}
.periodo-marcas{display:grid;grid-template-columns:1fr auto 1fr;align-items:end;gap:8px}
.periodo-marcas>span{display:flex;flex-direction:column;min-width:0}
.periodo-marcas small{font-size:10.5px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;opacity:.7}
.periodo-marcas b{font-size:14px;font-weight:700;font-variant-numeric:tabular-nums;white-space:nowrap}
.periodo-marcas .periodo-seta{opacity:.5;padding-bottom:1px}
@media (min-width:1100px){
  .employee-hero-v2 .employee-live-periods{grid-template-columns:repeat(auto-fit,minmax(230px,1fr))!important}
}

/* Dashboard > Postos usados: um pill por tipo de posto (nomes ao passar o rato) */
.posto-pills{display:flex;flex-wrap:wrap;gap:6px;margin-top:2px}
.posto-pill{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border-radius:999px;font-size:12px;font-weight:600;line-height:1.5;white-space:nowrap;background:var(--surface-2,#f1f5f4);color:var(--text);border:1px solid var(--line)}
.posto-pill b{font-weight:800;font-variant-numeric:tabular-nums}
.posto-pill.posto-terminal{background:color-mix(in srgb,var(--brand) 10%,transparent);border-color:color-mix(in srgb,var(--brand) 25%,transparent);color:var(--brand)}
.posto-pill.posto-kiosk{background:color-mix(in srgb,var(--info,#246bfe) 10%,transparent);border-color:color-mix(in srgb,var(--info,#246bfe) 25%,transparent);color:var(--info,#246bfe)}
.posto-pill.posto-computador{background:color-mix(in srgb,#7c3aed 10%,transparent);border-color:color-mix(in srgb,#7c3aed 25%,transparent);color:#7c3aed}
.posto-pill.posto-movel{background:color-mix(in srgb,var(--warning,#c76b00) 10%,transparent);border-color:color-mix(in srgb,var(--warning,#c76b00) 25%,transparent);color:var(--warning,#c76b00)}
.metric .posto-pills{display:flex!important;flex-direction:row!important;flex-wrap:wrap;gap:5px;width:auto;margin:4px 0 0!important}
.metric .posto-pill{display:inline-flex!important;width:auto!important;flex:0 0 auto;margin:0!important;padding:2px 9px!important;font-size:11.5px!important;letter-spacing:0!important;text-transform:none!important}
.metric .posto-pills{flex-wrap:nowrap!important;gap:4px!important;overflow:hidden}
.metric .posto-pill{gap:4px;padding:1px 8px!important;font-size:12px!important;line-height:20px}
.metric .posto-pill svg{width:13px!important;height:13px!important;flex:0 0 auto;margin:0!important}
.metric .posto-pill .posto-nome{font-weight:600;margin:0!important;display:inline!important;font-size:inherit!important;color:inherit!important;text-transform:none!important;letter-spacing:0!important}
.metric .posto-pills.compacto{gap:3px!important}
.metric .posto-pills.compacto .posto-pill{padding:1px 5px!important;gap:3px}
.metric .posto-pills.compacto .posto-nome{display:none!important}
.metric .posto-pill .posto-curto{display:none!important}
.metric .posto-pills.curto{gap:4px!important}
.metric .posto-pills.curto .posto-pill{padding:1px 7px!important}
.metric .posto-pills.curto .posto-pill svg,.metric .posto-pills.curto .posto-nome{display:none!important}
.metric .posto-pills.curto .posto-curto{display:inline!important;font-weight:600;margin:0!important;font-size:inherit!important;color:inherit!important;text-transform:none!important;letter-spacing:0!important}
.metric .posto-pills.curto{gap:3px!important}
.metric .posto-pills.curto .posto-pill{padding:1px 5px!important;gap:3px!important}

/* Demonstracao: codigo de acesso */
.demo-codigo-input{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:20px!important;letter-spacing:.15em;text-align:center;text-transform:uppercase}
.demo-codigo-caixa{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:14px 0;padding:16px 18px;border-radius:14px;background:var(--brand-soft,#dff4ec);border:1px dashed color-mix(in srgb,var(--brand) 45%,transparent)}
.demo-codigo-caixa code{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:28px;font-weight:800;letter-spacing:.14em;color:var(--brand);background:none;padding:0}
.demo-codigo-form{grid-template-columns:1fr!important}
.demo-codigo-form label{display:grid;gap:6px;min-width:0}
.demo-codigo-form input{width:100%;box-sizing:border-box}
.metric .posto-pills.curto{flex-wrap:wrap!important;overflow:visible!important;row-gap:4px!important}
/* cartoes do resumo por modulo: conteudo alinhado ao topo (um cartao mais alto nao desalinha os outros) */
.dashboard-module-kpis>.metric{display:flex!important;flex-direction:column;justify-content:flex-start!important;align-items:stretch}

/* Assiduidade: cada picagem com posto e evidencia compactos (sem coluna Terminais) */
.attendance-time-cell{display:flex;flex-direction:column;align-items:flex-start;gap:4px;min-width:0}
.att-posto{display:inline-flex;align-items:center;gap:5px;max-width:190px;font-size:12px;font-weight:600;color:var(--muted);white-space:nowrap}
.att-posto>span{overflow:hidden;text-overflow:ellipsis}
.att-posto svg{width:13px;height:13px;flex:0 0 auto}
.att-posto-computador{color:#7c3aed}.att-posto-movel{color:var(--warning,#c76b00)}
.att-evid{display:flex;flex-direction:column;align-items:flex-start;gap:3px;min-width:0;max-width:200px}
.att-evid-btn{appearance:none;display:inline-flex;align-items:center;gap:5px;border:1px solid color-mix(in srgb,var(--brand) 30%,transparent);background:color-mix(in srgb,var(--brand) 8%,transparent);color:var(--brand);border-radius:999px;padding:2px 9px;font:inherit;font-size:11.5px;font-weight:700;cursor:pointer;white-space:nowrap}
.att-evid-btn:hover{background:color-mix(in srgb,var(--brand) 16%,transparent)}
.att-evid-btn svg{width:13px;height:13px}
.att-local{display:inline-flex;align-items:center;gap:4px;max-width:200px;font-size:11.5px;color:var(--success,#17844a);white-space:nowrap}
.att-local>span{overflow:hidden;text-overflow:ellipsis}
.att-local svg{width:12px;height:12px;flex:0 0 auto}
.att-local.fora{color:var(--danger)}
.att-colab{display:flex;flex-direction:column;gap:2px;min-width:140px}
.att-colab strong{font-weight:600;line-height:1.3}.att-colab small{color:var(--muted)}

/* Assiduidade: icones da evidencia e cartao flutuante (foto, posto, local) */
.att-evid-icones{display:inline-flex;gap:6px;align-items:center}
.att-icone{appearance:none;display:inline-grid;place-items:center;width:28px;height:28px;border-radius:9px;border:1px solid color-mix(in srgb,var(--brand) 28%,transparent);background:color-mix(in srgb,var(--brand) 8%,transparent);color:var(--brand);cursor:pointer;padding:0}
.att-icone:hover,.att-icone:focus-visible{background:color-mix(in srgb,var(--brand) 18%,transparent);outline:none}
.att-icone svg{width:15px;height:15px}
.att-icone-local{color:var(--success,#17844a);border-color:color-mix(in srgb,var(--success,#17844a) 30%,transparent);background:color-mix(in srgb,var(--success,#17844a) 8%,transparent)}
.att-icone-local.fora{color:var(--danger);border-color:color-mix(in srgb,var(--danger) 35%,transparent);background:color-mix(in srgb,var(--danger) 8%,transparent)}
.punch-pop{position:fixed;z-index:3000;width:300px;max-width:calc(100vw - 16px);background:var(--surface);color:var(--text);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow-strong,0 24px 60px rgba(10,57,52,.18));overflow:hidden;pointer-events:none;animation:punchPop .12s ease-out}
@keyframes punchPop{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
.punch-pop-foto{height:150px;background:var(--surface-2,#f1f5f4);display:grid;place-items:center;color:var(--muted);font-size:12px}
.punch-pop-foto img{width:100%;height:100%;object-fit:cover}
.punch-pop-dados{padding:10px 12px 4px;display:grid;gap:6px}
.punch-pop-titulo{display:flex;justify-content:space-between;align-items:baseline;gap:8px;padding-bottom:4px;border-bottom:1px solid var(--line)}
.punch-pop-titulo strong{font-size:14px}.punch-pop-titulo span{font-size:12px;color:var(--muted)}
.punch-pop-dados>div:not(.punch-pop-titulo){display:grid;grid-template-columns:86px 1fr;gap:8px;font-size:12.5px}
.punch-pop-dados>div>span{color:var(--muted)}
.punch-pop-dados strong{font-weight:600;overflow-wrap:anywhere}
.punch-pop-dados em{font-style:normal}.punch-pop-dados em.dentro{color:var(--success,#17844a)}.punch-pop-dados em.fora{color:var(--danger)}
.punch-pop-dados small{color:var(--muted);font-weight:500}
.punch-pop-nota{margin:0;padding:6px 12px 10px;font-size:11px;color:var(--muted)}
.punch-pop-foto{overflow:hidden;position:relative}
.punch-pop-foto img{display:block;width:100%!important;height:150px!important;max-height:150px!important;object-fit:cover}
/* um so icone de evidencia; ponto de cor = local (verde dentro da zona, vermelho fora) */
.att-icone{position:relative}
.att-icone.com-local::after{content:;position:absolute;right:-3px;top:-3px;width:9px;height:9px;border-radius:50%;background:var(--success,#17844a);border:2px solid var(--surface)}
.att-icone.com-local.fora::after{background:var(--danger)}
.punch-pop{pointer-events:auto}
.punch-pop-mapa{display:inline-flex;align-items:center;gap:4px;color:var(--brand);text-decoration:underline;text-underline-offset:2px}
.punch-pop-mapa svg{width:13px;height:13px}
.att-posto-local{font-style:normal;font-weight:500;color:var(--muted)}
.att-posto{max-width:220px}
/* cartao da evidencia: linhas com icone, sem rotulos nem rodape */
.punch-pop-dados{padding:12px 14px 12px!important;gap:8px!important}
.punch-pop-titulo{padding-bottom:8px!important}
.punch-pop-linha{display:flex!important;align-items:flex-start;gap:8px;font-size:13px;font-weight:600;line-height:1.35;grid-template-columns:none!important}
.punch-pop-linha svg{width:15px;height:15px;flex:0 0 auto;margin-top:1px;color:var(--muted)}
.punch-pop-linha.dentro{color:var(--success,#17844a)}.punch-pop-linha.dentro svg{color:inherit}
.punch-pop-linha.fora{color:var(--danger)}.punch-pop-linha.fora svg{color:inherit}
.punch-pop-coord{display:flex!important;align-items:center;justify-content:space-between;gap:8px;grid-template-columns:none!important;padding-top:8px;border-top:1px solid var(--line);font-size:11.5px;color:var(--muted);font-variant-numeric:tabular-nums}
.punch-pop-coord .punch-pop-mapa{flex:0 0 auto;padding:3px 10px;border-radius:999px;background:color-mix(in srgb,var(--brand) 10%,transparent);color:var(--brand);font-weight:700;text-decoration:none}
.punch-pop-coord .punch-pop-mapa:hover{background:color-mix(in srgb,var(--brand) 18%,transparent)}
/* icone de evidencia junto ao tipo (ID/APR/SEQ) */
.attendance-time{display:inline-flex;align-items:center;gap:6px;flex-wrap:nowrap}
.attendance-time .att-evid-icones{display:inline-flex}
.attendance-time .att-icone{width:22px;height:22px;border-radius:7px}
.attendance-time .att-icone svg{width:14px;height:14px}
.attendance-time .att-icone.com-local::after{width:8px;height:8px;right:-3px;top:-3px}

/* Administracao > Demonstracao */
.demo-painel .panel-body{display:grid;gap:16px}
.demo-estado-grelha{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,340px),1fr));gap:14px}
.demo-estado-cartao{display:flex;align-items:center;gap:14px;padding:16px;border-radius:var(--radius-2xl,14px);border:1px solid var(--line);background:var(--surface)}
.demo-estado-cartao.ativo{border-color:color-mix(in srgb,var(--success,#17844a) 35%,transparent);background:color-mix(in srgb,var(--success,#17844a) 6%,var(--surface))}
.demo-estado-icone{flex:0 0 auto;width:42px;height:42px;border-radius:12px;display:grid;place-items:center;background:var(--brand-soft,#dff4ec);color:var(--brand)}
.demo-estado-icone svg{width:20px;height:20px}
.demo-estado-texto{flex:1;min-width:0;display:grid;gap:2px}
.demo-estado-texto small{font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.demo-estado-texto strong{font-size:16px}
.demo-estado-texto span{font-size:12.5px;color:var(--muted);line-height:1.4}
.demo-estado-cartao>button{flex:0 0 auto;white-space:nowrap}
.demo-dados{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px}
.demo-dado{display:flex;align-items:center;gap:10px;padding:12px 14px;border-radius:12px;background:var(--surface-2,#f1f5f4)}
.demo-dado-icone{width:32px;height:32px;border-radius:9px;display:grid;place-items:center;background:var(--surface);color:var(--brand);flex:0 0 auto}
.demo-dado-icone svg{width:16px;height:16px}
.demo-dado strong{display:block;font-size:18px;font-weight:800;font-variant-numeric:tabular-nums;line-height:1.1}
.demo-dado small{color:var(--muted);font-size:12px}
.demo-como{border:1px solid var(--line);border-radius:12px;padding:0 14px}
.demo-como summary{cursor:pointer;padding:11px 0;font-weight:700;font-size:13.5px;color:var(--text)}
.demo-como ul{margin:0 0 12px;padding-left:18px;display:grid;gap:6px;font-size:13px;color:var(--muted);line-height:1.5}
.demo-novo-codigo{display:grid;grid-template-columns:minmax(220px,2fr) minmax(150px,1fr) minmax(150px,1fr) auto;gap:12px;align-items:end;padding:16px;border-radius:14px;background:var(--surface-2,#f1f5f4)}
.demo-novo-codigo .field{display:grid;gap:6px;margin:0;min-width:0}
.demo-novo-codigo .field>span{font-size:12px;font-weight:700;color:var(--muted)}
.demo-novo-codigo input,.demo-novo-codigo select{width:100%;box-sizing:border-box}
.demo-novo-codigo .demo-validade-data[hidden]{display:none}
.demo-gerar{display:inline-flex;align-items:center;gap:8px;white-space:nowrap}
.demo-gerar svg{width:16px;height:16px}
@media (max-width:900px){.demo-novo-codigo{grid-template-columns:1fr 1fr}.demo-campo-nota,.demo-gerar{grid-column:1/-1}}
.demo-vazio{display:grid;justify-items:center;gap:4px;padding:28px 16px 32px;text-align:center}
.demo-vazio>span{width:44px;height:44px;border-radius:50%;display:grid;place-items:center;background:var(--brand-soft,#dff4ec);color:var(--brand);margin-bottom:6px}
.demo-vazio>span svg{width:20px;height:20px}
.demo-vazio small{color:var(--muted)}
.demo-novo-codigo input,.demo-novo-codigo select{background-color:var(--surface)!important;border:1px solid var(--line)!important;border-radius:10px;min-height:42px}
.demo-como summary{list-style:none}
.demo-como summary::-webkit-details-marker{display:none}
.demo-como summary::marker{content:none}

/* Hero do colaborador: o QR ocupa uma coluna reservada e nunca invade os registos. */
@media (min-width:1100px){
  .employee-hero-v2 .employee-live-hero-body{
    grid-template-columns:minmax(0,1fr);
    align-items:stretch;
  }
  .employee-hero-v2 .employee-live-hero-content{
    grid-template-columns:minmax(300px,440px) minmax(0,1fr);
    min-width:0;
  }
  .employee-hero-v2 .employee-live-hero-content>.employee-live-periods-block{
    min-width:0;
  }
  .employee-hero-v2 .employee-live-periods{
    grid-template-columns:repeat(auto-fit,minmax(190px,1fr))!important;
  }
  .employee-hero-v2 .employee-live-hero-qr{
    display:none!important;
  }
  .employee-hero-v2 .employee-hero-qr-mini{
    display:inline-flex;
    flex-direction:row;
    align-items:center;
    justify-content:center;
    gap:7px;
    flex:0 0 auto;
    min-width:74px;
    height:38px;
    padding:0 12px;
    border-radius:999px;
    border:1px solid rgba(255,255,255,.22);
    background:rgba(255,255,255,.1);
    color:#fff;
    font:inherit;
    font-size:11px;
    font-weight:800;
    letter-spacing:.05em;
    cursor:pointer;
  }
  .employee-hero-v2 .employee-hero-qr-mini svg{
    width:17px;
    height:17px;
  }
.employee-hero-v2 .employee-hero-qr-mini span{
    color:#fff;
    font-size:11px;
    line-height:1;
  }
}

/* Modo escuro neutro: cinza-carvão com o verde reservado à identidade e às ações. */
[data-theme=dark]{
  --bg:#202020;
  --surface:#272727;
  --surface-2:#303030;
  --text:#f5f5f5;
  --muted:#b8b8b8;
  --line:#424242;
  --brand:#00a86b;
  --brand-2:#f5f5f5;
  --brand-soft:#17372d;
  --sidebar-bg:#181818;
  --sidebar-panel:rgba(255,255,255,.07);
  --sidebar-text:#f2f2f2;
  --sidebar-muted:#b2b2b2;
  --sidebar-line:rgba(255,255,255,.12);
  --shadow:0 12px 34px rgba(0,0,0,.34);
}
[data-theme=dark] body{
  background:linear-gradient(180deg,rgba(0,168,107,.025),transparent 240px),var(--bg);
}
[data-theme=dark] .sidebar{
  background:linear-gradient(180deg,rgba(0,168,107,.07),transparent 260px),var(--sidebar-bg);
}
/* Assistente: as acoes em lote acompanham a selecao sem obrigar a voltar ao topo da lista. */
.desktop-app-access-panel.has-module-selection{padding-bottom:108px}
.desktop-app-access-bulk-bar{position:fixed;z-index:48;left:296px;right:28px;bottom:max(18px,env(safe-area-inset-bottom,0px));transform:none;width:auto;margin:0!important;padding:14px 20px!important;border:1px solid color-mix(in srgb,var(--brand) 25%,var(--line))!important;border-radius:14px!important;background:var(--surface)!important;box-shadow:0 8px 24px rgba(15,23,42,.12);flex-wrap:nowrap!important;gap:20px!important}
#appShell.sidebar-collapsed .desktop-app-access-bulk-bar{left:104px}
.desktop-access-selection-summary{display:flex;flex-direction:column;align-items:flex-start;margin-right:auto;min-width:180px}
.desktop-access-eyebrow{color:var(--muted);font-size:.72rem;font-weight:500;letter-spacing:.08em;line-height:1.2}
.desktop-access-selection-line{display:flex;align-items:center;gap:10px;min-height:38px}
.desktop-access-selection-summary strong{display:block;font-variant-numeric:tabular-nums;line-height:1.25;white-space:nowrap}
.desktop-access-selection-summary strong b{font:inherit}
.desktop-access-clear{min-height:32px!important;width:auto!important;padding:5px 12px!important;border-radius:9px!important;font-size:.85rem!important}
.desktop-access-selection-actions{display:flex;align-items:center;gap:10px}
.desktop-access-selection-actions button{width:auto;white-space:nowrap}
.desktop-access-selection-actions svg{width:19px;height:19px}
@media(max-width:780px){.desktop-app-access-bulk-bar,#appShell.sidebar-collapsed .desktop-app-access-bulk-bar{align-items:stretch;left:10px;right:10px;display:grid!important;grid-template-columns:1fr;width:auto;gap:12px!important;padding:14px!important}.desktop-access-selection-summary{min-width:0}.desktop-access-selection-line{justify-content:space-between;width:100%}.desktop-access-selection-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.desktop-access-selection-actions button{width:100%}}
.obr-paginacao{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 16px;border-bottom:1px solid var(--line)}
.obr-paginacao-resumo{display:flex;align-items:baseline;gap:4px;color:var(--muted);white-space:nowrap}.obr-paginacao-resumo small{margin-left:8px;color:var(--muted)}
.obr-paginacao-controlos,.obr-paginacao-numeros{display:flex;align-items:center;gap:6px}.obr-paginacao-controlos{margin-left:auto}.obr-paginacao-controlos>button{width:auto;min-width:0;white-space:nowrap}.obr-paginacao-numeros button{width:auto;min-width:38px;padding-inline:10px}.obr-paginacao-numeros button.is-active{color:#fff;background:var(--brand,#087f5b);border-color:var(--brand,#087f5b)}.obr-paginacao-elipse{display:grid;place-items:center;min-width:18px;color:var(--muted);font-weight:700}
@media(max-width:700px){.obr-paginacao{align-items:stretch;flex-direction:column;gap:10px;padding:12px}.obr-paginacao-resumo{justify-content:space-between;width:100%;font-size:var(--text-sm)}.obr-paginacao-resumo small{margin-left:auto}.obr-paginacao-controlos{justify-content:space-between;margin:0;width:100%}.obr-paginacao-controlos>button{flex:0 0 auto;width:auto}.obr-paginacao-numeros{margin:auto}.obr-paginacao-numeros button{min-width:34px;padding-inline:8px}}
@media(max-width:430px){.obr-paginacao-numeros{display:none}.obr-paginacao-controlos>button{flex:1 1 0}.obr-paginacao-seguinte{justify-content:flex-end}.obr-paginacao-anterior{justify-content:flex-start}}

/* A barra de ações em lote só aparece quando existem colaboradores selecionados. */


/* Seletor de área: o rótulo Administração tem espaço próprio e não impõe largura mínima. */
.nav-mode-toggle{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.5fr);gap:4px;padding:4px;box-sizing:border-box;max-width:100%;background:var(--sidebar-panel);border:1px solid var(--sidebar-line);border-radius:var(--radius-md)}
.nav-mode-button{display:flex;align-items:center;justify-content:center;gap:6px;min-width:0;min-height:44px;padding:7px 6px;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--sidebar-text);font:inherit;font-size:var(--text-xs,12px);text-align:center;cursor:pointer;transition:background .12s ease}
.nav-mode-button svg{width:16px;height:16px;flex:0 0 16px}
.nav-mode-button span{min-width:0;overflow-wrap:anywhere;line-height:1.25}
.nav-mode-button.active{background:#ffffff1a;color:#fff;font-weight:700}
@media(min-width:781px){#appShell.sidebar-collapsed .nav-mode-toggle{grid-template-columns:repeat(2,minmax(0,1fr))}#appShell.sidebar-collapsed .nav-mode-button span{display:none}}

/* Notificações: altura pelo conteúdo, ações acessíveis e leitura sem colunas apertadas. */
.modal.notifications-modal{display:flex;flex-direction:column;align-self:flex-start;width:100%;max-width:640px;height:auto;max-height:calc(100dvh - 36px - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px));overflow:hidden}
.notifications-modal>header{flex:0 0 auto}
.notifications-modal #modalBody{min-height:0;padding:0;overflow:auto;overscroll-behavior:contain}
.notifications-modal .notifications-list{padding:16px;gap:0}
.notifications-modal [data-notification-feedback]:empty{display:none}
.notifications-modal [data-notification-feedback]:not(:empty){margin:0 0 12px;color:var(--danger-text,var(--danger))}
.notifications-modal .notifications-actions{margin:0 0 12px}
.notifications-modal .timeline-item{display:grid;grid-template-columns:minmax(0,1fr);gap:12px;align-items:start;padding:14px 0}
.notifications-modal .timeline-item-body{min-width:0;overflow-wrap:anywhere}
.notifications-modal .timeline-item-body strong{font-size:1rem;line-height:1.4}
.notifications-modal .timeline-item-body span{margin-top:6px;font-size:.9rem;line-height:1.5}
.notifications-modal .notification-item-actions{display:flex;flex-wrap:wrap;gap:8px}
.notifications-modal .notification-item-actions button{min-height:44px;padding:10px 14px;touch-action:manipulation;width:auto}
.notifications-modal .notifications-push{margin-top:12px;padding-top:16px}
@media(max-width:640px){
 .modal.notifications-modal{align-self:flex-start;height:auto;min-height:0;max-height:calc(100dvh - 24px - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px))}
 .notifications-modal .notification-item-actions{display:grid;grid-template-columns:minmax(0,1fr)}
 .notifications-modal .notification-item-actions button,.notifications-modal .notifications-actions button{width:100%;min-height:44px}
}

/* Revisão :is([data-route="attendance"],[data-route="analytics"],[data-route="hr"],[data-route="announcements"],[data-route="hr-requests"],[data-route="orgchart"],[data-route="schedules"],[data-route="absences"],[data-route="vacations"],[data-route="day-offs"],[data-route="leaves"],[data-route="time-bank"],[data-route="reports"],[data-route="rh-reports"],[data-route="attendance-reports"],[data-route="absence-reports"],[data-route="payroll-export"],[data-route="kiosk"],[data-route="punch-forms"],[data-route="hr-settings"]): regras limitadas às páginas analisadas nas capturas do utilizador. */
@media(min-width:781px){
 :is([data-route="attendance"],[data-route="analytics"],[data-route="hr"],[data-route="announcements"],[data-route="hr-requests"],[data-route="orgchart"],[data-route="schedules"],[data-route="absences"],[data-route="vacations"],[data-route="day-offs"],[data-route="leaves"],[data-route="time-bank"],[data-route="reports"],[data-route="rh-reports"],[data-route="attendance-reports"],[data-route="absence-reports"],[data-route="payroll-export"],[data-route="kiosk"],[data-route="punch-forms"],[data-route="hr-settings"]) .content{gap:20px}
 :is([data-route="attendance"],[data-route="analytics"],[data-route="hr"],[data-route="announcements"],[data-route="hr-requests"],[data-route="orgchart"],[data-route="schedules"],[data-route="absences"],[data-route="vacations"],[data-route="day-offs"],[data-route="leaves"],[data-route="time-bank"],[data-route="reports"],[data-route="rh-reports"],[data-route="attendance-reports"],[data-route="absence-reports"],[data-route="payroll-export"],[data-route="kiosk"],[data-route="punch-forms"],[data-route="hr-settings"]) :is(.metric,.analytics-card){min-width:0;min-height:112px;padding:16px 18px;box-shadow:0 3px 12px rgba(0,0,0,.035)}
 :is([data-route="attendance"],[data-route="analytics"],[data-route="hr"],[data-route="announcements"],[data-route="hr-requests"],[data-route="orgchart"],[data-route="schedules"],[data-route="absences"],[data-route="vacations"],[data-route="day-offs"],[data-route="leaves"],[data-route="time-bank"],[data-route="reports"],[data-route="rh-reports"],[data-route="attendance-reports"],[data-route="absence-reports"],[data-route="payroll-export"],[data-route="kiosk"],[data-route="punch-forms"],[data-route="hr-settings"]) :is(.metric,.analytics-card)>span:first-child{min-height:2.6em;line-height:1.3;margin:0 0 8px;font-size:14px}
 :is([data-route="attendance"],[data-route="analytics"],[data-route="hr"],[data-route="announcements"],[data-route="hr-requests"],[data-route="orgchart"],[data-route="schedules"],[data-route="absences"],[data-route="vacations"],[data-route="day-offs"],[data-route="leaves"],[data-route="time-bank"],[data-route="reports"],[data-route="rh-reports"],[data-route="attendance-reports"],[data-route="absence-reports"],[data-route="payroll-export"],[data-route="kiosk"],[data-route="punch-forms"],[data-route="hr-settings"]) :is(.metric,.analytics-card)>strong{font-size:28px;line-height:1.15;margin:0;font-variant-numeric:tabular-nums}
 :is([data-route="attendance"],[data-route="analytics"],[data-route="hr"],[data-route="announcements"],[data-route="hr-requests"],[data-route="orgchart"],[data-route="schedules"],[data-route="absences"],[data-route="vacations"],[data-route="day-offs"],[data-route="leaves"],[data-route="time-bank"],[data-route="reports"],[data-route="rh-reports"],[data-route="attendance-reports"],[data-route="absence-reports"],[data-route="payroll-export"],[data-route="kiosk"],[data-route="punch-forms"],[data-route="hr-settings"]) :is(.metric,.analytics-card)>small{line-height:1.4;margin-top:8px;font-size:12px}
 :is([data-route="attendance"],[data-route="analytics"],[data-route="hr"],[data-route="announcements"],[data-route="hr-requests"],[data-route="orgchart"],[data-route="schedules"],[data-route="absences"],[data-route="vacations"],[data-route="day-offs"],[data-route="leaves"],[data-route="time-bank"],[data-route="reports"],[data-route="rh-reports"],[data-route="attendance-reports"],[data-route="absence-reports"],[data-route="payroll-export"],[data-route="kiosk"],[data-route="punch-forms"],[data-route="hr-settings"]) .attendance-period-filter{display:flex;flex-wrap:wrap;justify-content:flex-start;gap:12px;align-items:end;padding:12px 0 16px;margin:0}
 :is([data-route="attendance"],[data-route="analytics"],[data-route="hr"],[data-route="announcements"],[data-route="hr-requests"],[data-route="orgchart"],[data-route="schedules"],[data-route="absences"],[data-route="vacations"],[data-route="day-offs"],[data-route="leaves"],[data-route="time-bank"],[data-route="reports"],[data-route="rh-reports"],[data-route="attendance-reports"],[data-route="absence-reports"],[data-route="payroll-export"],[data-route="kiosk"],[data-route="punch-forms"],[data-route="hr-settings"]) .attendance-period-filter>label{flex:0 1 220px;width:220px;min-width:180px}
 :is([data-route="attendance"],[data-route="analytics"],[data-route="hr"],[data-route="announcements"],[data-route="hr-requests"],[data-route="orgchart"],[data-route="schedules"],[data-route="absences"],[data-route="vacations"],[data-route="day-offs"],[data-route="leaves"],[data-route="time-bank"],[data-route="reports"],[data-route="rh-reports"],[data-route="attendance-reports"],[data-route="absence-reports"],[data-route="payroll-export"],[data-route="kiosk"],[data-route="punch-forms"],[data-route="hr-settings"]) .attendance-period-filter>button{flex:0 0 auto;min-height:42px}
 [data-route="hr"] .table-toolbar{justify-content:flex-start;gap:12px;padding:0;margin:0 0 12px}
 [data-route="hr"] .table-toolbar>.field{width:220px;max-width:100%}
 :is([data-route="attendance"],[data-route="analytics"],[data-route="hr"],[data-route="announcements"],[data-route="hr-requests"],[data-route="orgchart"],[data-route="schedules"],[data-route="absences"],[data-route="vacations"],[data-route="day-offs"],[data-route="leaves"],[data-route="time-bank"],[data-route="reports"],[data-route="rh-reports"],[data-route="attendance-reports"],[data-route="absence-reports"],[data-route="payroll-export"],[data-route="kiosk"],[data-route="punch-forms"],[data-route="hr-settings"]) .panel:has(>.empty-state){align-self:start}
 :is([data-route="attendance"],[data-route="analytics"],[data-route="hr"],[data-route="announcements"],[data-route="hr-requests"],[data-route="orgchart"],[data-route="schedules"],[data-route="absences"],[data-route="vacations"],[data-route="day-offs"],[data-route="leaves"],[data-route="time-bank"],[data-route="reports"],[data-route="rh-reports"],[data-route="attendance-reports"],[data-route="absence-reports"],[data-route="payroll-export"],[data-route="kiosk"],[data-route="punch-forms"],[data-route="hr-settings"]) .panel>.empty-state,:is([data-route="attendance"],[data-route="analytics"],[data-route="hr"],[data-route="announcements"],[data-route="hr-requests"],[data-route="orgchart"],[data-route="schedules"],[data-route="absences"],[data-route="vacations"],[data-route="day-offs"],[data-route="leaves"],[data-route="time-bank"],[data-route="reports"],[data-route="rh-reports"],[data-route="attendance-reports"],[data-route="absence-reports"],[data-route="payroll-export"],[data-route="kiosk"],[data-route="punch-forms"],[data-route="hr-settings"]) .panel-body>.empty-state{min-height:0;padding:24px 16px;line-height:1.5}
 :is([data-route="attendance"],[data-route="analytics"],[data-route="hr"],[data-route="announcements"],[data-route="hr-requests"],[data-route="orgchart"],[data-route="schedules"],[data-route="absences"],[data-route="vacations"],[data-route="day-offs"],[data-route="leaves"],[data-route="time-bank"],[data-route="reports"],[data-route="rh-reports"],[data-route="attendance-reports"],[data-route="absence-reports"],[data-route="payroll-export"],[data-route="kiosk"],[data-route="punch-forms"],[data-route="hr-settings"]) .panel-body.chart-list:has(>.empty-state){padding:0 16px 12px;gap:0;min-height:0}
 [data-route="orgchart"] .orgchart-executive-grid:has(>.empty-state){display:block;min-height:0}
 [data-route="orgchart"] .orgchart-executive-band:has(.orgchart-executive-grid>.empty-state){padding:14px 16px;min-height:0}
 [data-route="orgchart"] .orgchart-executive-grid>.empty-state{padding:16px 0;min-height:0;text-align:left}
 [data-route="orgchart"] .orgchart-workspace:not(:has(.orgchart-department-list button)){min-height:0;align-items:start}
 [data-route="hr-requests"] .reports-tabs{margin-top:0;margin-bottom:12px;gap:6px;flex-wrap:wrap}
}

/* Detalhes: rótulos e descrições legíveis também com texto longo. */
:is([data-route="time-bank"],[data-route="hr-settings"],[data-route="reports"],[data-route="rh-reports"]) .detail-row{display:grid;grid-template-columns:minmax(130px,22%) minmax(0,1fr);gap:8px 24px;align-items:start}
:is([data-route="time-bank"],[data-route="hr-settings"],[data-route="reports"],[data-route="rh-reports"]) .detail-row>strong{min-width:0;text-align:left;overflow-wrap:anywhere;line-height:1.5;font-weight:500}
:is([data-route="time-bank"],[data-route="hr-settings"],[data-route="reports"],[data-route="rh-reports"]) .detail-row>span{min-width:0;line-height:1.5}
@media(min-width:781px){
 [data-route="time-bank"] .time-bank-filter{display:flex;flex-wrap:wrap;gap:12px;align-items:end;justify-content:flex-start}
 [data-route="time-bank"] .time-bank-filter>label{flex:0 1 220px;min-width:180px}
 [data-route="time-bank"] .time-bank-filter>label:has(select){flex-basis:300px}
 [data-route="time-bank"] .time-bank-filter>button{flex:0 0 auto}
 [data-route="punch-forms"] .panel-body>p{max-width:75ch;line-height:1.6}
}
@media(max-width:600px){
 :is([data-route="time-bank"],[data-route="hr-settings"],[data-route="reports"],[data-route="rh-reports"]) .detail-row{grid-template-columns:minmax(0,1fr);gap:4px}
}

/* O select nativo oculto não herda a largura mobile do controlo visível. */
:root body select.sc-sel{min-width:0!important;max-width:1px!important;clip-path:inset(50%)}

/* Revisão visual: quadros de IT/Manutenção, tabelas de Frota e relatórios. */
:is([data-route="it-service"],[data-route="facilities-requests"]) .kanban{overflow-x:auto!important;overflow-y:hidden!important;overscroll-behavior-x:contain;scrollbar-width:auto;padding-bottom:16px;scroll-padding-inline:20px}
:is([data-route="it-service"],[data-route="facilities-requests"]) .kanban>.kanban-column:not(.kanban-column-vazia){flex:1 0 280px;min-width:280px;overflow:hidden}
:is([data-route="it-service"],[data-route="facilities-requests"]) .kanban-cards{grid-template-columns:minmax(0,1fr);min-width:0}
:is([data-route="it-service"],[data-route="facilities-requests"]) .kanban .ticket-card{min-width:0;width:100%;box-sizing:border-box}
:is([data-route="it-service"],[data-route="facilities-requests"]) .kanban:focus-visible{outline:2px solid var(--brand);outline-offset:2px}
@media(max-width:780px){
 :is([data-route="it-service"],[data-route="facilities-requests"]) .kanban>.kanban-column:not(.kanban-column-vazia){min-width:0;width:100%}
}
@media(min-width:781px){
 :is([data-route^="it-"],[data-route^="facilities-"]) .metric{min-width:0;padding:16px 18px;box-shadow:0 3px 12px rgba(0,0,0,.035)}
 :is([data-route^="it-"],[data-route^="facilities-"]) .metric>span:first-child{display:block;min-height:2.6em;line-height:1.3;margin-bottom:8px;font-size:14px}
 :is([data-route^="it-"],[data-route^="facilities-"]) .metric>strong{font-size:28px;line-height:1.15;font-variant-numeric:tabular-nums}
 :is([data-route^="it-"],[data-route^="facilities-"]) .metric>small{display:block;margin-top:8px;line-height:1.4}
 :is([data-route="it-reports"],[data-route="facilities-reports"],[data-route="frota"],[data-route="docs"]) table thead th{background:var(--surface-2);color:var(--text);padding:12px;line-height:1.4;font-weight:600}
 :is([data-route="it-reports"],[data-route="facilities-reports"],[data-route="frota"],[data-route="docs"]) table tbody td{padding:12px;line-height:1.5;vertical-align:top}
 :is([data-route="it-reports"],[data-route="facilities-reports"],[data-route="frota"],[data-route="docs"]) table tbody tr:hover{background:color-mix(in srgb,var(--surface-2) 65%,var(--surface))}
 [data-route="frota"] table td>small{display:block;margin-top:4px;color:var(--muted);line-height:1.4}
}

/* Padrão de leitura das tabelas nos módulos revistos, preservando os cartões mobile. */
@media(min-width:781px){
 :is([data-route^="obras"],[data-route^="assembleias"],[data-route^="frota-"],[data-route^="rec-"],[data-route^="propostas"],[data-route="qr-cards"],[data-route="employee-qr"],[data-route="it-access"],[data-route="it-vpn"],[data-route="it-software"]) table thead th{background:var(--surface-2);color:var(--text);padding:12px;line-height:1.4;font-weight:600}
 :is([data-route^="obras"],[data-route^="assembleias"],[data-route^="frota-"],[data-route^="rec-"],[data-route^="propostas"],[data-route="qr-cards"],[data-route="employee-qr"],[data-route="it-access"],[data-route="it-vpn"],[data-route="it-software"]) table tbody td{padding:12px;line-height:1.5;vertical-align:top}
 :is([data-route^="obras"],[data-route^="assembleias"],[data-route^="frota-"],[data-route^="rec-"],[data-route^="propostas"],[data-route="qr-cards"],[data-route="employee-qr"],[data-route="it-access"],[data-route="it-vpn"],[data-route="it-software"]) table tbody tr:hover{background:color-mix(in srgb,var(--surface-2) 65%,var(--surface))}
 :is([data-route^="obras"],[data-route^="propostas"],[data-route="qr-cards"],[data-route="frota-anomalias"]) .metric{min-width:0;padding:16px 18px;box-shadow:0 3px 12px rgba(0,0,0,.035)}
 :is([data-route^="obras"],[data-route^="propostas"],[data-route="qr-cards"],[data-route="frota-anomalias"]) .metric>span:first-child{display:block;min-height:2.6em;line-height:1.3;margin-bottom:8px;font-size:14px}
 :is([data-route^="obras"],[data-route^="propostas"],[data-route="qr-cards"],[data-route="frota-anomalias"]) .metric>strong{font-size:28px;line-height:1.15;font-variant-numeric:tabular-nums}
 :is([data-route^="obras"],[data-route^="propostas"],[data-route="qr-cards"],[data-route="frota-anomalias"]) .metric>small{display:block;margin-top:8px;line-height:1.4}
}
/* O resumo da Reconciliação partilha o par de cores contrastantes da marca. */
[data-route="rec-visao"] .rec-hero{background:var(--action-bg,var(--brand));color:var(--action-text,#202020)}
[data-route="rec-visao"] .rec-hero :is(h2,p,.rec-hero-data){color:inherit}
[data-route="rec-visao"] .rec-hero-moeda{background:color-mix(in srgb,currentColor 12%,transparent)}

@media(max-width:600px){[data-route^="rec-"] .rec-stat>strong{font-size:clamp(1rem,4.6vw,1.25rem);white-space:normal;overflow-wrap:anywhere;letter-spacing:-.02em}}

/* Formulários simples: cabeçalho estável e scroll no conteúdo. */
#modalBackdrop .modal:has(#modalBody>form:is(.form-grid,.pc-novo)){display:flex;flex-direction:column;overflow:hidden;max-height:min(780px,calc(100dvh - 36px - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px)))}
#modalBackdrop .modal:has(#modalBody>form:is(.form-grid,.pc-novo))>header{flex:0 0 auto}
#modalBackdrop .modal:has(#modalBody>form:is(.form-grid,.pc-novo))>#modalBody{min-height:0;overflow:auto;overscroll-behavior:contain}
@media(max-width:780px){
 #modalBackdrop .modal:has(#modalBody>form:is(.form-grid,.pc-novo)){align-self:flex-start;height:auto;min-height:0;max-height:calc(100dvh - 20px - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px))}
}

/* Administração e Área pessoal: separar informação e ação em ecrãs estreitos. */
@media (max-width: 780px) {
  .demo-estado-cartao {
    display: grid;
    grid-template-columns: 42px minmax(0, 1fr);
    align-items: start;
  }
  .demo-estado-cartao > button {
    grid-column: 1 / -1;
    width: 100%;
    min-height: 44px;
  }
  .demo-estado-texto {
    min-width: 0;
    overflow-wrap: anywhere;
  }
  .emp-atencao-grid {
    grid-template-columns: minmax(0, 1fr);
  }
  .emp-atencao-item {
    display: grid;
    grid-template-columns: 38px minmax(0, 1fr);
    align-items: start;
  }
  .emp-atencao-item > button {
    grid-column: 1 / -1;
    width: 100%;
    min-height: 44px;
  }
  .emp-atencao-item small {
    white-space: normal;
    overflow-wrap: anywhere;
  }
}
:is([data-route^="admin"], [data-route="employee-area"]) .detail-row {
  display: grid;
  grid-template-columns: minmax(130px, 22%) minmax(0, 1fr);
  align-items: start;
  gap: 8px 24px;
}
:is([data-route^="admin"], [data-route="employee-area"]) .detail-row > strong {
  min-width: 0;
  text-align: left;
  line-height: 1.5;
  font-weight: 500;
  overflow-wrap: anywhere;
}
:is([data-route^="admin"], [data-route="employee-area"]) .detail-row > span {
  min-width: 0;
  line-height: 1.5;
}
@media (max-width: 600px) {
  :is([data-route^="admin"], [data-route="employee-area"]) .detail-row {
    grid-template-columns: minmax(0, 1fr);
    gap: 4px;
  }
}

/* Ligações externas: os campos de mapeamento acompanham a largura da janela. */
.lig-form .lig-mapa-linha {
  grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr) auto;
}
.lig-form .lig-mapa-linha > input {
  min-width: 0;
  width: 100%;
}
/* A faixa demo fica sob a janela e o respetivo fundo. */
  z-index: 0;
}
@media (max-width: 780px) {
  .detail-inline-action,
  .calendar-sync-row {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    align-items: start;
  }
  .detail-inline-action button,
  .calendar-sync-row button {
    white-space: normal;
    overflow-wrap: anywhere;
    min-height: 44px;
  }
  .detail-inline-action input,
  .calendar-sync-row input {
    width: 100%;
    min-height: 44px;
  }
}
@media (max-width: 560px) {
  .lig-form .lig-mapa-linha {
    grid-template-columns: minmax(0, 1fr) 44px;
  }
  .lig-form .lig-mapa-linha > input {
    grid-column: 1 / -1;
  }
  .lig-form .lig-mapa-linha > button {
    grid-column: 2;
    min-height: 44px;
  }
}
@media (max-width: 520px) {
  .prog-obrig.full {
    grid-template-columns: minmax(0, 1fr) minmax(48px, 1fr);
  }
  .prog-obrig.full > strong {
    grid-column: 1 / -1;
    min-width: 0;
    white-space: normal;
    overflow-wrap: anywhere;
  }
}

/* Todos os dias da semana permanecem disponíveis em janelas estreitas. */
@media (max-width: 560px) {
  #scheduleForm .weekday-picker {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }
}
/* Catálogos: os botões de opção conservam o seu tamanho junto da descrição. */
.pc-novo .check-row > input[type="radio"] {
  width: 24px;
  min-width: 24px;
  flex: 0 0 24px;
  margin: 0;
}
.pc-novo .pe-campo .check-row {
  align-items: flex-start;
  gap: 10px;
  min-height: 44px;
  line-height: 1.5;
}

/* O editor comercial mantém as caixas de seleção junto do texto. */
.pm .pe-campo .check-row > input[type="checkbox"] {
  width: 24px;
  min-width: 24px;
  flex: 0 0 24px;
  margin: 0;
}
.pm .pe-campo .check-row {
  align-items: flex-start;
  gap: 10px;
  min-height: 44px;
  line-height: 1.5;
}
@media (max-width: 780px) {
  #modalBackdrop .modal:has(#modalBody > p + .form-actions) {
    align-self: flex-start;
    height: auto;
    min-height: 0;
    max-height: calc(100dvh - 20px - env(safe-area-inset-top, 0px) - env(safe-area-inset-bottom, 0px));
  }
}

/* O nome da linha e o texto das condições têm uma linha própria no editor mobile. */
@media (max-width: 900px) {
  .pm .pm-item > summary::before {
    display: none;
  }
  .pm .pm-item > summary input {
    font-size: 16px;
  }
  .pm .pm-item > summary {
    grid-template-columns: 96px minmax(0, 1fr) 44px;
  }
  .pm .pm-item > summary > .pm-item-nome {
    grid-column: 1 / -1;
    grid-row: 1;
    min-height: 44px;
    font-size: 16px;
  }
  .pm .pm-item > summary > .pm-mover {
    grid-column: 1;
    grid-row: 2;
  }
  .pm .pm-item > summary > .pm-mais {
    grid-column: 2;
    grid-row: 2;
    justify-self: end;
    width: 44px;
    height: 44px;
  }
  .pm .pm-item > summary > .pe-remover {
    grid-column: 3;
    grid-row: 2;
    width: 44px;
    height: 44px;
  }
  .pm .pm-item > summary > .pm-precos,
  .pm .pm-item > summary > .pm-item-texto {
    grid-column: 1 / -1;
    grid-row: 3;
  }
  .pm .pm-cond {
    display: grid;
    grid-template-columns: 96px minmax(0, 1fr) 44px;
    align-items: start;
  }
  .pm .pm-cond > textarea {
    grid-column: 1 / -1;
    grid-row: 1;
    width: 100%;
    min-width: 0;
    min-height: 96px;
    font-size: 16px;
  }
  .pm .pm-cond > .pm-mover {
    grid-column: 1;
    grid-row: 2;
  }
  .pm .pm-cond > .pe-remover {
    grid-column: 3;
    grid-row: 2;
    width: 44px;
    height: 44px;
  }
  .pm .pm-cond > select {
    grid-column: 1 / -1;
    grid-row: 3;
    width: 100%;
    max-width: none;
    min-width: 0;
    min-height: 44px;
    font-size: 16px;
  }
  .pm .pm-item > summary > .pm-mover,
  .pm .pm-cond > .pm-mover {
    flex-direction: row;
    gap: 8px;
  }
  .pm .pm-item > summary > .pm-mover button,
  .pm .pm-cond > .pm-mover button {
    width: 44px;
    min-width: 44px;
    height: 44px;
    font-size: 14px;
  }
}

/* source: styles-responsive.css */
/* === Marca v2 (Selo Evoluído) — login e navegação ===
   Cores em /brand/brand-tokens.css (gerado por tools/brand/build-brand.mjs a partir de tools/brand/brand.json). */
:root{--sidebar-bg:var(--marca-floresta,#06251f)}
.sidebar .brand-mark.app-logo,.sidebar .brand-mark.has-logo{background:transparent}
/* painel da marca no login, na definição de palavra-passe e na definição de PIN */
.login-screen .login-brand-panel.lp2{background:radial-gradient(120% 90% at 100% 100%,color-mix(in srgb,var(--marca-verde-digital,#00a86b) 34%,transparent) 0%,transparent 58%),radial-gradient(80% 60% at 0% 0%,color-mix(in srgb,var(--marca-menta,#2fd294) 10%,transparent),transparent 60%),var(--marca-floresta,#06251f)!important;color:#fff;overflow:hidden;position:relative;justify-content:space-between;gap:28px}
.login-screen .login-brand-panel.lp2.has-company-image{background:linear-gradient(180deg,color-mix(in srgb,var(--marca-floresta,#06251f) 92%,transparent),color-mix(in srgb,var(--marca-floresta,#06251f) 80%,transparent)),var(--company-image),var(--marca-floresta,#06251f)!important;background-size:cover!important;background-position:center!important}
.login-brand-panel.lp2:after{display:none!important}
.lp2-marca-agua{position:absolute;right:-12%;bottom:-18%;width:min(70%,520px);height:auto;color:#fff;opacity:.045;pointer-events:none}
.login-brand-panel.lp2>:not(.lp2-marca-agua){position:relative;z-index:1}

.login-brand-panel.lp2 p.login-brand-tagline{color:var(--marca-menta-clara,#9af0cb)!important;opacity:.9}
.lp2-corpo{display:grid;gap:22px;max-width:520px}
.lp2-frase{font-family:var(--marca-fonte-titulos);font-size:clamp(22px,2.4vw,30px)!important;font-weight:700;line-height:1.25!important;color:#fff!important;letter-spacing:-.01em;margin:0;max-width:22ch!important}
.lp2-modulos{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.lp2-modulos li{display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:14px;background:#ffffff0d;border:1px solid #ffffff17;min-width:0}
.lp2-modulos li>span:last-child{display:grid;min-width:0}
.lp2-modulos strong{font-size:14px;font-weight:600;color:#fff}
.lp2-modulos small{font-size:12px;color:#ffffffa3}
.lp2-mod{flex:0 0 34px;width:34px;height:34px;border-radius:10px;background:#ffffff12;display:grid;grid-template-columns:repeat(2,9px);grid-auto-rows:9px;gap:3px;place-content:center}
.lp2-mod i{border-radius:2.5px;background:#ffffff30}
.lp2-mod[data-pos="0"] i:nth-child(1),.lp2-mod[data-pos="1"] i:nth-child(2),.lp2-mod[data-pos="2"] i:nth-child(3),.lp2-mod[data-pos="3"] i:nth-child(4){background:var(--c)}
.login-brand-panel.lp2 .login-company-name{color:#ffffffc2}
@media (max-width:1100px){.lp2-modulos{grid-template-columns:minmax(0,1fr)}}
/* telemovel: o painel fica uma faixa compacta (simbolo, nome, assinatura e organizacao) */
@media (max-width:900px){
  .lp2-corpo{display:none}
  .lp2-marca-agua{width:62%;right:-18%;bottom:-40%}
}
/* botao principal do login com a cor institucional e foco visivel (WCAG 2.2: 2.4.7 / 2.4.11) */
.login-card .login-submit:focus-visible,.login-card .field input:focus-visible{outline:3px solid color-mix(in srgb,var(--marca-verde-digital,#00a86b) 55%,transparent);outline-offset:2px}

/* Marca v2: durante a animacao de entrada (app instalada) o painel fica transparente sobre o fundo floresta do overlay,
   para continuar exatamente a imagem de arranque do iOS; a marca de agua so aparece no fim */
.login-screen.login-intro .login-brand-panel.lp2{background:transparent!important}
.login-screen.login-intro .lp2-marca-agua{opacity:0}
.lp2-marca-agua{transition:opacity .6s ease}
.nav-group .nav-group-items{display:grid!important;grid-template-rows:0fr;opacity:0;visibility:hidden;transition:grid-template-rows .2s ease,opacity .16s ease,visibility .2s}
.nav-group.open .nav-group-items{grid-template-rows:1fr;opacity:1;visibility:visible}
.nav-group-links{display:grid;gap:3px;min-height:0;overflow:hidden;padding:0 6px 7px}
.nav-direct-items{display:grid;gap:3px;margin:0 0 6px}
.nav-group-toggle{align-items:center;gap:8px}
.nav-group-toggle .nav-group-icon{flex:0 0 28px}
.nav-group-toggle .nav-group-label{flex:1;min-width:0;text-align:left;font-size:11px;font-weight:700;letter-spacing:.06em;opacity:.78}
.nav-group.has-current:not(.open) .nav-group-toggle{color:var(--sidebar-text,#fff)}
.nav-group-toggle:focus-visible{outline:2px solid var(--marca-menta,#2fd294);outline-offset:-2px}
.nav-group-toggle,.nav-button,.nav-submenu-button{scroll-margin-block:clamp(20px,12vh,72px)}
.nav-button.active{box-shadow:none}
.nav-button.active svg{color:var(--marca-menta,#2fd294)}
@media(prefers-reduced-motion:reduce){.nav-group .nav-group-items{transition:none}}
@media(min-width:781px){
  .sidebar{transition:flex-basis .2s ease,padding .2s ease}
  .sidebar-collapse-toggle{display:grid;place-items:center;flex:0 0 34px;width:34px;height:34px;margin-left:auto;padding:0;border:1px solid var(--sidebar-line);border-radius:8px;background:#ffffff0d;color:var(--sidebar-muted);cursor:pointer}
  .sidebar-collapse-toggle:hover{background:#ffffff18;color:var(--sidebar-text)}
  .sidebar-collapse-toggle:focus-visible{outline:2px solid var(--marca-menta,#2fd294);outline-offset:2px}
  .sidebar-collapse-icon{width:17px;height:17px;transition:transform .2s ease}
#appShell.sidebar-collapsed .sidebar{box-sizing:border-box;flex:0 0 76px!important;width:76px;padding:12px 8px;overflow:hidden}
#appShell.sidebar-collapsed .brand-mark,#appShell.sidebar-collapsed .brand-copy{display:none}
#appShell.sidebar-collapsed .nav{display:grid;align-content:start;justify-items:center;grid-auto-rows:max-content;gap:6px;min-width:0;min-height:0;width:100%;margin:0;padding:0;overflow-x:hidden;overflow-y:auto}
#appShell.sidebar-collapsed .nav-group{width:100%;margin:0;padding:0;border:0;background:transparent;box-shadow:none}
#appShell.sidebar-collapsed :is(.nav-icon,.nav-employee-sections .nav-submenu-button>span){display:grid;place-items:center;flex:0 0 22px;width:22px;height:22px;margin:0;padding:0;border:0;border-radius:0;background:transparent;box-shadow:none}
#appShell.sidebar-collapsed .nav-group-label,#appShell.sidebar-collapsed .nav-group-toggle .nav-badge,#appShell.sidebar-collapsed .nav-button>span:not(.nav-icon),#appShell.sidebar-collapsed .sidebar-footer button>span:not(.nav-icon),#appShell.sidebar-collapsed .sidebar-privacidade span,#appShell.sidebar-collapsed .nav-submenu-button strong,#appShell.sidebar-collapsed .nav-submenu-group-label,#appShell.sidebar-collapsed .sidebar-etryit{display:none}
#appShell.sidebar-collapsed .nav-mode-button{width:44px;min-width:44px;height:40px;min-height:40px;padding:0}
#appShell.sidebar-collapsed .nav-employee-sections{width:100%}
#appShell.sidebar-collapsed .nav-submenu:before{display:none}
#appShell.sidebar-collapsed .sidebar-footer{align-items:center;gap:4px;width:100%;margin-top:8px;padding-top:8px}
}
@media(prefers-reduced-motion:reduce){.sidebar,.sidebar-collapse-icon{transition:none!important}}

/* Marca v2.1: nome com o "e" em grelha de modulos (brandNameHtml no app.js) */
.nome-marca{display:inline-flex;align-items:baseline;gap:.07em;white-space:nowrap}
.e-modular{height:.6em;width:calc(.6em * 242 / 304);flex:0 0 auto;fill:var(--marca-menta,#2fd294);align-self:baseline;overflow:visible}
.login-brand-panel.lp2 .lp2-marca-agua{opacity:.06}
.login-screen.login-intro .lp2-marca-agua{opacity:0}
/* o menu lateral tem ".brand span{display:block}" (linha da organizacao); o nome da marca fica sempre numa linha */
.brand .nome-marca,.nome-marca{display:inline-flex!important;align-items:baseline}
.nome-marca>span{display:inline!important;font:inherit!important;color:inherit!important;margin:0!important;letter-spacing:inherit!important}

/* === Telemovel (<=780px): sem barra superior; menu em ecra inteiro ===
   O nome do utilizador ja aparece no hero e o menu abre-se pelo botao central da barra inferior. A faixa fixa da cor da marca
   por baixo da barra de estado mantem o topo solido no iOS (o sistema usa a cor de elementos fixos no topo). */
.menu-mobile-acoes,.menu-mobile-pesquisa{display:none}
@media (max-width:780px){
  .sidebar-collapse-toggle{display:none!important}
  .topbar{display:none!important}
  .workspace{padding-top:calc(env(safe-area-inset-top,0px) + 10px)!important}
  #appShell::after{content:"";position:fixed;top:0;left:0;right:0;height:env(safe-area-inset-top,0px);background:var(--sidebar-bg);z-index:40;pointer-events:none}
  body.sidebar-open:before{display:none!important}
  .sidebar{position:fixed!important;inset:0!important;width:100vw!important;max-width:none!important;height:100dvh!important;max-height:none!important;border-radius:0!important;border:0!important;z-index:70!important;
    padding:calc(env(safe-area-inset-top,0px) + 14px) 16px calc(env(safe-area-inset-bottom,0px) + 14px)!important;
    transform:translateY(100%)!important;opacity:0;visibility:hidden;transition:transform .34s cubic-bezier(.2,.8,.2,1),opacity .2s ease,visibility 0s linear .34s!important}
  body.sidebar-open .sidebar,.sidebar.open{transform:none!important;opacity:1;visibility:visible;transition:transform .34s cubic-bezier(.2,.8,.2,1),opacity .2s ease,visibility 0s!important}
  .sidebar .brand{padding-right:64px!important}
  .menu-mobile-acoes{display:flex;gap:8px;position:absolute;top:calc(env(safe-area-inset-top,0px) + 20px);right:20px;z-index:3}
  .menu-mobile-botao{position:relative;width:44px;height:44px;border-radius:12px;display:grid;place-items:center;border:1px solid #ffffff1f;background:#ffffff12;color:#fff;cursor:pointer}
  .menu-mobile-botao svg{width:20px;height:20px}
  .menu-mobile-botao strong{position:absolute;top:-4px;right:-4px;min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:#e5484d;color:#fff;font-size:11px;line-height:18px;text-align:center}
  .menu-mobile-botao:active{transform:scale(.96)}
  .menu-mobile-pesquisa{display:block;position:relative;margin:4px 0 6px}
  .menu-mobile-pesquisa .global-search{display:block;width:100%;max-width:none;margin:0}
  .menu-mobile-pesquisa .global-search input{width:100%;height:44px;border-radius:12px;border:1px solid #ffffff1f;background:#ffffff10;color:#fff;padding:0 14px;font-size:16px}
  .menu-mobile-pesquisa .global-search input::placeholder{color:#ffffff80}
  .menu-mobile-pesquisa .global-search-results{position:absolute;left:0;right:0;top:calc(100% + 6px);z-index:5;max-height:55vh;overflow:auto}
}

/* Avisos no telemovel: sino na propria pagina (ao lado do QR no hero do colaborador, no canto do hero do dashboard ou no
   cabecalho das restantes paginas). No desktop continua o sino da barra superior. */
.hero-avisos{display:none}
@media (max-width:780px){
  .hero-avisos{display:grid;place-items:center;position:relative;flex:0 0 auto;width:52px;height:52px;border-radius:14px;border:1px solid #ffffff24;background:#ffffff1f;color:#fff;cursor:pointer}
  .hero-avisos svg{width:22px;height:22px}
  .hero-avisos strong{position:absolute;top:-5px;right:-5px;min-width:20px;height:20px;padding:0 6px;border-radius:10px;background:#e5484d;color:#fff;font:700 11px/20px var(--marca-fonte-texto,'Inter',sans-serif);text-align:center;box-shadow:0 0 0 2px var(--marca-floresta,#06251f)}
  .hero-avisos:active{transform:scale(.96)}
  .employee-live-hero-body{position:relative}
  .hero-avisos-colaborador{position:absolute;top:12px;right:12px;width:44px;height:44px;border-radius:12px;z-index:2}
  .dashboard-hero{position:relative}
  .hero-avisos-dashboard{position:absolute;top:14px;right:14px;width:44px;height:44px;border-radius:12px;z-index:2}
  .page-head{display:flex;align-items:center;justify-content:space-between;gap:12px}
  .page-avisos{width:44px;height:44px;border-radius:12px;border-color:var(--line);background:var(--surface);color:var(--text)}
  .page-avisos strong{box-shadow:0 0 0 2px var(--surface)}
  .content:has(.dashboard-hero) ~ * .page-avisos,.workspace:has(.dashboard-hero) .page-avisos,.workspace:has(.employee-hero-v2) .page-avisos{display:none}
}

/* === Telemovel: topo solido, cabecalho de secao, atalhos em grelha e cartoes de registos === */
@media (max-width:780px){
  /* o iOS pinta a zona da barra de estado com o fundo do html: cor da marca; a area da pagina mantem o fundo claro/escuro */
  html:has(#appShell:not([hidden])){background:var(--sidebar-bg)!important}
  .workspace{background:var(--bg)}

  /* Cabecalho de secao (paginas sem hero) */
  body.com-cabecalho-secao .page-head{display:grid!important;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;column-gap:12px;row-gap:14px;
    margin:calc(-1 * (env(safe-area-inset-top,0px) + 10px)) 0 0!important;padding:calc(env(safe-area-inset-top,0px) + 18px) 18px 42px!important;
    background:radial-gradient(90% 120% at 100% 100%,color-mix(in srgb,var(--marca-verde-digital,#00a86b) 26%,transparent),transparent 65%),var(--sidebar-bg);color:#fff;text-align:left}
  body.com-cabecalho-secao .page-head>div:not(.page-actions):not(.page-head-numeros){min-width:0}
  body.com-cabecalho-secao .page-head .eyebrow{color:var(--marca-menta-clara,#9af0cb)!important;margin:0 0 2px;font-size:11px;letter-spacing:.08em}
  body.com-cabecalho-secao .page-head h1{color:#fff!important;font-size:22px!important;line-height:1.15;margin:0;text-align:left}
  body.com-cabecalho-secao .page-head .page-actions{grid-column:1 / -1;display:flex;flex-wrap:wrap;gap:8px;margin:0}
  body.com-cabecalho-secao .page-head .page-actions:empty{display:none}
  body.com-cabecalho-secao .page-head .page-actions :is(button,a){flex:1 1 auto;min-height:42px;border-radius:12px}
  body.com-cabecalho-secao .page-head .page-actions .secondary-action{background:#ffffff14;border-color:#ffffff24;color:#fff}
  .page-head-icone{width:42px;height:42px;border-radius:12px;display:grid;place-items:center;background:#ffffff14;border:1px solid #ffffff1a;color:var(--marca-menta,#2fd294)}
  .page-head-icone svg{width:22px;height:22px}
  body.com-cabecalho-secao .page-avisos{display:grid!important;background:#ffffff14;border-color:#ffffff24;color:#fff}
  body.com-cabecalho-secao .page-avisos strong{box-shadow:0 0 0 2px var(--sidebar-bg)}
  .page-head-numeros{grid-column:1 / -1;display:grid;grid-template-columns:repeat(auto-fit,minmax(0,1fr));gap:8px}
  .page-head-numeros>div{background:#ffffff12;border:1px solid #ffffff14;border-radius:12px;padding:9px 10px;min-width:0}
  .page-head-numeros strong{display:block;font:800 19px/1.1 var(--marca-fonte-titulos,'Plus Jakarta Sans',sans-serif);color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .page-head-numeros span{display:block;font-size:11px;color:#ffffffb3;margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  body.com-cabecalho-secao .kpi-no-cabecalho{display:none!important}
  body.com-cabecalho-secao .content{position:relative;margin-top:-24px;border-radius:22px 22px 0 0;background:var(--bg);padding-top:18px!important}
  body.com-cabecalho-secao .employee-top-cards{display:none}

  /* Atalhos em grelha (antes cartoes grandes: Pedir ferias, Justificacao, Pedir folga...) */
  .employee-action-grid{display:grid!important;grid-template-columns:repeat(4,minmax(0,1fr))!important;gap:10px!important;padding:14px!important}
  .employee-action-grid .employee-action{display:flex!important;flex-direction:column;align-items:center;justify-content:flex-start;gap:7px;min-height:0!important;padding:4px 0!important;border:0!important;background:none!important;box-shadow:none!important;text-align:center;width:auto!important}
  .employee-action-grid .employee-action>:first-child{width:52px;height:52px;border-radius:15px;display:grid;place-items:center;flex:0 0 auto}
  .employee-action-grid .employee-action strong{font-size:12px!important;line-height:1.25;font-weight:600}
  .employee-action-grid .employee-action small{display:none!important}
  .employee-action-grid .employee-action>span:last-child{display:block;min-width:0}

  /* Paineis: titulo e etiqueta na mesma linha quando cabem */
  .panel-header{flex-direction:row!important;align-items:center!important;flex-wrap:wrap}
  .panel-header>h2,.panel-header>h3{flex:1 1 auto;width:auto!important;min-width:0;margin-right:auto}
  .panel-header>.badge,.panel-header>.pill,.panel-header>.count-pill{flex:0 0 auto;margin-left:0!important}

  /* Cartoes dos registos (tabelas em modo cartao): alinhados e com a acao por baixo dos dados */
  .panel>.table-wrap:has(>table.rt){margin:0!important;padding:12px!important}
  .table-wrap table.rt tr{margin:0 0 10px!important}
  .table-wrap table.rt td[data-kind="select"]{position:static!important;display:block!important;padding:10px 0 2px!important;border-bottom:0!important}
  .table-wrap table.rt td[data-kind="select"]::before{display:none!important}
  .table-wrap table.rt td[data-kind="select"] :is(.secondary-action,.primary-action,button){width:100%}
}
@media (max-width:780px){
  .page-head-numeros span{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.25}
  /* uma unica acao: linha completa com icone, titulo e descricao */
  .employee-action-grid:has(>.employee-action:only-child){grid-template-columns:minmax(0,1fr)!important}
  .employee-action-grid>.employee-action:only-child{flex-direction:row!important;justify-content:flex-start!important;text-align:left!important;gap:14px!important;padding:6px 2px!important}
  .employee-action-grid>.employee-action:only-child strong{font-size:15px!important}
  .employee-action-grid>.employee-action:only-child small{display:block!important;font-size:13px}
}

/* Telemovel: paginas com hero (Dashboard e Resumo do colaborador). Sem o titulo "Plataforma interna / Dashboard" e com o hero
   encostado ao topo, de lado a lado: o iOS 26 pinta a zona da barra de estado com a cor do conteudo no topo da pagina. */
@media (max-width:780px){
  body[data-route=dashboard] .page-head{display:none!important}
  body[data-route=dashboard] .content>.dashboard-hero:first-child,
  body[data-route=employee-area]:not(.com-cabecalho-secao) .employee-section>.employee-live-hero:first-child{
    margin-top:calc(-1 * (env(safe-area-inset-top,0px) + 22px))!important;
    margin-right:calc(0px - max(16px,env(safe-area-inset-right,0px)))!important;
    margin-bottom:0!important;
    margin-left:calc(0px - max(16px,env(safe-area-inset-left,0px)))!important;
    border-radius:0 0 26px 26px!important;border-left:0!important;border-right:0!important;border-top:0!important;
    padding-top:calc(env(safe-area-inset-top,0px) + 22px)!important;
    padding-right:max(22px,env(safe-area-inset-right,0px))!important;
    padding-left:max(22px,env(safe-area-inset-left,0px))!important}
  body[data-route=dashboard] .content>.dashboard-hero:first-child .hero-avisos-dashboard{top:calc(env(safe-area-inset-top,0px) + 14px)}
}
@media (max-width:780px){
  /* hero de lado a lado: tinha width:100%, por isso as margens negativas so o deslocavam para a esquerda */
  body[data-route=dashboard] .content>.dashboard-hero:first-child,
  body[data-route=employee-area]:not(.com-cabecalho-secao) .employee-section>.employee-live-hero:first-child{width:calc(100% + max(16px,env(safe-area-inset-left,0px)) + max(16px,env(safe-area-inset-right,0px)))!important;max-width:none!important;box-sizing:border-box}
  /* zona da barra de estado (app instalada): o iOS usa o fundo do body; a area da pagina (.workspace) mantem o fundo claro/escuro */
  body:has(#appShell:not([hidden])){background:var(--sidebar-bg)!important}
}
@media (max-width:780px){.workspace{min-height:100vh;min-height:100dvh}}
@media (max-width:780px){body[data-route=dashboard] .content>.dashboard-hero:first-child .hero-avisos-dashboard{right:max(22px,env(safe-area-inset-right,0px))!important;top:calc(env(safe-area-inset-top,0px) + 18px)!important}}
@media (prefers-reduced-motion:reduce){.hero-avisos:active{transform:none!important}}

/* Listas compactas (telemovel, area do colaborador): registo fechado = titulo, detalhe e estado; tocar abre o cartao completo */
@media (max-width:780px){
  .table-wrap table.rt[data-compacta] tbody tr{cursor:pointer;position:relative;-webkit-tap-highlight-color:transparent}
  .table-wrap table.rt[data-compacta] tbody tr:not(.aberto){display:grid!important;grid-template-columns:minmax(0,1fr) auto;column-gap:12px;row-gap:3px;align-items:center;padding:13px 38px 13px 14px!important}
  .table-wrap table.rt[data-compacta] tbody tr:not(.aberto)>td{display:none!important}
  .table-wrap table.rt[data-compacta] tbody tr:not(.aberto)>td[data-papel]{display:block!important;position:static!important;padding:0!important;border:0!important;text-align:left!important;min-width:0}
  .table-wrap table.rt[data-compacta] tbody tr:not(.aberto)>td[data-papel]::before{display:none!important}
  .table-wrap table.rt[data-compacta] tbody tr:not(.aberto)>td[data-papel=titulo]{grid-column:1;font-size:15px;font-weight:600;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .table-wrap table.rt[data-compacta] tbody tr:not(.aberto)>td[data-papel=sub]{grid-column:1;font-size:13px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .table-wrap table.rt[data-compacta] tbody tr:not(.aberto)>td[data-papel=estado]{grid-column:2;grid-row:1 / span 2;justify-self:end;max-width:46vw}
  .table-wrap table.rt[data-compacta] tbody tr:not(.aberto)>td[data-papel=estado] *{white-space:nowrap}
  .table-wrap table.rt[data-compacta] tbody tr::after{content:"";position:absolute;right:16px;top:50%;width:8px;height:8px;border-right:2px solid var(--muted);border-bottom:2px solid var(--muted);transform:translateY(-70%) rotate(-45deg);opacity:.7;transition:transform .2s}
  .table-wrap table.rt[data-compacta] tbody tr.aberto::after{top:24px;right:18px;transform:rotate(-135deg)}
  .table-wrap table.rt[data-compacta] tbody tr.aberto{padding:4px 14px!important}
  .table-wrap table.rt[data-compacta] tbody tr.aberto>td{width:100%!important;min-width:0;box-sizing:border-box;background:transparent!important;padding-top:7px!important;padding-bottom:7px!important}
  .table-wrap table.rt[data-compacta] tbody tr.aberto>td:first-child{padding-right:42px!important}
  .table-wrap table.rt[data-compacta] tbody tr.aberto>td::before{flex-basis:32%;max-width:38%}
  .table-wrap table.rt[data-compacta] tbody tr.aberto>td[data-kind="actions"],
  .table-wrap table.rt[data-compacta] tbody tr.aberto>td[data-kind="select"]{padding-top:9px!important;padding-bottom:4px!important}
  .table-wrap table.rt[data-compacta] tbody tr:focus-visible{outline:3px solid color-mix(in srgb,var(--brand) 45%,transparent);outline-offset:2px}
}
@media (max-width:780px){
  /* O atalho do historico cabe no cabecalho e deixa de criar uma linha alta vazia. */
  .employee-recent-punches .panel-header{display:grid!important;grid-template-columns:minmax(0,1fr) auto;align-items:center!important;gap:10px!important}
  .employee-recent-punches .panel-header [data-employee-section-link]{width:auto!important;min-height:38px!important;padding:7px 12px!important;white-space:nowrap}
  /* Menos molduras e ar desperdicado nas listas compactas, mantendo alvos de toque confortaveis. */
  .employee-section .panel>.table-wrap:has(>table.rt[data-compacta]){padding:10px!important}
  .employee-section .table-wrap table.rt[data-compacta] tbody tr{border-radius:12px;box-shadow:0 5px 16px rgba(15,23,42,.06)}
  .employee-section .table-wrap table.rt[data-compacta] tbody tr:not(.aberto){min-height:58px;margin-bottom:8px!important}
}
@media (max-width:780px){
  /* campos de data/hora no iOS e Chrome tem largura minima propria: deixam de empurrar o formulario para fora */
  .content input:is([type=date],[type=time],[type=datetime-local],[type=month]){min-width:0!important;width:100%!important;box-sizing:border-box}
  .content label:has(>input:is([type=date],[type=time],[type=datetime-local],[type=month])){min-width:0;grid-template-columns:minmax(0,1fr)!important}
  /* filtro de periodo (historico de picagens, banco de horas): datas lado a lado e botoes lado a lado */
  .attendance-period-filter,.time-bank-filter{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px!important}
  .attendance-period-filter>*,.time-bank-filter>*{min-width:0;width:auto!important;margin:0!important}
}

/* Seletores nativos (calendario/hora do browser, checkboxes, radios, sliders) com a cor da marca em vez do azul do sistema */
:root{accent-color:var(--marca-verde,#007356)}
:root[data-theme="dark"]{accent-color:var(--marca-menta,#2fd294)}
input,select,textarea,progress{accent-color:inherit}
input:is([type=date],[type=time],[type=datetime-local],[type=month],[type=week])::-webkit-calendar-picker-indicator{cursor:pointer;opacity:.7}

/* === Filtros no telemovel, iguais em todos os modulos ===
   1) pesquisa e botao "Filtros" na mesma linha (o botao fica so com o icone e o contador)
   2) separadores de estado como etiquetas alinhadas a esquerda (passam para a linha seguinte, sem scroll lateral)
   3) barras de filtros com selects/datas em grelha de 2 colunas; painel de filtros avancados numa coluna */
@media (max-width:780px){
  .fx-barra,.asb-barra,.asb-barra-pesquisa{gap:12px!important}
  .fx-linha:not(.fx-resultados),.asb-barra-pesquisa{display:flex!important;flex-direction:row!important;flex-wrap:wrap;align-items:center;gap:8px!important;width:100%}
  :is(.fx-linha,.asb-barra-pesquisa) :is(.fx-search,.asb-search){flex:1 1 200px!important;min-width:0!important;width:auto!important;margin:0!important}
  :is(.fx-search,.asb-search) input{font-size:16px!important;min-width:0}
  :is(.fx-btn-filtros,.asb-btn-filtros){flex:0 0 48px!important;width:48px!important;height:48px!important;min-height:48px!important;padding:0!important;justify-content:center!important;
    font-size:0!important;gap:0!important;position:relative;border-radius:12px!important}
  :is(.fx-btn-filtros,.asb-btn-filtros) svg{width:20px;height:20px;margin:0!important}
  :is(.fx-btn-filtros,.asb-btn-filtros) :is(.fx-contador,.asb-contador){position:absolute;top:-6px;right:-6px;font-size:11px!important;min-width:19px;height:19px;line-height:19px;padding:0 5px;border-radius:10px}
  .fx-linha.fx-resultados,.asb-resultados-barra{width:100%}
  :is(.fx-segmentos,.asb-segmentos){display:flex!important;flex-wrap:wrap;justify-content:flex-start!important;gap:6px!important;padding:0!important;background:none!important;width:100%}
  :is(.fx-seg,.asb-seg){flex:0 0 auto!important;height:34px;padding:0 11px!important;border-radius:999px!important;border:1px solid var(--line)!important;background:var(--surface)!important;
    color:var(--muted)!important;font-size:13px!important;gap:6px!important;box-shadow:none!important}
  :is(.fx-seg,.asb-seg) span{font-size:11px!important;padding:0 6px!important}
  :is(.fx-seg,.asb-seg).ativo{background:var(--sidebar-bg)!important;border-color:var(--sidebar-bg)!important;color:#fff!important}
  :is(.fx-seg,.asb-seg).ativo span{background:#ffffff26!important;color:#fff!important}
  :is(.fx-painel,.asb-painel-filtros){display:grid;grid-template-columns:minmax(0,1fr)!important;gap:10px!important}
  :is(.fx-painel,.asb-painel-filtros)[hidden]{display:none!important}
  .table-toolbar{display:grid!important;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px!important;align-items:end;width:100%}
  .table-toolbar>*{min-width:0;width:auto!important;margin:0!important}
  .table-toolbar select,.table-toolbar input{width:100%!important;min-width:0!important}
}
@media (max-width:780px){
  /* listas em cartao (qualquer modulo): contentor sem margens negativas, cartoes com a largura toda */
  .table-wrap:has(>table.rt){margin-left:0!important;margin-right:0!important;padding-left:0!important;padding-right:0!important;width:100%!important}
  .panel>.table-wrap:has(>table.rt){padding:12px!important}
  .table-wrap>table.rt{width:100%!important}
  .table-wrap>table.rt>tbody>tr{width:auto!important;margin-left:0!important;margin-right:0!important}
}
/* setas dos grupos recolhiveis (departamentos, etc.): seta desenhada na cor neutra, em vez do ">" dourado */
.content details>summary::before{content:""!important;display:inline-block;width:7px;height:7px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;
  color:var(--muted)!important;transform:rotate(-45deg);margin:0 12px 2px 2px;transition:transform .18s ease;flex:0 0 auto}
.content details[open]>summary::before{transform:rotate(45deg)}
/* Este cartao ja tem a sua propria acao/seta; a seta global criava uma quarta coluna e desmontava o cabecalho. */
.content :is(.dashboard-attendance-details,.dashboard-birthdays)>summary::before{content:none!important;display:none!important}

/* === Telemovel: correcoes da analise pagina a pagina (9 out 2026) === */
@media (max-width:780px){
  /* cabecalho de secao: icone, titulo e sino na 1.a linha; botoes de acao na 2.a (2 por linha); numeros na 3.a */
  body.com-cabecalho-secao .page-head>.page-head-icone{grid-column:1;grid-row:1}
  body.com-cabecalho-secao .page-head>div:not(.page-actions):not(.page-head-numeros){grid-column:2;grid-row:1}
  body.com-cabecalho-secao .page-head>.page-avisos{grid-column:3;grid-row:1}
  body.com-cabecalho-secao .page-head>.page-actions{grid-column:1 / -1;grid-row:2}
  body.com-cabecalho-secao .page-head>.page-head-numeros{grid-column:1 / -1;grid-row:3}
  body.com-cabecalho-secao .page-head .page-actions :is(button,a){flex:1 1 140px!important;min-width:0}
  /* numeros: 4 em grelha 2x2 (os rotulos deixam de ficar cortados); 2 ou 3 numa linha */
  .page-head-numeros{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .page-head-numeros:has(>div:nth-child(3):last-child){grid-template-columns:repeat(3,minmax(0,1fr))!important}
  .page-head-numeros span{-webkit-line-clamp:2}
  /* listas de detalhes (rotulo / valor): o rotulo nunca encolhe abaixo de 72px */
  .detail-row{gap:12px!important}
  .detail-row>:first-child{flex:0 0 auto!important;min-width:72px;max-width:42%}
  .detail-row>:last-child{flex:1 1 auto!important;min-width:0;text-align:right;overflow-wrap:break-word}
  /* seletores e campos nunca saem da coluna */
  .content select{max-width:100%!important;min-width:0!important}
  .content label:has(>select),.content .field{min-width:0}
  .time-bank-filter>label:has(select){grid-column:1 / -1}
  /* metricas: a ultima de uma grelha com numero impar ocupa a linha toda */
  :is(.kpi-grid,.dashboard-kpi-grid,.record-grid)>.metric:last-child:nth-child(odd){grid-column:1 / -1}
  /* tabelas em cartao (versao com data-label): mesmo alinhamento que as restantes listas */
  .table-wrap:has(>table[data-rotulada]){margin-left:0!important;margin-right:0!important;width:100%!important}
  .panel>.table-wrap:has(>table[data-rotulada]){padding:12px!important}
}
/* botao central da barra inferior: logotipo da app (camadas) em vez das tres barras */
.bottom-nav-center-circle img{width:30px;height:30px;display:block}
@media (max-width:780px){
  /* Analytics: indicadores em 2 colunas e mais compactos (antes um por linha) */
  .analytics-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:10px!important}
  .analytics-grid>.analytics-card:last-child:nth-child(odd){grid-column:1 / -1}
  .analytics-card{padding:12px 14px!important;min-width:0}
  .analytics-card strong{font-size:26px!important}
}

/* === Computador: correcoes da analise pagina a pagina (9 out 2026) === */
/* sino dos avisos na barra superior (era um "!") */
.notification-bell-mark{background:none!important;color:var(--text)!important;width:auto!important;height:auto!important;display:grid!important;place-items:center;box-shadow:none!important}
.notification-bell-mark svg{width:20px;height:20px;display:block}
/* mes do calendario: "Outubro de 2026" (o capitalize punha "De" em maiuscula) */
.calendar-nav-label{text-transform:none!important}
.calendar-nav-label::first-letter{text-transform:uppercase}
/* seta do submenu do menu lateral: neutra (era dourada) */
.nav-submenu-toggle{color:var(--sidebar-muted,#9fbdb4)!important}
/* menu de 3 pontos nas acoes dos pedidos */
.row-menu.acoes-adaptaveis .row-menu-panel :is(button,.secondary-action,.danger-action){width:100%;justify-content:flex-start;text-align:left}
@media (min-width:781px){
  /* botoes secundarios do cabecalho com contorno (antes pareciam texto solto) */
  .page-head .page-actions :is(.secondary-action,.ghost-action,button:not(.primary-action):not(.danger-action):not([aria-pressed]):not(.active)){border:1px solid var(--line)!important;background:var(--surface)!important;border-radius:10px}
  /* grelhas de metricas ajustam-se ao numero de itens (5 ou 6 numa linha, sem um sozinho no fim) */
  .kpi-grid,.analytics-grid{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))!important}
}
/* no telemovel o menu dos pedidos vem aberto: botoes a largura toda, sem o botao dos 3 pontos */
@media (max-width:780px){
  .row-menu.acoes-adaptaveis{display:block;width:100%}
  .row-menu.acoes-adaptaveis>summary{display:none!important}
  .row-menu.acoes-adaptaveis>.row-menu-panel{position:static!important;box-shadow:none!important;border:0!important;padding:0!important;background:none!important;min-width:0!important;width:100%}
  .row-menu.acoes-adaptaveis .row-menu-panel :is(button,.secondary-action,.danger-action){justify-content:center;text-align:center}
}
/* caixa informativa neutra nos formularios (ex.: pedido de picagem manual) */
.pedido-info{padding:12px 14px;border-radius:12px;background:color-mix(in srgb,var(--brand) 9%,var(--surface));color:var(--text);font-size:13px;line-height:1.5;border:1px solid color-mix(in srgb,var(--brand) 18%,transparent)}

/* Atalhos dos pedidos: grelha legivel no telemovel; cinco a sete opcoes passam naturalmente para uma segunda linha. */
.employee-action-curto{display:none}
@media (max-width:780px){
  .employee-action-grid:has(>.employee-action:nth-child(5)){grid-template-columns:repeat(auto-fit,minmax(72px,1fr))!important;gap:8px!important;padding:12px!important}
  .employee-action-grid:has(>.employee-action:nth-child(5)) .employee-action>:first-child{width:46px!important;height:46px!important;border-radius:13px!important}
  .employee-action-grid .employee-action:has(.employee-action-curto) strong{display:none!important}
  .employee-action-grid .employee-action .employee-action-curto{display:block;font-size:11.5px;font-weight:600;line-height:1.2;color:var(--text);white-space:nowrap}
}
@media (max-width:360px){
  .employee-action-grid:has(>.employee-action:nth-child(5)){grid-template-columns:repeat(auto-fit,minmax(66px,1fr))!important;gap:6px!important;padding:10px!important}
}

/* Computador: os atalhos dos pedidos ocupam sempre uma linha completa (4, 5, 6 ou 7 conforme os modulos do utilizador) */
@media (min-width:781px){
  .employee-action-grid:not(.compact):has(>.employee-action:nth-child(4)){display:grid!important;grid-template-columns:repeat(var(--atalhos-d,4),minmax(0,1fr))!important}
  .emp-picagem .employee-action-grid:not(.compact):has(>.employee-action:nth-child(4)){grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr))!important}
  .employee-action-grid:not(.compact):has(>.employee-action:nth-child(5)){--atalhos-d:5}
  .employee-action-grid:not(.compact):has(>.employee-action:nth-child(6)){--atalhos-d:6}
  .employee-action-grid:not(.compact):has(>.employee-action:nth-child(7)){--atalhos-d:7}
  .employee-action-grid:not(.compact):has(>.employee-action:nth-child(6)) .employee-action small{display:none}
}

/* Pedidos do colaborador agrupados por tipo (grupos recolhiveis) */
.pedidos-grupos{display:grid;gap:10px;padding:0 var(--space-4,16px) var(--space-4,16px)}
.pedidos-grupo{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-xl,12px);overflow:hidden}
.pedidos-grupo>summary{display:flex;align-items:center;gap:12px;cursor:pointer;list-style:none;min-height:58px;padding:12px 14px;background:color-mix(in srgb,var(--surface) 92%,var(--brand-soft) 8%)}
.pedidos-grupo>summary::-webkit-details-marker{display:none}
.pedidos-grupo>summary::marker{content:""}
.content .pedidos-grupo>summary::before{order:3;margin:0 2px 0 8px!important;color:var(--muted)!important}
.pedidos-grupo[open]>summary{border-bottom:1px solid var(--line);background:color-mix(in srgb,var(--surface) 82%,var(--brand-soft) 18%)}
.pedidos-grupo-titulo{display:inline-flex;align-items:center;gap:10px;min-width:0}
.pedidos-grupo-titulo svg{width:18px;height:18px;color:var(--brand);flex:0 0 auto}
.pedidos-grupo-contagem{display:inline-flex;align-items:center;gap:6px;flex:0 0 auto}
.pedidos-grupo>.table-wrap{margin:0;padding:0;overflow-x:auto}
.pedidos-grupo>.table-wrap table{margin:0}
@media (max-width:780px){.pedidos-grupos{padding:0 12px 12px}}
/* grupos de pedidos: titulo encostado a esquerda (junto a seta), contagem a direita */
.pedidos-grupo>summary{justify-content:flex-start!important;text-align:left!important}
.pedidos-grupo>summary .pedidos-grupo-titulo{justify-content:flex-start;text-align:left}
.pedidos-grupo>summary .pedidos-grupo-contagem{margin-left:auto}
@media (max-width:780px){
  .pedidos-grupo>summary{min-height:54px;padding:10px 12px;gap:9px}
  .pedidos-grupo-contagem .badge.warning{display:none}
  .pedidos-grupo>.table-wrap:has(>table.rt){padding:10px!important}
}

/* Menu de ecra inteiro (telemovel): no iOS em app instalada o 100dvh pode ser maior do que a area visivel e o botao Sair
   ficava cortado por baixo. A altura passa a vir de top:0/bottom:0 e o rodape fica sempre acima do indicador de inicio. */
@media (max-width:780px){
  .sidebar{height:auto!important;top:0!important;bottom:0!important;padding-bottom:calc(env(safe-area-inset-bottom,0px) + 18px)!important}
  .sidebar .sidebar-footer{flex:0 0 auto!important;margin-top:auto;padding-top:10px}
  .sidebar .sidebar-logout{min-height:52px!important;margin-top:8px}
}

/* Botao de ações das linhas (menu de 3 pontos): botão fantasma moderno e menu plano, igual em toda a aplicação */
.row-menu>summary{width:36px;height:36px;border-radius:10px;border:1px solid transparent;background:transparent;color:var(--muted);font-size:0;position:relative;transition:background .15s,color .15s,border-color .15s}
.row-menu>summary::before{content:none!important;display:none!important}
.row-menu>summary::after{content:"";display:block;width:20px;height:20px;background:currentColor;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='5' r='2'/%3E%3Ccircle cx='12' cy='12' r='2'/%3E%3Ccircle cx='12' cy='19' r='2'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='5' r='2'/%3E%3Ccircle cx='12' cy='12' r='2'/%3E%3Ccircle cx='12' cy='19' r='2'/%3E%3C/svg%3E") center/contain no-repeat}
.row-menu>summary:hover,.row-menu[open]>summary{background:var(--surface-2);color:var(--text);border-color:var(--line)}
.row-menu>summary:focus-visible{outline:3px solid color-mix(in srgb,var(--brand) 45%,transparent);outline-offset:2px}
.row-menu .row-menu-panel{min-width:200px;padding:6px;gap:2px;border-radius:14px;box-shadow:0 16px 40px #0f172a2e,0 2px 6px #0f172a14}
.row-menu:not(.acoes-adaptaveis) .row-menu-panel :is(button,.secondary-action,.danger-action,.primary-action){border:0;background:transparent;box-shadow:none;justify-content:flex-start;text-align:left;width:100%;min-height:38px;padding:8px 12px;border-radius:9px;font-weight:600;color:var(--text)}
.row-menu:not(.acoes-adaptaveis) .row-menu-panel :is(button,.secondary-action,.danger-action,.primary-action):hover{background:var(--surface-2)}
.row-menu:not(.acoes-adaptaveis) .row-menu-panel :is(.danger-action,.secondary-action.danger){color:var(--danger-text)}
.row-menu:not(.acoes-adaptaveis) .row-menu-panel :is(.danger-action,.secondary-action.danger):hover{background:color-mix(in srgb,var(--danger-text) 10%,transparent)}
@media (min-width:781px){
  .row-menu.acoes-adaptaveis .row-menu-panel :is(button,.secondary-action,.danger-action,.primary-action){border:0;background:transparent;box-shadow:none;min-height:38px;padding:8px 12px;border-radius:9px;font-weight:600;color:var(--text)}
  .row-menu.acoes-adaptaveis .row-menu-panel :is(button,.secondary-action,.danger-action,.primary-action):hover{background:var(--surface-2)}
  .row-menu.acoes-adaptaveis .row-menu-panel :is(.danger-action,.secondary-action.danger){color:var(--danger-text)}
}

/* Numero de pedidos por decidir no menu lateral (item Pedidos e titulo do grupo fechado) */
.nav-badge{margin-left:auto;min-width:20px;height:20px;padding:0 6px;border-radius:999px;background:#dc2626;color:#fff;font-size:11px;font-weight:700;line-height:20px;text-align:center;flex:0 0 auto}
.nav-group-toggle .nav-badge{margin-left:auto;margin-right:8px}

/* Entrar com Microsoft (ecrã de entrada) */
.acesso-ou{display:flex;align-items:center;gap:12px;margin:14px 0 10px;color:var(--muted);font-size:13px}
.acesso-ou::before,.acesso-ou::after{content:"";flex:1;height:1px;background:var(--line)}
.acesso-botao.acesso-microsoft{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;background:var(--surface);color:var(--text);border:1px solid var(--line);box-shadow:none;font-weight:600}
.acesso-botao.acesso-microsoft:hover{background:var(--surface-2)}

/* Gestão IT > Contas de email: resumo, filtros, pesquisa e lista compacta */
.it-email-toolbar{display:flex;flex-wrap:wrap;gap:12px;align-items:center;justify-content:space-between;padding:16px 18px 4px}
.it-email-toolbar .tabs{margin:0}
.it-email-search{flex:1 1 260px;max-width:380px;min-width:220px}
.it-email-n{display:inline-block;margin-left:6px;padding:0 7px;border-radius:999px;background:color-mix(in srgb,currentColor 14%,transparent);font-size:.78em;font-weight:700;line-height:1.5}
.it-email-hint{padding:0 18px;margin:6px 0 8px}
.it-email-wrap td,.it-email-wrap th{padding-top:9px;padding-bottom:9px}
.it-email-wrap td small{display:block;margin-top:2px}
.it-email-wrap td:last-child{width:52px;text-align:right}
.it-email-mais{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 18px}
.it-email-busca{padding:4px 18px 0;margin:0}
.it-email-assoc{white-space:nowrap;padding:6px 12px;min-height:34px;font-size:.85rem}

/* Microsoft 365: janelas de resultado e separadores das Configurações IT */
.it-settings-tabs{flex-wrap:wrap;margin:0 0 16px;max-width:100%}
.ms-res{display:grid;gap:16px;min-width:min(520px,100%)}
.ms-res-topo{display:flex;gap:14px;align-items:center}
.ms-res-topo h3{margin:0;font-size:1.15rem}
.ms-res-topo p{margin:3px 0 0;color:var(--muted);font-size:.92rem}
.ms-res-icone{width:46px;height:46px;border-radius:50%;display:grid;place-items:center;flex:0 0 auto;background:color-mix(in srgb,var(--brand) 14%,transparent);color:var(--brand)}
.ms-res-icone.erro{background:color-mix(in srgb,#dc2626 14%,transparent);color:#dc2626}
.ms-res-icone svg{width:24px;height:24px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.ms-res-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px}
.ms-res-item{border:1px solid var(--line);border-radius:12px;padding:12px 14px;background:var(--surface-2)}
.ms-res-item strong{display:block;font-size:1.6rem;line-height:1.1}
.ms-res-item span{display:block;margin-top:4px;color:var(--muted);font-size:.82rem}
.ms-res-item.aviso strong{color:var(--warning-text,#8f4d00)}
.ms-res-item.perigo strong{color:var(--danger-text,#b32d23)}
.ms-res-nota{border-radius:12px;padding:12px 14px;background:color-mix(in srgb,#f59e0b 12%,transparent);font-size:.9rem;line-height:1.45}
.ms-detalhes{display:grid;gap:10px;margin-bottom:6px}
.ms-detalhes .detail{display:grid;grid-template-columns:minmax(150px,220px) 1fr;gap:12px;align-items:baseline}
.ms-detalhes .detail>span{color:var(--muted);font-size:.9rem}
.ms-detalhes .detail>strong{font-weight:600;overflow-wrap:anywhere}
@media (max-width:640px){.ms-detalhes .detail{grid-template-columns:1fr;gap:2px}}
.ms-bloco{margin-bottom:16px}
.ms-bloco-corpo{padding:4px 18px 18px}
.ms-bloco .attendance-department-meta{display:flex;gap:8px;align-items:center}
/* Brilhos em degradê da cor da marca nos cantos (var(--marca-verde) = cor principal, convertida pelo tema.js) */
.sidebar{background:radial-gradient(300px 200px at 0% 0%,color-mix(in srgb,var(--marca-verde,#007356) 16%,transparent),transparent 70%),var(--sidebar-bg)!important}
.dashboard-hero{background:radial-gradient(420px 240px at 100% 0%,color-mix(in srgb,var(--marca-verde,#007356) 30%,transparent),transparent 70%),var(--sidebar-bg)!important}
.workspace{background:radial-gradient(760px 420px at 100% 0%,color-mix(in srgb,var(--marca-verde,#007356) 6%,transparent),transparent 70%),var(--bg)!important;background-attachment:fixed!important}
/* Fundos escuros como no site: neutro + brilho da cor da marca (sem degradês escuro→marca, que dão castanho) */
.dashboard-greeting{background:radial-gradient(420px 240px at 100% 0%,color-mix(in srgb,var(--marca-verde,#007356) 30%,transparent),transparent 70%),var(--sidebar-bg)!important}
.attendance-hero,.employee-console,.kiosk-board{background:radial-gradient(520px 280px at 100% 0%,color-mix(in srgb,var(--marca-verde,#007356) 28%,transparent),transparent 70%),var(--sidebar-bg)!important}
.login-splash-overlay{background:radial-gradient(900px 520px at 50% 100%,color-mix(in srgb,var(--marca-verde,#007356) 32%,transparent),transparent 70%),var(--sidebar-bg)!important}
.login-brand-panel,.login-brand-panel.has-company-image{background:radial-gradient(640px 480px at 88% -8%,color-mix(in srgb,var(--marca-verde,#007356) 34%,transparent),transparent 70%),var(--sidebar-bg)!important}

/* Passkeys: lista nos dados de acesso / área do colaborador / gestão de acessos, e botão no ecrã de entrada */
.passkeys-bloco{border:1px solid var(--line,#e5e7eb);border-radius:14px;padding:14px 16px;display:grid;gap:8px}
.passkeys-topo{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap}
.passkeys-topo p{margin:4px 0 0}
.passkeys-lista{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.passkeys-lista li{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:12px;background:var(--surface-2,#f3f3f3)}
.passkeys-icone{width:34px;height:34px;flex:0 0 auto;display:grid;place-items:center;border-radius:10px;background:color-mix(in srgb,var(--marca-verde,#007356) 14%,transparent);color:var(--marca-verde,#007356)}
.passkeys-icone svg{width:18px;height:18px}
.passkeys-dados{flex:1;min-width:0;display:grid;gap:2px}
.passkeys-dados small{color:var(--muted,#64748b);font-size:12.5px}
/* Tema escuro: separação clara entre o menu lateral e a página (os escuros são neutros, por isso a diferença é de luminosidade) */
:root[data-theme="dark"]{--sidebar-bg:#121212}
:root[data-theme="dark"] .sidebar{border-right:1px solid rgba(255,255,255,.08)!important;box-shadow:8px 0 28px rgba(0,0,0,.35)!important}
:root[data-theme="dark"] .bottom-nav,:root[data-theme="dark"] #bottomNav{border-top:1px solid rgba(255,255,255,.08)}

/* ---- Telemóvel: leitura leve (menos caixas e linhas, mais conteúdo útil) ---- */
@media (max-width:640px){
  /* painéis sem moldura: o conteúdo usa a largura toda */
  .content .panel{border:0!important;box-shadow:none!important;background:transparent!important;padding-left:0!important;padding-right:0!important}
  .content .panel>.panel-header{padding-left:2px!important;padding-right:2px!important;border-bottom:0!important}
  .content .panel>.table-wrap,.content .panel>.table-wrap:has(>table[data-rotulada]){padding:0!important;border:0!important;box-shadow:none!important;background:transparent!important}
  /* cada registo: um cartão leve, sem moldura nem linhas entre campos */
  .table-wrap table.rt tr,.table-wrap table[data-rotulada] tr{border:0!important;box-shadow:none!important;background:var(--surface-2)!important;border-radius:14px!important;padding:12px 14px!important;margin:0 0 8px!important}
  .table-wrap table[data-rotulada] tbody{gap:8px!important}
  .table-wrap table.rt td,.table-wrap table[data-rotulada] td{border:0!important;padding:3px 0!important;font-size:14px;align-items:baseline}
  .table-wrap table.rt td::before,.table-wrap table[data-rotulada] td::before{font-size:11.5px!important;font-weight:600!important;letter-spacing:0!important;text-transform:none!important;color:var(--muted)!important;flex:0 0 auto!important;max-width:42%}
  /* primeira coluna (número, nome) como título do cartão */
  .table-wrap table[data-rotulada] td:first-child,.table-wrap table.rt td:first-child:not([data-kind]){display:block!important;text-align:left!important;font-size:15.5px;font-weight:800;padding:0 0 6px!important}
  .table-wrap table[data-rotulada] td:first-child::before,.table-wrap table.rt td:first-child:not([data-kind])::before{display:none!important}
  .table-wrap table[data-rotulada] td small,.table-wrap table.rt td small{display:block;font-size:12px;color:var(--muted)}
  /* ações no fim do cartão, sem separador */
  .table-wrap table.rt td[data-kind="actions"]{padding-top:8px!important}
}
/* ---- Telemóvel: conteúdo dos painéis e indicadores a ocupar o espaço ---- */
@media (max-width:640px){
  .content .panel>.panel-body{padding-left:0!important;padding-right:0!important}
  .dashboard-module{margin-bottom:4px!important}
  .dashboard-module>.panel-body{padding-top:10px!important;padding-bottom:6px!important}
  .dashboard-module-header{display:grid!important;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:6px 10px!important;padding-top:4px!important;padding-bottom:0!important}
  .dashboard-module-heading{min-width:0;gap:10px!important}
  .dashboard-module-heading h2{font-size:17px!important;margin:0}
  .dashboard-module-heading small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .dashboard-module-icon{width:38px!important;height:38px!important;flex:none}
  .dashboard-module-header-actions{display:flex!important;flex-direction:column;align-items:flex-end;gap:6px!important;margin:0!important}
  .dashboard-module-header-actions .badge{font-size:11px}
  .dashboard-module-open{padding:6px 12px!important;min-height:0!important}
  .dashboard-module-kpis,.content .kpi-grid{gap:8px!important;margin:0!important}
  .content .metric{padding:12px 14px!important;min-height:0!important;margin:0!important}
  .content .metric strong{font-size:26px!important;line-height:1.1!important;margin:2px 0!important}
  .content .metric span,.content .metric small{font-size:12.5px!important;line-height:1.3}
  .dashboard-section-head{margin:14px 2px 6px!important}
}
/* telemóvel: sem botões "Atualizar" (puxar a página para baixo atualiza); .so-computador para outros casos */
@media (max-width:640px){[data-refresh-tickets],[data-refresh-facility-requests],[data-asb="atualizar"],[data-obr="atualizar"],[data-obr="atualizar-centros"],[data-rec="atualizar"],.botao-atualizar,.so-computador{display:none!important}}
/* painéis sem conteúdo (ex.: estado dos kiosks quando ainda não há kiosks) não ocupam espaço */
.content .panel:empty{display:none!important}
/* demonstração: no computador, faixa no topo; no telemóvel, só uma etiqueta discreta no cabeçalho */
.etiqueta-demo{display:none}
@media (max-width:640px){

  .etiqueta-demo{display:inline-flex;align-items:center;gap:6px;height:26px;padding:0 10px;margin:0 2px;border-radius:999px;border:1px solid color-mix(in srgb,#f59e0b 45%,transparent);background:color-mix(in srgb,#f59e0b 12%,transparent);color:#b45309;font:inherit;font-size:12px;font-weight:700;letter-spacing:.02em;cursor:pointer;flex:none}
  :root[data-theme="dark"] .etiqueta-demo{color:#fbbf24}
  .etiqueta-demo-ponto{width:6px;height:6px;border-radius:50%;background:#f59e0b}
}
/* gráficos sem dados: frase curta */
.grafico-vazio{margin:4px 0;padding:12px 14px;border-radius:12px;background:var(--surface-2);color:var(--muted);font-size:13.5px;text-align:center}
/* ---- Telemóvel: cada módulo do Dashboard num bloco com fundo leve (separa os módulos); gráficos compactos ---- */
@media (max-width:640px){
  .content .panel.dashboard-module{background:var(--fundo-secao)!important;border-radius:18px!important;padding:14px 12px 12px!important;margin:0 0 12px!important}
  .dashboard-module .metric{background:var(--surface)!important;box-shadow:none!important;border:0!important}
  .dashboard-module-chart{margin-top:10px;padding:12px!important;border:0!important;border-radius:14px;background:var(--surface)}
  .dashboard-module-chart-head h3{font-size:14px!important}
  .dashboard-module-chart svg{max-height:150px;width:100%;height:auto}
  .dashboard-module-chart .grafico-vazio{background:var(--surface-2)}
}
/* ---- Telemóvel, todos os módulos: cada secção (painel) num bloco com fundo leve; cartões brancos lá dentro ---- */
@media (max-width:640px){
  .content .panel{background:var(--fundo-secao)!important;border-radius:18px!important;padding:14px 12px 12px!important;margin:0 0 12px!important}
  .content .panel .panel{background:transparent!important;padding:0!important;margin:0 0 8px!important;border-radius:0!important}
  .content .panel .table-wrap table.rt tr,.content .panel .table-wrap table[data-rotulada] tr{background:var(--surface)!important}
  .content .panel .metric{background:var(--surface)!important;box-shadow:none!important;border:0!important}
  .content .panel .empty-state{background:var(--surface);border-radius:12px;padding:16px!important}
}
.sessoes-bloco{margin-top:14px;padding-top:12px;border-top:1px solid var(--line);display:grid;gap:6px;justify-items:start}

/* etiquetas de estado nunca partem a palavra ("Nov/a"): ficam numa linha e não encolhem */
.badge{white-space:nowrap;flex-shrink:0}

/* campos de data/hora: no iPhone têm largura mínima própria e saíam da grelha (sobrepunham-se ao campo ao lado).
   Passam a ocupar só a coluna, com o valor alinhado à esquerda como os outros campos. */
.field,.form-grid>*,label.field,.toolbar-field,.filter-field{min-width:0}
input[type="date"],input[type="datetime-local"],input[type="month"],input[type="time"],input[type="week"]{min-width:0;max-width:100%;width:100%;box-sizing:border-box}
@supports (-webkit-touch-callout:none){
  /* iPhone: o texto do campo de data só fica centrado na vertical com altura fixa e line-height igual à altura */
  input[type="date"],input[type="datetime-local"],input[type="month"],input[type="time"],input[type="week"]{-webkit-appearance:none;appearance:none;display:block;height:44px!important;min-height:44px!important;padding-top:0!important;padding-bottom:0!important;line-height:44px!important}
  input[type="date"]::-webkit-date-and-time-value,input[type="datetime-local"]::-webkit-date-and-time-value,input[type="month"]::-webkit-date-and-time-value,input[type="time"]::-webkit-date-and-time-value{line-height:44px;height:44px;padding:0}
}
input[type="date"]::-webkit-date-and-time-value,input[type="datetime-local"]::-webkit-date-and-time-value,input[type="month"]::-webkit-date-and-time-value,input[type="time"]::-webkit-date-and-time-value{text-align:left;margin:0}
/* telemóvel: campos com largura mínima fixa (filtros e edição em linha) passam a caber no ecrã */
@media (max-width:640px){
  .inline-edit-input,.asb-ff-inline .asb-select,.docs-anexos-filtros select,.docs-anexos-filtros input,.pl-filtros input,.pl-filtros select,.pm-cond textarea{min-width:0!important;max-width:100%;width:100%}
  .rec-periodo select:first-child{min-width:0!important}
}
/* filtros de período sem "Aplicar" (aplicam-se ao mudar): o atalho Hoje / Mês corrente ocupa a linha toda no telemóvel */
@media (max-width:640px){.attendance-period-filter>button,.time-bank-filter>button{grid-column:1 / -1}}
/* telemóvel, em todos os módulos e páginas: menos margem lateral. Antes somavam-se a margem da página (16px), a do painel
   (12px) e a de blocos/tabelas dentro do painel; agora 10px + 10px e nada por dentro, para os cartões usarem a largura. */
@media (max-width:640px){
  .content{padding-left:max(10px,env(safe-area-inset-left))!important;padding-right:max(10px,env(safe-area-inset-right))!important}
  .content .panel,.content .panel.dashboard-module{padding-left:10px!important;padding-right:10px!important}
  .content .panel .panel{padding-left:0!important;padding-right:0!important}
  .content .panel .panel-body,.content .panel .table-wrap,.content .table-wrap:has(>table[data-rotulada]),.content .panel .detail-list,.content .panel .form-grid:not(.fw2s){padding-left:0!important;padding-right:0!important;margin-left:0!important;margin-right:0!important}
  .content .panel>.panel-header{padding-left:2px!important;padding-right:2px!important}
  .table-wrap table.rt tr,.table-wrap table[data-rotulada] tr{padding:11px 12px!important}
  .table-wrap table.rt[data-compacta] tbody tr:not(.aberto){padding:12px 34px 12px 12px!important}
  .content .metric{padding:11px 12px!important}
  .content .kpi-grid,.content .grid{gap:8px!important}
}

/* fundo das secções no telemóvel: cinza-azulado pastel neutro (o tom da marca a 5% dava um laranja "morto");
   os cartões brancos destacam-se sobre ele. Escuro: um pouco mais claro do que o fundo da página. */
:root{--fundo-secao:#eef2f7}
:root[data-theme="dark"]{--fundo-secao:#1b2429}
@media (max-width:640px){
  /* conteúdo direto das secções (grelhas de indicadores, listas, legendas) sem margem lateral própria */
  .content .panel>div:not(.panel-header),.content .panel>section,.content .panel>form{padding-left:0!important;padding-right:0!important;margin-left:0!important;margin-right:0!important}
}

/* referência a www.etryit.com: discreta no login e no menu; em destaque na demonstração */
.assinatura-etryit{margin:18px 0 0;text-align:center;font-size:12px;color:var(--muted)}.assinatura-etryit a{color:inherit;text-decoration:none;font-weight:600}.assinatura-etryit a:hover{text-decoration:underline}
.sidebar-etryit{display:block;text-align:center;font-size:11.5px;color:var(--muted);text-decoration:none;padding:6px 0 0;opacity:.85}.sidebar-etryit:hover{opacity:1;text-decoration:underline}


.demo-convite{display:grid;gap:2px;margin:12px 0 4px;padding:12px 14px;border-radius:12px;background:color-mix(in srgb,var(--brand,#e8812f) 12%,var(--surface));color:var(--text);text-decoration:none}
.demo-convite strong{color:var(--brand,#e8812f)}.demo-convite span{font-size:13.5px}
@media (max-width:640px){.faixa-demo-site{display:none}}
/* sem zoom com duplo toque (o iPhone ampliava a página toda); o zoom com dois dedos continua disponível */
html,body{touch-action:manipulation}

/* etry-svg-omissao: tamanho por omissão dos ícones SVG dentro de botões e ligações. Especificidade zero (:where),
   por isso qualquer regra própria de um módulo prevalece; evita ícones gigantes quando falta essa regra. */
:where(button,a,label,summary,[role="button"],.primary-action,.secondary-action,.danger-action,.ghost-action)>svg:where([viewBox="0 0 24 24"]){width:max(16px,1.15em);height:max(16px,1.15em);flex:0 0 auto;vertical-align:-.22em}
:where(.primary-action,.secondary-action,.danger-action,.ghost-action):where(:has(>svg)){display:inline-flex;align-items:center;justify-content:center;gap:6px}

/* etry-sidebar-scroll: no computador a barra lateral ocupa a altura do ecrã e o menu tem scroll próprio, para os
   submenus dos últimos grupos ficarem visíveis sem mexer na página (antes crescia e subia com a página) */
@media (min-width:781px){
  #appShell .sidebar{height:100vh;height:100dvh;max-height:100dvh;min-height:0;overflow:hidden}
  #appShell .sidebar .nav{flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain}
}

/* botão das notificações no telemóvel no fim da lista do sino */
.notifications-push{display:flex;justify-content:center;padding-top:12px;margin-top:8px;border-top:1px solid var(--line)}

/* etry-kpi-colunas: regra transversal dos indicadores (KPI) em todos os módulos e páginas: no telemóvel sempre
   2 colunas; no computador tantas quantas couberem (mínimo ~170px cada). Substitui as regras antigas que no
   telemóvel passavam a 1 coluna. */
.kpi-grid,.kpi-grid.kpi-grid-compact,.dashboard-kpi-grid,.analytics-grid,.rs-kpis{grid-template-columns:repeat(auto-fit,minmax(170px,1fr))!important}
@media (max-width:780px){
  .kpi-grid,.kpi-grid.kpi-grid-compact,.dashboard-kpi-grid,.analytics-grid,.rs-kpis{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:10px!important}
}

/* menu lateral: só scroll vertical, nunca horizontal (em todos os tamanhos) */
#appShell .sidebar .nav{overflow-x:hidden!important}
#appShell .sidebar .nav *{max-width:100%}


/* cartões das Configurações: ocupam a largura disponível (um cartão sozinho fica a toda a largura) */
.grid.adm-cartoes{grid-template-columns:repeat(auto-fit,minmax(min(100%,440px),1fr))!important;gap:14px}

/* Navegação desktop: controlos junto ao conteúdo, sempre visíveis com o menu recolhido. */
@media(min-width:781px){
 .topbar>.sidebar-collapse-toggle{display:grid;place-items:center;flex:0 0 44px;width:44px;height:44px;min-width:44px;min-height:44px;margin:0;padding:0;border:1px solid var(--line);border-radius:10px;background:var(--surface);color:var(--text);cursor:pointer}
 .topbar>.sidebar-collapse-toggle:hover{background:var(--surface-2);color:var(--text)}
 .topbar>.sidebar-collapse-toggle:focus-visible{outline:2px solid var(--brand);outline-offset:2px}
 .workspace-area-slot{flex:0 0 auto;min-width:0;margin-left:auto}
 .workspace-area-switch{display:flex;align-items:center;gap:2px;padding:3px;border:1px solid var(--line);border-radius:12px;background:var(--surface)}
 .workspace-area-switch button{display:grid;place-items:center;flex:0 0 44px;width:44px;height:44px;min-width:44px;min-height:44px;padding:0;border:0;border-radius:8px;background:transparent;color:var(--muted);cursor:pointer}
 .workspace-area-switch button svg{width:20px;height:20px;flex:0 0 auto}
 .workspace-area-switch button:hover{background:var(--surface-2);color:var(--text)}
 .workspace-area-switch button[aria-pressed="true"]{background:var(--action-bg,var(--brand));color:var(--action-text,#202020)}
 .workspace-area-switch button:focus-visible{outline:2px solid var(--brand);outline-offset:2px}
 .topbar>.workspace-area-slot+.user-chip{margin-left:0}
 #appShell.sidebar-collapsed .sidebar .brand{display:none}
}
@media(max-width:780px){.workspace-area-slot{display:none}}

/* Desktop: grupos fechados não reservam espaço para os seus conteúdos. */
@media(min-width:781px){
 #appShell .sidebar .nav-group:not(.open)>.nav-group-items{display:none!important;padding:0}
 #appShell:not(.sidebar-collapsed) .sidebar .nav{align-content:start;grid-auto-rows:max-content;gap:6px}
 #appShell:not(.sidebar-collapsed) .sidebar .nav-group{margin:0}
}

/* source: acesso.css */
/* Ecrã de entrada (login) — marca v2.1. Ficheiro próprio: nada aqui depende das regras antigas .login-screen/.login-card.
   Markup em index.html (#loginScreen.acesso) e brandPanelHtml("acesso") no app.js; animação em startLoginSplash().
   Telemóvel: cabeçalho da marca + cartão com o formulário. Desktop (>900px): painel da marca à esquerda, formulário à direita. */
.acesso{
  --a-fundo:var(--marca-floresta,#06251f);
  --a-menta:var(--marca-menta,#2fd294);
  --a-menta-clara:var(--marca-menta-clara,#9af0cb);
  --a-verde:var(--marca-verde,#007356);
  --a-verde-digital:var(--marca-verde-digital,#00a86b);
  --a-sup:var(--surface,#fff);
  --a-sup-2:color-mix(in srgb,var(--surface-2,#f1f4f3) 100%,transparent);
  --a-texto:var(--text,#101a17);
  --a-suave:var(--muted,#5c6b66);
  --a-linha:var(--line,#dde4e1);
  --a-ease:cubic-bezier(.2,.8,.2,1);
  min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;background:var(--a-sup);color:var(--a-texto);
  font-family:var(--marca-fonte-texto,'Inter',system-ui,sans-serif);position:relative;isolation:isolate
}
.acesso[hidden]{display:none!important}
html:has(#loginScreen.acesso:not([hidden])){background:linear-gradient(180deg,var(--marca-floresta,#06251f) 50%,var(--surface,#fff) 50%)!important;border-top:0!important;height:auto!important;overflow:auto!important}
html:has(#loginScreen.acesso:not([hidden])) body{background:transparent!important;overflow:visible!important}

/* ---------- cabeçalho da marca ---------- */
.acesso-marca{position:relative;z-index:2;background:var(--a-fundo);color:#fff;overflow:hidden;
  padding:calc(env(safe-area-inset-top,0px) + 28px) 24px 52px;display:flex;flex-direction:column;align-items:center;gap:18px}
.acesso-marca-luz{position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(90% 70% at 85% 110%,color-mix(in srgb,var(--a-verde-digital) 30%,transparent),transparent 65%),
             radial-gradient(60% 50% at 10% -10%,color-mix(in srgb,var(--a-menta) 10%,transparent),transparent 70%)}
.acesso-identidade{position:relative;display:flex;flex-direction:column;align-items:center;text-align:center;will-change:transform}
.acesso-simbolo{width:60px;height:60px;display:block}
.acesso-simbolo img{width:100%;height:100%;display:block}
.acesso-nome{margin:12px 0 0;font:800 30px/1 var(--marca-fonte-titulos,'Plus Jakarta Sans',sans-serif);letter-spacing:-.025em;color:#fff}
.acesso-nome .e-modular{fill:var(--a-menta)}
.acesso-assinatura{margin:9px 0 0;font:600 10.5px/1.2 var(--marca-fonte-texto,'Inter',sans-serif);letter-spacing:.16em;text-transform:uppercase;color:var(--a-menta-clara)}
.acesso-org{position:relative;margin:0;display:inline-flex;align-items:center;gap:8px;padding:6px 12px 6px 6px;border-radius:999px;
  background:#ffffff12;border:1px solid #ffffff1a;font:600 12px/1 var(--marca-fonte-texto,'Inter',sans-serif);color:#ffffffd0}
.acesso-org-brasao{width:22px;height:22px;display:grid;place-items:center;border-radius:50%;background:#ffffff14;font-size:9px;overflow:hidden}
.acesso-org-brasao img{width:100%;height:100%;object-fit:contain}
.acesso-destaque{display:none}

/* ---------- corpo e formulário ---------- */
.acesso-corpo{position:relative;z-index:3;flex:1 0 auto;display:flex;flex-direction:column;margin-top:-26px;
  background:var(--a-sup);border-radius:26px 26px 0 0;padding:28px 20px calc(18px + env(safe-area-inset-bottom,0px))}
.acesso-form{width:100%;max-width:420px;margin:0 auto;display:flex;flex-direction:column;gap:18px}
.acesso-titulo h2{margin:0;font:800 26px/1.15 var(--marca-fonte-titulos,'Plus Jakarta Sans',sans-serif);letter-spacing:-.02em;color:var(--a-texto)}
.acesso-titulo p{margin:6px 0 0;font-size:14px;line-height:1.45;color:var(--a-suave)}
.acesso-segmentos{display:grid;grid-template-columns:1fr 1fr;gap:4px;padding:4px;border-radius:13px;background:var(--a-sup-2);border:1px solid var(--a-linha)}
.acesso-segmentos button{appearance:none;border:0;background:transparent;height:40px;border-radius:10px;font:600 14px/1 var(--marca-fonte-texto,'Inter',sans-serif);
  color:var(--a-suave);cursor:pointer;transition:background-color .2s var(--a-ease),color .2s var(--a-ease),box-shadow .2s var(--a-ease)}
.acesso-segmentos button.active{background:var(--a-sup);color:var(--a-texto);box-shadow:0 1px 2px #0000001a,0 2px 8px #0000000f}
.acesso-campos{display:flex;flex-direction:column;gap:14px}
.acesso-campos[hidden]{display:none}
.acesso-campo{display:flex;flex-direction:column;gap:7px}
.acesso-campo>span{font:600 13px/1.2 var(--marca-fonte-texto,'Inter',sans-serif);color:var(--a-texto)}
.acesso-campo input{height:50px;width:100%;border-radius:12px;border:1px solid var(--a-linha);background:var(--a-sup);color:var(--a-texto);
  padding:0 14px;font:400 16px/1 var(--marca-fonte-texto,'Inter',sans-serif);box-shadow:none;outline:none;transition:border-color .15s,box-shadow .15s}
.acesso-campo input::placeholder{color:color-mix(in srgb,var(--a-suave) 65%,transparent)}
.acesso-campo input:focus{border-color:var(--a-verde-digital);box-shadow:0 0 0 4px color-mix(in srgb,var(--a-verde-digital) 18%,transparent)}
.acesso-lembrar{display:flex;align-items:center;gap:10px;font-size:14px;color:var(--a-suave);cursor:pointer;min-height:24px}
.acesso-lembrar input{width:20px;height:20px;margin:0;accent-color:var(--a-verde);flex:0 0 auto}
.acesso-botao{appearance:none;border:0;height:52px;border-radius:14px;background:var(--a-verde);color:#fff;cursor:pointer;
  font:700 16px/1 var(--marca-fonte-texto,'Inter',sans-serif);letter-spacing:.01em;box-shadow:0 8px 20px -10px color-mix(in srgb,var(--a-verde) 70%,transparent);
  transition:background-color .15s,transform .1s}
.acesso-botao:hover{background:color-mix(in srgb,var(--a-verde) 88%,#000)}
.acesso-botao:active{transform:scale(.99)}
.acesso-botao:disabled{opacity:.6;cursor:progress}
.acesso :is(button,input):focus-visible{outline:3px solid color-mix(in srgb,var(--a-verde-digital) 55%,transparent);outline-offset:2px}
.acesso .login-alert{margin:0}
.acesso-rodape{margin-top:auto;padding-top:28px;text-align:center}
.acesso-privacidade{appearance:none;border:0;background:none;padding:8px;font-size:13px;color:var(--a-suave);text-decoration:underline;text-underline-offset:3px;cursor:pointer}

/* ---------- desktop ---------- */
@media (min-width:901px){
  .acesso{flex-direction:row;min-height:100vh}
  html:has(#loginScreen.acesso:not([hidden])){background:var(--surface,#fff)!important}
  .acesso-marca{flex:1 1 56%;align-items:flex-start;justify-content:space-between;gap:40px;padding:48px clamp(40px,5vw,72px);min-height:100vh}
  .acesso-identidade{align-items:flex-start;text-align:left}
  .acesso-simbolo{width:56px;height:56px}
  .acesso-nome{font-size:34px;margin-top:16px}
  .acesso-destaque{display:grid;gap:24px;max-width:560px;position:relative}
  .acesso-frase{margin:0;font:700 clamp(26px,2.6vw,36px)/1.2 var(--marca-fonte-titulos,'Plus Jakarta Sans',sans-serif);letter-spacing:-.02em;color:#fff;max-width:20ch;text-wrap:balance}
  .acesso-modulos{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
  .acesso-modulos li{display:flex;align-items:center;gap:12px;padding:13px 14px;border-radius:14px;background:#ffffff0b;border:1px solid #ffffff14}
  .acesso-modulos svg{width:34px;height:34px;flex:0 0 auto}
  .acesso-modulos strong{display:block;font-size:14px;font-weight:600;color:#fff}
  .acesso-modulos small{display:block;font-size:12px;color:#ffffffa0;margin-top:2px}
  .acesso-corpo{flex:0 0 min(520px,44%);margin:0;border-radius:0;justify-content:center;padding:48px clamp(32px,4vw,64px)}
  .acesso-form{margin:auto 0;max-width:400px;align-self:center}
  .acesso-rodape{margin-top:0;padding-top:20px}
}
@media (min-width:901px) and (max-width:1180px){.acesso-modulos{grid-template-columns:minmax(0,1fr)}}

/* ---------- entrada ---------- */
/* Browser: aparecimento suave. App instalada: a cortina floresta cobre o ecrã com a identidade ao centro (igual à imagem de
   arranque do iOS) e recolhe até ao cabeçalho enquanto a identidade sobe para o seu lugar (startLoginSplash). */
@keyframes acessoSobe{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
.acesso.acesso-entra .acesso-identidade{animation:acessoSobe .55s var(--a-ease) both}
.acesso.acesso-entra .acesso-org,.acesso.acesso-entra .acesso-destaque{animation:acessoSobe .55s var(--a-ease) .08s both}
.acesso.acesso-entra .acesso-form>*{animation:acessoSobe .5s var(--a-ease) both}
.acesso.acesso-entra .acesso-form>*:nth-child(2){animation-delay:.05s}
.acesso.acesso-entra .acesso-form>*:nth-child(n+3){animation-delay:.1s}
.acesso-cortina{position:fixed;inset:0;z-index:2;background:var(--marca-floresta,#06251f);pointer-events:none;will-change:clip-path}
.acesso.acesso-intro .acesso-marca{background:transparent}
.acesso.acesso-intro .acesso-marca-luz,.acesso.acesso-intro .acesso-assinatura,.acesso.acesso-intro .acesso-org{opacity:0}
.acesso.acesso-intro .acesso-corpo{opacity:0;transform:translateY(28px)}
.acesso.acesso-intro-corre .acesso-marca-luz,.acesso.acesso-intro-corre .acesso-assinatura,.acesso.acesso-intro-corre .acesso-org{opacity:1;transition:opacity .5s var(--a-ease) .35s}
.acesso.acesso-intro-corre .acesso-corpo{opacity:1;transform:none;transition:opacity .55s var(--a-ease) .3s,transform .7s var(--a-ease) .3s}
@media (prefers-reduced-motion:reduce){
  .acesso *,.acesso-cortina{animation:none!important;transition:none!important}
}

/* iOS 26 (app instalada): a zona da barra de estado ganha a cor do fundo do html ou de um elemento fixo no topo. Com um
   degradê no html o sistema desenhava um esbatido claro; fica uma cor sólida e uma faixa fixa da cor da marca. */
@media (max-width:900px){
  html:has(#loginScreen.acesso:not([hidden])){background:var(--marca-floresta,#06251f)!important;background-color:var(--marca-floresta,#06251f)!important}
  .acesso::before{content:"";position:fixed;top:0;left:0;right:0;height:env(safe-area-inset-top,0px);background:var(--marca-floresta,#06251f);z-index:20;pointer-events:none}
  .acesso{background:var(--marca-floresta,#06251f)}
}

/* Desktop sem a lista de modulos: a identidade fica centrada na vertical, maior, e a organizacao no fundo */
@media (min-width:901px){
  .acesso-identidade{margin:auto 0}
  .acesso-simbolo{width:72px;height:72px}
  .acesso-nome{font-size:44px;margin-top:20px}
  .acesso-assinatura{font-size:12px;margin-top:12px}
}

/* Desktop: painel da marca com ilustracao (camadas isometricas a flutuar), cartao de vidro com a hora real e frase */
.acesso-arte,.acesso-frase-2{display:none}
@media (min-width:901px){
  .acesso-marca{display:grid!important;grid-template-columns:minmax(0,1fr);grid-template-rows:auto 1fr auto auto;align-items:start;justify-items:start;gap:28px}
  .acesso-marca::before{content:"";position:absolute;inset:0;pointer-events:none;opacity:.55;
    background-image:radial-gradient(circle,#ffffff1f 1px,transparent 1.5px);background-size:22px 22px;
    -webkit-mask-image:radial-gradient(70% 60% at 60% 45%,#000 20%,transparent 75%);mask-image:radial-gradient(70% 60% at 60% 45%,#000 20%,transparent 75%)}
  .acesso-identidade{margin:0!important;flex-direction:row!important;align-items:center!important;gap:14px;text-align:left}
  .acesso-simbolo{width:46px!important;height:46px!important}
  .acesso-identidade .acesso-nome{font-size:26px!important;margin:0!important}
  .acesso-identidade .acesso-assinatura{display:none}
  .acesso-arte{display:block;position:relative;justify-self:center;align-self:center;width:min(100%,520px)}
  .acesso-arte-camadas{width:100%;height:auto;display:block;overflow:visible}
  .ac-camada{animation:acFlutua 6s ease-in-out infinite}
  .ac-c2{animation-delay:-2s}.ac-c3{animation-delay:-4s}
  @keyframes acFlutua{0%,100%{transform:translateY(0)}50%{transform:translateY(-9px)}}
  .acesso-arte-cartao{position:absolute;right:-4%;top:6%;display:flex;align-items:center;gap:12px;padding:14px 18px;border-radius:16px;
    background:color-mix(in srgb,#ffffff 9%,transparent);border:1px solid #ffffff24;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
    box-shadow:0 18px 40px -18px #000a;color:#fff;animation:acFlutua 7s ease-in-out infinite -1s}
  .acesso-arte-cartao strong{display:block;font:800 26px/1 var(--marca-fonte-titulos,'Plus Jakarta Sans',sans-serif);letter-spacing:-.02em;font-variant-numeric:tabular-nums}
  .acesso-arte-cartao small{display:block;margin-top:5px;font-size:12px;color:#ffffffb0}
  .acesso-arte-cartao small::first-letter{text-transform:uppercase}
  .acesso-arte-ponto{width:10px;height:10px;border-radius:50%;background:var(--marca-menta,#2fd294);box-shadow:0 0 0 4px #2fd29433;flex:0 0 auto}
  .acesso-frase-2{display:block;position:relative;margin:0;font:700 clamp(28px,2.6vw,40px)/1.15 var(--marca-fonte-titulos,'Plus Jakarta Sans',sans-serif);letter-spacing:-.025em;color:#fff}
  .acesso-org{align-self:end}
}
@media (min-width:901px) and (prefers-reduced-motion:reduce){.ac-camada,.acesso-arte-cartao{animation:none}}

/* Desktop v2: grelha do painel - identidade | hora / frase | ilustracao / organizacao | ligacao segura */
.acesso-hora,.acesso-seguro,.acesso-frase-bloco{display:none}
@media (min-width:901px){
  .acesso-marca{grid-template-columns:minmax(0,.95fr) minmax(0,1.05fr)!important;grid-template-rows:auto 1fr auto!important;
    grid-template-areas:"ident hora" "frase arte" "org seguro";column-gap:clamp(24px,3vw,48px)!important;row-gap:24px!important;align-items:center!important}
  .acesso-identidade{grid-area:ident;align-self:start}
  .acesso-hora{grid-area:hora;justify-self:end;align-self:start;display:flex;align-items:center;gap:12px;padding:10px 16px 10px 14px;border-radius:14px;
    background:color-mix(in srgb,#ffffff 8%,transparent);border:1px solid #ffffff1f;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);color:#fff;position:relative}
  .acesso-hora strong{display:block;font:800 20px/1 var(--marca-fonte-titulos,'Plus Jakarta Sans',sans-serif);letter-spacing:-.01em;font-variant-numeric:tabular-nums}
  .acesso-hora small{display:block;margin-top:4px;font-size:11.5px;color:#ffffffad}
  .acesso-hora small::first-letter{text-transform:uppercase}
  .acesso-frase-bloco{grid-area:frase;display:grid;gap:14px;align-self:center;position:relative}
  .acesso-frase-2{font-size:clamp(30px,3vw,46px)!important;line-height:1.08!important}
  .acesso-frase-sub{margin:0;font-size:15px;line-height:1.5;color:#ffffffb3;max-width:34ch}
  .acesso-arte{grid-area:arte;justify-self:center;align-self:center;width:min(100%,460px)!important}
  .acesso-org{grid-area:org;justify-self:start;align-self:end}
  .acesso-seguro{grid-area:seguro;justify-self:end;align-self:end;display:flex;align-items:center;gap:7px;margin:0;font-size:12px;color:#ffffff8c;position:relative}
  .acesso-seguro svg{width:14px;height:14px}
}
/* computador estreito: ilustracao em cima e frase por baixo */
@media (min-width:901px) and (max-width:1200px){
  .acesso-marca{grid-template-columns:minmax(0,1fr) auto!important;grid-template-rows:auto 1fr auto auto!important;
    grid-template-areas:"ident hora" "arte arte" "frase frase" "org seguro"}
  .acesso-arte{width:min(100%,380px)!important}
}

@media (min-width:901px){
  /* frase em 2 linhas: tamanho ajustado a largura da coluna */
  .acesso-frase-2{font-size:clamp(28px,2.5vw,40px)!important}
}

/* Desktop v3: assinatura de volta, hora como etiqueta por cima da frase e separacao em onda entre o painel e o formulario */
.acesso-identidade-texto{display:contents}
@media (min-width:901px){
  .acesso-identidade-texto{display:grid;gap:6px}
  .acesso-identidade .acesso-assinatura{display:block!important;margin:0!important;font-size:10.5px!important;letter-spacing:.18em}
  .acesso-marca{grid-template-areas:"ident ident" "frase arte" "org seguro"!important;padding-right:calc(clamp(40px,5vw,72px) + 70px)!important}
  .acesso-hora{grid-area:auto!important;justify-self:start!important;align-self:auto!important;display:inline-flex!important;align-items:center;gap:10px;margin:0 0 6px;
    padding:8px 14px 8px 12px!important;border-radius:999px!important;background:#ffffff12!important;border:1px solid #ffffff1f!important;backdrop-filter:none!important;width:max-content}
  .acesso-hora strong{font:700 14px/1 var(--marca-fonte-texto,'Inter',sans-serif)!important;letter-spacing:0!important}
  .acesso-hora small{margin:0!important;font-size:13px!important;color:#ffffffb8!important}
  .acesso-hora-sep{width:3px;height:3px;border-radius:50%;background:#ffffff66}
  .acesso-hora .acesso-arte-ponto{width:8px;height:8px;box-shadow:0 0 0 3px #2fd29433}
  /* onda: o formulario "entra" no painel verde com uma curva suave em vez de uma linha reta */
  .acesso-corpo{position:relative;overflow:visible}
  .acesso-corpo::before{content:"";position:absolute;top:0;bottom:0;left:-139px;width:140px;background:var(--a-sup);pointer-events:none;
    -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 140 1000' preserveAspectRatio='none'%3E%3Cpath d='M140 0H96C38 120 18 230 62 370c46 146 70 250 12 400C46 850 40 930 70 1000h70Z'/%3E%3C/svg%3E") no-repeat 0 0/100% 100%;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 140 1000' preserveAspectRatio='none'%3E%3Cpath d='M140 0H96C38 120 18 230 62 370c46 146 70 250 12 400C46 850 40 930 70 1000h70Z'/%3E%3C/svg%3E") no-repeat 0 0/100% 100%}
}
@media (min-width:901px) and (max-width:1200px){
  .acesso-marca{grid-template-areas:"ident ident" "arte arte" "frase frase" "org seguro"!important}
}
@media (min-width:1201px){
  .acesso-marca{grid-template-columns:minmax(0,1.2fr) minmax(0,.8fr)!important}
  .acesso-arte{width:min(100%,400px)!important}
}

/* Desktop v4: hora por baixo da frase; separacao em quadrados (como os modulos do "e") em vez da onda */
@media (min-width:901px){
  .acesso-hora{margin:10px 0 0!important}
  .acesso-corpo::before{left:-175px!important;width:176px!important;
    -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 176 640'%3E%3Crect x='144' y='0' width='32' height='640'/%3E%3Crect x='116' y='4' width='24' height='24' rx='6'/%3E%3Crect x='116' y='36' width='24' height='24' rx='6'/%3E%3Crect x='116' y='68' width='24' height='24' rx='6'/%3E%3Crect x='116' y='100' width='24' height='24' rx='6'/%3E%3Crect x='116' y='132' width='24' height='24' rx='6'/%3E%3Crect x='116' y='164' width='24' height='24' rx='6'/%3E%3Crect x='116' y='196' width='24' height='24' rx='6'/%3E%3Crect x='116' y='228' width='24' height='24' rx='6'/%3E%3Crect x='116' y='260' width='24' height='24' rx='6'/%3E%3Crect x='116' y='292' width='24' height='24' rx='6'/%3E%3Crect x='116' y='324' width='24' height='24' rx='6'/%3E%3Crect x='116' y='356' width='24' height='24' rx='6'/%3E%3Crect x='116' y='388' width='24' height='24' rx='6'/%3E%3Crect x='116' y='420' width='24' height='24' rx='6'/%3E%3Crect x='116' y='452' width='24' height='24' rx='6'/%3E%3Crect x='116' y='484' width='24' height='24' rx='6'/%3E%3Crect x='116' y='516' width='24' height='24' rx='6'/%3E%3Crect x='116' y='580' width='24' height='24' rx='6'/%3E%3Crect x='116' y='612' width='24' height='24' rx='6'/%3E%3Crect x='84' y='36' width='24' height='24' rx='6'/%3E%3Crect x='84' y='100' width='24' height='24' rx='6'/%3E%3Crect x='84' y='132' width='24' height='24' rx='6'/%3E%3Crect x='84' y='164' width='24' height='24' rx='6'/%3E%3Crect x='84' y='196' width='24' height='24' rx='6'/%3E%3Crect x='84' y='260' width='24' height='24' rx='6'/%3E%3Crect x='84' y='292' width='24' height='24' rx='6'/%3E%3Crect x='84' y='356' width='24' height='24' rx='6'/%3E%3Crect x='84' y='388' width='24' height='24' rx='6'/%3E%3Crect x='84' y='420' width='24' height='24' rx='6'/%3E%3Crect x='84' y='452' width='24' height='24' rx='6'/%3E%3Crect x='84' y='484' width='24' height='24' rx='6'/%3E%3Crect x='84' y='548' width='24' height='24' rx='6'/%3E%3Crect x='84' y='580' width='24' height='24' rx='6'/%3E%3Crect x='84' y='612' width='24' height='24' rx='6'/%3E%3Crect x='52' y='36' width='24' height='24' rx='6'/%3E%3Crect x='52' y='132' width='24' height='24' rx='6'/%3E%3Crect x='52' y='292' width='24' height='24' rx='6'/%3E%3Crect x='52' y='356' width='24' height='24' rx='6'/%3E%3Crect x='52' y='452' width='24' height='24' rx='6'/%3E%3Crect x='52' y='516' width='24' height='24' rx='6'/%3E%3Crect x='20' y='324' width='24' height='24' rx='6'/%3E%3Crect x='20' y='580' width='24' height='24' rx='6'/%3E%3C/svg%3E") repeat-y 0 0/176px 640px!important;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 176 640'%3E%3Crect x='144' y='0' width='32' height='640'/%3E%3Crect x='116' y='4' width='24' height='24' rx='6'/%3E%3Crect x='116' y='36' width='24' height='24' rx='6'/%3E%3Crect x='116' y='68' width='24' height='24' rx='6'/%3E%3Crect x='116' y='100' width='24' height='24' rx='6'/%3E%3Crect x='116' y='132' width='24' height='24' rx='6'/%3E%3Crect x='116' y='164' width='24' height='24' rx='6'/%3E%3Crect x='116' y='196' width='24' height='24' rx='6'/%3E%3Crect x='116' y='228' width='24' height='24' rx='6'/%3E%3Crect x='116' y='260' width='24' height='24' rx='6'/%3E%3Crect x='116' y='292' width='24' height='24' rx='6'/%3E%3Crect x='116' y='324' width='24' height='24' rx='6'/%3E%3Crect x='116' y='356' width='24' height='24' rx='6'/%3E%3Crect x='116' y='388' width='24' height='24' rx='6'/%3E%3Crect x='116' y='420' width='24' height='24' rx='6'/%3E%3Crect x='116' y='452' width='24' height='24' rx='6'/%3E%3Crect x='116' y='484' width='24' height='24' rx='6'/%3E%3Crect x='116' y='516' width='24' height='24' rx='6'/%3E%3Crect x='116' y='580' width='24' height='24' rx='6'/%3E%3Crect x='116' y='612' width='24' height='24' rx='6'/%3E%3Crect x='84' y='36' width='24' height='24' rx='6'/%3E%3Crect x='84' y='100' width='24' height='24' rx='6'/%3E%3Crect x='84' y='132' width='24' height='24' rx='6'/%3E%3Crect x='84' y='164' width='24' height='24' rx='6'/%3E%3Crect x='84' y='196' width='24' height='24' rx='6'/%3E%3Crect x='84' y='260' width='24' height='24' rx='6'/%3E%3Crect x='84' y='292' width='24' height='24' rx='6'/%3E%3Crect x='84' y='356' width='24' height='24' rx='6'/%3E%3Crect x='84' y='388' width='24' height='24' rx='6'/%3E%3Crect x='84' y='420' width='24' height='24' rx='6'/%3E%3Crect x='84' y='452' width='24' height='24' rx='6'/%3E%3Crect x='84' y='484' width='24' height='24' rx='6'/%3E%3Crect x='84' y='548' width='24' height='24' rx='6'/%3E%3Crect x='84' y='580' width='24' height='24' rx='6'/%3E%3Crect x='84' y='612' width='24' height='24' rx='6'/%3E%3Crect x='52' y='36' width='24' height='24' rx='6'/%3E%3Crect x='52' y='132' width='24' height='24' rx='6'/%3E%3Crect x='52' y='292' width='24' height='24' rx='6'/%3E%3Crect x='52' y='356' width='24' height='24' rx='6'/%3E%3Crect x='52' y='452' width='24' height='24' rx='6'/%3E%3Crect x='52' y='516' width='24' height='24' rx='6'/%3E%3Crect x='20' y='324' width='24' height='24' rx='6'/%3E%3Crect x='20' y='580' width='24' height='24' rx='6'/%3E%3C/svg%3E") repeat-y 0 0/176px 640px!important}
  .acesso-marca{padding-right:calc(clamp(40px,5vw,72px) + 110px)!important}
}
@media (min-width:901px){.acesso-corpo::after{content:"";position:absolute;top:0;bottom:0;left:-3px;width:4px;background:var(--a-sup);pointer-events:none}}

/* Desktop v5: separacao sobria - o formulario e um bloco com cantos arredondados (como os modulos do simbolo),
   ligeiramente sobreposto ao painel verde; sem padrao de quadrados */
@media (min-width:901px){
  .acesso-corpo::before,.acesso-corpo::after{display:none!important;content:none!important}
  .acesso-corpo{margin-left:-44px!important;border-radius:44px 0 0 44px!important;z-index:3;
    box-shadow:-24px 0 60px -30px #00000066,-1px 0 0 #ffffff14!important}
  .acesso-marca{padding-right:calc(clamp(40px,5vw,72px) + 44px)!important}
}

/* "Esqueceu-se do PIN/da palavra-passe?" e formulario de recuperacao */
.acesso-esqueci{appearance:none;border:0;background:none;align-self:center;padding:6px 8px;font:600 14px/1.2 var(--marca-fonte-texto,'Inter',sans-serif);color:var(--a-verde);cursor:pointer;border-radius:8px}
.acesso-esqueci:hover{text-decoration:underline;text-underline-offset:3px}
[data-theme="dark"] .acesso-esqueci{color:var(--marca-menta,#2fd294)}
#acessoRecuperar .login-alert{background:color-mix(in srgb,var(--a-verde-digital) 12%,transparent);color:var(--a-texto);border:0;border-radius:12px;padding:12px 14px;line-height:1.45}

/* rodape do painel: so "Ligacao segura" com cadeado (sem nome/logotipo da empresa) */
.acesso-org-seguro{padding:6px 12px!important;gap:7px!important}.acesso-org-seguro svg{width:14px;height:14px;flex:0 0 auto}

/* Ecrã de entrada com branding próprio: o título enquadra uma janela de aplicação animada (inspirada no hero de
   etryit.com) que percorre os módulos. --mk-o = cor principal; ciclo = 3 s por módulo (--n módulos). */
@media (min-width:901px){
  .acesso-marca.acesso-marca-propria{grid-template-areas:"ident ident" "arte arte" "frase frase" "org seguro"!important;grid-template-rows:auto 1fr auto auto!important;row-gap:clamp(14px,2.4vh,26px)!important}
  .acesso-marca-propria .acesso-arte{justify-self:center!important;align-self:center!important;width:min(100%,640px)!important}
  .acesso-marca-propria .acesso-frase-bloco{justify-self:center;text-align:center;justify-items:center}
}
.acesso-marca-propria .acesso-frase-2{display:none!important}
.acesso-marca-propria .acesso-arte{position:relative;isolation:isolate;display:block}
.acesso-mock-slogan{margin:0;font:800 clamp(26px,2.9vw,46px)/1 var(--marca-fonte-titulos,'Plus Jakarta Sans',sans-serif);letter-spacing:-.01em;text-transform:uppercase;text-align:center;color:#fff;text-wrap:balance}
.acesso-mock-slogan-1{margin-bottom:clamp(16px,2.6vh,30px);animation:acMkEntra .8s cubic-bezier(.2,.8,.2,1) both}
.acesso-mock-slogan-2{margin-top:clamp(18px,2.8vh,34px);color:var(--mk-o);animation:acMkEntra .8s cubic-bezier(.2,.8,.2,1) .35s both}
.acesso-mock-palco{position:relative;--t:calc(var(--n) * 3s);animation:acMkEntra 1s cubic-bezier(.2,.8,.2,1) .15s both}
.acesso-mock-luz{position:absolute;border-radius:50%;filter:blur(60px);pointer-events:none;z-index:-1}
.acesso-mock-luz-1{width:80%;aspect-ratio:1;right:-22%;top:-34%;background:radial-gradient(circle,color-mix(in srgb,var(--mk-o) 50%,transparent),transparent 66%);animation:acMkLuz 9s ease-in-out infinite}
.acesso-mock-luz-2{width:60%;aspect-ratio:1;left:-24%;bottom:-36%;background:radial-gradient(circle,color-mix(in srgb,var(--mk-o) 26%,transparent),transparent 70%);animation:acMkLuz 11s ease-in-out 2s infinite}
.acesso-mock{position:relative;border-radius:22px;background:linear-gradient(160deg,rgba(255,255,255,.13),rgba(255,255,255,.03));border:1px solid rgba(255,255,255,.15);padding:13px;box-shadow:0 50px 100px -40px #000,0 0 0 1px rgba(0,0,0,.2);animation:acMkFlutua 12s ease-in-out infinite;will-change:transform}
.acesso-mock-janela{background:#262626;border-radius:14px;overflow:hidden;border:1px solid rgba(255,255,255,.07)}
.acesso-mock-topo{display:flex;align-items:center;gap:7px;padding:12px 16px;border-bottom:1px solid rgba(255,255,255,.07)}
.acesso-mock-topo i{width:10px;height:10px;border-radius:50%;background:rgba(255,255,255,.2)}
.acesso-mock-topo i:first-child{background:var(--mk-o)}
.acesso-mock-url{margin-left:14px;height:16px;flex:0 1 46%;border-radius:8px;background:rgba(255,255,255,.07)}
.acesso-mock-corpo{display:grid;grid-template-columns:58px 1fr;min-height:clamp(230px,31vh,300px)}
.acesso-mock-lado{border-right:1px solid rgba(255,255,255,.07);padding:14px 0;display:flex;flex-direction:column;align-items:center;gap:11px}
.acesso-mock-lado span{width:24px;height:24px;border-radius:8px;background:rgba(255,255,255,.09);animation:acMkMenu var(--t) ease-in-out calc(var(--i) * 3s) infinite}
.acesso-mock-main{padding:16px 18px;display:flex;flex-direction:column;min-width:0}
.acesso-mock-titulo{position:relative;height:22px;margin-bottom:8px;overflow:hidden}
.acesso-mock-titulo em{position:absolute;inset:0;font:800 18px/22px var(--marca-fonte-titulos,'Plus Jakarta Sans',sans-serif);font-style:normal;color:#fff;opacity:0;animation:acMkTroca var(--t) ease-in-out calc(var(--i) * 3s) infinite}
.acesso-mock-sub{position:relative;overflow:hidden;height:8px;width:34%;border-radius:5px;background:rgba(255,255,255,.16);margin-bottom:16px}
.acesso-mock-sub::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent,rgba(255,255,255,.6),transparent);transform:translateX(-100%);animation:acMkBrilho 3s ease-in-out infinite}
.acesso-mock-cartoes{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:12px}
.acesso-mock-cartao{background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.07);border-radius:11px;padding:10px 12px}
.acesso-mock-valores{position:relative;height:40px;overflow:hidden}
.acesso-mock-valores span{position:absolute;inset:0;display:grid;gap:3px;opacity:0;animation:acMkTroca var(--t) ease-in-out calc(var(--i) * 3s + .12s) infinite}
.acesso-mock-cartao+.acesso-mock-cartao .acesso-mock-valores span{animation-delay:calc(var(--i) * 3s + .24s)}
.acesso-mock-valores small{font-size:10.5px;line-height:1;color:#ffffff99;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.acesso-mock-valores strong{font:800 20px/1 var(--marca-fonte-titulos,'Plus Jakarta Sans',sans-serif);color:#fff;font-variant-numeric:tabular-nums}
.acesso-mock-cartao u{display:block;height:5px;margin-top:8px;width:40%;border-radius:4px;background:color-mix(in srgb,var(--mk-o) 70%,transparent);text-decoration:none;animation:acMkIndicador 3s ease-in-out infinite}
.acesso-mock-cartao+.acesso-mock-cartao u{animation-delay:-1.5s}
.acesso-mock-grafico{flex:1;min-height:70px;display:flex;align-items:flex-end;gap:6px;background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.06);border-radius:11px;padding:10px 12px}
.acesso-mock-grafico i{flex:1;height:100%;border-radius:4px 4px 0 0;background:linear-gradient(180deg,var(--mk-o),color-mix(in srgb,var(--mk-o) 18%,transparent));transform-origin:bottom;animation:acMkBarra 3s cubic-bezier(.45,0,.2,1) infinite alternate}
.acesso-mock-grafico i:nth-child(1){--a:.32;--b:.55;animation-delay:-.2s}
.acesso-mock-grafico i:nth-child(2){--a:.58;--b:.4;animation-delay:-1.1s}
.acesso-mock-grafico i:nth-child(3){--a:.45;--b:.72;animation-delay:-2.3s}
.acesso-mock-grafico i:nth-child(4){--a:.78;--b:.55;animation-delay:-.7s}
.acesso-mock-grafico i:nth-child(5){--a:.52;--b:.86;animation-delay:-1.8s}
.acesso-mock-grafico i:nth-child(6){--a:.9;--b:.66;animation-delay:-2.7s}
.acesso-mock-grafico i:nth-child(7){--a:.66;--b:.94;animation-delay:-1.4s}
.acesso-mock-grafico i:nth-child(8){--a:.74;--b:.5;animation-delay:-.5s}
.acesso-mock-grafico i:nth-child(9){--a:.84;--b:1;animation-delay:-2s}
.acesso-mock-avisos{position:absolute;right:-28px;bottom:22%;width:min(62%,280px);height:62px;pointer-events:none}
.acesso-mock-aviso{position:absolute;inset:0;display:flex;align-items:center;gap:11px;padding:11px 14px;border-radius:14px;background:rgba(40,40,40,.92);border:1px solid rgba(255,255,255,.12);box-shadow:0 24px 50px -18px #000;backdrop-filter:blur(8px);opacity:0;animation:acMkAviso var(--t) cubic-bezier(.2,.8,.2,1) calc(var(--i) * 3s) infinite}
.acesso-mock-aviso-ok{flex:0 0 auto;width:30px;height:30px;border-radius:50%;background:var(--mk-o);position:relative}
.acesso-mock-aviso-ok::after{content:"";position:absolute;left:10px;top:7px;width:7px;height:12px;border:solid #fff;border-width:0 2.5px 2.5px 0;transform:rotate(45deg)}
.acesso-mock-aviso strong{display:block;font-size:12.5px;line-height:1.2;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.acesso-mock-aviso small{display:block;margin-top:3px;font-size:10.5px;line-height:1;color:#ffffff8c}
@keyframes acMkEntra{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}
@keyframes acMkFlutua{0%,100%{transform:translate3d(0,0,0) rotate(0)}50%{transform:translate3d(0,-10px,0) rotate(-.5deg)}}
@keyframes acMkLuz{0%,100%{opacity:.6;transform:scale(.92)}50%{opacity:1;transform:scale(1.08)}}
/* 1 módulo = 1/7 do ciclo (14.28%) */
@keyframes acMkMenu{0%,15.5%,100%{background:rgba(255,255,255,.09);box-shadow:none}1.5%,13%{background:var(--mk-o);box-shadow:0 0 0 4px color-mix(in srgb,var(--mk-o) 25%,transparent)}}
@keyframes acMkTroca{0%{opacity:0;transform:translateY(10px)}2%,12.5%{opacity:1;transform:none}14.28%,100%{opacity:0;transform:translateY(-10px)}}
@keyframes acMkAviso{0%,4%{opacity:0;transform:translate(16px,10px) scale(.96)}6%,12%{opacity:1;transform:none}14%,100%{opacity:0;transform:translate(0,-12px) scale(.98)}}
@keyframes acMkBrilho{0%,40%{transform:translateX(-100%)}80%,100%{transform:translateX(100%)}}
@keyframes acMkIndicador{0%,100%{width:30%}50%{width:74%}}
@keyframes acMkBarra{from{transform:scaleY(var(--a))}to{transform:scaleY(var(--b))}}
@media (max-height:760px) and (min-width:901px){.acesso-mock-corpo{min-height:200px}.acesso-mock-grafico{min-height:50px}.acesso-mock-slogan{font-size:clamp(22px,2.4vw,34px)}}
@media (prefers-reduced-motion:reduce){
  .acesso-mock-palco *,.acesso-mock-palco,.acesso-mock-slogan{animation:none!important}
  .acesso-mock-palco [style*="--i:0"]{opacity:1}
  .acesso-mock-lado span:first-child{background:var(--mk-o)}
  .acesso-mock-grafico i{transform:scaleY(var(--a))}
  .acesso-mock-sub::after{display:none}
}
/* 2.ª linha do slogan: palavras entram uma a uma */
.acesso-mock-slogan-2{animation:none}
.acesso-mock-slogan-2 span{display:inline-block;animation:acMkEntra .7s cubic-bezier(.2,.8,.2,1) calc(.55s + var(--w) * .28s) both}
@media (prefers-reduced-motion:reduce){.acesso-mock-slogan-2 span{animation:none!important}}
/* Cantos arredondados no painel da marca (cor da marca), não no formulário: o painel sobrepõe-se ao branco */
.acesso-marca{z-index:4;border-radius:0 0 26px 26px;margin-bottom:-26px;box-shadow:0 24px 50px -30px #00000066}
.acesso-corpo{z-index:1!important;margin-top:0!important;border-radius:0!important;padding-top:calc(28px + 26px)!important}
@media (min-width:901px){
  .acesso-marca{border-radius:0 44px 44px 0!important;margin:0 -44px 0 0!important;box-shadow:24px 0 60px -30px #00000066!important;padding-right:clamp(40px,5vw,72px)!important}
  .acesso-corpo{margin-left:0!important;border-radius:0!important;box-shadow:none!important;padding:48px clamp(32px,4vw,64px) 48px calc(clamp(32px,4vw,64px) + 44px)!important}
}
/* Ecrã de entrada ajustado ao tamanho do ecrã (browser, telemóvel e app instalada): ocupa exatamente a altura visível
   (100dvh desconta as barras do browser) e o conteúdo encolhe em vez de criar scroll */
@media (min-width:901px){
  html:has(#loginScreen.acesso:not([hidden])),html:has(#loginScreen.acesso:not([hidden])) body{height:100%!important;overflow:hidden!important}
  .acesso{height:100vh;height:100dvh;min-height:0!important;overflow:hidden}
  .acesso-marca{min-height:0!important;height:100vh;height:100dvh;padding-top:clamp(18px,4.5vh,48px)!important;padding-bottom:clamp(18px,4.5vh,48px)!important;row-gap:clamp(8px,2.2vh,28px)!important;overflow:hidden}
  .acesso-corpo{height:100vh;height:100dvh;overflow-y:auto;padding-top:clamp(18px,4.5vh,48px)!important;padding-bottom:clamp(18px,4.5vh,48px)!important}
  .acesso-marca-propria .acesso-arte{width:min(100%,640px,calc((100dvh - 330px) * 1.55))!important;min-height:0}
  .acesso-mock-slogan{font-size:clamp(20px,min(2.9vw,5vh),46px)!important}
  .acesso-mock-slogan-1{margin-bottom:clamp(8px,2.2vh,30px)!important}
  .acesso-mock-slogan-2{margin-top:clamp(10px,2.4vh,34px)!important}
  .acesso-mock-corpo{min-height:clamp(150px,calc(100dvh - 560px),300px)!important}
  .acesso-mock-grafico{min-height:clamp(36px,8vh,70px)!important}
}
/* ecrãs baixos (portátil pequeno, telemóvel deitado): sem a janela animada, ficam os slogans */
@media (min-width:901px) and (max-height:640px){
  .acesso-marca-propria .acesso-mock-palco{display:none}
  .acesso-mock-slogan-2{margin-top:6px!important}
}
@media (max-width:900px){
  .acesso{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column}
  .acesso-marca{flex:0 0 auto;padding-top:calc(env(safe-area-inset-top,0px) + clamp(16px,4vh,32px))!important}
  .acesso-corpo{flex:1 0 auto;padding-bottom:calc(env(safe-area-inset-bottom,0px) + 18px)!important}
  .acesso-arte,.acesso-frase-bloco{display:none!important}
}
@media (max-width:900px) and (max-height:600px){
  .acesso-marca{padding-top:calc(env(safe-area-inset-top,0px) + 12px)!important;padding-bottom:30px!important}
  .acesso-corpo{padding-top:calc(16px + 26px)!important}
  .acesso-form{gap:12px}
}
.acesso-passkey{display:flex;align-items:center;justify-content:center;gap:10px;background:transparent!important;color:var(--a-texto)!important;border:1px solid var(--a-linha)!important}
.acesso-passkey:hover{background:var(--a-sup-2)!important}
.acesso-passkey svg{width:18px;height:18px}
/* Linha de entrada: "Entrar" + botão de passkey (só ícone); demonstração como ligação discreta ao fundo */
.acesso-entrar-linha{display:flex;gap:10px;align-items:stretch}
.acesso-entrar-linha .login-submit{flex:1;min-width:0}
.acesso-passkey{flex:0 0 auto;width:56px;display:grid;place-items:center;border-radius:14px;border:1px solid var(--a-linha);background:var(--a-sup);color:var(--a-texto);cursor:pointer;transition:border-color .15s,color .15s,background .15s}
.acesso-passkey svg{width:24px;height:24px}
.acesso-passkey:hover{border-color:var(--a-verde);color:var(--a-verde)}
.acesso-passkey:focus-visible{outline:3px solid color-mix(in srgb,var(--a-verde) 45%,transparent);outline-offset:2px}
.acesso-passkey:disabled{opacity:.6;cursor:progress}
.acesso-demo-linha{margin:6px 0 0;text-align:center;font-size:14px;color:var(--a-suave)}
.acesso-demo-link{appearance:none;border:0;background:none;padding:2px 0;font:600 14px/1.3 inherit;color:var(--a-verde);cursor:pointer;display:inline-flex;gap:6px;align-items:center}
.acesso-demo-link:hover span:first-child{text-decoration:underline;text-underline-offset:3px}

/* Arranque mobile: uma só sequência, sem deslocar todo o formulário. */
@keyframes acessoMobileFade{from{opacity:.6}to{opacity:1}}
@media(max-width:900px) and (prefers-reduced-motion:no-preference){
 .acesso-cortina{transform-origin:50% 0;will-change:transform}
 .acesso.acesso-intro .acesso-corpo{transform:none}
 .acesso.acesso-intro-corre .acesso-corpo{transform:none;transition:opacity .28s ease-out .12s}
 .acesso.acesso-intro-corre :is(.acesso-marca-luz,.acesso-assinatura,.acesso-org){transition:opacity .24s ease-out .12s}
 .acesso.acesso-entra .acesso-identidade{animation:acessoMobileFade .24s ease-out both}
 .acesso.acesso-entra :is(.acesso-org,.acesso-destaque),.acesso.acesso-entra .acesso-form>*{animation:none}
 .app-shell.app-enter{animation:acessoMobileFade .22s ease-out both}
 .app-shell.app-enter .workspace{animation:none}
}
@media(max-width:900px){.acesso.acesso-intro .acesso-marca{overflow:visible}}
@media(max-width:900px) and (prefers-reduced-motion:no-preference){
 .acesso.acesso-intro-corre :is(.acesso-assinatura,.acesso-org){transition:opacity .16s ease-out .38s}
}

@media(max-width:900px){.acesso.acesso-intro .acesso-marca{box-shadow:none}}

/* source: styles-actions.css */
/* Estados das ações e barras móveis: regras partilhadas, sem sobreposições por módulo. */
:root{--action-bg:var(--brand);--action-text:#fff;--action-hover:var(--brand);--action-hover-text:#fff;--action-active:var(--brand);--action-active-text:#fff;--bottom-nav-clearance:0px}
:root :is(.primary-action,.acesso-botao,.ntf-botao:not(.secundario),.tab-button.active,.fx-seg.ativo){background:var(--action-bg);color:var(--action-text)}
:root :is(.primary-action,.acesso-botao,.ntf-botao:not(.secundario),.tab-button.active,.fx-seg.ativo):hover{background:var(--action-hover);color:var(--action-hover-text)}
:root :is(.primary-action,.acesso-botao,.ntf-botao:not(.secundario),.tab-button.active,.fx-seg.ativo):active{background:var(--action-active);color:var(--action-active-text)}
#appShell .bulk-actions-bar[hidden]{display:none!important}
@media(max-width:780px){
 body.has-bottom-nav{--bottom-nav-clearance:calc(76px + env(safe-area-inset-bottom,0px))}
 .desktop-app-access-bulk-bar,#appShell.sidebar-collapsed .desktop-app-access-bulk-bar{bottom:calc(var(--bottom-nav-clearance) + 12px)}
 .desktop-app-access-panel.has-module-selection{padding-bottom:calc(188px + var(--bottom-nav-clearance))}
}

/* menu lateral: item ativo com ícone em bloco da cor da marca; logótipo numa caixa sólida, sem translúcido */
.sidebar .nav-button.active .nav-icon{background:var(--brand,#f77f00)!important;border-color:transparent!important;color:#1c1c1e!important}
.sidebar .nav-button.active .nav-icon svg{color:#1c1c1e}
.sidebar .brand-mark{background:rgba(255,255,255,.08)!important;border:1px solid rgba(255,255,255,.1)!important;box-shadow:none!important}
.sidebar .brand{background:none!important;border:0!important;box-shadow:none!important}
/* menu lateral: Sair e Modo escuro com o mesmo cartão, conteúdo centrado */
.sidebar .sidebar-logout,.sidebar .sidebar-theme{display:flex!important;align-items:center!important;justify-content:center!important;gap:10px;width:100%;min-height:52px!important;border:1px solid rgba(255,255,255,.1)!important;border-radius:14px!important;background:rgba(255,255,255,.06)!important;box-shadow:none!important;padding:0 16px!important;text-align:center}
.sidebar .sidebar-theme::after{margin-left:0!important}
.tema-bloco{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:16px;padding:14px 16px;border:1px solid var(--line,#e5e5e5);border-radius:14px}
.tema-bloco p{margin:4px 0 0}
/* menu recolhido: submenu de cada grupo ao lado da barra, por cima do conteúdo */
#appShell.sidebar-collapsed .nav-group-items{display:none}
.nav-group-items.flyout-aberto{display:block;position:fixed;z-index:1000;min-width:230px;padding:10px;border-radius:14px;background:#262626;color:#f2f2f2;border:1px solid rgba(255,255,255,.1);box-shadow:0 14px 34px rgba(0,0,0,.4)}
.nav-group-items.flyout-aberto::before{content:attr(data-titulo);display:block;padding:4px 10px 8px;font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:rgba(255,255,255,.55)}
.nav-group-items.flyout-aberto .nav-button{width:100%;color:#f2f2f2}
.nav-group-items.flyout-aberto .nav-button span:not(.nav-icon){display:inline!important}
/* barras de deslocamento com a cor da marca */
:root{scrollbar-color:var(--brand,#f77f00) transparent}
::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:var(--brand,#f77f00);border-radius:999px;border:2px solid transparent;background-clip:padding-box}
/* menu recolhido: ícones dos grupos e Sair centrados na mesma coluna */
#appShell.sidebar-collapsed .nav-group-toggle,#appShell.sidebar-collapsed .nav-button{justify-content:center!important;padding-left:0!important;padding-right:0!important}
#appShell.sidebar-collapsed .sidebar .sidebar-logout{min-height:44px!important;height:44px!important}
.nav-direct-items .nav-button{padding-left:11px}
/* menu recolhido: o item ativo destaca-se só pelo ícone da cor da marca, sem fundo cinzento por trás */
#appShell.sidebar-collapsed .nav-button.active{background:transparent!important;box-shadow:none!important}
#appShell.sidebar-collapsed .nav-button.active .nav-icon{border-radius:7px}
/* Dashboard (portal) separado do resto do menu por uma linha */
.nav-direct-items{margin-bottom:10px;padding-bottom:10px;border-bottom:1px solid rgba(255,255,255,.1)}
/* menu expandido: Sair com o ícone alinhado à esquerda, como os itens do menu */
#appShell:not(.sidebar-collapsed) .sidebar .sidebar-logout{justify-content:flex-start!important;padding-left:11px!important;gap:10px}
/* botão Sair: só a linha do ícone em vermelho (vermelho de perigo para tema escuro), fundo igual aos outros ícones */
.sidebar #logoutButton .nav-icon{background:rgba(255,255,255,.08)!important;border-color:rgba(255,255,255,.1)!important;color:#f87171!important}
.sidebar #logoutButton .nav-icon svg{color:#f87171}
/* botões principais e estados ativos: texto em branco */
:root :is(.primary-action,.acesso-botao,.ntf-botao:not(.secundario),.tab-button.active,.fx-seg.ativo){color:#fff!important}
/* estados ativos sobre fundo da marca (ex.: engrenagem da barra superior): ícone e texto em branco */
:root :is(.topbar,.app-topbar) :is(.active,[aria-pressed="true"],[aria-checked="true"],[aria-selected="true"]),:root :is(.topbar,.app-topbar) :is(.active,[aria-pressed="true"],[aria-checked="true"],[aria-selected="true"]) svg{color:#fff!important}
/* Reconciliação: cartão de destaque com hierarquia clara e texto branco */
.rec-hero{min-height:156px;display:flex;align-items:center;padding:28px 36px!important;border-radius:20px!important;background:linear-gradient(120deg,var(--brand,#f77f00) 0%,color-mix(in srgb,var(--brand,#f77f00) 82%,#000) 100%)!important;box-shadow:0 14px 34px color-mix(in srgb,var(--brand,#f77f00) 22%,transparent)!important}
.rec-hero>div:last-child{position:relative;z-index:1;max-width:620px}
.rec-hero h2{font-size:clamp(1.5rem,2.6vw,2.1rem)!important;font-weight:800!important;letter-spacing:-.02em!important;line-height:1.12!important;margin:10px 0 0!important;color:#fff!important}
.rec-hero p{font-size:1rem!important;line-height:1.45!important;margin:10px 0 0!important;color:rgba(255,255,255,.92)!important}
.rec-hero-moeda{background:rgba(255,255,255,.2)!important;color:#fff!important;font-weight:700!important;border-radius:999px!important}
.rec-hero>div:first-child,.rec-hero span{color:rgba(255,255,255,.9)}
.rec-hero-fx i{background:rgba(255,255,255,.12)!important}
@media (max-width:640px){.rec-hero{padding:22px 22px!important;min-height:0}.rec-hero h2{font-size:1.45rem!important}}
/* linha temporal das notificações: linha vertical com um ponto por item e data por cima do título */
.notifications-modal .timeline.timeline{display:block;position:relative;margin:4px 0 0}
.notifications-modal .timeline .timeline-item{position:relative;display:grid;grid-template-columns:22px minmax(0,1fr) auto;column-gap:12px;align-items:start;margin:0;padding:0 0 18px;border:0;border-left:0;opacity:1;background:none}
.notifications-modal .timeline .timeline-item.is-read{opacity:.6}
.notifications-modal .timeline .timeline-rail{position:relative;align-self:stretch;display:flex;justify-content:center}
.notifications-modal .timeline .timeline-rail::before{content:"";position:absolute;top:0;bottom:-18px;left:50%;width:2px;margin-left:-1px;background:var(--line)}
.notifications-modal .timeline .timeline-item:last-child .timeline-rail::before{bottom:auto;height:14px}
.notifications-modal .timeline .timeline-rail i{position:relative;z-index:1;margin-top:5px;width:12px;height:12px;border-radius:50%;background:var(--brand);box-shadow:0 0 0 4px var(--surface,#fff)}
.notifications-modal .timeline .timeline-item.warning .timeline-rail i{background:var(--warning)}
.notifications-modal .timeline .timeline-item.success .timeline-rail i{background:var(--success)}
.notifications-modal .timeline .timeline-item.danger .timeline-rail i{background:var(--danger)}
.notifications-modal .timeline .timeline-item-body{min-width:0;display:grid;gap:4px}
.notifications-modal .timeline .timeline-date{display:block;font-size:12px;line-height:1.2;color:var(--muted);letter-spacing:.02em;font-variant-numeric:tabular-nums}
.notifications-modal .timeline .timeline-item-body strong{font-size:15px;line-height:1.35;font-weight:700}
.notifications-modal .timeline .timeline-item-body span{font-size:14px;line-height:1.45;color:var(--muted);margin-top:0}
.notifications-modal .timeline .notification-item-actions{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end;align-self:center}
@media (max-width:640px){.notifications-modal .timeline .timeline-item{grid-template-columns:18px minmax(0,1fr)}.notifications-modal .timeline .notification-item-actions{grid-column:2;justify-content:flex-start;margin-top:6px}}
/* botão de recolher a barra lateral: ícone sempre visível (não herda o branco dos estados ativos) */
:root .sidebar-collapse-toggle,:root .sidebar-collapse-toggle svg,:root .menu-button,:root .menu-button svg{color:var(--text,#363535)!important}
/* Auditorias › Modelos e parâmetros: lista e editor em largura total, uma coluna */
.aud-cfg{grid-template-columns:minmax(0,1fr)!important;gap:16px!important}
.aud-cfg>.aud-painel{width:100%;min-width:0}
.aud-cfg .check-row{display:flex;align-items:center;gap:10px;width:100%}
.aud-cfg .check-row span{min-width:0}
/* botão de recolher a barra (topo): ícone escuro e legível, mesmo quando o estado ativo o marcaria a branco */
:root :is(.topbar,.app-topbar) :is(.sidebar-collapse-toggle,.menu-button) :is(svg,svg *){color:var(--text,#363535)!important;stroke:currentColor}
/* menu recolhido: os subitens em linha nunca aparecem; só o painel flutuante (aberto ao passar o rato ou ao clicar) */
#appShell.sidebar-collapsed .nav-group .nav-group-items:not(.flyout-aberto){display:none!important}
#appShell.sidebar-collapsed .nav-group-items.flyout-aberto,.nav-group-items.flyout-aberto{display:block!important}
/* menu recolhido: o grupo que contém a página atual fica marcado, já que os subitens não aparecem em linha */
#appShell.sidebar-collapsed .nav-group.has-current>.nav-group-toggle .nav-icon{background:var(--brand,#f77f00)!important;border-color:transparent!important;color:#1c1c1e!important}
#appShell.sidebar-collapsed .nav-group.has-current>.nav-group-toggle .nav-icon svg{color:#1c1c1e!important}
body:has(#faixaDemo){padding-top:0}
/* faixa de demonstração: tab centrada no topo, na cor da marca, com linha de prolongamento a toda a largura */








body:has(#faixaDemo){padding-top:0}
/* no computador, a tab ocupa a faixa superior e a barra de topo começa abaixo dela (não tapa a pesquisa) */

@media (max-width:780px){
  /* no telemóvel a tab entra no fluxo da página, para não tapar o topo do conteúdo */




}

/* Dashboard em telemóvel: hero mais baixo, data sem corte, rótulos da barra inferior e KPIs em grelha equilibrada */
@media (max-width:640px){
  .dashboard-hero{padding:16px 16px!important;gap:12px!important}
  .dashboard-hero h2{font-size:22px!important}
  .dashboard-hero-meta{gap:6px!important;flex-wrap:wrap}
  .dashboard-hero-meta>*{font-size:11px!important;padding:4px 8px!important}
  .dashboard-hero-clock{padding:8px 12px!important}
  .dashboard-hero-clock-time{font-size:24px!important}
  .dashboard-hero-clock-date{white-space:normal!important;overflow:visible!important;text-overflow:clip!important;line-height:1.25}
  .bottom-nav-label{font-size:10px!important;letter-spacing:0!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .dashboard-module-kpis{grid-template-columns:repeat(auto-fit,minmax(140px,1fr))!important;gap:8px!important}
  .dashboard-hero-meta{flex-direction:row!important;flex-wrap:wrap!important}
}

/* Faixa de demonstração: degradê irregular em laranja (claro e escuro), como o do menu lateral */


/* Quadros: arrastar com o dedo no telemóvel */
@media (pointer:coarse){.kanban-card[draggable=true]{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}}
.kanban-card.a-arrastar{opacity:.45}
.toque-fantasma{position:fixed;z-index:9999;pointer-events:none;opacity:.94;transform:rotate(2deg);box-shadow:0 12px 28px rgba(0,0,0,.22)}

/* ===== Demonstração: crachá flutuante (canto inferior direito), minimizável para uma aba ===== */
  display:flex;flex-direction:column;color:#fff;border-radius:16px;overflow:hidden;cursor:default;
  background:linear-gradient(135deg,#1b1a19 0%,#262422 100%);
  box-shadow:0 14px 36px rgba(0,0,0,.28),0 0 0 1px rgba(255,255,255,.06) inset;
  transition:box-shadow .25s ease,transform .25s ease}
  background:radial-gradient(closest-side,color-mix(in srgb,var(--brand,#f77f00) 28%,transparent),transparent)}
  color:rgba(255,255,255,.72)!important;background:rgba(255,255,255,.08)!important;transition:background .2s ease,color .2s ease}
  font-size:11.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#fff;border-radius:16px 0 0 16px;
  background:linear-gradient(135deg,#ff9a3c,#e26a00);box-shadow:-6px 8px 22px rgba(0,0,0,.26);transition:padding .2s ease}
body:has(#faixaDemo){padding-top:0}
@media (max-width:780px){
}
@media (prefers-reduced-motion:reduce){.cracha-demo-ponto{animation:none}.cracha-demo,.cracha-demo-corpo,.cracha-aba{transition:none}}

body:has(#modalBackdrop:not([hidden])) .faixa-demo{z-index:0}
/* faixa de demonstração: tab centrada no topo, na cor da marca, com linha de prolongamento a toda a largura */
.faixa-demo{position:fixed;top:0;left:0;right:0;width:fit-content;max-width:calc(100vw - 16px);margin:0 auto;z-index:2000;display:inline-flex;flex-wrap:wrap;gap:4px 10px;align-items:center;justify-content:center;padding:5px 14px;border-radius:0 0 12px 12px;background:var(--brand,#f77f00);color:#fff!important;box-shadow:0 4px 14px color-mix(in srgb,var(--brand,#f77f00) 26%,transparent);font-size:12px!important;min-height:0!important;line-height:1.25}
.faixa-demo::before{content:"";position:fixed;top:0;left:0;width:100vw;height:5px;background:var(--brand,#f77f00);z-index:-1;pointer-events:none}
.faixa-demo strong{color:#fff!important;font-weight:600!important}
.faixa-demo button{border:0!important;background:rgba(255,255,255,.18)!important;color:#fff!important;padding:3px 10px!important;border-radius:6px!important;font-size:11px!important;font-weight:600!important;line-height:1.2!important;white-space:nowrap;min-height:44px!important}
.faixa-demo button:hover{background:rgba(255,255,255,.32)!important}
.faixa-demo-extra{color:rgba(255,255,255,.82)!important;font-size:11px!important}
.faixa-demo-site{color:#fff!important;font-weight:600!important;text-decoration:none;opacity:.94}
.faixa-demo-site:hover{color:#fff!important;opacity:1;text-decoration:underline;text-underline-offset:2px}
@media (min-width:781px){body:has(#faixaDemo) .topbar{padding-top:52px!important}}
@media (max-width:780px){
  /* no telemóvel a tab entra no fluxo da página, para não tapar o topo do conteúdo */
  .faixa-demo{position:sticky;top:0;left:auto;right:auto;display:flex!important;width:fit-content;margin:0 auto;gap:2px 8px;padding:3px 10px;font-size:11px!important;border-radius:0 0 10px 10px}
  .faixa-demo .faixa-demo-extra{display:none!important}
  .faixa-demo button{padding:2px 8px!important;font-size:10.5px!important;min-height:44px!important}
  .faixa-demo::before{height:4px}
}
@media (max-width:640px){.faixa-demo-site{display:none!important}}

/* ===== Circuito de Conformidades ===== */
.aud-circuito{grid-template-columns:repeat(8,minmax(220px,1fr))!important}
.aud-circuito .kanban-column{display:flex;flex-direction:column;gap:10px;padding:12px;background:var(--surface-2,#f5f5f4);border-radius:12px;min-height:200px}
.aud-circuito .kanban-column.kanban-column-vazia{flex:0 0 52px;min-height:220px}
.aud-circuito .kanban-column-vazia>h3{writing-mode:vertical-rl;transform:rotate(180deg);display:flex;flex-direction:row-reverse;justify-content:center;align-items:center;padding:12px 8px}
.aud-circuito .kanban-column-vazia .kanban-cards{display:none}
.aud-circuito .kanban-cards{display:flex;flex-direction:column;gap:10px;padding:12px;overflow-y:auto;max-height:calc(100vh - 280px)}
.aud-circuito .kanban-toggle{display:flex;align-items:center;gap:8px;padding:10px 12px;border:0;background:transparent;border-radius:8px;color:#fff;font:inherit;font-size:12px;font-weight:700;cursor:pointer;transition:background .2s}
.aud-circuito .kanban-toggle:hover,.aud-circuito .kanban-toggle:focus-visible{background:rgba(255,255,255,.12)}
.aud-circuito .kanban-toggle svg{width:16px;height:16px;flex:0 0 auto}
.aud-circuito .kanban-count{font-size:11px;font-weight:700;background:rgba(255,255,255,.18);padding:2px 6px;border-radius:999px}
.aud-circuito .aud-tc-rodape{display:flex;justify-content:space-between;gap:8px;border-top:1px solid var(--line);padding-top:8px;font-size:11px;color:var(--muted)}
.aud-circuito .ticket-card[draggable=true]{cursor:grab}
.aud-circuito .kanban-column-dragover{outline:2px dashed var(--brand);outline-offset:-2px;background:color-mix(in srgb,var(--brand) 6%,var(--surface-2,#f5f5f4))}
.aud-circuito-resumo{grid-template-columns:repeat(auto-fit,minmax(120px,1fr))!important}
.aud-circuito-resumo .frota-status-card{display:flex;align-items:flex-start;gap:8px;padding:10px 12px}
.aud-circuito-resumo .frota-status-card svg{width:18px;height:18px;flex:0 0 auto}
.aud-circuito-resumo .frota-status-card div{display:flex;flex-direction:column;gap:2px}
.aud-circuito-resumo .frota-status-card strong{font-size:16px;font-weight:700;line-height:1}
.aud-circuito-resumo .frota-status-card span{font-size:10.5px;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}
