
:root{--bg:#f5f7f8;--ink:#172b2a;--muted:#7c8989;--line:#e6ebea;--green:#147962;--light:#eaf5ef;--sidebar:#102f2b}*{box-sizing:border-box}body{margin:0;background:var(--bg);font-family:Arial,Helvetica,sans-serif;color:var(--ink);font-size:14px;-webkit-font-smoothing:antialiased}button,input{font:inherit}button,a,input{outline-offset:4px}button,a{ -webkit-tap-highlight-color:transparent}button{cursor:pointer;transition:background .15s,box-shadow .15s;white-space:nowrap}button:disabled{opacity:.45;cursor:not-allowed}a{color:inherit;text-decoration:none}h1,h2,h3,p{margin:0}h1{font-size:32px;letter-spacing:-1.1px;line-height:1.25;font-weight:650}h2{font-size:17px;letter-spacing:-.35px;font-weight:650}h3{font-size:18px}small{font-size:12px}svg{flex-shrink:0}input{min-width:0}input:focus{outline:2px solid #65b69e;outline-offset:1px}.app-shell{display:flex;min-height:100vh}.sidebar{width:246px;position:fixed;inset:0 auto 0 0;background:var(--sidebar);color:#d4e3de;padding:31px 19px 0;display:flex;flex-direction:column;z-index:10}.brand{display:flex;align-items:center;gap:11px;font-size:22px;font-weight:700;letter-spacing:-.7px;color:white;padding:0 9px}.brand-light{font-weight:400;color:#b6cbc4;font-size:20px}.brand-icon{display:flex;align-items:center;justify-content:center;width:37px;height:37px;background:#b9e5bf;color:#123f31;border-radius:9px}.workspace{margin:35px 2px 31px;background:#ffffff07;border:1px solid #ffffff13;padding:12px 10px;display:flex;align-items:center;gap:10px;border-radius:9px}.workspace-avatar{width:30px;height:32px;background:#ffffff13;border:1px solid #ffffff20;border-radius:6px;display:grid;place-items:center;color:#d0e6dc;font-weight:600}.workspace strong{font-size:12px;font-weight:600;display:block;color:#f0f5f3}.workspace small{display:block;color:#8ca79e;margin-top:5px;font-size:10px}.workspace>svg{margin-left:auto;color:#80a495}.nav-label{font-size:10px;letter-spacing:1.4px;padding:0 13px;color:#6c9588;margin-bottom:13px}.nav-item{width:100%;display:flex;align-items:center;gap:12px;border:0;background:none;color:#9bb9ae;padding:13px 14px;text-align:left;border-radius:7px;font-size:13px;margin:3px 0}.nav-item:hover{background:#ffffff08;color:white}.nav-item.selected{color:#d1f0da;background:#ffffff0e}.nav-item.selected svg{color:#ade2bd}.nav-dot{height:6px;width:6px;border-radius:50%;background:#afe0ba;margin-left:auto}.nav-count{font-size:10px;margin-left:auto;background:#ffffff18;padding:2px 6px;border-radius:4px}.sidebar-bottom{margin-top:auto;padding-top:30px}.help-box{background:linear-gradient(135deg,#254a3d,#18392f);border:1px solid #aecbb51c;border-radius:9px;padding:17px;margin:20px 6px 24px}.help-box svg{color:#b7d9ac;margin-bottom:10px}.help-box strong{font-size:12px;display:block;color:#d9e8da}.help-box p{font-size:11px;line-height:1.7;margin-top:7px;color:#91b19f}.admin-profile{border-top:1px solid #ffffff12;display:flex;gap:10px;align-items:center;padding:22px 7px}.admin-profile strong{font-size:12px;display:block;color:#d2e1db}.admin-profile small{font-size:10px;color:#7b9f90;display:block;margin-top:5px}.admin-profile a{margin-left:auto;color:#9ab2a8}.main-shell{margin-left:246px;flex:1;min-width:0}.topbar{height:77px;border-bottom:1px solid var(--line);background:#ffffffd9;display:flex;align-items:center;justify-content:space-between;padding:0 38px}.breadcrumb{display:flex;align-items:center;gap:14px;color:#9ba5a1;font-size:12px}.breadcrumb span{color:#3b5550}.top-status{display:flex;align-items:center;gap:8px;color:#687c73;font-size:11px}.status-dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:#4b9e7c;flex-shrink:0}.status-dot.amber{background:#c9a34c}.top-avatar{margin-left:16px;width:31px;height:31px;background:#e9efea;display:grid;place-items:center;border:1px solid #dfe8e0;border-radius:50%;color:#5b7765;font-weight:600}.main{max-width:1600px;margin:auto;padding:35px 38px 0}.page-heading{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:29px}.eyebrow{font-size:10px;font-weight:650;letter-spacing:1.9px;color:#8b9b90;display:block;margin-bottom:10px}.page-heading p{font-size:13px;color:#829087;margin-top:11px;line-height:1.6}.heading-actions{display:flex;gap:9px;padding-top:13px}.primary,.secondary,.danger-button{display:inline-flex;justify-content:center;align-items:center;gap:8px;border-radius:7px;padding:11px 15px;font-size:12px;font-weight:600;line-height:1.4}.primary{background:#17745c;color:white;border:1px solid #17745c;box-shadow:0 2px 3px #0a342010}.primary:hover:not(:disabled){background:#105c49}.secondary{background:white;color:#4b6157;border:1px solid #dfe6e1;box-shadow:0 1px 2px #102a1505}.secondary:hover:not(:disabled){background:#f4f7f5}.danger-button{background:#aa3939;color:white;border:1px solid #aa3939}.text-button{border:0;background:none;color:#3c7b64;display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:5px 0;font-size:12px;font-weight:500}.text-button:hover{color:#164e37}.icon-button{display:inline-flex;justify-content:center;align-items:center;border:0;background:transparent;color:#82918b;padding:7px;border-radius:6px}.icon-button:hover{background:#edf3ef;color:#3d6650}.stats-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:17px;margin-bottom:25px}.stat-card{border:1px solid var(--line);background:white;border-radius:10px;padding:21px 22px}.stat-top{display:flex;justify-content:space-between;align-items:center;color:#7e9086;font-size:12px}.stat-top svg{color:#8ba396}.stat-number{font-size:34px;letter-spacing:-1.3px;display:block;line-height:1.3;margin:14px 0 10px;font-weight:600;color:#1e3a2e}.stat-number>span{font-size:11px;letter-spacing:0;font-weight:400;margin-left:10px;color:#9caaa1}.stat-card small{display:flex;align-items:center;gap:6px;color:#91a095;font-size:10px}.intro-banner{background:#e7eee6;border:1px solid #dce7d9;border-radius:11px;min-height:210px;position:relative;display:flex;overflow:hidden;justify-content:space-between;margin-bottom:27px}.banner-copy{padding:27px 30px;z-index:1}.banner-tag{color:#5f8465;font-size:9px;font-weight:600;letter-spacing:1px;display:flex;gap:7px;align-items:center}.banner-copy h2{font-size:24px;margin-top:15px;letter-spacing:-.8px;color:#294b32}.banner-copy p{font-size:12px;line-height:1.8;color:#7a9279;margin-top:10px}.banner-copy button{display:flex;gap:10px;align-items:center;background:transparent;padding:0;border:0;font-size:11px;font-weight:600;color:#376c41;margin-top:17px}.banner-art{position:relative;width:340px;overflow:hidden;margin-right:18px}.art-grid{position:absolute;inset:0;background-image:linear-gradient(#b8cbb733 1px,transparent 1px),linear-gradient(90deg,#b8cbb733 1px,transparent 1px);background-size:28px 28px;mask-image:radial-gradient(ellipse,black,transparent 70%)}.art-phone{position:absolute;transform:rotate(10deg);top:27px;left:115px;width:137px;min-height:252px;background:#fffef8;border:5px solid #cedaca;border-radius:24px;padding:18px 10px;box-shadow:0 15px 35px #315e3b12}.phone-notch{position:absolute;width:36px;left:45px;top:5px;height:5px;border-radius:5px;background:#cedaca}.phone-heading{display:flex;align-items:center;justify-content:space-between;font-weight:600;font-size:9px;margin:7px 0 13px;color:#536951}.phone-gate{border:1px solid #e0eadc;border-radius:7px;padding:10px 8px;color:#6c8d69}.phone-gate>span{display:block;font-size:8px;font-weight:600;margin:8px 0}.phone-gate>div{display:flex;align-items:center;justify-content:space-between;font-size:8px;background:#517a4e;border-radius:4px;color:white;padding:7px}.phone-gate.small-gate{margin-top:8px;display:flex;gap:5px;align-items:center}.floating-key{position:absolute;left:54px;top:95px;border-radius:13px;background:#fffef6;display:grid;place-items:center;color:#839e6e;width:49px;height:49px;transform:rotate(-12deg);box-shadow:0 4px 12px #3d5a2512}.floating-check{position:absolute;left:255px;top:66px;width:34px;height:34px;border:4px solid #e7eee6;border-radius:50%;display:grid;place-items:center;background:#9bb98b;color:white}.panel{border:1px solid var(--line);border-radius:10px;background:white;overflow:hidden}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:23px 25px;border-bottom:1px solid #eff2ef}.section-heading h2{display:flex;align-items:center;gap:9px;font-size:15px}.section-heading p{font-size:11px;color:#8c9b91;line-height:1.6;margin-top:7px}.count{background:#f2f5f1;border:1px solid #e6ede4;border-radius:5px;font-size:10px;min-width:23px;height:20px;display:inline-grid;place-items:center;font-weight:400;color:#80977d}.table-scroll{overflow-x:auto}table{border-collapse:collapse;width:100%;white-space:nowrap;text-align:left;font-size:12px}th{font-weight:400;color:#95a196;font-size:10px;padding:14px 22px;background:#fcfdfb;border-bottom:1px solid #ecf0eb}td{padding:17px 22px;border-bottom:1px solid #eff2ed;color:#718174}tr:last-child td{border-bottom:0}td strong{color:#4b6050;font-weight:500}.person{display:flex;align-items:center;gap:10px}.avatar{width:34px;height:34px;border-radius:50%;background:#ecf0e4;color:#7e916b;display:grid;place-items:center;font-size:10px;font-weight:600;flex-shrink:0}.avatar.dark{background:#ffffff0d;color:#9fbca8;border:1px solid #ffffff17}.person strong{display:block;font-size:12px;color:#3a513e}.person small{display:block;font-size:10px;color:#a1ad9e;margin-top:5px}.mono{font-variant-numeric:tabular-nums;font-size:11px;letter-spacing:.2px}.access-button{border:0;background:none;display:flex;align-items:center;gap:8px;color:#778c72;font-size:11px;padding:6px 0}.pill{display:inline-flex;align-items:center;gap:5px;font-size:10px;padding:5px 8px;border-radius:5px;line-height:1.3;white-space:nowrap}.pill i{width:4px;height:4px;border-radius:50%;background:currentColor}.green{background:#edf6ec;color:#5a8c55}.gray{background:#f1f3ef;color:#8c9587}.amber-pill{background:#fcf6e8;color:#a78b42}.red{background:#fcf0eb;color:#bd6b55}.empty{padding:45px 20px;display:flex;flex-direction:column;gap:14px;align-items:center;text-align:center;color:#8ea08c}.empty h3{color:#4c6748;font-size:17px;font-weight:500}.empty p{font-size:12px;line-height:1.8;color:#92a18c;max-width:430px}.empty button{margin-top:4px}.empty-icon{width:54px;height:54px;display:grid;place-items:center;background:#f2f6ed;border:1px solid #e7eddf;border-radius:13px;margin-bottom:3px}.bottom-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin-top:24px}.mini-empty{min-height:130px;display:flex;align-items:center;justify-content:center;gap:15px;color:#a8b5a0}.mini-empty p{font-size:11px;line-height:1.8;color:#9aa993}.setup-card .section-heading{border:0;padding-bottom:17px}.setup-card>p{color:#91a088;font-size:11px;line-height:1.9;padding:0 25px;max-width:440px}.setup-card>.secondary{margin:18px 25px 24px;font-size:10px;padding:9px 12px}.main-footer{padding:32px 0 23px;display:flex;align-items:center;justify-content:space-between;color:#a4b19f;font-size:10px}.main-footer span:last-child{display:flex;align-items:center;gap:6px}.table-tools{display:flex;align-items:center;justify-content:space-between;padding:16px 24px;gap:16px;border-bottom:1px solid var(--line)}.tabs{display:flex;align-items:center;gap:4px}.tabs button{padding:8px 11px;background:none;border:0;border-radius:5px;color:#95a38f;font-size:11px}.tabs button.current{background:#eef4ea;color:#618354}.search{display:flex;align-items:center;gap:8px;background:#f9fbf6;border:1px solid #e5ecdd;border-radius:6px;padding:8px 11px;color:#9cab95}.search input{background:none;border:0;outline:none;width:190px;font-size:11px;color:#536c48}.table-footer{border-top:1px solid var(--line);padding:17px 23px;display:flex;justify-content:space-between;gap:15px;font-size:10px;color:#91a386;line-height:1.7}.table-footer span{color:#a6b29d}.toolbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;color:#8a9c80;font-size:12px}.controller-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.controller-card{padding:23px}.controller-top{display:flex;justify-content:space-between;align-items:flex-start}.controller-icon{width:47px;height:47px;background:#eef4e8;color:#779368;border-radius:11px;display:grid;place-items:center}.controller-card h2{margin-top:21px;font-size:18px}.controller-card>p{display:flex;align-items:center;gap:6px;font-size:11px;color:#9aac8d;margin:10px 0 22px}.controller-meta{background:#f9fbf6;border:1px solid #edf1e7;border-radius:6px;padding:12px}.controller-meta>span{display:flex;align-items:center;justify-content:space-between;font-size:10px;color:#97a78c;margin:7px 0}.controller-meta b{font-weight:500;color:#6c855d}.controller-footer{display:flex;justify-content:space-between;align-items:center;margin-top:18px}.event-row{display:flex;align-items:center;padding:16px 23px;gap:11px;border-bottom:1px solid #eef2e9}.event-icon{width:31px;height:31px;background:#f2f6eb;color:#89a574;border-radius:7px;display:grid;place-items:center}.event-row strong{display:block;font-size:11px;font-weight:500;color:#6a815b}.event-row small{display:block;font-size:10px;color:#a1b195;margin-top:4px}.event-row time{margin-left:auto;font-size:10px;color:#adb9a4}.settings-grid{display:grid;grid-template-columns:1.25fr 1fr;gap:24px}.settings-body{padding:25px}.setting-line{display:flex;gap:20px;align-items:center}.setting-line strong,.security-item strong{font-size:13px;font-weight:500}.setting-line p,.security-item p{font-size:11px;line-height:1.8;color:#8b9e80;margin-top:8px}.setting-line svg{color:#91ab7d}.config-fields{display:grid;gap:14px;margin:24px 0}.config-fields label{font-size:11px;color:#8c9f80;display:grid;gap:9px}.config-fields code{border:1px solid #e3ebdc;background:#f8faf5;color:#799169;border-radius:5px;padding:13px;font-size:12px}.notice{background:#f5f7ed;border:1px solid #e5ebd7;border-radius:7px;color:#7a8b61;font-size:11px;line-height:1.8;padding:13px 15px;margin:17px 0;white-space:normal}.notice.error{display:flex;align-items:center;gap:12px;background:#fcf0ed;border-color:#f2ded6;color:#b57760}.security-item{display:flex;align-items:flex-start;gap:13px;margin-bottom:25px}.security-item>svg{color:#8ea779}.row-sub{display:block;white-space:normal;max-width:300px;font-size:10px;line-height:1.7;color:#a5b097;margin-top:5px}.error-text{color:#bd8067}.hint{font-size:10px;color:#a5b597;line-height:1.8}.modal-backdrop{position:fixed;inset:0;z-index:50;background:#102d2366;backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;padding:25px}.modal{position:relative;width:490px;max-width:100%;max-height:90vh;overflow:auto;border-radius:15px;background:#fff;padding:31px;box-shadow:0 28px 80px #0c2c2333}.modal-close{position:absolute;right:14px;top:14px;z-index:2}.modal-icon{width:48px;height:48px;background:#edf5e8;color:#749c61;border:1px solid #e1edd8;border-radius:12px;display:grid;place-items:center;margin-bottom:20px}.modal h2{font-size:23px;letter-spacing:-.6px;padding-right:18px}.modal-desc{font-size:12px;color:#8b9c80;line-height:1.8;margin:9px 0 23px}.modal label:not(.checkbox-label):not(.grant-option){display:block;color:#718863;font-size:11px;margin:17px 0}.modal label>input:not([type=checkbox]){display:block;width:100%;margin-top:8px;border:1px solid #dce7d3;border-radius:7px;padding:12px 13px;color:#4f7041;font-size:13px;background:#fff}.modal label>input[readonly]{background:#f8faf5;color:#8a9e7b}.modal label small{display:block;font-size:10px;line-height:1.7;margin-top:8px;color:#a5b498}.checkbox-label{display:flex;align-items:center;gap:9px;font-size:12px;color:#829873;margin:20px 0}input[type=checkbox]{accent-color:#2a805b;width:16px;height:16px}.form-actions{display:flex;justify-content:flex-end;gap:9px;margin-top:26px;padding-top:20px;border-top:1px solid #eaf0e3}.form-actions>.danger{margin-right:auto}.danger{color:#b97d68}.red-icon{background:#fcf1eb;border-color:#f0e0d4;color:#b78a6b}.full{width:100%}.link-actions{display:flex;justify-content:space-between;margin:16px 0}.grant-picker{max-height:310px;overflow:auto;margin:20px 0}.grant-option{display:flex;align-items:center;gap:13px;border:1px solid #e2ead9;border-radius:8px;padding:15px 13px;margin:9px 0;cursor:pointer;color:#8ba276}.grant-option.checked{background:#f0f7e9;border-color:#b4cea0}.grant-option strong{font-size:12px;font-weight:500;color:#5d7a4e}.grant-option small{display:block!important;margin-top:5px;font-size:10px;color:#9aaa8e}.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);max-width:90vw;z-index:100;display:flex;align-items:center;gap:11px;background:#193d2c;color:#eff8e6;border:1px solid #426144;border-radius:10px;padding:16px 20px;font-size:12px;line-height:1.6;box-shadow:0 10px 40px #123f2340}.toast button{border:0;background:none;color:#a9c29b;padding:2px}.loading{display:flex;gap:10px;align-items:center;justify-content:center;padding:70px;color:#8c9e80}.spin{animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.client-page{min-height:100vh;background:#f4f7f0;padding:40px 22px}.client-wrap{max-width:440px;margin:auto}.client-brand{color:#244e2a;padding:0;font-size:21px}.client-brand .brand-light{color:#8ca27d;font-size:19px}.client-brand .brand-icon{background:#e3edd8;color:#5c8546}.client-head{padding:42px 0 27px}.client-head h1{font-size:29px;color:#355b2d}.client-head .eyebrow{color:#97ae84;font-size:10px}.client-head p{font-size:12px;color:#9aaa8d;line-height:1.7;margin-top:10px}.gate-list{display:grid;gap:17px}.gate-card{padding:24px;border-radius:14px;border:1px solid #e1ead8;background:white;box-shadow:0 3px 8px #54763004}.gate-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:23px}.gate-symbol{width:53px;height:53px;border:1px solid #e1ead7;border-radius:12px;background:#f3f7ec;display:grid;place-items:center;color:#89a66e}.gate-card h2{font-size:20px;color:#42643a}.gate-card>p{margin:9px 0 23px;font-size:11px;color:#a2b08f;display:flex;gap:6px;align-items:center}.gate-button{width:100%;padding:14px;background:#417a39;border-color:#417a39;justify-content:flex-start}.gate-button svg:last-child{margin-left:auto}.client-footer{display:flex;align-items:center;justify-content:center;gap:6px;flex-wrap:wrap;font-size:10px;color:#98aa86;line-height:1.7;text-align:center;padding:30px 0}.client-footer span{display:block;width:100%;font-size:9px;color:#afbaa2;margin-top:4px}.preview-modal{padding:0;width:420px}.preview-label{padding:19px 23px;background:white;display:flex;align-items:center;gap:8px;font-size:11px;color:#8da47a;border-bottom:1px solid #e4ecd9;position:sticky;top:0;z-index:1}.preview-modal .client-page{min-height:auto;padding:27px 23px}.preview-modal .client-head{padding-top:29px}.preview-modal .notice{font-size:10px}.preview-modal .gate-card{padding:19px}.preview-modal .client-brand{font-size:19px}.preview-modal .client-head h1{font-size:26px}.preview-modal .brand-light{font-size:17px}.preview-modal .client-footer{padding-bottom:5px}
@media(min-width:1550px){.main{padding:45px 55px 0}.topbar{padding:0 55px}.page-heading{margin-bottom:35px}.intro-banner{min-height:230px}.banner-copy{padding:31px 35px}.banner-art{margin-right:60px}}
@media(max-width:1200px){.sidebar{width:214px;padding-left:14px;padding-right:14px}.main-shell{margin-left:214px}.brand{font-size:20px;gap:8px}.brand-light{font-size:17px}.main{padding:28px 25px 0}.topbar{padding:0 25px}.page-heading{align-items:flex-start}.page-heading h1{font-size:27px}.heading-actions{flex-direction:column;padding-top:0}.stats-grid{gap:12px}.stat-card{padding:18px 16px}.stat-card small{font-size:9px}.banner-copy h2{font-size:22px}.banner-art{width:265px;margin:0}.art-phone{left:83px}.floating-key{left:27px}.floating-check{left:216px}.controller-grid{grid-template-columns:repeat(2,1fr)}.settings-grid{grid-template-columns:1fr}.table-footer{flex-wrap:wrap}.top-status{font-size:10px}.section-heading{padding:20px}}
@media(max-width:850px){.sidebar{width:75px;padding:24px 10px 0}.brand{padding:0;justify-content:center}.brand>span:last-child,.workspace,.nav-label,.nav-item>span,.help-box,.admin-profile div,.admin-profile>a{display:none}.brand-icon{width:37px;height:37px}.sidebar nav{margin-top:36px}.nav-item{justify-content:center;padding:15px 0}.nav-item svg{width:21px;height:21px}.sidebar-bottom{padding-top:0}.admin-profile{padding:20px 0;justify-content:center}.main-shell{margin-left:75px}.stats-grid{grid-template-columns:repeat(2,1fr)}.stat-card small{font-size:10px}.page-heading h1{font-size:27px}.breadcrumb{font-size:10px;gap:6px}.top-status{font-size:0;gap:3px}.top-avatar{font-size:11px}.bottom-grid{grid-template-columns:1fr}.banner-copy{padding:25px}.banner-copy h2{font-size:21px}.banner-art{width:210px;flex-shrink:0}.art-phone{left:55px}.floating-key{left:4px;width:38px;height:38px}.floating-check{left:185px}.intro-banner{min-height:217px}.banner-copy p{font-size:11px}.banner-copy p br{display:none}.banner-tag{font-size:8px}.main-footer{font-size:9px}.table-tools{flex-wrap:wrap}}
@media(max-width:600px){.sidebar{width:59px;padding:21px 8px 0}.brand-icon{width:33px;height:33px}.brand-icon svg{width:22px}.main-shell{margin-left:59px}.main{padding:22px 16px 0}.topbar{height:61px;padding:0 16px}.top-avatar{margin-left:9px}.page-heading{display:block;margin-bottom:22px}.page-heading h1{font-size:26px;line-height:1.2}.page-heading p{font-size:11px;line-height:1.7;margin-top:10px}.eyebrow{font-size:8px}.heading-actions{flex-direction:row;margin-top:18px;gap:7px}.primary,.secondary{font-size:10px;padding:10px 12px}.stats-grid{gap:10px;margin-bottom:17px}.stat-card{padding:16px 13px}.stat-top{font-size:10px}.stat-top svg{width:16px}.stat-number{font-size:29px;margin-top:9px}.stat-number span{font-size:9px;margin-left:6px}.stat-card small{font-size:8px;line-height:1.6;gap:4px;min-height:20px}.intro-banner{min-height:205px;margin-bottom:18px}.banner-copy{padding:24px 20px}.banner-copy h2{font-size:20px;max-width:210px;line-height:1.3}.banner-copy p{max-width:200px;font-size:10px}.banner-art{display:none}.banner-copy button{font-size:10px}.banner-tag{font-size:7px}.section-heading{padding:18px 16px;gap:10px;flex-wrap:wrap}.section-heading h2{font-size:13px}.section-heading p{font-size:10px}.section-heading>.text-button{font-size:9px}.empty{padding:34px 17px}.empty h3{font-size:15px}.empty p{font-size:10px}.bottom-grid{gap:17px;margin-top:17px}.setup-card>p{padding:0 17px;font-size:10px}.setup-card>.secondary{margin-left:17px}.main-footer{font-size:8px;gap:8px}.main-footer svg{width:11px}.main-footer span:last-child{gap:3px}.controller-grid{grid-template-columns:1fr;gap:15px}.controller-card{padding:21px}.settings-grid{gap:18px}.settings-body{padding:20px 17px}.modal-backdrop{padding:15px}.modal{padding:25px 21px;max-height:94vh;border-radius:12px}.modal h2{font-size:21px}.form-actions{gap:7px;flex-wrap:wrap}.form-actions .text-button{font-size:10px}.modal-desc{font-size:11px}.tabs button{font-size:10px;padding:7px}.table-tools{padding:14px 16px}.search{width:100%}.search input{width:100%}.table-footer{padding:15px;font-size:9px;gap:4px}.toolbar{font-size:10px}.pill{font-size:9px}.preview-modal{padding:0}.topbar .breadcrumb{font-size:9px}.client-page{padding:29px 20px}.client-head h1{font-size:28px}.gate-card{padding:22px}.gate-button{font-size:13px;padding:14px}.toast{font-size:11px;padding:13px 15px;bottom:15px;width:90vw}.notice{font-size:10px}.settings-body .notice{font-size:10px}}
/* Readable secondary text on the light dashboard surfaces. */
.page-heading p,.stat-top,.stat-card small,.section-heading p,.person small,.empty p,.table-footer,.table-footer span,.setup-card>p,.setting-line p,.security-item p,.row-sub,.hint,.modal-desc,.modal label small,.client-head p,.gate-card>p{color:#71816e}th{color:#72816e}.controller-card>p,.controller-meta>span,.event-row small,.event-row time,.search,.main-footer{color:#788772}.banner-copy p{color:#6c8269}.notice{color:#6c7d57}.client-footer{color:#7d8d6c}.client-footer span{color:#879575}.green{color:#487741}.pill.gray{color:#71806b}.amber-pill{color:#91752d}.brand-light{color:#b6cbc4}

.auth-wrap{max-width:470px;margin:65px auto;padding:0 20px}.auth-brand{font-size:26px;font-weight:700;letter-spacing:-.8px;color:#194c36;margin-bottom:28px;text-align:center}.auth-brand span{font-weight:400;color:#71866c}.auth-card{background:white;border:1px solid #dde7d5;border-radius:14px;padding:32px}.auth-card h1{font-size:28px}.auth-form label{display:block;font-size:12px;color:#64785a;margin:20px 0}.auth-form input{display:block;width:100%;padding:12px;border-radius:6px;border:1px solid #d6e3cd;margin-top:8px;color:#355b2c}.auth-form .primary{margin-top:8px}.auth-footer{text-align:center;font-size:10px;color:#859877;margin:20px}.auth-form>.text-button{margin-top:16px;display:block;text-align:center}

/* HatPol branding */
.hatpol-logo{display:block;width:90px;height:52px;object-fit:contain;background:#fff;border-radius:7px;padding:4px;flex-shrink:0}.brand{gap:10px}.auth-brand{display:flex;align-items:center;justify-content:center;gap:12px}.client-brand .hatpol-logo{width:90px;height:52px}

.activation-card{padding:28px;display:flex;flex-direction:column;gap:18px}.activation-card p,.activation-card small{color:#6c7d72;line-height:1.7}.activation-card input{font-size:26px;letter-spacing:10px;text-align:center;padding:14px;border:1px solid #d6e3cd;border-radius:7px}.generated-pin{font-size:24px!important;letter-spacing:8px;font-weight:700}.invitation-text{width:100%;resize:vertical;padding:12px;border:1px solid #d6e3cd;border-radius:6px;font:inherit;line-height:1.6;overflow-wrap:anywhere}

/* Validity, quotas and email activation */
.policy-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.weekday-picker{border:1px solid #d6e3cd;border-radius:8px;padding:12px;display:flex;flex-wrap:wrap;gap:12px}.weekday-picker legend{font-size:12px;color:#64785a}.weekday-picker label{display:flex;align-items:center;gap:5px;margin:0;font-size:12px}.weekday-picker input{width:auto;margin:0}.quota-summary{display:flex;flex-direction:column;gap:7px;margin:15px 0;color:#416850;line-height:1.5}.quota-summary strong{font-size:13px}.quota-summary span,.quota-summary small{font-size:12px}.quota-summary p{font-size:12px;color:#a24c3a}.activation-card form{display:flex;flex-direction:column;gap:16px}.activation-card label{display:flex;flex-direction:column;gap:8px;font-size:12px}.activation-card input[type=email]{font-size:16px;letter-spacing:normal;text-align:left}.settings-body form label{display:flex;flex-direction:column;gap:8px;font-size:12px}.settings-body form input{padding:10px;border:1px solid #d6e3cd;border-radius:6px;max-width:160px}.settings-body form .primary{margin-top:14px}.modal .notice{white-space:normal}.modal:has(.weekday-picker){max-width:620px}.activation-card .text-button{white-space:normal}@media(max-width:560px){.policy-grid{grid-template-columns:1fr}.weekday-picker{gap:10px}}

@media(max-width:600px){.sidebar .hatpol-logo{width:36px;height:36px;padding:2px}.sidebar .brand{padding:0;justify-content:center}}

/* Compact access tiles */
.client-page{padding:16px 12px}.client-wrap{max-width:720px}.client-brand{margin-bottom:20px!important}.client-brand .hatpol-logo{width:70px;height:42px}.client-head{margin-bottom:16px!important}.client-head h1{font-size:24px}.client-head p{font-size:12px;margin-top:6px}.client-head .eyebrow{margin-bottom:6px}.client-wrap>.notice{padding:9px 12px;font-size:10px;margin-bottom:14px}.controller-tiles{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 10px}.controller-tile{min-width:0}.tile-button{width:100%;aspect-ratio:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:13px 8px;background:#28764f;color:white;border:1px solid #216c45;border-radius:16px;box-shadow:0 3px 8px #153d2710;white-space:normal}.tile-button:hover:not(:disabled){background:#1c6040}.tile-button:active:not(:disabled){transform:scale(.97)}.tile-button:disabled{opacity:.65}.is-blocked .tile-button{background:#e5ece6;border-color:#d3dfd6;color:#7a8b7d;opacity:1}.tile-name{line-height:1.18;font-weight:600;overflow-wrap:anywhere;max-width:100%;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}.tile-meta{display:flex;flex-wrap:wrap;justify-content:center;gap:3px 7px;text-align:center;font-size:10px;line-height:1.5;color:#6f8174;padding:7px 1px 0}.tile-meta small{flex-basis:100%;font-size:10px;color:#8f6353}.tile-meta b{font-weight:600;color:#39634b}.client-footer{margin-top:22px!important;font-size:10px}.client-footer span{font-size:10px}.settings-body>label{display:block;font-size:12px;margin:15px 0}.settings-body>label input{display:block;width:100%;margin-top:8px;padding:10px;border:1px solid #d6e3cd;border-radius:6px}.settings-body form input[type=email]{max-width:100%;width:100%}.settings-body .checkbox-label{flex-direction:row;align-items:center;margin-top:12px}.settings-body .checkbox-label input{width:auto;margin:0}.preview-modal .client-page{padding:14px}.preview-modal{max-width:450px}@media(min-width:380px){.controller-tiles{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(min-width:680px){.controller-tiles{grid-template-columns:repeat(4,minmax(0,1fr))}}

.client-topline{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.client-topline .client-brand{margin-bottom:0!important}.client-topline>.icon-button{color:#64846f}

/* Access panel: size columns to the actual container, including the preview. */
.controller-tiles{grid-template-columns:repeat(auto-fit,minmax(min(100%,112px),1fr));gap:14px 12px}
.controller-tiles:has(>.controller-tile:only-child){grid-template-columns:minmax(0,180px)}
.client-page .client-topline{margin-bottom:18px}
.client-page .client-head{padding:0;margin-bottom:18px!important}
.client-page .client-head h1{font-size:22px;line-height:1.25;margin:0;color:#244a36;letter-spacing:-.35px}
.client-page .client-head .eyebrow{color:#596e5c;letter-spacing:1.5px;margin-bottom:5px}
.client-page .client-head p{color:#526555;margin-top:6px;line-height:1.5}
.client-wrap>.notice{font-size:11px;line-height:1.5;color:#526144}
.client-page .tile-name{line-height:1.3;font-weight:600;letter-spacing:0}
.client-page .tile-meta{font-size:11px;color:#526555;line-height:1.45}
.client-page .tile-meta small{font-size:11px;color:#81503f}
.client-page .client-footer{margin-top:18px!important;padding:12px 0 4px;color:#526555;font-size:11px;line-height:1.5}
.client-page .client-footer span{font-size:11px;line-height:1.5;color:#596b58}
.preview-modal .preview-label{color:#536a55;font-size:11px;padding:14px 18px}
.client-page .brand-light{color:#526e56}


/* User groups, combined filters and batch link export. */
.directory-filters{display:grid;grid-template-columns:repeat(4,minmax(130px,1fr));gap:14px;padding:20px 24px 12px}.directory-filters label,.directory-export label,.directory-bulk label,.group-create label{display:flex;flex-direction:column;gap:7px;color:#526555;font-size:12px}.directory-filters input,.directory-filters select,.directory-export select,.directory-bulk select,.group-create input{min-width:0;max-width:100%;padding:10px;border:1px solid #d6e3cd;border-radius:7px;background:white;color:#244a36;font:inherit}.directory-search{grid-column:span 3}.directory-filters>.text-button{align-self:end;justify-self:start}.directory-caption{font-size:11px;line-height:1.6;color:#526555;padding:0 24px 16px}.directory-bulk,.directory-export{display:flex;align-items:center;flex-wrap:wrap;gap:14px;padding:18px 24px;background:#f4f7f1;border-top:1px solid #e1e8dd}.directory-bulk strong{font-size:12px}.directory-bulk label{min-width:160px}.directory-export{align-items:end}.directory-export>div{flex:1 1 240px}.directory-export strong{font-size:13px;color:#244a36}.directory-export p{font-size:11px;color:#526555;line-height:1.6;max-width:430px;margin:6px 0 0}.directory-export label{flex:0 1 auto}.directory-export>.primary{white-space:normal}.user-directory .notice{margin:0 24px 16px}.user-directory input[type=checkbox]{width:16px;height:16px;accent-color:#19765d;cursor:pointer}.group-badges{display:flex;gap:5px;flex-wrap:wrap;min-width:120px;max-width:220px}.group-badges span{background:#eef4ee;color:#39634b;border-radius:5px;padding:4px 7px;font-size:11px;overflow-wrap:anywhere}.added-date{white-space:nowrap;font-size:12px}.group-management-panel{margin-top:20px}.groups-manager{padding:24px}.group-manager-head{display:flex;justify-content:space-between;gap:14px}.group-manager-head h2{font-size:17px}.group-manager-head p{font-size:12px;line-height:1.5;color:#526555}.group-create{display:flex;gap:10px;align-items:end;flex-wrap:wrap;margin:18px 0}.group-create label{flex:1 1 200px}.groups-list>div{display:flex;align-items:center;gap:8px;border-top:1px solid #e1e8dd;padding:12px 0;flex-wrap:wrap}.groups-list>div>span{flex:1 1 200px;overflow-wrap:anywhere}.groups-list small{display:block;font-size:11px;color:#526555;margin-top:5px}.group-delete-confirm{flex-basis:100%;background:#fff2ec;padding:14px;border-radius:7px}.group-delete-confirm p{font-size:12px;line-height:1.6;margin:0 0 12px}.group-delete-confirm button{margin-right:8px}.group-picker{border:1px solid #d6e3cd;border-radius:8px;padding:12px;max-height:180px;overflow:auto;margin:18px 0}.group-picker legend{font-size:12px;color:#526555}.modal .group-picker label,.group-picker label{display:flex;align-items:center;gap:8px;font-size:12px;margin:8px 0;overflow-wrap:anywhere}.modal .group-picker input,.group-picker input{width:16px;margin:0;flex:none}.group-picker p{font-size:12px;color:#526555;line-height:1.6}@media(max-width:800px){.directory-filters{grid-template-columns:repeat(2,minmax(0,1fr))}.directory-search{grid-column:span 2}}@media(max-width:480px){.directory-filters{padding:16px;gap:12px}.directory-export,.directory-bulk{padding:16px}.directory-export label{width:100%}.directory-export>.primary{width:100%}.directory-caption{padding:0 16px 14px}.groups-manager{padding:16px}.group-create>.primary{width:100%}}

/* Objects contain controllers independently of user groups and access grants. */
.controller-directory{margin-bottom:20px}.object-filters{grid-template-columns:minmax(160px,1fr) minmax(140px,1fr) minmax(180px,2fr)}.object-toolbar{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;padding:0 24px 18px}.object-toolbar .checkbox-label{display:flex;align-items:center;gap:9px;font-size:12px;color:#526555;margin:0}.object-toolbar input,.controller-top>input{accent-color:#19765d;width:16px;height:16px;cursor:pointer}.controller-top>input{margin-right:8px;flex:none}.controller-top .controller-icon{margin-right:auto}.object-badge{display:inline-block;max-width:100%;font-size:11px;line-height:1.5;color:#39634b;background:#eef4ee;border-radius:5px;padding:4px 8px;margin-bottom:8px;overflow-wrap:anywhere}.modal select{display:block;width:100%;padding:11px 12px;border:1px solid #d6e3cd;border-radius:6px;margin-top:8px;font:inherit;background:white;color:#355b2c}.modal label>small{display:block;font-size:11px;line-height:1.5;margin-top:7px;color:#64785a}.grant-picker:empty:after{content:'—';display:block;padding:12px;color:#64785a}@media(max-width:800px){.object-filters{grid-template-columns:1fr 1fr}.object-search{grid-column:span 2}}@media(max-width:480px){.object-toolbar{padding:0 16px 16px}}

/* Installer import and local TTLock API meter. */
.user-import{margin-bottom:20px}.import-body{padding:0 24px 24px}.import-body>label,.import-options>label{display:flex;flex-direction:column;gap:8px;font-size:12px;color:#526555;margin:16px 0}.import-options .checkbox-label{flex-direction:row;align-items:center}.import-options select{padding:10px;border:1px solid #d6e3cd;border-radius:7px;background:white;color:#244a36;font:inherit;max-width:100%}.import-template{display:flex;gap:12px;flex-wrap:wrap}.import-body .notice{font-size:12px;line-height:1.6}.import-filename{display:block;font-size:11px;color:#526555;margin-top:10px;overflow-wrap:anywhere}.import-preview{margin-top:20px}.import-preview h3{font-size:14px;line-height:1.6}.import-preview>p{font-size:12px;line-height:1.6}.import-preview>.table-scroll{max-height:360px;border:1px solid #e1e8dd;border-radius:7px;margin:12px 0}.import-preview th{position:sticky;top:0;background:#f5f8f2}.import-preview>.checkbox-label{display:flex;gap:9px;align-items:center;font-size:12px;margin:16px 0}.api-meter{padding:20px 24px;margin-bottom:20px;display:flex;justify-content:space-between;align-items:center;gap:14px;flex-wrap:wrap}.api-meter h2{font-size:24px;line-height:1.3;margin:8px 0}.api-meter p,.api-meter small{font-size:12px;color:#526555;line-height:1.6}.api-meter small{display:block;margin-top:7px}.api-meter progress{display:block;width:100%;height:10px;accent-color:#19765d;margin-top:10px}.api-meter>div{flex:1 1 300px}.api-meter .meter-disclaimer{flex-basis:100%;font-size:11px;margin:0}.api-meter-settings .settings-body .checkbox-label{display:flex;flex-direction:row;gap:8px;align-items:center}.api-meter-settings .checkbox-label input{width:auto;margin:0}.api-meter-settings .settings-body input[type=email]{width:100%;max-width:100%}.api-meter-settings .settings-body small{font-size:11px;color:#526555}@media(max-width:480px){.import-body{padding:0 16px 16px}.api-meter{padding:16px}.api-meter h2{font-size:21px}}

/* Compact, fully clickable group options in the user form. */
.modal .group-picker,.group-picker{max-height:none;overflow:visible;padding:10px 12px 12px;margin:18px 0;border-color:#d8e4da;background:#fbfcfa;border-radius:10px;min-width:0}
.group-picker-toolbar{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;margin:0 0 9px}
.group-picker-count{font-size:12px;line-height:1.5;color:#526555}
.group-picker-toolbar .text-button{font-size:11px;padding:2px 0;min-height:28px}
.group-picker-options{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,170px),1fr));gap:8px;max-height:224px;overflow-y:auto;padding:2px}
.modal .group-picker .group-option,.group-picker .group-option{position:relative;display:flex;align-items:center;gap:10px;min-height:44px;padding:10px 12px;margin:0;border:1px solid #d7e2d9;border-radius:8px;background:white;color:#304e3c;font-size:13px;line-height:1.4;cursor:pointer;transition:background .12s,border-color .12s;min-width:0}
.modal .group-picker .group-option:hover,.group-picker .group-option:hover{background:#f0f6f0;border-color:#91af9b}
.modal .group-picker .group-option.is-selected,.group-picker .group-option.is-selected{background:#e6f3e9;border-color:#24734e;color:#195438}
.modal .group-picker .group-option input,.group-picker .group-option input{position:absolute;left:0;top:0;width:1px;height:1px;padding:0;margin:0;border:0;opacity:0;clip-path:inset(50%);overflow:hidden}
.group-option:has(input:focus-visible){outline:3px solid #a5c7b0;outline-offset:2px}
.group-option-box{display:flex;align-items:center;justify-content:center;flex:0 0 20px;width:20px;height:20px;border:1px solid #93a797;border-radius:5px;background:white;color:white}
.is-selected .group-option-box{background:#24734e;border-color:#24734e}
.group-option-name{min-width:0;overflow-wrap:anywhere;font-weight:500}
.modal .group-picker .group-picker-search,.group-picker .group-picker-search{display:block;margin:0 0 10px;font-size:11px;color:#526555}
.group-picker-search>span{display:block;margin-bottom:6px}
.group-picker-search>div{display:flex;align-items:center;gap:8px;padding:0 10px;border:1px solid #d7e2d9;border-radius:7px;background:white}
.modal .group-picker .group-picker-search input,.group-picker .group-picker-search input{position:static;width:100%;height:auto;padding:9px 0;margin:0;border:0;background:transparent;letter-spacing:normal;outline:none;font:inherit;font-size:13px;color:#304e3c}
.group-picker-search>div:focus-within{outline:2px solid #a5c7b0;outline-offset:1px}
.group-picker .group-picker-empty{grid-column:1/-1;margin:2px 0;font-size:12px;line-height:1.5;color:#526555}

/* Group actions stay readable on both wide and small screens. */
.groups-list .icon-button{width:auto;min-height:36px;gap:6px;padding:7px 9px;white-space:nowrap}
.groups-list .icon-button span{font-size:12px}
.bulk-delete-modal{width:min(540px,calc(100vw - 24px))}
.bulk-delete-list{max-height:220px;overflow-y:auto;padding-left:22px;overflow-wrap:anywhere;font-size:13px;line-height:1.6}
@media(max-width:540px){.groups-list>div{flex-wrap:wrap}.groups-list>div>span{min-width:100%;margin-bottom:6px}}
.bulk-delete-control:has(>button){padding:0 22px 16px;background:#f4f7f0}
.controller-connection{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:12px 0;padding-top:10px;border-top:1px solid #edf1eb}
.connection-badge{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:#6b756e}
.connection-online{color:#17663f}.connection-offline{color:#a13a32}
.controller-connection>small{width:100%;font-size:11px;color:#657c6c;line-height:1.5}
.controller-connection .text-button{font-size:12px;margin-left:auto;min-height:36px}
.controller-footer{flex-wrap:wrap;gap:10px}.controller-footer .controller-open{display:inline-flex;gap:7px;align-items:center;justify-content:center;padding:10px 18px;min-height:42px}
/* Compact controller cards: name beside the icon, metadata in one row. */
.compact-controller-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;align-items:stretch}
.compact-controller-grid .controller-card{padding:14px;min-width:0;display:flex;flex-direction:column}
.compact-controller-grid .controller-top{align-items:center;gap:9px;margin-bottom:9px}
.compact-controller-grid .controller-top>input{margin:0;flex:none}
.compact-controller-grid .controller-top .controller-icon{width:32px;height:32px;margin:0;border-radius:7px;flex:none}
.compact-controller-grid .controller-top h2{font-size:15px;line-height:1.35;margin:0;flex:1;min-width:0;overflow-wrap:anywhere}
.compact-controller-grid .controller-top .icon-button{width:30px;height:32px;flex:none}
.compact-controller-grid .object-badge{align-self:flex-start;margin-bottom:4px;padding:2px 6px;font-size:10px}
.compact-controller-grid .controller-card>p{font-size:11px;line-height:1.4;margin:3px 0 10px;overflow-wrap:anywhere;min-width:0}
.compact-controller-grid .controller-meta{display:flex;flex-wrap:wrap;gap:6px 14px;padding:7px 0;border:0;border-radius:0;background:transparent;border-top:1px solid #edf1eb}
.compact-controller-grid .controller-meta>span{display:inline-flex;gap:6px;font-size:11px;margin:0;line-height:1.5}
.compact-controller-grid .controller-meta b{color:#315447}
.compact-controller-grid .controller-connection{gap:3px 7px;padding-top:7px;margin:0 0 8px}
.compact-controller-grid .connection-badge{font-size:11px;line-height:1.35}
.compact-controller-grid .controller-connection .text-button{font-size:11px;min-height:32px;padding:3px 0}
.compact-controller-grid .controller-connection>small{font-size:10px}
.compact-controller-grid .controller-footer{margin-top:auto;padding-top:5px;gap:6px}
.compact-controller-grid .controller-footer .controller-open{min-height:38px;padding:8px 13px;font-size:12px}
.controller-directory .section-heading .controller-status-note{font-size:11px;margin-top:5px;max-width:700px}
@media(max-width:1400px){.compact-controller-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:1100px){.compact-controller-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:680px){.compact-controller-grid{grid-template-columns:minmax(0,1fr)}.compact-controller-grid .controller-card{padding:13px}}
