@import "https://fonts.googleapis.com/css2?family=Outfit:wght@400;500;700&display=swap";@import "https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;700&display=swap";@import "https://fonts.googleapis.com/css2?family=Outfit:wght@400;500;700&family=IBM+Plex+Mono:wght@400;500&display=swap";*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--font-family:"Outfit", system-ui, -apple-system, sans-serif;--sidebar-bg:#f5f0fa;--sidebar-text:#1a1a1a;--sidebar-border:#c4b5d4;--sidebar-logo-filter:none;--sidebar-icon-filter:none;--sidebar-selected:#1a1a1a;--about-bg-base:#e8e0f0;--about-gradient-cyan:#00f5ff;--about-gradient-cyan-mid:#8ed8dc;--about-gradient-fuchsia:#f75fff;--about-gradient-fuchsia-mid:#d88ecf;--about-text:#1a0a2e;--about-brain-opacity:.3;--svc-overlay-bg:#f5f0fabf;--svc-text:#1a0a2e;--svc-heading:#1a0a2e;--svc-subtitle:#1a0a2eb3;--lang-border:#c4b5d4;--lang-bg:transparent;--lang-text:#1a1a1a;--lang-option-bg:#f5f0fa;--powered-link:#1a1a1a}[data-mode=dark]{--sidebar-bg:#1a0a2e;--sidebar-text:#fff;--sidebar-border:#64537e;--sidebar-logo-filter:brightness(0) invert(1);--sidebar-icon-filter:brightness(0) invert(1);--sidebar-selected:#f0c040;--about-bg-base:#1a0a2e;--about-gradient-cyan-mid:#18647e;--about-gradient-fuchsia-mid:#ac2398;--about-text:#fff;--about-brain-opacity:.77;--svc-overlay-bg:#1a0a2ea6;--svc-text:#ffffffe6;--svc-heading:#fff;--svc-subtitle:#fffc;--lang-border:#64537e;--lang-text:#fff;--lang-option-bg:#1a0a2e;--powered-link:#fff;--color-accent:#2a5ada}body{font-family:var(--font-family);color:var(--color-text);background:var(--color-bg);line-height:1.6}html,body{width:100%;height:100%}.App{min-height:100dvh;display:flex}.App .mobile-only{display:none!important}.App .sidebar{border-right:3px solid var(--sidebar-border);background:var(--sidebar-bg);width:220px;color:var(--sidebar-text);flex-direction:column;padding:1rem;display:flex}.App .sidebar .brand-logo-text{width:100%;height:auto;filter:var(--sidebar-logo-filter);margin-bottom:.5rem;display:block}.App .sidebar .brand-logo{justify-content:center;align-items:center;margin-bottom:1.5rem;display:flex}.App .sidebar .brand-logo img{max-width:66%;height:auto}.App .sidebar nav{flex-direction:column;flex:1;gap:.25rem;display:flex}.App .sidebar nav .nav-item{flex-direction:column;display:flex}.App .sidebar nav a{color:inherit;border-radius:.25rem;padding:.5rem .75rem;text-decoration:none}.App .sidebar nav a .nav-icon{vertical-align:middle;width:18px;height:18px;filter:var(--sidebar-icon-filter,none);margin-right:.5rem}.App .sidebar nav a:hover{background:#0000000d}.App .sidebar nav a.selected{color:var(--sidebar-selected);background:#00000014;font-weight:700}.App .sidebar nav .nav-children{flex-direction:column;max-height:0;padding-left:1rem;transition:max-height .3s;display:flex;overflow:hidden}.App .sidebar nav .nav-children .nav-child{opacity:.75;padding:.3rem .75rem;font-size:.85rem}.App .sidebar nav .nav-children .nav-child:hover{opacity:1}.App .sidebar footer{opacity:.5;padding-top:1rem;font-size:.75rem}.App .sidebar footer .social-link{vertical-align:middle;color:var(--sidebar-text);margin-left:.5rem;display:inline-block}.App .sidebar footer .social-icon{width:1rem;height:1rem}.App .sidebar .powered-by{opacity:.4;margin-top:1rem;font-size:.7rem}.App .sidebar .powered-by a{color:var(--powered-link);text-decoration:none}.App .sidebar .lang-wrapper{align-items:center;gap:.5rem;width:100%;margin-top:.75rem;display:flex}.App .sidebar .lang-wrapper .lang-icon{width:24px;height:24px;filter:var(--sidebar-icon-filter)}.App .sidebar .lang-wrapper .mode-toggle{border:1px solid var(--lang-border);cursor:pointer;background:0 0;border-radius:.25rem;margin-left:auto;padding:.15rem .35rem;line-height:1;display:flex}.App .sidebar .lang-wrapper .mode-toggle img{width:20px;height:20px;filter:var(--sidebar-icon-filter)}.App .sidebar .lang-selector{border:1px solid var(--lang-border);cursor:pointer;background:var(--lang-bg);color:var(--lang-text);border-radius:.25rem;padding:.25rem .5rem;font-family:inherit;font-size:.85rem}.App .sidebar .lang-selector option{background:var(--lang-option-bg);color:var(--lang-text)}.App .app-version{opacity:.35;text-align:right;margin-top:.25rem;font-size:.65rem}.App main{flex:1;padding:0;overflow:hidden}.App main>.page{padding:1.5rem}.App main>.ServicesPage,.App main>.BlogPage{height:100dvh}@media (width<=768px){.App{flex-direction:column}.App .mobile-only{display:flex!important}.App .sidebar{z-index:100;border-right:none;border-top:2px solid var(--sidebar-border);flex-direction:row;width:100%;padding:0;position:fixed;bottom:0;left:0;right:0}.App .sidebar .brand-logo-text,.App .sidebar .brand-logo,.App .sidebar footer,.App .sidebar .powered-by,.App .sidebar .lang-wrapper,.App .sidebar .lang-selector,.App .sidebar .nav-children,.App .sidebar .app-version{display:none!important}.App .sidebar nav{flex-direction:row;flex:1;gap:0}.App .sidebar nav .nav-item{flex:1}.App .sidebar nav a[data-route-id]{text-align:center;flex-direction:row;justify-content:center;align-items:center;min-height:44px;padding:.5rem .25rem;font-size:.8rem;display:flex}.App .sidebar nav a[data-route-id] .nav-icon{width:20px;height:20px;margin-bottom:0;margin-right:.35rem}.App .sidebar nav a[data-route-id]{border-radius:0}.App .sidebar nav a[data-route-id].selected{background:#0000001f}.App main{padding-bottom:50px}.App main .settings-page{color:var(--sidebar-text);background:var(--sidebar-bg);min-height:100%;padding:2rem}.App main .settings-page h2{margin-bottom:1.5rem}.App main .settings-page .settings-controls{flex-direction:column;gap:1.5rem;display:flex}.App main .settings-page .settings-controls label{justify-content:space-between;align-items:center;font-size:.95rem;display:flex}.App main .settings-page .settings-controls .lang-selector{border:1px solid var(--lang-border);background:var(--lang-bg);color:var(--lang-text);border-radius:.25rem;padding:.5rem;font-family:inherit;font-size:16px}.App main .settings-page .settings-controls .lang-selector option{background:var(--lang-option-bg);color:var(--lang-text);font-size:16px}.App main .settings-page .settings-controls .mode-toggle{border:1px solid var(--lang-border);cursor:pointer;background:0 0;border-radius:.25rem;padding:.25rem .4rem;display:flex}.App main .settings-page .settings-controls .mode-toggle img{width:20px;height:20px;filter:var(--sidebar-icon-filter)}.App main>.ServicesPage{height:calc(100vh - 50px)}}.ServicesPage{height:100%;font-family:IBM Plex Mono,monospace}.ServicesPage .img-modal{z-index:1000;cursor:pointer;background:#000000d9;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.ServicesPage .img-modal img{border-radius:.5rem;max-width:90vw;max-height:90vh}.ServicesPage .services-scroll{height:100%;position:relative;overflow:hidden auto}.ServicesPage .bg-layer{background-position:50%;background-size:cover;width:100%;height:100dvh;margin-bottom:-100dvh;position:sticky;top:0;left:0}.ServicesPage .bg-layer:first-child{opacity:1}.ServicesPage .bg-layer:after{content:"";background:#00000059;position:absolute;inset:0}.ServicesPage .sections-wrapper{z-index:2;background:var(--svc-overlay-bg);max-width:820px;margin:0 auto;padding-bottom:60vh;position:relative}.ServicesPage .contrast-layer{z-index:1;pointer-events:none;height:100dvh;margin-bottom:-100dvh;position:sticky;top:0}.ServicesPage .scroll-section{flex-direction:column;display:flex;position:relative}.ServicesPage .scroll-section:first-child .scroll-header{padding-top:30%}.ServicesPage .scroll-header{text-align:center;padding:8% 2rem 2rem;transition:opacity .15s linear}.ServicesPage .scroll-header h2{color:var(--svc-heading);text-shadow:0 2px 8px #00000080;margin-bottom:.5rem;font-size:2.5rem}.ServicesPage .scroll-header .subtitle{color:var(--svc-subtitle);text-shadow:0 1px 4px #00000080;font-size:1.2rem}.ServicesPage .scroll-body{max-width:680px;margin:0 auto;padding:2rem}.ServicesPage .scroll-body .section-inline-img{float:left;border:2px solid var(--sidebar-border);cursor:pointer;border-radius:.5rem;width:140px;height:auto;margin:0 1.5rem 1rem 0}.ServicesPage .scroll-body p{color:var(--svc-text);text-shadow:0 1px 3px #0006;margin-bottom:1.5rem;font-size:1.05rem;line-height:1.9}.ServicesPage .scroll-body p .fade-line{opacity:0;transition:opacity .1s linear}.AboutPage{background:radial-gradient(ellipse at bottom left, var(--about-gradient-cyan) 0%, var(--about-gradient-cyan-mid) 30%, transparent 65%), radial-gradient(ellipse at bottom right, var(--about-gradient-fuchsia) 0%, var(--about-gradient-fuchsia-mid) 30%, transparent 65%), var(--about-bg-base);height:100%;color:var(--about-text);flex-direction:column;display:flex;position:relative;overflow-y:auto}.AboutPage[hidden]{display:none}.AboutPage .about-bg{pointer-events:none;position:absolute;inset:0;overflow:hidden}.AboutPage .about-bg img{width:50vw;height:auto;opacity:var(--about-brain-opacity,.8);position:absolute;top:50%}.AboutPage .about-bg .brain-left{left:0;transform:translate(-50%,-50%)}.AboutPage .about-bg .brain-right{right:0;transform:translate(50%,-50%)}.AboutPage .about-header{text-align:center;padding:8% 2rem 4%;position:relative}.AboutPage .about-header h1{font-size:2.8rem;font-weight:800}.AboutPage .about-header .subtitle{opacity:.8;margin-top:.5rem;padding:0 20%;font-size:1.2rem}.AboutPage .about-columns{gap:4rem;max-width:100%;margin:0;padding:2rem 4rem;display:flex;position:relative}.AboutPage .about-columns .col{flex:1}.AboutPage .about-columns .col h2{margin-bottom:1rem;font-size:1.4rem}.AboutPage .about-columns .col p{opacity:.9;margin-bottom:1rem;font-size:.95rem;line-height:1.8}.AboutPage .about-columns .col.col-left{letter-spacing:.05em;font-family:Outfit,sans-serif}.AboutPage .about-columns .col.col-right{text-align:right;font-family:IBM Plex Mono,monospace}.AboutPage .about-tagline{text-align:center;margin-top:auto;padding:2rem}.AboutPage .about-tagline .tagline-logo{opacity:.7;width:180px;height:auto}.AboutPage .about-tagline .social-cta{color:var(--about-text);opacity:.7;flex-direction:column;align-items:center;margin-top:1.5rem;font-size:.9rem;display:flex}.AboutPage .about-tagline .social-link{color:var(--about-text);margin-top:.5rem;display:inline-block}.AboutPage .about-tagline .social-icon{width:1.5rem;height:1.5rem}@media (width>=1450px){.AboutPage .about-columns{gap:12rem}}[data-lang=ja] .AboutPage{overflow-y:hidden}[data-lang=ja] .AboutPage .about-columns{justify-content:center}[data-lang=ja] .AboutPage .about-columns .col{writing-mode:vertical-rl;text-align:initial;flex:none;max-height:50vh;overflow:hidden}@media (width<=768px){.AboutPage .about-bg{display:none}.AboutPage .about-header{padding:12% 1.5rem 6%}.AboutPage .about-header h1{font-size:1.8rem}.AboutPage .about-header .subtitle{padding:0;font-size:.95rem}.AboutPage .about-columns{flex-direction:column;gap:2rem;padding:0}.AboutPage .about-columns .col{padding:1.5rem;position:relative;overflow:hidden visible}.AboutPage .about-columns .col:before{content:"";background-position:50%;background-repeat:no-repeat;background-size:contain;background-image:var(--brain-logo);opacity:.25;pointer-events:none;width:100%;height:100%;position:absolute;top:50%;transform:translateY(-50%)}.AboutPage .about-columns .col.col-left:before{margin-left:-50%}.AboutPage .about-columns .col.col-right{text-align:left}.AboutPage .about-columns .col.col-right:before{margin-left:50%}.AboutPage .about-tagline{padding:1rem}.AboutPage .about-tagline .tagline-logo{width:120px}}@media (width<=768px) and (orientation:landscape){.AboutPage .about-columns{flex-direction:row;gap:2rem}.AboutPage .about-columns .col.col-right{text-align:right}}.BlogPage{background:radial-gradient(ellipse at bottom left, var(--about-gradient-cyan) 0%, var(--about-gradient-cyan-mid) 30%, transparent 65%), radial-gradient(ellipse at bottom right, var(--about-gradient-fuchsia) 0%, var(--about-gradient-fuchsia-mid) 30%, transparent 65%), var(--about-bg-base);height:100%;min-height:100%;padding:2rem;overflow:hidden auto}.BlogPage .blog-breadcrumb{color:#e0d6ec;margin-bottom:1.5rem;font-size:.9rem}.BlogPage .blog-breadcrumb a{color:#e0d6ec;text-decoration:none}.BlogPage .blog-breadcrumb a:hover{text-decoration:underline}.BlogPage .blog-breadcrumb span{opacity:.7}.BlogPage .blog-category-grid{flex-wrap:wrap;justify-content:center;gap:1.5rem;display:flex}.BlogPage .blog-category-card{cursor:pointer;background:#ffffffc4;border:2px solid #e0d6ec;border-radius:8px;width:260px;transition:border-color .2s;overflow:hidden}.BlogPage .blog-category-card:hover{border-color:var(--about-gradient-fuchsia)}.BlogPage .blog-category-card img{aspect-ratio:4/3;object-fit:cover;object-position:top;width:100%;display:block}.BlogPage .blog-category-card h3{margin:.75rem 1rem .25rem}.BlogPage .blog-category-card p{opacity:.7;margin:0 1rem 1rem;font-size:.9rem}.BlogPage .blog-category-card .blog-category-count{opacity:.5;margin:0 1rem 1rem;font-size:.8rem;display:block}.BlogPage .blog-preview-list{flex-direction:column;align-items:center;gap:1.5rem;display:flex}.BlogPage .blog-preview-card{background:#ffffffc4;border:2px solid #e0d6ec;border-radius:8px;width:100%;max-width:720px;transition:border-color .2s;overflow:hidden}.BlogPage .blog-preview-card:hover{border-color:var(--about-gradient-fuchsia)}.BlogPage .blog-preview-card img{aspect-ratio:16/9;object-fit:cover;width:100%;display:block}.BlogPage .blog-preview-card h3{color:#1a0a2e;margin:.75rem 1rem .25rem}.BlogPage .blog-preview-card .blog-subtitle{opacity:.7;color:#1a0a2e;margin:0 1rem .5rem;font-size:.9rem}.BlogPage .blog-preview-card time{opacity:.5;margin:0 1rem 1rem;font-size:.8rem;display:block}.BlogPage .blog-preview-card .blog-excerpt{color:#1a0a2e;opacity:.8;margin:0 1rem .75rem;font-size:.9rem;line-height:1.5}.BlogPage .blog-preview-card .blog-read-more{color:#56466a;cursor:pointer;margin:0 1rem 1rem;font-size:.85rem;font-weight:600;display:block}.BlogPage .blog-empty{text-align:center;opacity:.6;color:#e0d6ec;padding:3rem 0}.BlogPage .blog-article{background:#ffffffc4;border:2px solid #e0d6ec;border-radius:8px;max-width:210mm;margin:0 auto;padding:2rem}.BlogPage .blog-article .blog-article-header{align-items:flex-start;gap:1.5rem;margin-bottom:2rem;display:flex}.BlogPage .blog-article .blog-article-meta{flex:1}.BlogPage .blog-article .blog-article-meta h1{margin:0 0 .25rem}.BlogPage .blog-article .blog-article-meta .blog-subtitle{opacity:.7;margin:0 0 .5rem;font-size:1.1rem}.BlogPage .blog-article .blog-article-meta time{opacity:.5;font-size:.8rem}.BlogPage .blog-article .blog-article-image{object-fit:cover;border-radius:6px;flex-shrink:0;width:200px}.BlogPage .blog-article .blog-body{color:#1a0a2e;line-height:1.6}.BlogPage .blog-article .blog-body h2{margin:2rem 0 .6rem;font-size:1.25rem;font-weight:600}.BlogPage .blog-article .blog-body p{margin-bottom:1rem}.BlogPage .blog-article .blog-body hr{border:none;border-top:1px solid #0000001a;margin:2rem 0}.BlogPage .blog-article .blog-body ul,.BlogPage .blog-article .blog-body ol{margin-bottom:1rem;padding-left:1.5rem}.BlogPage .blog-article .blog-body ul li,.BlogPage .blog-article .blog-body ol li{margin-bottom:.35rem}.BlogPage .blog-article .blog-body pre{border-radius:.5rem;max-width:100%;margin:1.5rem 0;padding:1rem;font-size:.85rem;line-height:1.5;overflow-x:auto}.BlogPage .blog-article .blog-body code{font-family:IBM Plex Mono,monospace}.BlogPage .blog-article .blog-body :not(pre)>code{background:#0000000f;border-radius:.25rem;padding:.15rem .35rem;font-size:.9em}@media (width<=768px){.BlogPage{padding:.5rem}.BlogPage .blog-article{border-left:none;border-right:none;border-radius:0;max-width:100%;padding:1rem}.BlogPage .blog-preview-card{cursor:pointer}}code[class*=language-],pre[class*=language-]{color:#ccc;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;tab-size:4;-webkit-hyphens:none;hyphens:none;background:0 0;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;line-height:1.5}pre[class*=language-]{margin:.5em 0;padding:1em;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#2d2d2d}:not(pre)>code[class*=language-]{white-space:normal;border-radius:.3em;padding:.1em}.token.comment,.token.block-comment,.token.prolog,.token.doctype,.token.cdata{color:#999}.token.punctuation{color:#ccc}.token.tag,.token.attr-name,.token.namespace,.token.deleted{color:#e2777a}.token.function-name{color:#6196cc}.token.boolean,.token.number,.token.function{color:#f08d49}.token.property,.token.class-name,.token.constant,.token.symbol{color:#f8c555}.token.selector,.token.important,.token.atrule,.token.keyword,.token.builtin{color:#cc99cd}.token.string,.token.char,.token.attr-value,.token.regex,.token.variable{color:#7ec699}.token.operator,.token.entity,.token.url{color:#67cdcc}.token.important,.token.bold{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.token.inserted{color:green}
