@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)}



.nav-mode-toggle{display:flex;flex-direction:row;gap:4px;padding:4px;background:var(--sidebar-panel);border-radius:var(--radius-md);border:1px solid var(--sidebar-line)}
.nav-mode-button{align-items:center;background:transparent;border:0;border-radius:var(--radius-sm);color:var(--sidebar-text);display:flex;flex:1 1 0;justify-content:center;gap:8px;min-height:44px;padding:7px 9px;text-align:center;transition:background .12s ease;font-size:var(--text-sm);cursor:pointer}
.nav-mode-button svg{width:18px;height:18px;flex-shrink:0}
.nav-mode-button.active{background:#ffffff1a;color:#fff;font-weight:700}

/* ---- 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 */
.faixa-demo{position:sticky;top:0;z-index:2000;display:flex;flex-wrap:wrap;gap:6px 14px;align-items:center;justify-content:center;padding:6px 12px;padding-top:max(6px,env(safe-area-inset-top));background:#f59e0b;color:#1f2937;font-size:.88rem;text-align:center}
.faixa-demo button{border:1px solid rgba(31,41,55,.35);background:rgba(255,255,255,.55);color:#1f2937;border-radius:999px;padding:4px 12px;font:inherit;font-weight:600;cursor:pointer;min-height:32px}
.faixa-demo button:hover{background:#fff}
.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:inset 3px 0 0 #36d7a4}

/* 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}
