:root{--color-bg: #f6f8fa;--color-surface: #ffffff;--color-text: #1f2328;--color-text-muted: #656d76;--color-primary: #2563eb;--color-primary-hover: #1d4ed8;--color-border: #d0d7de;--color-success: #1a7f37;--color-error: #cf222e;--color-warning: #9a6700;--color-primary-soft: rgba(37, 99, 235, .1);--color-success-soft: rgba(26, 127, 55, .1);--color-error-soft: rgba(207, 34, 46, .1);--color-warning-soft: rgba(154, 103, 0, .12);--font-size-xs: 12px;--font-size-sm: 14px;--font-size-base: 16px;--font-size-lg: 18px;--font-size-xl: 22px;--font-size-2xl: 28px;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-6: 24px;--space-8: 32px;--radius-sm: 4px;--radius-md: 6px;--radius-lg: 10px;--shadow-sm: 0 1px 2px rgba(31, 35, 40, .06), 0 1px 3px rgba(31, 35, 40, .04);--shadow-md: 0 4px 12px rgba(31, 35, 40, .1);--transition-fast: .15s ease-in-out;--font-sans: system-ui, -apple-system, "Segoe UI", "Microsoft YaHei", sans-serif;--font-mono: ui-monospace, "Cascadia Code", "Fira Code", monospace;--container-max-width: 960px;--nav-height: 56px}*,*:before,*:after{box-sizing:border-box}*{margin:0;padding:0}html{font-size:var(--font-size-base);-webkit-text-size-adjust:100%}body{font-family:var(--font-sans);font-size:var(--font-size-base);line-height:1.6;color:var(--color-text);background-color:var(--color-bg);min-height:100vh;display:flex;flex-direction:column}img{max-width:100%;height:auto;display:block}a{color:var(--color-primary);text-decoration:none;transition:color var(--transition-fast)}a:hover{color:var(--color-primary-hover)}code,pre{font-family:var(--font-mono)}ul,ol{list-style:none}.nav{position:sticky;top:0;z-index:100;background-color:var(--color-surface);border-bottom:1px solid var(--color-border);box-shadow:var(--shadow-sm)}.nav-container{max-width:var(--container-max-width);margin:0 auto;padding:var(--space-3) var(--space-4);display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);min-height:var(--nav-height)}.nav-brand{font-size:var(--font-size-lg);font-weight:600;color:var(--color-text);display:inline-flex;align-items:center;gap:var(--space-2)}.nav-brand:hover{color:var(--color-primary)}.nav-links{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap}.nav-link{display:inline-block;padding:var(--space-2) var(--space-3);color:var(--color-text-muted);font-size:var(--font-size-sm);border-radius:var(--radius-md);transition:color var(--transition-fast),background-color var(--transition-fast)}.nav-link:hover{color:var(--color-primary);background-color:var(--color-primary-soft)}.nav-link.is-active{color:var(--color-primary);background-color:var(--color-primary-soft);font-weight:500}.container{max-width:var(--container-max-width);margin:0 auto;padding:var(--space-6) var(--space-4);width:100%;flex:1 0 auto}.card{background-color:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-6);box-shadow:var(--shadow-sm);transition:box-shadow var(--transition-fast),border-color var(--transition-fast);display:flex;flex-direction:column;gap:var(--space-2)}.card:hover{box-shadow:var(--shadow-md);border-color:var(--color-primary)}.card-title{font-size:var(--font-size-lg);font-weight:600;color:var(--color-text);line-height:1.3}.card-title a{color:inherit}.card-title a:hover{color:var(--color-primary)}.card-meta{font-size:var(--font-size-xs);color:var(--color-text-muted);display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-2)}.card-desc{font-size:var(--font-size-sm);color:var(--color-text-muted);line-height:1.5}.card-tags{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-top:var(--space-1)}.card-tag{display:inline-block;padding:2px var(--space-2);font-size:var(--font-size-xs);color:var(--color-text-muted);background-color:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-sm)}.card-link{margin-top:var(--space-2);font-size:var(--font-size-sm);font-weight:500;color:var(--color-primary);align-self:flex-start}.card-link:hover{color:var(--color-primary-hover)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);font-family:inherit;font-size:var(--font-size-sm);font-weight:500;line-height:1.4;color:var(--color-text);background-color:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);cursor:pointer;transition:background-color var(--transition-fast),border-color var(--transition-fast),color var(--transition-fast),opacity var(--transition-fast);-webkit-user-select:none;user-select:none;text-align:center}.btn:hover{background-color:var(--color-bg);border-color:var(--color-text-muted)}.btn:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.btn:disabled,.btn[disabled]{opacity:.5;cursor:not-allowed;pointer-events:none}.btn-primary{color:#fff;background-color:var(--color-primary);border-color:var(--color-primary)}.btn-primary:hover{background-color:var(--color-primary-hover);border-color:var(--color-primary-hover);color:#fff}.btn-secondary{color:var(--color-text);background-color:var(--color-surface);border-color:var(--color-border)}.btn-secondary:hover{background-color:var(--color-bg);color:var(--color-text)}.btn-danger{color:#fff;background-color:var(--color-error);border-color:var(--color-error)}.btn-danger:hover{background-color:#a01721;border-color:#a01721;color:#fff}.btn-block{display:flex;width:100%}input[type=text],textarea{width:100%;padding:var(--space-3) var(--space-4);font-family:inherit;font-size:var(--font-size-base);color:var(--color-text);background-color:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);transition:border-color var(--transition-fast),box-shadow var(--transition-fast);line-height:1.5}input[type=text]::placeholder,textarea::placeholder{color:var(--color-text-muted);opacity:.7}input[type=text]:focus,textarea:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-soft)}textarea{min-height:96px;resize:vertical}input[type=radio]{margin:0 var(--space-2) 0 0;width:16px;height:16px;accent-color:var(--color-primary);vertical-align:middle;cursor:pointer}input[type=radio]+label{display:inline-flex;align-items:center;font-size:var(--font-size-base);color:var(--color-text);cursor:pointer;-webkit-user-select:none;user-select:none}input[type=radio]:focus-visible+label{outline:2px solid var(--color-primary);outline-offset:2px;border-radius:var(--radius-sm)}input[type=checkbox]{margin:0 var(--space-2) 0 0;width:16px;height:16px;accent-color:var(--color-primary);vertical-align:middle;cursor:pointer}input[type=checkbox]+label{display:inline-flex;align-items:center;font-size:var(--font-size-base);color:var(--color-text);cursor:pointer;-webkit-user-select:none;user-select:none}input[type=checkbox]:focus-visible+label{outline:2px solid var(--color-primary);outline-offset:2px;border-radius:var(--radius-sm)}.options{display:flex;flex-direction:column;gap:var(--space-3);margin:var(--space-4) 0}.option{display:flex;align-items:flex-start;gap:var(--space-2);padding:var(--space-3) var(--space-4);background-color:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);cursor:pointer;transition:border-color var(--transition-fast),background-color var(--transition-fast)}.option:hover{border-color:var(--color-primary);background-color:var(--color-primary-soft)}.option input[type=radio],.option input[type=checkbox]{flex-shrink:0;margin-top:2px}.option-label{flex:1;font-size:var(--font-size-base);color:var(--color-text);line-height:1.5;cursor:pointer}.feedback{margin:var(--space-4) 0;padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);font-size:var(--font-size-sm);line-height:1.5;border:1px solid transparent}.feedback--success{color:var(--color-success);background-color:var(--color-success-soft);border-color:var(--color-success)}.feedback--error{color:var(--color-error);background-color:var(--color-error-soft);border-color:var(--color-error)}.progress{display:flex;align-items:center;gap:var(--space-3);width:100%}.progress-bar{flex:1;height:8px;background-color:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-sm);overflow:hidden}.progress-bar>span{display:block;height:100%;background-color:var(--color-primary);border-radius:var(--radius-sm);transition:width var(--transition-fast)}.progress-text{font-size:var(--font-size-sm);color:var(--color-text-muted);white-space:nowrap;min-width:56px;text-align:right}.badge{display:inline-flex;align-items:center;padding:2px var(--space-2);font-size:var(--font-size-xs);font-weight:500;border-radius:var(--radius-sm);border:1px solid transparent;line-height:1.4}.badge--challenge{color:var(--color-primary);background-color:var(--color-primary-soft);border-color:var(--color-primary)}.badge--race{color:var(--color-warning);background-color:var(--color-warning-soft);border-color:var(--color-warning)}.grid{display:grid;gap:var(--space-6);grid-template-columns:1fr}.page-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);flex-wrap:wrap;margin-bottom:var(--space-6);padding-bottom:var(--space-4);border-bottom:1px solid var(--color-border)}.back-link{display:inline-flex;align-items:center;gap:var(--space-1);font-size:var(--font-size-sm);color:var(--color-text-muted);padding:var(--space-1) var(--space-2);border-radius:var(--radius-md);transition:color var(--transition-fast),background-color var(--transition-fast)}.back-link:hover{color:var(--color-primary);background-color:var(--color-primary-soft)}.page-title{font-size:var(--font-size-xl);font-weight:600;color:var(--color-text);line-height:1.3;flex:1;min-width:200px}.page-progress{font-size:var(--font-size-sm);color:var(--color-text-muted);display:flex;align-items:center;gap:var(--space-3);min-width:180px}.certificate{background-color:var(--color-surface);border:2px solid var(--color-primary);border-radius:var(--radius-lg);padding:var(--space-8) var(--space-6);text-align:center;box-shadow:var(--shadow-md);margin:var(--space-6) 0}.certificate-title{font-size:var(--font-size-2xl);font-weight:700;color:var(--color-primary);margin-bottom:var(--space-4)}.certificate-meta{font-size:var(--font-size-base);color:var(--color-text);line-height:1.8;margin-bottom:var(--space-4)}.certificate-id{font-family:var(--font-mono);font-size:var(--font-size-sm);color:var(--color-text-muted);background-color:var(--color-bg);border:1px dashed var(--color-border);border-radius:var(--radius-md);padding:var(--space-2) var(--space-4);display:inline-block;word-break:break-all}.credential{background-color:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-6);margin:var(--space-4) 0;box-shadow:var(--shadow-sm)}.credential-code{font-family:var(--font-mono);font-size:var(--font-size-sm);color:var(--color-text);background-color:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-3) var(--space-4);word-break:break-all;white-space:pre-wrap;margin:var(--space-3) 0;-webkit-user-select:all;user-select:all}.credential-copy-btn{margin-top:var(--space-2)}.bio{background-color:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-6);margin-bottom:var(--space-6);box-shadow:var(--shadow-sm);font-size:var(--font-size-base);color:var(--color-text);line-height:1.7}.bio p+p{margin-top:var(--space-3)}.footer{border-top:1px solid var(--color-border);background-color:var(--color-surface);padding:var(--space-4);text-align:center;font-size:var(--font-size-xs);color:var(--color-text-muted);flex-shrink:0}.footer a{color:var(--color-text-muted)}.footer a:hover{color:var(--color-primary)}@media (min-width: 640px){.container{padding:var(--space-6) var(--space-6)}.card{padding:var(--space-6)}.nav-container{padding:var(--space-3) var(--space-6)}.nav-links{gap:var(--space-3)}.nav-link{font-size:var(--font-size-base)}.page-header{flex-wrap:nowrap}.options{gap:var(--space-2)}}@media (min-width: 960px){:root{--container-max-width: 960px}.container{padding:var(--space-8) var(--space-4)}.grid--2col{grid-template-columns:1fr 1fr}.nav-container,.nav-links{flex-wrap:nowrap}.card{padding:var(--space-6) var(--space-8)}.page-title{font-size:var(--font-size-2xl)}}
