:root{--p900: #0a2337;--p800: #0d3a63;--p700: #124b86;--p600: #185fa5;--p500: #2278c8;--p400: #4a9ae4;--p200: #a8cef2;--p100: #cfe4f8;--p50: #eaf3fc;--teal700: #0b5744;--teal600: #0f6e56;--teal400: #17a37a;--teal200: #8fd9c2;--teal50: #e4f6f0;--success: #17a37a;--warning: #d08415;--warning-bg: #fdf4e5;--danger: #e0483f;--danger-bg: #fdedec;--info: #2278c8;--info-bg: #eaf3fc;--text1: #0f1e2e;--text2: #5a6b7f;--text3: #8c9aab;--line: #dbe2ea;--line-soft: #ebeff4;--bg: #f4f6fa;--bg-deep: #eef1f6;--card: #ffffff;--disabled-bg: #f0f3f7;--disabled-text: #a9b4c0;--g-primary: linear-gradient(135deg, #2278c8 0%, #124b86 100%);--g-hero: linear-gradient(158deg, #0d3a63 0%, #185fa5 52%, #2685cc 100%);--g-teal: linear-gradient(135deg, #1cb389 0%, #0f6e56 100%);--g-danger: linear-gradient(135deg, #ec5f56 0%, #c93a32 100%);--g-warn: linear-gradient(135deg, #e5a338 0%, #c07a10 100%);--g-side: linear-gradient(180deg, #0d2b46 0%, #0a2337 100%);--g-sheen: linear-gradient(120deg, rgba(255, 255, 255, 0) 30%, rgba(255, 255, 255, .28) 50%, rgba(255, 255, 255, 0) 70%);--r-card: 16px;--r-btn: 12px;--r-tag: 6px;--r-img: 12px;--r-pill: 999px;--sh-xs: 0 1px 2px rgba(15, 30, 46, .05);--sh-sm: 0 2px 8px rgba(15, 30, 46, .06), 0 1px 2px rgba(15, 30, 46, .04);--sh-md: 0 6px 20px rgba(15, 30, 46, .08), 0 2px 6px rgba(15, 30, 46, .04);--sh-lg: 0 14px 38px rgba(15, 30, 46, .13), 0 4px 12px rgba(15, 30, 46, .06);--sh-primary: 0 6px 18px rgba(24, 95, 165, .28);--sh-teal: 0 6px 18px rgba(23, 163, 122, .26);--sh-danger: 0 6px 20px rgba(224, 72, 63, .34);--shadow-float: var(--sh-md);--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-6: 24px;--sp-8: 32px;--f-h1: 24px;--f-h2: 20px;--f-h3: 17px;--f-bodyl: 16px;--f-body: 14px;--f-caption: 12px;--f-legal: 13px;--font-sans: "PingFang SC", "HarmonyOS Sans", "Source Han Sans SC", "Microsoft YaHei", system-ui, -apple-system, sans-serif;--font-num: "DIN Alternate", "SF Pro Display", "Segoe UI", sans-serif;--ease: cubic-bezier(.22, .61, .36, 1);--ease-out: cubic-bezier(.16, 1, .3, 1);--dur-1: .16s;--dur-2: .24s;--dur-3: .36s}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{height:100%;margin:0;padding:0}body{font-family:var(--font-sans);font-size:var(--f-body);color:var(--text1);background:radial-gradient(1100px 620px at 12% -8%,#e6eef8,#e6eef800 62%),radial-gradient(900px 520px at 92% 4%,#e6f4ef,#e6f4ef00 58%),var(--bg);background-attachment:fixed;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}h1,h2,h3,h4,h5,strong,b{font-weight:500;margin:0;letter-spacing:-.01em}p,ul,ol{margin:0}ul,ol{padding-left:18px}a{color:var(--p600);text-decoration:none}button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}input,textarea,select{font-family:inherit;font-size:var(--f-body)}table{border-collapse:collapse;width:100%}.num{font-family:var(--font-num);font-variant-numeric:tabular-nums;font-feature-settings:"tnum"}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:#c9d3de;border-radius:999px;border:2px solid transparent;background-clip:padding-box}::-webkit-scrollbar-thumb:hover{background:#aebbc9;background-clip:padding-box}::-webkit-scrollbar-track{background:transparent}.row{display:flex;align-items:center}.between{display:flex;align-items:center;justify-content:space-between}.col{display:flex;flex-direction:column}.grow{flex:1}.gap4{gap:4px}.gap8{gap:8px}.gap12{gap:12px}.gap16{gap:16px}.mt8{margin-top:8px}.mt12{margin-top:12px}.mt16{margin-top:16px}.mt24{margin-top:24px}.t2{color:var(--text2)}.t3{color:var(--text3)}.f12{font-size:12px}.f13{font-size:13px}.f16{font-size:16px}.f17{font-size:17px}.f20{font-size:20px}.center{text-align:center}.wrap{flex-wrap:wrap}.card{background:var(--card);border:1px solid var(--line-soft);border-radius:var(--r-card);padding:var(--sp-4);box-shadow:var(--sh-sm);transition:box-shadow var(--dur-2) var(--ease),transform var(--dur-2) var(--ease),border-color var(--dur-2) var(--ease)}.card:hover{box-shadow:var(--sh-md);border-color:var(--line)}.card:active{transform:scale(.995)}.card-tap{position:relative;overflow:hidden;cursor:pointer}.card-tap:before{content:"";position:absolute;left:0;top:14px;bottom:14px;width:3px;background:var(--g-primary);border-radius:0 3px 3px 0;transform:scaleY(0);transform-origin:center;transition:transform var(--dur-2) var(--ease)}.card-tap:hover:before{transform:scaleY(1)}.card-hero{background:linear-gradient(180deg,#fff,#fbfcfe);border-color:var(--p100);box-shadow:var(--sh-md)}.legal{font-size:var(--f-legal);line-height:1.8;color:var(--text2)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:48px;padding:0 22px;border-radius:var(--r-btn);font-size:var(--f-bodyl);font-weight:500;position:relative;overflow:hidden;transition:transform var(--dur-1) var(--ease),box-shadow var(--dur-2) var(--ease),filter var(--dur-2) var(--ease),background-color var(--dur-2) var(--ease)}.btn:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:var(--g-sheen);transform:translate(-120%);transition:transform var(--dur-3) var(--ease)}.btn:hover:after{transform:translate(120%)}.btn:active{transform:translateY(1px) scale(.985)}.btn-primary{background:var(--g-primary);color:#fff;box-shadow:var(--sh-primary)}.btn-primary:hover{filter:brightness(1.06);box-shadow:0 8px 22px #185fa557}.btn-teal{background:var(--g-teal);color:#fff;box-shadow:var(--sh-teal)}.btn-ghost{height:44px;border:1px solid var(--p200);color:var(--p600);background:#fff;box-shadow:var(--sh-xs)}.btn-ghost:hover{border-color:var(--p400);background:var(--p50)}.btn-text{height:auto;padding:0;color:var(--p600);background:none;font-size:var(--f-body);box-shadow:none}.btn-text:after{display:none}.btn-text:hover{color:var(--p500)}.btn-danger{background:var(--g-danger);color:#fff;box-shadow:var(--sh-danger)}.btn-disabled,.btn:disabled{background:var(--disabled-bg)!important;color:var(--disabled-text)!important;border-color:transparent!important;cursor:not-allowed;box-shadow:none!important;filter:none!important;transform:none!important}.btn-disabled:after,.btn:disabled:after{display:none}.btn-sm{height:34px;font-size:13px;padding:0 14px;border-radius:9px}.btn-block{display:flex;width:100%}.tag{display:inline-flex;align-items:center;gap:3px;height:23px;padding:0 8px;border-radius:var(--r-tag);font-size:var(--f-caption);line-height:1;border:1px solid transparent;white-space:nowrap}.tag-teal{background:var(--teal50);color:var(--teal600);border-color:#c8ebdf}.tag-primary{background:var(--p50);color:var(--p600);border-color:var(--p100)}.tag-warn{background:var(--warning-bg);color:var(--warning);border-color:#f2ddb6}.tag-danger{background:var(--danger-bg);color:var(--danger);border-color:#f7cdca}.tag-gray{background:#f2f5f9;color:var(--text2);border-color:#e4e9f0}.tag-solid{background:var(--g-primary);color:#fff;border-color:transparent}.field{display:block;margin-bottom:var(--sp-4)}.field>label{display:block;font-size:13px;color:var(--text2);margin-bottom:6px;font-weight:500}.input,.textarea,.select{width:100%;height:46px;padding:0 14px;border:1px solid var(--line);border-radius:var(--r-btn);background:#fff;color:var(--text1);outline:none;transition:border-color var(--dur-2) var(--ease),box-shadow var(--dur-2) var(--ease),background var(--dur-2) var(--ease)}.textarea{height:auto;min-height:92px;padding:12px 14px;resize:vertical;line-height:1.6}.input::placeholder,.textarea::placeholder{color:var(--text3)}.input:hover,.textarea:hover,.select:hover{border-color:#c4cfdb}.input:focus,.textarea:focus,.select:focus{border-color:var(--p400);box-shadow:0 0 0 3px #4a9ae429;background:#fff}.input-err{border-color:var(--danger)}.input-err:focus{box-shadow:0 0 0 3px #e0483f24}.err-text{color:var(--danger);font-size:12px;margin-top:5px}.phone-shell{width:390px;height:100%;max-height:844px;background:var(--bg);border:1px solid rgba(15,30,46,.08);border-radius:28px;overflow:hidden;display:flex;flex-direction:column;position:relative;box-shadow:var(--sh-lg),0 0 0 8px #0f1e2e09}.phone-body{flex:1;overflow-y:auto;overscroll-behavior:contain;scroll-behavior:smooth}.phone-body::-webkit-scrollbar{width:0}.navbar{height:50px;display:flex;align-items:center;padding:0 var(--sp-4);background:#ffffffdb;backdrop-filter:saturate(180%) blur(14px);-webkit-backdrop-filter:saturate(180%) blur(14px);border-bottom:1px solid var(--line-soft);font-size:var(--f-h3);font-weight:500;flex-shrink:0;gap:8px;position:sticky;top:0;z-index:60}.navbar .back{color:var(--text2);font-size:20px;line-height:1;width:28px;height:28px;display:grid;place-items:center;border-radius:8px;margin-left:-6px;transition:background var(--dur-1) var(--ease)}.navbar .back:hover{background:var(--bg-deep)}.navbar-dark{background:transparent;backdrop-filter:none;-webkit-backdrop-filter:none;border-bottom:none;color:#fff}.navbar-dark .back{color:#fff}.tabbar{height:60px;display:flex;background:#ffffffeb;backdrop-filter:saturate(180%) blur(14px);-webkit-backdrop-filter:saturate(180%) blur(14px);border-top:1px solid var(--line-soft);flex-shrink:0}.tabbar .tab{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;font-size:11px;color:var(--text3);position:relative;transition:color var(--dur-2) var(--ease)}.tabbar .tab.on{color:var(--p600);font-weight:500}.tabbar .tab.on:before{content:"";position:absolute;top:0;left:50%;transform:translate(-50%);width:22px;height:3px;border-radius:0 0 3px 3px;background:var(--g-primary)}.tabbar .tab .ico{font-size:19px;line-height:1;transition:transform var(--dur-2) var(--ease-out)}.tabbar .tab.on .ico{transform:translateY(-1px) scale(1.12)}.page{padding:var(--sp-4)}.hero{position:relative;overflow:hidden;color:#fff;background:var(--g-hero);padding:12px 16px 20px}.hero:before{content:"";position:absolute;width:260px;height:260px;right:-90px;top:-130px;background:radial-gradient(circle,#ffffff2e,#fff0 68%);pointer-events:none}.hero:after{content:"";position:absolute;width:220px;height:220px;left:-80px;bottom:-140px;background:radial-gradient(circle,#17a37a42,#17a37a00 68%);pointer-events:none}.hero>*{position:relative;z-index:1}.hero-search{display:flex;align-items:center;gap:8px;height:42px;border-radius:var(--r-pill);padding:0 16px;background:#fffffff5;color:var(--text3);box-shadow:0 4px 14px #061c322e;transition:transform var(--dur-2) var(--ease)}.hero-search:hover{transform:translateY(-1px)}.hero-strip{display:grid;grid-auto-flow:column;gap:4px;background:#ffffff21;border:1px solid rgba(255,255,255,.18);border-radius:var(--r-btn);padding:10px 4px;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.hero-strip .it{text-align:center;color:#ffffffd1;font-size:11px;line-height:1.5}.hero-strip .it b{display:block;color:#fff;font-size:16px;font-weight:600}.pull-up{margin-top:-14px;border-radius:var(--r-card);position:relative;z-index:2}.icon-tile{width:46px;height:46px;border-radius:15px;display:grid;place-items:center;font-size:20px;color:var(--p600);background:linear-gradient(150deg,#eef5fd,#dfecfa);box-shadow:inset 0 1px #fff,var(--sh-xs);transition:transform var(--dur-2) var(--ease-out),box-shadow var(--dur-2) var(--ease)}.tile-cell{cursor:pointer}.tile-cell:hover .icon-tile{transform:translateY(-3px);box-shadow:var(--sh-md)}.tile-cell:active .icon-tile{transform:translateY(0) scale(.94)}.icon-tile.teal{color:var(--teal600);background:linear-gradient(150deg,#e8f8f2,#d5f0e6)}.certbar{display:flex;align-items:center;gap:12px;min-height:42px;padding:0 14px;color:var(--teal700);font-size:12px;border-radius:var(--r-btn);background:linear-gradient(135deg,#e8f8f2,#ddf2ea);border:1px solid #c8ebdf}.boundary{position:relative;background:linear-gradient(135deg,#fffaf0,#fefcf7);border:1px solid #f0e2c4;border-radius:var(--r-btn);padding:13px 15px 13px 17px;overflow:hidden}.boundary:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--g-warn)}.badge{display:inline-flex;align-items:center;gap:2px;height:20px;padding:0 7px;border-radius:var(--r-pill);font-size:11px;background:var(--teal50);color:var(--teal600);border:1px solid #c8ebdf}.badge-p{background:var(--p50);color:var(--p600);border-color:var(--p100)}.sos{position:absolute;right:16px;bottom:88px;width:56px;height:56px;border-radius:50%;background:var(--g-danger);color:#fff;display:flex;align-items:center;justify-content:center;font-size:15px;font-weight:500;z-index:9999;box-shadow:var(--sh-danger);animation:sos-pulse 2.6s var(--ease) infinite}.sos:active{transform:scale(.93)}@keyframes sos-pulse{0%,to{box-shadow:0 6px 20px #e0483f57,0 0 #e0483f5c}55%{box-shadow:0 6px 20px #e0483f57,0 0 0 12px #e0483f00}}.tl{position:relative;padding-left:24px}.tl:before{content:"";position:absolute;left:5px;top:8px;bottom:8px;width:2px;background:var(--line);border-radius:2px}.tl-node{position:relative;padding-bottom:18px}.tl-node:last-child{padding-bottom:0}.tl-dot{position:absolute;left:-24px;top:3px;width:12px;height:12px;border-radius:50%;border:2px solid var(--line);background:#fff;transition:all var(--dur-2) var(--ease)}.tl-dot.done{background:var(--teal400);border-color:var(--teal400);box-shadow:0 0 0 3px #17a37a26}.tl-dot.doing{background:var(--p600);border-color:var(--p600);box-shadow:0 0 0 3px #185fa529;animation:dot-breathe 1.8s var(--ease) infinite}@keyframes dot-breathe{0%,to{box-shadow:0 0 0 3px #185fa529}50%{box-shadow:0 0 0 6px #185fa50d}}.bar{height:8px;border-radius:var(--r-pill);background:var(--bg-deep);overflow:hidden}.bar>i{display:block;height:100%;border-radius:var(--r-pill);background:var(--g-primary);transition:width var(--dur-3) var(--ease-out)}.bar>i.teal{background:var(--g-teal)}.bar>i.warn{background:var(--g-warn)}.bar>i.danger{background:var(--g-danger)}.lrow{display:flex;align-items:center;gap:12px;padding:13px 0;border-bottom:1px solid var(--line-soft)}.lrow:last-child{border-bottom:none}.mask{position:absolute;top:0;right:0;bottom:0;left:0;background:#0a1c2d7a;backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);display:flex;z-index:200;animation:fade-in var(--dur-2) var(--ease)}.sheet{margin-top:auto;width:100%;background:#fff;border-radius:22px 22px 0 0;padding:10px 16px calc(16px + env(safe-area-inset-bottom));max-height:82%;overflow-y:auto;box-shadow:0 -8px 34px #0a1c2d2e;animation:slide-up var(--dur-3) var(--ease-out)}.sheet:before{content:"";display:block;width:38px;height:4px;border-radius:4px;background:var(--line);margin:0 auto 12px}.dialog{margin:auto;width:306px;background:#fff;border-radius:18px;padding:22px;box-shadow:var(--sh-lg);animation:pop-in var(--dur-2) var(--ease-out)}.fullcover{position:absolute;top:0;right:0;bottom:0;left:0;background:#fff;z-index:500;display:flex;flex-direction:column;padding:32px 24px;animation:fade-in var(--dur-2) var(--ease)}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes slide-up{0%{transform:translateY(18px);opacity:.6}to{transform:translateY(0);opacity:1}}@keyframes pop-in{0%{transform:scale(.94);opacity:0}to{transform:scale(1);opacity:1}}.fade-in{animation:fade-in var(--dur-3) var(--ease)}.admin-layout{display:flex;height:100%;background:var(--bg)}.admin-side{width:218px;background:var(--g-side);color:#b9cde0;flex-shrink:0;overflow-y:auto;padding-bottom:24px;box-shadow:2px 0 14px #0a233724}.admin-side::-webkit-scrollbar{width:6px}.admin-side::-webkit-scrollbar-thumb{background:#ffffff24}.admin-side .logo{padding:17px 18px;color:#fff;font-size:16px;font-weight:500;border-bottom:1px solid rgba(255,255,255,.09);letter-spacing:.02em}.admin-side .grp{padding:15px 18px 6px;font-size:11px;color:#6b8aab;letter-spacing:.08em;text-transform:uppercase}.admin-side .item{display:flex;align-items:center;justify-content:space-between;padding:9px 18px;font-size:13px;color:#c4d6e8;cursor:pointer;position:relative;transition:background var(--dur-1) var(--ease),color var(--dur-1) var(--ease)}.admin-side .item:before{content:"";position:absolute;left:0;top:6px;bottom:6px;width:3px;background:var(--teal400);border-radius:0 3px 3px 0;transform:scaleY(0);transition:transform var(--dur-2) var(--ease)}.admin-side .item:hover{background:#ffffff12;color:#fff}.admin-side .item.on{background:linear-gradient(90deg,#185fa5eb,#185fa58c);color:#fff;font-weight:500}.admin-side .item.on:before{transform:scaleY(1)}.admin-main{flex:1;display:flex;flex-direction:column;overflow:hidden}.admin-top{height:56px;background:#ffffffe0;backdrop-filter:saturate(180%) blur(12px);-webkit-backdrop-filter:saturate(180%) blur(12px);border-bottom:1px solid var(--line-soft);display:flex;align-items:center;justify-content:space-between;padding:0 22px;flex-shrink:0;z-index:20}.admin-content{flex:1;overflow-y:auto;padding:22px}.tbl{background:#fff;border:1px solid var(--line-soft);border-radius:var(--r-card);overflow:hidden;box-shadow:var(--sh-sm)}.tbl th{text-align:left;font-size:12px;color:var(--text2);font-weight:500;padding:12px 14px;background:linear-gradient(180deg,#f8fafc,#f3f6fa);border-bottom:1px solid var(--line-soft);white-space:nowrap;letter-spacing:.02em}.tbl td{padding:12px 14px;font-size:13px;border-bottom:1px solid var(--line-soft);vertical-align:middle}.tbl tr:last-child td{border-bottom:none}.tbl tbody tr{transition:background var(--dur-1) var(--ease)}.tbl tbody tr:hover td{background:#f7fafd}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px}.stat{position:relative;background:#fff;border:1px solid var(--line-soft);border-radius:var(--r-card);padding:16px 18px;overflow:hidden;box-shadow:var(--sh-sm);transition:transform var(--dur-2) var(--ease),box-shadow var(--dur-2) var(--ease)}.stat:before{content:"";position:absolute;left:0;right:0;top:0;height:3px;background:var(--g-primary)}.stat:hover{transform:translateY(-2px);box-shadow:var(--sh-md)}.stat .v{font-size:26px;font-family:var(--font-num);font-weight:600;margin-top:8px;color:var(--p900);letter-spacing:-.02em}.stat.teal:before{background:var(--g-teal)}.stat.warn:before{background:var(--g-warn)}.stat.danger:before{background:var(--g-danger)}.seg{display:inline-flex;background:var(--bg-deep);border-radius:10px;padding:3px;gap:2px}.seg button{padding:7px 15px;border-radius:8px;font-size:13px;color:var(--text2);transition:all var(--dur-2) var(--ease)}.seg button:hover{color:var(--text1)}.seg button.on{background:#fff;color:var(--p600);font-weight:500;box-shadow:var(--sh-xs)}.hl{background:var(--danger-bg);color:var(--danger);padding:1px 3px;border-radius:3px;font-weight:500}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}
