:root{--bg: #0f1117;--surface: #181c27;--surface2: #1f2435;--border: #2a3045;--accent: #4f8ef7;--accent2: #38d9a9;--accent3: #f7934f;--warn: #f7c94f;--danger: #f76f4f;--text: #e4e8f5;--text-muted: #8892aa;--text-dim: #7880a0;--code-bg: #141820;--done: #38d9a9;--radius: 12px;--radius-sm: 8px;--sans: "Plus Jakarta Sans", system-ui, sans-serif;--mono: "JetBrains Mono", "Fira Code", monospace}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{height:100%}body{font-family:var(--sans);background:var(--bg);color:var(--text);min-height:100%;line-height:1.6;-webkit-font-smoothing:antialiased}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--text-dim)}h1,h2,h3,h4,h5,h6{color:var(--text);font-weight:700;line-height:1.3}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}code{font-family:var(--mono);font-size:.875em;background:var(--surface2);border:1px solid var(--border);padding:1px 6px;border-radius:4px;color:var(--accent2)}pre{overflow-x:auto;font-family:var(--mono);font-size:13px;line-height:1.65}pre code{background:none;border:none;padding:0;color:inherit}.container{max-width:1200px;margin:0 auto;padding:0 24px}.flex{display:flex}.flex-col{display:flex;flex-direction:column}.gap-1{gap:4px}.gap-2{gap:8px}.gap-3{gap:12px}.gap-4{gap:16px}.gap-6{gap:24px}.items-center{align-items:center}.justify-between{justify-content:space-between}.w-full{width:100%}.h-full{height:100%}.min-h-screen{min-height:100vh}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.flex-1{flex:1;min-width:0}.flex-shrink-0{flex-shrink:0}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:20px}.btn{display:inline-flex;align-items:center;gap:6px;padding:8px 16px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface2);color:var(--text);font-size:13px;font-weight:600;cursor:pointer;transition:all .15s;font-family:var(--sans);text-decoration:none;line-height:1}.btn:hover{border-color:var(--accent);color:var(--accent);text-decoration:none}.btn:disabled{opacity:.4;cursor:not-allowed;pointer-events:none}.btn:focus-visible{outline:2px solid #38BDF8;outline-offset:2px}.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn-primary:hover{background:#3a7ae8;color:#fff}.btn-success{background:var(--accent2);border-color:var(--accent2);color:var(--bg)}.btn-danger{background:var(--danger);border-color:var(--danger);color:#fff}.btn-sm{padding:5px 10px;font-size:12px}.btn-lg{padding:12px 24px;font-size:15px}.btn-icon{padding:8px}.form-group{display:flex;flex-direction:column;gap:6px}.form-label{font-size:13px;font-weight:600;color:var(--text-muted)}.form-input,.form-select,.form-textarea{width:100%;padding:10px 14px;background:var(--surface2);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);font-size:14px;font-family:var(--sans);transition:border-color .15s;outline:none}.form-input:focus,.form-select:focus,.form-textarea:focus{border-color:var(--accent)}.form-input:focus-visible,.form-select:focus-visible,.form-textarea:focus-visible{outline:2px solid #38BDF8;outline-offset:2px}.form-input::placeholder{color:var(--text-dim)}.form-error{font-size:12px;color:var(--danger)}.badge{display:inline-flex;align-items:center;padding:2px 8px;border-radius:20px;font-size:11px;font-weight:700}.badge-accent{background:#4f8ef726;color:var(--accent)}.badge-success{background:#38d9a926;color:var(--accent2)}.badge-warn{background:#f7c94f26;color:var(--warn)}.badge-danger{background:#f76f4f26;color:var(--danger)}.badge-muted{background:var(--surface2);color:var(--text-muted)}.progress-bar{height:4px;background:var(--border);border-radius:2px;overflow:hidden}.progress-fill{height:100%;background:linear-gradient(90deg,var(--accent),var(--accent2));border-radius:2px;transition:width .4s ease}.tip-box,.info-box,.warn-box,.danger-box{display:flex;gap:10px;border-radius:var(--radius-sm);padding:12px 14px;font-size:13px;line-height:1.55}.tip-box{background:#f7c94f12;border:1px solid rgba(247,201,79,.2)}.info-box{background:#4f8ef712;border:1px solid rgba(79,142,247,.2)}.warn-box{background:#f76f4f12;border:1px solid rgba(247,111,79,.2)}.danger-box{background:#f74f4f12;border:1px solid rgba(247,79,79,.2)}.code-block-wrapper{border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden;margin:14px 0;background:var(--code-bg)}.code-block-header{display:flex;align-items:center;justify-content:space-between;padding:8px 14px;border-bottom:1px solid var(--border);background:#ffffff05}.code-lang{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:var(--accent)}.code-copy-btn{font-size:11px;color:var(--text-muted);cursor:pointer;padding:2px 8px;border-radius:4px;background:var(--surface2);border:1px solid var(--border);transition:all .15s;font-family:var(--sans)}.code-copy-btn:hover{color:var(--text);border-color:var(--accent)}.code-block-wrapper .highlight{background:var(--code-bg)!important}.code-block-wrapper pre{padding:14px;overflow-x:auto}.code-block-wrapper .linenodiv{color:var(--text-dim);padding-right:12px}.sec-label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--text-dim);margin:24px 0 12px;display:flex;align-items:center;gap:10px}.sec-label:after{content:"";flex:1;height:1px;background:var(--border)}.fade-enter-active,.fade-leave-active{transition:opacity .2s ease}.fade-enter-from,.fade-leave-to{opacity:0}.slide-up-enter-active{transition:all .25s ease}.slide-up-enter-from{opacity:0;transform:translateY(10px)}:focus-visible{outline:2px solid #38BDF8;outline-offset:2px}a:focus-visible{outline:2px solid #38BDF8;outline-offset:2px;border-radius:2px}.skip-link{position:absolute;top:-100%;left:0;z-index:9999;padding:10px 16px;background:var(--accent);color:#fff;font-size:14px;font-weight:700;border-radius:0 0 8px;text-decoration:none;transition:top .1s}.skip-link:focus{top:0;outline:2px solid #fff;outline-offset:2px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}html.high-contrast{--bg: #000000;--surface: #111111;--surface2: #1c1c1c;--border: #ffffff;--text: #ffffff;--text-muted: #e8e8e8;--text-dim: #cccccc;--accent: #ffff00;--accent2: #00ff99;--accent3: #ff9900;--warn: #ffcc00;--danger: #ff6b6b;--done: #00ff99;--code-bg: #0a0a0a}html.high-contrast .badge-accent{background:#ff03;color:#ff0}html.high-contrast .badge-success{background:#0f93;color:#0f9}html.high-contrast .badge-muted{background:#1c1c1c;color:#ccc;border:1px solid #cccccc}html.high-contrast .badge-danger{background:#ff6b6b33;color:#ff6b6b}html.high-contrast a,html.high-contrast .nav-link.router-link-active{color:#ff0}html.high-contrast :focus-visible{outline:3px solid #ffff00;outline-offset:3px}html.large-text{font-size:120%}html.large-text .text-sm{font-size:14px}html.large-text .text-xs{font-size:13px}html.reduce-motion *,html.reduce-motion *:before,html.reduce-motion *:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}html.screen-reader .sr-decorative{display:none!important}.text-muted{color:var(--text-muted)}.text-dim{color:var(--text-dim)}.text-accent{color:var(--accent)}.text-success{color:var(--accent2)}.text-warn{color:var(--warn)}.text-danger{color:var(--danger)}.text-sm{font-size:12px}.text-xs{font-size:11px}.font-bold{font-weight:700}.font-mono{font-family:var(--mono)}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.md-content h1,.md-content h2,.md-content h3{margin:16px 0 8px}.md-content p{margin:8px 0;line-height:1.7}.md-content ul,.md-content ol{padding-left:20px;margin:8px 0}.md-content li{margin:4px 0}.md-content table{border-collapse:collapse;width:100%;margin:12px 0}.md-content th,.md-content td{padding:8px 12px;border:1px solid var(--border);font-size:13px}.md-content th{background:var(--surface2);font-weight:700}.md-content blockquote{border-left:3px solid var(--accent);padding:8px 16px;margin:12px 0;color:var(--text-muted);background:#4f8ef70d;border-radius:0 var(--radius-sm) var(--radius-sm) 0}.md-content input[type=checkbox]{margin-right:6px}.spinner{width:20px;height:20px;border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .6s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}window.copyCodeBlock = function(btn){const pre = btn.closest(".code-block-wrapper").querySelector("pre") navigator.clipboard.writeText(pre.innerText).then(() => {btn.textContent = "✓ Disalin!" setTimeout(() => btn.textContent = "Salin",2000)})}.data-table{width:100%;border-collapse:collapse;font-size:13px}.data-table th{padding:10px 16px;text-align:left;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);background:var(--surface2);border-bottom:1px solid var(--border)}.data-table td{padding:12px 16px;border-bottom:1px solid var(--border);vertical-align:middle}.data-table tr:last-child td{border-bottom:none}.data-table tr:hover td{background:#ffffff05}
