/* ============================================================
   TOOLYARD — DEVELOPER TOOLS
   Moved out of pages/developer-tools.html so the generated per-tool
   landing pages can reuse the exact same styling.
   Generated by scripts/extract-category-assets.js — do not edit
   the copy in the HTML page, it no longer exists.
============================================================ */
body{padding-top:var(--header-h);}
.site-header{position:fixed;top:0;left:0;right:0;height:var(--header-h);z-index:200;background:rgba(10,10,15,0.85);backdrop-filter:blur(20px);border-bottom:1px solid var(--border);}
[data-theme="light"] .site-header{background:rgba(248,248,252,0.9);}
.site-header-inner{max-width:var(--max-w);margin:0 auto;padding:0 24px;height:100%;display:flex;align-items:center;gap:24px;}
.logo-text{font-family:var(--font-display);font-size:20px;font-weight:800;background:linear-gradient(135deg,var(--accent2),var(--accent3));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;}
.hnav{padding:7px 14px;border-radius:var(--r);font-size:14px;font-weight:500;color:var(--text2);transition:all var(--t);}
.hnav:hover{background:var(--surface);color:var(--text);}
.theme-btn{width:36px;height:36px;border-radius:var(--r);background:var(--surface);border:1px solid var(--border);display:flex;align-items:center;justify-content:center;color:var(--text2);transition:all var(--t);}
.theme-btn:hover{border-color:var(--accent);}

/* Hero */
.dev-hero{padding:56px 0 40px;background:var(--bg2);border-bottom:1px solid var(--border);position:relative;overflow:hidden;}
.dev-hero::before{content:'';position:absolute;inset:0;background:radial-gradient(ellipse 50% 70% at 80% 40%,rgba(56,189,248,0.08),transparent 60%),radial-gradient(ellipse 40% 60% at 20% 60%,rgba(124,108,255,0.07),transparent 60%);pointer-events:none;}

/* Tool tabs bar */
.tool-tabs-bar{background:var(--bg2);border-bottom:1px solid var(--border);position:sticky;top:var(--header-h);z-index:50;}
.tabs-inner{max-width:var(--max-w);margin:0 auto;padding:0 24px;display:flex;overflow-x:auto;scrollbar-width:none;}
.tabs-inner::-webkit-scrollbar{display:none;}
.dev-tab{padding:14px 18px;font-size:14px;font-weight:600;color:var(--text3);border-bottom:2px solid transparent;cursor:pointer;white-space:nowrap;transition:all var(--t);display:flex;align-items:center;gap:7px;flex-shrink:0;}
.dev-tab:hover{color:var(--text2);}
.dev-tab.active{color:var(--accent2);border-color:var(--accent);}

/* Panels */
.dev-panel{display:none;max-width:var(--max-w);margin:0 auto;padding:36px 24px 80px;}
.dev-panel.active{display:block;}

