:root{font-family:Inter,Noto Sans TC,Microsoft JhengHei,system-ui,sans-serif;color:#183b4d;background:#f3f6f8;font-size:14px;font-synthesis:none;--teal: #167d88;--navy: #123e50;--line: #e0e8ed;--muted: #738797}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button,.button{cursor:pointer;border:1px solid #ccdbe3;background:#fff;border-radius:6px;padding:9px 14px;color:#244d60;font-weight:600;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:6px}button:hover{filter:brightness(.96)}button:disabled{opacity:.45;cursor:not-allowed}button:focus-visible,a:focus-visible{outline:3px solid #60b5c5;outline-offset:3px}.primary{color:#fff;background:#167d88;border-color:#167d88}.danger{color:#fff;background:#b94254;border-color:#b94254}.outline{background:#fff;color:#b94254}.ghost{border-color:transparent;background:transparent}.link{background:none;border:0;color:#147b8a;padding:0;text-align:left;font-weight:650}.wide{width:100%}.push{margin-left:auto}.right{text-align:right}.muted{color:var(--muted);font-weight:400}.success-text{color:#177b61}.danger-text{color:#b83a50}.eyebrow{font-size:10px;letter-spacing:2px;font-weight:700;color:#7893a4;margin:0 0 8px}h1{font-size:26px;line-height:1.4;margin:0 0 8px;letter-spacing:.4px}h2{font-size:17px;margin:0 0 10px}h3{margin:0 0 14px}p{line-height:1.7}small{font-size:11px}label{display:flex;flex-direction:column;gap:7px;font-weight:600;margin:0 0 18px}input,select,textarea{min-width:0;width:100%;padding:10px 12px;border:1px solid #cddbe4;border-radius:5px;background:#fff;color:#163b4d}input:focus,select:focus,textarea:focus{outline:2px solid #a9dce0;border-color:#378e99}input[type=checkbox]{width:17px;height:17px;accent-color:var(--teal);flex-shrink:0}textarea{min-height:76px;resize:vertical}.check{display:flex;flex-direction:row;align-items:center;gap:9px;margin:0;font-weight:500}.shell{display:grid;grid-template-columns:230px minmax(0,1fr);min-height:100vh}.sidebar{background:var(--navy);color:#fff;display:flex;flex-direction:column;padding:25px 16px;position:sticky;top:0;height:100vh}.brand{padding:0 14px 18px;border-bottom:1px solid #ffffff20}.brand span{font-size:34px;letter-spacing:5px;font-weight:800;display:block}.brand small{font-size:8px;letter-spacing:1px;color:#b5cdd7}.sidebar-title{padding:22px 14px 14px;font-size:12px;color:#a7c4ce}.sidebar nav{display:flex;flex-direction:column;gap:5px}.sidebar nav button{justify-content:flex-start;border:0;background:transparent;color:#c8dce3;padding:13px 14px;font-weight:500}.sidebar nav button.active{background:#247181;color:#fff}.nav-icon{font-size:20px;width:25px;text-align:center;color:#9dc9d2}.sidebar-footer{margin-top:auto;font-size:11px;line-height:1.8;padding:20px 14px 0;color:#a4bdc8}.workspace{min-width:0}.topbar{height:74px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 30px;gap:15px;font-size:12px}.account-menu{display:flex;align-items:center;gap:12px}.role-label{font-size:10px;border:1px solid #dce6eb;padding:4px 7px;border-radius:4px;color:#648492}.connection{font-size:10px;color:#68828e;white-space:nowrap}.connection i{display:inline-block;width:6px;height:6px;border-radius:50%;background:#38a386;margin-right:5px}.content{max-width:1700px;margin:auto;padding:30px}.page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin:0 0 24px}.page-head p{margin-bottom:0}.panel{background:#fff;border:1px solid var(--line);border-radius:9px;padding:24px;margin-bottom:22px;box-shadow:0 3px 12px #163b4d03}.section-head{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:18px}.section-head h2{margin:0}.table-wrap{width:100%;overflow:auto}table{border-collapse:collapse;width:100%;text-align:left;font-size:12px}th{font-size:11px;font-weight:600;white-space:nowrap;background:#f4f8fa;color:#6a8290;padding:13px 12px;border-bottom:1px solid var(--line)}td{padding:16px 12px;border-bottom:1px solid #eaf0f3;line-height:1.7;vertical-align:middle}td small{display:block;color:#8195a1;font-size:10px;margin-top:3px}td strong{font-weight:650}tr:last-child td{border-bottom:0}.empty{text-align:center;color:#8da1ad;padding:40px 15px}.tag{display:inline-block;padding:4px 9px;border-radius:4px;font-size:11px;white-space:nowrap;font-weight:700}.pending{background:#fff3d7;color:#996718}.approved,.active{background:#dff2e9;color:#23704f}.rejected{background:#fbe2e6;color:#a92e43}.row-rejected{background:#fff8f9}.row-rejected td:first-child{border-left:3px solid #d75a6c}.row-approved td:first-child{border-left:3px solid #5eaf88}.permit-tag{display:inline-block;padding:9px 12px;background:#f6dce6;border:1px solid #e7bbcd;color:#85415d;border-radius:6px;font-size:12px;font-weight:650;white-space:nowrap}.summary-strip{display:flex;gap:35px;padding:18px 24px;background:#fff;border:1px solid var(--line);border-radius:8px;margin-bottom:20px}.summary-strip strong{margin-left:8px}.toolbar{display:flex;align-items:center;flex-wrap:wrap;gap:10px;background:#f5f9fa;border:1px solid var(--line);border-radius:5px;padding:12px;margin-bottom:20px}.toolbar button,.button-row button{font-size:11px}.button-row{display:flex;gap:5px}.approve-small{background:#e4f3ed;color:#216b52;border-color:#bbddcf}.back{margin-bottom:20px;font-size:12px}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 24px}.footer-actions{display:flex;align-items:center;justify-content:space-between;border-top:1px solid var(--line);padding-top:20px;margin-top:20px;gap:20px}.count{display:inline-flex;align-items:center;justify-content:center;min-width:23px;height:23px;border-radius:50%;font-size:11px;background:#e5f0f3;color:#337586;margin-left:7px}.notice{padding:13px 17px;border-radius:6px;background:#ffeff1;border:1px solid #efc4cd;color:#a3314b;margin:0 0 20px;line-height:1.6}.notice.success{background:#e6f5ef;border-color:#b8dfce;color:#236e52}.shade{position:fixed;inset:0;background:#0d283d80;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:flex;align-items:center;justify-content:center;z-index:30;padding:20px}.modal{width:570px;max-width:100%;max-height:90vh;overflow:auto;background:#fff;border-radius:12px;padding:28px;box-shadow:0 24px 80px #0b283f40}.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:25px}.profile-match{padding:15px;background:#f5f8fa;border:1px solid var(--line);border-radius:5px;margin:12px 0}.profile-match p{margin:8px 0 0;font-size:12px}.profile-match label{margin:12px 0 0}.qr{text-align:center}.qr img{max-width:100%}.qr .permit-tag{margin-bottom:15px}.location{font-size:22px;border:1px solid #bcd7df;border-radius:7px;padding:12px 22px;background:#e8f4f6;color:#226777;font-weight:750}.inline-label{max-width:240px}.direction{display:flex;gap:15px;margin-bottom:20px}.direction button{flex:1;padding:20px;font-size:24px;border:2px solid #dbe5ea;background:#fff}.direction button.selected{border-color:#218575;background:#e4f3ef;color:#1e735f}.direction button.selected.exit{border-color:#4c7ca6;background:#eaf1fa;color:#345f86}.search-row{display:flex;align-items:flex-end;gap:12px}.search-row label{flex:1;margin:0}.search-row input{font-size:18px;min-height:48px}.search-row button{min-height:48px}.verification{padding:0;overflow:hidden}.verification-banner{display:flex;align-items:center;gap:22px;background:#e0f2e9;color:#1b714e;padding:20px 25px;border-left:5px solid #3a9671}.verification-banner strong{font-size:24px}.invalid .verification-banner{background:#fbe2e6;color:#ad2c45;border-left-color:#bb3a51}.verify-body{padding:24px}.detail-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;margin:22px 0}.detail-grid dt{font-size:11px;color:#8296a4;margin-bottom:6px}.detail-grid dd{margin:0;font-size:14px;font-weight:600;line-height:1.8}.identity-confirm{padding:18px;background:#f3f8f7;margin-top:20px}.confirm-move{padding:17px;font-size:18px;margin-top:15px}.result-choice{display:block;width:100%;padding:16px;text-align:left;justify-content:flex-start;margin:8px 0}.camera{width:100%;min-height:200px;background:#102f3e;border-radius:6px}.kpis{display:grid;grid-template-columns:1.05fr 1.5fr 1fr 1fr;gap:18px;margin-bottom:22px}.kpi{background:#fff;border:1px solid var(--line);border-radius:9px;padding:23px}.kpi>span{font-size:12px;color:#718897}.kpi>strong{display:block;font-size:35px;font-weight:650;margin-top:18px;white-space:nowrap}.kpi strong small{font-size:12px;margin-left:9px;font-weight:400}.kpi strong i{font-size:20px;color:#a0b1bb;padding:0 8px;font-style:normal}.kpi p{font-size:10px;color:#8298a4;margin:10px 0 0}.kpi.accent{background:#187888;border-color:#187888;color:#fff}.kpi.accent>span{color:#d7edf1}.position-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:15px}.position{border:1px solid var(--line);padding:20px;border-radius:7px}.position h3{font-size:18px}.position>div{display:flex;justify-content:space-between;gap:15px;color:#7d929f;font-size:11px}.position strong{display:block;font-size:24px;color:#265a6d;margin-top:8px}.filter-grid{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap}.filter-grid label{flex:1;margin:0;min-width:130px}.role-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}.role-card{border:1px solid var(--line);border-radius:7px;padding:25px}.role-card p{color:#4c7381}.permission{padding:12px 0;border-bottom:1px solid var(--line)}.temporary-password{font:700 38px ui-monospace,monospace;letter-spacing:8px;background:#eef6f7;padding:20px;text-align:center;margin:20px 0}.narrow{max-width:580px;margin:30px auto}.loading{text-align:center;padding:100px}.login{display:grid;grid-template-columns:1.1fr 1fr;min-height:100vh;background:#fff}.login-art{background:#123e50;color:#fff;padding:12vh 11%;position:relative;overflow:hidden}.brand-mark{font-size:70px;font-weight:800;letter-spacing:8px;margin-bottom:30px}.login-art .eyebrow{color:#8eb9c5}.login-art h1{font-size:34px;line-height:1.8;margin:35px 0 15px}.login-art>p:last-of-type{color:#b6cdd7}.harbour-lines{height:250px;width:600px;border:1px solid #4f8b9a;border-radius:50%;position:absolute;bottom:-130px;left:20%;box-shadow:0 -30px 0 1px #204f60,0 -60px 0 1px #2b6070;transform:rotate(-20deg)}.login-form{padding:15vh 15%;max-width:650px;width:100%;align-self:center}.login-form h2{font-size:28px;margin-bottom:12px}.login-form form{margin-top:32px}.login-form form button{padding:13px;margin-top:8px}.login-form footer{margin-top:70px;color:#9aadb7;font-size:11px}@media(max-width:1200px){.topbar>span{display:none}.account-menu{width:100%;justify-content:flex-end}.shell{grid-template-columns:200px minmax(0,1fr)}.content{padding:23px}.kpis{grid-template-columns:repeat(2,1fr)}.summary-strip{gap:18px}.position{padding:15px}.detail-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:760px){.shell{display:block}.sidebar{height:auto;position:relative;padding:13px}.brand{display:flex;align-items:center;gap:15px;border:0;padding:0 5px 10px}.brand span{font-size:24px}.sidebar-title,.sidebar-footer{display:none}.sidebar nav{flex-direction:row;overflow-x:auto}.sidebar nav button{white-space:nowrap;padding:10px;font-size:11px}.nav-icon{display:none}.topbar{padding:10px 16px;height:auto}.account-menu{gap:8px;flex-wrap:wrap;justify-content:flex-start}.connection,.role-label{display:none}.content{padding:20px 14px}.page-head{gap:12px}h1{font-size:23px}.panel{padding:17px}.kpis{gap:10px}.kpi{padding:17px}.kpi>strong{font-size:28px}.position-grid{grid-template-columns:repeat(2,1fr)}.form-grid{grid-template-columns:1fr}.search-row{flex-wrap:wrap}.search-row label{flex-basis:100%}.search-row button{flex:1}.summary-strip{flex-wrap:wrap;font-size:12px;padding:15px}.permit-tag{white-space:normal;max-width:180px}.toolbar{gap:8px}.toolbar .push{margin:0}.detail-grid{grid-template-columns:1fr 1fr;gap:16px}.verification-banner{flex-direction:column;align-items:flex-start;gap:5px}.verify-body{padding:18px}.footer-actions{align-items:flex-start;flex-direction:column}.footer-actions button{width:100%}.role-grid,.login{grid-template-columns:1fr}.login-art{padding:30px}.login-art h1,.login-art>p:last-of-type,.harbour-lines{display:none}.brand-mark{font-size:36px;margin-bottom:10px}.login-form{padding:45px 30px}.login-form footer{margin-top:40px}.modal{padding:22px}.location{font-size:17px;padding:10px}.table-wrap table{min-width:600px}}
