:root{--primary: #6366f1;--primary-hover: #4f46e5;--bg-color: #0f172a;--surface: #1e293b;--text-main: #f8fafc;--text-muted: #94a3b8;--border-color: rgba(255, 255, 255, .05);--header-bg: rgba(15, 23, 42, .85);--card-shadow: rgba(0, 0, 0, .5);--table-border: #0f3460}[data-theme=light]{--bg-color: #f8fafc;--surface: #ffffff;--text-main: #0f172a;--text-muted: #64748b;--border-color: rgba(15, 23, 42, .05);--header-bg: rgba(248, 250, 252, .85);--card-shadow: rgba(0, 0, 0, .05);--table-border: #cbd5e1}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Inter,sans-serif;background-color:var(--bg-color);color:var(--text-main);line-height:1.6;-webkit-font-smoothing:antialiased}::-webkit-scrollbar{width:12px;height:12px}::-webkit-scrollbar-track{background:var(--bg-color)}::-webkit-scrollbar-thumb{background:var(--surface);border-radius:6px;border:3px solid var(--bg-color)}::-webkit-scrollbar-thumb:hover{background:var(--primary)}a{color:var(--primary);text-decoration:none;transition:color .3s ease}a:hover{color:var(--primary-hover)}.container{max-width:1200px;margin:0 auto;padding:0 2rem}header{position:sticky;top:0;z-index:1000;background-color:var(--header-bg);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-bottom:1px solid var(--border-color)}.header-container{display:flex;justify-content:space-between;align-items:center;padding:1.5rem 2rem}.logo{font-size:1.5rem;font-weight:800;background:linear-gradient(135deg,#818cf8,#c084fc);-webkit-background-clip:text;-webkit-text-fill-color:transparent}nav ul{list-style:none;display:flex;gap:2rem}nav a{color:var(--text-main);font-weight:600}nav a:hover{color:var(--primary)}.hamburger{display:none;background:none;border:none;cursor:pointer;padding:.5rem;z-index:1001;flex-direction:column;gap:5px}.hamburger-line{display:block;width:24px;height:2px;background-color:var(--text-main);border-radius:2px;transition:transform .3s ease,opacity .3s ease}.hamburger.open .hamburger-line:nth-child(1){transform:translateY(7px) rotate(45deg)}.hamburger.open .hamburger-line:nth-child(2){opacity:0}.hamburger.open .hamburger-line:nth-child(3){transform:translateY(-7px) rotate(-45deg)}section{padding:2rem 0}.page-label{display:block;font-size:.8rem;font-weight:600;color:var(--primary);opacity:.6;text-transform:uppercase;letter-spacing:.25em;text-align:center;padding-top:4rem;margin-bottom:.5rem}article>h1{font-size:2rem;font-weight:800;line-height:1.1;text-align:center;padding:0 0 1rem}section>h2{font-size:1.6rem;font-weight:800;line-height:1.2;margin-bottom:2rem;text-align:center}section h3{font-size:1.4rem;font-weight:700;line-height:1.3}section h4{font-size:1.25rem;font-weight:600;line-height:1.4}section p{font-size:1.1rem;color:var(--text-muted)}.hero{text-align:center;display:flex;flex-direction:column;align-items:center;gap:1.5rem}.hero p{max-width:600px;color:var(--text-muted)}.btn{display:inline-block;background-color:var(--primary);color:#fff;padding:.8rem 2rem;border-radius:2rem;text-decoration:none;font-weight:600;transition:all .3s ease;border:none;cursor:pointer}.btn:hover{background-color:var(--primary-hover);transform:translateY(-2px);color:#fff}.project-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:2rem}.project-card{background-color:var(--surface);border-radius:1rem;padding:2rem;transition:transform .3s ease,box-shadow .3s ease;border:1px solid var(--border-color)}.project-card:hover{transform:translateY(-5px);box-shadow:0 20px 25px -5px var(--card-shadow)}.project-card h3{margin-bottom:1rem}.project-card p{color:var(--text-muted);margin-bottom:1.5rem}.nav-links a.active{color:var(--primary)}.profile-intro{text-align:center;max-width:700px;margin:0 auto}.profile-name-text{margin-bottom:.5rem}.profile-title-text{display:block;font-size:.8rem;font-weight:600;color:var(--primary);opacity:.6;text-transform:uppercase;letter-spacing:.25em;margin-bottom:.5rem}.profile-bio-text{line-height:1.8;color:var(--text-muted);font-weight:600;font-size:1.1rem;text-align:left;display:inline-block;margin-top:1rem}.empty-message{color:var(--text-muted);font-weight:600;font-size:1.1rem;grid-column:1 / -1;text-align:center;padding:40px 0}.profile-card{margin:1rem auto 0;text-align:left;background:var(--surface);padding:2.5rem;border-radius:1rem;max-width:600px;width:100%;border:1px solid var(--border-color)}.profile-card h3{margin-bottom:1rem}.profile-card ul{list-style:inside;color:var(--text-muted);line-height:2}.contact-form-container{background:var(--surface);padding:3rem;border-radius:1rem;max-width:600px;width:100%;text-align:left;border:1px solid var(--border-color)}.dummy-notice{margin-top:2rem;margin-bottom:0;padding:1rem 1.5rem;background:#6366f11a;border-left:4px solid var(--primary);border-radius:0 .5rem .5rem 0;font-size:.9rem;color:var(--text-main);line-height:1.5}.form-group{margin-bottom:1.5rem}.form-group-last{margin-bottom:2rem}.form-label{display:block;margin-bottom:.5rem;color:var(--text-muted)}.form-control{width:100%;padding:.8rem;border-radius:.5rem;border:1px solid var(--border-color);background:var(--surface);color:var(--text-main);font-family:inherit}.form-control::placeholder{color:var(--text-muted);opacity:.5}.btn-full{width:100%;max-width:300px;text-align:center;display:block}.hero-thanks{min-height:50vh;display:flex;justify-content:center}.thanks-icon{font-size:4rem;margin-bottom:1rem}.thanks-title{margin-bottom:1.5rem;font-size:3rem}.thanks-text{margin-bottom:3rem;color:var(--text-muted)}.btn-secondary{background:transparent;color:var(--text-main);border:2px solid var(--border-color)}.btn-secondary:hover{background-color:var(--border-color);color:var(--text-main)}.cert-tree-container{margin-top:4rem;width:100%;overflow-x:auto;padding-bottom:2rem}.cert-tree{display:flex;white-space:nowrap}.cert-tree ul{display:flex;flex-direction:column;justify-content:center;position:relative;--branch-len: 40px;padding-left:calc(var(--branch-len) + 20px);list-style:none;margin:0}.cert-tree ul:before{content:"";position:absolute;top:50%;left:0;width:20px;border-top:2px solid var(--border-color)}.cert-tree>ul{padding-left:0}.cert-tree>ul:before{display:none}.cert-tree li{display:flex;align-items:center;position:relative;margin-bottom:20px}.cert-tree li:last-child{margin-bottom:0}.cert-tree>ul>li:before,.cert-tree>ul>li:after{display:none}.cert-tree li:after{content:"";position:absolute;top:0;bottom:-20px;left:calc(var(--branch-len) * -1);border-left:2px solid var(--border-color);z-index:0}.cert-tree li:before{content:"";position:absolute;top:50%;left:calc(var(--branch-len) * -1);width:var(--branch-len);border-top:2px solid var(--border-color);z-index:0}.cert-tree li:first-child:before{top:50%;bottom:-20px;height:auto;border-top:2px solid var(--border-color);border-left:2px solid var(--border-color);border-top-left-radius:15px}.cert-tree li:first-child:after{display:none}.cert-tree li:last-child:before{top:0;bottom:50%;height:auto;border-top:none;border-bottom:2px solid var(--border-color);border-left:2px solid var(--border-color);border-bottom-left-radius:15px}.cert-tree li:last-child:after{display:none}.cert-tree li:first-child:last-child:before{top:50%;bottom:auto;height:0;border:none;border-top:2px solid var(--border-color);border-radius:0}.cert-node{padding:1rem 1.5rem;background:var(--surface);border:1px solid var(--border-color);border-radius:.5rem;color:var(--text-muted);display:flex;flex-direction:column;justify-content:center;z-index:1;position:relative;width:250px;min-height:80px;text-align:center;transition:all .3s ease}.cert-name{font-weight:600;line-height:1.4}.cert-date{font-size:.75rem;margin-top:.5rem;opacity:.7}.cert-node.acquired{background:#6366f11a;border-color:var(--primary);color:var(--text-main);box-shadow:0 0 15px #6366f126}.cert-node.acquired .cert-date{color:var(--primary);opacity:1}.cert-node.partial{border:1px solid transparent;background:linear-gradient(#6366f11a,#6366f11a) padding-box,linear-gradient(var(--bg-color),var(--bg-color)) padding-box,linear-gradient(to right,var(--primary) 50%,var(--border-color) 50%) border-box;box-shadow:0 0 15px #6366f11a}.cert-node.partial .cert-date{color:var(--primary);opacity:.8}.cert-node.challenge{background:#6366f11a;box-shadow:0 0 15px #6366f11a}.cert-node.challenge .cert-date{color:var(--primary);opacity:.8}.cert-tree li.li-acquired:before,.cert-tree li.li-acquired:after,.cert-tree li.li-partial:before,.cert-tree li.li-partial:after,.cert-tree li.li-challenge:before,.cert-tree li.li-challenge:after,.cert-tree li.li-acquired:first-child:before,.cert-tree li.li-acquired:last-child:before,.cert-tree li.li-partial:first-child:before,.cert-tree li.li-partial:last-child:before,.cert-tree li.li-challenge:first-child:before,.cert-tree li.li-challenge:last-child:before,.cert-tree li.li-acquired:first-child:last-child:before,.cert-tree li.li-partial:first-child:last-child:before,.cert-tree li.li-challenge:first-child:last-child:before{border-left-color:var(--primary);border-top-color:var(--primary);border-bottom-color:var(--primary)}.cert-tree li.li-acquired>ul:before{border-top-color:var(--primary)}.cert-node.root{background:var(--primary);color:#fff;width:5rem;height:5rem;min-height:auto;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:1.1rem;border:none;box-shadow:0 0 20px #6366f166;padding:0}.credits-table-container{overflow-x:auto}.credits-table{width:100%;border-collapse:collapse;font-size:.95rem;table-layout:fixed}.credits-table thead th{text-align:left;padding:1rem;border-bottom:2px solid rgba(255,255,255,.1);color:var(--text-main);font-weight:600}.credits-table th:nth-child(1),.credits-table td:nth-child(1){width:30%;min-width:180px}.credits-table th:nth-child(2),.credits-table td:nth-child(2){width:25%;min-width:150px}.credits-table tbody td{padding:1rem;border-bottom:1px solid var(--border-color);color:var(--text-muted);vertical-align:middle;word-wrap:break-word;overflow-wrap:break-word}.credits-table tbody tr:hover{background:#ffffff05}.credits-table a{color:var(--primary)}.credits-empty td{text-align:center;padding:2rem 1rem;font-style:italic;opacity:.6}footer{text-align:center;padding:3rem 0;color:var(--text-muted);border-top:1px solid var(--border-color);margin-top:5rem}footer p{font-size:.85rem}.footer-sns{display:flex;justify-content:center;gap:1.5rem;margin-top:1.5rem;margin-bottom:1.5rem}.sns-icon{display:flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:50%;background:var(--surface);color:var(--text-muted);opacity:.5;border:1px solid var(--border-color);transition:all .3s ease;cursor:default}.sns-icon:hover{opacity:.8}.sns-icon.linked{color:var(--text-main);cursor:pointer;background:#6366f11a;border-color:var(--primary);box-shadow:0 0 12px #6366f126;opacity:1}.sns-icon.linked:hover{color:#fff;background:var(--primary);border-color:var(--primary);transform:translateY(-3px);box-shadow:0 5px 15px #6366f14d;opacity:1}@media (max-width: 768px){section{padding:2rem 0}.container{padding:0 1.25rem}.contact-form-container{padding:2rem 1.5rem;max-width:100%}.page-label{font-size:.7rem;padding-top:2rem;margin-bottom:.2rem}article>h1{font-size:1.6rem;padding:0 0 .5rem}.hero p{font-size:1rem}.hamburger{display:flex}.header-container{flex-wrap:wrap;padding:1rem 2rem}#global-nav{display:none;position:absolute;top:100%;left:0;width:100%;background-color:var(--header-bg);backdrop-filter:blur(15px);-webkit-backdrop-filter:blur(15px);border-bottom:1px solid var(--border-color);z-index:1000}#global-nav.open{display:block;animation:slideDown .3s ease}#global-nav ul{flex-direction:column;gap:0;padding:1rem 2rem}#global-nav ul li{border-top:1px solid var(--border-color)}#global-nav ul li:first-child{border-top:none}#global-nav ul li a{display:block;padding:1.2rem 0;font-size:1.1rem}.project-grid{grid-template-columns:1fr}}@keyframes slideDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.theme-toggle{background:none;border:none;cursor:pointer;padding:.5rem;display:flex;align-items:center;justify-content:center;color:var(--text-main);transition:transform .3s ease;order:2}.theme-toggle:hover{transform:scale(1.1);color:var(--primary)}.theme-toggle .sun-icon{display:none}.theme-toggle .moon-icon,[data-theme=light] .theme-toggle .sun-icon{display:block}[data-theme=light] .theme-toggle .moon-icon{display:none}@media (max-width: 768px){.hamburger{display:flex;order:0;margin-right:.5rem}.logo{order:1;flex:1;text-align:center}.theme-toggle{order:2;margin-left:auto;margin-right:1rem}}.skill-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:1.5rem}.skill-card{height:100%}.project-card p{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis}.project-details p,.project-details li,.project-details td{color:var(--text-muted)}.table-responsive{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.config-modal{display:none;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background:var(--surface);padding:2rem;border-radius:12px;box-shadow:0 10px 25px #00000080;z-index:1000;width:90%;max-width:400px;text-align:center}.config-modal.active{display:block}.config-modal h3{margin-top:0;margin-bottom:1.5rem;color:var(--text-color)}.config-item{margin-bottom:1.5rem;text-align:left}.config-item label{display:block;margin-bottom:.5rem;color:var(--text-muted)}.config-item input[type=range]{width:100%}.modal-overlay{display:none;position:absolute;top:0;left:0;width:100%;height:100%;background:#0009;z-index:999;border-radius:inherit}.modal-overlay.active{display:block}ul{padding-left:1.5rem}@media (max-width: 640px){.game-container{padding:1rem}}.project-details ul{padding-left:1.5rem}@media (max-width: 640px){.game-container{padding:1rem!important}}.icon-config{position:absolute;top:1rem;right:1rem;cursor:pointer;font-size:1.5rem;transition:transform .2s,filter .2s;z-index:20}.icon-config:hover{transform:rotate(90deg);filter:brightness(1.2)}.link-credits{position:absolute;top:1rem;left:1rem;cursor:pointer;font-size:.9rem;color:var(--text-muted);text-decoration:underline;transition:color .2s;z-index:20}.link-credits:hover{color:var(--text-main)}.game-container{--bg-color: #0f172a;--surface: #1e293b;--text-main: #f8fafc;--text-muted: #94a3b8;--border-color: rgba(255, 255, 255, .15);--header-bg: rgba(15, 23, 42, .85);--card-shadow: rgba(0, 0, 0, .5);color:var(--text-main)}.game-container{position:relative;width:100%;margin-top:2rem;margin-bottom:2rem;border:2px solid var(--border-color);border-radius:8px;box-shadow:0 8px 24px #0000004d;overflow:hidden;background-color:var(--bg-color)}:global([data-theme=dark]) .game-container{background-color:var(--surface)}.game-container .btn-secondary{background:#6366f126;color:var(--text-main);border:1px solid rgba(99,102,241,.4);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}.game-container .btn-secondary:hover{background:#6366f14d;border-color:var(--primary)}.game-container canvas{display:block;width:100%;height:100%;touch-action:none;position:relative;z-index:1}.overlay{position:absolute;top:0;left:0;width:100%;height:100%;background:#000000d9;display:none;flex-direction:column;align-items:center;justify-content:center;color:#fff;z-index:10;pointer-events:auto}.overlay.active{display:flex}.modal-inner{background-color:var(--bg-secondary, #111111);padding:2rem;border-radius:8px;border:2px solid var(--border-color, #0f3460);text-align:center;width:90%;max-width:400px;pointer-events:auto}.btn:disabled{opacity:.5;cursor:not-allowed}.project-details{margin-top:3rem;padding-top:2rem;border-top:1px solid var(--table-border)}.project-details h2{font-size:1.25rem;margin-top:2rem;margin-bottom:1rem;padding-bottom:.5rem;border-bottom:1px solid var(--table-border)}.project-details h2:first-of-type{margin-top:0}.description{line-height:1.8;color:var(--text-muted, #aaa)}.tech-table{width:100%;border-collapse:collapse;margin-top:1rem}.tech-table th,.tech-table td{padding:1rem;border:1px solid var(--table-border);text-align:left}.tech-table th{width:30%;font-weight:700}.materials-list ul{list-style-type:none;padding:0;margin:0}.materials-list li{margin-bottom:.5rem;padding-left:1.5rem;position:relative;color:var(--text-muted, #aaa)}.materials-list li:before{content:"✓";position:absolute;left:0;color:var(--primary-color, #e94560)}
