:root{--field-accent:#6230a7;--field-accent-hover:#4c248b;--field-tint:#f5f0fe;--page-background:#f7f9fa;--surface:#fff;--text-primary:#202729;--text-secondary:#606c71;--divider:#e8eaed;color:var(--text-primary);background:var(--page-background);font-synthesis:none;font-family:Arial,PingFang SC,Microsoft YaHei,sans-serif;font-size:14px;font-weight:400;line-height:1.55}*{box-sizing:border-box}body{background:linear-gradient(180deg, #f0eafa 0, var(--page-background) 480px);min-height:100svh;margin:0}button,a,input,label{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer;border:0}button:disabled{cursor:wait;opacity:.45}a{color:inherit}button:focus-visible,a:focus-visible{outline:3px solid var(--field-accent);outline-offset:4px}label:has(input:focus-visible){outline:3px solid var(--field-accent);outline-offset:4px}h1,h2,h3,p{margin:0}h1{letter-spacing:-.7px;font-size:24px;font-weight:600}h2{font-size:18px;font-weight:600}h3{font-size:16px;font-weight:500}.primary{background:var(--field-accent);color:#fff;border-radius:12px;min-height:48px;padding:11px 28px}.secondary{color:var(--field-accent);border:1px solid var(--divider);background:#fff;border-radius:10px;min-height:48px;padding:10px 22px}.full{width:100%}.hint,.login-card>p,.result-heading p,.result-message p{color:var(--text-secondary);font-size:12px}.centered{text-align:center}.error{color:#a33832;margin:12px 0;font-size:13px;line-height:1.7}.desktop-shell{max-width:1600px;min-height:100svh;margin:auto;padding:40px 48px}.desktop-header{justify-content:space-between;align-items:center;display:flex}.text-button{color:var(--text-secondary);background:0 0;font-size:13px}.login-card{text-align:center;width:380px;max-width:100%;margin:72px auto 60px;padding:32px 24px}.qr-box{background:#fff;place-items:center;width:240px;height:240px;margin:0 auto 12px;padding:18px;display:grid;position:relative}.qr-box img{width:100%;height:100%}.qr-expired{background:#ffffffed;flex-direction:column;justify-content:center;align-items:center;gap:15px;display:flex;position:absolute;inset:0}.login-card h2{margin-bottom:5px;font-size:17px}.login-card>p{line-height:1.8}.form-card{width:600px;max-width:100%;margin:48px auto 60px;padding:28px}.form-intro{margin-bottom:10px}.profile{background:var(--page-background);border-radius:14px;margin:0 0 16px;padding:0 16px}.profile>div{border-bottom:1px solid var(--divider);justify-content:space-between;align-items:center;gap:20px;padding:11px 0;display:flex}.profile>div:last-child{border:0}.profile dt{color:var(--text-secondary);font-size:13px}.profile dd{overflow-wrap:anywhere;text-align:right;margin:0;font-size:13px}fieldset{border:0;min-width:0;margin:0;padding:0}legend{padding:0;font-size:14px}.type-options{grid-template-columns:repeat(3,1fr);gap:12px;margin-top:10px;display:grid}.type-option{border:1px solid var(--divider);cursor:pointer;background:#fff;border-radius:16px;flex-direction:column;padding:14px 12px;display:flex}.type-option strong{margin-bottom:5px;font-size:18px;font-weight:500}.type-option b{white-space:nowrap;font-size:13px;font-weight:500}.type-option small{color:var(--text-secondary);margin-top:4px;font-size:11px}.type-option.selected,.side-options label.selected{border-color:var(--field-accent);background:var(--field-tint);box-shadow:inset 0 0 0 1px var(--field-accent)}input[type=radio]{opacity:0;width:1px;height:1px;position:absolute}.side-title{margin-top:16px;margin-bottom:7px}.side-options{gap:8px;display:flex}.side-options label{border:1px solid var(--divider);cursor:pointer;background:#fff;border-radius:14px;width:50%;padding:10px 14px}.start-test{min-width:220px;margin:22px auto 10px;display:block}.result-card{max-width:660px;margin:64px auto;padding:32px}.result-heading{align-items:center;gap:16px;margin-bottom:28px;display:flex}.status-icon{fill:none;stroke:currentColor;stroke-width:1.5px;flex-shrink:0;width:80px;height:80px}.result-heading p{margin-top:5px}.result-message{background:var(--page-background);border-radius:16px;margin-top:18px;padding:22px 24px}.result-message p{margin-top:8px}.result-actions{flex-wrap:wrap;justify-content:center;gap:12px;margin-top:24px;display:flex}.page-loading{text-align:center;color:var(--text-secondary);margin-top:150px}.mobile-shell{width:100%;max-width:440px;min-height:100svh;padding:16px 18px max(24px, env(safe-area-inset-bottom));margin:auto}.instruction{background:var(--surface);border:1px solid var(--divider);border-radius:24px;margin-bottom:16px;padding:20px}.instruction h2{margin-bottom:8px;font-size:15px;font-weight:500}.instruction h2 b{color:var(--field-accent);font-size:20px;font-weight:400}.instruction p{font-size:14px}.desktop-url{overflow-wrap:anywhere}.instruction-art{background:var(--field-tint);height:150px;color:var(--field-accent);border-radius:16px;justify-content:center;align-items:center;margin-top:10px;display:flex}.mobile-shell .primary{border-radius:12px}.support{text-align:center;color:var(--text-secondary);margin-top:16px;font-size:12px;text-decoration:none;display:block}.mobile-result{text-align:center;min-height:calc(100svh - 90px);padding:80px 8px 90px;position:relative}.mobile-result .status-icon{margin-bottom:14px}.mobile-result h2{margin-bottom:12px;font-size:19px}.mobile-result p{margin-bottom:24px}.mobile-result ol{text-align:left;padding-left:24px;font-size:13px;line-height:1.9;display:inline-block}.bottom-action{position:absolute;bottom:0;left:0}.scanner{color:#fff;background:#343637;position:fixed;inset:0;overflow:hidden}.scanner video{object-fit:cover;width:100%;height:100%}.scanner-close{color:#fff;background:#0005;border-radius:50%;place-items:center;width:42px;height:42px;font-size:30px;display:grid;position:absolute;top:20px;left:20px}.scan-target{text-align:center;width:min(75vw,320px);position:absolute;top:25%;left:50%;transform:translate(-50%)}.scan-frame{aspect-ratio:1;border:2px solid #fff9;position:relative;box-shadow:0 0 0 100vmax #0003}.scan-target p{text-shadow:0 1px 3px #000;margin-top:22px;font-size:13px;position:relative}.scanner-tools{justify-content:space-evenly;align-items:center;display:flex;position:absolute;bottom:64px;left:0;right:0}.scanner-tools button,.gallery{color:#fff;text-align:center;cursor:pointer;background:#fff2;border-radius:50%;flex-direction:column;justify-content:center;align-items:center;min-width:62px;min-height:62px;padding:8px;font-size:28px;display:flex}.scanner-tools span{font-size:12px;display:block}.gallery{position:relative}.gallery input{opacity:0;cursor:pointer;width:100%;position:absolute;inset:0}.gallery:focus-within{outline-offset:5px;outline:3px solid #fff}@media (width<=600px){.desktop-shell{padding:24px 20px}.desktop-header h1{font-size:20px}.form-card{margin-top:32px;padding:20px}.type-options{gap:7px}.type-option{padding:12px 8px}.type-option b{white-space:normal;font-size:13px}.type-option small{font-size:12px}.login-card{margin-top:48px}.result-card{margin-top:40px;padding:24px 20px}.result-heading{align-items:flex-start}.result-heading .status-icon{width:60px;height:60px}.mobile-result{padding-top:65px}}@media (prefers-reduced-motion:no-preference){button{transition:opacity .15s,background .15s}.type-option,.side-options label{transition:border-color .15s}}.report-summary{margin:24px 0;overflow-x:auto}.report-summary table{border-collapse:collapse;text-align:left;width:100%}.report-summary caption{text-align:left;margin-bottom:12px;font-weight:600}.report-summary th,.report-summary td{border-bottom:1px solid var(--divider);white-space:nowrap;padding:12px}.login-card,.form-card,.result-card{background:var(--surface);border:1px solid var(--divider);border-radius:24px;box-shadow:0 8px 32px #30204b06}.qr-box{border:1px solid var(--divider);border-radius:16px;overflow:hidden}.desktop-header h1{align-items:center;gap:12px;display:flex}.desktop-header h1:before{content:"";background:var(--field-accent);border-radius:3px;flex-shrink:0;width:6px;height:24px}.primary{font-weight:600}.text-button{border-radius:10px;min-height:44px;padding:8px 12px}.hint,.login-card>p,.result-heading p,.result-message p{font-size:14px;line-height:1.75}.form-intro{font-weight:600}legend{font-size:16px;font-weight:600}.type-option small{font-size:12px}.type-option.selected strong,.side-options .selected{color:var(--field-accent);font-weight:600}.side-options label{text-align:center}fieldset:disabled label{cursor:default;opacity:.6}.status-icon--success{color:#218545}.status-icon--pending{color:#a36b17}.status-icon--failure{color:#b8373b}.error,.login-card>.error{color:#a33832;background:#fff2f0;border-radius:12px;padding:12px 16px}.desktop-url{color:var(--field-accent);font-weight:600}.report-summary th{background:var(--field-tint)}@media (hover:hover){.primary:not(:disabled):hover{background:var(--field-accent-hover)}.secondary:not(:disabled):hover,.text-button:not(:disabled):hover,fieldset:not(:disabled) .type-option:hover,fieldset:not(:disabled) .side-options label:hover{background:var(--field-tint);border-color:var(--field-accent)}}@media (width<=400px){.desktop-shell{padding:24px 16px}.type-options{grid-template-columns:1fr}.type-option{padding:12px 16px}.type-option strong{margin-bottom:0}.qr-box{aspect-ratio:1;width:min(240px,100%);height:auto}.result-heading{gap:12px}}.result-details{text-align:left;margin-top:24px}.result-details h3{margin:0 0 12px}.result-detail-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:0 24px;display:grid}.result-detail-grid>div{border-bottom:1px solid var(--field-border,#e5e7eb);padding:12px 0}.result-detail-grid dt{color:var(--field-muted,#65727a);font-size:14px}.result-detail-grid dd{overflow-wrap:anywhere;margin:6px 0 0}.result-details details{border-top:1px solid var(--field-border,#e5e7eb);margin-top:16px;padding-top:16px}.result-details summary{cursor:pointer;font-weight:600}.result-details summary:focus-visible{outline:2px solid var(--field-accent,#673ab7);outline-offset:4px}@media (width<=480px){.result-detail-grid{grid-template-columns:1fr}}.result-action-hint{text-align:center;flex-basis:100%;margin:0}.redirect-fallback{flex-direction:column;align-items:flex-start;gap:16px;line-height:1.75;display:flex}.redirect-fallback .primary{text-align:center;justify-content:center;align-items:center;max-width:100%;text-decoration:none;display:inline-flex}
