@font-face{font-family:Hanken Grotesk Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(data:font/woff2;base64,d09GMgABAAAAAAaEABMAAAAADFgAAAYdAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGhYbbhwoP0hWQVJpBmA/U1RBVIE4AFwvbBEICoJ8gkMLFAAwhCoBNgIkAyIEIAWGUAdiDAcbvgpRVHJOI/viwCYyfSFrJjFIG8raYpYj9+IeSF0s6zD+Lk/4OGrZHhHV+wvt2ffuWPwlA51lIICIosSVmyOKEs5Uzlx3NKeXIgn1ssCydUybDV0IHga+SszIyfrQe9bLTFNxjayzgs76hNsDoSYtRe32fiJ4gxBjrP8L+w//zzHjv7Yqyr9o2vOBDXhCo2jMtr4uwAK/gV1U0PxAq/EAD+yW9EoKOL1KLw8rHrFgCSgRTQRzBzpeXVhweEDlyfY8gIoOa2CQJzrTAHIIoitTMVV2dyFwpJ2iAEQTpSkhPitxD3YwuZHEagTcAhyKAcBmUyPdhTovJThOw6HYiaF2M/J7erdi2OUutor6ES6Ac88AvfZvKpb6fJoArohb524042j6Jij36NI7P8Pb7s721naN9gcTtcjXQP4l+8BKEzFVGMxxoHqlq8Ul4LGneFJBDFaOdKpLPcg8P14YSDwIcn75hdlyJLTBlZ4voL6tT46yC/njunXqpJ0/bSvmrH1o3kRlwZ+j0DBogkF3KbDRVBlbOc+fY5HVXwPoT9hfekPnyZMaEmenYLMSg5npqegFOsgXsBv1IoF9aIVfSCNHkk6+gIzILsiYuhWQCfUtZEpbkRntQxBZgw7MwFbMcRvwJrAnBlDqs7isLtL7pO84Xru1i7ah7tckH1Wreqq6K9u0amxU1bcff/s2Y1ni3rh2I8zHzqkm3PGvv3mzC6NDBz/UcOBIg+nm88rxN8MbdtypvHUL5o1c2zG0urYpRmW+VHZdiba6GXN/3v0B3i3nt4RBsbfAu8ftLqRcTIlZ4VYheFTAS5nXLS65VZrbuW3daF2Ze1ChyGXWZN6u9nUuH1LfyTERifZXEpIueMe28vF8FOoTnsONzw+1djo9P71lZGx1vM8mH/BhvSa2HDsRZ1+Ul+RmpnPOIaEuwWnZZdkgQWAAyCDDZ1wk+0sh7wseAAwA6UlHxbftCgYAAwKAgwIAEA7ACfHIRbV7J6dwF/ZzcRRmAjXUYKAGWAlDCCFmKnH+LJEQfHKEmVrfmKwSEab36AcubXQBoDYJV/aRV+funFD8wAXLSLYbwr9+DR+h/qZIKCfeqRG5ghHpdY0zcV2nuz5iJMhAFjaTDwOcoyKGG9JHrCfdp4cC+kCvUrxc7+bliIMiHj95sPIbUeWZEP/HLnN2tlr9EBeRiktHuWvErx98fRz1MuEvHO3FDRgtsSzL/P0hsDLK2n5/uHMOjvTst0HD6t+80ZN798j7j//kjqHxIOZDFPR/FxurFD6/HxGbB799RPHLx5F89MoBOub9jVuOWtmPH3o9H3r26DIuff+LqPLwff/xryDRmiAYmjxiK0GwS9XU+k8QpUrHsCTs4qH89Fv44ubWbQmOE51M7J8Pt8+h+NKt3zZpa2L9zZqcRlyEc4MaNGdfjQCxgIygn78ne4yAzcLWA3zAJ6RRGbijvHr1W+XN8ywrG0EoZSySb0/A9KsllI7Q/Pq8hLu76tfTy5cF4X8bQxTtYp2vr6/+1oI4AhgAlNYFryt62VaX9ktO6VsAeDLeWx6fff4vdV1ts7N6+gw9GCsQnqPB0QUttB9nEc7Aaf4XM0NQ90VJ+HV1rG04znGCmXcpPCA9+nxdMPgPlT7Dz83NMfZuMJaNeRqbc+tjd2QER/b0B44d7nv5Rif7VC8svYkx9SKWwb3YzN2M3cY8jSNLl+PYZqfjxNTxOLXVCmfmduDc0ty1kLbjeiGfIrDFJXWPTTMD5TKupR8cpZgJeXTofId8NoUj6E8XfAc2k4WPdbCberDYAp8Q7L5dUo8wE8cs9QINZYvwXKzvBS4v/n+fQZkGrrFysKEIuFBgjQpxiHH1XA+ZBI+C+oAoxhYKECc42rGOc8L4mYhsiThGfFjOcKmFubPpDgwnY1918Fwo8ouenDJxvGP96HFWJ28hiOy251oKjkcbGz2POMme8CTMThx6wqOPsFtPI6j6HhDyDTxFQYnL88FcXGAGHl3ZuueRbEuxbK6Hc84ZDvRrREtLzyjj8Xkd/uShR1b0sYd8Nh8/c8znxCnadxQcf2nFVWIyw1g+4StXav9j75s+CQAA)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Hanken Grotesk Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/hanken-grotesk-vietnamese-wght-normal-CHiFlh_0.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Hanken Grotesk Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/hanken-grotesk-latin-ext-wght-normal-Dg-wlmqe.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:Hanken Grotesk Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/hanken-grotesk-latin-wght-normal-CaVRRdDk.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--brand:#005c34;--brand-strong:#00472a;--brand-deep:#003a22;--brand-soft:#e3efe7;--brand-line:#b5d3c1;--brand-text:#005c34;--mint:#9fe0bb;--brass:#b8892a;--bg:#f4f6f1;--surface:#fff;--surface-2:#eef2ec;--text:#0f2a1e;--muted:#56675d;--line:#d6e4da;--success:#1a7f4b;--danger:#b42318;--danger-soft:#fdecea;--on-brand:#fff;--font-display:"sirenia", "Sirenia", Georgia, "Times New Roman", serif;--font-body:"Hanken Grotesk Variable", system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;--radius:18px;--radius-sm:12px;--wrap:1120px;--wrap-narrow:760px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--text);font:16px/1.55 var(--font-body);font-variant-numeric:tabular-nums;-webkit-font-smoothing:antialiased;margin:0}a{color:var(--brand-text)}:focus-visible{outline:3px solid color-mix(in srgb, var(--brand) 50%, transparent);outline-offset:2px}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.skip{position:absolute;left:-999px}.skip:focus{z-index:20;background:var(--surface);border-radius:var(--radius-sm);padding:8px 12px;top:8px;left:16px}.display-xl{font-family:var(--font-display);letter-spacing:-.02em;text-wrap:balance;margin:0 0 14px;font-size:clamp(2.45rem,7vw,3.8rem);font-weight:900;line-height:1}.display{font-family:var(--font-display);letter-spacing:-.015em;margin:0 0 4px;font-size:clamp(1.95rem,4vw,2.45rem);font-weight:800;line-height:1.05}h2{font-family:var(--font-display);margin:0;font-size:1.25rem;font-weight:700;line-height:1.2}.lead{max-width:36ch;margin:0;font-size:1.25rem;line-height:1.45}.muted{color:var(--muted)}p.muted{margin:0}.small{font-size:.875rem}.strong{font-weight:650}.nowrap{white-space:nowrap}.mono{font-variant-numeric:tabular-nums slashed-zero;letter-spacing:.04em}.warn-text{color:var(--danger);font-weight:650}.ok-text{color:var(--success);font-weight:650}.pad-y{padding:24px 0}.topbar{z-index:10;background:color-mix(in srgb, var(--surface) 88%, transparent);-webkit-backdrop-filter:saturate(1.4)blur(12px);backdrop-filter:saturate(1.4)blur(12px);color:var(--text);border-bottom:1px solid var(--line);position:sticky;top:0}.topbar-inner{justify-content:space-between;align-items:center;gap:16px;max-width:1340px;margin:0 auto;padding:14px 16px;display:flex}.brand{color:inherit;align-items:center;gap:12px;min-width:0;text-decoration:none;display:flex}.lockup{align-items:center;gap:16px;min-width:0;display:inline-flex}.lockup-logo{flex-shrink:0;width:auto;height:32px;display:block}.signin-brand .lockup-logo{filter:brightness(0)invert()}.lockup-divider{background:color-mix(in srgb, var(--brand-text) 35%, transparent);flex-shrink:0;width:1.5px;height:34px}.signin-brand .lockup-divider{background:#fff6}.lockup-text{flex-direction:column;min-width:0;line-height:1.2;display:flex}.lockup-school{font-family:var(--font-display);white-space:nowrap;text-overflow:ellipsis;font-size:1.05rem;font-weight:700;overflow:hidden}.topbar .lockup-school{color:var(--brand-text)}.lockup-app{opacity:.8;white-space:nowrap;font-size:.85rem}.topbar .lockup-app{color:var(--muted);opacity:1}.nav{align-items:center;gap:4px;min-width:0;margin-left:auto;display:flex}.nav a:not(.link-light){white-space:nowrap;color:var(--muted);border-radius:999px;padding:6px 12px;font-size:.925rem;font-weight:600;text-decoration:none}.nav a:not(.link-light):hover{color:var(--text);background:var(--surface-2)}.nav a.active{color:var(--brand-text);background:var(--brand-soft)}.user{border-left:1px solid var(--line);flex-shrink:0;align-items:center;gap:10px;margin-left:8px;padding-left:12px;display:flex}.link-light{white-space:nowrap;color:var(--muted);font-size:.875rem;text-decoration:none}.link-light:hover{color:var(--text);text-decoration:underline}.avatar{background:var(--brand-soft);width:38px;height:38px;color:var(--brand-text);font-family:var(--font-display);border-radius:50%;flex-shrink:0;place-items:center;font-size:.9rem;font-weight:800;display:inline-grid}.avatar-light{width:32px;height:32px}.page{max-width:var(--wrap);margin:0 auto;padding:32px 16px 72px}.wrap-narrow{max-width:var(--wrap-narrow);margin:0 auto}.page-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:28px;display:flex}.page-intro{max-width:68ch;margin-top:6px}.page-actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:22px 24px}.panel+.panel{margin-top:16px}.panel-head{justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;display:flex}.empty{text-align:center;padding-top:72px}.empty .muted{max-width:52ch;margin:8px auto 0}.detail>.empty{padding-top:48px}.button,button.button{font:inherit;border:1px solid var(--brand);background:var(--brand);color:var(--on-brand);cursor:pointer;white-space:nowrap;border-radius:999px;justify-content:center;align-items:center;gap:10px;padding:10px 18px;font-size:.95rem;font-weight:650;text-decoration:none;transition:background .15s,transform 50ms;display:inline-flex}.button:hover{background:var(--brand-strong)}.button:active{transform:translateY(1px)}.button:disabled{opacity:.55;cursor:default}.button.button-ghost{color:var(--brand-text);border-color:var(--brand-line);background:0 0}.button.button-ghost:hover:not(:disabled){background:var(--brand-soft)}.button.button-danger{background:var(--danger);border-color:var(--danger);color:#fff}.button.button-sm{padding:6px 13px;font-size:.85rem}.button-lg{padding:14px 24px;font-size:1rem}.icon-button{border:1px solid var(--line);background:var(--surface);width:32px;height:32px;color:var(--muted);font:inherit;cursor:pointer;border-radius:50%;place-items:center;font-size:1.05rem;line-height:1;display:grid}.icon-button:hover:not(:disabled){color:var(--text);border-color:var(--brand-line);background:var(--brand-soft)}.icon-button:disabled{opacity:.35;cursor:default}.confirm{gap:6px;display:inline-flex}input,select,textarea{font:inherit;border-radius:var(--radius-sm);border:1px solid var(--line);background:var(--bg);width:100%;min-width:0;color:var(--text);padding:9px 12px}input[type=checkbox],input[type=radio]{width:auto;accent-color:var(--brand)}input:focus,select:focus,textarea:focus{border-color:var(--brand-line);box-shadow:0 0 0 3px color-mix(in srgb, var(--brand) 22%, transparent);outline:none}fieldset{border:0;min-width:0;margin:0;padding:0}fieldset:disabled input,fieldset:disabled select{background:var(--surface-2)}label{color:var(--muted);gap:4px;font-size:.85rem;font-weight:650;display:grid}label>input,label>select{color:var(--text);font-size:1rem;font-weight:400}.panel label+label{margin-top:16px}.grid2,.grid3{gap:16px;margin-bottom:16px;display:grid}.grid2{grid-template-columns:minmax(0,2fr) minmax(0,1fr)}.grid3{grid-template-columns:minmax(0,2fr) minmax(0,1fr) minmax(0,1fr)}.grid2 label+label,.grid3 label+label{margin-top:0}.check{color:var(--text);cursor:pointer;align-items:flex-start;gap:8px;font-size:.95rem;font-weight:400;display:flex}.check input{margin:4px 0 0}.checks{flex-wrap:wrap;gap:8px 24px;margin-top:16px;display:flex}.inline-form{flex-wrap:wrap;align-items:flex-end;gap:8px;display:flex}.inline-form input{flex:1;width:auto;min-width:160px}.inline-form label{flex:1}.form-actions{border-top:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:8px 10px;margin-top:20px;padding-top:16px;display:flex}.notice,.note{border-radius:var(--radius-sm);background:var(--brand-soft);color:var(--text);margin:0 0 20px;padding:12px 16px}.notice-error{background:var(--danger-soft);color:var(--danger);font-weight:600}.form-actions .notice-error,.inline-form .notice-error{flex-basis:100%;margin:8px 0 0}.chip,.badge{white-space:nowrap;background:var(--surface-2);color:var(--muted);border-radius:999px;align-items:center;gap:4px;padding:3px 10px;font-size:.78rem;font-weight:650;display:inline-flex}.chip-danger{background:var(--danger-soft);color:var(--danger)}.chip-ok{background:var(--brand-soft);color:var(--brand-text)}.steps{margin:0 0 12px;padding-left:1.25rem;line-height:1.7}.file-pick{flex-wrap:wrap;align-items:center;gap:12px;margin-top:16px;display:flex}.file-pick input{opacity:0;width:1px;height:1px;position:absolute}.file-pick:focus-within .button{outline:2px solid var(--brand);outline-offset:2px}.file-pick+.notice-error{margin-top:16px}.import-table td{vertical-align:top}.import-table .row-warn td{background:var(--danger-soft)}.import-table .small{max-width:44ch;margin-top:4px}.tag{background:var(--brand-soft);color:var(--brand-text);box-shadow:inset 0 0 0 1px var(--brand-line);font-variant-numeric:tabular-nums slashed-zero;white-space:nowrap;border-radius:999px;align-items:center;gap:8px;padding:3px 11px 3px 4px;font-size:.85rem;font-weight:650;display:inline-flex}.tag-mark{background:radial-gradient(circle, var(--brand) 0 2.5px, transparent 3px), radial-gradient(circle, transparent 0 5px, var(--brand) 5.5px 6.5px, transparent 7px), var(--surface);width:18px;height:18px;box-shadow:inset 0 0 0 1.5px var(--brand);border-radius:50%;flex:none}.tag-uid{gap:.3em;display:inline-flex}.tag-sm{gap:6px;padding:1px 9px 1px 3px;font-size:.75rem}.tag-sm .tag-mark{background:radial-gradient(circle, var(--brand) 0 2px, transparent 2.5px), var(--surface);width:13px;height:13px}.tag-lg{gap:10px;padding:6px 16px 6px 6px;font-size:1.05rem}.tag-lg .tag-mark{background:radial-gradient(circle, var(--brand) 0 3.5px, transparent 4px), radial-gradient(circle, transparent 0 8px, var(--brand) 8.5px 10px, transparent 10.5px), var(--surface);width:28px;height:28px}.text-button{font:inherit;color:var(--muted);text-underline-offset:3px;cursor:pointer;background:0 0;border:0;padding:6px 4px;font-size:.85rem;font-weight:600;text-decoration:underline}.text-button:hover{color:var(--brand-text)}.tag-hint{margin-top:4px}.tag-field{gap:8px;margin-bottom:16px;display:grid}.field-label{color:var(--muted);font-size:.85rem;font-weight:650}.tag-field-row{flex-wrap:wrap;align-items:center;gap:8px 12px;display:flex}.field-help{font-weight:400}.grid2-even{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px;display:grid}.table{border-collapse:separate;border-spacing:0;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);width:100%;overflow:hidden}.table th{text-align:left;color:var(--muted);border-bottom:1px solid var(--line);padding:10px 16px;font-size:.85rem;font-weight:600}.table td{border-bottom:1px solid var(--line);vertical-align:middle;padding:14px 16px}.table tbody tr:last-child td{border-bottom:0}.table tbody tr:hover td{background:var(--surface-2)}.audit td{vertical-align:top;font-size:.925rem}.audit tbody tr:hover td{background:0 0}.audit td:first-child,.audit td:nth-child(2){color:var(--muted)}.audit pre{white-space:pre-wrap;border-radius:var(--radius-sm);background:var(--surface-2);margin:8px 0 0;padding:10px 12px;font-size:.8rem}.actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:6px;display:flex}td.actions{text-align:right;display:table-cell}td.actions>*+*{margin-left:6px}.row-off,.row-off .strong{color:var(--muted)}details.former{margin-top:24px}details>summary{cursor:pointer;color:var(--muted);padding:8px 0;font-size:.925rem;font-weight:600}details.former>.table,details.former>.phones,details.former>ul,details.former>ol{margin-top:8px}.sync{justify-items:end;gap:4px;display:grid}.split{grid-template-columns:minmax(260px,320px) minmax(0,1fr);align-items:start;gap:32px;display:grid}.cp-list{position:sticky;top:96px}.cp-list section+section{margin-top:20px}.cp-list h2{font-family:var(--font-body);color:var(--muted);padding:0 12px 6px;font-size:.85rem;font-weight:600}.cp-list ul{gap:2px;margin:0;padding:0;list-style:none;display:grid}.cp-list li a{border-radius:var(--radius-sm);color:inherit;gap:4px;padding:10px 12px;text-decoration:none;display:grid}.cp-list li a:hover{background:var(--surface-2)}.cp-list li a.active{background:var(--brand-soft)}.cp-list li a.active .cp-name{color:var(--brand-text)}.cp-name{font-weight:650}.cp-meta{white-space:nowrap;align-items:center;gap:8px;display:flex}.buildings{border-top:1px solid var(--line);margin-top:24px;padding-top:8px}.buildings ul li{align-items:center;gap:8px;padding:4px 12px;display:flex}.buildings ul li span:first-child{flex:1}.buildings .inline-form{padding:8px 0}.questions{margin:0;padding:0;list-style:none}.question{border-top:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;gap:16px;padding:14px 0;display:flex}.questions>li:first-child{border-top:0;padding-top:0}.question-form{border-radius:var(--radius);border:1px solid var(--brand-line);box-shadow:0 0 0 3px var(--brand-soft);margin:12px 0;padding:20px}.choices{gap:8px;margin:16px 0;display:grid}.choices legend{color:var(--muted);margin-bottom:8px;font-size:.85rem;font-weight:650}.option-row{align-items:center;gap:12px;display:flex}.option-row>input{flex:1}.phones{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);margin:0;padding:0;list-style:none}.phone{border-bottom:1px solid var(--line);grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:16px 24px;padding:18px 20px;display:grid}.phone:last-child{border-bottom:0}.gps{gap:6px;max-width:36ch;display:grid}.gps-toggle{align-items:center;gap:12px;display:flex}.gps-interval select{border-radius:999px;width:auto;padding:5px 10px;font-size:.875rem}.switch{flex-shrink:0;width:52px;height:30px;display:inline-block;position:relative}.switch input{opacity:0;cursor:pointer;z-index:1;width:100%;height:100%;margin:0;position:absolute;inset:0}.switch-track{background:var(--line);border-radius:999px;transition:background .15s;position:absolute;inset:0}.switch-track:after{content:"";background:var(--surface);border-radius:50%;width:24px;height:24px;transition:transform .15s;position:absolute;top:3px;left:3px;box-shadow:0 1px 3px #0f2a1e40}.switch input:checked+.switch-track{background:var(--brand)}.switch input:checked+.switch-track:after{transform:translate(22px)}.switch input:focus-visible+.switch-track{outline:3px solid color-mix(in srgb, var(--brand) 50%, transparent);outline-offset:2px}.switch input:disabled{cursor:default}.switch input:disabled+.switch-track{opacity:.6}.pair{margin-bottom:28px}.pair h2{margin-bottom:12px}.pair-live{border-color:var(--brand-line);box-shadow:0 0 0 3px var(--brand-soft);grid-template-columns:minmax(220px,300px) minmax(0,1fr);align-items:center;gap:40px;display:grid}.qr{border-radius:var(--radius-sm);width:100%;height:auto;display:block}.qr-expired{aspect-ratio:1;border:2px dashed var(--line);border-radius:var(--radius-sm);color:var(--muted);place-items:center;font-weight:650;display:grid}.pair-steps ol{margin:0 0 20px;padding-left:1.2em}.pair-steps li+li{margin-top:2px}.pair-code{font-family:var(--font-display);letter-spacing:.06em;color:var(--brand-text);margin:0 0 8px;font-size:clamp(2rem,5vw,2.6rem);font-weight:900;line-height:1}.settings{max-width:var(--wrap-narrow)}.settings .panel legend{font-family:var(--font-display);float:left;width:100%;margin-bottom:8px;padding:0;font-size:1.25rem;font-weight:700}.setting{clear:both;border-top:1px solid var(--line);grid-template-columns:minmax(0,1fr) auto;align-items:center;column-gap:24px;padding:14px 0;display:grid}.setting label{color:var(--text);font-size:1rem;font-weight:650}.setting-input{color:var(--muted);align-items:center;gap:8px;font-size:.925rem;display:flex}.setting-input input{width:110px}.setting-input input[type=time]{width:140px}.setting p{grid-column:1/-1;margin:4px 0 0}.signin{grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);min-height:100vh;display:grid}.signin-art{background:var(--brand);color:var(--on-brand);flex-direction:column;justify-content:space-between;gap:48px;padding:40px clamp(24px,5vw,64px);display:flex}.signin-art .display-xl{max-width:11ch;margin:0;font-size:clamp(2.45rem,6vw,4.8rem)}.signin-brand .lockup-logo{height:40px}.signin-brand .lockup-divider{height:42px}.signin-brand .lockup-school{white-space:normal;font-size:1.25rem}.signin-round{flex-wrap:wrap;gap:10px;max-width:560px;margin:0;padding:0;list-style:none;display:flex}.signin-round .tag{color:#ffffff8c;background:0 0;box-shadow:inset 0 0 0 1.5px #ffffff4d}.signin-round .tag-mark{background:radial-gradient(circle,#ffffff80 0 3.5px,#0000 4px),radial-gradient(circle,#0000 0 8px,#ffffff80 8.5px 10px,#0000 10.5px),0 0;box-shadow:inset 0 0 0 1.5px #fff6}.signin-round .tapped .tag{background:var(--mint);color:var(--brand-deep);box-shadow:none}.signin-round .tapped .tag-mark{background:radial-gradient(circle, var(--brand) 0 3.5px, transparent 4px), radial-gradient(circle, transparent 0 8px, var(--brand) 8.5px 10px, transparent 10.5px), #fff;box-shadow:inset 0 0 0 1.5px var(--brand)}@media (prefers-reduced-motion:no-preference){.signin-round .tapped .tag{animation:.5s cubic-bezier(.2,.7,.2,1) both tag-tap}.signin-round .tapped:first-child .tag{animation-delay:.2s}.signin-round .tapped:nth-child(2) .tag{animation-delay:.45s}.signin-round .tapped:nth-child(3) .tag{animation-delay:.7s}.signin-round .tapped:nth-child(4) .tag{animation-delay:.95s}}@keyframes tag-tap{0%{color:#ffffff8c;background:0 0;box-shadow:inset 0 0 0 1.5px #ffffff4d}}.signin-panel{place-items:center;padding:40px 24px;display:grid}.signin-form{width:100%;max-width:380px}.signin-form .lead{margin:8px 0 28px;font-size:1.05rem}.signin-form .button{width:100%}.fine{color:var(--muted);margin:16px 0 0;font-size:.875rem}.danger-text{color:var(--danger)}.filters{flex-wrap:wrap;align-items:flex-end;gap:12px 16px;margin-bottom:20px;display:flex}.filters label{width:12rem;max-width:100%}.filters input,.filters select{height:42px}.segmented{background:var(--surface-2);border:1px solid var(--line);border-radius:999px;padding:3px;display:inline-flex}.segmented button{font:inherit;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:999px;padding:6px 14px;font-size:.9rem;font-weight:600}.segmented button[aria-pressed=true]{background:var(--surface);color:var(--brand-text);box-shadow:0 1px 2px #00000014}.row-link{cursor:pointer}.shifts td{vertical-align:top}.shift-grid{grid-template-columns:minmax(0,3fr) minmax(0,2fr);align-items:start;gap:16px;display:grid}.shift-grid aside .panel+.panel{margin-top:16px}.shift-grid h2{margin:0 0 12px}.timeline{margin:0;padding:0;list-style:none}.tl{border-left:3px solid var(--brand-line);grid-template-columns:5.5rem minmax(0,1fr);gap:12px;padding:12px 0 12px 14px;display:grid}.tl+.tl{border-top:1px solid var(--line)}.tl-warn{border-left-color:var(--danger)}.tl-photo{border-left-color:var(--brass)}.tl-time{color:var(--muted);font-variant-numeric:tabular-nums;font-size:.9rem}.tl-note{margin:4px 0 0}.answers{gap:4px;margin:8px 0 0;display:grid}.answers div{flex-wrap:wrap;gap:4px 12px;font-size:.925rem;display:flex}.answers dt{color:var(--muted)}.answers dd{margin:0;font-weight:650}.answer-flagged dd{color:var(--danger)}.flag-list{gap:12px;display:grid}.flag-columns{grid-template-columns:repeat(auto-fill,minmax(min(100%,340px),1fr));align-items:start}.flag-card{background:var(--surface);border:1px solid var(--line);border-left:4px solid var(--danger);border-radius:var(--radius-sm);padding:14px 16px}.flag-resolved{border-left-color:var(--brand-line)}.flag-head{justify-content:space-between;align-items:center;gap:8px;display:flex}.flag-summary{margin:8px 0 4px;font-weight:600}.flag-meta{flex-wrap:wrap;align-items:center;gap:4px 12px;margin:0;display:flex}.flag-photo{justify-items:start;gap:8px;margin-top:10px;display:grid}.flag-resolution{border-top:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;margin-top:10px;padding-top:10px;display:flex}.flag-resolution p{margin:0}.flag-resolve{margin-top:12px}.photo{margin:0}.photo img{border-radius:var(--radius-sm);border:1px solid var(--line);max-width:100%;max-height:360px;display:block}.photo figcaption{margin-top:4px}.check.keep{color:var(--muted);font-size:.875rem}.rule-list,.stops{margin:0 0 12px;padding:0;list-style:none}.rule-list li,.stops li{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:12px;padding:10px 0;display:flex}.stops{counter-reset:stop}.stops li:before{counter-increment:stop;content:counter(stop);background:var(--brand-soft);width:26px;height:26px;color:var(--brand-text);border-radius:50%;flex:none;place-items:center;font-size:.8rem;font-weight:700;display:grid}.stops li>span:first-of-type{flex:1}.rule-form{gap:14px;margin-top:8px;display:grid}.rule-form .form-actions{margin-top:0}.rule-form .grid2-even input{height:42px}.rule-mode{gap:8px;display:grid}.rule-mode .check{align-items:center}.rule-mode .check input[type=radio]{margin:0}input.num{width:5.5rem;padding:6px 10px}.days .segmented{border-radius:var(--radius-sm);flex-wrap:wrap}.days .segmented button{padding:6px 10px}.coverage-wrap{border-radius:var(--radius);overflow-x:auto}.coverage th[scope=row]{text-align:left;min-width:14rem;font-weight:600}.coverage th,.coverage td{padding:8px 10px}.coverage .day{text-align:center;white-space:nowrap}.coverage tr.group th{background:var(--surface-2);color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-size:.8rem}.coverage tbody tr:hover td,.coverage tbody tr:hover th{background:0 0}.cov{min-width:2.5rem;height:2rem;font:inherit;border:0;border-radius:999px;place-items:center;padding:0 8px;font-size:.85rem;font-weight:700;display:inline-grid}button.cov{cursor:pointer}button.cov[aria-pressed=true]{outline:2px solid var(--text);outline-offset:2px}.cov-on_time{background:var(--brand-soft);color:var(--brand-text)}.cov-late{background:color-mix(in srgb, var(--brass) 22%, var(--surface));color:color-mix(in srgb, var(--brass) 60%, var(--text))}.cov-missed{background:var(--danger);color:var(--on-brand)}.cov-pending{background:var(--surface-2);color:var(--muted)}.cov-none{color:var(--line)}.cov-detail{margin-top:16px}.legend{flex-wrap:wrap;align-items:center;gap:6px 8px;margin-top:16px;display:flex}.legend .cov{min-width:2rem;height:1.6rem;font-size:.75rem}.runs td{vertical-align:top}.chart-figure{margin:0 0 20px}.chart-figure figcaption{margin-bottom:6px}.chart{width:100%;position:relative}.chart svg{display:block;overflow:visible}.chart svg:focus-visible{outline:2px solid var(--brand);outline-offset:4px;border-radius:4px}.chart-band rect{fill:var(--brand-soft)}.chart-band line{stroke:var(--brand-line);stroke-width:1px}.chart-grid line{stroke:var(--line);stroke-width:1px}.chart-grid text,.chart-end{fill:var(--muted);font-size:12px}.chart-end{fill:var(--text);font-weight:650}.chart-line{fill:none;stroke:var(--brand);stroke-width:2px;stroke-linejoin:round;stroke-linecap:round}.chart-cross{stroke:var(--muted);stroke-width:1px}.chart-dot{fill:var(--brand);stroke:var(--surface);stroke-width:2px}.chart-dot-out{fill:var(--danger)}.chart-dot-on{stroke:var(--text)}.chart-tip{pointer-events:none;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);white-space:nowrap;padding:8px 12px;font-size:.85rem;position:absolute;transform:translate(-50%);box-shadow:0 4px 16px #00000014}.visits td{vertical-align:top}.visits td div+div{margin-top:2px}@media print{@page{margin:14mm}body{background:#fff}.topbar,.skip,.no-print,.filters,.flag-resolve,.rule-form,.flag-photo button,.page-actions .button,.chart-tip{display:none!important}.page{max-width:none;padding:0}.page:before{content:"WRA Campus Security · Security Patrol";color:var(--muted);margin-bottom:8px;font-size:10pt;display:block}.panel,.table,.flag-card{box-shadow:none;break-inside:avoid}.tl,.flag-card,.coverage tr{break-inside:avoid}.shift-grid{grid-template-columns:minmax(0,1fr)}.coverage-wrap{overflow:visible}a{color:inherit;text-decoration:none}}.user .help-link{color:var(--muted);border-radius:999px;padding:6px 10px;font-size:.925rem;font-weight:600;text-decoration:none}.user .help-link:hover,.user .help-link.active{color:var(--brand-text);background:var(--brand-soft)}.help-button{gap:6px}.help-mark{border:1.5px solid;border-radius:50%;place-items:center;width:18px;height:18px;font-size:.75rem;font-weight:800;line-height:1;display:inline-grid}.panel-tools{flex-wrap:wrap;align-items:center;gap:8px;display:inline-flex}.help-search{max-width:640px;margin-bottom:28px}.help-search input{background:var(--surface);border-radius:999px;padding:12px 18px;font-size:1.05rem}.help-results{max-width:760px;margin:0;padding:0;list-style:none}.help-results li{border-bottom:1px solid var(--line);padding:14px 0}.help-results a{text-decoration:none}.help-results p{margin:4px 0 0}.help-group+.help-group{margin-top:32px}.help-group h2{margin:0 0 12px}.help-cards{grid-template-columns:repeat(auto-fill,minmax(min(100%,260px),1fr));gap:12px;margin:0;padding:0;list-style:none;display:grid}.help-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);height:100%;color:var(--text);align-content:start;gap:6px;padding:16px 18px;text-decoration:none;display:grid}.help-card:hover{border-color:var(--brand-line);background:var(--brand-soft)}.help-card strong{color:var(--brand-text)}.help-needs{justify-self:start;margin-bottom:12px}.help-crumbs{margin-bottom:8px}.help-crumbs a{color:inherit}.help-layout{grid-template-columns:220px minmax(0,1fr);align-items:start;gap:32px;display:grid}.help-toc{position:sticky;top:96px}.help-toc p{margin:0 0 8px}.help-toc ul{border-left:2px solid var(--line);margin:0;padding:0;list-style:none}.help-toc a{color:var(--muted);border-left:2px solid #0000;margin-left:-2px;padding:5px 12px;font-size:.9rem;text-decoration:none;display:block}.help-toc a:hover{color:var(--brand-text);border-left-color:var(--brand)}.help-article{max-width:760px;line-height:1.6}.help-section{border-radius:var(--radius-sm);padding:4px 0 8px;scroll-margin-top:96px;transition:background-color .6s}.help-section+.help-section{margin-top:20px}.help-section h2{margin:0 0 8px;font-size:1.35rem}.help-section h3{margin:20px 0 8px;font-size:1.05rem}.help-section p{margin:0 0 12px}.help-target{background:var(--brand-soft)}.ui-name{color:var(--brand-text);font-weight:650}.help-note{border-radius:var(--radius-sm);background:var(--brand-soft);align-items:flex-start;gap:12px;margin:12px 0;padding:12px 16px;display:flex}.help-note>div>:last-child{margin-bottom:0}.help-note-mark{background:var(--brand);width:22px;height:22px;color:var(--on-brand);border-radius:50%;flex:none;place-items:center;font-size:.8rem;font-style:italic;font-weight:800;display:grid}.help-notyet{background:color-mix(in srgb, var(--brass) 14%, var(--surface))}.help-notyet .chip{background:var(--surface);flex:none}.help-steps{margin:0 0 12px;padding-left:1.4rem}.help-steps li+li{margin-top:6px}.help-defs{gap:10px;margin:0 0 12px;display:grid}.help-defs>div{border-bottom:1px solid var(--line);grid-template-columns:minmax(0,13rem) minmax(0,1fr);gap:4px 16px;padding-bottom:10px;display:grid}.help-defs dt{font-weight:650}.help-defs dd{margin:0}.help-defs dd p{margin:0 0 4px}.help-ref-group+.help-ref-group{margin-top:8px}.help-table th[scope=row]{text-align:left;font-weight:650}.help-table td,.help-table th{vertical-align:top}.help-pager{border-top:1px solid var(--line);justify-content:space-between;gap:16px;margin:32px 0 12px;padding-top:16px;display:flex}@media (width<=860px){.help-layout{grid-template-columns:minmax(0,1fr);gap:16px}.help-toc{position:static}.help-defs>div{grid-template-columns:minmax(0,1fr)}}@media print{.help-toc,.help-search,.help-crumbs{display:none!important}.help-layout{grid-template-columns:minmax(0,1fr)}}:root{--help-drawer-w:420px}.help-drawer{top:var(--topbar-h,64px);z-index:9;width:min(var(--help-drawer-w), 100vw);background:var(--surface);border-left:1px solid var(--line);visibility:hidden;flex-direction:column;transition:transform .25s,visibility 0s linear .25s;display:flex;position:fixed;bottom:0;right:0;transform:translate(100%);box-shadow:-12px 0 32px #00000014}.help-drawer[data-open=true]{visibility:visible;transition:transform .25s;transform:none}.help-drawer-head{border-bottom:1px solid var(--line);align-items:center;gap:8px;padding:12px 16px;display:flex}.help-drawer-label{color:var(--brand-text);flex:1;font-weight:700}.help-drawer-body{overscroll-behavior:contain;flex:1;padding:16px 20px 40px;position:relative;overflow-y:auto}.help-drawer-body .help-article{max-width:none;font-size:.95rem}.help-drawer-body h2:focus{outline:none}.help-drawer-title{margin:0 0 6px;font-size:1.45rem}.help-drawer-group{margin:0 0 2px}.help-drawer-body .help-section h2{font-size:1.15rem}.help-drawer-body .help-defs>div{grid-template-columns:minmax(0,1fr)}.help-drawer-body .help-search{margin:12px 0 20px}.help-drawer-body .help-search input{padding:10px 16px;font-size:1rem}.help-drawer-here{margin-bottom:20px}.help-drawer-here p{margin:0 0 6px}.help-drawer-group-list h3{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin:16px 0 6px;font-size:.8rem}.help-drawer-group-list ul{margin:0;padding:0;list-style:none}.help-drawer-group-list li a{padding:5px 0;display:block}.help-backdrop{display:none}@media (width>=1100px){.page{transition:margin .25s,max-width .25s}body.help-open .page{margin-left:max(0px, calc((100vw - var(--help-drawer-w) - var(--wrap)) / 2));margin-right:calc(var(--help-drawer-w) + max(0px, (100vw - var(--help-drawer-w) - var(--wrap)) / 2))}}@media (width<=1099px){.help-drawer{z-index:30}body.help-open .help-backdrop{inset:var(--topbar-h,64px) 0 0 0;z-index:29;background:#0f2a1e47;display:block;position:fixed}}@media (prefers-reduced-motion:reduce){.help-drawer,.help-drawer[data-open=true],.page{transition:none}}@media print{.help-drawer,.help-backdrop{display:none!important}body.help-open .page{margin:0}}@media (width<=1340px){.topbar .lockup-divider,.topbar .lockup-text{display:none}.topbar .brand{flex-shrink:0}.nav{scrollbar-width:none;min-width:0;overflow-x:auto}}@media (width<=860px){.shift-grid,.split{grid-template-columns:minmax(0,1fr)}.cp-list{position:static}.signin{grid-template-columns:minmax(0,1fr)}.signin-art{gap:32px}.pair-live{grid-template-columns:minmax(0,1fr);gap:24px}.pair-qr{max-width:300px}.phone{grid-template-columns:minmax(0,1fr)}.phone .actions{justify-content:flex-start}}@media (width<=600px){.user .avatar,.topbar .lockup-divider,.topbar .lockup-text{display:none}.topbar .brand{flex-shrink:0}.nav{scrollbar-width:none;min-width:0;overflow-x:auto}.nav a:not(.link-light){padding:6px 10px;font-size:.875rem}.user{margin-left:4px;padding-left:10px}.page{padding-top:24px}.panel{padding:18px}.grid2,.grid3,.grid2-even{grid-template-columns:minmax(0,1fr)}.setting{grid-template-columns:minmax(0,1fr);row-gap:8px}.table thead{display:none}.table tr{border-bottom:1px solid var(--line);gap:6px;padding:12px 16px;display:grid}.table tbody tr:last-child{border-bottom:0}.table td{border:0;padding:0}td.actions{text-align:left;flex-wrap:wrap;justify-content:flex-start;align-items:center;gap:6px;display:flex}td.actions>*+*{margin-left:0}.audit td:nth-child(3){order:-1}}.settings-mail{max-width:var(--wrap-narrow);margin-top:16px}.settings-mail h2,.subhead{margin:0}.subhead{margin:22px 0 8px;font-size:1.05rem}.setting-input input.wide{width:min(360px,60vw)}.table-scroll{overflow-x:auto}.break{overflow-wrap:anywhere}.alert-list{margin:0 0 16px;padding:0;list-style:none}.alert-list li{border-top:1px solid var(--line);justify-content:space-between;align-items:flex-start;gap:12px;padding:10px 0;display:flex}.row-actions{flex-wrap:wrap;justify-content:flex-end;gap:6px;display:flex}.alert-form{border-top:1px solid var(--line);flex-wrap:wrap;align-items:flex-end;gap:10px 12px;padding-top:12px;display:flex}.alert-form label{gap:4px;font-size:.875rem;font-weight:650;display:grid}.alert-form .grow{flex:240px}.alert-form .notice-error{flex-basis:100%}@media (width<=640px){.setting{grid-template-columns:1fr;row-gap:8px}.alert-list li{flex-direction:column}}.map-wrap{border:1px solid var(--line);background:#e9efe9;border-radius:14px;position:relative;overflow:hidden}.map-wrap>.map{position:absolute;inset:0}.map-toggle{background:var(--surface);border-radius:999px;padding:3px;display:inline-flex;position:absolute;top:10px;left:10px;box-shadow:0 1px 4px #00000040}.map-toggle.inline{box-shadow:none;border:1px solid var(--line);position:static}.map-toggle button{color:var(--text);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:999px;padding:5px 12px;font-size:.85rem;font-weight:650}.map-toggle button.on{background:var(--brand);color:#fff}.map-note{color:var(--muted);pointer-events:none;background:#ffffffeb;border-radius:10px;padding:8px 12px;position:absolute;bottom:10px;left:10px;right:10px}.map-pin{--pin:var(--brand);background:var(--pin);color:#fff;width:26px;height:26px;font:700 11px/1 var(--font-body,sans-serif);cursor:pointer;border:2px solid #fff;border-radius:50%;place-items:center;padding:0;display:grid;position:relative;box-shadow:0 1px 4px #00000073}.map-pin:not(.tone-photo):after{content:"";border:6px solid #0000;border-top:7px solid #fff;position:absolute;bottom:-9px;left:50%;transform:translate(-50%)}.map-pin:not(.tone-photo):before{content:"";border:4px solid #0000;border-top:5px solid var(--pin);z-index:1;position:absolute;bottom:-5px;left:50%;transform:translate(-50%)}.map-pin.tone-current{--pin:#f5c542;color:#1d2a24;z-index:2;width:32px;height:32px;font-size:13px}.map-pin.tone-flag{--pin:var(--danger)}.map-pin.tone-dim{--pin:#f4f6f4;color:var(--muted)}.map-pin.tone-photo{--pin:#fff;width:24px;height:24px;font-size:12px}.map-pin.draggable{cursor:grab;outline-offset:2px;outline:2px dashed #fff}.toggle{align-items:center;gap:6px;font-weight:650;display:inline-flex}.replay-controls{flex-wrap:wrap;align-items:center;gap:10px 14px;margin-top:12px;display:flex}.replay-controls input[type=range]{accent-color:var(--brand);flex:220px}.replay-clock{font-variant-numeric:tabular-nums;min-width:70px;font-weight:650}.replay-now{min-height:3em;margin-top:10px}.replay-now ul{margin:6px 0 0;padding-left:18px}.replay-now li.flagged strong{color:var(--danger)}.replay-now .chip{margin-left:6px}.replay{margin-top:16px}.map-page{grid-template-columns:minmax(0,1fr) 300px;align-items:start;gap:16px;display:grid}.map-side{gap:12px;display:grid}.map-side>label{gap:4px;font-weight:650;display:grid}.map-side .panel+.panel{margin-top:0}.map-side h2{margin:0 0 6px;font-size:1.1rem}.unplaced{margin:0;padding:0;list-style:none}.unplaced li{border-top:1px solid var(--line);justify-content:space-between;align-items:center;gap:8px;padding:6px 0;display:flex}.notice.placing{flex-wrap:wrap;align-items:center;gap:10px;display:flex}@media (width<=860px){.map-page{grid-template-columns:1fr}}@media print{.replay{display:none}}
