.uplot,.uplot *,.uplot :before,.uplot :after{box-sizing:border-box}.uplot{width:min-content;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}.u-title{text-align:center;font-size:18px;font-weight:700}.u-wrap{-webkit-user-select:none;user-select:none;position:relative}.u-over,.u-under{position:absolute}.u-under{overflow:hidden}.uplot canvas{width:100%;height:100%;display:block;position:relative}.u-axis{position:absolute}.u-legend{text-align:center;margin:auto;font-size:14px}.u-inline{display:block}.u-inline *{display:inline-block}.u-inline tr{margin-right:16px}.u-legend th{font-weight:600}.u-legend th>*{vertical-align:middle;display:inline-block}.u-legend .u-marker{width:1em;height:1em;margin-right:4px;background-clip:padding-box!important}.u-inline.u-live th:after{content:":";vertical-align:middle}.u-inline:not(.u-live) .u-value{display:none}.u-series>*{padding:4px}.u-series th{cursor:pointer}.u-legend .u-off>*{opacity:.3}.u-select{pointer-events:none;background:#00000012;position:absolute}.u-cursor-x,.u-cursor-y{pointer-events:none;will-change:transform;position:absolute;top:0;left:0}.u-hz .u-cursor-x,.u-vt .u-cursor-y{border-right:1px dashed #607d8b;height:100%}.u-hz .u-cursor-y,.u-vt .u-cursor-x{border-bottom:1px dashed #607d8b;width:100%}.u-cursor-pt{pointer-events:none;will-change:transform;border:0 solid;border-radius:50%;position:absolute;top:0;left:0;background-clip:padding-box!important}.u-axis.u-off,.u-select.u-off,.u-cursor-x.u-off,.u-cursor-y.u-off,.u-cursor-pt.u-off{display:none}
:root{--green:#096e5e;--green-700:#07594d;--green-50:#eef8f5;--ink:#17211f;--muted:#66736f;--line:#dfe8e5;--panel:#f7f9f8;--white:#fff;--blue:#376a9d;--violet:#6d5a9b;--amber:#9b6a1d;--shadow:0 18px 45px #17211f14}*{box-sizing:border-box}html{scroll-behavior:smooth;overflow-x:hidden}body{color:var(--ink);background:#fbfcfc;margin:0;font-family:Arial,Helvetica Neue,PingFang TC,Microsoft JhengHei,sans-serif;overflow-x:hidden}a{color:inherit;text-decoration:none}svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:2px;width:18px;height:18px}main{min-height:100vh}.site-header{z-index:10;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:#ffffffeb;border-bottom:1px solid #dfe8e5d1;justify-content:space-between;align-items:center;gap:24px;padding:16px clamp(18px,4vw,56px);display:flex;position:sticky;top:0}.brand-lockup{align-items:center;gap:14px;min-width:0;display:flex}.cityu-mark{align-items:center;width:clamp(118px,18vw,190px);display:flex;overflow:hidden}.cityu-mark img{object-fit:contain;width:100%;height:auto}.brand-divider{background:var(--line);width:1px;height:38px}.fds-mark{width:42px;height:46px;display:flex;overflow:hidden}.fds-mark img{object-fit:contain;width:100%;height:100%}.brand-text{gap:4px;min-width:0;display:grid}.brand-text strong{font-size:14px;line-height:1.15}.brand-text span{color:var(--muted);font-size:12px;line-height:1.25}.top-nav{align-items:center;gap:6px;display:flex}.top-nav a{color:#34413e;text-align:center;border-radius:8px;gap:2px;min-width:82px;padding:9px 12px;font-size:13px;line-height:1.15;display:grid}.top-nav a:hover{background:var(--green-50);color:var(--green)}.top-nav span{color:var(--muted);font-size:11px}.hero{background:linear-gradient(#eef8f5e6,#fff0),radial-gradient(circle at 78% 24%,#096e5e14,#0000 28%);grid-template-columns:minmax(0,1fr) minmax(340px,520px);align-items:end;gap:clamp(24px,5vw,64px);padding:clamp(56px,8vw,96px) clamp(18px,4vw,56px) 32px;display:grid}.hero-copy{max-width:790px}.eyebrow,.section-kicker{color:var(--green);text-transform:uppercase;align-items:center;gap:8px;font-size:12px;font-weight:700;line-height:1.3;display:inline-flex}h1,h2,h3,p{margin:0}h1{color:#101917;letter-spacing:0;max-width:870px;margin-top:18px;font-size:clamp(42px,7vw,84px);font-weight:760;line-height:.98}.hero-copy p{color:#3d4a47;max-width:720px;margin-top:22px;font-size:19px;line-height:1.62}.hero-copy .zh-copy{color:var(--muted);margin-top:10px;font-size:16px}.search-panel{box-shadow:var(--shadow);background:#ffffffe6;border:1px solid #096e5e2e;border-radius:12px;padding:20px}.search-panel label{color:var(--green);margin-bottom:12px;font-size:13px;font-weight:700;display:block}.search-box{border:1px solid var(--line);background:var(--white);border-radius:10px;align-items:center;gap:10px;min-height:54px;padding:0 14px;display:flex}.search-icon{color:var(--green);display:flex}.search-box input{width:100%;min-width:0;color:var(--ink);background:0 0;border:0;outline:0;font-size:15px}.search-box input::placeholder{color:#9aa5a2}.search-meta{color:var(--muted);justify-content:space-between;gap:16px;margin-top:12px;font-size:12px;display:flex}.quick-strip{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;padding:0 clamp(18px,4vw,56px) 46px;display:grid}.quick-link{border:1px solid var(--line);background:var(--white);border-radius:8px;gap:6px;min-height:76px;padding:14px;display:grid}.quick-link:hover{border-color:#096e5e59;transform:translateY(-1px);box-shadow:0 12px 26px #17211f12}.quick-link span{color:#18231f;font-size:14px;font-weight:700}.quick-link small{color:var(--muted);font-size:12px}.section-shell{padding:54px clamp(18px,4vw,56px)}.section-shell.muted{border-block:1px solid var(--line);background:var(--panel)}.section-heading{justify-content:space-between;gap:32px;margin-bottom:24px;display:flex}.section-heading h2,.announcement-intro h2{letter-spacing:0;max-width:680px;margin-top:12px;font-size:clamp(26px,3.2vw,42px);line-height:1.08}.section-heading p,.announcement-intro p{max-width:420px;color:var(--muted);font-size:15px;line-height:1.65}.tool-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;display:grid}.tool-card{border:1px solid var(--line);background:var(--white);border-radius:10px;flex-direction:column;min-height:280px;padding:20px;display:flex;position:relative;overflow:hidden;box-shadow:0 8px 20px #17211f0a}.tool-card:before{content:"";background:var(--green);height:4px;position:absolute;inset:0 0 auto}.tool-card:hover{box-shadow:var(--shadow);border-color:#096e5e4d;transform:translateY(-2px)}.accent-blue:before{background:var(--blue)}.accent-violet:before{background:var(--violet)}.accent-amber:before{background:var(--amber)}.card-topline{color:var(--green);justify-content:space-between;gap:10px;font-size:12px;font-weight:700;display:flex}.card-topline small{color:var(--muted);font-size:12px}.tool-card h3{margin-top:28px;font-size:24px;line-height:1.12}.tool-card strong{color:#41504c;margin-top:7px;font-size:15px}.tool-card p{color:#4e5c58;margin-top:16px;font-size:14px;line-height:1.55}.tool-card .zh-copy{color:var(--muted);margin-top:8px}.card-footer{color:var(--green);justify-content:space-between;align-items:center;gap:16px;margin-top:auto;padding-top:18px;font-size:13px;font-weight:700;display:flex}.resource-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;display:grid}.resource-column{border:1px solid var(--line);background:var(--white);border-radius:10px;padding:16px}.resource-column h3{gap:4px;margin-bottom:14px;font-size:16px;display:grid}.resource-column h3 span{color:var(--muted);font-size:12px;font-weight:500}.resource-list{gap:8px;display:grid}.resource-list a{background:#fbfcfc;border-radius:8px;justify-content:space-between;align-items:center;gap:14px;min-height:72px;padding:12px;display:flex}.resource-list a:hover{background:var(--green-50);color:var(--green)}.resource-list span{gap:5px;min-width:0;font-size:14px;font-weight:700;display:grid}.resource-list small{color:var(--muted);font-size:12px;font-weight:500;line-height:1.3}.announcement-layout{grid-template-columns:minmax(260px,.75fr) minmax(0,1.25fr);gap:32px;display:grid}.announcement-list{gap:12px;display:grid}.announcement-card{border:1px solid var(--line);background:var(--white);border-radius:10px;grid-template-columns:100px 110px minmax(0,1fr);align-items:center;gap:16px;min-height:88px;padding:16px;display:grid}.announcement-card:hover{border-color:#096e5e4d;box-shadow:0 10px 24px #17211f0f}.announcement-card time{color:var(--muted);font-size:13px}.pill{color:var(--green);background:var(--green-50);white-space:nowrap;border:1px solid #096e5e33;border-radius:999px;justify-content:center;padding:6px 10px;font-size:12px;font-weight:700;display:inline-flex}.announcement-card strong{font-size:15px;line-height:1.35}.announcement-card small{color:var(--muted);grid-column:3;font-size:13px}.empty-state{border:1px dashed var(--line);color:var(--muted);background:var(--white);text-align:center;border-radius:10px;grid-column:1/-1;padding:24px}.empty-state.compact{padding:12px;font-size:12px}.site-footer{border-top:1px solid var(--line);color:var(--muted);justify-content:space-between;gap:18px;padding:28px clamp(18px,4vw,56px);font-size:13px;display:flex}.static-page,.static-index-page{background:#fbfcfc;align-items:center;min-height:100vh;padding:clamp(24px,5vw,56px);display:grid}.static-state{text-align:center;justify-items:center;width:min(760px,100%);margin:0 auto;display:grid}.static-state img{object-fit:contain;width:min(520px,100%);height:auto}.static-state span,.static-page-card-copy small{color:var(--green);text-transform:uppercase;font-size:12px;font-weight:800;line-height:1.3}.static-state span{margin-top:18px}.static-kicker{color:var(--muted);margin-top:10px;font-size:13px;font-weight:700;line-height:1.45}.static-state h1,.static-index-hero h1{color:#101917;max-width:680px;margin-top:12px;font-size:clamp(30px,5vw,52px);line-height:1.08}.static-state strong{color:#33413e;margin-top:10px;font-size:clamp(18px,2vw,24px);line-height:1.25;display:block}.static-state p,.static-index-hero p{color:#41504c;max-width:560px;margin-top:14px;font-size:16px;line-height:1.62}.static-state .zh-copy{color:var(--muted);margin-top:6px;font-size:15px}.static-index-hero{align-self:end;width:min(1040px,100%);margin:0 auto;padding:0 0 24px}.static-page-grid{grid-template-columns:repeat(3,minmax(0,1fr));align-self:start;gap:16px;width:min(1040px,100%);margin:0 auto;padding:0 0 12px;display:grid}.static-page-card{border:1px solid var(--line);background:var(--white);border-radius:10px;min-width:0;display:grid;overflow:hidden;box-shadow:0 8px 20px #17211f0a}.static-page-card:hover{box-shadow:var(--shadow);border-color:#096e5e4d;transform:translateY(-2px)}.static-page-thumb{aspect-ratio:16/9;background:var(--panel);place-items:center;padding:10px;display:grid}.static-page-thumb img{object-fit:contain;width:100%;height:100%}.static-page-card-copy{gap:7px;padding:16px;display:grid}.static-page-card-copy strong{color:#18231f;font-size:18px;line-height:1.25}.static-page-card-copy span{color:var(--muted);font-size:13px;line-height:1.4}@media (max-width:1020px){.site-header,.section-heading,.announcement-layout{align-items:flex-start}.site-header{flex-direction:column}.top-nav{width:100%}.top-nav a{flex:1}.hero,.announcement-layout{grid-template-columns:1fr}.quick-strip,.resource-grid,.static-page-grid,.tool-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:680px){.brand-lockup{align-items:flex-start;width:100%}.brand-divider,.fds-mark{display:none}.brand-text strong{font-size:13px}.top-nav{display:none}.hero{padding-top:42px}h1{font-size:clamp(38px,14vw,58px)}.hero-copy p{font-size:16px}.search-meta,.section-heading,.site-footer{flex-direction:column}.quick-strip,.tool-grid,.resource-grid,.static-page-grid{grid-template-columns:1fr}.tool-card{min-height:248px}.announcement-card{grid-template-columns:1fr;gap:8px}.announcement-card small{grid-column:auto}}.admin-page{background:#f7f9f8;min-height:100vh;padding:22px clamp(16px,3vw,42px) 42px;overflow-x:hidden}.admin-page-authed{height:100vh;overflow:hidden}.admin-login-shell{grid-template-columns:minmax(0,.95fr) minmax(340px,440px);align-items:center;gap:clamp(28px,6vw,72px);width:min(1040px,100%);min-height:calc(100vh - 84px);margin:0 auto;display:grid}.admin-login-copy h1{max-width:620px;margin-top:14px;font-size:clamp(42px,6vw,68px);line-height:1}.admin-login-copy p{max-width:460px;color:var(--muted);margin-top:18px;font-size:17px;line-height:1.55}.admin-shell{grid-template-columns:268px minmax(0,1fr);align-items:stretch;gap:24px;min-width:0;max-width:100%;height:calc(100vh - 64px);display:grid}.admin-sidebar{border:1px solid var(--line);background:var(--white);border-radius:10px;align-self:start;gap:14px;width:100%;max-height:100%;margin:0;padding:16px;display:grid;overflow:auto;box-shadow:0 8px 20px #17211f0a}.admin-sidebar-brand{border-bottom:1px solid var(--line);gap:7px;padding-bottom:12px;display:grid}.admin-sidebar-brand strong{font-size:16px}.admin-sidebar-brand small{overflow-wrap:anywhere;color:var(--muted);font-size:12px;line-height:1.45}.admin-sidebar-nav{gap:6px;display:grid}.admin-sidebar-nav a,.admin-sidebar-nav button{color:#34413e;min-height:40px;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:8px;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;padding:0 14px;font-size:14px;font-weight:700;text-decoration:none;display:grid}.admin-sidebar-nav a{padding-right:18px}.admin-sidebar-nav a:hover,.admin-sidebar-nav button:hover,.admin-sidebar-nav button.active{color:var(--green);background:var(--green-50)}.admin-sidebar-nav span{color:var(--muted);white-space:nowrap;justify-self:end;font-size:11px;font-weight:700}.admin-main-panel{scrollbar-gutter:stable;min-width:0;max-width:100%;height:100%;overflow:hidden auto}.admin-header{justify-content:space-between;align-items:flex-start;gap:24px;margin-bottom:16px;display:flex}.admin-header h1{margin-top:8px;font-size:clamp(30px,4vw,48px);line-height:1.03}.admin-header p,.admin-card-heading p{color:var(--muted);margin-top:8px;font-size:14px;line-height:1.5}.admin-card,.admin-alert,.admin-metrics article{border:1px solid var(--line);background:var(--white);border-radius:10px;min-width:0;max-width:100%;box-shadow:0 8px 20px #17211f0a}.admin-alert{gap:8px;margin-bottom:16px;padding:16px;display:grid}.admin-alert code{overflow-wrap:anywhere;color:var(--green);background:#eef8f5;border-radius:8px;padding:10px;font-size:13px}.admin-alert span{color:var(--muted);font-size:12px}.admin-toast-stack{z-index:60;gap:10px;width:min(380px,100vw - 32px);display:grid;position:fixed;top:18px;left:50%;transform:translate(-50%)}.admin-toast{color:var(--green);background:var(--green-50);border:1px solid #096e5e2e;border-radius:12px;grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:12px;padding:12px 12px 12px 14px;font-size:13px;font-weight:700;line-height:1.45;display:grid;box-shadow:0 16px 42px #17211f24}.admin-toast.success{background:#eef8f5;border-color:#096e5e3d}.admin-toast.error{color:#a02828;background:#fff7f7;border-color:#a0282838}.admin-toast span{overflow-wrap:anywhere}.admin-toast button{color:currentColor;width:24px;height:24px;font:inherit;cursor:pointer;background:0 0;border:0;border-radius:6px;place-items:center;font-size:20px;line-height:1;display:inline-grid}.admin-card{margin-top:14px;padding:16px}.admin-card h2{font-size:21px}.admin-login-card{background:var(--white);border:1px solid #096e5e29;border-radius:12px;width:100%;padding:22px;box-shadow:0 18px 48px #17211f1a}.admin-login-heading{gap:7px;display:grid}.admin-login-heading h2{font-size:24px}.admin-login-heading p{color:var(--muted);font-size:14px}.admin-toolbar{justify-content:space-between;align-items:flex-start;gap:16px;min-width:0;max-width:100%;display:flex}.admin-toolbar>div{min-width:0}.admin-toolbar p{color:var(--muted);margin-top:8px;font-size:14px;line-height:1.5}.admin-toolbar button{min-height:40px;color:var(--white);background:var(--green);font:inherit;cursor:pointer;border:0;border-radius:8px;padding:0 14px;font-size:13px;font-weight:700}.admin-toolbar a.admin-secondary-button,.admin-list-actions a.admin-secondary-button{align-items:center;text-decoration:none;display:inline-flex}.admin-toolbar .admin-secondary-button{border:1px solid var(--line);color:var(--green);background:var(--white)}.admin-toolbar-actions{flex-wrap:wrap;justify-content:flex-end;gap:8px;min-width:0;display:flex}.admin-registration-block{gap:1rem;min-width:0;max-width:100%;display:grid}.admin-checkins-card{padding:0;overflow:hidden}.admin-checkins-hero{background:linear-gradient(135deg,#eef8f5f5,#fffffff5 52%,#ecf4f9e6),#fff;border-bottom:1px solid #dfe8e5db;justify-content:space-between;align-items:flex-start;gap:16px;padding:18px;display:flex}.admin-checkins-heading{gap:7px;min-width:0;display:grid}.admin-checkins-heading h2{font-size:clamp(24px,3vw,34px);line-height:1.04}.admin-checkins-heading p{color:#3d4a47;max-width:760px;font-size:14px;line-height:1.45}.admin-checkins-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px;display:flex}.admin-primary-link-button{min-width:132px;min-height:40px;color:var(--white);background:var(--green);text-align:center;border-radius:8px;justify-content:center;align-items:center;padding:0 16px;font-size:13px;font-weight:800;line-height:1;text-decoration:none;display:inline-flex}.admin-primary-link-button:hover,.admin-primary-link-button:focus-visible{background:var(--green-700)}.admin-checkins-controls{border:1px solid var(--line);background:#fbfcfc;border-radius:8px;margin:16px 18px 0;padding:14px}.admin-checkins-card .admin-registration-block{margin:16px 18px 0}.admin-file-button{cursor:pointer;justify-content:center;align-items:center;min-height:40px;text-decoration:none;display:inline-flex;position:relative;overflow:hidden}.admin-file-button input{opacity:0;cursor:pointer;position:absolute;inset:0}.admin-file-button:has(input:disabled){opacity:.58;cursor:not-allowed}.admin-table-scroll{min-width:0;max-width:100%;overflow-x:auto}.admin-checkins-card .admin-table-scroll{border:1px solid var(--line);background:var(--white);border-radius:8px;margin:12px 18px 18px}.admin-data-table{border-collapse:collapse;width:100%;min-width:620px}.admin-attendance-table{border-collapse:separate;border-spacing:0;table-layout:fixed;min-width:0}.admin-attendance-table th:first-child,.admin-attendance-table td:first-child,.admin-attendance-table th:nth-child(2),.admin-attendance-table td:nth-child(2){width:15%}.admin-attendance-table th:nth-child(3),.admin-attendance-table td:nth-child(3),.admin-attendance-table th:nth-child(4),.admin-attendance-table td:nth-child(4){width:28%}.admin-attendance-table th:nth-child(5),.admin-attendance-table td:nth-child(5){width:14%}.admin-data-table th,.admin-data-table td{text-align:left;vertical-align:top;border-bottom:1px solid #1118271a;padding:.75rem .8rem}.admin-data-table th{color:#42526e;letter-spacing:.04em;text-transform:uppercase;background:#f7faf9;font-size:.78rem}.admin-attendance-table th{z-index:1;position:sticky;top:0}.admin-attendance-table tbody tr{background:var(--white);transition:background .16s}.admin-attendance-table tbody tr:hover{background:#fbfcfc}.admin-attendance-table tbody tr.is-missing{box-shadow:inset 3px 0 #d29a35}.admin-attendance-table tbody tr.is-partial{box-shadow:inset 3px 0 0 var(--blue)}.admin-attendance-table tbody tr.is-complete{box-shadow:inset 3px 0 0 var(--green)}.admin-muted-cell{color:var(--muted);font-size:12px;font-weight:700}.admin-attendance-summary{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:16px 18px 0;display:grid}.admin-attendance-metric{border:1px solid var(--line);color:#34413e;background:linear-gradient(#fff,#fbfcfc);border-radius:8px;gap:7px;min-width:0;padding:12px;display:grid}.admin-attendance-metric span,.admin-attendance-metric small{font-size:13px;font-weight:700}.admin-attendance-metric span{color:var(--muted)}.admin-attendance-metric strong{color:var(--green);font-size:28px;line-height:1}.admin-attendance-metric small{color:#42526e;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.admin-attendance-metric.accent{background:#f6f9fc;border-color:#376a9d2e}.admin-attendance-metric.accent strong{color:var(--blue)}.admin-attendance-progress{background:#e7eeec;border-radius:999px;width:100%;height:7px;overflow:hidden}.admin-attendance-progress i{border-radius:inherit;background:linear-gradient(90deg, var(--green), var(--blue));height:100%;display:block}.admin-attendance-name{color:var(--ink);font-size:15px;line-height:1.35;display:block}.admin-attendance-student-id{color:#34413e;text-overflow:ellipsis;white-space:nowrap;background:#f4f6f5;border-radius:999px;width:fit-content;max-width:100%;padding:4px 8px;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,monospace;font-size:12px;font-weight:800;display:inline-flex;overflow:hidden}.admin-mono-cell{color:#34413e;text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,monospace;font-size:12px;display:inline-block;overflow:hidden}.admin-attendance-cell{justify-content:space-between;align-items:center;gap:8px;min-width:0;max-width:100%;display:flex}.admin-attendance-cell>div{gap:5px;min-width:0;display:grid}.admin-attendance-time{overflow-wrap:anywhere;min-width:0;color:var(--ink);white-space:normal;font-size:13px;font-weight:700;line-height:1.35;display:block}.admin-attendance-result{width:fit-content;color:var(--green);background:var(--green-50);border:1px solid #096e5e2e;border-radius:999px;padding:3px 8px;font-size:11px;font-weight:800;line-height:1}.admin-attendance-cell.is-missing .admin-attendance-result{color:var(--amber);background:#fff7e8;border-color:#9b6a1d3d}.admin-attendance-cell.is-disabled .admin-attendance-time,.admin-attendance-cell.is-disabled .admin-attendance-result{color:var(--muted)}.admin-attendance-cell.is-disabled .admin-attendance-result{background:#f4f6f5;border-color:#66736f2e}.admin-danger-button.compact{min-height:30px;padding:0 10px;font-size:12px}.admin-empty-state p{color:var(--muted);font-size:13px;line-height:1.5}.admin-empty-state{gap:8px;display:grid}.admin-tabs{border:1px solid var(--line);background:#fbfcfc;border-radius:10px;gap:4px;margin-top:14px;padding:4px;display:inline-flex}.admin-tabs button{color:#34413e;min-height:34px;font:inherit;cursor:pointer;background:0 0;border:0;border-radius:7px;padding:0 12px;font-size:13px;font-weight:700}.admin-tabs button.active{color:var(--white);background:var(--green)}.admin-booking-tabs{margin-top:16px}.admin-metrics{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:14px;display:grid}.admin-metrics article{gap:4px;padding:14px;display:grid}.admin-metrics strong{color:var(--green);font-size:24px}.admin-metrics span{color:var(--muted);font-size:13px}.admin-overview{gap:14px;display:grid}.admin-overview-hero{background:linear-gradient(135deg,#f5fbf8 0%,#f7faff 100%);border:1px solid #096e5e2e;border-radius:10px;grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:18px;padding:18px;display:grid}.admin-overview-hero h2{color:var(--ink);flex-wrap:wrap;align-items:baseline;gap:8px;margin-top:8px;font-size:clamp(28px,4vw,42px);line-height:1.05;display:flex}.admin-overview-hero p{color:var(--muted);margin-top:8px;font-size:14px;line-height:1.5}.admin-overview-metrics{margin-bottom:0}.admin-overview-metrics strong{font-size:26px;font-weight:700}.admin-overview-metrics span{font-size:12px}.admin-overview-metrics .admin-flip-number{gap:3px}.admin-overview-metrics .admin-flip-digit{border-radius:6px;min-width:.78em;height:1.18em}.admin-flip-number{font-variant-numeric:tabular-nums;perspective:420px;vertical-align:baseline;align-items:center;gap:2px;display:inline-flex}.admin-flip-digit{min-width:.72em;height:1.12em;color:var(--green);transform-origin:50% 0;backface-visibility:hidden;background:linear-gradient(#fff 0%,#eef8f5 100%);border:1px solid #096e5e1f;border-radius:5px;place-items:center;padding:0 .07em;animation:.42s cubic-bezier(.2,.8,.2,1) admin-flip-digit;display:inline-grid;box-shadow:inset 0 -1px #096e5e14}.admin-overview-hero .admin-flip-digit{min-width:.7em;color:var(--ink)}.admin-flip-separator{color:currentColor;place-items:center;min-width:.28em;display:inline-grid}@keyframes admin-flip-digit{0%{opacity:0;transform:rotateX(-82deg)translateY(-.08em)}58%{opacity:1;transform:rotateX(10deg)}to{opacity:1;transform:rotateX(0)}}@media (prefers-reduced-motion:reduce){.admin-flip-digit{animation:none}}.admin-trend-card{flex-direction:column;min-height:260px;padding:16px;display:flex}.admin-trend-card.compact{min-height:260px}.admin-line-chart{min-height:286px;margin-top:auto;padding-top:14px;position:relative}.admin-line-chart .uplot{width:100%;font-family:Arial,Helvetica Neue,PingFang TC,Microsoft JhengHei,sans-serif}.admin-line-chart .u-title{display:none}.admin-line-chart .u-legend{background:0 0;justify-content:flex-end;gap:12px;margin-bottom:6px;padding:0;display:flex}.admin-line-chart .u-legend th{display:none}.admin-line-chart .u-legend tr{gap:12px;display:flex}.admin-line-chart .u-legend td{color:var(--muted);border:0;padding:0;font-size:11px;font-weight:700}.admin-line-chart .u-legend .u-marker{border-radius:999px;width:14px;height:2px}.admin-form,.admin-login-card form{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;min-width:0;max-width:100%;margin-top:14px;display:grid}.admin-form>*,.admin-form label{min-width:0}.admin-login-card form{grid-template-columns:1fr;gap:14px}.admin-form label,.admin-login-card label{color:#34413e;gap:7px;font-size:12px;font-weight:700;display:grid}.admin-form input,.admin-form select,.admin-form textarea,.admin-login-card input{border:1px solid var(--line);width:100%;min-width:0;color:var(--ink);background:var(--white);font:inherit;border-radius:8px;padding:9px 11px;font-size:14px}.admin-field-label{color:#34413e;font-size:12px;font-weight:700}.admin-upload-field{gap:7px;display:grid}.admin-upload-control{grid-template-columns:auto minmax(0,1fr);align-items:center;gap:10px;min-width:0;display:grid}.admin-upload-control small{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:700;overflow:hidden}.admin-login-card input{min-height:44px}.admin-login-card button{width:100%;min-height:44px}.admin-overview-grid{grid-template-columns:minmax(0,1.2fr) minmax(240px,.8fr);gap:14px;display:grid}.admin-overview-grid .admin-card{margin-top:0}.admin-summary-card{flex-direction:column;justify-content:space-between;min-height:150px;display:flex}.admin-summary-card p{color:var(--muted);margin-top:8px;font-size:13px;line-height:1.5}.admin-profile-card{max-width:820px}.admin-profile-summary{border:1px solid var(--line);background:#fbfcfc;border-radius:10px;justify-content:space-between;gap:18px;margin-top:16px;padding:14px;display:flex}.admin-profile-summary>div:first-child{gap:6px;min-width:0;display:grid}.admin-profile-summary strong{overflow-wrap:anywhere;font-size:20px;line-height:1.2}.admin-profile-summary small{overflow-wrap:anywhere;color:var(--muted);font-size:13px}.admin-profile-form{grid-template-columns:repeat(3,minmax(0,1fr))}.admin-profile-summary .admin-role-chip-row{align-self:flex-start;align-items:flex-start;gap:5px;margin-top:0}.admin-profile-summary .admin-role-chip-row span{padding:3px 7px;font-size:11px}.admin-role-chip-row{flex-wrap:wrap;gap:7px;margin-top:18px;display:flex}.admin-role-chip-row span{color:var(--green);background:var(--green-50);border:1px solid #096e5e2e;border-radius:999px;padding:5px 9px;font-size:12px;font-weight:700}.admin-form textarea{resize:vertical;min-height:88px}.admin-field-stack{gap:10px;display:grid}.admin-label{color:var(--muted);font-size:12px;font-weight:700}.admin-inline-row{grid-template-columns:minmax(120px,.22fr) minmax(220px,1fr) auto;align-items:end;gap:10px;display:grid}.admin-inline-row .admin-switch{min-height:40px}.admin-inline-row .admin-secondary-button{min-width:92px}.admin-email-rules-summary{flex-wrap:wrap;align-items:center;gap:8px;min-width:0;margin-top:14px;display:flex}.admin-email-rules-summary span,.admin-email-rules-summary code,.admin-email-rules-summary small{border:1px solid var(--line);text-overflow:ellipsis;white-space:nowrap;background:#fbfcfc;border-radius:999px;max-width:100%;padding:6px 10px;font-size:12px;font-weight:800;line-height:1;overflow:hidden}.admin-email-rules-summary span{color:var(--muted)}.admin-email-rules-summary span[data-enabled=true]{color:var(--green);background:var(--green-50);border-color:#096e5e2e}.admin-email-rules-summary code{color:#34413e;max-width:min(100%,340px)}.admin-email-rules-summary small{color:var(--muted)}.admin-email-rules-modal{width:min(780px,100vw - 28px)}.admin-email-rules-form{grid-template-columns:1fr}.admin-add-rule-button{justify-self:start}.admin-rooms-search-form{grid-template-columns:minmax(0,1fr) minmax(0,.35fr) auto;align-items:end}.admin-rooms-search-form .admin-form-actions{align-self:end}.admin-room-image-field{border:1px solid var(--line);background:#fbfcfc;border-radius:10px;grid-template-columns:minmax(170px,.34fr) minmax(0,1fr);align-items:stretch;gap:14px;padding:10px;display:grid}.admin-room-image-preview,.admin-room-thumb{color:var(--muted);text-align:center;background:#eef4f1;border:1px solid #096e5e29;border-radius:8px;justify-content:center;align-items:center;display:flex;overflow:hidden}.admin-room-image-preview{min-height:138px;box-shadow:inset 0 0 0 1px #ffffffad}.admin-room-image-preview[data-empty=true]{background:linear-gradient(135deg,#ffffffb8,#eef8f5b8),repeating-linear-gradient(-45deg,#096e5e14 0 1px,#0000 1px 9px);border-style:dashed}.admin-room-image-preview img,.admin-room-thumb img{object-fit:cover;width:100%;height:100%}.admin-room-image-preview div,.admin-room-thumb span{gap:4px;padding:12px;font-size:12px;line-height:1.35;display:grid}.admin-room-image-preview strong{color:#34413e;font-size:13px}.admin-room-image-preview span{color:var(--muted)}.admin-room-image-controls{align-content:start;gap:12px;display:grid}.admin-room-image-controls>div:first-child{gap:4px;display:grid}.admin-room-image-controls strong{color:#34413e;font-size:13px}.admin-room-image-controls small{color:var(--muted);font-size:12px;line-height:1.4}.admin-room-image-actions{flex-wrap:wrap;gap:8px;display:flex}.admin-room-image-actions .admin-file-button,.admin-room-image-actions button{width:fit-content}.admin-room-image-state{width:fit-content;color:var(--green);background:var(--green-50);border:1px solid #096e5e24;border-radius:999px;padding:5px 9px;font-size:12px;font-weight:700}.admin-meeting-search-form{grid-template-columns:minmax(0,.85fr) minmax(0,1fr) auto;align-items:end}.admin-form-upload-form{grid-template-columns:minmax(220px,.7fr) minmax(260px,1fr) auto}.admin-wide-field{grid-column:span 2}.admin-meeting-switches{grid-column:span 2;grid-template-columns:repeat(2,minmax(220px,1fr));align-self:end;gap:10px;display:grid}.admin-switch{border:1px solid var(--line);cursor:pointer;background:#fbfcfc;border-radius:8px;grid-template-columns:auto minmax(0,1fr);align-items:center;min-height:44px;padding:8px 10px;gap:10px!important;display:grid!important}.admin-form>.admin-switch{align-self:end}.admin-switch input{opacity:0;pointer-events:none;position:absolute}.admin-switch span{background:#e7eeec;border:1px solid #096e5e38;border-radius:999px;width:38px;height:22px;transition:background .18s,border-color .18s;position:relative}.admin-switch span:after{content:"";background:var(--white);border-radius:999px;width:16px;height:16px;transition:transform .18s;position:absolute;top:2px;left:2px;box-shadow:0 1px 4px #121f1b2e}.admin-switch input:checked+span{border-color:var(--green);background:var(--green)}.admin-switch input:checked+span:after{transform:translate(16px)}.admin-switch input:focus-visible+span{outline-offset:2px;outline:2px solid #096e5e52}.admin-switch strong{color:var(--ink);text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:800;overflow:hidden}.admin-role-fieldset{border:1px solid var(--line);border-radius:10px;grid-column:span 3;gap:10px;min-width:0;padding:12px;display:grid}.admin-role-fieldset legend{color:#34413e;padding:0 6px;font-size:12px;font-weight:700}.admin-role-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;display:grid}.admin-role-grid label{border:1px solid var(--line);background:#fbfcfc;border-radius:8px;align-items:center;gap:8px;min-height:34px;padding:0 10px;display:flex}.admin-role-grid input{width:16px;height:16px}.admin-form-actions{flex-wrap:wrap;align-items:end;gap:8px;min-width:0;display:flex}.admin-meeting-search-actions{min-width:112px}.admin-meeting-search-button{width:100%}.admin-form button,.admin-login-card button,.admin-form-actions button,.admin-qr-setting-form button,.admin-secondary-button,.admin-danger-button{min-height:40px;color:var(--white);background:var(--green);font:inherit;cursor:pointer;border:0;border-radius:8px;padding:0 14px;font-size:13px;font-weight:700}.admin-form button:disabled,.admin-login-card button:disabled,.admin-form-actions button:disabled,.admin-qr-setting-form button:disabled,.admin-toolbar button:disabled,.admin-secondary-button:disabled,.admin-danger-button:disabled{opacity:.58;cursor:not-allowed}.admin-form button:not(.admin-secondary-button):not(.admin-danger-button):not(:disabled):hover,.admin-login-card button:not(:disabled):hover,.admin-form-actions button:not(.admin-secondary-button):not(.admin-danger-button):not(:disabled):hover,.admin-qr-setting-form button:not(:disabled):hover,.admin-toolbar button:not(.admin-secondary-button):not(.admin-danger-button):not(:disabled):hover{background:#075f52}.admin-secondary-button{border:1px solid var(--line);color:var(--green);background:var(--white)}.admin-secondary-button:not(:disabled):hover,.admin-secondary-button:focus-visible{background:var(--green-50);border-color:#096e5e47}.admin-danger-button,.admin-form .admin-danger-button{color:#a02828;background:#fff0f0}.admin-form .admin-danger-button:not(:disabled):hover,.admin-form .admin-danger-button:not(:disabled):focus-visible,.admin-danger-button:not(:disabled):hover,.admin-danger-button:not(:disabled):focus-visible{background:#ffe2e2}.admin-danger-button:disabled{opacity:.5;cursor:not-allowed}.admin-list{gap:10px;min-width:0;max-width:100%;margin-top:16px;display:grid}.admin-pagination{border-top:1px solid var(--line);color:var(--muted);justify-content:space-between;align-items:center;gap:12px;margin-top:14px;padding-top:14px;font-size:12px;font-weight:700;display:flex}.admin-pagination>div{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px;display:flex}.admin-pagination strong{color:#34413e;font-size:12px}.admin-field-config-list{gap:10px;margin-top:16px;display:grid}.admin-field-config-row{border:1px solid var(--line);background:#fbfcfc;border-radius:8px;grid-template-columns:minmax(140px,.9fr) minmax(120px,.55fr) minmax(100px,.45fr) minmax(160px,.8fr) minmax(180px,1fr);gap:10px;padding:12px;display:grid}.admin-field-config-row label{color:#34413e;gap:6px;min-width:0;font-size:12px;font-weight:700;display:grid}.admin-field-config-row input,.admin-field-config-row select{border:1px solid var(--line);width:100%;min-width:0;color:var(--ink);background:var(--white);font:inherit;border-radius:8px;padding:9px 10px;font-size:13px}.admin-toolbar-actions select{border:1px solid var(--line);min-height:40px;color:var(--ink);background:var(--white);font:inherit;border-radius:8px;padding:0 12px;font-size:13px}.admin-registration-actions{align-items:center}.admin-registration-actions .admin-secondary-button{justify-content:center;align-items:center;min-width:142px;min-height:40px;text-decoration:none;display:inline-flex}.admin-qr-panel{grid-template-columns:minmax(320px,1fr) minmax(320px,380px);align-items:center;gap:28px;margin-top:22px;display:grid}.admin-qr-panel h3{color:var(--ink);margin:0;font-size:28px;line-height:1.08}.admin-qr-panel p{color:var(--muted);margin-top:10px;font-size:15px;line-height:1.5}.admin-qr-image,.admin-qr-placeholder{aspect-ratio:1;border:1px solid var(--line);background:var(--white);border-radius:8px;justify-self:center;width:min(360px,100%);padding:12px}.admin-qr-image svg{width:100%;height:100%;fill:initial;stroke:initial;stroke-linecap:butt;stroke-linejoin:miter;stroke-width:initial;display:block}.admin-qr-image svg path,.admin-qr-image svg rect{stroke-linecap:butt;stroke-linejoin:miter;stroke-width:1px}.admin-qr-placeholder{color:var(--muted);background:#fbfcfc;border-style:dashed;place-items:center;font-size:13px;font-weight:700;display:grid}.admin-qr-pill{min-height:30px;color:var(--green);background:var(--green-50);border-radius:999px;align-items:center;padding:0 10px;font-size:12px;font-weight:800;display:inline-flex}.admin-qr-details{gap:18px;min-width:0;display:grid}.admin-qr-setting-form{border:1px solid var(--line);background:#fbfcfc;border-radius:8px;grid-template-columns:minmax(180px,1fr) auto;align-items:end;gap:10px;max-width:430px;padding:12px;display:grid}.admin-qr-setting-form label{color:#34413e;gap:6px;min-width:0;font-size:12px;font-weight:800;display:grid}.admin-qr-setting-form input{border:1px solid var(--line);width:100%;min-height:38px;color:var(--ink);background:var(--white);font:inherit;border-radius:8px;padding:0 10px;font-size:14px}.admin-qr-setting-input{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;display:grid}.admin-qr-setting-input span{color:var(--muted);font-size:12px;font-weight:800}.admin-qr-setting-form input[aria-invalid=true]{border-color:#c7372f;box-shadow:0 0 0 3px #c7372f1a}.admin-qr-setting-form button{min-height:38px}.admin-qr-setting-form small{color:var(--muted);grid-column:1/-1;font-size:12px;font-weight:700}.admin-qr-setting-error{color:#c7372f;grid-column:1/-1;margin:0;font-size:12px;font-weight:800}.admin-stage-control{gap:8px;display:grid}.admin-stage-control>span{color:#34413e;font-size:12px;font-weight:800}.admin-stage-control>div{border:1px solid var(--line);background:#f4f7f6;border-radius:8px;grid-template-columns:repeat(2,minmax(0,1fr));width:min(100%,360px);padding:3px;display:inline-grid}.admin-stage-control button{color:#42526e;min-height:34px;font:inherit;cursor:pointer;background:0 0;border:0;border-radius:6px;padding:0 12px;font-size:13px;font-weight:800}.admin-stage-control button.active{color:var(--white);background:var(--green);box-shadow:0 1px 4px #121f1b29}.admin-stage-control button:focus-visible{outline-offset:2px;outline:2px solid #096e5e52}.admin-qr-details dl{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:0;display:grid}.admin-qr-details dl div{border:1px solid var(--line);background:#fbfcfc;border-radius:8px;min-width:0;padding:11px 12px}.admin-qr-details dt{color:var(--muted);text-transform:uppercase;font-size:11px;font-weight:800}.admin-qr-details dd{overflow-wrap:anywhere;color:var(--ink);margin:5px 0 0;font-size:13px;font-weight:700}.admin-qr-link-block{align-items:start;gap:10px;display:grid}.admin-qr-link-block code{overflow-wrap:anywhere;border:1px solid var(--line);color:var(--green);background:var(--green-50);border-radius:8px;padding:10px 12px;font-size:12px}.admin-qr-display-link-panel{background:#fbfcfc;border:1px solid #096e5e29;border-radius:8px;gap:10px;padding:12px;display:grid}.admin-qr-display-link-panel h4{color:var(--ink);margin:0;font-size:14px}.admin-qr-display-link-panel p,.admin-qr-display-link-panel small{color:var(--muted);margin:5px 0 0;font-size:12px;line-height:1.45}.admin-qr-display-link-panel code,.admin-qr-display-empty{overflow-wrap:anywhere;border:1px solid var(--line);color:var(--green);background:var(--green-50);border-radius:8px;padding:10px 12px;font-size:12px;line-height:1.45}.admin-qr-display-empty{color:var(--muted);background:#f4f6f5}.admin-qr-display-actions{flex-wrap:wrap;gap:8px;display:flex}.admin-qr-display-actions button{min-height:36px;padding:0 12px;font-size:12px}.admin-qr-display-notice{background:var(--green-50);border:1px solid #096e5e2e;border-radius:8px;padding:9px 10px;font-weight:700;color:var(--green)!important}.admin-qr-error{background:#fff0f0;border:1px solid #a0282833;border-radius:8px;padding:10px 12px;font-weight:700;color:#a02828!important}.admin-list-item{border:1px solid var(--line);background:#fbfcfc;border-radius:8px;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:14px;min-width:0;max-width:100%;padding:12px;display:grid}.admin-room-list-item{grid-template-columns:96px minmax(0,1fr) auto}.admin-booking-list-item.is-cancelled{background:#f0f2f1;border-color:#66736f2e}.admin-booking-list-item.is-cancelled strong,.admin-booking-list-item.is-cancelled small,.admin-booking-list-item.is-cancelled em{color:#66736f}.admin-booking-list-item.is-cancelled strong span{color:#8c2f2f;background:#f6dddd}.admin-room-thumb{width:96px;height:70px}.admin-list-item strong,.admin-list-item div:first-child:not(.admin-room-thumb),.admin-list-main{gap:5px;min-width:0;display:grid}.admin-list-item strong{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;font-size:15px}.admin-list-item strong span{color:var(--green);background:var(--green-50);border-radius:999px;padding:3px 8px;font-size:11px}.admin-list-item small,.admin-list-item em{color:var(--muted);font-size:12px;font-style:normal}.admin-list-actions{flex-wrap:wrap;justify-content:flex-end;gap:8px;min-width:0;display:flex}.admin-modal-backdrop{z-index:40;background:#17211f6b;place-items:center;padding:18px;display:grid;position:fixed;inset:0}.admin-modal{border:1px solid var(--line);background:var(--white);border-radius:12px;width:min(940px,100%);max-height:min(760px,100vh - 36px);padding:18px;overflow:auto;box-shadow:0 24px 80px #17211f38}.admin-confirm-backdrop{z-index:60}.admin-confirm-modal{width:min(460px,100%);max-height:calc(100vh - 36px)}.admin-confirm-message{color:var(--muted);margin:18px 0 0;font-size:15px;line-height:1.65}.admin-confirm-actions{justify-content:flex-end;margin-top:22px}.admin-qr-modal{width:min(1180px,100vw - 28px);max-height:min(920px,100vh - 28px);padding:24px}.admin-modal-heading{border-bottom:1px solid var(--line);justify-content:space-between;align-items:flex-start;gap:16px;padding-bottom:14px;display:flex}.admin-modal-heading h2{margin-top:8px;font-size:26px}.admin-icon-button{border:1px solid var(--line);width:36px;height:36px;color:var(--ink);background:var(--white);font:inherit;cursor:pointer;border-radius:8px;place-items:center;font-size:24px;line-height:1;display:inline-grid}.modal-form{margin-top:18px}.admin-cancel-booking-form{grid-template-columns:1fr}.admin-cancel-booking-form textarea{resize:vertical;min-height:160px}.admin-cancel-booking-form .admin-form-actions{justify-content:flex-end}.admin-json-import{gap:14px;margin-top:18px;display:grid}.admin-json-import textarea{border:1px solid var(--line);width:100%;min-height:260px;color:var(--ink);resize:vertical;background:#fbfcfc;border-radius:8px;padding:12px;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,monospace;font-size:13px;line-height:1.5}.admin-json-import label{color:#34413e;gap:8px;font-size:12px;font-weight:700;display:grid}.admin-json-prompt{background:var(--green-50);border:1px solid #096e5e2e;border-radius:10px;justify-content:space-between;align-items:flex-start;gap:14px;padding:14px;display:flex}.admin-json-prompt div{gap:5px;display:grid}.admin-json-prompt strong{color:var(--green);font-size:14px}.admin-json-prompt span{color:var(--muted);font-size:13px;line-height:1.45}@media (max-width:1080px){.admin-page-authed{height:auto;overflow:hidden visible}.admin-login-shell,.admin-shell{grid-template-columns:1fr}.admin-shell{height:auto}.admin-login-shell{align-content:center;min-height:auto;padding:34px 0}.admin-login-copy h1{font-size:clamp(38px,10vw,54px)}.admin-sidebar{max-height:none;position:static}.admin-main-panel{height:auto;overflow:visible}.admin-header,.admin-toolbar,.admin-list-item{grid-template-columns:1fr}.admin-header,.admin-toolbar{display:grid}.admin-overview-hero{grid-template-columns:1fr}.admin-profile-summary{display:grid}.admin-metrics,.admin-form{grid-template-columns:repeat(2,minmax(0,1fr))}.admin-overview-grid{grid-template-columns:1fr}.admin-checkins-hero,.admin-attendance-summary{grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.admin-checkins-actions{justify-content:flex-start}.admin-meeting-search-form,.admin-meeting-switches{grid-template-columns:repeat(2,minmax(0,1fr))}.admin-rooms-search-form,.admin-meeting-search-form{grid-template-columns:1fr}.admin-rooms-search-form .admin-wide-field,.admin-meeting-search-form .admin-wide-field{grid-column:auto}.admin-inline-row{grid-template-columns:1fr}.admin-field-config-row{grid-template-columns:repeat(2,minmax(0,1fr))}.admin-qr-panel{grid-template-columns:1fr}.admin-qr-image,.admin-qr-placeholder{width:min(340px,100%)}.admin-room-image-field{grid-template-columns:1fr}.admin-wide-field,.admin-role-fieldset{grid-column:span 2}.admin-role-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:620px){.admin-metrics,.admin-overview-grid,.admin-form,.admin-form-upload-form,.admin-field-config-row,.admin-qr-panel,.admin-rooms-search-form,.admin-meeting-search-form,.admin-meeting-switches,.admin-login-card form,.admin-wide-field,.admin-role-fieldset{grid-column:auto;grid-template-columns:1fr}.admin-meeting-switches{grid-column:auto}.admin-registration-actions,.admin-registration-actions .admin-secondary-button{width:100%}.admin-checkins-hero,.admin-attendance-summary{grid-template-columns:1fr}.admin-checkins-actions{justify-content:stretch}.admin-checkins-actions .admin-secondary-button,.admin-checkins-actions .admin-primary-link-button{justify-content:center;width:100%}.admin-checkins-controls,.admin-checkins-card .admin-registration-block,.admin-attendance-summary,.admin-checkins-card .admin-table-scroll{margin-left:12px;margin-right:12px}.admin-checkins-card .admin-table-scroll{background:0 0;border:0;overflow-x:visible}.admin-attendance-table,.admin-attendance-table thead,.admin-attendance-table tbody,.admin-attendance-table tr,.admin-attendance-table th,.admin-attendance-table td{width:100%;min-width:0;display:block}.admin-attendance-table thead{clip:rect(0 0 0 0);width:1px;height:1px;position:absolute;overflow:hidden}.admin-attendance-table tbody{gap:10px;display:grid}.admin-attendance-table tbody tr{border:1px solid var(--line);border-radius:8px;gap:10px;padding:12px;display:grid}.admin-attendance-table td{border-bottom:0;grid-template-columns:minmax(92px,.35fr) minmax(0,1fr);gap:10px;padding:0;display:grid}.admin-attendance-table td:before{content:attr(data-label);color:var(--muted);text-transform:uppercase;font-size:11px;font-weight:800;line-height:1.4}.admin-attendance-cell{min-width:0}.admin-role-grid{grid-template-columns:1fr}.admin-list-actions{flex-wrap:wrap}.admin-pagination{justify-items:stretch;display:grid}.admin-pagination>div{justify-content:stretch}.admin-pagination .admin-secondary-button{flex:120px}.admin-qr-modal{width:calc(100vw - 18px);max-height:calc(100vh - 18px);padding:16px}.admin-qr-details dl,.admin-qr-setting-form{grid-template-columns:1fr}.admin-qr-setting-form button{width:100%}.admin-tabs{grid-template-columns:1fr;display:grid}.admin-json-prompt{display:grid}}.admin-modal.admin-email-rules-modal{flex-direction:column;width:min(680px,100%);max-height:calc(100dvh - 36px);padding:0;display:flex;overflow:hidden}.admin-email-rules-modal .admin-modal-heading{flex-shrink:0;padding:20px 24px 16px}.admin-email-rules-form{flex-direction:column;gap:0;min-height:0;margin:0;display:flex}.admin-email-settings-fields{border:0;flex-direction:column;gap:20px;min-width:0;min-height:0;margin:0;padding:20px 24px;display:flex;overflow-y:auto}.admin-email-rules-form .admin-wide-field{grid-column:auto}.admin-email-rules-form .admin-switch{grid-template-columns:38px minmax(0,1fr)}.admin-email-settings-fields>.admin-switch{background:0 0;border:0;min-height:24px;padding:0}.admin-email-rules-form .admin-switch input{width:1px;height:1px;padding:0}.admin-email-mode{gap:10px;display:grid}.admin-email-mode-options{background:#edf2f0;border-radius:8px;grid-template-columns:1fr 1fr;width:min(100%,320px);padding:3px;display:grid;position:relative}.admin-email-mode-options:before{content:"";background:var(--white);border-radius:7px;width:calc(50% - 3px);transition:transform .18s;position:absolute;top:3px;bottom:3px;left:3px;box-shadow:0 1px 4px #17211f14}.admin-email-mode-options[data-mode=whitelist]:before{transform:translate(100%)}.admin-email-rules-form .admin-email-mode-option{cursor:pointer;display:block;position:relative}.admin-email-mode-option input{opacity:0;width:1px;height:1px;padding:0;position:absolute}.admin-email-mode-option span{text-align:center;color:var(--muted);border-radius:6px;padding:7px 10px;font-size:13px;line-height:18px;display:block}.admin-email-mode-option input:checked+span{color:var(--green)}.admin-email-mode-option input:focus-visible+span{outline:2px solid var(--green);outline-offset:-2px}.admin-email-mode p,.admin-email-help,.admin-email-empty{color:var(--muted);margin:0;font-size:12px;line-height:1.6}.admin-email-notice,.admin-email-empty{background:#f5f7f6;border-radius:8px;padding:12px}.admin-email-panel{border-top:1px solid var(--line);padding-top:20px}.admin-email-rules-form textarea{resize:vertical;min-height:112px;max-height:200px;font-weight:400;line-height:1.6}.admin-email-rules-form input{font-weight:400}.admin-email-rules-form .admin-email-rule-row{grid-template-columns:112px minmax(0,1fr) auto;align-items:center}.admin-email-rules-form .admin-secondary-button{border:1px solid var(--line);background:var(--white);color:var(--ink)}.admin-email-rules-form .admin-secondary-button:not(:disabled):hover{background:#edf2f0}.admin-whitelist-list{scrollbar-width:none;max-height:210px;margin:0;padding:0;list-style:none;overflow-y:auto}.admin-whitelist-list::-webkit-scrollbar{display:none}.admin-whitelist-list li{border:1px solid #0000;border-radius:6px;justify-content:space-between;align-items:center;gap:12px;padding:2px 11px;display:flex}.admin-whitelist-list li:hover,.admin-whitelist-list li:focus-within{background:var(--green-50)}.admin-whitelist-list li span{overflow-wrap:anywhere;min-width:0;font-size:13px}.admin-whitelist-list button{flex-shrink:0}.admin-email-rules-form .admin-form-actions{border-top:1px solid var(--line);background:var(--white);flex-shrink:0;justify-content:flex-end;align-items:center;padding:16px 24px}.admin-email-save-hint{color:var(--muted);margin-right:auto;font-size:12px}@media (max-width:540px){.admin-email-rules-modal .admin-modal-heading,.admin-email-settings-fields{padding:16px}.admin-email-rules-form .admin-form-actions{padding:12px 16px}.admin-email-save-hint{flex-basis:100%}.admin-email-rules-form .admin-email-rule-row{grid-template-columns:minmax(0,1fr) auto}.admin-email-rule-row>input{grid-area:2/1/auto/-1}.admin-email-rule-row>button{grid-area:1/2}}@media (prefers-reduced-motion:reduce){.admin-email-mode-options:before{transition:none}}.admin-email-settings-fields>*{flex-shrink:0}.admin-whitelist-section,.admin-whitelist-add{gap:10px;min-width:0;display:grid}.admin-whitelist-section{scroll-margin-block:12px}.admin-whitelist-add{border-top:1px solid var(--line);padding-top:16px}.admin-email-rules-form .admin-whitelist-add textarea{min-height:88px}.admin-whitelist-list:not(:empty){min-height:35px}.admin-email-scroll{min-height:0;overflow-y:auto}.admin-email-settings-fields{overflow:visible}.admin-whitelist-heading{justify-content:space-between;align-items:center;gap:12px;display:flex}.admin-email-rules-form .admin-whitelist-list button,.admin-email-rules-form .admin-whitelist-clear{border-radius:5px;min-height:28px;padding:0 8px;font-size:12px;line-height:1.2}.admin-traffic-controls{flex-wrap:wrap;align-items:end;gap:10px;display:flex}.admin-traffic-controls label{color:var(--muted);gap:5px;font-size:12px;display:grid}.admin-traffic-controls select{border:1px solid var(--line);color:var(--ink);font:inherit;background:#fff;border-radius:8px;padding:9px 12px;font-size:13px}.admin-traffic-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.admin-traffic-card{min-width:0;margin-top:0}.admin-traffic-subtitle,.admin-traffic-note{color:var(--muted);font-size:12px;line-height:1.6}.admin-traffic-subtitle{margin:2px 0 12px}.admin-traffic-note{margin:0}.admin-traffic-card>.admin-traffic-note{margin-top:14px}.admin-app-traffic-totals{flex-wrap:wrap;gap:10px 22px;margin:8px 0;display:flex}.admin-app-traffic-totals>span{align-items:center;gap:7px;font-size:13px;display:inline-flex}.admin-app-traffic-totals small{color:var(--muted)}.admin-app-traffic-totals i,.admin-traffic-legend i{border-radius:50%;flex-shrink:0;width:9px;height:9px}.admin-traffic-distribution{flex-wrap:wrap;align-items:center;gap:18px;margin:auto 0;display:flex}.admin-traffic-donut{flex-shrink:0;width:180px;height:180px;position:relative}.admin-traffic-donut svg{width:100%;height:100%}.admin-traffic-donut>div{pointer-events:none;flex-direction:column;justify-content:center;align-items:center;display:flex;position:absolute;inset:45px 30px}.admin-traffic-donut strong{letter-spacing:-1px;font-size:24px;font-weight:600}.admin-traffic-donut span{color:var(--muted);margin-top:4px;font-size:11px}.admin-traffic-legend{flex:1;gap:14px;min-width:160px;margin:0;padding:0;list-style:none;display:grid}.admin-traffic-legend li{grid-template-columns:9px minmax(0,1fr) auto;align-items:center;gap:4px 8px;font-size:12px;display:grid}.admin-traffic-legend li>span{overflow-wrap:anywhere}.admin-traffic-legend small{color:var(--muted);font-variant-numeric:tabular-nums;grid-column:2/-1}.admin-traffic-data{color:var(--muted);margin-top:12px;font-size:12px}.admin-traffic-data summary{cursor:pointer;width:fit-content}.admin-traffic-table-scroll{max-height:280px;margin-top:10px;overflow-x:auto}.admin-traffic-data table{border-collapse:collapse;width:100%;color:var(--ink);font-variant-numeric:tabular-nums}.admin-traffic-data caption{text-align:left;padding-bottom:8px}.admin-traffic-data th,.admin-traffic-data td{text-align:left;border-bottom:1px solid var(--line);white-space:nowrap;padding:7px 10px}.admin-traffic-card .u-legend{flex-wrap:wrap;gap:6px;display:flex}@media (max-width:900px){.admin-traffic-grid{grid-template-columns:minmax(0,1fr)}}@media (max-width:480px){.admin-traffic-distribution{justify-content:center}.admin-traffic-legend{flex-basis:100%}.admin-traffic-controls{align-items:center}}.admin-traffic-card .admin-line-chart .u-legend{text-align:left;margin:10px 0 0;display:block}.admin-traffic-card .admin-line-chart .u-legend tbody{flex-wrap:wrap;gap:8px 18px;display:flex}.admin-traffic-card .admin-line-chart .u-legend tr{align-items:center;gap:5px;margin:0;display:inline-flex}.admin-traffic-card .admin-line-chart .u-legend th{color:var(--ink);border:0;padding:0;font-size:11px;font-weight:500;display:inline-block}.admin-traffic-card .admin-line-chart .u-legend tr:first-child{display:none}
