*,:before,:after,::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border:0 solid #e5e7eb}:before,:after{--tw-content:""}html,:host{-webkit-text-size-adjust:100%;tab-size:4;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent;font-family:Inter Tight,system-ui,-apple-system,BlinkMacSystemFont,sans-serif;line-height:1.5}body{line-height:inherit;margin:0}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-feature-settings:normal;font-variation-settings:normal;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-feature-settings:inherit;font-variation-settings:inherit;font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:#0000;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{margin:0;padding:0;list-style:none}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder{opacity:1;color:#9ca3af}textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}:root{--page:#fdfdfd;--panel:#fdfdfd;--ink:#111112;--muted:#77777c;--line:#e4e4e6;--soft:#efefef;--shadow:0 1px 2px #0000000a, 0 6px 20px -8px #00000024;--sans:"Geist", system-ui, sans-serif;--mono:"Geist Mono", ui-monospace, monospace;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-theme=dark]{--page:#131315;--panel:#131315;--ink:#f4f4f5;--muted:#8d8d94;--line:#26262a;--soft:#202024;--shadow:0 1px 2px #00000080, 0 8px 24px -8px #000000b3;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html{scrollbar-gutter:stable}*{scrollbar-width:thin;scrollbar-color:color-mix(in srgb, var(--ink) 28%, transparent) transparent}@supports not (scrollbar-width:thin){::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-thumb{background:color-mix(in srgb, var(--ink) 28%, transparent);border-radius:999px}}body{background:var(--page);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased;margin:0;padding:0 20px;font-size:16px;line-height:1.5;transition:background .2s,color .2s;overflow-x:clip}a{color:inherit}button{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--ink);outline-offset:3px;border-radius:8px}.shell{flex-direction:column;max-width:1120px;min-height:100vh;margin:0 auto;padding:0;display:flex}main{flex:1}.topbar{justify-content:space-between;align-items:center;padding:28px 0 8px;display:flex}.wordmark{letter-spacing:-.04em;font-size:22px;font-weight:600;text-decoration:none}.wordmark span{color:#2563ff}.topnav{align-items:center;gap:6px;font-size:14px;display:flex}.topnav a{color:var(--muted);border-radius:999px;padding:6px 12px;text-decoration:none;transition:all .15s}.topnav a:hover{color:var(--ink)}.topnav a[aria-current=page]{color:var(--ink);background:var(--soft)}.icon-btn{border:1px solid var(--line);background:var(--panel);cursor:pointer;border-radius:50%;place-items:center;width:34px;height:34px;margin-left:6px;display:grid}.hero{text-align:center;isolation:isolate;flex-direction:column;justify-content:center;align-items:center;min-height:calc(100vh - 80px);padding:24px 0 64px;display:flex;position:relative}.eyebrow{font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:0 0 20px;font-size:12px}h1{letter-spacing:-.045em;margin:0;font-size:clamp(44px,9vw,112px);font-weight:600;line-height:1}h1 em{color:var(--muted);font-style:normal}.lede{max-width:480px;color:var(--muted);margin:24px auto 0;font-size:17px}.app-icon{--top:hsl(var(--hue) 85% 62%);--bottom:hsl(var(--hue) 80% 42%);color:#fff;background:linear-gradient(160deg, var(--top), var(--bottom));box-shadow:0 1px 0 #ffffff59 inset, 0 10px 18px -6px hsl(var(--hue) 70% 30% / .55);border-radius:22%;place-items:center;transition:transform .2s cubic-bezier(.2,.8,.2,1);display:grid}.hero-bg{z-index:-1;pointer-events:none;position:absolute;inset:-80px 0 0}.hero-bg:before{content:"";filter:blur(50px);background:radial-gradient(40% 45% at 28% 38%,#4790f559,#0000 70%),radial-gradient(38% 42% at 72% 34%,#cc5af24d,#0000 70%),radial-gradient(36% 40% at 55% 72%,#fa7f3847,#0000 70%);animation:18s ease-in-out infinite alternate drift;position:absolute;inset:0}.hero-bg:after{content:"";background-image:radial-gradient(var(--line) 1.2px, transparent 1.2px);background-size:26px 26px;position:absolute;inset:0;-webkit-mask-image:radial-gradient(60% 55% at 50% 45%,#000,#0000);mask-image:radial-gradient(60% 55% at 50% 45%,#000,#0000)}:root[data-theme=dark] .hero-bg:before{opacity:.55}@keyframes drift{to{transform:translateY(24px)scale(1.08)}}.badge{border:1px solid var(--line);background:color-mix(in srgb, var(--panel) 75%, transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);box-shadow:var(--shadow);border-radius:999px;align-items:center;gap:10px;margin:0 0 28px;padding:7px 16px 7px 12px;font-size:14px;font-weight:500;display:inline-flex}.pulse{background:#22c55e;border-radius:50%;width:8px;height:8px;position:relative}.pulse:after{content:"";background:#22c55e;border-radius:50%;animation:1.8s ease-out infinite ping;position:absolute;inset:0}@keyframes ping{to{opacity:0;transform:scale(3.2)}}.cta-row{flex-wrap:wrap;justify-content:center;gap:12px;margin-top:36px;display:flex}.cta-row .cta{margin-top:0}.profile{text-align:left;align-items:center;gap:18px;margin:0 0 28px;display:flex}.profile-ring{background:linear-gradient(145deg,#4cc2ff,#2563ff);border-radius:50%;width:84px;height:84px;padding:4px;display:block;box-shadow:0 14px 32px -10px #2563ff8c}.profile-ring img{-o-object-fit:cover;object-fit:cover;border:3px solid var(--panel);border-radius:50%;width:100%;height:100%;display:block}.profile-name{letter-spacing:-.03em;margin:0;font-size:26px;font-weight:600;line-height:1.1}.profile-role{color:var(--muted);margin:4px 0 0;font-size:16px}.cta{background:var(--ink);color:var(--panel);border-radius:999px;align-items:center;gap:8px;margin-top:0;padding:14px 24px;font-size:15px;font-weight:500;text-decoration:none;transition:transform .2s;display:inline-flex}.cta:hover{transform:translateY(-2px)}.cta-ghost{color:var(--ink);border:1px solid color-mix(in srgb, var(--ink) 35%, transparent);background:0 0}.cta-ghost:hover{background:var(--soft)}.cta svg{transition:transform .2s}.cta:hover svg{transform:translateY(2px)}.projects{border-top:1px solid var(--line);padding-top:72px;scroll-margin-top:16px}.section-head{justify-content:center;margin-bottom:28px;display:flex}.kind-switch{border:1px solid var(--line);background:var(--soft);cursor:pointer;font:inherit;-webkit-tap-highlight-color:transparent;border-radius:999px;grid-auto-columns:1fr;grid-auto-flow:column;padding:5px;display:inline-grid;position:relative}.kind-label{z-index:1;text-align:center;letter-spacing:-.03em;color:var(--muted);padding:9px 26px;font-size:20px;font-weight:600;transition:color .3s;position:relative}.kind-label.on{color:var(--ink)}.kind-bubble{background:var(--panel);width:calc(50% - 5px);box-shadow:var(--shadow), 0 0 0 1px color-mix(in srgb, var(--ink) 8%, transparent);border-radius:999px;transition:transform .5s cubic-bezier(.2,.9,.25,1.2);position:absolute;top:5px;bottom:5px;left:5px}.kind-switch[data-kind=website] .kind-bubble{transform:translate(100%)}@property --kind-angle{syntax:"<angle>";inherits:false;initial-value:0deg}.kind-bubble:before{content:"";border-radius:inherit;background:conic-gradient(from var(--kind-angle), transparent 0 55%, color-mix(in srgb, var(--ink) 55%, transparent) 80%, transparent 100%);-webkit-mask-composite:xor;-webkit-mask-composite:xor;opacity:0;pointer-events:none;padding:1.5px;transition:opacity .3s;position:absolute;inset:0;-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor,source-over;mask:linear-gradient(#000 0 0) content-box exclude,linear-gradient(#000 0 0)}.kind-switch:hover .kind-bubble:before,.kind-switch:focus-visible .kind-bubble:before{opacity:1;animation:1.6s linear infinite kind-spin}.kind-switch:hover .kind-bubble{box-shadow:var(--shadow), 0 0 0 1px color-mix(in srgb, var(--ink) 16%, transparent)}@keyframes kind-spin{to{--kind-angle:360deg}}.section-title{text-align:center;letter-spacing:-.04em;margin:0 0 28px;font-size:28px;font-weight:600}.controls{flex-direction:column;align-items:center;gap:20px;margin:8px auto 0;display:flex}.search{border:1px solid var(--line);background:var(--panel);width:min(520px,100%);height:56px;color:var(--muted);box-shadow:var(--shadow);border-radius:18px;align-items:center;gap:12px;padding:0 18px;transition:border-color .15s;display:flex}.search:focus-within{border-color:var(--muted)}.search input{min-width:0;color:var(--ink);font:inherit;background:0 0;border:0;outline:0;flex:1;font-size:17px}.search input::placeholder{color:var(--muted)}kbd{font-family:var(--mono);border:1px solid var(--line);border-radius:6px;padding:2px 8px;font-size:11px}.chips{flex-wrap:wrap;justify-content:center;gap:4px;display:flex}.chip{color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:10px;padding:8px 16px;font-size:15px;transition:all .15s}.chip:hover{color:var(--ink)}.chip[aria-pressed=true]{background:var(--soft);color:var(--ink)}.grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:40px 16px;margin:0;padding:40px 0 72px;list-style:none;display:grid}.app{text-align:center;flex-direction:column;align-items:center;gap:4px;text-decoration:none;display:flex}.app-icon.has-image,.mini img{background:var(--soft)}.app-icon.has-image{box-shadow:0 10px 18px -6px hsl(var(--hue) 70% 30% / .55)}.app-icon.has-image:after{content:"";border-radius:inherit;pointer-events:none;background:linear-gradient(160deg,#fff3,#0000 45%);position:absolute;inset:0;box-shadow:inset 0 1px #ffffff59,inset 0 0 0 1px #ffffff14}.app-icon .edit-badge,.app-icon .hidden-badge{z-index:1}.app-icon.has-image img{border-radius:inherit}.app-icon img{-o-object-fit:cover;object-fit:cover;width:100%;height:100%;display:block;position:absolute;inset:0}.mini{overflow:hidden}.mini img{-o-object-fit:cover;object-fit:cover;width:100%;height:100%;display:block}.image-field{flex-wrap:wrap;align-items:center;gap:10px;font-weight:400;display:flex}.app-icon{width:84px;height:84px;margin-bottom:10px;position:relative}.app:hover .app-icon,.app:focus-visible .app-icon{transform:translateY(-5px)scale(1.05)}.app-name{letter-spacing:-.01em;font-size:16px;font-weight:500}.app-cat{color:var(--muted);font-size:13px}.skeleton{pointer-events:none}.skeleton .app-icon{background:var(--soft);box-shadow:none;animation:1.4s ease-in-out infinite pulse}.sk-line{background:var(--soft);border-radius:6px;width:70px;height:12px;animation:1.4s ease-in-out infinite pulse}.sk-line.short{width:48px;height:10px}@keyframes pulse{50%{opacity:.5}}.empty{text-align:center;color:var(--muted);padding:60px 0 100px}.doc{max-width:720px;margin:0 auto;padding:40px 0 88px}.doc h1{font-size:clamp(36px,6vw,56px)}.doc .updated{font-family:var(--mono);color:var(--muted);margin:14px 0 36px;font-size:12px}.doc p,.doc li{color:var(--muted);font-size:16px}.doc strong{color:var(--ink);font-weight:600}.doc ul{padding-left:20px}.doc li{margin-bottom:8px}.doc a{color:var(--ink);text-underline-offset:3px}.doc section{border-top:1px solid var(--line);margin-top:40px;padding-top:26px}.doc h2{letter-spacing:-.03em;align-items:baseline;gap:14px;margin:0 0 12px;font-size:22px;font-weight:600;display:flex}.doc h2 span{font-family:var(--mono);color:var(--muted);font-size:12px;font-weight:400}.admin{padding:48px 0 88px}.admin-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:24px;margin-bottom:8px;display:flex}.admin h1{margin-bottom:8px;font-size:clamp(34px,5vw,48px)}.admin .eyebrow{margin-bottom:12px}.admin-sub{color:var(--muted);margin:0;font-size:15px}.admin-actions{flex-wrap:wrap;gap:10px;display:flex}.admin-grid{padding-top:48px}.btn{border:1px solid var(--ink);background:var(--ink);color:var(--panel);cursor:pointer;border-radius:999px;align-items:center;gap:8px;padding:11px 20px;font-size:14px;font-weight:500;text-decoration:none;transition:transform .15s,background .15s,opacity .15s;display:inline-flex}.btn:hover:not(:disabled){transform:translateY(-1px)}.btn:disabled{opacity:.55;cursor:default}.spinner{border:2px solid;border-right-color:#0000;border-radius:50%;width:15px;height:15px;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.btn-ghost{color:var(--ink);border-color:var(--line);background:0 0}.btn-ghost:hover:not(:disabled){background:var(--soft)}.btn-danger{color:#dc2626;border-color:color-mix(in srgb, #dc2626 35%, var(--line));background:0 0}.tile-btn{cursor:grab;width:100%;font:inherit;color:inherit;background:0 0;border:0;padding:0}.tile-btn:active{cursor:grabbing}.edit-badge{background:var(--panel);width:26px;height:26px;color:var(--ink);border:1px solid var(--line);box-shadow:var(--shadow);opacity:0;border-radius:50%;place-items:center;transition:all .2s;display:grid;position:absolute;top:-6px;right:-6px;transform:scale(.7)}.app-icon{position:relative}.tile-btn:hover .edit-badge,.tile-btn:focus-visible .edit-badge{opacity:1;transform:scale(1)}.tile-btn:not(.arranging){cursor:pointer}.tile-btn.arranging{cursor:grab;animation:.5s ease-in-out infinite alternate wiggle}.tile-btn.arranging .edit-badge{display:none}.admin-grid li{flex-direction:column;align-items:center;gap:10px;display:flex}.arrange-bar{border:1px solid var(--line);background:var(--panel);box-shadow:var(--shadow);border-radius:999px;align-items:center;gap:4px;padding:3px;display:flex}.arrange-bar span{text-align:center;min-width:20px;font-family:var(--mono);color:var(--muted);font-size:12px}.arrange-bar button{width:28px;height:28px;color:var(--ink);cursor:pointer;background:0 0;border:0;border-radius:50%;place-items:center;display:grid}.arrange-bar button:hover:not(:disabled){background:var(--soft)}.arrange-bar button:disabled{opacity:.3;cursor:default}.admin-grid li{transition:opacity .2s,scale .2s}.admin-grid li.dragging{opacity:.45;scale:.94}.admin-grid li.dragging .tile-btn{animation:none}@keyframes wiggle{0%{transform:rotate(-1.2deg)}to{transform:rotate(1.2deg)}}.add-tile{cursor:pointer}.add-icon{color:var(--muted);border:2px dashed var(--line);transition:all .2s;box-shadow:none!important;background:0 0!important}.add-tile:hover .add-icon{color:var(--ink);border-color:var(--muted);transform:translateY(-5px)}.tile-btn.is-hidden .app-icon,.tile-btn.is-hidden .app-name,.tile-btn.is-hidden .app-cat{opacity:.45}.tile-btn.is-hidden .app-icon{filter:grayscale(.8)}.hidden-badge{background:var(--ink);width:26px;height:26px;color:var(--panel);filter:none;border-radius:50%;place-items:center;display:grid;position:absolute;top:-6px;left:-6px}.admin-section{margin-top:40px}.admin-section .admin-grid{padding-top:28px;padding-bottom:8px}.hidden-section{border-top:1px solid var(--line);padding-top:32px}.section-label{letter-spacing:-.03em;align-items:center;gap:8px;margin:0;font-size:18px;font-weight:600;display:flex}.section-label span{color:var(--muted);letter-spacing:0;font-size:13px;font-weight:400}.hidden-section .admin-grid{padding-top:32px;padding-bottom:0}.sheet-wrap{z-index:50;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.sheet-backdrop{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#00000059;animation:.25s both fade;position:absolute;inset:0}.sheet{--hue:215;background:var(--panel);border:1px solid var(--line);border-radius:28px;flex-direction:column;width:min(560px,100%);max-height:min(860px,100%);animation:.3s cubic-bezier(.2,.8,.2,1) both pop;display:flex;position:relative;overflow:hidden;box-shadow:0 40px 100px -20px #00000073}.sheet-top{justify-content:space-between;align-items:center;padding:22px 28px 0;display:flex}.sheet-top h2{letter-spacing:-.03em;margin:0;font-size:22px;font-weight:600}.sheet-top .icon-btn{margin:0}.sheet-body{overscroll-behavior:contain;flex-direction:column;flex:1;gap:20px;min-height:0;padding:24px 28px;display:flex;overflow-y:auto}.sheet-foot{border-top:1px solid var(--line);align-items:center;gap:10px;padding:16px 28px;display:flex}.spacer{flex:1}.sheet label,.sheet .field{flex-direction:column;gap:8px;font-size:13px;font-weight:500;display:flex}.hint{color:var(--muted);font-weight:400}.switch-row{border:1px solid var(--line);cursor:pointer;border-radius:16px;justify-content:space-between;align-items:center;padding:14px 16px;flex-direction:row!important;gap:16px!important}.switch-row small{margin-top:2px;display:block}.switch{appearance:none;cursor:pointer;flex:none;width:44px;height:26px;transition:background .2s;position:relative;background:var(--line)!important;border:0!important;border-radius:999px!important;padding:0!important}.switch:after{content:"";background:#fff;border-radius:50%;width:20px;height:20px;transition:transform .2s cubic-bezier(.2,.8,.2,1);position:absolute;top:3px;left:3px;box-shadow:0 1px 3px #0000004d}.switch:checked{background:#22c55e!important}.switch:checked:after{transform:translate(18px)}.sheet input:not([type=range]):not([type=file]),.sheet textarea{border:1px solid var(--line);background:var(--panel);color:var(--ink);font:inherit;resize:vertical;border-radius:12px;outline:0;padding:12px 14px;font-size:15px;transition:border-color .15s}.sheet input:focus,.sheet textarea:focus{border-color:var(--muted)}.preview{background:var(--soft);border-radius:20px;align-items:center;gap:18px;padding:18px;display:flex}.preview .app-icon{flex:none;width:72px;height:72px;margin:0}.preview>div{flex-direction:column;min-width:0;display:flex}.chips-left{justify-content:flex-start}.chips-left .chip{border:1px solid var(--line);padding:6px 12px;font-size:13px}.image-field{gap:10px;display:flex}.upload{cursor:pointer}.hue{appearance:none;background:linear-gradient(90deg,#ee2b2b,#eeee2b,#13ec13,#13ecec,#4242f0,#ee2bee,#ee2b2b);border-radius:999px;height:12px}.hue::-webkit-slider-thumb{appearance:none;border:3px solid hsl(var(--hue) 80% 50%);width:22px;height:22px;box-shadow:var(--shadow);cursor:pointer;background:#fff;border-radius:50%}.hue::-moz-range-thumb{border:3px solid hsl(var(--hue) 80% 50%);cursor:pointer;background:#fff;border-radius:50%;width:18px;height:18px}.icon-picker{grid-template-columns:repeat(auto-fill,minmax(40px,1fr));gap:6px;display:grid}.icon-picker button{border:1px solid var(--line);height:40px;color:var(--ink);cursor:pointer;background:0 0;border-radius:10px;place-items:center;transition:all .15s;display:grid}.icon-picker button:hover{background:var(--soft)}.icon-picker button[aria-pressed=true]{background:var(--ink);color:var(--panel);border-color:var(--ink)}.gallery{grid-template-columns:repeat(auto-fill,minmax(76px,1fr));gap:12px;display:grid}.thumb{aspect-ratio:1;border-radius:20%;position:relative}.thumb-img{border-radius:inherit;background:var(--soft);cursor:pointer;border:2px solid #0000;width:100%;height:100%;padding:0;transition:transform .15s,border-color .15s;display:block;overflow:hidden}.thumb-img:hover{transform:scale(1.04)}.thumb.selected .thumb-img{border-color:#22c55e}.thumb img{-o-object-fit:cover;object-fit:cover;width:100%;height:100%;display:block}.thumb-check{color:#fff;width:22px;height:22px;box-shadow:var(--shadow);background:#22c55e;border-radius:50%;place-items:center;display:grid;position:absolute;top:-6px;left:-6px}.thumb-actions{opacity:0;gap:4px;transition:opacity .15s;display:flex;position:absolute;bottom:4px;right:4px}.thumb:hover .thumb-actions,.thumb:focus-within .thumb-actions{opacity:1}.thumb-actions button{color:#fff;cursor:pointer;background:#000000a6;border:0;border-radius:50%;place-items:center;width:24px;height:24px;padding:0;display:grid}.thumb-actions button:last-child:hover{background:#dc2626}.sheet label.thumb.add{border:1.5px dashed var(--line);color:var(--muted);cursor:pointer;place-items:center;gap:0;transition:all .15s;display:grid}.sheet label.thumb.add:hover{border-color:var(--muted);color:var(--ink);background:var(--soft)}@media (hover:none){.thumb-actions{opacity:1}}.dropzone{border:1.5px dashed var(--line);color:var(--muted);text-align:center;cursor:pointer;border-radius:16px;align-items:center;padding:28px 16px;transition:border-color .15s,background .15s;gap:6px!important}.dropzone:hover{border-color:var(--muted);background:var(--soft)}.dropzone strong{color:var(--ink);font-size:14px;font-weight:500}.dropzone small{font-size:12px;font-weight:400}.image-done{border:1px solid var(--line);border-radius:16px;justify-content:flex-start;align-items:center;gap:10px;padding:10px;font-weight:400;display:flex}.image-done img{-o-object-fit:cover;object-fit:cover;background:var(--soft);border-radius:10px;width:44px;height:44px}.image-done .icon-btn{cursor:pointer;flex:none;margin:0;transition:background .15s}.image-done .icon-btn:hover{background:var(--soft)}.icon-btn-danger{color:#dc2626}.image-done span{flex:1;font-size:14px}.sheet label.btn{flex-direction:row;align-items:center;gap:8px}.sheet label.icon-btn{font-size:inherit;place-items:center;gap:0;display:grid}.btn-sm{padding:7px 14px;font-size:13px}.segmented{background:var(--soft);border-radius:14px;grid-template-columns:1fr 1fr;padding:4px;display:grid}.segmented button{color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:10px;padding:9px;font-size:14px;font-weight:500;transition:all .2s}.segmented button[aria-pressed=true]{background:var(--panel);color:var(--ink);box-shadow:var(--shadow)}.url-field{border:1px solid var(--line);background:var(--panel);border-radius:12px;align-items:stretch;font-size:15px;font-weight:400;transition:border-color .15s;display:flex;overflow:hidden}.url-field:focus-within{border-color:var(--muted)}.url-field span{white-space:nowrap;color:var(--muted);align-items:center;display:flex}.url-field span:first-child{padding-left:14px}.url-field span:last-child{background:var(--soft);color:var(--ink);padding:0 14px}.sheet .url-field input:not([type=range]):not([type=file]){text-align:left;background:0 0;border:0;border-radius:0;flex:1;min-width:0;padding:12px 2px}.link-btn{color:var(--muted);text-underline-offset:3px;cursor:pointer;background:0 0;border:0;align-self:flex-start;padding:0;font-size:13px;text-decoration:underline}.link-btn:hover{color:var(--ink)}.web-grid{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:28px 24px}.web-card{border:1px solid var(--line);background:var(--panel);border-radius:28px;padding:8px 8px 16px;transition:transform .35s cubic-bezier(.2,.8,.2,1),box-shadow .35s;box-shadow:0 1px 2px #0000000a,0 18px 40px -22px #0006}.web-card:hover{transform:translateY(-6px);box-shadow:0 1px 2px #0000000a,0 28px 50px -22px #00000080}.web-shot{aspect-ratio:3/2;background:var(--soft);border-radius:22px;display:block;overflow:hidden}.web-shot img{-o-object-fit:cover;object-fit:cover;width:100%;height:100%;transition:transform .7s cubic-bezier(.2,.8,.2,1);display:block}.web-card:hover .web-shot img{transform:scale(1.05)}.web-fallback{color:#fff;background:linear-gradient(160deg, hsl(var(--hue) 85% 62%), hsl(var(--hue) 80% 42%));place-items:center;width:100%;height:100%;display:grid}.web-meta{justify-content:space-between;align-items:center;gap:12px;padding:14px 8px 0 12px;display:flex}.web-title{flex-direction:column;min-width:0;display:flex}.web-title strong{letter-spacing:-.02em;text-overflow:ellipsis;white-space:nowrap;font-size:18px;font-weight:600;overflow:hidden}.web-title span{color:var(--muted);font-size:13px}.web-btn{color:#fff;white-space:nowrap;background:#0a84ff;border-radius:999px;flex:none;align-items:center;gap:7px;padding:10px 18px;font-size:14px;font-weight:600;text-decoration:none;transition:transform .2s,background .2s;display:inline-flex;box-shadow:0 10px 18px -10px #0a84ffcc}.web-btn:hover{background:#0071e3;transform:translateY(-1px)}.web-btn svg{transition:transform .2s}.web-btn:hover svg{transform:translate(2px,-2px)}.app-icon.wide{border-radius:18px;width:126px;height:84px}.preview .app-icon.wide{width:108px;height:72px}.gallery.wide{grid-template-columns:repeat(auto-fill,minmax(120px,1fr))}.thumb.wide{aspect-ratio:3/2;border-radius:14px}.crop-view.wide{border-radius:18px}.crop-wrap{z-index:70;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.crop-card{border:1px solid var(--line);background:var(--panel);border-radius:28px;flex-direction:column;align-items:center;gap:16px;width:min(360px,100%);padding:28px 24px 24px;animation:.3s cubic-bezier(.2,.8,.2,1) both pop;display:flex;position:relative;box-shadow:0 40px 100px -20px #00000080}.crop-card h2{letter-spacing:-.03em;margin:0;font-size:20px;font-weight:600}.crop-card .admin-sub{margin:-10px 0 0;font-size:13px}.crop-view{background:var(--soft);cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;border-radius:22%;position:relative;overflow:hidden}.crop-view:active{cursor:grabbing}.crop-view img{pointer-events:none;max-width:none;position:absolute;top:50%;left:50%}.crop-grid{pointer-events:none;border-radius:inherit;background:linear-gradient(#ffffff59,#ffffff59) 33.33% 0/1px 100% no-repeat,linear-gradient(#ffffff59,#ffffff59) 66.66% 0/1px 100% no-repeat,linear-gradient(#ffffff59,#ffffff59) 0 33.33%/100% 1px no-repeat,linear-gradient(#ffffff59,#ffffff59) 0 66.66%/100% 1px no-repeat;position:absolute;inset:0;box-shadow:inset 0 0 0 1.5px #ffffffb3}.crop-zoom{width:100%;color:var(--muted);align-items:center;gap:12px;display:flex}.crop-zoom input{accent-color:var(--ink);flex:1}.crop-actions{gap:10px;width:100%;display:flex}.crop-actions .btn{flex:1;justify-content:center}.toast{z-index:60;background:var(--ink);color:var(--panel);opacity:0;pointer-events:none;border-radius:999px;padding:11px 20px;font-size:14px;font-weight:500;transition:all .3s cubic-bezier(.2,.8,.2,1);position:fixed;bottom:28px;left:50%;translate:-50% 20px}.toast.show{opacity:1;translate:-50%}.login{isolation:isolate;text-align:center;flex-direction:column;justify-content:center;align-items:center;min-height:calc(100vh - 160px);padding:32px 0 64px;display:flex;position:relative}.login .badge{margin-bottom:24px}.login-avatar{width:88px;height:88px;margin-bottom:24px}.login h1{margin:0;font-size:clamp(40px,8vw,80px)}.login .lede{margin:16px auto 32px}.login-card{border:1px solid var(--line);background:color-mix(in srgb, var(--panel) 80%, transparent);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);width:min(380px,100%);box-shadow:var(--shadow);border-radius:24px;flex-direction:column;gap:12px;padding:24px;animation:.5s cubic-bezier(.2,.8,.2,1) both rise;display:flex}.login-card input{border:1px solid var(--line);background:var(--panel);color:var(--ink);font:inherit;border-radius:14px;outline:0;padding:14px 16px;font-size:15px;transition:border-color .15s}.login-card input:focus{border-color:var(--muted)}.login-card .btn{justify-content:center;margin-top:4px;padding:14px}.form-error{color:#dc2626;margin:0;font-size:14px}@keyframes fade{0%{opacity:0}}@keyframes pop{0%{opacity:0;transform:translateY(16px)scale(.97)}}@keyframes rise{0%{opacity:0;transform:translateY(16px)}}@media (width<=640px){.sheet-wrap{padding:8px}.admin-actions .btn{flex:1;justify-content:center}}@media (prefers-reduced-motion:reduce){.tile-btn.arranging,.sheet,.sheet-backdrop,.login-card{animation:none}}.footer{border-top:1px solid var(--line);color:var(--muted);justify-content:space-between;gap:16px;padding:22px 0 28px;font-size:13px;display:flex}.footer div{gap:20px;display:flex}.footer a{text-decoration:none}.footer a:hover{color:var(--ink)}.footer .admin-link{border:1px solid color-mix(in srgb, var(--ink) 30%, transparent);color:var(--ink);border-radius:999px;align-items:center;gap:7px;margin:-6px 0;padding:6px 14px;font-weight:500;transition:background .15s,color .15s,border-color .15s;display:inline-flex}.footer .admin-link:hover{background:var(--ink);color:var(--panel);border-color:var(--ink)}@media (width<=640px){body{padding:0 16px}.grid{grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:32px 8px}.app-icon{width:72px;height:72px}}@media (prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important;animation:none!important}}.preloader{z-index:100;background:var(--page);color:var(--ink);isolation:isolate;place-items:center;transition:opacity .4s,visibility .4s;display:grid;position:fixed;inset:0}.preloader .hero-bg{inset:0}.preloader.out{opacity:0;visibility:hidden}.preloader svg{max-width:70vw;height:auto}.logo-draw{animation:1.7s cubic-bezier(.4,0,.4,1) .1s forwards logo-write;-webkit-mask-image:linear-gradient(105deg,#000 42%,#0000 62%);mask-image:linear-gradient(105deg,#000 42%,#0000 62%);-webkit-mask-position:100% 0;mask-position:100% 0;-webkit-mask-size:250% 100%;mask-size:250% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}@keyframes logo-write{to{-webkit-mask-position:0 0;mask-position:0 0}}html.lenis,html.lenis body{height:auto}.lenis:not(.lenis-autoToggle).lenis-stopped{overflow:clip}.lenis [data-lenis-prevent],.lenis [data-lenis-prevent-wheel],.lenis [data-lenis-prevent-touch],.lenis [data-lenis-prevent-vertical],.lenis [data-lenis-prevent-horizontal]{overscroll-behavior:contain}.lenis.lenis-smooth iframe{pointer-events:none}.lenis.lenis-autoToggle{transition-behavior:allow-discrete;transition-property:overflow;transition-duration:1ms}
