*,:before,:after,::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border:0 solid #e5e7eb}:before,:after{--tw-content:""}html,:host{-webkit-text-size-adjust:100%;tab-size:4;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent;font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei,sans-serif;line-height:1.5}body{line-height:inherit;margin:0}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-feature-settings:normal;font-variation-settings:normal;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-feature-settings:inherit;font-variation-settings:inherit;font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:#0000;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{margin:0;padding:0;list-style:none}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder{opacity:1;color:#9ca3af}textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}:root{--blue:#3370ff;--blue-l:#e8f0fe;--blue-m:#5082f5;--blue-h:#245bdb;--green:#34c759;--green-l:#e8f7eb;--green-d:#1f8a3e;--red:#f54a45;--red-l:#fdecec;--red-d:#cb3e3a;--amber:#f80;--amber-l:#fff4e0;--amber-d:#b86b00;--purple:#7a5af8;--purple-l:#efeafe;--bg:#f5f6f7;--bg-hover:#edeef0;--surface:#fff;--border:#e6e8eb;--border-md:#dee0e3;--border-strong:#bbbfc4;--t1:#1f2329;--t2:#646a73;--t3:#8f959e;--r:8px;--rs:6px;--rxs:4px;--shadow-sm:0 1px 3px #1f232914;--shadow-md:0 4px 12px #1f23291a;--shadow-lg:0 8px 32px #1f232929;--font-sans:-apple-system, BlinkMacSystemFont, "PingFang SC", "Microsoft YaHei", sans-serif;--font-mono:ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--fs-xs:11px;--fs-sm:12px;--fs-base:13px;--fs-md:14px;--fs-lg:16px;--fs-xl:20px;--fs-2xl:24px;--fs-3xl:32px;--fw-regular:400;--fw-medium:500;--fw-semibold:600;--fw-bold:700}*,:before,:after{box-sizing:border-box;-webkit-tap-highlight-color:transparent;margin:0;padding:0}html,body,#root{height:100%;overflow:hidden}body{font-family:var(--font-sans);font-size:var(--fs-md);background:var(--bg);color:var(--t1);-webkit-font-smoothing:antialiased}input,textarea,select,button{font-family:inherit;font-size:var(--fs-md)}button{cursor:pointer}:focus-visible{outline:2px solid var(--blue);outline-offset:2px;border-radius:3px}.btn{border-radius:var(--rs);border:1px solid var(--border-md);background:var(--surface);color:var(--t2);font-size:var(--fs-base);font-weight:var(--fw-medium);white-space:nowrap;justify-content:center;align-items:center;gap:5px;padding:7px 14px;transition:all .13s;display:inline-flex}.btn:hover{background:var(--bg);color:var(--t1);border-color:#0000002e}.btn:active{transform:scale(.98)}.btn:disabled{opacity:.4;cursor:not-allowed}.btn-primary{background:var(--blue);color:#fff;border-color:var(--blue)}.btn-primary:hover{background:var(--blue-h);border-color:var(--blue-h);color:#fff}.btn-danger{color:var(--red-d);border-color:#f54a4552}.btn-danger:hover{background:var(--red-l);border-color:#f54a458c}.btn-sm{font-size:var(--fs-sm);padding:5px 10px}.empty-state{flex-direction:column;justify-content:center;align-items:center;gap:6px;padding:60px 20px;display:flex}.empty-state p{font-size:var(--fs-md);color:var(--t2);font-weight:var(--fw-medium)}.empty-state span{font-size:var(--fs-sm);color:var(--t3)}.spinner{border:2px solid var(--border-md);border-top-color:var(--blue);border-radius:50%;width:20px;height:20px;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.loading{color:var(--t3);font-size:var(--fs-base);flex-direction:column;align-items:center;gap:10px;padding:40px;display:flex}.toast-bar{font-size:var(--fs-base);color:#fff;background:var(--t1);opacity:0;z-index:9999;pointer-events:none;white-space:nowrap;border-radius:20px;padding:10px 20px;transition:all .22s;position:fixed;bottom:24px;left:50%;transform:translate(-50%)translateY(12px)}.toast-bar.show{opacity:1;transform:translate(-50%)translateY(0)}.toast-bar.success{background:var(--green)}.toast-bar.error{background:var(--red)}.modal-panel{width:90%;max-width:480px;padding:22px 26px}.nav-bar{background:var(--surface);border-bottom:1px solid var(--border);-webkit-user-select:none;user-select:none;height:68px;box-shadow:0 1px 0 var(--border);flex-shrink:0;align-items:stretch;padding:0 8px;display:flex}.nav-logo{border-right:1px solid var(--border);flex-shrink:0;align-items:center;margin-right:4px;padding:0 20px 0 14px;display:flex}.nav-tabs-desktop{flex:1;align-items:stretch;min-width:0;display:flex}.nav-tab{font-size:var(--fs-base);color:var(--t2);white-space:nowrap;cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;align-items:center;padding:0 14px;transition:color .13s,border-color .13s;display:flex}.nav-tab:hover{color:var(--t1)}.nav-tab.on{color:var(--blue);font-weight:var(--fw-medium);border-bottom-color:var(--blue)}.nav-user{font-size:var(--fs-sm);color:var(--t2);flex-shrink:0;align-items:center;gap:7px;margin-left:auto;padding:0 12px;display:flex}.nav-hamburger{width:40px;color:var(--t1);cursor:pointer;background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;display:none}.nav-drawer-overlay{z-index:9998;background:#0006;display:flex;position:fixed;inset:0}.nav-drawer{background:var(--surface);flex-direction:column;width:78%;max-width:300px;height:100%;display:flex;overflow-y:auto;box-shadow:2px 0 16px #00000026}.nav-drawer-hdr{border-bottom:1px solid var(--border);flex-shrink:0;justify-content:space-between;align-items:center;padding:16px 18px;display:flex}.nav-drawer-user{font-size:var(--fs-base);color:var(--t1);font-weight:600}.nav-drawer-close{color:var(--t3);cursor:pointer;background:0 0;border:none;padding:4px 8px}.nav-drawer-item{font-size:var(--fs-md);color:var(--t2);border:none;border-bottom:1px solid var(--border);text-align:left;cursor:pointer;background:0 0;align-items:center;padding:13px 18px;display:flex}.nav-drawer-item.on{color:var(--blue);font-weight:var(--fw-medium);background:var(--blue-l)}.page-hdr{border-bottom:1px solid var(--border);background:var(--surface);flex-wrap:wrap;flex-shrink:0;justify-content:space-between;align-items:center;gap:16px;padding:16px 24px;display:flex}.page-hdr-title{font-size:var(--fs-2xl);font-weight:var(--fw-bold);color:var(--t1)}.page-hdr-tools{align-items:center;gap:8px;display:flex}.toolbar-input,.toolbar-select{border:1px solid var(--border-md);border-radius:var(--rs);font-size:var(--fs-base);background:var(--surface);color:var(--t1);outline:none;padding:7px 11px;transition:border-color .13s}.toolbar-input:focus,.toolbar-select:focus{border-color:var(--blue)}.toolbar-input{width:200px}.data-table{border-collapse:collapse;background:var(--surface);border:1px solid var(--border);border-radius:var(--r);width:100%;overflow:hidden}.data-table th{text-align:left;font-size:var(--fs-sm);font-weight:var(--fw-medium);color:var(--t3);background:var(--bg);border-bottom:1px solid var(--border);white-space:nowrap;padding:10px 16px}.data-table td{font-size:var(--fs-base);color:var(--t1);border-bottom:1px solid var(--border);white-space:nowrap;padding:10px 16px}.data-table tbody tr{cursor:pointer;transition:background .1s}.data-table tbody tr:hover{background:var(--bg-hover)}.data-table tbody tr:last-child td{border-bottom:none}.status-badge{font-size:var(--fs-sm);font-weight:var(--fw-medium);white-space:nowrap;border-radius:999px;align-items:center;padding:2px 9px;display:inline-flex}.status-badge.blue{background:var(--blue-l);color:var(--blue-h)}.status-badge.green{background:var(--green-l);color:var(--green-d)}.status-badge.amber{background:var(--amber-l);color:var(--amber-d)}.status-badge.red{background:var(--red-l);color:var(--red-d)}.status-badge.grey{background:var(--bg-hover);color:var(--t2)}.form-wrap{padding:20px 22px}.form-field{flex-direction:column;gap:5px;margin-bottom:12px;display:flex}.form-field label{font-size:var(--fs-sm);color:var(--t2);font-weight:var(--fw-medium)}.form-field input,.form-field textarea,.form-field select{border:1px solid var(--border-md);border-radius:var(--rs);font-size:var(--fs-base);background:var(--surface);color:var(--t1);outline:none;padding:8px 11px;font-family:inherit;transition:border-color .13s}.form-field input:focus,.form-field textarea:focus,.form-field select:focus{border-color:var(--blue)}.form-field textarea{resize:vertical;min-height:70px;line-height:1.5}.form-footer{border-top:1px solid var(--border);justify-content:flex-end;gap:8px;margin-top:16px;padding-top:14px;display:flex}.form-section-title{font-size:var(--fs-base);font-weight:var(--fw-semibold);color:var(--t1);margin:22px 0 12px}.form-section-title:first-child{margin-top:0}.detail-tabs{border-bottom:1px solid var(--border);background:var(--surface);flex-shrink:0;gap:20px;padding:0 24px;display:flex}.detail-tab{font-size:var(--fs-base);color:var(--t2);background:0 0;border:none;border-bottom:2px solid #0000;padding:10px 2px;transition:color .13s,border-color .13s}.detail-tab:hover{color:var(--t1)}.detail-tab.on{color:var(--blue);font-weight:var(--fw-medium);border-bottom-color:var(--blue)}.detail-grid-3{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px 24px;display:grid}.detail-item{flex-direction:column;gap:4px;display:flex}.detail-label{font-size:var(--fs-sm);color:var(--t3)}.detail-value{font-size:var(--fs-md);color:var(--t1);line-height:1.6}.edu-list{flex-direction:column;gap:8px;display:flex}.edu-item{font-size:var(--fs-md);color:var(--t1);align-items:center;gap:10px;display:flex}.edu-item-level{background:var(--blue-l);color:var(--blue-h);font-size:var(--fs-sm);font-weight:var(--fw-medium);border-radius:999px;padding:2px 9px;display:inline-flex}.edu-row{gap:8px;margin-bottom:8px;display:flex}.edu-row select{flex:0 0 100px}.edu-row input{flex:1}.edu-row select,.edu-row input{border:1px solid var(--border-md);border-radius:var(--rs);font-size:var(--fs-base);background:var(--surface);color:var(--t1);outline:none;padding:8px 11px;font-family:inherit}.edu-row select:focus,.edu-row input:focus{border-color:var(--blue)}.edu-row-remove{border:1px solid var(--border-md);border-radius:var(--rs);background:var(--surface);color:var(--t3);cursor:pointer;flex:0 0 32px;font-size:16px;line-height:1}.edu-row-remove:hover{color:var(--red-d);background:var(--red-l);border-color:#f54a4566}.status-badge .dot{background:currentColor;border-radius:50%;flex-shrink:0;width:6px;height:6px;margin-right:5px;display:inline-block}.tag{border-radius:var(--rxs);background:var(--bg-hover);color:var(--t2);font-size:var(--fs-sm);white-space:nowrap;align-items:center;padding:2px 9px;display:inline-flex}.stat-row{flex-wrap:wrap;flex-shrink:0;gap:14px;padding:16px 24px 0;display:flex}.stat-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r);min-width:140px;box-shadow:var(--shadow-sm);flex:1;padding:14px 16px}.stat-label{font-size:var(--fs-sm);font-weight:var(--fw-medium);color:var(--t3)}.stat-value{font-size:var(--fs-2xl);font-weight:var(--fw-bold);color:var(--t1);margin-top:6px}.customer-name{font-size:var(--fs-md);font-weight:var(--fw-semibold);color:var(--t1)}.cell-sub{font-size:var(--fs-sm);color:var(--t3);margin-top:1px}.search-input-wrap{display:inline-flex;position:relative}.search-input-wrap svg{color:var(--t3);pointer-events:none;position:absolute;top:50%;left:10px;transform:translateY(-50%)}.search-input-wrap .toolbar-input{padding-left:32px}.row-chev{opacity:0;color:var(--t3);transition:opacity .13s,transform .13s}.data-table tbody tr:hover .row-chev{opacity:1;transform:translate(2px)}.table-footer{border:1px solid var(--border);border-radius:0 0 var(--r) var(--r);background:var(--surface);font-size:var(--fs-sm);color:var(--t3);border-top:none;justify-content:space-between;align-items:center;padding:10px 16px;display:flex}.detail-identity{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;padding:20px 24px 0;display:flex}.detail-identity-name{font-size:var(--fs-xl);font-weight:var(--fw-bold);color:var(--t1)}.info-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r);padding:18px 20px}.info-card-title{font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--t3);text-transform:uppercase;letter-spacing:.03em;margin-bottom:14px}.icon-btn{color:var(--t3);cursor:pointer;border-radius:var(--rxs);background:0 0;border:none;justify-content:center;align-items:center;padding:4px;display:inline-flex}.icon-btn:hover{background:var(--bg-hover);color:var(--t1)}.icon-btn:disabled{opacity:.3;cursor:not-allowed}.icon-btn:disabled:hover{color:var(--t3);background:0 0}.info-row{border-bottom:1px solid var(--border);align-items:flex-start;gap:10px;padding:10px 0;display:flex}.info-row:first-child{padding-top:0}.info-row:last-child{border-bottom:none;padding-bottom:0}.info-icon{border-radius:var(--rxs);background:var(--bg);width:26px;height:26px;color:var(--t3);flex-shrink:0;justify-content:center;align-items:center;margin-top:1px;display:flex}.info-row-label{font-size:var(--fs-xs);color:var(--t3)}.info-row-value{font-size:var(--fs-base);font-weight:var(--fw-medium);color:var(--t1);margin-top:2px;line-height:1.5}.expiry-chip{border-radius:var(--rxs);font-size:var(--fs-xs);font-weight:var(--fw-semibold);padding:2px 8px;display:inline-flex}.expiry-chip.green{background:var(--green-l);color:var(--green-d)}.expiry-chip.amber{background:var(--amber-l);color:var(--amber-d)}.expiry-chip.red{background:var(--red-l);color:var(--red-d)}.edit-modal{flex-direction:column;width:640px;max-width:92vw;max-height:82vh;display:flex}.edit-modal-hdr{border-bottom:1px solid var(--border);flex-shrink:0;justify-content:space-between;align-items:center;padding:16px 22px;display:flex}.edit-modal-title{font-size:var(--fs-lg);font-weight:var(--fw-bold);color:var(--t1)}.edit-modal-close{color:var(--t3);cursor:pointer;border-radius:var(--rxs);background:0 0;border:none;padding:5px;display:flex}.edit-modal-close:hover{background:var(--bg-hover);color:var(--t1)}.edit-modal-body{flex:1;padding:20px 22px;overflow-y:auto}.edit-modal-footer{border-top:1px solid var(--border);flex-shrink:0;justify-content:flex-end;gap:8px;padding:14px 22px;display:flex}.field-grid{grid-template-columns:1fr 1fr;gap:0 14px;display:grid}.field-grid .form-field.full{grid-column:1/-1}@media (width<=720px){.nav-tabs-desktop{display:none}.nav-hamburger{display:flex}.nav-user span{text-overflow:ellipsis;white-space:nowrap;max-width:84px;overflow:hidden}.page-hdr{flex-direction:column;align-items:stretch;gap:10px;padding:12px 14px}.page-hdr-title{font-size:var(--fs-lg)}.page-hdr-tools{flex-wrap:wrap;width:100%}.toolbar-input{width:100%}.detail-body{padding:8px 14px 24px}.detail-grid,.detail-grid-3{grid-template-columns:1fr;gap:14px}.edu-row{flex-wrap:wrap}.edu-row select{flex:45%}.edu-row input{flex:100%}.modal-panel{width:94%;padding:16px 18px}.edit-modal{width:100%;max-height:88vh}.field-grid{grid-template-columns:1fr}.detail-identity{padding:16px 14px 0}.stat-row{padding:12px 14px 0}.btn{padding:8px 14px}.btn-sm{padding:7px 12px}input,textarea,select{font-size:16px}.form-field input,.form-field textarea,.form-field select{padding:9px 11px}.toast-bar{white-space:normal;text-align:center;max-width:88vw}}.static{position:static}.fixed{position:fixed}.block{display:block}.flex{display:flex}.table{display:table}.hidden{display:none}.border{border-width:1px}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.outline{outline-style:solid}.\!filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)!important}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}
