:root{--color-surface:oklch(98% .005 250);--color-surface-2:oklch(94% .01 250);--color-text:oklch(20% .02 250);--color-muted:oklch(50% .02 250);--color-accent:oklch(47% .19 255);--color-accent-text:oklch(99% 0 0);--color-danger:oklch(55% .2 25);--color-ok:oklch(55% .16 150);--radius:12px;--space:clamp(.75rem, .5rem + 1vw, 1.25rem);--font:system-ui, -apple-system, "Segoe UI", Roboto, "Apple SD Gothic Neo", "Noto Sans KR", sans-serif}@media (prefers-color-scheme:dark){:root{--color-surface:oklch(18% .01 250);--color-surface-2:oklch(24% .015 250);--color-text:oklch(95% .01 250);--color-muted:oklch(70% .02 250);--color-accent:oklch(72% .16 255);--color-accent-text:oklch(15% .02 250)}}.ff{font-family:var(--font);color:var(--color-text);background:var(--color-surface);line-height:1.5}.ff-shell{gap:var(--space);max-width:720px;padding:var(--space);margin:0 auto;display:grid}.ff-drop{border:2px dashed var(--color-muted);border-radius:var(--radius);padding:calc(var(--space) * 2);text-align:center;cursor:pointer;background:var(--color-surface-2);transition:border-color .15s,transform .15s}.ff-drop:hover,.ff-drop:focus-visible,.ff-drop[data-over=true]{border-color:var(--color-accent);outline:none;transform:translateY(-1px)}.ff-drop input{display:none}.ff-files{color:var(--color-muted);flex-wrap:wrap;gap:.5rem;margin:0;padding:0;font-size:.9rem;list-style:none;display:flex}.ff-files li{background:var(--color-surface-2);border-radius:999px;padding:.2rem .7rem}.ff-options{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:.75rem;display:grid}.ff-options label{color:var(--color-muted);gap:.25rem;font-size:.85rem;display:grid}.ff-options input,.ff-options select{font:inherit;border:1px solid var(--color-muted);background:var(--color-surface);color:var(--color-text);border-radius:8px;padding:.5rem .6rem}.ff-btn{font:inherit;background:var(--color-accent);color:var(--color-accent-text);cursor:pointer;border:0;border-radius:999px;padding:.7rem 1.2rem;font-weight:600;transition:transform .12s,opacity .12s}.ff-btn:hover{transform:translateY(-1px)}.ff-btn:active{transform:translateY(0)}.ff-btn:focus-visible{outline:3px solid color-mix(in oklch, var(--color-accent) 40%, transparent);outline-offset:2px}.ff-btn:disabled{opacity:.5;cursor:default;transform:none}.ff-btn--ghost{color:var(--color-accent);border:1px solid var(--color-accent);background:0 0}.ff-progress{background:var(--color-surface-2);border-radius:999px;height:8px;overflow:hidden}.ff-progress>div{background:var(--color-accent);height:100%;transition:width .12s}.ff-result{border-radius:var(--radius);background:var(--color-surface-2);justify-content:space-between;align-items:center;gap:1rem;padding:.8rem 1rem;display:flex}.ff-note{color:var(--color-muted);font-size:.85rem}.ff-quota{border-radius:var(--radius);border:1px solid var(--color-accent);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;padding:.8rem 1rem;display:flex}.ff-error{color:var(--color-danger);font-weight:600}.ff-ok{color:var(--color-ok)}.ff-list{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:.75rem;margin:0;padding:0;list-style:none;display:grid}.ff-card{border-radius:var(--radius);background:var(--color-surface-2);color:inherit;padding:1rem;text-decoration:none;transition:transform .15s,box-shadow .15s;display:block}.ff-card:hover,.ff-card:focus-visible{box-shadow:0 8px 24px -12px color-mix(in oklch, var(--color-accent) 60%, transparent);outline:none;transform:translateY(-2px)}.ff-card[aria-current=true]{outline:2px solid var(--color-accent)}.ff-card h3{margin:0 0 .25rem;font-size:1rem}.ff-card p{color:var(--color-muted);margin:0;font-size:.85rem}.ff-license{gap:.6rem;display:grid}.ff-license form{flex-wrap:wrap;gap:.5rem;display:flex}.ff-license input{font:inherit;border:1px solid var(--color-muted);background:var(--color-surface);color:var(--color-text);border-radius:8px;flex:240px;padding:.6rem}.ff-sr{clip:rect(0 0 0 0);width:1px;height:1px;position:absolute;overflow:hidden}@media (prefers-reduced-motion:reduce){.ff *{transition:none!important}}:root{--paper:oklch(97.5% .012 85);--paper-2:oklch(94.5% .018 85);--ink:oklch(22% .03 60);--ink-soft:oklch(45% .025 60);--ink-faint:oklch(66% .02 70);--line:oklch(86% .02 80);--accent:oklch(42% .11 240);--accent-ink:oklch(99% 0 0);--accent-wash:oklch(92% .04 240);--warm:oklch(70% .14 55);--color-surface:var(--paper);--color-surface-2:var(--paper-2);--color-text:var(--ink);--color-muted:var(--ink-soft);--color-accent:var(--accent);--color-accent-text:var(--accent-ink);--radius:14px;--display:"Fraunces", "Iowan Old Style", "Palatino", "Apple SD Gothic Neo", "Noto Sans KR", serif;--body:"Inter", system-ui, -apple-system, "Apple SD Gothic Neo", "Noto Sans KR", sans-serif;--measure:62ch;--ease:cubic-bezier(.2, .8, .2, 1)}@media (prefers-color-scheme:dark){:root{--paper:oklch(20% .015 70);--paper-2:oklch(25% .018 70);--ink:oklch(94% .012 85);--ink-soft:oklch(72% .02 80);--ink-faint:oklch(52% .02 70);--line:oklch(32% .02 70);--accent:oklch(78% .1 240);--accent-ink:oklch(18% .03 240);--accent-wash:oklch(30% .05 240)}}html{background:var(--paper)}body.ff{font-family:var(--body);background:var(--paper);color:var(--ink);-webkit-font-smoothing:antialiased}.ff *{box-sizing:border-box}.site{isolation:isolate;min-height:100dvh;position:relative}.site:before{content:"";z-index:-2;pointer-events:none;background:radial-gradient(60rem 30rem at 80% -10%, color-mix(in oklch, var(--warm) 22%, transparent), transparent 70%), radial-gradient(40rem 24rem at -10% 20%, color-mix(in oklch, var(--accent) 12%, transparent), transparent 70%);position:fixed;inset:0}.site:after{content:"";z-index:-1;pointer-events:none;opacity:.5;mix-blend-mode:multiply;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .05 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>");position:fixed;inset:0}@media (prefers-color-scheme:dark){.site:after{mix-blend-mode:screen;opacity:.25}}.wrap{width:min(100% - 2.5rem,68rem);margin-inline:auto}.site-header{justify-content:space-between;align-items:center;gap:1rem;padding-block:1.1rem;display:flex}.brand{color:inherit;font-family:var(--display);letter-spacing:-.01em;align-items:center;gap:.55rem;font-size:1.25rem;font-weight:600;text-decoration:none;display:inline-flex}.brand svg{width:26px;height:26px}.site-nav{align-items:center;gap:.25rem;font-size:.9rem;display:flex}.site-nav a{color:var(--ink-soft);transition:background .16s var(--ease), color .16s var(--ease);border-radius:999px;padding:.45rem .75rem;text-decoration:none}.site-nav a:hover,.site-nav a:focus-visible{background:var(--paper-2);color:var(--ink);outline:none}.site-nav a.pro{color:var(--accent);border:1px solid color-mix(in oklch, var(--accent) 40%, transparent)}.display{font-family:var(--display);letter-spacing:-.02em;font-variation-settings:"opsz" 144, "SOFT" 30;font-weight:500;line-height:1.04}.eyebrow{letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft);margin:0;font-size:.78rem;font-weight:600}.lede{color:var(--ink-soft);max-width:46ch;margin:0;font-size:clamp(1.05rem,.95rem + .4vw,1.25rem);line-height:1.55}.pill{letter-spacing:0;text-transform:none;color:var(--ink-soft);background:var(--paper-2);border-radius:999px;align-items:center;gap:.45rem;padding:.35rem .75rem;font-size:.8rem;font-weight:500;display:inline-flex}.pill i{background:var(--suite-color,var(--accent));border-radius:50%;width:.5rem;height:.5rem;display:inline-block}.hero{grid-template-columns:minmax(0,1.25fr) minmax(0,.75fr);align-items:end;gap:clamp(1.5rem,4vw,4rem);padding-block:clamp(3rem,8vw,7rem) clamp(2rem,5vw,4rem);display:grid}.hero h1{max-width:13ch;margin:.6rem 0 1.2rem;font-size:clamp(2.6rem,1.4rem + 5.2vw,5.4rem)}.hero h1 em{color:var(--accent);font-style:italic;font-weight:400}.hero .cta{flex-wrap:wrap;gap:.6rem;margin-top:1.6rem;display:flex}.btn{font:inherit;transition:transform .16s var(--ease), box-shadow .16s var(--ease), border-color .16s var(--ease);border-radius:999px;align-items:center;gap:.5rem;padding:.8rem 1.25rem;font-weight:600;text-decoration:none;display:inline-flex}.btn-primary{background:var(--ink);color:var(--paper)}.btn-primary:hover{box-shadow:0 10px 24px -14px var(--ink);transform:translateY(-1px)}.btn-quiet{color:var(--ink);border:1px solid var(--line);background:color-mix(in oklch, var(--paper) 70%, transparent)}.btn-quiet:hover{border-color:var(--ink-faint);transform:translateY(-1px)}.btn:focus-visible{outline:3px solid color-mix(in oklch, var(--accent) 45%, transparent);outline-offset:3px}.hero-art{aspect-ratio:4/3;max-width:100%;position:relative}.hero-art svg{width:100%;height:100%;display:block;overflow:visible}.sheet{transform-box:fill-box;transform-origin:50% 100%;animation:settle .9s var(--ease) both}.sheet:nth-child(2){animation-delay:90ms}.sheet:nth-child(3){animation-delay:.18s}@keyframes settle{0%{opacity:0;translate:0 18px}to{opacity:1;translate:0}}.principles{border-top:1px solid var(--line);border-bottom:1px solid var(--line);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.principles>div{padding:1.4rem 1.2rem 1.5rem 0}.principles>div+div{border-left:1px solid var(--line);padding-left:1.4rem}.principles strong{font-family:var(--display);letter-spacing:-.01em;margin-bottom:.3rem;font-size:1.35rem;font-weight:500;display:block}.principles p{color:var(--ink-soft);margin:0;font-size:.95rem;line-height:1.55}.suite{border-bottom:1px solid var(--line);grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:clamp(1.5rem,4vw,4rem);padding-block:clamp(2.5rem,6vw,4.5rem);display:grid}.suite-head{align-self:start;position:sticky;top:1.5rem}.suite-index{font-family:var(--display);color:var(--ink-soft);letter-spacing:.05em;font-size:.95rem}.suite-head h2{margin:.35rem 0 .8rem;font-size:clamp(2rem,1.2rem + 2.6vw,3.2rem)}.suite-head p{color:var(--ink-soft);max-width:34ch;margin:0 0 1.2rem;line-height:1.55}.tool-index{margin:0;padding:0;list-style:none}.tool-index li{border-top:1px solid var(--line)}.tool-index li:last-child{border-bottom:1px solid var(--line)}.tool-index a{color:inherit;transition:background .16s var(--ease), padding .2s var(--ease);border-radius:8px;grid-template-columns:2.2rem minmax(0,1fr) auto;align-items:baseline;gap:1rem;padding:1rem .5rem 1rem 0;text-decoration:none;display:grid}.tool-index a:hover,.tool-index a:focus-visible{background:color-mix(in oklch, var(--suite-color,var(--accent)) 8%, transparent);outline:none;padding-left:.6rem}.tool-index .n{font-family:var(--display);color:var(--ink-soft);font-size:.85rem}.tool-index .t{letter-spacing:-.005em;font-size:1.05rem;font-weight:600}.tool-index .d{color:var(--ink-soft);margin-top:.15rem;font-size:.92rem;font-weight:400;line-height:1.45;display:block}.tool-index .arrow{color:var(--ink-faint);transition:transform .2s var(--ease), color .16s var(--ease)}.tool-index a:hover .arrow{color:var(--ink);transform:translate(4px)}.install{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:1.5rem;padding-block:clamp(2.5rem,6vw,4.5rem);display:grid}.install h2{margin:.3rem 0 .5rem;font-size:clamp(1.6rem,1rem + 2vw,2.4rem)}.install p{color:var(--ink-soft);max-width:46ch;margin:0;line-height:1.55}.stores{flex-wrap:wrap;gap:.5rem;display:flex}.tool-hero{padding-block:clamp(2rem,5vw,3.5rem) 1.25rem}.tool-hero h1{margin:.6rem 0;font-size:clamp(2.2rem,1.3rem + 3vw,3.6rem)}.panel{background:color-mix(in oklch, var(--paper) 55%, white 45%);border:1px solid var(--line);box-shadow:0 30px 60px -40px color-mix(in oklch, var(--ink) 45%, transparent), 0 1px 0 oklch(100% 5.96046e-8 none/.6) inset;border-radius:20px;padding:clamp(.5rem,2vw,1.25rem)}@media (prefers-color-scheme:dark){.panel{background:color-mix(in oklch, var(--paper-2) 85%, transparent)}}.panel .ff-shell{padding:clamp(.75rem,2vw,1.25rem)}.panel .ff-drop{border-style:solid;border-color:var(--line);background:var(--paper-2)}.panel .ff-drop:hover,.panel .ff-drop:focus-visible,.panel .ff-drop[data-over=true]{border-color:var(--accent)}.section{padding-block:clamp(2rem,5vw,3.5rem)}.section h2{margin:0 0 1rem;font-size:clamp(1.5rem,1rem + 1.6vw,2.1rem)}.faq details{border-top:1px solid var(--line);padding:.9rem 0}.faq details:last-child{border-bottom:1px solid var(--line)}.faq summary{cursor:pointer;justify-content:space-between;align-items:center;gap:1rem;font-weight:600;list-style:none;display:flex}.faq summary::-webkit-details-marker{display:none}.faq summary:after{content:"+";font-family:var(--display);color:var(--ink-faint);transition:transform .2s var(--ease);font-size:1.3rem}.faq details[open] summary:after{transform:rotate(45deg)}.faq p{color:var(--ink-soft);max-width:var(--measure);margin:.6rem 0 0;line-height:1.6}.prose{max-width:var(--measure)}.prose h2{margin:1.6rem 0 .4rem;font-size:1.35rem}.prose p{color:var(--ink-soft);line-height:1.65}.prose a{color:var(--accent)}.site-footer{border-top:1px solid var(--line);color:var(--ink-soft);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem 2rem;padding-block:2rem 2.5rem;font-size:.9rem;display:flex}.site-footer a{color:inherit;text-decoration:none}.site-footer a:hover{color:var(--ink);text-decoration:underline}.site-footer nav{gap:1.2rem;display:flex}@media (width<=760px){.hero{grid-template-columns:1fr}.hero-art{max-width:320px}.principles{grid-template-columns:1fr}.principles>div{padding:1.1rem 0}.principles>div+div{border-left:0;border-top:1px solid var(--line);padding-left:0}.suite{grid-template-columns:1fr}.suite-head{position:static}.install{grid-template-columns:1fr}}@media (prefers-reduced-motion:reduce){.sheet{animation:none}.btn,.tool-index a,.tool-index .arrow{transition:none}}html[lang=ko] .display,html[lang=ko] .lede,html[lang=ko] .principles p,html[lang=ko] .tool-index .d{word-break:keep-all;overflow-wrap:anywhere}html[lang=ko] .hero h1{letter-spacing:-.01em;max-width:none}.panel .ff-shell{max-width:860px}