/* Common form elements */
.field{margin-bottom:18px;}
.field-lbl{display:block;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:0.07em;color:var(--text3);margin-bottom:7px;}
.fi{width:100%;background:var(--surface);border:1px solid var(--border);border-radius:var(--r);padding:11px 14px;font-size:14px;color:var(--text);outline:none;font-family:var(--font-body);transition:border-color var(--t),box-shadow var(--t);}
.fi:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(124,108,255,0.1);}
.fi::placeholder{color:var(--text3);}
.fi-mono{font-family:var(--font-mono);font-size:13px;}
.fi-lg{min-height:160px;resize:vertical;}
.fi-xl{min-height:220px;resize:vertical;}
.fi-sm{min-height:80px;resize:vertical;}
.sel{cursor:pointer;}
.result{background:var(--bg);border:1px solid var(--border);border-radius:var(--r);padding:14px 16px;font-family:var(--font-mono);font-size:13px;color:var(--accent2);min-height:52px;word-break:break-all;line-height:1.7;position:relative;}
.result-lg{min-height:180px;white-space:pre-wrap;}
.result-label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:0.07em;color:var(--text3);margin-bottom:7px;}
.actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px;}
.btn-a{display:inline-flex;align-items:center;gap:6px;padding:9px 18px;border-radius:var(--r);font-size:13px;font-weight:600;cursor:pointer;border:none;font-family:var(--font-body);transition:all var(--t);}
.btn-p{background:var(--accent);color:#fff;}
.btn-p:hover{background:var(--accent2);box-shadow:var(--shadow-accent);transform:translateY(-1px);}
.btn-s{background:var(--surface);border:1px solid var(--border2);color:var(--text2);}
.btn-s:hover{border-color:var(--accent2);color:var(--accent2);}
.btn-g{background:rgba(52,211,153,0.12);border:1px solid rgba(52,211,153,0.2);color:var(--green);}
.btn-g:hover{background:rgba(52,211,153,0.22);}
.btn-r{background:rgba(248,113,113,0.12);border:1px solid rgba(248,113,113,0.2);color:var(--red);}
.btn-r:hover{background:rgba(248,113,113,0.22);}
.two-col{display:grid;grid-template-columns:1fr 1fr;gap:24px;}
.three-col{display:grid;grid-template-columns:1fr 1fr 1fr;gap:16px;}
.cb-row{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
.cb-lbl{display:flex;align-items:center;gap:8px;font-size:14px;cursor:pointer;padding:9px 12px;border-radius:var(--r);border:1px solid var(--border);background:var(--bg);transition:all var(--t);}
.cb-lbl:hover{border-color:var(--border2);}
.cb-lbl input{accent-color:var(--accent);}
.range-row{display:flex;align-items:center;gap:12px;}
.range-val{font-family:var(--font-mono);font-size:14px;font-weight:700;color:var(--accent2);min-width:40px;text-align:right;}
.panel-title{font-family:var(--font-display);font-size:26px;font-weight:800;margin-bottom:4px;}
.panel-sub{font-size:14px;color:var(--text2);margin-bottom:28px;}
.info-pill{display:inline-flex;align-items:center;gap:5px;padding:5px 12px;border-radius:99px;font-size:12px;font-weight:600;background:rgba(124,108,255,0.1);color:var(--accent2);border:1px solid rgba(124,108,255,0.2);margin-bottom:20px;}
.kbd-badge{background:var(--surface2);border:1px solid var(--border2);border-radius:5px;padding:2px 7px;font-size:11px;font-family:var(--font-mono);color:var(--text3);}

/* JSON specific */
.json-mode-tabs{display:flex;gap:0;background:var(--surface2);border-radius:var(--r);padding:3px;margin-bottom:16px;width:fit-content;}
.json-mode-tab{padding:7px 16px;border-radius:7px;font-size:13px;font-weight:600;cursor:pointer;transition:all var(--t);color:var(--text3);}
.json-mode-tab.active{background:var(--surface);color:var(--accent2);box-shadow:var(--shadow-sm);}
.json-status{font-size:12px;font-weight:600;padding:3px 10px;border-radius:99px;}
.json-ok{background:var(--green-bg);color:var(--green);}
.json-err{background:var(--red-bg);color:var(--red);}
.tree-node{font-family:var(--font-mono);font-size:13px;line-height:1.8;}
.tree-key{color:var(--accent2);}
.tree-str{color:var(--green);}
.tree-num{color:var(--accent3);}
.tree-bool{color:var(--orange);}
.tree-null{color:var(--text3);}
.tree-toggle{cursor:pointer;user-select:none;color:var(--text3);}
.tree-toggle:hover{color:var(--text);}

/* UUID */
.uuid-list{display:flex;flex-direction:column;gap:6px;}
.uuid-item{display:flex;align-items:center;gap:10px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r);padding:10px 14px;font-family:var(--font-mono);font-size:13px;color:var(--accent2);}
.uuid-copy{margin-left:auto;padding:4px 10px;border-radius:6px;font-size:11px;font-weight:600;background:var(--surface2);border:1px solid var(--border2);color:var(--text2);cursor:pointer;transition:all var(--t);font-family:var(--font-body);}
.uuid-copy:hover{border-color:var(--accent2);color:var(--accent2);}
.uuid-format-bar{display:flex;gap:6px;margin-bottom:14px;flex-wrap:wrap;}
.uuid-fmt-btn{padding:6px 14px;border-radius:var(--r-full);font-size:12px;font-weight:600;border:1px solid var(--border);background:var(--surface);color:var(--text2);cursor:pointer;transition:all var(--t);}
.uuid-fmt-btn.active,.uuid-fmt-btn:hover{border-color:var(--accent);color:var(--accent2);background:rgba(124,108,255,0.07);}

/* Hash */
.hash-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:16px;margin-bottom:10px;}
.hash-algo-label{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:0.07em;color:var(--text3);margin-bottom:8px;}
.hash-value{font-family:var(--font-mono);font-size:12px;color:var(--accent2);word-break:break-all;line-height:1.6;}
.hash-copy-btn{margin-top:8px;padding:5px 12px;border-radius:6px;font-size:11px;font-weight:600;background:var(--surface2);border:1px solid var(--border2);color:var(--text2);cursor:pointer;transition:all var(--t);font-family:var(--font-body);}
.hash-copy-btn:hover{border-color:var(--accent2);color:var(--accent2);}

