:root{--color-bg:#fff;--color-bg-secondary:#f8f9fa;--color-bg-tertiary:#e9ecef;--color-surface:#fff;--color-text:#1a1a2e;--color-text-secondary:#495057;--color-text-muted:#868e96;--color-primary:#6366f1;--color-primary-hover:#4f46e5;--color-primary-light:#eef2ff;--color-accent:#06b6d4;--color-border:#dee2e6;--color-border-light:#e9ecef;--color-error:#e53e3e;--color-success:#38a169;--color-text-inverse:#fff;--color-text-strong:#333;--color-shadow:#00000014;--color-shadow-lg:#0000001f;--color-hero-from:#6366f1;--color-hero-via:#8b5cf6;--color-hero-to:#06b6d4;--color-code-bg:#f1f3f5;--midi-key-label:#4b5563;--midi-key-white-border:color-mix(in srgb, var(--color-border) 85%, #93a4bf 15%);--midi-key-white-bg:#f4f7fb;--midi-key-black-border:#ffffff14;--midi-key-black-bg:#141924;--midi-key-white-active:#60a5fa;--midi-key-black-active:#2563eb;--midi-key-white-correct:#34d399;--midi-key-black-correct:#059669;--museum-bg:radial-gradient(circle at top, #ffffffeb, transparent 42%), linear-gradient(180deg, #f7fbff 0%, #e6eef5 100%);--museum-overlay-bg:linear-gradient(180deg, #e7eef54d, #48566580), #0d152038;--museum-card-bg:linear-gradient(180deg, #fff, #f0f6fb);--museum-card-border:#ffffffb8;--museum-card-shadow:0 2rem 4rem #30485e38, inset 0 1px 0 #fffc;--museum-card-inner-border:#cbdae6b3;--museum-color-title:#11283a;--museum-color-text:#173042;--museum-color-muted:#4f6679;--museum-color-eyebrow:#68839b;--museum-color-hint:#7c94a7;--museum-title-shadow:0 .35rem 1rem #6d879d29;--space-xs:.25rem;--space-sm:.5rem;--space-md:1rem;--space-lg:1.5rem;--space-xl:2rem;--space-2xl:3rem;--space-3xl:4rem;--space-4xl:6rem;--font-sans:"Inter", system-ui, -apple-system, sans-serif;--font-mono:"JetBrains Mono", "Fira Code", monospace;--text-xs:.75rem;--text-sm:.875rem;--text-base:1rem;--text-lg:1.125rem;--text-xl:1.25rem;--text-2xl:1.5rem;--text-3xl:1.875rem;--text-4xl:2.25rem;--text-5xl:3rem;--line-height-tight:1.1;--line-height-normal:1.5;--line-height-relaxed:1.75;--radius-sm:.375rem;--radius-md:.5rem;--radius-lg:.75rem;--radius-xl:1rem;--radius-full:9999px;--shadow-sm:0 1px 2px var(--color-shadow);--shadow-md:0 4px 6px var(--color-shadow), 0 1px 3px var(--color-shadow);--shadow-lg:0 10px 25px var(--color-shadow-lg), 0 4px 10px var(--color-shadow);--shadow-xl:0 20px 40px var(--color-shadow-lg), 0 8px 16px var(--color-shadow);--transition-fast:.15s ease;--transition-base:.25s ease;--transition-slow:.35s ease;--header-height:4rem;--max-width:1200px;--max-width-narrow:800px;--type-normal:#a8a878;--type-fire:#f08030;--type-water:#6890f0;--type-electric:#f8d030;--type-grass:#78c850;--type-ice:#98d8d8;--type-fighting:#c03028;--type-poison:#a040a0;--type-ground:#e0c068;--type-flying:#a890f0;--type-psychic:#f85888;--type-bug:#a8b820;--type-rock:#b8a038;--type-ghost:#705898;--type-dragon:#7038f8;--type-dark:#705848;--type-steel:#b8b8d0;--type-fairy:#ee99ac;--stat-high:#4caf50;--stat-mid:#ff9800;--stat-low:#f44336}[data-theme=dark]{--color-bg:#0f0f1a;--color-bg-secondary:#1a1a2e;--color-bg-tertiary:#252540;--color-surface:#1a1a2e;--color-text:#e2e8f0;--color-text-secondary:#a0aec0;--color-text-muted:#718096;--color-primary:#818cf8;--color-primary-hover:#6366f1;--color-primary-light:#1e1b4b;--color-border:#2d2d44;--color-border-light:#252540;--color-error:#fc8181;--color-success:#68d391;--color-text-inverse:#fff;--color-text-strong:#1a202c;--color-shadow:#0000004d;--color-shadow-lg:#00000080;--color-code-bg:#252540;--museum-bg:radial-gradient(circle at top, #1e1e32e6, transparent 42%), linear-gradient(180deg, #0f0f1a 0%, #1a1a2e 100%);--museum-overlay-bg:linear-gradient(180deg, #0f0f1a66, #0a0a1499), #0000004d;--museum-card-bg:linear-gradient(180deg, #1a1a2e, #0f0f1a);--museum-card-border:#ffffff1a;--museum-card-shadow:0 2rem 4rem #0006, inset 0 1px 0 #ffffff0d;--museum-card-inner-border:#ffffff0f;--museum-color-title:#e2e8f0;--museum-color-text:#cbd5e1;--museum-color-muted:#94a3b8;--museum-color-eyebrow:#818cf8;--museum-color-hint:#64748b;--museum-title-shadow:0 .35rem 1rem #00000047}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--color-bg:#0f0f1a;--color-bg-secondary:#1a1a2e;--color-bg-tertiary:#252540;--color-surface:#1a1a2e;--color-text:#e2e8f0;--color-text-secondary:#a0aec0;--color-text-muted:#718096;--color-primary:#818cf8;--color-primary-hover:#6366f1;--color-primary-light:#1e1b4b;--color-border:#2d2d44;--color-border-light:#252540;--color-error:#fc8181;--color-success:#68d391;--color-text-inverse:#fff;--color-text-strong:#1a202c;--color-shadow:#0000004d;--color-shadow-lg:#00000080;--color-code-bg:#252540;--color-glass:#0f0f1ad9;--color-glass-border:#ffffff14;--museum-bg:radial-gradient(circle at top, #1e1e32e6, transparent 42%), linear-gradient(180deg, #0f0f1a 0%, #1a1a2e 100%);--museum-overlay-bg:linear-gradient(180deg, #0f0f1a66, #0a0a1499), #0000004d;--museum-card-bg:linear-gradient(180deg, #1a1a2e, #0f0f1a);--museum-card-border:#ffffff1a;--museum-card-shadow:0 2rem 4rem #0006, inset 0 1px 0 #ffffff0d;--museum-card-inner-border:#ffffff0f;--museum-color-title:#e2e8f0;--museum-color-text:#cbd5e1;--museum-color-muted:#94a3b8;--museum-color-eyebrow:#818cf8;--museum-color-hint:#64748b;--museum-title-shadow:0 .35rem 1rem #00000047}}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;scroll-padding-top:calc(var(--header-height) + var(--space-lg))}body{font-family:var(--font-sans);font-size:var(--text-base);line-height:var(--line-height-normal);color:var(--color-text);background-color:var(--color-bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;min-height:100vh}img,svg{max-width:100%;display:block}a{color:var(--color-primary);transition:color var(--transition-fast);text-decoration:none}a:hover{color:var(--color-primary-hover)}ul,ol{list-style:none}button{font:inherit;cursor:pointer;color:inherit;background:0 0;border:none}input,select{font:inherit;color:inherit}.midi-piano{margin-bottom:var(--space-2xl);padding:var(--space-lg);border:1px solid var(--color-border);border-radius:var(--radius-xl);background:var(--color-surface)}.midi-monitor__hero{justify-content:space-between;align-items:flex-start;gap:var(--space-lg);margin-bottom:var(--space-lg);display:flex}.midi-monitor__heading{min-width:0}.midi-monitor__heading .section__subtitle{margin-bottom:0}.midi-monitor__actions{justify-content:flex-end;align-items:center;gap:var(--space-md);flex-wrap:wrap;flex-shrink:0;display:flex}.midi-monitor__error{color:var(--color-error);margin-bottom:var(--space-lg)}.midi-status{vertical-align:middle;opacity:.92;width:1.95rem;height:1.95rem;transition:opacity var(--transition-fast), transform var(--transition-fast), color var(--transition-fast);justify-content:center;align-items:center;display:inline-flex}.midi-status svg{width:1.55rem;height:1.55rem;overflow:visible}.midi-status--pending{color:var(--color-text-secondary)}.midi-status--connected{color:var(--color-success)}.midi-status--denied,.midi-status--unsupported{color:var(--color-error)}.midi-monitor__event{margin-bottom:var(--space-xl);padding:var(--space-xl);border:1px solid var(--color-border);border-radius:var(--radius-xl);background:var(--color-surface);text-align:center}.midi-monitor__event-note{letter-spacing:-.03em;margin-bottom:var(--space-xs);font-size:clamp(2.5rem,5vw,3.5rem);font-weight:700}.midi-monitor__event-type{font-size:var(--text-lg);color:var(--color-text-secondary);margin-bottom:var(--space-md)}.midi-monitor__event-meta{justify-content:center;gap:var(--space-lg);font-size:var(--text-sm);color:var(--color-text-secondary);flex-wrap:wrap;display:flex}.midi-monitor__history{margin-top:var(--space-lg)}.midi-monitor__history-title{margin-bottom:var(--space-md);font-size:var(--text-xl)}.midi-monitor__history-table{border-radius:var(--radius-lg);border:1px solid var(--color-border);max-height:400px;overflow:auto}.midi-piano__header{justify-content:space-between;align-items:baseline;gap:var(--space-md);margin-bottom:var(--space-lg);display:flex}.midi-piano__title{font-size:var(--text-xl)}.midi-piano__subtitle{color:var(--color-text-secondary);font-size:var(--text-sm)}.midi-piano__scroller{border-radius:0 0 var(--radius-lg) var(--radius-lg);width:100%;position:relative;overflow:hidden}.midi-piano__keyboard{--midi-white-key-width:32px;--midi-white-key-height:176px;--midi-black-key-width:19px;--midi-black-key-height:106px;width:calc(36 * var(--midi-white-key-width));transform-origin:0 0;position:absolute;inset:0 auto auto 0}.midi-piano__white-keys{grid-template-columns:repeat(36, var(--midi-white-key-width));display:grid}.midi-piano__black-keys{pointer-events:none;width:100%;position:absolute;inset:0 auto auto 0}.midi-key{min-width:0;transition:transform var(--transition-fast), background var(--transition-fast), border-color var(--transition-fast);position:relative}.midi-key__label{letter-spacing:.03em;color:var(--midi-key-label);white-space:nowrap;pointer-events:none;font-size:.68rem;position:absolute;bottom:.75rem;left:50%;transform:translate(-50%)}.midi-key--white{height:var(--midi-white-key-height);border:1px solid var(--midi-key-white-border);background:var(--midi-key-white-bg);border-radius:0}.midi-piano__white-keys>.midi-key--white:first-child{border-bottom-left-radius:var(--radius-lg)}.midi-piano__white-keys>.midi-key--white:last-child{border-bottom-right-radius:var(--radius-lg)}.midi-key--black{width:var(--midi-black-key-width);height:var(--midi-black-key-height);border:1px solid var(--midi-key-black-border);background:var(--midi-key-black-bg);z-index:2;border-radius:0 0 .3rem .3rem;position:absolute;top:0}.midi-key--active{transform:none}.midi-key--white.midi-key--active{background:var(--midi-key-white-active);border-color:var(--midi-key-white-active)}.midi-key--black.midi-key--active{background:var(--midi-key-black-active);border-color:var(--midi-key-black-active)}.midi-key--white.midi-key--correct{background:var(--midi-key-white-correct);border-color:var(--midi-key-white-correct)}.midi-key--black.midi-key--correct{background:var(--midi-key-black-correct);border-color:var(--midi-key-black-correct)}.midi-player{align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg) var(--radius-lg) 0 0;flex-wrap:wrap;display:flex}.midi-player__name{font-size:var(--text-sm);text-overflow:ellipsis;white-space:nowrap;max-width:180px;font-weight:600;overflow:hidden}.midi-player__btn{padding:var(--space-xs);font-size:var(--text-sm);border-radius:var(--radius-md);cursor:pointer;color:var(--color-text-secondary);transition:background var(--transition-fast), color var(--transition-fast);background:0 0;border:none;font-weight:600}.midi-player__btn:hover{background:var(--color-bg-tertiary);color:var(--color-text)}.midi-player__btn--icon{padding:var(--space-xs);justify-content:center;align-items:center;line-height:0;display:inline-flex}.midi-player__btn--close{margin-left:auto}.midi-player__seek{cursor:pointer;appearance:none;border-radius:3px;flex:1;min-width:100px;height:6px}.midi-player__seek::-webkit-slider-thumb{appearance:none;background:var(--color-text);cursor:pointer;border-radius:50%;width:14px;height:14px}.midi-player__seek::-moz-range-thumb{background:var(--color-text);cursor:pointer;border:none;border-radius:50%;width:14px;height:14px}.midi-player__seek::-moz-range-track{background:0 0;border-radius:3px;height:6px}.midi-player__time{font-size:var(--text-xs);font-family:var(--font-mono);color:var(--color-text-secondary);min-width:36px}.midi-player__speed{padding:var(--space-xs);font-size:var(--text-sm);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);cursor:pointer}.midi-player__score{font-size:var(--text-sm);font-family:var(--font-mono);color:var(--color-text-secondary);white-space:nowrap}.midi-player__learning{color:#6b7280;transition:color var(--transition-fast), opacity var(--transition-fast)}.midi-player__learning--active{color:#34d399}.midi-player__learning--waiting{color:#34d399;animation:1.5s ease-in-out infinite learning-pulse}@keyframes learning-pulse{0%,to{opacity:1}50%{opacity:.4}}.midi-waterfall{background:var(--color-bg-secondary);border:1px solid var(--color-border);border-top:none;border-radius:0;flex:1;min-height:200px;position:relative;overflow:hidden}.midi-waterfall__canvas{width:100%;height:100%;display:block}@media (width<=768px){.midi-piano{padding:var(--space-md)}.midi-monitor__hero{flex-direction:column}.midi-monitor__actions{justify-content:flex-start}.midi-monitor__event{padding:var(--space-lg)}.midi-monitor__event-meta{gap:var(--space-md)}.midi-piano__header{flex-direction:column;align-items:flex-start}.midi-key:after{display:none}}.skip-link{top:-100%;left:var(--space-md);padding:var(--space-sm) var(--space-md);background:var(--color-primary);color:var(--color-text-inverse);border-radius:var(--radius-md);z-index:1000;font-weight:600;position:absolute}.skip-link:focus{top:var(--space-sm);color:var(--color-text-inverse)}.header{z-index:100;height:var(--header-height);background:var(--color-bg);border-bottom:1px solid var(--color-border);align-items:center;display:flex;position:sticky;top:0}.header__inner{width:100%;max-width:var(--max-width);padding:0 var(--space-lg);justify-content:space-between;align-items:center;margin:0 auto;display:flex}.header__logo{font-size:var(--text-lg);color:var(--color-text);letter-spacing:-.02em;font-weight:700}.header__logo:hover{color:var(--color-primary)}.header__nav{align-items:center;gap:var(--space-lg);display:flex}.nav-link{color:var(--color-text-secondary);font-weight:500;font-size:var(--text-sm);padding:var(--space-xs) 0;transition:color var(--transition-fast);position:relative}.nav-link:hover{color:var(--color-text)}.nav-link:after{content:"";background:var(--color-primary);border-radius:var(--radius-full);width:0;height:2px;transition:width var(--transition-base);position:absolute;bottom:-2px;left:0}.nav-link:hover:after,.nav-link[data-status=active]:after{width:100%}.nav-link[data-status=active]{color:var(--color-primary)}.main{min-height:calc(100vh - var(--header-height))}.footer{border-top:1px solid var(--color-border);padding:var(--space-2xl) var(--space-lg);text-align:center;color:var(--color-text-muted);font-size:var(--text-sm)}.footer__links{justify-content:center;gap:var(--space-lg);margin-bottom:var(--space-md);display:flex}.footer__link{color:var(--color-text-secondary);transition:color var(--transition-fast)}.footer__link:hover{color:var(--color-primary)}.theme-toggle{border-radius:var(--radius-md);background:var(--color-bg-tertiary);width:2.25rem;height:2.25rem;transition:background var(--transition-fast), transform var(--transition-fast);font-size:var(--text-lg);justify-content:center;align-items:center;line-height:1;display:flex}.theme-toggle:hover{background:var(--color-border);transform:scale(1.05)}.section{padding:var(--space-4xl) var(--space-lg)}.container{max-width:var(--max-width);margin:0 auto}.container--narrow{max-width:var(--max-width-narrow)}.section__title{font-size:var(--text-3xl);letter-spacing:-.02em;margin-bottom:var(--space-sm);font-weight:700}.section__subtitle{color:var(--color-text-secondary);font-size:var(--text-lg);margin-bottom:var(--space-2xl)}.hero{min-height:calc(100vh - var(--header-height));text-align:center;padding:var(--space-3xl) var(--space-lg);background:linear-gradient(135deg, var(--color-hero-from), var(--color-hero-via), var(--color-hero-to));background-size:300% 300%;justify-content:center;align-items:center;animation:8s infinite gradient-shift;display:flex;position:relative;overflow:hidden}.hero:before{content:"";background:var(--color-bg);opacity:.85;position:absolute;inset:0}.hero__content{z-index:1;max-width:700px;position:relative}.hero__greeting{font-size:var(--text-lg);color:var(--color-primary);margin-bottom:var(--space-sm);font-weight:600}.hero__name{font-size:var(--text-5xl);letter-spacing:-.03em;font-weight:800;line-height:var(--line-height-tight);margin-bottom:var(--space-md)}.hero__role{font-size:var(--text-2xl);color:var(--color-text-secondary);font-family:var(--font-mono);white-space:nowrap;border-right:3px solid var(--color-primary);width:0;animation:3s steps(33,end) .5s forwards typing,.75s step-end infinite blink-caret;display:inline-block;overflow:hidden}.hero__description{font-size:var(--text-lg);color:var(--color-text-secondary);line-height:var(--line-height-relaxed);margin-top:var(--space-lg);margin-bottom:var(--space-xl)}.hero__actions{gap:var(--space-md);flex-wrap:wrap;justify-content:center;display:flex}.hero__scroll-hint{bottom:var(--space-2xl);text-decoration:none;position:absolute;left:50%;translate:-50%}.hero__scroll-arrow{border-bottom:2px solid var(--color-text-secondary);border-right:2px solid var(--color-text-secondary);width:20px;height:20px;animation:2s ease-in-out infinite scroll-bounce;display:block;rotate:45deg}@keyframes scroll-bounce{0%,to{opacity:.4;translate:0}50%{opacity:1;translate:0 6px}}.btn{align-items:center;gap:var(--space-sm);font-weight:600;font-size:var(--text-sm);border-radius:var(--radius-md);transition:background var(--transition-fast), transform var(--transition-fast), box-shadow var(--transition-fast);padding:.75rem 1.5rem;display:inline-flex}.btn:hover{transform:translateY(-1px)}.btn--primary{background:var(--color-primary);color:var(--color-text-inverse)}.btn--primary:hover{background:var(--color-primary-hover);color:var(--color-text-inverse);box-shadow:var(--shadow-md)}.btn--outline{border:2px solid var(--color-border);color:var(--color-text)}.btn--outline:hover{border-color:var(--color-primary);color:var(--color-primary)}.btn--small{font-size:var(--text-xs);padding:.5rem 1rem}.card{background:var(--color-surface);border:1px solid var(--color-border-light);border-radius:var(--radius-lg);padding:var(--space-xl);transition:transform var(--transition-base), box-shadow var(--transition-base)}.card:hover{box-shadow:var(--shadow-lg);transform:translateY(-4px)}.skill-card{text-align:center}.skill-card__icon{font-size:var(--text-4xl);margin-bottom:var(--space-md);display:block}.skill-card__title{font-size:var(--text-lg);margin-bottom:var(--space-sm);font-weight:700}.skill-card__description{font-size:var(--text-sm);color:var(--color-text-secondary);line-height:var(--line-height-relaxed)}.project-card__tag{font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.05em;color:var(--color-primary);margin-bottom:var(--space-sm);font-weight:600;display:inline-block}.project-card__title{font-size:var(--text-xl);margin-bottom:var(--space-sm);font-weight:700}.project-card__description{font-size:var(--text-sm);color:var(--color-text-secondary);line-height:var(--line-height-relaxed);margin-bottom:var(--space-lg)}.project-card__tech{gap:var(--space-sm);margin-bottom:var(--space-lg);flex-wrap:wrap;display:flex}.tech-tag{font-size:var(--text-xs);background:var(--color-primary-light);color:var(--color-primary);border-radius:var(--radius-full);padding:.2rem .6rem;font-weight:500}.project-card__link{font-size:var(--text-sm);font-weight:600}.grid{gap:var(--space-lg);display:grid}.grid--skills{grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}.grid--projects{grid-template-columns:repeat(auto-fill,minmax(320px,1fr))}.grid--pokemon{grid-template-columns:repeat(auto-fill,minmax(200px,1fr))}.github-section__heading{font-size:var(--text-2xl);letter-spacing:-.02em;margin-top:var(--space-2xl);margin-bottom:var(--space-lg);font-weight:700}.github-calendar-wrapper{justify-content:center;display:flex;overflow-x:auto}.github-page__grid{gap:var(--space-lg);grid-template-columns:repeat(auto-fill,minmax(280px,1fr));display:grid}.github-page__grid--loading{grid-template-columns:repeat(auto-fill,minmax(240px,1fr))}.github-page__skeleton{border:1px solid var(--color-border-light);border-radius:var(--radius-lg);background:linear-gradient(90deg, var(--color-bg-tertiary), var(--color-bg-secondary), var(--color-bg-tertiary));background-size:200% 100%;min-height:12rem;animation:1.5s ease-in-out infinite skeleton-pulse}.github-page__state{padding:var(--space-2xl);text-align:center;justify-items:center;gap:var(--space-md);border:1px dashed var(--color-border);border-radius:var(--radius-lg);background:var(--color-bg-secondary);color:var(--color-text-secondary);display:grid}.github-page__state button{border-radius:var(--radius-md);background:var(--color-primary);color:var(--color-text-inverse);box-shadow:var(--shadow-sm);transition:transform var(--transition-fast), background var(--transition-fast), box-shadow var(--transition-fast);justify-content:center;align-items:center;padding:.75rem 1rem;font-weight:600;display:inline-flex}.github-page__state button:hover{background:var(--color-primary-hover);color:var(--color-text-inverse);box-shadow:var(--shadow-md);transform:translateY(-1px)}.github-repo-card{gap:var(--space-md);padding:var(--space-lg);border:1px solid var(--color-border-light);border-radius:var(--radius-lg);background:var(--color-surface);box-shadow:var(--shadow-sm);color:inherit;transition:transform var(--transition-base), box-shadow var(--transition-base), border-color var(--transition-base);flex-direction:column;text-decoration:none;display:flex}.github-repo-card:hover{box-shadow:var(--shadow-lg);border-color:color-mix(in srgb, var(--color-primary) 28%, var(--color-border-light));transform:translateY(-4px)}.github-repo-card__meta{gap:var(--space-sm);font-size:var(--text-xs);letter-spacing:.05em;text-transform:uppercase;color:var(--color-primary);flex-wrap:wrap;font-weight:700;display:flex}.github-repo-card__meta span{border-radius:var(--radius-full);background:var(--color-primary-light);padding:.25rem .6rem}.github-repo-card h3{font-size:var(--text-xl);letter-spacing:-.02em;font-weight:700;line-height:1.2}.github-repo-card p{color:var(--color-text-secondary);line-height:var(--line-height-relaxed)}.github-repo-card__footer{justify-content:space-between;align-items:center;gap:var(--space-sm) var(--space-md);padding-top:var(--space-md);border-top:1px solid var(--color-border-light);font-size:var(--text-sm);flex-wrap:wrap;margin-top:auto;display:flex}.github-repo-card__footer a{font-weight:600}.pokemon-card{background:var(--color-surface);border:1px solid var(--color-border-light);border-radius:var(--radius-lg);padding:var(--space-lg);text-align:center;transition:transform var(--transition-base), box-shadow var(--transition-base);color:inherit;text-decoration:none;display:block}.pokemon-card:hover{box-shadow:var(--shadow-lg);color:inherit;transform:translateY(-4px)}.pokemon-card__id{font-size:var(--text-xs);color:var(--color-text-muted);font-family:var(--font-mono);margin-bottom:var(--space-xs)}.pokemon-card__sprite{width:96px;height:96px;margin:0 auto var(--space-sm);image-rendering:pixelated}.pokemon-card__name{font-size:var(--text-base);text-transform:capitalize;margin-bottom:var(--space-sm);font-weight:600}.pokemon-card__types{gap:var(--space-xs);justify-content:center;display:flex}.type-badge{border-radius:var(--radius-full);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-inverse);padding:.15rem .6rem;font-weight:600;display:inline-block}.type-badge--normal{background:var(--type-normal)}.type-badge--fire{background:var(--type-fire)}.type-badge--water{background:var(--type-water)}.type-badge--electric{background:var(--type-electric);color:var(--color-text-strong)}.type-badge--grass{background:var(--type-grass)}.type-badge--ice{background:var(--type-ice);color:var(--color-text-strong)}.type-badge--fighting{background:var(--type-fighting)}.type-badge--poison{background:var(--type-poison)}.type-badge--ground{background:var(--type-ground);color:var(--color-text-strong)}.type-badge--flying{background:var(--type-flying)}.type-badge--psychic{background:var(--type-psychic)}.type-badge--bug{background:var(--type-bug)}.type-badge--rock{background:var(--type-rock)}.type-badge--ghost{background:var(--type-ghost)}.type-badge--dragon{background:var(--type-dragon)}.type-badge--dark{background:var(--type-dark)}.type-badge--steel{background:var(--type-steel);color:var(--color-text-strong)}.type-badge--fairy{background:var(--type-fairy)}.pokemon-controls{gap:var(--space-md);margin-bottom:var(--space-xl);flex-wrap:wrap;align-items:center;display:flex}.search-input{border:2px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);min-width:200px;transition:border-color var(--transition-fast);font-size:var(--text-sm);flex:1;padding:.65rem 1rem}.search-input:focus{border-color:var(--color-primary);outline:none}.search-input::placeholder{color:var(--color-text-muted)}.type-select{border:2px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);font-size:var(--text-sm);transition:border-color var(--transition-fast);cursor:pointer;min-width:140px;padding:.65rem 1rem}.type-select:focus{border-color:var(--color-primary);outline:none}.pagination{justify-content:center;align-items:center;gap:var(--space-sm);margin-top:var(--space-xl);display:flex}.pagination__btn{border:2px solid var(--color-border);border-radius:var(--radius-md);font-weight:600;font-size:var(--text-sm);background:var(--color-surface);transition:border-color var(--transition-fast), background var(--transition-fast);padding:.5rem 1rem}.pagination__btn:hover:not(:disabled){border-color:var(--color-primary);background:var(--color-primary-light)}.pagination__btn:disabled{opacity:.4;cursor:not-allowed}.pagination__info{font-size:var(--text-sm);color:var(--color-text-secondary);padding:0 var(--space-sm);text-align:center;min-width:80px}.pokemon-detail{max-width:var(--max-width-narrow);margin:0 auto}.pokemon-detail__header{text-align:center;margin-bottom:var(--space-2xl)}.pokemon-detail__id{font-family:var(--font-mono);font-size:var(--text-lg);color:var(--color-text-muted);font-weight:600}.pokemon-detail__name{font-size:var(--text-4xl);text-transform:capitalize;letter-spacing:-.02em;margin:var(--space-sm) 0;font-weight:800}.pokemon-detail__types{gap:var(--space-sm);margin-top:var(--space-sm);justify-content:center;display:flex}.pokemon-detail__types .type-badge{font-size:var(--text-sm);padding:.25rem .8rem}.pokemon-detail__body{gap:var(--space-2xl);grid-template-columns:1fr 1fr;align-items:start;display:grid}.sprite-gallery{text-align:center}.sprite-gallery__main{width:200px;height:200px;margin:0 auto var(--space-md);image-rendering:pixelated;background:var(--color-bg-secondary);border-radius:var(--radius-lg);padding:var(--space-md)}.sprite-gallery__thumbs{gap:var(--space-sm);flex-wrap:wrap;justify-content:center;display:flex}.sprite-gallery__thumb{width:56px;height:56px;padding:var(--space-xs);border:2px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg-secondary);cursor:pointer;transition:border-color var(--transition-fast), transform var(--transition-fast);image-rendering:pixelated}.sprite-gallery__thumb:hover{border-color:var(--color-primary);transform:scale(1.08)}.sprite-gallery__thumb--active{border-color:var(--color-primary);box-shadow:0 0 0 2px var(--color-primary-light)}.stats{gap:var(--space-md);flex-direction:column;display:flex}.stat-bar{align-items:center;gap:var(--space-md);display:flex}.stat-bar__label{font-size:var(--text-sm);text-transform:uppercase;letter-spacing:.03em;width:80px;color:var(--color-text-secondary);flex-shrink:0;font-weight:600}.stat-bar__track{background:var(--color-bg-tertiary);border-radius:var(--radius-full);flex:1;height:10px;overflow:hidden}.stat-bar__fill{border-radius:var(--radius-full);height:100%;transition:width .8s cubic-bezier(.4,0,.2,1);animation:.8s cubic-bezier(.4,0,.2,1) forwards fill-bar}.stat-bar__value{font-size:var(--text-sm);font-weight:700;font-family:var(--font-mono);text-align:right;flex-shrink:0;width:36px}.pokemon-measures{justify-content:center;align-items:center;gap:var(--space-lg);margin-top:var(--space-xl);padding:var(--space-md) var(--space-lg);background:var(--color-bg-secondary);border-radius:var(--radius-lg);display:flex}.pokemon-measures__item{align-items:baseline;gap:var(--space-sm);display:flex}.pokemon-measures__label{font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.08em;color:var(--color-text-muted);font-weight:600}.pokemon-measures__value{font-size:var(--text-lg);font-weight:700}.pokemon-measures__divider{background:var(--color-border);width:1px;height:1.2rem}.pokemon-abilities{margin-top:var(--space-md);padding:var(--space-md) var(--space-lg);background:var(--color-bg-secondary);border-radius:var(--radius-lg);text-align:center}.pokemon-abilities__label{font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.08em;color:var(--color-text-muted);margin-bottom:var(--space-sm);font-weight:600}.pokemon-abilities__list{justify-content:center;gap:var(--space-xs);flex-wrap:wrap;display:flex}.ability-badge{font-size:var(--text-sm);background:var(--color-bg-tertiary);border-radius:var(--radius-full);margin:var(--space-xs);text-transform:capitalize;padding:.2rem .6rem;display:inline-block}.ability-badge--hidden{border:1px dashed var(--color-primary);opacity:.7}.pokemon-nav{margin-top:var(--space-2xl);padding-top:var(--space-xl);border-top:1px solid var(--color-border);justify-content:space-between;display:flex}.pokemon-nav__link{font-weight:600;font-size:var(--text-sm);align-items:center;gap:var(--space-sm);display:flex}.about-header{align-items:center;gap:var(--space-2xl);margin-bottom:var(--space-3xl);flex-wrap:wrap;display:flex}.about-avatar{background:linear-gradient(135deg, var(--color-primary), var(--color-accent));border-radius:50%;flex-shrink:0;width:160px;height:160px}.about-intro__name{font-size:var(--text-3xl);letter-spacing:-.02em;font-weight:800}.about-intro__title{font-size:var(--text-lg);color:var(--color-primary);margin-bottom:var(--space-md);font-weight:600}.about-intro__bio{color:var(--color-text-secondary);line-height:var(--line-height-relaxed);max-width:540px}.skills-detail{gap:var(--space-md);max-width:600px;display:grid}.timeline{padding-left:var(--space-2xl);position:relative}.timeline:before{content:"";background:var(--color-border);width:2px;position:absolute;top:0;bottom:0;left:7px}.timeline-item{padding-bottom:var(--space-2xl);position:relative}.timeline-item:last-child{padding-bottom:0}.timeline-item:before{content:"";left:calc(-1 * var(--space-2xl) + 3px);background:var(--color-primary);border:2px solid var(--color-bg);width:10px;height:10px;box-shadow:0 0 0 2px var(--color-primary);border-radius:50%;position:absolute;top:6px}.timeline-item__period{font-size:var(--text-xs);color:var(--color-primary);text-transform:uppercase;letter-spacing:.05em;margin-bottom:var(--space-xs);font-weight:600}.timeline-item__title{font-size:var(--text-lg);margin-bottom:var(--space-xs);font-weight:700}.timeline-item__company{font-size:var(--text-sm);color:var(--color-text-secondary);margin-bottom:var(--space-sm)}.timeline-item__description{font-size:var(--text-sm);color:var(--color-text-muted);line-height:var(--line-height-relaxed)}.contact-links{gap:var(--space-md);flex-wrap:wrap;display:flex}.skeleton{background:var(--color-bg-tertiary);border-radius:var(--radius-md);animation:1.5s ease-in-out infinite skeleton-pulse}.skeleton-card{border:1px solid var(--color-border-light);border-radius:var(--radius-lg);padding:var(--space-lg);align-items:center;gap:var(--space-sm);flex-direction:column;display:flex}.skeleton-card__image{border-radius:var(--radius-md);width:96px;height:96px}.skeleton-card__text{border-radius:var(--radius-sm);width:80%;height:16px}.skeleton-card__text--short{width:50%}.error-state{text-align:center;padding:var(--space-4xl) var(--space-lg)}.error-state__title{font-size:var(--text-2xl);margin-bottom:var(--space-md);font-weight:700}.error-state__message{color:var(--color-text-secondary);margin-bottom:var(--space-xl)}.empty-state{text-align:center;padding:var(--space-3xl) var(--space-lg);color:var(--color-text-muted)}.empty-state__icon{font-size:var(--text-4xl);margin-bottom:var(--space-md)}.empty-state__text{font-size:var(--text-lg)}@keyframes gradient-shift{0%{background-position:0%}50%{background-position:100%}to{background-position:0%}}@keyframes typing{0%{width:0}to{width:34ch}}@keyframes blink-caret{50%{border-color:#0000}}@keyframes fill-bar{0%{width:0}}@keyframes fade-up{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes skeleton-pulse{0%,to{opacity:1}50%{opacity:.4}}.fade-up{opacity:0;animation:.5s forwards fade-up}.fade-up--delay-1{animation-delay:.1s}.fade-up--delay-2{animation-delay:.2s}.fade-up--delay-3{animation-delay:.3s}.fade-up--delay-4{animation-delay:.4s}.fade-up--delay-5{animation-delay:.5s}.fade-up--delay-6{animation-delay:.6s}@media (width<=640px){.hero__name{font-size:var(--text-3xl)}.hero__role{font-size:var(--text-lg)}.pokemon-detail__body{grid-template-columns:1fr}.about-header{text-align:center;flex-direction:column}.about-intro__bio{max-width:none}.section{padding:var(--space-2xl) var(--space-lg)}.github-page__grid,.github-page__grid--loading{grid-template-columns:1fr}}@media (width<=768px){.grid--skills{grid-template-columns:repeat(auto-fill,minmax(240px,1fr))}.grid--pokemon{grid-template-columns:repeat(auto-fill,minmax(160px,1fr))}.pokemon-controls{flex-direction:column}.search-input{min-width:100%}.github-repo-card__footer{flex-direction:column;align-items:flex-start}}@media (width>=1024px){.timeline{padding-left:var(--space-3xl)}}.museum{background:var(--museum-bg);width:100%;height:calc(100vh - 64px);position:relative;overflow:hidden}.museum__canvas{width:100%;height:100%;display:block}.museum__overlay{padding:var(--space-lg);background:var(--museum-overlay-bg);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);cursor:pointer;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.museum__overlay-content{text-align:center;color:var(--museum-color-text);background:var(--museum-card-bg);max-width:28rem;box-shadow:var(--museum-card-shadow);border:none;border-radius:1.5rem;padding:clamp(1.5rem,3vw,2.5rem);position:relative}.museum__overlay-content:before{display:none}.museum__overlay-eyebrow{margin-bottom:var(--space-md);font-size:var(--text-xs);letter-spacing:.24em;text-transform:uppercase;color:var(--museum-color-eyebrow);font-weight:700}.museum__overlay-title{letter-spacing:.08em;text-transform:uppercase;color:var(--museum-color-title);margin-bottom:var(--space-md);text-shadow:var(--museum-title-shadow);font-size:clamp(2.5rem,5vw,4rem);font-weight:600}.museum__overlay-text{font-size:var(--text-base);line-height:var(--line-height-relaxed);color:var(--museum-color-muted)}.museum__overlay-hint{margin-top:var(--space-lg);font-size:var(--text-sm);letter-spacing:.12em;text-transform:uppercase;color:var(--museum-color-hint);font-weight:600}@media (width<=640px){.museum{height:calc(100vh - 56px)}.museum__overlay-content{max-width:100%;padding:var(--space-lg)}.museum__overlay-title{font-size:clamp(2rem,12vw,3rem)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms;animation-duration:.01ms;animation-iteration-count:1}html{scroll-behavior:auto}.hero__role{border-right:none;width:100%}}:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}
