﻿@font-face{font-family:"SomeMono";src:url(../fonts/SometypeMono-VariableFont_wght.ttf) format("truetype");font-style:normal;font-weight:400 700;font-display:swap}:root{--font-ui: "Segoe UI", -apple-system, BlinkMacSystemFont, "Microsoft Yahei", "微软雅黑", Tahoma, sans-serif;--font-mono: "SomeMono", ui-monospace, SFMono-Regular, Menlo, Consolas, "Microsoft Yahei", monospace;--bg: #f4f7f9;--bg-far: #e9eef3;--text: #10202e;--text-dim: #5a6b7b;--text-faint: #8698a6;--card-bg: #ffffff;--card-border: rgba(16, 32, 46, 0.09);--card-shadow: 0 1px 2px rgba(16, 32, 46, 0.05), 0 20px 44px -34px rgba(16, 32, 46, 0.4);--surface: #f4f7fa;--surface-strong: #eaf0f5;--line: rgba(16, 32, 46, 0.11);--line-strong: rgba(16, 32, 46, 0.2);--field-bg: #ffffff;--field-text: #10202e;--field-shadow: inset 0 1px 2px rgba(16, 32, 46, 0.06);--accent: #17915a;--accent-hover: #14804f;--accent-soft: rgba(23, 145, 90, 0.11);--accent-text: #ffffff;--danger: #c62828;--danger-soft: rgba(198, 40, 40, 0.09);--terminal-bg: #0d1b26;--terminal-fg: #6ee7a5;--terminal-dim: rgba(110, 231, 165, 0.45);--terminal-ring: rgba(110, 231, 165, 0.16);--terminal-ring-hover: rgba(110, 231, 165, 0.42);--radius-lg: 18px;--radius: 12px;--radius-sm: 9px;--ring: 0 0 0 3px var(--accent-soft);color-scheme:light}@media(prefers-color-scheme: dark){:root:not([data-theme=light]){--bg: #0a141d;--bg-far: #070f16;--text: #e7eef5;--text-dim: #9db0c0;--text-faint: #6b8090;--card-bg: #111e29;--card-border: rgba(255, 255, 255, 0.07);--card-shadow: 0 1px 0 rgba(255, 255, 255, 0.03), 0 26px 60px -42px rgba(0, 0, 0, 0.9);--surface: #16232f;--surface-strong: #1c2b38;--line: rgba(255, 255, 255, 0.09);--line-strong: rgba(255, 255, 255, 0.22);--field-bg: #0c1822;--field-text: #eef4fa;--field-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.45);--accent: #2fb673;--accent-hover: #38c67f;--accent-soft: rgba(47, 182, 115, 0.16);--accent-text: #04240f;--danger: #ff6b6b;--danger-soft: rgba(255, 107, 107, 0.13);--terminal-bg: #061019;--terminal-fg: #6ee7a5;--terminal-dim: rgba(110, 231, 165, 0.45);--terminal-ring: rgba(110, 231, 165, 0.14);--terminal-ring-hover: rgba(110, 231, 165, 0.38);color-scheme:dark}}:root[data-theme=dark]{--bg: #0a141d;--bg-far: #070f16;--text: #e7eef5;--text-dim: #9db0c0;--text-faint: #6b8090;--card-bg: #111e29;--card-border: rgba(255, 255, 255, 0.07);--card-shadow: 0 1px 0 rgba(255, 255, 255, 0.03), 0 26px 60px -42px rgba(0, 0, 0, 0.9);--surface: #16232f;--surface-strong: #1c2b38;--line: rgba(255, 255, 255, 0.09);--line-strong: rgba(255, 255, 255, 0.22);--field-bg: #0c1822;--field-text: #eef4fa;--field-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.45);--accent: #2fb673;--accent-hover: #38c67f;--accent-soft: rgba(47, 182, 115, 0.16);--accent-text: #04240f;--danger: #ff6b6b;--danger-soft: rgba(255, 107, 107, 0.13);--terminal-bg: #061019;--terminal-fg: #6ee7a5;--terminal-dim: rgba(110, 231, 165, 0.45);--terminal-ring: rgba(110, 231, 165, 0.14);--terminal-ring-hover: rgba(110, 231, 165, 0.38);color-scheme:dark}*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}[hidden]{display:none !important}html{background-color:var(--bg);-webkit-text-size-adjust:100%}body{min-height:100vh;overflow-x:hidden;background-color:var(--bg);background-image:linear-gradient(180deg, var(--bg) 0%, var(--bg-far) 100%);background-attachment:fixed;color:var(--text);font-family:var(--font-ui);font-size:16px;line-height:1.6;-webkit-font-smoothing:antialiased}svg{width:1em;height:1em;flex:none;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.sprite{position:absolute;width:0;height:0;overflow:hidden}button,input,select,textarea{font:inherit;color:inherit}button{background:none;border:0;cursor:pointer}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}::selection{background:var(--accent);color:var(--accent-text)}.wrap{position:relative;width:100%;max-width:760px;margin:0 auto;padding:clamp(18px,12px + 1.5vw,32px) clamp(14px,8px + 1.5vw,24px) 48px}.topbar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.brand{display:flex;align-items:center;gap:10px;user-select:none}.brand .brand-icon{display:grid;place-items:center;width:34px;height:34px;border-radius:11px;background:var(--accent);color:var(--accent-text);font-size:19px}.brand .brand-text{display:grid;line-height:1.15}.brand .brand-text small{font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--text-faint)}.brand .brand-text b{font-size:15px;font-weight:650}.topbar-controls{display:flex;align-items:center;gap:8px}.seg{display:flex;align-items:center;gap:2px;padding:3px;border:1px solid var(--card-border);border-radius:100em;background:var(--card-bg)}.seg-btn{display:grid;place-items:center;min-width:32px;height:28px;padding:0 10px;border-radius:100em;font-size:13px;font-weight:550;color:var(--text-dim);transition:background-color .18s,color .18s}.seg-btn:hover{color:var(--text);background:var(--surface-strong)}.seg-btn.is-active{background:var(--accent);color:var(--accent-text)}.seg-btn svg{font-size:15px}.seg-icons .seg-btn{padding:0 8px}h1{margin:clamp(24px,16px + 2vw,44px) 0 0;font-size:clamp(26px,20px + 1.8vw,38px);line-height:1.2;font-weight:700;letter-spacing:-0.01em;text-align:center;text-wrap:balance}.subtitle{max-width:54ch;margin:12px auto 0;font-size:13.5px;line-height:1.7;text-align:center;color:var(--text-dim);text-wrap:pretty}.card{margin:clamp(22px,16px + 1.4vw,34px) 0 0;border:1px solid var(--card-border);border-radius:var(--radius-lg);background:var(--card-bg);box-shadow:var(--card-shadow);overflow:hidden}.tabs{display:flex;gap:4px;padding:6px 6px 0;border-bottom:1px solid var(--card-border)}.tab{position:relative;padding:12px 16px;font-size:14px;font-weight:550;color:var(--text-dim);border-radius:var(--radius-sm) var(--radius-sm) 0 0;transition:color .18s,background-color .18s}.tab::after{content:"";position:absolute;inset:auto 12px -1px;height:2px;border-radius:2px;background:var(--accent);opacity:0;transition:opacity .18s}.tab:hover{color:var(--text)}.tab.is-active{color:var(--text)}.tab.is-active::after{opacity:1}.panel{padding:clamp(18px,12px + 1.4vw,26px);display:grid;gap:20px}.field{display:grid;gap:8px}.field-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px}.field-head label{font-size:12px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--text-dim)}.hint{font-size:11.5px;line-height:1.5;color:var(--text-faint)}.input-wrap{position:relative}.input-wrap input{width:100%;height:3.1em;padding:0 7.2em 0 1em;border:1px solid var(--line);border-radius:var(--radius);background:var(--field-bg);box-shadow:var(--field-shadow);color:var(--field-text);font-family:var(--font-mono);font-weight:600;font-size:15px;letter-spacing:.01em;transition:border-color .18s,box-shadow .18s}.input-wrap input::placeholder{font-family:var(--font-ui);font-weight:400;color:var(--text-faint)}.input-wrap input:focus{outline:0;border-color:var(--accent);box-shadow:var(--ring)}.input-wrap input:focus::placeholder{opacity:.4}.input-actions{position:absolute;top:50%;right:8px;transform:translateY(-50%);display:flex;align-items:center;gap:2px}.icon-btn{display:grid;place-items:center;width:30px;height:30px;border-radius:var(--radius-sm);color:var(--text-faint);font-size:16px;transition:color .16s,background-color .16s}.icon-btn:hover{color:var(--accent);background:var(--accent-soft)}textarea{width:100%;padding:.85em 1em;border:1px solid var(--line);border-radius:var(--radius);background:var(--field-bg);box-shadow:var(--field-shadow);color:var(--field-text);font-family:var(--font-mono);font-size:13px;line-height:1.6;resize:vertical;overflow-wrap:anywhere}textarea::placeholder{font-family:var(--font-ui);color:var(--text-faint)}textarea:focus{outline:0;border-color:var(--accent);box-shadow:var(--ring)}.strength{display:flex;align-items:center;gap:10px}.strength .strength-bars{display:flex;gap:4px;flex:1}.strength .strength-bars i{height:4px;flex:1;border-radius:100em;background:var(--line);transition:background-color .2s}.strength .strength-text{display:flex;gap:5px;font-size:11.5px;color:var(--text-faint);white-space:nowrap}.strength .strength-text b{font-weight:600}.strength[data-level="0"]{--level: #e04a4a}.strength[data-level="1"]{--level: #e8843c}.strength[data-level="2"]{--level: #d8ad2c}.strength[data-level="3"]{--level: #4fb257}.strength[data-level="4"]{--level: #1f9d5b}.strength i.is-on{background:var(--level, var(--accent))}.strength b{color:var(--level, var(--text-dim))}.options{display:grid;gap:18px}.opt-label{display:block;margin-bottom:8px;font-size:12px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--text-dim)}.algo-group{display:grid;grid-template-columns:repeat(auto-fit, minmax(168px, 1fr));gap:5px;padding:5px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface)}.algo-group input{position:absolute;opacity:0;pointer-events:none}.algo-group .algo{cursor:pointer}.algo-group .algo-body{display:grid;gap:2px;padding:10px 13px;border:1px solid rgba(0,0,0,0);border-radius:calc(var(--radius) - 5px);transition:background-color .16s,border-color .16s,box-shadow .16s}.algo-group .algo-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.algo-group .algo-head b{font-family:var(--font-mono);font-size:14px;font-weight:650;line-height:1.3;transition:color .16s}.algo-group .algo-check{font-size:14px;stroke-width:2.6;color:var(--accent);opacity:0;transform:scale(0.5);transition:opacity .16s,transform .16s}.algo-group em{font-size:11px;font-style:normal;line-height:1.4;color:var(--text-faint)}.algo-group .algo:hover .algo-body{background:var(--surface-strong)}.algo-group input:checked~.algo-body{background:var(--card-bg);border-color:var(--accent);box-shadow:0 1px 2px rgba(16,32,46,.06),inset 0 0 0 1px var(--accent-soft)}.algo-group input:checked~.algo-body .algo-head b{color:var(--accent)}.algo-group input:checked~.algo-body .algo-check{opacity:1;transform:none}.algo-group input:focus-visible~.algo-body{outline:2px solid var(--accent);outline-offset:1px}.opt-cost{display:flex;flex-wrap:wrap;align-items:center;gap:10px}.opt-cost .opt-label{margin:0}.opt-cost select{height:2.5em;padding:0 2em 0 .8em;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--field-bg) no-repeat right .6em center;background-image:linear-gradient(45deg, transparent 49%, currentColor 50%, currentColor 56%, transparent 57%),linear-gradient(-45deg, transparent 49%, currentColor 50%, currentColor 56%, transparent 57%);background-size:9px 9px,9px 9px;background-position:right 1.15em center,right .6em center;appearance:none;color:var(--field-text);font-family:var(--font-mono);font-size:13.5px;cursor:pointer}.opt-cost select:focus{outline:0;border-color:var(--accent);box-shadow:var(--ring)}.opt-cost .hint-cost{flex:1 1 100%}.btn{position:relative;display:flex;align-items:center;justify-content:center;gap:8px;width:100%;min-height:3.1em;padding:0 1.2em;border-radius:var(--radius);font-size:15px;font-weight:600;user-select:none;transition:transform .12s,filter .18s,background-color .18s}.btn-primary{background:var(--accent);color:var(--accent-text);box-shadow:0 10px 24px -14px var(--accent)}.btn-primary:hover{background:var(--accent-hover)}.btn-primary:active{transform:translateY(1px)}.btn-primary:disabled{cursor:default;filter:saturate(0.45) opacity(0.75)}.btn-primary.is-busy::before{content:"";width:15px;height:15px;border:2px solid currentColor;border-top-color:rgba(0,0,0,0);border-radius:100em;animation:spin .7s linear infinite}.ghost-btn{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;border:1px solid var(--line);border-radius:100em;background:var(--surface);font-size:12px;font-weight:550;color:var(--text-dim);transition:color .16s,border-color .16s,background-color .16s}.ghost-btn svg{font-size:13px}.ghost-btn:hover{color:var(--accent);border-color:var(--accent);background:var(--accent-soft)}.ghost-btn.is-done{color:var(--accent);border-color:var(--accent)}@keyframes spin{to{transform:rotate(360deg)}}.result{display:grid;gap:10px;animation:rise .28s ease both}.result-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.result-label{font-size:12px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--text-dim)}.hash{display:block;min-height:3.4em;padding:.9em 1em;border-radius:var(--radius);background:var(--terminal-bg);color:var(--terminal-fg);font-family:var(--font-mono);font-size:clamp(12px,10.6px + .35vw,14.5px);font-weight:500;line-height:1.55;letter-spacing:.02em;white-space:pre-wrap;overflow-wrap:anywhere;cursor:pointer;box-shadow:inset 0 0 0 1px var(--terminal-ring);transition:box-shadow .18s}.hash:hover{box-shadow:inset 0 0 0 1px var(--terminal-ring-hover)}.hash:empty::before{content:"…";color:var(--terminal-dim)}.hash::selection{background:var(--terminal-fg);color:var(--terminal-bg)}.chips{display:flex;flex-wrap:wrap;gap:6px}.chip{display:inline-flex;align-items:baseline;gap:5px;padding:4px 9px;border:1px solid var(--line);border-radius:100em;background:var(--surface);font-size:11.5px;line-height:1.4}.chip b{font-weight:500;color:var(--text-faint)}.chip span{font-family:var(--font-mono);font-weight:600;color:var(--text)}.sqlbox{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface)}.sqlbox summary{display:flex;align-items:center;gap:8px;padding:11px 14px;font-size:12.5px;font-weight:600;color:var(--text-dim);cursor:pointer;list-style:none}.sqlbox summary::-webkit-details-marker{display:none}.sqlbox summary::before{content:"";width:6px;height:6px;border-right:1.6px solid currentColor;border-bottom:1.6px solid currentColor;transform:rotate(-45deg);transition:transform .2s}.sqlbox summary:hover{color:var(--text)}.sqlbox[open] summary::before{transform:rotate(45deg)}.sql-body{display:grid;gap:10px;padding:0 14px 14px}.sql-fields{display:flex;flex-wrap:wrap;gap:10px}.sql-fields label{display:flex;align-items:center;gap:7px;font-size:11.5px;color:var(--text-faint)}.sql-fields input{width:8.5em;height:2.3em;padding:0 .7em;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--field-bg);color:var(--field-text);font-family:var(--font-mono);font-size:12.5px}.sql-fields input:focus{outline:0;border-color:var(--accent);box-shadow:var(--ring)}.sql{margin:0;padding:.85em 1em;border-radius:var(--radius-sm);background:var(--terminal-bg);color:var(--terminal-fg);font-family:var(--font-mono);font-size:12px;line-height:1.7;overflow-x:auto;white-space:pre}.sql::selection{background:var(--terminal-fg);color:var(--terminal-bg)}.sql-foot{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.sql-foot .hint{flex:1;min-width:12em}.verdict{display:grid;gap:10px;padding:14px 16px;border:1px solid var(--line);border-left:3px solid var(--line-strong);border-radius:var(--radius);background:var(--surface);animation:rise .28s ease both}.verdict .verdict-main{display:flex;align-items:center;gap:9px;font-size:14px;font-weight:600}.verdict .verdict-main svg{font-size:18px}.verdict.is-match{border-left-color:var(--accent);background:var(--accent-soft)}.verdict.is-match .verdict-main{color:var(--accent)}.verdict.is-fail{border-left-color:var(--danger);background:var(--danger-soft)}.verdict.is-fail .verdict-main{color:var(--danger)}@keyframes rise{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.note{margin:clamp(30px,22px + 1.6vw,48px) 0 0;padding:clamp(18px,12px + 1.4vw,26px);border:1px solid var(--card-border);border-radius:var(--radius-lg);background:var(--card-bg);box-shadow:var(--card-shadow);font-size:13px;line-height:1.75;color:var(--text-dim)}.note h2{margin-bottom:4px;padding-bottom:14px;border-bottom:1px solid var(--card-border);font-size:12px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--text-faint)}.note h3{margin:26px 0 10px;font-size:16px;font-weight:650;color:var(--text)}.note p{margin:.9em 0;text-wrap:pretty}.note strong{color:var(--text)}.note em{font-style:normal;color:var(--text)}.note ol,.note ul{padding-left:1.3em;display:grid;gap:5px}.note ul ul,.note ol ul{margin-top:5px}.note li::marker{color:var(--text-faint)}.note .crossline{text-decoration:line-through;text-decoration-color:var(--text-faint);opacity:.75}.note .faq{list-style:none;padding-left:0;gap:10px}.note .faq li{padding-left:1.1em;position:relative}.note .faq li::before{content:"";position:absolute;top:.65em;left:0;width:5px;height:5px;border-radius:100em;background:var(--accent)}.table-scroll{margin:16px 0 8px;overflow-x:auto;border:1px solid var(--line);border-radius:var(--radius)}table{width:100%;min-width:460px;border-collapse:collapse;font-size:12px}table th,table td{padding:9px 11px;text-align:left;vertical-align:top;line-height:1.55;border-bottom:1px solid var(--line)}table thead th{background:var(--surface-strong);color:var(--text);font-size:11px;font-weight:650;letter-spacing:.04em;text-transform:uppercase;white-space:nowrap}table tbody th{width:8.5em;color:var(--text);font-weight:600;white-space:nowrap}table tbody tr:last-child th,table tbody tr:last-child td{border-bottom:0}table tbody tr:hover{background:var(--surface)}code{padding:.1em .4em;border-radius:5px;background:var(--surface-strong);border:1px solid var(--line);font-family:var(--font-mono);font-size:.92em;color:var(--text)}footer{margin-top:34px;text-align:center;font-size:11.5px;line-height:1.9;color:var(--text-faint)}footer a{margin:0 4px;color:var(--text-dim);text-decoration:none;border-bottom:1px solid var(--line-strong)}footer a:hover{color:var(--accent);border-color:var(--accent)}.toasts{position:fixed;left:50%;bottom:26px;transform:translateX(-50%);z-index:200;display:grid;gap:8px;justify-items:center;pointer-events:none}.toast{display:flex;align-items:center;gap:8px;padding:9px 15px;border-radius:100em;border:1px solid var(--line);background:var(--terminal-bg);color:#f0f6ff;font-size:13px;font-weight:550;box-shadow:0 18px 40px -18px rgba(0,0,0,.6);opacity:0;transform:translateY(10px) scale(0.97);transition:opacity .22s,transform .22s}.toast svg{font-size:15px;color:var(--accent)}.toast.is-error svg{color:var(--danger)}.toast.is-in{opacity:1;transform:none}@media(max-width: 560px){.topbar{justify-content:center}.algo-group{grid-template-columns:1fr}.result-head,.sql-foot{align-items:flex-start}.toasts{left:12px;right:12px;transform:none;justify-items:stretch}.toast{justify-content:center}}@media(prefers-reduced-motion: reduce){*,*::before,*::after{animation-duration:.001ms !important;animation-iteration-count:1 !important;transition-duration:.001ms !important}}*{scrollbar-width:thin;scrollbar-color:var(--line-strong) rgba(0,0,0,0)}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{border-radius:100em;background:var(--line-strong)}::-webkit-scrollbar-track{background:rgba(0,0,0,0)}
