:root{--lab-bg-primary:#0a0a0a;--lab-bg-secondary:#1a1a1a;--lab-bg-tertiary:#2d2d2d;--lab-border:hsla(0,0%,42%,.2);--lab-border-solid:#2d2d2d;--lab-text-primary:#f5f5f5;--lab-text-secondary:#d4d4d4;--lab-text-muted:#6b6b6b;--lab-blue:#06c;--lab-cyan:#00b4d8;--lab-green:#10b981;--lab-warning:#f59e0b;--lab-black:#0a0a0a;--lab-dark-gray:#1a1a1a;--lab-medium-gray:#2d2d2d;--lab-gray:#6b6b6b;--lab-light-gray:#d4d4d4;--lab-white:#f5f5f5;--lab-pure-white:#fff}[data-theme=light]{--lab-bg-primary:#fff;--lab-bg-secondary:#f5f5f5;--lab-bg-tertiary:#e5e5e5;--lab-border:hsla(0,0%,42%,.3);--lab-border-solid:#d4d4d4;--lab-text-primary:#1a1a1a;--lab-text-secondary:#2d2d2d;--lab-text-muted:#6b6b6b;--font-primary:"Inter","Noto Sans KR",-apple-system,BlinkMacSystemFont,sans-serif;--font-mono:"JetBrains Mono","Courier New",monospace;--spacing-xs:0.25rem;--spacing-sm:0.5rem;--spacing-md:1rem;--spacing-lg:1.5rem;--spacing-xl:2rem;--spacing-2xl:3rem;--radius-sm:2px;--radius-md:4px;--radius-lg:8px;--transition-fast:150ms ease;--transition-normal:250ms ease;--transition-slow:350ms ease}*{box-sizing:border-box}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#0a0a0a;background-color:var(--lab-bg-primary);color:#f5f5f5;color:var(--lab-text-primary);font-family:var(--font-primary);font-size:16px;font-weight:400;line-height:1.6;margin:0;overflow-x:hidden;padding:0;transition:background-color .3s ease,color .3s ease}h1,h2,h3,h4,h5,h6{font-weight:700;letter-spacing:-.02em;line-height:1.2;margin:0}h1{font-size:clamp(2rem,5vw,4rem)}h2{font-size:clamp(1.75rem,4vw,3rem)}h3{font-size:clamp(1.5rem,3vw,2.25rem)}h4{font-size:clamp(1.25rem,2.5vw,1.75rem)}p{font-size:1rem;margin:0}code{background-color:#2d2d2d;background-color:var(--lab-bg-tertiary);border:1px solid #2d2d2d;border:1px solid var(--lab-border-solid);border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:.875em;padding:.125rem .375rem}a{color:#00b4d8;color:var(--lab-cyan);text-decoration:none;transition:color var(--transition-fast)}a:hover{color:#06c;color:var(--lab-blue)}::-webkit-scrollbar{height:8px;width:8px}::-webkit-scrollbar-track{background:#1a1a1a;background:var(--lab-bg-secondary)}::-webkit-scrollbar-thumb{background:#6b6b6b;background:var(--lab-text-muted);border-radius:var(--radius-md)}::-webkit-scrollbar-thumb:hover{background:#d4d4d4;background:var(--lab-text-secondary)}::selection{background-color:#06c;background-color:var(--lab-blue);color:#fff;color:var(--lab-pure-white)}::-moz-selection{background-color:#06c;background-color:var(--lab-blue);color:#fff;color:var(--lab-pure-white)}:focus-visible{outline:2px solid #00b4d8;outline:2px solid var(--lab-cyan);outline-offset:2px}.text-mono{font-family:var(--font-mono)}.lab-container{margin:0 auto;max-width:1400px;padding:0 var(--spacing-xl)}.lab-grid{grid-gap:var(--spacing-lg);display:grid;gap:var(--spacing-lg)}@-webkit-keyframes fadeIn{0%{opacity:0;-webkit-transform:translateY(10px);transform:translateY(10px)}to{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0;-webkit-transform:translateY(10px);transform:translateY(10px)}to{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}.fade-in{-webkit-animation:fadeIn var(--transition-slow) ease-out;animation:fadeIn var(--transition-slow) ease-out}html[lang=ko] body{font-family:"Noto Sans KR",var(--font-primary);letter-spacing:-.01em}.App{background-color:var(--lab-bg-primary);min-height:100vh;position:relative;transition:background-color .3s ease}.App:before{background-image:linear-gradient(var(--lab-border) 1px,transparent 1px),linear-gradient(90deg,var(--lab-border) 1px,transparent 1px);background-size:40px 40px;bottom:0;content:"";left:0;opacity:.5;pointer-events:none;position:fixed;right:0;top:0;z-index:0}.App>*{position:relative;z-index:1}.lab-section{padding:var(--spacing-2xl) 0;position:relative}.lab-section:after{background:linear-gradient(90deg,transparent,var(--lab-gray) 20%,var(--lab-gray) 80%,transparent);bottom:0;content:"";height:1px;left:5%;position:absolute;right:5%}.lab-card{background:var(--lab-bg-secondary);border:1px solid var(--lab-border-solid);border-radius:var(--radius-md);overflow:hidden;padding:var(--spacing-lg);position:relative;transition:all var(--transition-normal)}.lab-card:before{background:linear-gradient(90deg,var(--lab-cyan),var(--lab-blue));content:"";height:2px;left:0;position:absolute;right:0;top:0;-webkit-transform:scaleX(0);transform:scaleX(0);-webkit-transform-origin:left;transform-origin:left;transition:-webkit-transform var(--transition-normal);transition:transform var(--transition-normal);transition:transform var(--transition-normal),-webkit-transform var(--transition-normal)}.lab-card:hover{border-color:var(--lab-text-muted);box-shadow:0 8px 24px rgba(0,0,0,.2);-webkit-transform:translateY(-2px);transform:translateY(-2px)}.lab-card:hover:before{-webkit-transform:scaleX(1);transform:scaleX(1)}.lab-data{background:var(--lab-bg-tertiary);border-left:3px solid var(--lab-blue);border-radius:var(--radius-sm);color:var(--lab-cyan);font-family:var(--font-mono);font-size:.875rem;padding:var(--spacing-sm) var(--spacing-md)}.lab-button{background:transparent;border:1px solid var(--lab-border-solid);border-radius:var(--radius-md);color:var(--lab-text-primary);cursor:pointer;font-family:var(--font-primary);font-weight:500;overflow:hidden;padding:var(--spacing-sm) var(--spacing-lg);position:relative;transition:all var(--transition-fast)}.lab-button:before{background:var(--lab-cyan);content:"";height:100%;left:-100%;position:absolute;top:0;transition:left var(--transition-normal);width:100%;z-index:-1}.lab-button:hover{border-color:var(--lab-cyan);color:var(--lab-bg-primary)}.lab-button:hover:before{left:0}.lab-button-primary{background:var(--lab-blue);border-color:var(--lab-blue);color:var(--lab-pure-white)}.lab-button-primary:hover{background:var(--lab-cyan);border-color:var(--lab-cyan)}.lab-header{margin-bottom:var(--spacing-2xl);text-align:center}.lab-header-title{-webkit-text-fill-color:transparent;background:linear-gradient(135deg,var(--lab-text-primary),var(--lab-cyan));-webkit-background-clip:text;background-clip:text;font-size:clamp(2rem,5vw,3.5rem);font-weight:800;letter-spacing:-.03em;margin-bottom:var(--spacing-md)}.lab-header-subtitle{color:var(--lab-text-secondary);font-size:1.125rem;font-weight:300}.text-bilingual{display:flex;flex-direction:column;gap:var(--spacing-xs)}.text-bilingual .en{font-family:Inter,sans-serif}.text-bilingual .ko{font-family:Noto Sans KR,sans-serif;font-size:.95em;opacity:.9}.lab-loading{align-items:center;background:var(--lab-bg-primary);display:flex;justify-content:center;min-height:100vh}.lab-spinner{-webkit-animation:spin .8s linear infinite;animation:spin .8s linear infinite;border:3px solid var(--lab-bg-tertiary);border-radius:50%;border-top-color:var(--lab-cyan);height:40px;width:40px}@-webkit-keyframes spin{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes spin{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@media (max-width:768px){.lab-section{padding:var(--spacing-xl) 0}.lab-card{padding:var(--spacing-md)}a,button,input,select,textarea{min-height:44px}body{font-size:15px}}body,html{overflow-x:hidden;width:100%}img,video{height:auto;max-width:100%}@media (hover:none) and (pointer:coarse){a,button{-webkit-tap-highlight-color:rgba(0,180,216,.3)}}