body,nav a{color:var(--text)}.logo,nav a{text-decoration:none}.hero::before,nav a::after{content:"";position:absolute}.hero,header,nav a{position:relative}.disclaimer a,.project-detail-body .legal-links a{text-decoration:underline;text-underline-offset:3px}.ribbon,.tag-list li{text-transform:uppercase}.disclaimer a,.link{text-underline-offset:3px}.footer-copy,.hero,.privacy-note,.ribbon,.section-title{text-align:center}.email-text,.hero::before,.preview-count,.preview-overlay,.scroll-progress{pointer-events:none}*{margin:0;padding:0;box-sizing:border-box}:root{--primary:#ff9f43;--primary-light:#ffb866;--primary-dark:#e8872f;--primary-gradient-end:#ff8f3d;--primary-hover:#ffb866;--accent-green:#4ade80;--accent-green-muted:#6e9e6e;--accent-markandfind:#22c55e;--accent-error:#f87171;--bg-page:#0d0e10;--bg-body-start:#0d0e10;--bg-body-mid:#15120f;--bg-dark:#0a0a0a;--bg-card:#18191a;--bg-green:#0f1f0f;--bg-kbd:#2a2a2a;--bg-ribbon:#226138;--text:#ffffff;--text-muted:#a0a0a0;--text-dim:#8f8f96;--text-privacy:#8a8a90;--text-link:#9090b0;--text-logo-accent:#ff8c1a;--border:#292929;--border-green:#2a4a2a;--border-kbd:#444;--gradient-about:#f7b055;--gradient-card:#f7b855;--kbd-text:#ccc;--space-xs:0.35rem;--space-sm:0.5rem;--space-md:1rem;--space-lg:1.5rem;--space-xl:2rem;--space-2xl:2.5rem;--space-3xl:3rem;--space-4xl:4rem;--space-detail:1.25rem;--space-text-block:0.85rem;--space-form-gap:1.2rem;--space-btn-y:0.65rem;--space-xxs:0.25rem;--shadow-spread:0 10px 40px;--text-xs:0.82rem;--text-sm:0.85rem;--text-base:0.92rem;--text-md:0.95rem;--text-lg:1.3rem;--text-xl:1.6rem;--radius-sm:8px;--radius-md:12px;--radius-lg:16px;--card-max-width:680px}html{scroll-behavior:smooth;scroll-padding-top:1rem;background:var(--bg-page)}body{font-family:"Segoe UI",Tahoma,Geneva,Verdana,sans-serif;background:linear-gradient(135deg,var(--bg-body-start) 0,var(--bg-body-mid) 50%,var(--bg-body-start) 100%);line-height:1.6}.container{max-width:1200px;margin:0 auto;padding:0 20px}.about,.hero{padding:var(--space-3xl) 0 var(--space-md)}.btn,.copy-btn,.detail-btn,.email-reveal,.email-text,.github-icon,.logo,.preview-arrow,.preview-count,.preview-modal-close,.preview-modal-img,.preview-modal-nav,.preview-overlay,.preview-thumb,.preview-thumb-btn,.privacy-promise-header svg,.project-icon,.project-icon img,.project-link,.ribbon,.scroll-progress,.skip-link,.tag-list li,.to-top-btn,nav a{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}header{z-index:100}.header-content{display:flex;justify-content:space-between;align-items:center}.logo{display:flex;align-items:center;height:70px;overflow:hidden}.logo::before{content:"";display:inline-block;width:160px;height:100px;background-image:url("/assets/icons/logo.png");background-size:contain;background-repeat:no-repeat;background-position:left center;flex-shrink:0}.email-shown[hidden],.logo-text,.preview-modal-nav[hidden],.preview-modal[hidden]{display:none}nav{display:flex;gap:var(--space-xl);align-items:center}nav a{transition:color .3s;font-size:var(--text-md)}nav a::after{bottom:-5px;left:0;width:0;height:2px;background:var(--primary);transition:width .3s}nav a:hover{color:var(--primary-light)}nav a:hover::after{width:100%}.hero{animation:.6s ease-out fadeInSection}.hero::before{top:50%;left:50%;transform:translate(-50%,-50%);width:50%;height:100%;background:radial-gradient(circle,rgba(255,159,67,.14) 0,transparent 100%);filter:blur(40px)}.about-inner::before,.project-card::before{content:"";top:0;left:0;right:0;height:3px}.hero h1{font-size:clamp(2.5rem, 5vw, 4rem);margin-bottom:var(--space-md);position:relative;z-index:1;line-height:1.2}.about-inner,.hero p{margin:0 auto;position:relative}.hero p{font-size:clamp(1rem, 2vw, 1.2rem);color:var(--text-muted);max-width:560px;z-index:1}.about-inner{max-width:var(--card-max-width);background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-2xl);overflow:hidden}.about-inner::before{position:absolute;background:linear-gradient(90deg,var(--primary),var(--gradient-about))}.about h2{font-size:var(--text-xl);color:var(--primary-light);margin-bottom:var(--space-detail)}.about p{color:var(--text-muted);margin-bottom:var(--space-md);font-size:.97rem;line-height:1.7}.about p:last-child{margin-bottom:0}.tag-list{list-style:none;display:flex;flex-wrap:wrap;justify-content:center;gap:var(--space-sm);margin:var(--space-lg) auto 0;padding:0;max-width:640px;position:relative;z-index:1}.tag-list li{border:1px solid var(--primary);color:var(--primary-light);border-radius:999px;padding:.25rem .85rem;font-size:var(--text-sm);font-weight:600;letter-spacing:.06em}.about-contact h3,.project-card h3{font-size:var(--text-lg);margin-bottom:var(--space-sm);color:var(--text)}.about-contact{border-top:1px solid var(--border);margin-top:var(--space-xl);padding-top:var(--space-xl);scroll-margin-top:5rem}.about .privacy-note{color:var(--text-privacy);font-size:.8rem;margin:var(--space-md) 0 0;line-height:1.5}.section-title{font-size:clamp(2rem, 4vw, 3rem);margin-top:var(--space-xl);margin-bottom:var(--space-3xl);background:linear-gradient(135deg,var(--primary-light),var(--primary-gradient-end));-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}.projects{scroll-margin-top:1rem}.projects-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-xl);margin-bottom:var(--space-4xl)}.project-card,.project-icon{display:flex;overflow:hidden}.project-card.row-stretch{align-self:stretch}.projects-grid--single{grid-template-columns:1fr;max-width:540px}.project-card{flex-direction:column;align-self:start;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-xl);transition:transform .3s,border-color .3s,box-shadow .3s,opacity .5s;position:relative;isolation:isolate}.project-card::after{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;opacity:0;transition:opacity .3s;background:radial-gradient(360px circle at var(--mx,50%) var(--my,50%),rgba(255,159,67,.08),transparent 70%)}.project-card:hover .preview-overlay,.project-card:hover::after{opacity:1}.project-card::before{position:absolute;background:linear-gradient(90deg,var(--primary),var(--gradient-card));transform:scaleX(0);transition:transform .3s}.project-card:hover{transform:translateY(-8px);border-color:var(--primary);box-shadow:var(--shadow-spread) rgba(255,216,65,.3)}.project-card:hover::before{transform:scaleX(1)}.project-icon{width:50px;height:50px;border-radius:var(--radius-md);align-items:center;justify-content:center;margin-bottom:var(--space-md);transition:transform .3s;background:0 0;flex-shrink:0}.project-icon img{width:100%;height:100%;object-fit:contain}.project-card:hover .project-icon{transform:scale(1.1) rotate(5deg)}.tool-icon-svg{width:32px;height:32px;fill:var(--accent-markandfind)}#mask0_1_219{mask-type:luminance}.project-detail-body p,.project-detail-body ul{font-size:var(--text-base);line-height:1.65;margin-bottom:var(--space-text-block)}.project-short-desc{color:var(--text-muted);font-size:var(--text-base);line-height:1.55;margin-bottom:0}.project-detail-body{display:grid;grid-template-rows:0fr;margin-top:0;transition:grid-template-rows .3s,margin-top .3s}.detail-btn,.project-link{font-weight:500;transition:.3s;text-decoration:none}.project-detail-body.is-open{grid-template-rows:1fr;margin-top:var(--space-detail)}.detail-inner{overflow:hidden;min-height:0}.detail-content{padding-top:var(--space-detail);border-top:1px solid var(--border)}.project-detail-body p{color:var(--text-muted)}.project-detail-body ul{color:var(--text-muted);padding-left:var(--space-form-gap)}.detail-btn,.disclaimer a,.project-link{color:var(--primary-light)}.project-detail-body li{margin-bottom:.3rem}.project-detail-body .legal-links{display:flex;flex-wrap:wrap;align-items:center;gap:.2rem 1.2rem;margin-top:var(--space-sm);font-size:var(--text-xs);justify-content:center}.project-detail-body .legal-links a{position:relative;color:var(--text-muted);transition:color .2s}.project-detail-body .legal-links a:focus-visible,.project-detail-body .legal-links a:hover{color:var(--primary-light)}.project-detail-body .disclaimer .legal-links{margin-top:0}.legal-links a+a::before{content:"·";position:absolute;left:-.75rem;color:var(--text-dim);text-decoration:none}.project-detail-body .disclaimer{font-size:var(--text-xs);color:var(--text-dim);border-top:1px solid var(--border);padding-top:var(--space-text-block);margin-top:var(--space-sm)}.privacy-promise{display:flex;flex-direction:column;gap:var(--space-xs);background:var(--bg-green);border:1px solid var(--border-green);border-radius:var(--radius-sm);padding:var(--space-text-block) var(--space-md);margin-bottom:var(--space-xxs)}.privacy-promise-header{display:flex;align-items:center;gap:var(--space-sm)}.privacy-promise-header svg{flex-shrink:0}.privacy-promise strong{color:var(--accent-green);font-size:var(--text-sm)}.privacy-promise p{color:var(--accent-green-muted);font-size:.84rem;margin:0;line-height:1.5}.project-actions{display:flex;gap:var(--space-md);align-items:center;flex-wrap:wrap;margin-top:auto;padding-top:var(--space-lg)}.project-link{display:inline-flex;align-items:center;border-bottom:2px solid transparent;font-size:var(--text-md)}.project-link::after{content:"↗";font-size:var(--text-md);margin-left:var(--space-xxs)}.project-link:hover{transform:translateY(-3px);border-bottom:2px solid var(--primary-light)}.github-icon{display:inline-flex;align-items:center;justify-content:center;background-color:var(--text);border-radius:4px;padding:3px;margin-right:var(--space-xs)}.github-icon img{width:16px;height:16px;display:block}.detail-btn{padding:var(--space-sm) var(--space-md);background:var(--bg-dark);border:1px solid var(--primary);border-radius:var(--radius-sm);cursor:pointer;font-size:.9rem;display:inline-block}.detail-btn.active,.detail-btn:hover{background:var(--primary);color:var(--bg-page);transform:translateY(-2px)}kbd{font-family:monospace;font-size:.8rem;background:var(--bg-kbd);border:1px solid var(--border-kbd);border-radius:4px;padding:1px 5px;color:var(--kbd-text)}.ribbon{position:absolute;top:29px;right:-34px;transform:rotate(45deg);background-color:var(--bg-ribbon);color:var(--text);font-size:12px;font-weight:700;letter-spacing:.5px;padding:6px 40px;z-index:2}.email-box{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-sm);padding:var(--space-btn-y) .9rem;display:flex;align-items:center;justify-content:center;min-height:3rem}.copy-btn,.email-reveal{border:none;font-family:inherit}.email-reveal{background:0 0;color:var(--text-muted);font-size:var(--text-md);cursor:pointer;width:100%;padding:0}.email-reveal:hover{color:var(--primary-light)}.email-shown{display:flex;align-items:center;justify-content:space-between;gap:var(--space-md);width:100%;cursor:not-allowed}.email-text{color:var(--text);font-size:var(--text-md);unicode-bidi:bidi-override;direction:rtl}.copy-btn{background:var(--primary);color:var(--bg-page);border-radius:var(--radius-sm);padding:.4rem var(--space-md);font-weight:600;cursor:pointer;flex-shrink:0;transition:background .3s}.copy-btn:hover{background:var(--primary-hover)}.privacy-note{color:var(--text-privacy);font-size:.8rem;margin-top:var(--space-md)}.link{color:var(--text-link);text-decoration:underline}.btn,.skip-link{text-decoration:none}.link:hover{color:var(--primary)}.footer-copy{color:var(--text-muted);font-size:.9rem;border-top:1px solid var(--border);padding:var(--space-lg)}.to-top-btn{position:fixed;right:24px;bottom:24px;width:44px;height:44px;border-radius:50%;border:none;display:flex;align-items:center;justify-content:center;cursor:pointer;opacity:0;visibility:hidden;transform:translateY(10px);transition:opacity .2s,transform .2s,visibility .2s;z-index:999}.to-top-btn.visible{opacity:1;visibility:visible;transform:translateY(0)}@media (max-width:768px){.logo,nav{display:flex}header{padding:var(--space-md) 0}.header-content{flex-direction:column;align-items:flex-start;gap:var(--space-sm)}.logo{height:44px;overflow:visible;align-items:center;gap:8px}.logo::before{content:"";display:inline-block;width:44px;height:44px;background-image:url("/assets/icons/android-chrome-512x512.png");background-size:contain;background-repeat:no-repeat;background-position:left center;flex-shrink:0}.logo-text{display:inline-block;font-size:1.5rem;font-weight:700;color:var(--text-primary,var(--text))}.logo-accent{color:var(--text-logo-accent)}nav{flex-direction:row;gap:var(--space-lg);overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;width:100%;padding-bottom:4px}nav::-webkit-scrollbar{display:none}nav a{white-space:nowrap;flex-shrink:0;font-size:var(--text-md)}.projects-grid{grid-template-columns:1fr}.hero{padding:1.5rem 0 var(--space-md)}}.btn,.skip-link{font-weight:600}@media (min-width:1200px){html{overscroll-behavior-y:none}}@keyframes fadeInSection{from{opacity:0}to{opacity:1}}.preview-thumb-btn{display:block;width:100%;border:none;background:0 0;padding:0;margin:12px 0;cursor:pointer;border-radius:8px;overflow:hidden;position:relative}.preview-thumb{display:block;width:100%;height:180px;object-fit:cover;object-position:top;border-radius:8px;transition:transform .2s,opacity .2s}.preview-thumb-btn:hover .preview-thumb{transform:scale(1.02);opacity:.9}.preview-overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;gap:8px;background:rgba(0,0,0,.55);color:var(--text);font-weight:600;opacity:0;transition:opacity .2s;border-radius:8px}.preview-note{font-size:var(--text-xs);color:var(--text-dim);margin-top:var(--space-xs)}.preview-modal{position:fixed;inset:0;background:rgba(0,0,0,.85);display:flex;align-items:center;justify-content:center;z-index:1000;padding:24px}.preview-modal.has-gallery{--cap-space:3rem}.preview-modal-figure{margin:0;max-width:100%;display:flex;flex-direction:column;align-items:center;gap:12px}.preview-modal-img{max-width:100%;max-height:calc(100vh - 48px - var(--cap-space,0px));max-height:calc(100dvh - 48px - var(--cap-space,0px));border-radius:8px;box-shadow:var(--shadow-spread) rgba(0,0,0,.5)}.preview-modal-close{position:absolute;top:20px;right:24px;background:0 0;border:none;color:var(--text);font-size:36px;line-height:1;cursor:pointer;padding:4px 10px}.preview-modal-caption{color:var(--text-muted);font-size:var(--text-xs);text-align:center}.preview-count,.preview-modal-nav{position:absolute;color:var(--text)}.preview-modal-nav{top:50%;transform:translateY(-50%);width:44px;height:44px;display:flex;align-items:center;justify-content:center;border-radius:50%;border:1px solid var(--border);background:rgba(0,0,0,.55);font-size:28px;line-height:1;cursor:pointer;z-index:1}.preview-modal-nav:hover{background:rgba(0,0,0,.8)}.preview-modal-prev{left:12px}.preview-modal-next{right:12px}@media (max-width:600px){.preview-modal-nav{width:38px;height:38px;font-size:24px}.preview-modal-prev{left:6px}.preview-modal-next{right:6px}}.preview-count{right:8px;bottom:8px;padding:2px 10px;border-radius:999px;background:rgba(0,0,0,.65);font-size:var(--text-xs)}.project-detail-body li>ul{margin:.3rem 0 .2rem}.hero-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--space-md);margin-top:var(--space-xl);position:relative;z-index:1}.btn{display:inline-block;padding:var(--space-btn-y) 1.4rem;border-radius:10px;border:1px solid var(--primary);font-size:var(--text-md);transition:background .3s,color .3s,transform .2s}.btn:hover{transform:translateY(-2px)}.btn-primary{background:var(--primary);color:var(--bg-page)}.btn-primary:hover{background:var(--primary-light)}.btn-ghost{background:0 0;color:var(--primary-light)}.btn-ghost:hover{background:rgba(255,159,67,.12)}.scroll-progress{position:fixed;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,var(--primary),var(--gradient-about));transform:scaleX(var(--p,0));transform-origin:0 50%;z-index:1000}@supports (animation-timeline:scroll()){.scroll-progress{animation:linear both scroll-progress;animation-timeline:scroll(root)}}@keyframes scroll-progress{from{transform:scaleX(0)}to{transform:scaleX(1)}}.js .about-inner:not(.in),.js .project-card:not(.in),.js .projects .section-title:not(.in){opacity:0;transform:translateY(14px)}.js .about-inner,.js .projects .section-title{transition:opacity .5s,transform .5s}.skip-link{position:absolute;left:var(--space-md);top:-4rem;background:var(--primary);color:var(--bg-page);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-sm);z-index:1100}.skip-link:focus{top:var(--space-sm)}a:focus-visible,button:focus-visible{outline:2px solid var(--primary-light);outline-offset:3px}.preview-thumb-btn:focus-visible .preview-overlay{opacity:1}@media (min-width:769px){html{scroll-padding-top:5.5rem}header{position:sticky;top:0;background:var(--bg-page);border-bottom:1px solid var(--border)}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,::after,::before{transition-duration:0s!important}.hero{animation:none}.js .about-inner:not(.in),.js .project-card:not(.in),.js .projects .section-title:not(.in){opacity:1;transform:none}}