:root{--font-sans: "Pretendard Variable", "Pretendard", -apple-system, BlinkMacSystemFont, system-ui, sans-serif;--font-display: "Montserrat", var(--font-sans);--font-mono: ui-monospace, "SF Mono", Menlo, Consolas, monospace;--fs-xs: .75rem;--fs-sm: .875rem;--fs-base: 1rem;--fs-md: 1.125rem;--fs-lg: 1.25rem;--fs-xl: 1.5rem;--fs-2xl: 2rem;--fs-3xl: 2.5rem;--fs-4xl: 3rem;--fs-hero: clamp(2.5rem, 5vw, 4.5rem);--fw-regular: 400;--fw-medium: 500;--fw-semibold: 600;--fw-bold: 700;--fw-extrabold: 800;--lh-tight: 1.2;--lh-base: 1.6;--lh-relaxed: 1.8;--ls-tight: -.02em;--ls-base: 0;--ls-wide: .05em;--color-bg-primary: #fafafa;--color-bg-secondary: #f0f0f5;--color-bg-tertiary: #e8e8f0;--color-surface: #ffffff;--color-surface-elevated: #ffffff;--color-text-primary: #1a1a2e;--color-text-secondary: #4a4a6a;--color-text-tertiary: #8888a8;--color-text-inverse: #ffffff;--color-border: rgba(26, 26, 46, .08);--color-border-strong: rgba(26, 26, 46, .15);--color-accent: #e94560;--color-accent-hover: #d63851;--color-accent-light: rgba(233, 69, 96, .1);--color-accent-medium: rgba(233, 69, 96, .2);--color-success: #10b981;--color-warning: #f59e0b;--color-error: #ef4444;--color-info: #3b82f6;--color-festival: #e94560;--color-restaurant: #f59e0b;--color-accommodation: #3b82f6;--color-culture: #8b5cf6;--color-nature: #10b981;--color-shopping: #ec4899;--glass-bg: rgba(255, 255, 255, .7);--glass-bg-strong: rgba(255, 255, 255, .85);--glass-border: rgba(255, 255, 255, .3);--glass-shadow: 0 8px 32px rgba(26, 26, 46, .08);--glass-blur: 12px;--glass-blur-strong: 20px;--sp-1: .25rem;--sp-2: .5rem;--sp-3: .75rem;--sp-4: 1rem;--sp-5: 1.25rem;--sp-6: 1.5rem;--sp-8: 2rem;--sp-10: 2.5rem;--sp-12: 3rem;--sp-16: 4rem;--sp-20: 5rem;--sp-24: 6rem;--sp-32: 8rem;--radius-sm: 6px;--radius-md: 12px;--radius-lg: 16px;--radius-xl: 24px;--radius-2xl: 32px;--radius-full: 9999px;--shadow-xs: 0 1px 2px rgba(26, 26, 46, .04);--shadow-sm: 0 2px 8px rgba(26, 26, 46, .06);--shadow-md: 0 4px 16px rgba(26, 26, 46, .08);--shadow-lg: 0 8px 32px rgba(26, 26, 46, .1);--shadow-xl: 0 16px 48px rgba(26, 26, 46, .14);--shadow-glow: 0 0 30px rgba(233, 69, 96, .15);--ease-out: cubic-bezier(0, 0, .2, 1);--ease-out-quint: cubic-bezier(.22, 1, .36, 1);--ease-in-out: cubic-bezier(.4, 0, .2, 1);--ease-spring: cubic-bezier(.34, 1.56, .64, 1);--dur-fast: .1s;--dur-base: .2s;--dur-slow: .3s;--dur-slower: .5s;--width-max: 1400px;--width-content: 900px;--width-narrow: 640px;--header-height: 72px;--header-height-mobile: 60px;--z-base: 0;--z-dropdown: 100;--z-sticky: 200;--z-overlay: 300;--z-modal: 400;--z-toast: 500;--grain-opacity: .03}[data-theme=dark]{--color-bg-primary: #0f0f1a;--color-bg-secondary: #1a1a2e;--color-bg-tertiary: #252540;--color-surface: #1e1e35;--color-surface-elevated: #252545;--color-text-primary: #e8e8f0;--color-text-secondary: #a0a0c0;--color-text-tertiary: #6868a0;--color-text-inverse: #1a1a2e;--color-border: rgba(255, 255, 255, .06);--color-border-strong: rgba(255, 255, 255, .12);--color-accent: #ff6b81;--color-accent-hover: #ff8599;--color-accent-light: rgba(255, 107, 129, .12);--color-accent-medium: rgba(255, 107, 129, .22);--glass-bg: rgba(30, 30, 53, .7);--glass-bg-strong: rgba(30, 30, 53, .85);--glass-border: rgba(255, 255, 255, .08);--glass-shadow: 0 8px 32px rgba(0, 0, 0, .3);--shadow-xs: 0 1px 2px rgba(0, 0, 0, .2);--shadow-sm: 0 2px 8px rgba(0, 0, 0, .25);--shadow-md: 0 4px 16px rgba(0, 0, 0, .3);--shadow-lg: 0 8px 32px rgba(0, 0, 0, .35);--shadow-xl: 0 16px 48px rgba(0, 0, 0, .4);--shadow-glow: 0 0 30px rgba(255, 107, 129, .2);--grain-opacity: .05}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@keyframes fadeUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}[data-animate] .fade-up{opacity:0;transform:translateY(30px);transition:opacity var(--dur-slower) var(--ease-out-quint),transform var(--dur-slower) var(--ease-out-quint)}[data-animate] .fade-up.visible,.fade-up.visible{opacity:1;transform:translateY(0)}.fade-up{opacity:1;transform:none}[data-animate] .fade-up-stagger>*{opacity:0;transform:translateY(20px);transition:opacity var(--dur-slower) var(--ease-out-quint),transform var(--dur-slower) var(--ease-out-quint)}.fade-up-stagger.visible>*:nth-child(1){transition-delay:0ms}.fade-up-stagger.visible>*:nth-child(2){transition-delay:80ms}.fade-up-stagger.visible>*:nth-child(3){transition-delay:.16s}.fade-up-stagger.visible>*:nth-child(4){transition-delay:.24s}.fade-up-stagger.visible>*:nth-child(5){transition-delay:.32s}.fade-up-stagger.visible>*:nth-child(6){transition-delay:.4s}.fade-up-stagger.visible>*:nth-child(7){transition-delay:.48s}.fade-up-stagger.visible>*:nth-child(8){transition-delay:.56s}.fade-up-stagger.visible>*{opacity:1;transform:translateY(0)}.ripple-container{position:relative;overflow:hidden}.ripple{position:absolute;border-radius:50%;background:#ffffff59;transform:scale(0);animation:rippleAnim .6s var(--ease-out) forwards;pointer-events:none}@keyframes rippleAnim{to{transform:scale(4);opacity:0}}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.6;transform:scale(1.05)}}.pulse{animation:pulse 2s var(--ease-in-out) infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.spin{animation:spin 1s linear infinite}@keyframes slideInRight{0%{opacity:0;transform:translate(100%)}to{opacity:1;transform:translate(0)}}@keyframes slideInUp{0%{opacity:0;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}@keyframes scaleIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}@keyframes countUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes heroSlide{0%{opacity:0;transform:scale(1.05)}to{opacity:1;transform:scale(1)}}.hero-slide-in{animation:heroSlide .8s var(--ease-out-quint) forwards}.spotlight-card{position:relative}.spotlight-card:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;opacity:0;transition:opacity var(--dur-slow) var(--ease-out);background:radial-gradient(600px circle at var(--mouse-x, 50%) var(--mouse-y, 50%),rgba(233,69,96,.08),transparent 40%);pointer-events:none;z-index:1}.spotlight-card:hover:before{opacity:1}[data-theme=dark] .spotlight-card:before{background:radial-gradient(600px circle at var(--mouse-x, 50%) var(--mouse-y, 50%),rgba(255,107,129,.12),transparent 40%)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;text-size-adjust:100%}body{font-family:var(--font-sans);font-size:var(--fs-base);line-height:var(--lh-base);color:var(--color-text-primary);background-color:var(--color-bg-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-x:hidden;min-height:100vh}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:9999;opacity:var(--grain-opacity);background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)'/%3E%3C/svg%3E");background-repeat:repeat;background-size:256px 256px}h1,h2,h3,h4,h5,h6{font-family:var(--font-display);font-weight:var(--fw-bold);line-height:var(--lh-tight);letter-spacing:var(--ls-tight);color:var(--color-text-primary)}h1{font-size:var(--fs-hero);font-weight:var(--fw-extrabold)}h2{font-size:var(--fs-3xl)}h3{font-size:var(--fs-2xl)}h4{font-size:var(--fs-xl)}h5{font-size:var(--fs-lg)}h6{font-size:var(--fs-md)}p{max-width:65ch;color:var(--color-text-secondary)}a{color:var(--color-accent);text-decoration:none;transition:color var(--dur-fast) var(--ease-out)}a:hover{color:var(--color-accent-hover)}img,video{max-width:100%;height:auto;display:block}ul,ol{list-style:none}button{font-family:inherit;cursor:pointer;border:none;background:none}input,textarea,select{font-family:inherit;font-size:inherit}.container{width:100%;max-width:var(--width-max);margin-inline:auto;padding-inline:var(--sp-4)}@media (min-width: 768px){.container{padding-inline:var(--sp-8)}}.section{padding-block:var(--sp-16)}@media (min-width: 768px){.section{padding-block:var(--sp-24)}}.bento-grid{display:grid;gap:var(--sp-4);grid-template-columns:1fr}@media (min-width: 640px){.bento-grid{grid-template-columns:repeat(2,1fr);gap:var(--sp-5)}}@media (min-width: 1024px){.bento-grid{grid-template-columns:repeat(4,1fr);grid-auto-rows:minmax(200px,auto);gap:var(--sp-6)}.bento-grid .span-2{grid-column:span 2}.bento-grid .span-3{grid-column:span 3}.bento-grid .span-row-2{grid-row:span 2}}.glass-card{background:var(--glass-bg);backdrop-filter:blur(var(--glass-blur));-webkit-backdrop-filter:blur(var(--glass-blur));border:1px solid var(--glass-border);border-radius:var(--radius-lg);box-shadow:var(--glass-shadow);overflow:hidden;transition:transform var(--dur-slow) var(--ease-out),box-shadow var(--dur-slow) var(--ease-out)}.glass-card:hover{box-shadow:var(--shadow-lg)}.skeleton{background:linear-gradient(90deg,var(--color-bg-secondary) 25%,var(--color-bg-tertiary) 50%,var(--color-bg-secondary) 75%);background-size:200% 100%;animation:shimmer 1.5s ease-in-out infinite;border-radius:var(--radius-md)}.skeleton-text{height:1em;margin-bottom:var(--sp-2);border-radius:var(--radius-sm)}.skeleton-text:last-child{width:60%}.skeleton-circle{border-radius:var(--radius-full)}.skeleton-image{aspect-ratio:16 / 9;border-radius:var(--radius-md)}:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}:focus:not(:focus-visible){outline:none}.skip-nav{position:fixed;top:-100%;left:var(--sp-4);z-index:var(--z-toast);padding:var(--sp-3) var(--sp-6);background:var(--color-accent);color:var(--color-text-inverse);font-weight:var(--fw-semibold);border-radius:0 0 var(--radius-md) var(--radius-md);transition:top var(--dur-base) var(--ease-out)}.skip-nav:focus{top:0}.scroll-x{display:flex;gap:var(--sp-4);overflow-x:auto;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;scrollbar-width:none;padding-bottom:var(--sp-2)}.scroll-x::-webkit-scrollbar{display:none}.scroll-x>*{scroll-snap-align:start;flex-shrink:0}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}::selection{background:var(--color-accent-medium);color:var(--color-text-primary)}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}
