:root{--font-sans:"Segoe UI Variable Text", "Segoe UI", -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Noto Sans SC", "Noto Sans", sans-serif;--font-mono:ui-monospace, "Cascadia Mono", SFMono-Regular, Consolas, monospace;--canvas:#edf2f9;--canvas-gradient:linear-gradient(128deg, #f4f8fe 0%, #e8f0fb 46%, #eef6fb 100%);--blob-a:radial-gradient(circle at 50% 50%, #7aa2ff8c, #b6d4ff00 68%);--blob-b:radial-gradient(circle at 50% 50%, #6eced66b, #7debdc00 70%);--glass:#ffffffb8;--glass-strong:#ffffffe6;--glass-soft:#ffffff80;--glass-edge:#ffffffc7;--glass-blur:blur(20px) saturate(165%);--surface-sunken:#ecf2fab3;--hairline:#182c5214;--hairline-strong:#182c5224;--ink-1:#15233b;--ink-2:#44546e;--ink-3:#74829a;--ink-4:#a4afc0;--accent:#2d6cec;--accent-strong:#1f57cc;--accent-soft:#2d6cec1a;--accent-softer:#2d6cec0e;--ring:0 0 0 3px #2d6cec2e;--success:#127a57;--success-soft:#e2f4ec;--warning:#9a5a05;--warning-soft:#fff2d9;--danger:#bf3a2e;--danger-soft:#fdebe8;--violet:#6645c2;--violet-soft:#eee9fc;--neutral:#5d6b82;--neutral-soft:#edf1f6;--radius-xl:20px;--radius-lg:16px;--radius-md:11px;--radius-sm:8px;--radius-pill:999px;--shadow-card:inset 0 1px 0 #ffffffd9, 0 1px 2px #182c520a, 0 12px 32px -18px #182c522e;--shadow-float:inset 0 1px 0 #ffffffe6, 0 18px 48px -18px #182c524d, 0 2px 6px #182c520f;--ease-out:cubic-bezier(.22, 1, .36, 1);--sidebar-width:240px;--sidebar-collapsed:76px;--topbar-height:62px;--page-gutter:28px;--ink:var(--ink-1);--muted:var(--ink-3);--line:var(--hairline-strong);--blue:var(--accent);--blue-dark:var(--accent-strong);--blue-soft:var(--accent-soft);--surface:var(--glass);--page:var(--canvas);font-family:var(--font-sans);-webkit-font-smoothing:antialiased}body{color:var(--ink-1);background:var(--canvas-gradient) fixed var(--canvas)}body:before,body:after{content:"";z-index:-1;aspect-ratio:1;pointer-events:none;border-radius:50%;position:fixed}body:before{background:var(--blob-a);width:58vw;max-width:820px;top:-18vh;right:-12vw}body:after{background:var(--blob-b);width:48vw;max-width:700px;bottom:-24vh;left:6vw}.topbar{z-index:60;border-bottom:1px solid var(--hairline);background:var(--glass-strong);height:auto;min-height:60px;backdrop-filter:var(--glass-blur);position:sticky;top:0}.logo{color:var(--ink-1);letter-spacing:-.01em;font-size:15px}.top-links a{color:var(--ink-2);border-radius:var(--radius-sm)}.top-links a:hover{color:var(--accent-strong);background:var(--accent-soft)}.language-select{border-color:var(--hairline-strong);border-radius:var(--radius-sm);color:var(--ink-2);background:var(--glass-strong)}.panel,.country-browser,.mode-tabs{border:1px solid var(--glass-edge);border-radius:var(--radius-lg);background:var(--glass);box-shadow:var(--shadow-card);backdrop-filter:var(--glass-blur)}.container{margin-top:18px}.generator-card{z-index:20;position:relative}.country-group h2{color:var(--ink-2);background:var(--accent-softer)}.country-group button{border-color:var(--hairline-strong);background:var(--glass-strong)}.country-group button.active{color:#fff;border-color:var(--accent);background:var(--accent)}.filter>span,.filter>label{color:var(--ink-2);font-size:12px;font-weight:650}.filter input,.ip-region-controls input{border-color:var(--hairline-strong);border-radius:var(--radius-md);background:var(--glass-strong)}.filter input:focus,.ip-region-controls input:focus,.combobox-control.open input{border-color:var(--accent);box-shadow:var(--ring)}.combobox-control button{border-left-color:var(--hairline);border-radius:0 var(--radius-md) var(--radius-md) 0;background:0 0}.combobox-control .combobox-clear{width:26px;height:26px;color:var(--ink-3);border:0;border-radius:50%;top:50%;right:40px;transform:translateY(-50%)}.combobox-control .combobox-clear:hover{color:var(--ink-1);background:var(--accent-softer)}.combobox-control input{padding-right:70px}.combobox-popup{border:1px solid var(--hairline-strong);border-radius:var(--radius-md);box-shadow:var(--shadow-float);backdrop-filter:var(--glass-blur);background:#fff;padding:6px}.combobox-options{max-height:300px}.combobox-popup button{border-radius:var(--radius-sm)}.combobox-popup button:hover,.combobox-popup button.active{color:var(--accent-strong);background:var(--accent-soft)}.combobox-popup button:hover small,.combobox-popup button.active small{color:var(--accent-strong)}.combobox-popup mark{color:inherit;background:#2d6cec29;border-radius:3px;padding:0 1px}.combobox-status{border-top-color:var(--hairline);border-radius:0 0 var(--radius-sm) var(--radius-sm);color:var(--ink-3);background:0 0;margin-top:4px}.combobox-status button{border-color:var(--accent);border-radius:var(--radius-sm);color:var(--accent);background:0 0}.generate-button{border-radius:var(--radius-md);background:var(--accent);border-color:var(--accent);transition:background .15s var(--ease-out), transform .15s var(--ease-out);box-shadow:0 8px 18px -10px #2d6cecb3}.generate-button:hover{background:var(--accent-strong)}.generate-button:active{transform:translateY(1px)}.ip-region-controls button{border-radius:var(--radius-md)}.address-table{border-color:var(--hairline);border-radius:var(--radius-md);background:var(--glass-soft)}.result-row{border-bottom-color:var(--hairline)}.section-heading .favorite-toggle{border-radius:var(--radius-sm)}.address-skeleton{gap:14px;padding:22px;display:grid}.skeleton-line{background:linear-gradient(90deg,#182c520f 0%,#182c521f 50%,#182c520f 100%) 0 0/200% 100%;border-radius:7px;width:62%;height:14px;animation:1.2s ease-in-out infinite skeleton-shimmer}.skeleton-line.wide{width:88%}.skeleton-line.short{width:38%}@keyframes skeleton-shimmer{0%{background-position:100% 0}to{background-position:-100% 0}}.shortcut-card{border-radius:var(--radius-lg)}.shortcut-card>header{background:linear-gradient(135deg, var(--accent), var(--accent-strong))}.shortcut-card-special>header{background:linear-gradient(135deg,#2c4f9c,#1f3b7a)}.shortcut-card-cities>header{background:linear-gradient(135deg,#2f7a74,#245f5a)}@media (width<=760px){.topbar{position:static}}@media (prefers-reduced-motion:reduce){.skeleton-line{animation:none}.generate-button{transition:none}}
