:root{--bg-void:#6f8fa6;--ink:#151b24;--paper:#eef2f6;--paper-strong:#f7f9fb;--accent:#3db8a5;--accent-deep:#2a8f80;--line:#151b241f;--shadow:0 20px 48px #0f172238;--font-display:"Outfit", "Avenir Next", sans-serif;--font-body:"DM Sans", "Avenir Next", sans-serif;color:var(--ink);font-family:var(--font-body);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased}*{box-sizing:border-box}html,body,#root{background:radial-gradient(circle at 28% 18%,#a8bdd0 0%,#6f8fa6 48%,#3d5568 100%);width:100%;height:100%;margin:0;overflow:hidden}a{color:var(--accent-deep)}button,input,textarea,select{font:inherit}.app-shell{width:100%;height:100%;position:relative}.scene-canvas{inset:0;width:100%!important;height:100%!important;position:absolute!important}.birthday-celebration{z-index:8;pointer-events:none;position:absolute;inset:0;overflow:hidden}.birthday-celebration-canvas{width:100%;height:100%;position:absolute;inset:0}.hud{z-index:5;pointer-events:none;justify-content:space-between;align-items:flex-start;gap:1rem;padding:1.1rem 1.25rem;display:flex;position:absolute;top:0;left:0;right:0}.hud-brand,.hud-actions{pointer-events:auto}.hud-brand{flex-wrap:wrap;align-items:center;gap:.45rem;display:flex}.hud-mark{border-radius:.4rem;flex-shrink:0;width:1.75rem;height:1.75rem;box-shadow:0 2px 10px #00000047}.hud-env,.hud-seed{letter-spacing:.08em;text-transform:uppercase;color:var(--paper);background:#1420338c;border-radius:999px;padding:.28rem .5rem;font-size:.7rem}.hud-app{font-family:var(--font-display);color:var(--paper-strong);text-shadow:0 2px 12px #00000059;font-size:1.05rem;font-weight:700}.hud-actions{flex-wrap:wrap;justify-content:flex-end;gap:.45rem;display:flex}.hud-btn,.drawer button,.tour button,.cta,.panel-close{color:var(--paper);cursor:pointer;background:#151b2494;border:1px solid #eef2f647;border-radius:.7rem;padding:.55rem .85rem;transition:transform .16s,background .16s,box-shadow .16s}.hud-btn:hover,.drawer button:hover,.tour button:hover{background:#142033bf;transform:translateY(-1px)}.hud-btn.accent,.cta,.drawer button.accent,.compose-form .cta,.admin-login-submit{background:linear-gradient(135deg, var(--accent), #2f9f8e);color:#06241f;border-color:#0000;font-weight:600}.hud-btn.accent:hover,.cta:hover,.drawer button.accent:hover,.compose-form .cta:hover,.admin-login-submit:hover{background:linear-gradient(135deg, #4fd0bb, var(--accent));color:#04201b;transform:translateY(-1px);box-shadow:0 10px 22px #2d968447}.cta:disabled,.cta[aria-disabled=true],.compose-form .cta:disabled{opacity:.45;cursor:not-allowed;filter:grayscale(.25);box-shadow:none;transform:none}.cta:disabled:hover,.cta[aria-disabled=true]:hover,.compose-form .cta:disabled:hover{background:linear-gradient(135deg, var(--accent), #2f9f8e);color:#06241f;box-shadow:none;transform:none}.hint{z-index:4;color:var(--paper);letter-spacing:.02em;pointer-events:none;background:#151b2480;border-radius:.75rem;margin:0;padding:.4rem .8rem;font-size:.78rem;position:absolute;bottom:1rem;left:50%;transform:translate(-50%)}.panel,.tour-card,.drawer{color:var(--ink);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:linear-gradient(165deg,#f7f9fbf5,#e8eef4f0);border:1px solid #151b240f}.panel{z-index:6;border-radius:1rem;width:min(360px,100vw - 2rem);max-height:calc(100vh - 6rem);padding:1.15rem 1.2rem 1.35rem;animation:.32s rise;position:absolute;top:4.5rem;right:1rem;overflow:auto}.panel-close{float:right;padding:.35rem .65rem;font-size:.75rem}.panel-kicker{text-transform:uppercase;letter-spacing:.12em;opacity:.65;margin:0 0 .35rem;font-size:.68rem}.panel h2,.tour h2,.admin h1,.drawer h2{font-family:var(--font-display);margin:0 0 .55rem;font-weight:700;line-height:1.15}.panel-lead{margin-top:0;font-size:1.02rem}.panel-meta,.panel-links{opacity:.8}.panel-links,.project-list,.skill-list,.hobby-list,.drawer-list,.admin-list{margin:.75rem 0 0;padding:0;list-style:none}.project-list li,.skill-list li,.hobby-list li{border-top:1px solid var(--line);padding:.75rem 0}.project-list h3{font-family:var(--font-display);margin:0 0 .3rem}.tag-row{flex-wrap:wrap;gap:.35rem;margin:.45rem 0;display:flex}.tag-row span{border:1px solid var(--line);border-radius:999px;padding:.18rem .45rem;font-size:.72rem}.skill-head{justify-content:space-between;gap:.5rem;margin-bottom:.35rem;display:flex}.skill-bar{background:#1420331a;border-radius:999px;height:.35rem;overflow:hidden}.skill-bar span{background:linear-gradient(90deg, #3f7cac, var(--accent));height:100%;display:block}.compose-blurb{color:#4d5a66;margin:0 0 .85rem;font-size:.92rem;line-height:1.45}.compose-birthday .panel-kicker{color:#2f9f8e}.compose-guest .panel-kicker{color:#5a6d7c}.compose-form{gap:.75rem;display:grid}.compose-form label{gap:.35rem;font-size:.85rem;display:grid}.compose-form .check-row{flex-direction:row;align-items:center;gap:.55rem;display:flex}.compose-form .check-row input{width:auto}.compose-form input,.compose-form textarea,.compose-form select{border:1px solid var(--line);background:#ffffffb3;border-radius:.7rem;width:100%;padding:.65rem .75rem}.form-error{color:#9b1c1c}.form-ok{color:#1f6b3a}.tour{z-index:7;width:min(360px,100vw - 2rem);animation:.28s rise;position:absolute;bottom:1rem;left:1rem}.tour-card{border-radius:1.2rem;padding:1rem 1.1rem}.tour-actions{justify-content:flex-end;gap:.5rem;margin-top:.85rem;display:flex}.drawer-backdrop{z-index:8;background:#0a142373;position:absolute;inset:0}.drawer{width:min(320px,88vw);height:100%;padding:1rem;animation:.24s slide;position:absolute;top:0;right:0}.drawer-head{justify-content:space-between;align-items:center;display:flex}.drawer-list button,.drawer-controls button{text-align:left;border-radius:.85rem;width:100%;margin-top:.45rem}.drawer-controls{border-top:1px solid var(--line);margin-top:1rem;padding-top:.75rem}.admin{-webkit-overflow-scrolling:touch;overscroll-behavior:contain;background:radial-gradient(70% 50% at 12% 0,#3db8a538,#0000 52%),radial-gradient(45% 40% at 90% 85%,#2f6ba024,#0000 48%),linear-gradient(165deg,#6a879c 0%,#4a6578 46%,#2f4556 100%);height:100%;max-height:100%;padding:1.25rem 1.25rem 2.25rem;position:relative;overflow:hidden auto}.admin:before{content:"";pointer-events:none;opacity:.12;background-image:linear-gradient(#eef2f633 1px,#0000 1px),linear-gradient(90deg,#eef2f633 1px,#0000 1px);background-size:48px 48px;position:absolute;inset:0;-webkit-mask-image:radial-gradient(circle at 50% 18%,#000 18%,#0000 78%);mask-image:radial-gradient(circle at 50% 18%,#000 18%,#0000 78%)}.admin.offline{max-width:760px;height:100%;max-height:100%;box-shadow:none;background:0 0;border:none;border-radius:0;flex-direction:column;justify-content:safe center;gap:.85rem;margin:0 auto;padding:1.75rem;display:flex}.admin-shell{z-index:1;flex-direction:column;gap:.85rem;width:min(980px,100%);margin:0 auto;animation:.42s both admin-login-rise;display:flex;position:relative}.admin-loading{place-items:center;display:grid}.admin-loading-copy{z-index:1;color:var(--ink);background:#f7f9fbe0;border-radius:999px;margin:0;padding:.85rem 1.2rem;font-weight:600;position:relative}.admin-login{background:radial-gradient(70% 55% at 18% 12%,#3db8a547,#0000 55%),radial-gradient(55% 45% at 88% 78%,#2f6ba038,#0000 50%),linear-gradient(160deg,#5f7f96 0%,#3d5568 48%,#243848 100%);place-items:center;height:100%;max-height:100%;padding:1.5rem;display:grid;position:relative;overflow:auto}.admin-login-glow{filter:blur(28px);pointer-events:none;background:radial-gradient(circle,#f7f9fb2e,#0000 70%);border-radius:50%;height:42%;animation:7s ease-in-out infinite admin-login-breathe;position:absolute;inset:18% 12% auto}.admin-login-grid{pointer-events:none;opacity:.18;background-image:linear-gradient(#eef2f62e 1px,#0000 1px),linear-gradient(90deg,#eef2f62e 1px,#0000 1px);background-size:48px 48px;position:absolute;inset:0;-webkit-mask-image:radial-gradient(circle at 50% 40%,#000 20%,#0000 72%);mask-image:radial-gradient(circle at 50% 40%,#000 20%,#0000 72%)}.admin-login-stage{z-index:1;flex-direction:column;gap:1rem;width:min(420px,100%);animation:.52s both admin-login-rise;display:flex;position:relative}.admin-login-back{color:#eef2f6e0;letter-spacing:.01em;width:fit-content;font-size:.92rem;font-weight:600;text-decoration:none;transition:color .16s}.admin-login-back:hover{color:#fff}.admin-login-card{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:linear-gradient(165deg,#f7f9fbf5,#e2ebf3eb);border:1px solid #eef2f659;border-radius:1.15rem;padding:1.65rem 1.55rem 1.7rem;box-shadow:0 28px 60px #0a121c59,inset 0 1px #ffffff8c}.admin-login-brand{font-family:var(--font-display);letter-spacing:-.03em;color:var(--ink);margin:0 0 .35rem;font-size:clamp(1.85rem,4vw,2.35rem);font-weight:700;line-height:1}.admin-login-card h1{font-family:var(--font-display);letter-spacing:.04em;text-transform:uppercase;color:var(--accent-deep);margin:0 0 .45rem;font-size:1.05rem;font-weight:600}.admin-login-lead{color:#151b24ad;margin:0 0 1.25rem;line-height:1.45}.admin-login-form{flex-direction:column;gap:.85rem;display:flex}.admin-login-form label{letter-spacing:.04em;text-transform:uppercase;color:#151b249e;flex-direction:column;gap:.35rem;font-size:.82rem;font-weight:600;display:flex}.admin-login-form input{color:var(--ink);text-transform:none;letter-spacing:normal;background:#ffffffd1;border:1px solid #151b241f;border-radius:.75rem;padding:.75rem .85rem;font-size:1rem;font-weight:500;transition:border-color .16s,box-shadow .16s}.admin-login-form input:focus{border-color:#3db8a5b3;outline:none;box-shadow:0 0 0 3px #3db8a52e}.admin-login-submit{text-align:center;justify-content:center;width:100%;margin-top:.35rem;padding:.8rem 1rem}@keyframes admin-login-rise{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}@keyframes admin-login-breathe{0%,to{opacity:.55;transform:scale(1)}50%{opacity:.9;transform:scale(1.04)}}.admin-top{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:linear-gradient(165deg,#f7f9fbf5,#e2ebf3e6);border:1px solid #eef2f666;border-radius:1.05rem;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.85rem;padding:1rem 1.15rem;display:flex;box-shadow:0 18px 40px #0a121c2e,inset 0 1px #ffffff8c}.admin-top-brand{align-items:center;gap:.9rem;min-width:0;display:flex}.admin-kicker{font-family:var(--font-display);letter-spacing:-.03em;color:var(--ink);margin:0;font-size:1.35rem;font-weight:700;line-height:1}.admin-top h1{font-family:var(--font-display);letter-spacing:.08em;text-transform:uppercase;color:var(--accent-deep);margin:.15rem 0 0;font-size:.78rem;font-weight:600}.admin-back{color:var(--accent-deep);background:#3db8a51f;border-radius:.55rem;padding:.35rem .55rem;font-weight:600;text-decoration:none;transition:background .16s,color .16s}.admin-back:hover{color:#1d6f63;background:#3db8a533}.admin-signout{color:var(--ink);cursor:pointer;background:#ffffffb8;border:1px solid #151b241a;border-radius:.7rem;padding:.55rem .9rem;font-weight:600;transition:transform .16s,background .16s,border-color .16s}.admin-signout:hover{background:#fff;border-color:#3db8a559;transform:translateY(-1px)}.admin-tabs{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#0f172247;border:1px solid #eef2f624;border-radius:.95rem;flex-wrap:wrap;align-items:center;gap:.35rem;padding:.4rem;display:flex}.admin-tabs button{color:#eef2f6d1;text-transform:capitalize;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:.65rem;padding:.48rem .78rem;font-size:.88rem;font-weight:600;transition:background .16s,color .16s,transform .16s}.admin-tabs button:hover{color:#fff;background:#eef2f61f;transform:none}.admin-tabs button.active{background:linear-gradient(135deg, var(--accent), #2f9f8e);color:#06241f;border-color:#0000;box-shadow:0 8px 18px #2d968447}.admin-status{background:#f7f9fbe0;border:1px solid #eef2f659;border-radius:.75rem;flex-wrap:wrap;gap:.45rem .85rem;padding:.55rem .85rem;display:flex}.admin-status .form-ok,.admin-status .form-error{margin:0;font-weight:600}.admin-panel{animation:.32s both admin-login-rise}.admin-form-head{margin-bottom:.15rem}.admin-form-head h2{font-family:var(--font-display);letter-spacing:-.02em;margin:0;font-size:1.2rem}.admin-form-head p{color:#151b249e;margin:.25rem 0 0;font-size:.92rem}.admin-field-row{grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem;display:grid}.admin-grid{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));align-items:start;gap:.9rem;display:grid}.admin-grid>.compose-form{height:fit-content}.admin-grid>*,.admin-panel>.compose-form,.admin>.compose-form,.admin.offline>.compose-form{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:linear-gradient(165deg,#f7f9fbf7,#e2ebf3eb);border:1px solid #eef2f666;border-radius:1.05rem;padding:1.15rem 1.2rem 1.25rem;box-shadow:0 18px 40px #0a121c29,inset 0 1px #ffffff8c}.admin-panel .compose-form,.admin-grid .compose-form{gap:.7rem}.admin-panel .compose-form label,.admin-grid .compose-form label{letter-spacing:.04em;text-transform:uppercase;color:#151b2494;font-size:.78rem;font-weight:600}.admin-panel .compose-form input,.admin-panel .compose-form textarea,.admin-panel .compose-form select,.admin-grid .compose-form input,.admin-grid .compose-form textarea,.admin-grid .compose-form select{color:var(--ink);text-transform:none;letter-spacing:normal;background:#ffffffd6;border:1px solid #151b241f;border-radius:.7rem;padding:.7rem .8rem;font-size:.98rem;font-weight:500;transition:border-color .16s,box-shadow .16s}.admin-panel .compose-form input:focus,.admin-panel .compose-form textarea:focus,.admin-panel .compose-form select:focus,.admin-grid .compose-form input:focus,.admin-grid .compose-form textarea:focus,.admin-grid .compose-form select:focus{border-color:#3db8a5b3;outline:none;box-shadow:0 0 0 3px #3db8a529}.admin-panel .compose-form .cta,.admin-grid .compose-form .cta{width:fit-content;min-width:9.5rem;margin-top:.2rem}.admin-list{background:linear-gradient(165deg,#f7f9fbf7,#e2ebf3eb);border:1px solid #eef2f666;border-radius:1.05rem;margin:0;padding:0;list-style:none;overflow:hidden;box-shadow:0 18px 40px #0a121c24}.admin-list li{border-top:1px solid #151b2414;justify-content:space-between;align-items:center;gap:.75rem;padding:.9rem 1.05rem;display:flex}.admin-list li:first-child{border-top:none}.admin-list.greetings li,.admin-list.visits li{flex-direction:column;align-items:stretch}.visits-toolbar{align-items:center;gap:.75rem;margin:.5rem 0 .85rem;display:flex}.visit-line{color:var(--ink);flex-wrap:wrap;gap:.35rem .85rem;margin:.35rem 0 0;font-size:.92rem;display:flex}.visit-meta,.visit-ua{color:#151b249e;word-break:break-word;margin:.35rem 0 0;font-size:.78rem}.visit-ua{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace}.admin-list .row{gap:.4rem;display:flex}.admin-list button{color:var(--ink);cursor:pointer;background:#ffffffc7;border:1px solid #151b241a;border-radius:.6rem;padding:.45rem .75rem;font-weight:600;transition:transform .16s,background .16s,border-color .16s}.admin-list button:hover{background:#fff;border-color:#3db8a559;transform:translateY(-1px)}.admin-list button:disabled{opacity:.5;cursor:not-allowed;transform:none}@media (width<=720px){.admin-field-row{grid-template-columns:1fr}.admin-top{align-items:flex-start}.admin-signout{width:100%}}.check{align-items:center;gap:.5rem;display:flex!important}.mobile-only{display:none}@keyframes rise{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes slide{0%{opacity:.6;transform:translate(24px)}to{opacity:1;transform:translate(0)}}@media (width<=720px){.desktop-only{display:none!important}.mobile-only{display:inline-flex}.panel{width:auto;max-height:45vh;inset:auto 1rem 1rem}}.mobile-controls{z-index:5;pointer-events:none;justify-content:space-between;align-items:flex-end;gap:.75rem;padding:.75rem .9rem 1.1rem;display:none;position:absolute;bottom:0;left:0;right:0}.joystick{pointer-events:auto;touch-action:none;-webkit-user-select:none;user-select:none;background:#1420336b;border:1px solid #fff8ec59;border-radius:999px;width:118px;height:118px;position:relative}.joystick-label{letter-spacing:.08em;text-transform:uppercase;color:#fff8ec8c;pointer-events:none;place-items:center;font-size:.68rem;display:grid;position:absolute;inset:0}.joystick-knob{background:linear-gradient(135deg, var(--accent), #2f9f8e);pointer-events:none;border-radius:999px;width:46px;height:46px;margin:-23px 0 0 -23px;position:absolute;top:50%;left:50%;box-shadow:0 6px 16px #00000040}.mobile-control-actions{pointer-events:auto;flex-direction:column;align-items:flex-end;gap:.45rem;display:flex}.mobile-hint{color:#fff8eccc;pointer-events:none;white-space:nowrap;margin:0;font-size:.68rem;position:absolute;bottom:.35rem;left:50%;transform:translate(-50%)}@media (width<=720px){.mobile-controls,.hint.desktop-only+.mobile-controls,.mobile-controls{display:flex}.panel{bottom:8.5rem}}
