:root{--color-bg:#f4f5f7;--color-bg-alt:#ebedf0;--color-surface:#ffffffb8;--color-surface-solid:#fff;--color-surface-hover:#ffffffe0;--color-accent:#2563eb;--color-accent-hover:#1d4ed8;--color-accent-light:#2563eb1f;--color-text:#1a1d23;--color-text-secondary:#5a6170;--color-text-muted:#8b92a0;--color-border:#00000014;--color-success:#10b981;--color-warning:#f59e0b;--color-danger:#ef4444;--glass-bg:#ffffff8c;--glass-border:#ffffff59;--glass-shadow:0 8px 32px #00000014;--glass-blur:16px;--font-sans:"Pretendard Variable", "Pretendard", -apple-system, BlinkMacSystemFont, sans-serif;--font-display:"Montserrat", var(--font-sans);--font-mono:"JetBrains Mono", "Fira Code", monospace;--space-xs:.25rem;--space-sm:.5rem;--space-md:1rem;--space-lg:1.5rem;--space-xl:2rem;--space-2xl:3rem;--space-3xl:4rem;--radius-sm:8px;--radius-md:12px;--radius-lg:16px;--radius-xl:24px;--sidebar-width:260px;--sidebar-collapsed:72px;--header-height:64px;--transition-fast:.15s cubic-bezier(.4, 0, .2, 1);--transition-base:.25s cubic-bezier(.4, 0, .2, 1);--transition-slow:.4s cubic-bezier(.4, 0, .2, 1)}[data-theme=dark]{--color-bg:#0f1117;--color-bg-alt:#161822;--color-surface:#1e212db8;--color-surface-solid:#1e212d;--color-surface-hover:#1e212de0;--color-accent:#60a5fa;--color-accent-hover:#3b82f6;--color-accent-light:#60a5fa26;--color-text:#edf0f7;--color-text-secondary:#9ba3b5;--color-text-muted:#6b7280;--color-border:#ffffff14;--glass-bg:#141623a6;--glass-border:#ffffff14;--glass-shadow:0 8px 32px #00000052}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}body{font-family:var(--font-sans);color:var(--color-text);background:var(--color-bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:15px;line-height:1.6;overflow-x:hidden}body:before{content:"";z-index:9999;pointer-events:none;opacity:.035;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");background-repeat:repeat;background-size:200px 200px;position:fixed;inset:0}[data-theme=dark] body:before{opacity:.05}h1,h2,h3,h4,h5,h6{font-family:var(--font-display);letter-spacing:-.02em;color:var(--color-text);font-weight:700;line-height:1.2}h1{font-size:clamp(1.75rem,4vw,2.5rem)}h2{font-size:clamp(1.375rem,3vw,1.875rem)}h3{font-size:clamp(1.125rem,2.5vw,1.375rem)}p{color:var(--color-text-secondary)}a{color:var(--color-accent);transition:color var(--transition-fast);text-decoration:none}a:hover{color:var(--color-accent-hover)}.skip-nav{background:var(--color-accent);color:#fff;padding:var(--space-sm) var(--space-lg);border-radius:var(--radius-sm);z-index:10000;transition:top var(--transition-fast);font-weight:600;position:absolute;top:-100%;left:50%;transform:translate(-50%)}.skip-nav:focus{top:var(--space-md)}.glass-card{background:var(--glass-bg);-webkit-backdrop-filter:blur(var(--glass-blur));border:1px solid var(--glass-border);border-radius:var(--radius-lg);box-shadow:var(--glass-shadow);transition:transform var(--transition-base), box-shadow var(--transition-base);position:relative;overflow:hidden}.glass-card:hover{transform:translateY(-2px);box-shadow:0 12px 40px #0000001f}[data-theme=dark] .glass-card:hover{box-shadow:0 12px 40px #0006}.glass-card .spotlight{pointer-events:none;opacity:0;transition:opacity var(--transition-base);border-radius:inherit;background:radial-gradient(600px circle at var(--mouse-x,50%) var(--mouse-y,50%), #2563eb14, transparent 40%);position:absolute;inset:0}[data-theme=dark] .glass-card .spotlight{background:radial-gradient(600px circle at var(--mouse-x,50%) var(--mouse-y,50%), #60a5fa1a, transparent 40%)}.glass-card:hover .spotlight{opacity:1}.btn{align-items:center;gap:var(--space-sm);font-family:var(--font-sans);border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition-fast);isolation:isolate;border:none;min-height:44px;padding:.625rem 1.25rem;font-size:.875rem;font-weight:600;display:inline-flex;position:relative;overflow:hidden}.btn-primary{background:var(--color-accent);color:#fff}.btn-primary:hover{background:var(--color-accent-hover)}.btn-secondary{background:var(--color-accent-light);color:var(--color-accent)}.btn-secondary:hover{background:var(--color-accent);color:#fff}.btn-ghost{color:var(--color-text-secondary);background:0 0}.btn-ghost:hover{background:var(--color-accent-light);color:var(--color-accent)}.btn .ripple{pointer-events:none;background:#ffffff59;border-radius:50%;animation:.6s ease-out ripple-anim;position:absolute;transform:scale(0)}@keyframes ripple-anim{to{opacity:0;transform:scale(4)}}.fade-up{opacity:0;transition:opacity .6s cubic-bezier(.22,1,.36,1),transform .6s cubic-bezier(.22,1,.36,1);transform:translateY(30px)}.fade-up.visible{opacity:1;transform:translateY(0)}.skeleton{background:var(--color-bg-alt);border-radius:var(--radius-sm);position:relative;overflow:hidden}.skeleton:after{content:"";background:linear-gradient(90deg,#0000 0%,#fff6 50%,#0000 100%);animation:1.5s infinite shimmer;position:absolute;inset:0}[data-theme=dark] .skeleton:after{background:linear-gradient(90deg,#0000 0%,#ffffff0f 50%,#0000 100%)}@keyframes shimmer{0%{transform:translate(-100%)}to{transform:translate(100%)}}.skeleton-text{width:100%;height:14px;margin-bottom:8px}.skeleton-title{width:60%;height:22px;margin-bottom:12px}.skeleton-avatar{border-radius:50%;width:40px;height:40px}.skeleton-card{width:100%;height:180px}.scroll-row{gap:var(--space-md);scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;scrollbar-width:none;padding-bottom:var(--space-sm);display:flex;overflow-x:auto}.scroll-row::-webkit-scrollbar{display:none}.scroll-row>*{scroll-snap-align:start;flex-shrink:0}.bento-grid{gap:var(--space-md);grid-template-columns:repeat(4,1fr);grid-auto-rows:minmax(140px,auto);display:grid}.bento-grid .span-2{grid-column:span 2}.bento-grid .span-3{grid-column:span 3}.bento-grid .span-full{grid-column:1/-1}.bento-grid .row-2{grid-row:span 2}@media (width<=639px){.bento-grid{grid-template-columns:1fr}.bento-grid .span-2,.bento-grid .span-3,.bento-grid .span-full{grid-column:1/-1}}@media (width>=640px) and (width<=1023px){.bento-grid{grid-template-columns:repeat(2,1fr)}.bento-grid .span-3{grid-column:span 2}}.form-group{gap:var(--space-xs);flex-direction:column;display:flex}.form-label{color:var(--color-text-secondary);font-size:.8125rem;font-weight:600}.form-input,.form-select,.form-textarea{font-family:var(--font-sans);background:var(--color-surface-solid);border:1px solid var(--color-border);border-radius:var(--radius-sm);color:var(--color-text);transition:border-color var(--transition-fast), box-shadow var(--transition-fast);min-height:44px;padding:.625rem .875rem;font-size:.875rem}.form-input:focus,.form-select:focus,.form-textarea:focus{border-color:var(--color-accent);box-shadow:0 0 0 3px var(--color-accent-light);outline:none}.badge{border-radius:100px;align-items:center;gap:4px;padding:2px 10px;font-size:.75rem;font-weight:600;line-height:1.6;display:inline-flex}.badge-success{color:#059669;background:#10b9811f}.badge-warning{color:#d97706;background:#f59e0b1f}.badge-danger{color:#dc2626;background:#ef44441f}.badge-info{background:var(--color-accent-light);color:var(--color-accent)}[data-theme=dark] .badge-success{color:#34d399}[data-theme=dark] .badge-warning{color:#fbbf24}[data-theme=dark] .badge-danger{color:#f87171}:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.fade-up{opacity:1;transform:none}}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--color-text-muted)}
