@import url(https://fonts.googleapis.com/css2?family=JetBrains+Mono:ital,wght@0,100..800;1,100..800&family=Noto+Sans+TC:wght@100..900&display=swap);.site-nav,body,html{background:var(--bg)}.page,.site-nav-inner{max-width:900px}.callout a,a:hover{text-decoration:underline}.spec-type,.tool-section-label,label,th{text-transform:uppercase}:root{--bg:#0d0d0f;--bg2:#141417;--bg3:#1c1c21;--border:#2a2a32;--accent:#91BEFF;--accent-dim:#5a8fd4;--accent-dim2:#2d4d7a;--text:#e8e8f0;--text-muted:#7a7a8a;--text-dim:#4a4a5a}*,::after,::before{box-sizing:border-box}body,html{margin:0;padding:0;color:var(--text);font-family:'Noto Sans TC',sans-serif;line-height:1.6}.btn:hover,input[type=color],input[type=file],select{background:var(--bg2)}.site-nav-brand:hover,.tool-link:hover,a{color:var(--accent);text-decoration:none}.btn,.page-title,.site-nav-brand,label{font-family:'JetBrains Mono','Noto Sans TC',monospace}::placeholder{font-family:'JetBrains Mono','Noto Sans TC',monospace}.site-nav{border-bottom:1px solid var(--border)}.site-nav-inner{margin:0 auto;padding:0 1.5rem;height:52px;display:flex;align-items:center}.site-nav-brand{color:var(--text);letter-spacing:.02em}.site-footer{border-top:1px solid var(--border);margin-top:4rem}.site-footer-inner{max-width:900px;margin:0 auto;padding:1.5rem;color:var(--text-muted)}.page,.page-wide{margin:0 auto;padding:2.5rem 1.5rem}.page-wide{max-width:1100px}.page-title{font-weight:600;color:var(--text);margin:0 0 2rem;letter-spacing:-.01em}.form-group{margin-bottom:1.25rem}label{display:block;color:var(--text-muted);letter-spacing:.07em;margin-bottom:.4rem}code,pre{font-family:'JetBrains Mono',monospace;background:var(--bg3)}input[type=date],input[type=email],input[type=number],input[type=password],input[type=text],select,textarea{width:100%;background:var(--bg2);border:1px solid var(--border);color:var(--text);padding:.5rem .75rem;outline:0}input[type=color]{width:100%;border:1px solid var(--border);padding:2px;height:36px;cursor:pointer;outline:0}.overlay-textarea:focus,.result-code-block:hover,input:focus,select:focus,textarea:focus{border-color:var(--accent-dim)}.btn,input[type=file]{border:1px solid var(--border);cursor:pointer}input[type=checkbox],input[type=radio]{width:auto}textarea{resize:vertical;min-height:100px}select{cursor:pointer}input[type=file]{width:100%;color:var(--text);padding:.5rem .75rem;font-family:inherit;outline:0}input[readonly],textarea[readonly]{color:var(--text-muted);cursor:default}.form-hint{color:var(--text-muted);margin:.3rem 0 0}.btn,.btn:hover{color:var(--text)}.btn{display:inline-block;padding:.45rem 1rem;background:var(--bg3);line-height:1.4;text-align:center;white-space:nowrap;transition:background .15s,border-color .15s}.btn:hover{border-color:var(--text-dim);text-decoration:none}.btn-primary:hover,code,pre{color:var(--accent)}.btn:disabled{opacity:.4;cursor:not-allowed}.btn-primary,kbd.active{background:var(--accent-dim2);border-color:var(--accent-dim);color:var(--accent)}.btn-primary:hover{background:#3a6090}.btn-danger{border-color:#5a2020;background:#2a1010;color:#e87070}.btn-danger:hover{background:#3a1515;color:#e87070}.btn-success{border-color:#2a5a2a;background:#101a10;color:#70c870}.callout,.result-area,.spec-card{background:var(--bg2)}.callout,th{color:var(--text-muted)}.btn-success:hover{background:#152015;color:#70c870}.btn-block{display:block;width:100%}.btn-sm{padding:.25rem .6rem}.callout,.result-area,pre{padding:.75rem 1rem}.callout{border-left:3px solid var(--border);margin-bottom:1.5rem}.result-area,code,pre{border:1px solid var(--border)}.callout.info{border-color:var(--accent-dim);color:var(--text);background:#111520}.callout.warn{border-color:#c8a22a;color:#d4b060;background:#1a1710}.callout.error{border-color:#c83232;color:#e87070;background:#1a1010}.callout a{color:inherit}.result-area{margin-top:1rem;min-height:60px}.result-area.success{border-color:#2a5a2a}.result-area.error{border-color:#5a2020;color:#e87070}code{padding:.15rem .4rem}pre{overflow-x:auto;margin:0;white-space:pre-wrap;word-break:break-all}.spec-type,.tool-link-url,.tool-section-label,th{font-family:'JetBrains Mono','Noto Sans TC',monospace}.guild-item,td,th{padding:.5rem .75rem;border-bottom:1px solid var(--border)}table{width:100%;border-collapse:collapse}th{text-align:left;font-weight:400;letter-spacing:.05em;background:var(--bg3)}.guild-item,td{color:var(--text)}.guild-item:last-child,.record-row:last-child,.result-list-item:last-child,.user-info-item:last-child,tr:last-child td{border-bottom:none}.text-right{text-align:right}.tool-section{margin-top:2rem}.tool-section-label{letter-spacing:.1em;color:var(--text-dim);padding-bottom:.4rem;border-bottom:1px solid var(--border);margin-bottom:.25rem}.tool-link{display:block;padding:.45rem 0;border-bottom:1px solid var(--bg3);color:var(--text)}.tool-link-url{display:block;color:var(--text-dim)}.spec-icon,.spec-icon.primary{color:var(--accent-dim)}.spec-page{display:grid;grid-template-columns:1fr 1fr;gap:2rem;max-width:1100px;margin:0 auto;padding:2.5rem 1.5rem}@media (max-width:768px){.spec-page{grid-template-columns:1fr}}.spec-grid{display:grid;grid-template-columns:1fr 1fr;gap:.5rem}@media (max-width:480px){.spec-grid{grid-template-columns:1fr}}.spec-card{display:flex;gap:.75rem;align-items:flex-start;padding:.75rem;border:1px solid var(--border)}.spec-icon{flex-shrink:0;margin-top:2px}.field-row,.radio-group{align-items:center;display:flex}.spec-icon.success{color:#70c870}.spec-icon.danger,.summary-card-value.danger{color:#e87070}.spec-type{color:var(--text-muted);letter-spacing:.05em;margin-bottom:.15rem}.spec-module{color:var(--text);font-weight:600}.spec-footer{margin-top:2rem;text-align:center;color:var(--text-muted)}.radio-label,.section-header,kbd{color:var(--text)}.field-row{gap:1rem;margin-bottom:1rem}.field-row label{margin-bottom:0;flex-shrink:0;min-width:80px}.field-row input{flex:1}.radio-group{gap:1.5rem;flex-wrap:wrap}.radio-label{display:flex;align-items:center;gap:.4rem;cursor:pointer;text-transform:none;letter-spacing:normal;font-family:inherit}input[type=radio]{accent-color:var(--accent-dim)}.spinner{display:inline-block;width:14px;height:14px;border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:.7s linear infinite spin;vertical-align:middle;margin-right:6px}@keyframes spin{to{transform:rotate(360deg)}}.color-swatch-grid{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:1rem}.color-swatch{width:32px;height:32px;border:2px solid var(--border);cursor:pointer;flex-shrink:0}.copy-btn,kbd{border:1px solid var(--border);font-family:'JetBrains Mono','Noto Sans TC',monospace}.color-swatch.selected,.color-swatch:hover{border-color:var(--accent);outline:2px solid var(--accent);outline-offset:1px}kbd{background:var(--bg3);padding:.1rem .4rem}hr.divider{border:none;border-top:1px solid var(--border);margin:1.5rem 0}.section-header{font-weight:600;margin:1.5rem 0 .75rem}.btn-row{display:flex;gap:.5rem;flex-wrap:wrap;margin-bottom:1rem}.copy-btn{background:0 0;color:var(--text-muted);cursor:pointer;padding:.25rem .6rem}.copy-btn:hover{color:var(--accent);border-color:var(--accent-dim)}.copy-btn.copied{color:#70c870;border-color:#2a5a2a}.result-list,.user-info-list{list-style:none;margin:0;padding:0}.result-list-item{display:flex;align-items:center;gap:.5rem;padding:.3rem 0;border-bottom:1px solid var(--bg3)}.result-index{color:var(--text-dim);width:1.5rem;flex-shrink:0;font-family:'JetBrains Mono','Noto Sans TC',monospace}.result-code-block{flex:1;font-family:'JetBrains Mono','Noto Sans TC',monospace;background:var(--bg3);border:1px solid var(--border);padding:.25rem .5rem;color:var(--accent);cursor:pointer;word-break:break-all}.overlay-form-row label,.user-info-key{color:var(--text-muted)}.input-error{border-color:#c83232!important}.avatar-circle{width:72px;height:72px;border-radius:50%;border:2px solid var(--border);background-size:cover;background-position:center;margin:0 auto 1rem}.overlay-panel-header,.user-info-item{border-bottom:1px solid var(--border)}.guild-scroll,.overlay-panel,.overlay-textarea{border:1px solid var(--border)}.user-info-item{display:flex;justify-content:space-between;align-items:center;padding:.4rem 0}.badge-on{color:#70c870;font-family:'JetBrains Mono','Noto Sans TC',monospace}.badge-off{color:#e87070;font-family:'JetBrains Mono','Noto Sans TC',monospace}.guild-scroll{height:28rem;overflow-y:auto;background:var(--bg2)}.hidden{display:none!important}.overlay-panel{background:#111}.overlay-panel-header{background:var(--bg3);padding:.6rem 1rem;display:flex;justify-content:space-between;align-items:center}.overlay-panel-body{padding:1rem}.overlay-form-row{display:flex;align-items:center;gap:.75rem;margin-bottom:.75rem}.overlay-form-row label{min-width:90px;font-family:'JetBrains Mono','Noto Sans TC',monospace;text-transform:uppercase;letter-spacing:.05em;margin-bottom:0}.overlay-textarea{width:100%;background:#1a1a20;color:var(--text);padding:.5rem;font-family:'JetBrains Mono','Noto Sans TC',monospace;resize:none;outline:0}.overlay-note{background:var(--accent-dim2);border:1px solid var(--accent-dim);padding:.6rem .8rem;color:var(--text);margin-bottom:.75rem}.form-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:1rem}.result-summary{display:grid;grid-template-columns:1fr 1fr 1fr;gap:1rem;margin-bottom:1.5rem}@media (max-width:600px){.form-grid,.result-summary{grid-template-columns:1fr}}.summary-card{background:var(--bg2);border:1px solid var(--border);padding:.75rem 1rem}.summary-card-label{font-size:.72rem;font-family:'JetBrains Mono','Noto Sans TC',monospace;text-transform:uppercase;letter-spacing:.07em;color:var(--text-muted);margin-bottom:.3rem}.summary-card-value{font-size:1.15rem;font-family:'JetBrains Mono','Noto Sans TC',monospace;font-weight:600;color:var(--accent)}.summary-card-value.warn{color:#d4b060}.section-label{font-family:'JetBrains Mono','Noto Sans TC',monospace;font-size:.72rem;text-transform:uppercase;letter-spacing:.1em;color:var(--text-dim);padding-bottom:.4rem;border-bottom:1px solid var(--border);margin-bottom:1rem}.badge,.record-idx,.record-result{font-family:'JetBrains Mono',monospace}.record-row{display:flex;align-items:center;gap:.5rem;padding:.4rem 0;border-bottom:1px solid var(--bg3);font-size:.875rem}.record-idx{font-size:.72rem;color:var(--text-dim);width:1.5rem;flex-shrink:0}.record-info{flex:1;color:var(--text-muted);font-size:.8rem}.record-result{font-size:.83rem;color:var(--accent)}.badge{font-size:.72rem;padding:.1rem .4rem;border:1px solid}.badge-overdue{border-color:#5a2020;color:#e87070;background:#2a1010}.badge-ok{border-color:#2a5a2a;color:#70c870;background:#101a10}