/* Regex */
.regex-input-row{display:flex;align-items:center;gap:8px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r);padding:4px 12px;margin-bottom:12px;transition:border-color var(--t);}
.regex-input-row:focus-within{border-color:var(--accent);}
.regex-slash{font-size:20px;color:var(--text3);font-family:var(--font-mono);}
.regex-pattern{flex:1;background:none;border:none;outline:none;font-family:var(--font-mono);font-size:15px;color:var(--text);padding:8px 4px;}
.regex-flags{width:60px;background:none;border:none;outline:none;font-family:var(--font-mono);font-size:15px;color:var(--accent2);text-align:center;border-left:1px solid var(--border);padding:8px 4px;}
.regex-test-area{position:relative;}
.regex-highlight-overlay{position:absolute;inset:0;pointer-events:none;padding:11px 14px;font-size:14px;font-family:var(--font-body);line-height:1.6;color:transparent;white-space:pre-wrap;word-break:break-word;}
mark.regex-match{background:rgba(124,108,255,0.3);color:transparent;border-radius:3px;}
.match-stats{display:flex;gap:16px;font-size:13px;color:var(--text2);margin-top:10px;flex-wrap:wrap;}
.match-count{font-weight:700;color:var(--accent2);}
.match-list{display:flex;flex-direction:column;gap:6px;margin-top:12px;max-height:200px;overflow-y:auto;}
.match-item{display:flex;align-items:center;gap:10px;padding:8px 12px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r);}
.match-idx{font-size:11px;color:var(--text3);min-width:60px;}
.match-val{font-family:var(--font-mono);font-size:13px;color:var(--accent2);flex:1;}
.match-pos{font-size:11px;color:var(--text3);}

/* Number base */
.base-display{display:grid;grid-template-columns:1fr 1fr;gap:12px;}
.base-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:18px;cursor:pointer;transition:all var(--t);}
.base-card:hover{border-color:var(--border2);transform:translateY(-1px);}
.base-card-label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:0.07em;color:var(--text3);margin-bottom:8px;}
.base-card-val{font-family:var(--font-mono);font-size:16px;font-weight:700;color:var(--accent2);word-break:break-all;}

/* URL encode */
.url-mode-row{display:flex;gap:8px;margin-bottom:14px;flex-wrap:wrap;}
.url-mode-btn{padding:7px 14px;border-radius:var(--r-full);font-size:13px;font-weight:600;border:1px solid var(--border);background:var(--surface);color:var(--text2);cursor:pointer;transition:all var(--t);}
.url-mode-btn.active{background:var(--accent);border-color:var(--accent);color:#fff;}

/* Strength bar */
.str-bar{height:5px;background:var(--surface2);border-radius:99px;overflow:hidden;margin-top:8px;}
.str-fill{height:100%;border-radius:99px;transition:width 0.4s,background 0.4s;}

/* Toast / BtT */
.toast-stack{position:fixed;bottom:24px;right:24px;display:flex;flex-direction:column;gap:8px;z-index:9999;}
.toast{background:var(--surface);border:1px solid var(--border2);border-radius:var(--r-md);padding:13px 18px;display:flex;align-items:center;gap:10px;font-size:14px;font-weight:500;box-shadow:var(--shadow-lg);max-width:340px;animation:slideLeft 0.3s ease;}
@keyframes slideLeft{from{opacity:0;transform:translateX(20px)}to{opacity:1;transform:translateX(0)}}
.toast-success{border-left:3px solid var(--green);}
.toast-error{border-left:3px solid var(--red);}
.toast-info{border-left:3px solid var(--accent2);}
.back-to-top{position:fixed;bottom:28px;left:28px;width:44px;height:44px;border-radius:var(--r-md);background:var(--surface);border:1px solid var(--border2);display:flex;align-items:center;justify-content:center;color:var(--text2);font-size:18px;cursor:pointer;z-index:50;opacity:0;visibility:hidden;transition:all var(--t);}
.back-to-top.show{opacity:1;visibility:visible;}
.back-to-top:hover{background:var(--accent);border-color:var(--accent);color:#fff;}
@media(max-width:768px){.two-col,.three-col,.base-display{grid-template-columns:1fr;}.cb-row{grid-template-columns:1fr;}}
