:root{color-scheme:light;font-family:Arial,Malgun Gothic,sans-serif;--page: #fff;--text: #000;--link: #00e;--muted: #666;--line: #ddd;--edge: #aaa;--button: #eee;--pressed: #d9d9d9;--hover: #f2f2f2;--error: #a00;--cursor: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='34' viewBox='0 0 24 34' shape-rendering='crispEdges'%3E%3Cpath fill='%23111' d='M1 1h3v2h2v2h2v2h2v2h2v2h2v2h2v2h2v2h2v2h2v2h2v3h-8v3h2v3h2v3h-5v-2h-2v-3h-2v-2h-2v2H8v2H6v2H1z'/%3E%3Cpath fill='%23fff' d='M3 5h1v2h2v2h2v2h2v2h2v2h2v2h2v2h2v2h2v1h-8v4h2v3h2v1h-2v-2h-2v-3h-2v-2H8v2H6v2H3z'/%3E%3C/svg%3E") 1 1, auto;--cursor-pointer: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='34' viewBox='0 0 24 34' shape-rendering='crispEdges'%3E%3Cpath fill='%23111' d='M1 1h3v2h2v2h2v2h2v2h2v2h2v2h2v2h2v2h2v2h2v2h2v3h-8v3h2v3h2v3h-5v-2h-2v-3h-2v-2h-2v2H8v2H6v2H1z'/%3E%3Cpath fill='%23fff' d='M3 5h1v2h2v2h2v2h2v2h2v2h2v2h2v2h2v2h2v1h-8v4h2v3h2v1h-2v-2h-2v-3h-2v-2H8v2H6v2H3z'/%3E%3C/svg%3E") 1 1, pointer;color:var(--text);background:var(--page)}:root[data-theme=dark]{color-scheme:dark;--page: #171717;--text: #eee;--link: #a4baff;--muted: #b3b3b3;--line: #414141;--edge: #777;--button: #303030;--pressed: #494949;--hover: #292929;--error: #ffaaaa}*{box-sizing:border-box}html{cursor:var(--cursor)}a[href],button,summary,label,select,[role=link]:not([aria-disabled]),[role=button]{cursor:var(--cursor-pointer)}input:not([type=button]):not([type=submit]):not([type=checkbox]):not([type=radio]),textarea{cursor:text}body{margin:0;min-height:100vh;min-height:100svh;display:flex;flex-direction:column;-webkit-text-size-adjust:100%}[hidden]{display:none!important}button,input,select{font:inherit}a{color:var(--link);text-decoration:underline}button{cursor:var(--cursor-pointer);touch-action:manipulation;-webkit-tap-highlight-color:transparent}button:disabled{cursor:var(--cursor)}:focus-visible{outline:2px solid var(--link);outline-offset:4px}.home{flex:1;display:flex;justify-content:center;padding:clamp(42px,14vh,120px) 20px 60px}.home-content{width:min(100%,700px);text-align:left}.hero{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"identity avatar" "links avatar";column-gap:48px;align-items:center}.hero .identity{grid-area:identity;align-self:end}.hero .links{grid-area:links;align-self:start}.avatar{grid-area:avatar;display:block;width:260px;height:260px;object-fit:cover;border-radius:22%;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100' preserveAspectRatio='none'%3E%3Cpath d='M100.00 50.00L99.99 61.64L99.97 65.36L99.94 68.06L99.89 70.26L99.83 72.14L99.75 73.81L99.66 75.31L99.56 76.68L99.44 77.94L99.31 79.12L99.17 80.22L99.01 81.26L98.83 82.24L98.64 83.17L98.44 84.05L98.22 84.89L97.99 85.69L97.74 86.46L97.48 87.19L97.20 87.89L96.91 88.57L96.60 89.21L96.28 89.83L95.94 90.43L95.58 91.00L95.20 91.54L94.81 92.07L94.40 92.58L93.97 93.06L93.53 93.53L93.06 93.97L92.58 94.40L92.07 94.81L91.54 95.20L91.00 95.58L90.43 95.94L89.83 96.28L89.21 96.60L88.57 96.91L87.89 97.20L87.19 97.48L86.46 97.74L85.69 97.99L84.89 98.22L84.05 98.44L83.17 98.64L82.24 98.83L81.26 99.01L80.22 99.17L79.12 99.31L77.94 99.44L76.68 99.56L75.31 99.66L73.81 99.75L72.14 99.83L70.26 99.89L68.06 99.94L65.36 99.97L61.64 99.99L50.00 100.00L38.36 99.99L34.64 99.97L31.94 99.94L29.74 99.89L27.86 99.83L26.19 99.75L24.69 99.66L23.32 99.56L22.06 99.44L20.88 99.31L19.78 99.17L18.74 99.01L17.76 98.83L16.83 98.64L15.95 98.44L15.11 98.22L14.31 97.99L13.54 97.74L12.81 97.48L12.11 97.20L11.43 96.91L10.79 96.60L10.17 96.28L9.57 95.94L9.00 95.58L8.46 95.20L7.93 94.81L7.42 94.40L6.94 93.97L6.47 93.53L6.03 93.06L5.60 92.58L5.19 92.07L4.80 91.54L4.42 91.00L4.06 90.43L3.72 89.83L3.40 89.21L3.09 88.57L2.80 87.89L2.52 87.19L2.26 86.46L2.01 85.69L1.78 84.89L1.56 84.05L1.36 83.17L1.17 82.24L0.99 81.26L0.83 80.22L0.69 79.12L0.56 77.94L0.44 76.68L0.34 75.31L0.25 73.81L0.17 72.14L0.11 70.26L0.06 68.06L0.03 65.36L0.01 61.64L0.00 50.00L0.01 38.36L0.03 34.64L0.06 31.94L0.11 29.74L0.17 27.86L0.25 26.19L0.34 24.69L0.44 23.32L0.56 22.06L0.69 20.88L0.83 19.78L0.99 18.74L1.17 17.76L1.36 16.83L1.56 15.95L1.78 15.11L2.01 14.31L2.26 13.54L2.52 12.81L2.80 12.11L3.09 11.43L3.40 10.79L3.72 10.17L4.06 9.57L4.42 9.00L4.80 8.46L5.19 7.93L5.60 7.42L6.03 6.94L6.47 6.47L6.94 6.03L7.42 5.60L7.93 5.19L8.46 4.80L9.00 4.42L9.57 4.06L10.17 3.72L10.79 3.40L11.43 3.09L12.11 2.80L12.81 2.52L13.54 2.26L14.31 2.01L15.11 1.78L15.95 1.56L16.83 1.36L17.76 1.17L18.74 0.99L19.78 0.83L20.88 0.69L22.06 0.56L23.32 0.44L24.69 0.34L26.19 0.25L27.86 0.17L29.74 0.11L31.94 0.06L34.64 0.03L38.36 0.01L50.00 0.00L61.64 0.01L65.36 0.03L68.06 0.06L70.26 0.11L72.14 0.17L73.81 0.25L75.31 0.34L76.68 0.44L77.94 0.56L79.12 0.69L80.22 0.83L81.26 0.99L82.24 1.17L83.17 1.36L84.05 1.56L84.89 1.78L85.69 2.01L86.46 2.26L87.19 2.52L87.89 2.80L88.57 3.09L89.21 3.40L89.83 3.72L90.43 4.06L91.00 4.42L91.54 4.80L92.07 5.19L92.58 5.60L93.06 6.03L93.53 6.47L93.97 6.94L94.40 7.42L94.81 7.93L95.20 8.46L95.58 9.00L95.94 9.57L96.28 10.17L96.60 10.79L96.91 11.43L97.20 12.11L97.48 12.81L97.74 13.54L97.99 14.31L98.22 15.11L98.44 15.95L98.64 16.83L98.83 17.76L99.01 18.74L99.17 19.78L99.31 20.88L99.44 22.06L99.56 23.32L99.66 24.69L99.75 26.19L99.83 27.86L99.89 29.74L99.94 31.94L99.97 34.64L99.99 38.36Z'/%3E%3C/svg%3E") center / 100% 100% no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100' preserveAspectRatio='none'%3E%3Cpath d='M100.00 50.00L99.99 61.64L99.97 65.36L99.94 68.06L99.89 70.26L99.83 72.14L99.75 73.81L99.66 75.31L99.56 76.68L99.44 77.94L99.31 79.12L99.17 80.22L99.01 81.26L98.83 82.24L98.64 83.17L98.44 84.05L98.22 84.89L97.99 85.69L97.74 86.46L97.48 87.19L97.20 87.89L96.91 88.57L96.60 89.21L96.28 89.83L95.94 90.43L95.58 91.00L95.20 91.54L94.81 92.07L94.40 92.58L93.97 93.06L93.53 93.53L93.06 93.97L92.58 94.40L92.07 94.81L91.54 95.20L91.00 95.58L90.43 95.94L89.83 96.28L89.21 96.60L88.57 96.91L87.89 97.20L87.19 97.48L86.46 97.74L85.69 97.99L84.89 98.22L84.05 98.44L83.17 98.64L82.24 98.83L81.26 99.01L80.22 99.17L79.12 99.31L77.94 99.44L76.68 99.56L75.31 99.66L73.81 99.75L72.14 99.83L70.26 99.89L68.06 99.94L65.36 99.97L61.64 99.99L50.00 100.00L38.36 99.99L34.64 99.97L31.94 99.94L29.74 99.89L27.86 99.83L26.19 99.75L24.69 99.66L23.32 99.56L22.06 99.44L20.88 99.31L19.78 99.17L18.74 99.01L17.76 98.83L16.83 98.64L15.95 98.44L15.11 98.22L14.31 97.99L13.54 97.74L12.81 97.48L12.11 97.20L11.43 96.91L10.79 96.60L10.17 96.28L9.57 95.94L9.00 95.58L8.46 95.20L7.93 94.81L7.42 94.40L6.94 93.97L6.47 93.53L6.03 93.06L5.60 92.58L5.19 92.07L4.80 91.54L4.42 91.00L4.06 90.43L3.72 89.83L3.40 89.21L3.09 88.57L2.80 87.89L2.52 87.19L2.26 86.46L2.01 85.69L1.78 84.89L1.56 84.05L1.36 83.17L1.17 82.24L0.99 81.26L0.83 80.22L0.69 79.12L0.56 77.94L0.44 76.68L0.34 75.31L0.25 73.81L0.17 72.14L0.11 70.26L0.06 68.06L0.03 65.36L0.01 61.64L0.00 50.00L0.01 38.36L0.03 34.64L0.06 31.94L0.11 29.74L0.17 27.86L0.25 26.19L0.34 24.69L0.44 23.32L0.56 22.06L0.69 20.88L0.83 19.78L0.99 18.74L1.17 17.76L1.36 16.83L1.56 15.95L1.78 15.11L2.01 14.31L2.26 13.54L2.52 12.81L2.80 12.11L3.09 11.43L3.40 10.79L3.72 10.17L4.06 9.57L4.42 9.00L4.80 8.46L5.19 7.93L5.60 7.42L6.03 6.94L6.47 6.47L6.94 6.03L7.42 5.60L7.93 5.19L8.46 4.80L9.00 4.42L9.57 4.06L10.17 3.72L10.79 3.40L11.43 3.09L12.11 2.80L12.81 2.52L13.54 2.26L14.31 2.01L15.11 1.78L15.95 1.56L16.83 1.36L17.76 1.17L18.74 0.99L19.78 0.83L20.88 0.69L22.06 0.56L23.32 0.44L24.69 0.34L26.19 0.25L27.86 0.17L29.74 0.11L31.94 0.06L34.64 0.03L38.36 0.01L50.00 0.00L61.64 0.01L65.36 0.03L68.06 0.06L70.26 0.11L72.14 0.17L73.81 0.25L75.31 0.34L76.68 0.44L77.94 0.56L79.12 0.69L80.22 0.83L81.26 0.99L82.24 1.17L83.17 1.36L84.05 1.56L84.89 1.78L85.69 2.01L86.46 2.26L87.19 2.52L87.89 2.80L88.57 3.09L89.21 3.40L89.83 3.72L90.43 4.06L91.00 4.42L91.54 4.80L92.07 5.19L92.58 5.60L93.06 6.03L93.53 6.47L93.97 6.94L94.40 7.42L94.81 7.93L95.20 8.46L95.58 9.00L95.94 9.57L96.28 10.17L96.60 10.79L96.91 11.43L97.20 12.11L97.48 12.81L97.74 13.54L97.99 14.31L98.22 15.11L98.44 15.95L98.64 16.83L98.83 17.76L99.01 18.74L99.17 19.78L99.31 20.88L99.44 22.06L99.56 23.32L99.66 24.69L99.75 26.19L99.83 27.86L99.89 29.74L99.94 31.94L99.97 34.64L99.99 38.36Z'/%3E%3C/svg%3E") center / 100% 100% no-repeat}.home{--link: var(--text)}.identity h1{margin:0;font-family:Times New Roman,serif;font-size:clamp(56px,12vw,82px);font-weight:400;line-height:1.1;overflow-wrap:anywhere}.identity .greeting{display:block;margin-bottom:6px;font-size:clamp(24px,5vw,32px);line-height:1.3;white-space:nowrap}.greeting{--flap-shade: color-mix(in srgb, var(--text) 16%, var(--page))}.flap{position:relative;display:inline-block;white-space:pre;text-align:center;transition:width .25s ease}.flap-face{display:block;background:var(--page);backface-visibility:hidden}.flap-top{position:relative}.flap-bottom,.flap-fold-top,.flap-fold-bottom{position:absolute;inset:0}.flap-top,.flap-fold-top{clip-path:inset(0 0 50% 0)}.flap-bottom,.flap-fold-bottom{clip-path:inset(50% 0 0 0)}.wave{display:inline-block;transform-origin:70% 70%;animation:wave 1.8s ease-in-out .3s 1}@keyframes wave{0%,60%,to{transform:rotate(0)}10%,30%{transform:rotate(14deg)}20%{transform:rotate(-8deg)}40%{transform:rotate(-4deg)}50%{transform:rotate(10deg)}}@media(prefers-reduced-motion:reduce){.wave{animation:none}}.identity p{margin:8px 0 0;font-size:17px;line-height:1.5}.clock-wrap{position:relative;display:inline-flex;flex:none}.clock-face line{stroke:var(--page);stroke-linecap:round;transform-box:view-box;transform-origin:12px 12px}.clock-hour{stroke-width:2.4}.clock-minute{stroke-width:1.9}.clock-button .link-label{font-variant-numeric:tabular-nums}.refresh{min-height:44px;padding:7px 16px;border:1px outset var(--edge);border-radius:0;background:var(--button);color:var(--text);font-size:15px;line-height:20px}.refresh:active:enabled{border-style:inset;background:var(--pressed);box-shadow:inset 1px 1px 2px #0003;transform:translateY(1px)}.links{--icon-pad: 12px;display:flex;align-items:center;justify-content:flex-start;flex-wrap:nowrap;gap:4px 0;margin:26px 0 0 calc(-1 * var(--icon-pad));font-size:15px}.home .links{flex-direction:column;align-items:flex-start}.social-links,.utility-links{display:flex;align-items:center;flex-wrap:nowrap;min-height:44px}.links .icon-link,.links .tools{flex:none}.tools summary{display:inline-flex;align-items:center;min-height:44px;padding:10px 2px;white-space:nowrap}.links .icon-link,.site-credit .icon-link{display:inline-flex;align-items:center;min-width:calc(20px + 2 * var(--icon-pad));min-height:44px;padding:10px var(--icon-pad);border:0;background:none;color:var(--link);font:inherit;text-decoration:none;white-space:nowrap}.link-icon{display:block;flex:none;width:20px;height:20px}.home .links [data-contact] .link-icon,.home .links summary .link-icon,.home .links .clock-face{transform:scale(1.2)}.link-label{display:inline-grid;grid-template-columns:0fr;margin-left:0;opacity:0;text-decoration:underline;vertical-align:middle;transition:grid-template-columns .5s cubic-bezier(.22,.61,.36,1),margin-left .5s cubic-bezier(.22,.61,.36,1),opacity .4s ease .08s}.link-label>span{min-width:0;overflow:hidden}.icon-link:focus-visible .link-label,.icon-link.touch-selected .link-label,.tools[open]>.icon-link .link-label{grid-template-columns:1fr;margin-left:8px;opacity:1}@media(hover:hover){.icon-link:hover .link-label,.tools[open]>.icon-link .link-label{grid-template-columns:1fr;margin-left:8px;opacity:1}}@media(prefers-reduced-motion:reduce){.link-label{transition:none}}.links a[aria-disabled]{cursor:var(--cursor)}.formerly{font-size:13px;margin-left:3px}.tools{position:relative}.tools summary{display:flex;align-items:center;list-style:none;cursor:var(--cursor-pointer);color:var(--link);text-decoration:underline}.tools summary::-webkit-details-marker{display:none}.tools-menu{position:absolute;z-index:1;top:calc(100% - 1px);left:50%;transform:translate(-50%);width:132px;padding:3px;border:1px solid var(--edge);background:var(--page);text-align:left}.tools-menu a,.tools-menu .text-link{display:flex;align-items:center;width:100%;min-height:44px;padding:10px 12px}.tools-menu a:hover,.tools-menu button:hover{background:var(--hover)}.site-credit{display:flex;justify-content:center;align-items:center;flex-wrap:wrap;gap:4px 18px;margin:16px 0 0;color:var(--muted);font-size:13px;line-height:1.7}.site-credit a,.text-link{display:inline-flex;align-items:center;min-height:44px}.home .site-credit{--icon-pad: 8px;justify-content:flex-start;column-gap:6px;margin-top:14px}.home .tools-menu{z-index:3;left:0;right:auto;transform:none}.home .tools-menu{min-width:156px;width:max-content;margin-top:6px;padding:6px;border:1px solid var(--line);border-radius:12px;background:var(--page);box-shadow:0 10px 28px #0000001f,0 2px 6px #00000014;font-size:14px;letter-spacing:.01em}:root[data-theme=dark] .home .tools-menu{box-shadow:0 10px 28px #0008,0 2px 6px #0006}.home .tools[open]>.tools-menu{animation:menu-in .16s cubic-bezier(.22,.61,.36,1)}@keyframes menu-in{0%{opacity:0;transform:translateY(-4px)}}.home .tools-menu a,.home .tools-menu .text-link{min-height:40px;padding:9px 12px;border-radius:8px;color:var(--text);text-decoration:none}.home .tools-menu a:hover,.home .tools-menu button:hover{background:var(--hover)}.home .tools-menu a[aria-disabled]{color:var(--muted)}.home .link-label{text-decoration:none;letter-spacing:.01em}@media(prefers-reduced-motion:reduce){.home .tools[open]>.tools-menu{animation:none}}.home-below{--credit-gap: 22px;margin-top:calc(var(--credit-gap) + var(--menu-space, 0px));transition:margin-top .25s cubic-bezier(.22,.61,.36,1)}@media(prefers-reduced-motion:reduce){.home-below{transition:none}}.record{position:relative;width:min(100%,360px);height:80px}.turntable{position:relative;z-index:2;display:block;width:112px;height:112px;zoom:.714;padding:0;border:0;border-radius:22%;background:var(--hover);box-shadow:inset 0 0 0 1px var(--line),3px 0 8px #0003}.turntable:after{content:"";position:absolute;left:8px;top:16px;width:84px;height:84px;border-radius:50%;background:conic-gradient(from 35deg,#fff0 0 8%,#ffffff24 14%,#fff0 20% 58%,#ffffff1a 64%,#fff0 70%);pointer-events:none}.vinyl{position:absolute;left:8px;top:16px;display:grid;place-items:center;width:84px;height:84px;border-radius:50%;background:repeating-radial-gradient(circle,#161616 0 1.5px,#232323 1.5px 3px);box-shadow:0 2px 6px #0004}.vinyl:after{content:"";position:absolute;width:5px;height:5px;border-radius:50%;background:var(--hover)}.vinyl-label{display:block;width:36px;height:36px;border-radius:50%;object-fit:cover;background:#333}.tonearm{position:absolute;inset:0;z-index:1;width:100%;height:100%;pointer-events:none}.tonearm-base{fill:var(--muted)}.tonearm-arm{transform-box:view-box;transform-origin:101px 14px;transition:transform .7s cubic-bezier(.22,.61,.36,1)}.tonearm-arm path{fill:none;stroke:var(--muted);stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}.tonearm-arm rect{fill:var(--text)}.record.is-playing .tonearm-arm{transform:rotate(22deg)}.record-drawer{position:absolute;inset:0 0 0 40px;overflow:hidden;border-radius:0 12px 12px 0;transition:visibility 0s}.record-player{position:absolute;top:0;left:-32px;width:calc(100% + 32px);height:80px;border-radius:12px;background:var(--hover);transition:transform .42s cubic-bezier(.22,.61,.36,1)}.record-player iframe{display:block;border:0;border-radius:12px}.record.is-folded .record-player{transform:translate(-100%)}.record.is-folded .record-drawer{visibility:hidden;transition:visibility 0s linear .42s}@media(prefers-reduced-motion:reduce){.record-player,.record.is-folded .record-drawer{transition:none}}.home .site-credit>span{flex-basis:auto}.site-credit .link-icon{width:18px;height:18px}.text-link{padding:0;border:0;background:none;color:var(--link);text-decoration:underline}.donation{width:min(100% - 32px,760px);margin:0 auto 40px}.home .donation,.ip-page .donation{width:100%;margin:24px auto 0;text-align:left}.tips-dialog{width:min(100% - 32px,420px);max-height:min(100% - 32px,760px);padding:0;border:1px solid var(--edge);border-radius:14px;color:var(--text);background:var(--page);box-shadow:0 18px 48px #0004;overflow:auto;overscroll-behavior:contain}.tips-dialog::backdrop{background:#0006}.tips-dialog[open]{animation:tips-in .24s cubic-bezier(.22,.61,.36,1)}.tips-dialog[open]::backdrop{animation:backdrop-in .24s ease}.tips-dialog.is-closing{animation:tips-out .18s ease-in forwards}.tips-dialog.is-closing::backdrop{animation:backdrop-out .18s ease-in forwards}@keyframes tips-in{0%{opacity:0;transform:translateY(14px) scale(.97)}}@keyframes tips-out{to{opacity:0;transform:translateY(14px) scale(.97)}}@keyframes backdrop-in{0%{opacity:0}}@keyframes backdrop-out{to{opacity:0}}.tips-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 10px 6px 20px}.tips-head h2{flex:1 1 auto;min-width:0;margin:0;font-size:18px;font-weight:600}.tips-head .tips-currency{flex:none;margin:0;gap:0}.tips-head .tips-currency select{min-height:36px;padding:4px 8px;font-size:14px}@media(pointer:coarse){.tips-head .tips-currency select{min-height:44px;font-size:16px}}.tips-head h2 span{color:var(--muted);font-size:14px;font-weight:400}@media(max-width:360px){.tips-head h2 span{display:block;margin-top:2px}}.tips-close{display:grid;place-items:center;width:40px;height:40px;padding:0;border:0;border-radius:50%;background:none;color:var(--muted)}.tips-close:hover{background:var(--hover);color:var(--text)}.home .tips-dialog .donation{margin:0;padding:8px 20px 20px}.donation .status{text-align:center}.donation .refresh{display:block;margin:16px auto}.donation-currency{display:flex;align-items:center;justify-content:center;gap:12px;margin-bottom:20px;font-size:15px}.donation-currency select{min-height:44px;padding:6px 12px;border:1px solid var(--edge);border-radius:0;color:var(--text);background:var(--page);font-size:16px}#donate-status:empty,#checkout:empty{display:none}.ip-page{flex:1;padding:clamp(35px,10vh,90px) 24px 60px}.ip-content{width:min(100%,520px);margin:auto}.ip-top{display:flex;justify-content:space-between;align-items:center;font-size:15px}.ip-top .tools-menu{left:auto;right:0;transform:none}.back{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:8px 0;font-size:15px}.ip-content h1{margin:25px 0 27px;font-family:Times New Roman,serif;font-size:44px;font-weight:400}.ip-data{margin:0}.ip-data>div{display:grid;grid-template-columns:100px minmax(0,1fr);align-items:baseline;gap:16px;padding:18px 0;border-bottom:1px solid var(--line)}.ip-data>div:first-child{border-top:1px solid var(--line)}.ip-data dt{font-size:15px}.ip-data dd{margin:0;font-size:16px;line-height:1.5;overflow-wrap:anywhere}.ip-data .address{font-size:25px;font-variant-numeric:tabular-nums}.country-flag{vertical-align:-5px;margin-right:4px}.ip-actions{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:12px 18px;margin-top:19px;min-height:44px}.status{flex:1;min-width:150px;margin:0;color:var(--muted);font-size:15px;line-height:1.7}.status.error{color:var(--error)}.refresh{flex:none}.refresh:disabled{color:var(--muted)}.ip-note{margin:24px 0 0;color:var(--muted);font-size:13px;line-height:1.9}#ip-type-note:empty{display:none}@media(max-width:520px){.home{padding:clamp(48px,11svh,90px) max(16px,env(safe-area-inset-right)) 48px max(16px,env(safe-area-inset-left))}.links{margin-top:16px}.formerly{font-size:12px}.site-credit>span{flex-basis:100%}.ip-page{padding:30px max(20px,env(safe-area-inset-right)) 40px max(20px,env(safe-area-inset-left))}.ip-data>div{grid-template-columns:minmax(116px,36%) minmax(0,1fr);gap:12px}.ip-data .address{font-size:22px}}@media(max-height:480px)and (orientation:landscape){.home,.ip-page{padding-top:28px}.home{padding-bottom:16px}.avatar{width:180px;height:180px}}@media(max-width:720px){.hero{grid-template-columns:minmax(0,1fr);grid-template-areas:"avatar" "identity" "links"}.avatar{width:min(160px,46vw);height:min(160px,46vw);margin-bottom:24px}.home-below{--credit-gap: 10px}.home .links{flex-direction:column;align-items:flex-start}.social-links,.utility-links{display:flex;align-items:center;flex-wrap:nowrap;min-height:44px}.home .formerly{display:none}}@media(pointer:coarse){.home .site-credit{--icon-pad: 13px;column-gap:0}}.icon-link{-webkit-tap-highlight-color:transparent}@media(hover:none){.icon-link{transition:opacity .22s ease}.icon-link:active{opacity:.6;transition-duration:.06s}.home .icon-link.touch-selected,.home .tools:has(>.icon-link.touch-selected),.home .tools[open]{z-index:5}}html:has(.tips-dialog[open]){overflow:hidden}@media(max-width:520px){.tips-dialog{width:100%;max-width:100%;max-height:92dvh;margin:auto 0 0;border-width:1px 0 0;border-radius:18px 18px 0 0;padding-bottom:env(safe-area-inset-bottom)}.tips-dialog[open]{animation:sheet-up .28s cubic-bezier(.22,.61,.36,1)}.tips-dialog.is-closing{animation:sheet-down .22s ease-in forwards}.home .tips-dialog .donation{padding:8px 16px 20px}.tips-head{padding:12px 6px 4px 16px}}@keyframes sheet-up{0%{transform:translateY(100%)}to{transform:none}}@keyframes sheet-down{to{transform:translateY(100%)}}@media(prefers-reduced-motion:reduce){.tips-dialog[open],.tips-dialog[open]::backdrop,.tips-dialog.is-closing,.tips-dialog.is-closing::backdrop{animation:none}}.grape-page{flex:1;display:flex;padding:clamp(35px,8vh,80px) 24px 48px}.grape-content{width:min(100%,560px);margin:auto}.grape-content h1{margin:25px 0 20px;font-family:Times New Roman,serif;font-size:44px;font-weight:400}.grape-hud{display:flex;justify-content:space-between;align-items:baseline;flex-wrap:wrap;gap:8px 18px;margin-bottom:16px}.grape-score{margin:0;font-size:19px}.grape-score strong{font-variant-numeric:tabular-nums}.grape-hud .status{text-align:right}.grape-board{position:relative;box-shadow:0 10px 24px #20102a12}.grape-grid{display:grid;grid-template-columns:repeat(16,1fr);width:100%;aspect-ratio:1;border:1px solid var(--edge);background:var(--hover);touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;overscroll-behavior:contain}.grape-cell{position:relative;min-width:0;padding:0;border:1px solid var(--line);border-radius:0;background:transparent;color:var(--text);cursor:var(--cursor-pointer)}.grape-cell.grape{overflow:visible;z-index:1;border-color:transparent;background:linear-gradient(135deg,color-mix(in srgb,var(--grape-color, #6f2da8) 10%,transparent),transparent)}.grape-cell.grape:before{position:absolute;inset:4%;content:"";border-radius:44% 44% 50% 50%;background:radial-gradient(circle at 38% 28%,#ffffffa8 0 8%,transparent 10%),radial-gradient(circle at 68% 28%,#ffffff7a 0 7%,transparent 9%),radial-gradient(circle at 28% 55%,#ffffff69 0 6%,transparent 8%),radial-gradient(circle at 50% 50%,var(--grape-color, #6f2da8) 0 24%,transparent 26%),radial-gradient(circle at 29% 70%,var(--grape-color, #6f2da8) 0 22%,transparent 24%),radial-gradient(circle at 72% 70%,var(--grape-color, #6f2da8) 0 22%,transparent 24%),radial-gradient(circle at 50% 88%,var(--grape-color, #6f2da8) 0 20%,transparent 22%);filter:drop-shadow(0 1px 1px #210c3566)}.grape-cell.grape:after{position:absolute;top:8%;left:45%;width:19%;height:24%;content:"";border-radius:90% 0;background:#4a812d;transform:rotate(-24deg)}.grape-overlay{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:18px;padding:24px;background:color-mix(in srgb,var(--page) 88%,transparent);text-align:center}.grape-message{margin:0;font-size:16px;line-height:1.8}.difficulty-picker{display:flex;align-items:center;justify-content:center;gap:10px;margin:0;padding:0;border:0}.difficulty-picker legend{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.difficulty-picker label{display:flex;align-items:center;gap:5px;min-height:36px;cursor:var(--cursor-pointer)}.difficulty-picker input{width:16px;height:16px;margin:0;accent-color:#6f2da8}.grape-page .donation{width:100%;margin:24px auto 0;text-align:left}.qr-page{flex:1;padding:clamp(35px,10vh,90px) 24px 60px}.qr-content{width:min(100%,560px);margin:auto}.qr-content h1{margin:25px 0 27px;font-family:Times New Roman,serif;font-size:44px;font-weight:400}.qr-form{display:flex;flex-direction:column;gap:20px;margin:0 0 28px}.qr-field{display:flex;flex-direction:column;gap:7px;font-size:15px}.qr-field textarea,.qr-field input[type=number],.qr-field select{width:100%;min-width:0;max-width:100%;min-height:44px;padding:9px 11px;border:1px solid var(--edge);border-radius:0;color:var(--text);background:var(--page);font-size:16px}.qr-field textarea{resize:vertical;line-height:1.6;overflow-wrap:anywhere}.qr-field select:disabled{color:var(--muted)}.qr-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;align-items:start}.qr-more{font-size:14px}.qr-more summary{display:flex;align-items:center;min-height:44px;color:var(--link);text-decoration:underline;cursor:var(--cursor-pointer);list-style:none}.qr-more summary::-webkit-details-marker{display:none}.qr-more-body{display:flex;flex-direction:column;gap:18px;padding:4px 0 0}.qr-logo-row{display:flex;align-items:center;flex-wrap:wrap;gap:12px}.qr-logo-row input[type=file]{flex:1;min-width:190px;min-height:44px;padding:6px 0;font-size:14px;color:var(--text)}.qr-logo-row input[type=file]::file-selector-button{min-height:44px;margin-right:10px;padding:6px 14px;border:1px outset var(--edge);border-radius:0;background:var(--button);color:var(--text);font:inherit;cursor:var(--cursor-pointer)}.qr-hint{margin:0;color:var(--muted);font-size:13px;line-height:1.7}#qr-scan-tip{text-align:center}.qr-result{display:flex;flex-direction:column;align-items:center;gap:14px}#qr-canvas{display:block;width:100%;height:auto;border:1px solid var(--line);background:#fff;image-rendering:pixelated}.qr-result .status{flex:none;text-align:center}.qr-summary{margin:0;color:var(--muted);font-size:13px;line-height:1.7;text-align:center}.qr-summary:empty{display:none}.qr-actions{display:flex;justify-content:center;flex-wrap:wrap;gap:12px}.qr-page .donation{width:100%;margin:24px auto 0;text-align:left}.qr-page .ip-note{margin-top:26px}@media(max-width:520px){.grape-page{padding:24px max(12px,env(safe-area-inset-right)) 36px max(12px,env(safe-area-inset-left))}.grape-content{width:100%}.grape-content h1{margin:16px 0 14px;font-size:clamp(34px,10vw,44px)}.grape-hud{margin-bottom:12px}.grape-score{font-size:17px}.grape-hud .status{min-width:0;font-size:13px}.grape-overlay{gap:14px;padding:18px}.grape-message{font-size:14px;line-height:1.6}.difficulty-picker{gap:8px;font-size:14px}}@media(max-width:520px){.qr-page{padding:30px max(20px,env(safe-area-inset-right)) 40px max(20px,env(safe-area-inset-left))}.qr-content h1{margin:16px 0 20px;font-size:clamp(34px,10vw,44px)}.qr-options{grid-template-columns:minmax(0,1fr);gap:16px}.qr-actions .refresh{flex:1 1 auto}}.share-page{flex:1;padding:clamp(35px,10vh,90px) 24px 60px}.share-content{width:min(100%,560px);margin:auto}.share-content h1{margin:25px 0 16px;font-family:Times New Roman,serif;font-size:44px;font-weight:400}.share-heading{margin:28px 0 12px;font-size:15px;font-weight:700}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.share-list{margin:0;padding:0;list-style:none}.radar{margin:8px 0 4px}.radar-stage{position:relative;width:100%;aspect-ratio:400 / 250;min-height:230px}.radar-arcs{position:absolute;inset:0;width:100%;height:100%}.radar-arcs path{fill:none;stroke:var(--radar, #09f);stroke-width:15;stroke-linecap:round;opacity:.22}.radar-searching .radar-arcs path{animation:radar-pulse 2.4s ease-in-out infinite}.radar-searching .radar-arcs path:nth-child(2){animation-delay:.2s}.radar-searching .radar-arcs path:nth-child(3){animation-delay:.4s}.radar-searching .radar-arcs path:nth-child(4){animation-delay:.6s}@keyframes radar-pulse{0%,to{opacity:.16}50%{opacity:.5}}@media(prefers-reduced-motion:reduce){.radar-searching .radar-arcs path{animation:none;opacity:.3}}.radar-peers{position:absolute;inset:0;margin:0;padding:0;list-style:none}.radar-peer{position:absolute;left:var(--x);top:var(--y);transform:translate(-50%,-50%)}.radar-peer-file{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.radar-peer-send{display:flex;flex-direction:column;align-items:center;gap:2px;width:74px;padding:0;border:0;background:none;color:var(--text);font-size:11px;line-height:1.3;text-align:center;cursor:var(--cursor-pointer)}.radar-peer-icon{display:grid;place-items:center;width:44px;height:44px;border:1px solid var(--edge);border-radius:50%;background:var(--page);color:var(--radar, #09f)}.radar-peer-send:hover .radar-peer-icon{background:var(--hover);border-color:var(--radar, #09f)}.radar-peer-send:active .radar-peer-icon{background:var(--pressed)}.radar-peer-file:focus-visible+.radar-peer-send .radar-peer-icon{outline:2px solid var(--link);outline-offset:3px}.radar-peer-name{display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-shadow:0 0 3px var(--page),0 0 3px var(--page),0 0 3px var(--page)}.radar-peer-code{color:var(--muted);font-family:Courier New,monospace;font-size:10px;letter-spacing:1px;text-shadow:0 0 3px var(--page),0 0 3px var(--page)}.radar-note{margin:4px 0 0;color:var(--muted);font-size:14px;line-height:1.7;text-align:center}.radar-note.error{color:var(--error)}.share-about{margin-top:26px;font-size:14px}.share-about summary{display:flex;align-items:center;min-height:44px;color:var(--link);text-decoration:underline;cursor:var(--cursor-pointer);list-style:none}.share-about summary::-webkit-details-marker{display:none}.share-about-body{display:flex;flex-direction:column;gap:10px;padding:4px 0 0}.share-about input{width:100%;min-width:0;min-height:44px;padding:9px 11px;border:1px solid var(--edge);border-radius:0;color:var(--text);background:var(--page);font-size:16px}.share-about strong{font-family:Courier New,monospace;letter-spacing:2px}.typing-page{flex:1;padding:clamp(35px,10vh,90px) 24px 60px}.typing-content{width:min(100%,660px);margin:auto}.typing-content h1{margin:25px 0 20px;font-family:Times New Roman,serif;font-size:44px;font-weight:400}.typing-bar{display:flex;align-items:center;flex-wrap:wrap;gap:12px 16px;margin-bottom:18px}.typing-picker{display:flex;align-items:center;flex-wrap:wrap;gap:12px;flex:1 1 260px}.typing-toggles{display:flex;align-items:center;flex-wrap:wrap;gap:8px}.typing-toggle{display:inline-flex;align-items:center;gap:6px;min-height:44px;padding:7px 14px;border:1px solid var(--edge);border-radius:0;background:var(--page);color:var(--text);font-size:14px;white-space:nowrap}.typing-toggle:hover{background:var(--hover)}.typing-toggle[aria-pressed=false]{color:var(--muted)}.typing-langs{display:flex;gap:8px}.typing-lang{min-height:44px;padding:7px 16px;border:1px solid var(--edge);border-radius:0;background:var(--page);color:var(--text);font-size:15px}.typing-lang:hover{background:var(--hover)}.typing-lang[aria-selected=true]{background:var(--text);color:var(--page);border-color:var(--text)}.typing-choose{flex:1;min-width:190px}.typing-choose select{width:100%;min-width:0;min-height:44px;padding:9px 11px;border:1px solid var(--edge);border-radius:0;color:var(--text);background:var(--page);font-size:16px}.typing-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:0 0 20px}.typing-stats>div{padding:12px 14px;border:1px solid var(--line)}.typing-stats dt{margin:0 0 4px;color:var(--muted);font-size:13px}.typing-stats dd{margin:0;font-size:24px;font-variant-numeric:tabular-nums}.typing-unit{color:var(--muted);font-size:13px}.typing-passage{padding:20px 22px;border:1px solid var(--edge);background:var(--hover);font-size:21px;line-height:2.1;word-break:keep-all;overflow-wrap:anywhere;user-select:none}.typing-passage .ch{position:relative;color:var(--muted);border-radius:2px;transition:color 80ms ease-out}.typing-passage .ch.correct{color:var(--text)}.typing-passage .ch.composing{color:var(--text);background:var(--line)}.typing-passage .ch.composing:after{content:"";position:absolute;left:0;right:0;bottom:0;height:3px;background:var(--link);transform:scaleX(var(--fill, 0));transform-origin:left;transition:transform 60ms ease-out}.typing-passage .ch.wrong{color:var(--page);background:var(--error)}.typing-passage .ch.cursor{box-shadow:inset 0 -2px 0 var(--link);color:var(--text)}@media(prefers-reduced-motion:reduce){.typing-passage .ch,.typing-passage .ch.composing:after{transition:none}}.typing-capture{position:absolute;width:1px;height:1px;padding:0;border:0;opacity:0;overflow:hidden;resize:none;left:50%;pointer-events:none}.typing-stage{display:flex;align-items:stretch;gap:18px}.typing-main{flex:1;min-width:0;position:relative}.typing-passage{cursor:text}.typing-passage:focus-visible{outline:2px solid var(--link);outline-offset:3px}.typing-main .qr-hint{margin-top:8px}.game-scene{flex:0 0 116px;display:flex;flex-direction:column;gap:8px}.game-cliff{position:relative;flex:1;min-height:240px;overflow:hidden;border:1px solid var(--edge);background:linear-gradient(180deg,var(--hover) 0%,var(--page) 62%,#6b4a3a 62%,#4a3228 100%)}.game-stickman{position:absolute;left:50%;bottom:38%;transform:translate(-50%);color:var(--text);transition:transform .25s ease}.game-stickman.game-safe{color:#2e7d32}.game-stickman.game-gone{opacity:.25;transform:translate(-50%) translateY(6px)}.game-lava{position:absolute;left:0;right:0;bottom:0;height:calc(var(--level, 0%) * .38 + 0%);background:linear-gradient(180deg,#ff9d2f,#e5361b 60%,#a3170a);transition:height .2s linear}.game-lava-top{position:absolute;top:-4px;left:0;right:0;height:8px;background:#ffce4f;filter:blur(2px)}.game-danger .game-cliff{box-shadow:inset 0 0 0 2px #e5361b}.game-readout{margin:0;color:var(--muted);font-size:12px;line-height:1.5;text-align:center}.game-danger .game-readout{color:var(--error)}@media(prefers-reduced-motion:reduce){.game-lava,.game-stickman{transition:none}}.typing-setup{width:min(100% - 32px,400px);padding:22px;border:1px solid var(--edge);color:var(--text);background:var(--page)}.typing-setup::backdrop{background:#0006}.typing-setup h2{margin:0 0 10px;font-size:20px}.setup-group{display:flex;flex-wrap:wrap;gap:8px 16px;margin:16px 0 0;padding:0;border:0}.setup-group legend{padding:0;color:var(--muted);font-size:13px}.setup-group label{display:inline-flex;align-items:center;gap:8px;min-width:44px;min-height:44px;padding:0 12px 0 10px;border:1px solid var(--line);font-size:15px;cursor:var(--cursor-pointer)}.setup-group label:hover{background:var(--hover)}.setup-group label:has(input:checked){border-color:var(--text);background:var(--hover)}.setup-group label:has(input:focus-visible){outline:2px solid var(--link);outline-offset:2px}.setup-group input{width:18px;height:18px;margin:0}.typing-actions{display:flex;align-items:center;flex-wrap:wrap;gap:12px 18px;margin-top:16px}.typing-page .donation{width:100%;margin:24px auto 0;text-align:left}.typing-result{width:min(100% - 32px,560px);padding:22px;border:1px solid var(--edge);color:var(--text);background:var(--page)}.typing-result::backdrop{background:#0006}.typing-result h2{margin:0 0 14px;font-size:20px}#result-card{display:block;width:100%;height:auto;border:1px solid var(--line)}.typing-result-actions{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:10px;margin-top:16px}#result-status:empty{display:none}@media(max-width:520px){.typing-page{padding:30px max(20px,env(safe-area-inset-right)) 40px max(20px,env(safe-area-inset-left))}.typing-content h1{margin:16px 0;font-size:clamp(34px,10vw,44px)}.typing-stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.typing-stats>div{padding:10px 12px}.typing-stats dd{font-size:20px}.typing-passage{padding:16px;font-size:19px;line-height:2}.typing-choose{flex:1 1 100%}.typing-toggles{width:100%}.typing-toggle{flex:1;justify-content:center}.typing-result-actions .refresh{flex:1 1 auto;justify-content:center}.typing-stage{flex-direction:column;gap:12px}.game-scene{flex:none;flex-direction:row;align-items:center;gap:12px}.game-cliff{flex:1;min-height:96px}.game-stickman svg{width:28px;height:44px}.game-readout{flex:0 0 76px;text-align:left}}.share-transfers:not(:has(.share-transfer)){display:none}.share-transfer{padding:14px 0;border-bottom:1px solid var(--line)}.share-transfer:first-child{border-top:1px solid var(--line)}.share-transfer-name{margin:0 0 4px;font-size:16px;overflow-wrap:anywhere}.share-transfer-actions:empty{display:none}.share-transfer-actions{margin-top:8px}.share-download{display:inline-flex;align-items:center;min-height:44px;font-size:15px}.share-prompt{width:min(100% - 32px,380px);padding:24px;border:1px solid var(--edge);color:var(--text);background:var(--page)}.share-prompt::backdrop{background:#0005}.share-prompt h2{margin:0 0 12px;font-size:19px}.share-prompt p{margin:0 0 10px;font-size:15px;line-height:1.6;overflow-wrap:anywhere}.share-prompt-actions{display:flex;justify-content:flex-end;gap:12px;margin-top:20px}.share-page .donation{width:100%;margin:24px auto 0;text-align:left}.share-page .ip-note{margin-top:26px}@media(max-width:520px){.share-page{padding:30px max(20px,env(safe-area-inset-right)) 40px max(20px,env(safe-area-inset-left))}.share-content h1{margin:16px 0 14px;font-size:clamp(34px,10vw,44px)}.radar-peer-send{width:64px;font-size:10px}.radar-peer-icon{width:40px;height:40px}.radar-arcs path{stroke-width:13}.share-prompt-actions .refresh{flex:1;justify-content:center}}