:root{--bg: #070713;--fg: #e6e6f0;--fg-dim: #8a8aab;--accent: #88aaff;--accent-strong: #aac4ff;--danger: #ff6a8a;--panel: rgba(15, 16, 32, .78);--panel-border: rgba(138, 138, 171, .18);--font: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", system-ui, sans-serif}*{box-sizing:border-box}html,body{margin:0;padding:0;height:100%;background:var(--bg);color:var(--fg);font-family:var(--font);font-size:15px;line-height:1.55;-webkit-font-smoothing:antialiased;overflow:hidden}#scene{position:fixed;inset:0;width:100%;height:100%;display:block;z-index:0}#ui-root{position:fixed;inset:0;z-index:10;pointer-events:none}#ui-root>*{pointer-events:auto}#ui-root .modal-backdrop:not(.open),#ui-root .services-view:not(.open){pointer-events:none}#hint{position:fixed;right:14px;bottom:12px;width:28px;height:28px;border-radius:50%;border:1px solid rgba(255,255,255,.18);background:#0f102066;color:var(--fg-dim);font-family:var(--font);font-size:13px;line-height:1;cursor:pointer;opacity:.05;transition:opacity .2s ease;z-index:20}#hint:hover,#hint:focus{opacity:.9;outline:none}#hint-text{position:fixed;right:50px;bottom:16px;padding:6px 10px;background:var(--panel);border:1px solid var(--panel-border);border-radius:6px;font-size:13px;color:var(--fg);z-index:21}.panel{background:var(--panel);border:1px solid var(--panel-border);border-radius:10px;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);padding:24px;box-shadow:0 18px 60px #0000008c}.modal-backdrop{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;background:#00000073;z-index:30;opacity:0;transition:opacity .2s ease}.modal-backdrop.open{opacity:1}.modal{width:min(360px,92vw);composes:panel}.modal h1{margin:0 0 4px;font-size:18px;font-weight:500;letter-spacing:.02em}.modal p.subtitle{margin:0 0 18px;color:var(--fg-dim);font-size:13px}.modal label{display:block;font-size:12px;color:var(--fg-dim);margin:12px 0 4px}.modal input{width:100%;padding:9px 11px;background:#ffffff0a;border:1px solid var(--panel-border);border-radius:6px;color:var(--fg);font:inherit;font-size:14px;transition:border-color .15s ease}.modal input:focus{outline:none;border-color:var(--accent)}.modal .actions{display:flex;justify-content:flex-end;gap:8px;margin-top:18px}.btn{padding:8px 16px;border-radius:6px;border:1px solid var(--panel-border);background:#ffffff0a;color:var(--fg);font:inherit;font-size:14px;cursor:pointer;transition:background .15s ease,border-color .15s ease}.btn:hover{background:#ffffff12}.btn-primary{background:var(--accent);border-color:var(--accent);color:#0a0a18;font-weight:500}.btn-primary:hover{background:var(--accent-strong);border-color:var(--accent-strong)}.btn-primary:disabled{opacity:.5;cursor:not-allowed}.error{color:var(--danger);font-size:13px;margin-top:10px;min-height:18px}.shake{animation:shake .35s cubic-bezier(.36,.07,.19,.97)}@keyframes shake{10%,90%{transform:translate3d(-1px,0,0)}20%,80%{transform:translate3d(2px,0,0)}30%,50%,70%{transform:translate3d(-3px,0,0)}40%,60%{transform:translate3d(3px,0,0)}}.services-view{position:fixed;inset:0;display:flex;flex-direction:column;padding:32px 40px;z-index:5;opacity:0;transition:opacity .4s ease}.services-view.open{opacity:1}.services-header{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:24px}.services-header h1{margin:0;font-size:22px;font-weight:400;letter-spacing:.02em}.services-header .who{font-size:13px;color:var(--fg-dim)}.services-header .who button{margin-left:12px;background:none;border:none;color:var(--accent);cursor:pointer;font:inherit;font-size:13px;padding:0}.services-header .who button:hover{text-decoration:underline}.services-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:16px;max-width:1200px;width:100%;margin:0 auto}.service-card{composes:panel;text-decoration:none;color:var(--fg);display:flex;flex-direction:column;gap:8px;transition:border-color .2s ease;cursor:pointer}.service-card:hover{border-color:var(--accent)}.service-card .name{font-size:16px;font-weight:500}.service-card .desc{color:var(--fg-dim);font-size:13px}.service-card .category{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--accent);margin-top:auto}.services-empty{margin:0 auto;color:var(--fg-dim);font-size:14px;padding:60px 0;text-align:center}.fade-cover{position:fixed;inset:0;background:#000;z-index:50;opacity:0;pointer-events:none;transition:opacity .4s ease}.fade-cover.show{opacity:1;pointer-events:auto}
