:root{color-scheme:light;font-family:Space Grotesk,system-ui,sans-serif;--font-display: "Fraunces", Georgia, serif;--ink: #111827;--muted: #4b5563;--subtle: #6b7280;--accent: #2557d6;--accent-soft: #e9efff;--accent-strong: #173a96;--green: #0f766e;--green-soft: #e6f4f1;--amber: #b45309;--amber-soft: #fff4df;--surface: #ffffff;--surface-muted: #f5f7fb;--page: #f8fafc;--line: rgba(17, 24, 39, .12);--shadow: 0 18px 44px rgba(17, 24, 39, .1)}*{box-sizing:border-box}body{margin:0;color:var(--ink);background:linear-gradient(180deg,#fbfcff 0%,var(--page) 52%,#eef3f8 100%);min-height:100vh;overflow-x:hidden;transition:background .3s ease,color .3s ease}.site-header,.site-footer,.card,.hero-panel,.filter-chip,.contact-card,.tag-chip,.nav-link,.detail-block,.skill-card,.switch,.focus-card,.case-summary{transition:background .3s ease,color .3s ease,border-color .3s ease,box-shadow .3s ease}a{color:inherit;text-decoration:none}:focus-visible{outline:3px solid var(--accent);outline-offset:3px}.skip-link{position:fixed;top:12px;left:12px;z-index:20;padding:10px 14px;border-radius:8px;background:var(--accent);color:#fff;font-weight:700;transform:translateY(-160%);transition:transform .2s ease}.skip-link:focus{transform:translateY(0)}img{max-width:100%;display:block}button,input{font:inherit}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.app-shell{display:flex;flex-direction:column;min-height:100vh}.main-content{flex:1;padding:38px 20px 84px}.page-wrap{min-height:60vh}.site-header{position:sticky;top:0;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:#f8fafce6;border-bottom:1px solid var(--line);z-index:10}.header-inner,.footer-inner{max-width:1120px;margin:0 auto;padding:18px 20px;display:flex;align-items:center;justify-content:space-between;gap:24px}.header-tools,.footer-links,.language-switch{display:flex;align-items:center;gap:10px}.language-switch{padding:3px;border:1px solid var(--line);border-radius:8px;background:var(--surface)}.language-switch button{min-width:38px;min-height:44px;padding:6px;border:0;border-radius:6px;color:var(--muted);background:transparent;cursor:pointer;font-size:13px;font-weight:700}.language-switch button.active{color:var(--accent-strong);background:var(--accent-soft)}.footer-links a{min-height:44px;display:inline-flex;align-items:center;color:var(--accent);font-weight:700}.logo{font-family:var(--font-display);font-size:20px;font-weight:700}.nav-links{display:flex;gap:8px;flex-wrap:wrap;justify-content:center}.nav-link{display:inline-flex;align-items:center;min-height:44px;font-size:15px;padding:8px 11px;border-radius:8px;border:1px solid transparent;color:var(--muted)}.nav-link:hover{border-color:var(--line);background:var(--surface);color:var(--ink)}.nav-link.active{background:var(--accent-soft);border-color:#2557d64d;color:var(--accent-strong)}.theme-switch{display:flex;align-items:center;gap:10px;font-size:13px;color:var(--muted)}.switch{width:52px;height:44px;border:0;background:transparent;position:relative;cursor:pointer;padding:0}.switch:before{content:"";position:absolute;top:8px;right:0;bottom:8px;left:0;border:1px solid var(--line);border-radius:999px;background:var(--surface)}.switch-thumb{position:absolute;top:10px;left:3px;width:22px;height:22px;border-radius:50%;background:var(--accent);box-shadow:0 6px 12px #1118272e;transition:transform .2s ease;display:flex;align-items:center;justify-content:center;line-height:0;color:#fff}[data-theme=dark] .switch-thumb{transform:translate(22px)}.switch-icon{width:13px;height:13px;display:block}.switch-icon.moon,[data-theme=dark] .switch-icon.sun{display:none}[data-theme=dark] .switch-icon.moon{display:block}.site-footer{border-top:1px solid var(--line);background:#ffffffb8}.site-footer p{margin:0;font-size:14px;color:var(--muted)}.hero{max-width:1120px;margin:0 auto 70px;display:grid;grid-template-columns:minmax(0,1.35fr) minmax(320px,.65fr);gap:42px;align-items:center;animation:float-in .45s ease both}.hero-content{max-width:760px}.hero-content h1{font-family:var(--font-display);font-size:3.65rem;line-height:1.03;margin:10px 0 18px}.hero-subtitle{max-width:690px;font-size:1.08rem;line-height:1.7;color:var(--muted);margin:0 0 24px}.private-notice{color:var(--subtle);font-size:.9rem;line-height:1.5}.private-notice{margin:-8px 0 22px}.hero-eyebrow,.section-eyebrow,.detail-category,.card-category,.panel-kicker{margin:0;text-transform:uppercase;letter-spacing:0;font-size:12px;font-weight:700;color:var(--subtle)}.tag-row{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:26px}.tag-chip{background:var(--surface);border:1px solid var(--line);padding:7px 12px;border-radius:999px;font-size:13px;color:var(--muted)}.hero-actions,.detail-actions{display:flex;gap:12px;flex-wrap:wrap}.button{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:12px 18px;border-radius:8px;border:1px solid transparent;font-weight:700;transition:transform .2s ease,box-shadow .2s ease,background .2s ease}.button.compact{min-height:38px;padding:9px 13px;font-size:14px}.button.primary{background:var(--accent);color:#fff;box-shadow:0 12px 24px #2557d633}.button.ghost{background:var(--surface);border-color:var(--line);color:var(--ink)}.button:hover{transform:translateY(-2px)}.hero-panel{background:var(--surface);border:1px solid var(--line);border-top:4px solid var(--green);border-radius:12px;box-shadow:var(--shadow);padding:26px}.hero-panel-inner h2{font-size:1.35rem;line-height:1.25;margin:8px 0 18px}.panel-list{display:grid;gap:0}.panel-item{padding:16px 0;border-top:1px solid var(--line)}.panel-item:first-child{border-top:0;padding-top:0}.panel-item:last-child{padding-bottom:0}.panel-item strong{display:block;font-size:.98rem;margin-bottom:6px}.panel-item p{margin:0;color:var(--muted);line-height:1.55;font-size:.95rem}.section{max-width:1120px;margin:0 auto 72px}.section.narrow{max-width:800px}.section-title{margin-bottom:28px}.section-heading{font-family:var(--font-display);font-size:2.45rem;line-height:1.1;margin:6px 0 9px}.section-subtitle{max-width:760px;margin:0;color:var(--muted);line-height:1.65}.section-top{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;margin-bottom:28px}.section-top .section-title{margin-bottom:0}.grid{display:grid;gap:22px}.focus-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.focus-card,.skill-card,.approach-card,.detail-block,.case-context,.contact-card,.card,.case-summary{background:var(--surface);border:1px solid var(--line);border-radius:8px}.focus-card{padding:22px;border-top:4px solid var(--accent)}.focus-card:nth-child(2){border-top-color:var(--green)}.focus-card:nth-child(3){border-top-color:var(--amber)}.focus-card h3,.skill-card h2,.detail-block h2{margin:0 0 10px;font-size:1.08rem}.focus-card p,.detail-block p,.case-context p{margin:0;color:var(--muted);line-height:1.65}.cards-grid{grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}.card{padding:22px;box-shadow:0 14px 30px #11182712;display:flex;flex-direction:column;justify-content:space-between;gap:20px;min-height:100%;animation:float-in .45s ease both}.card:hover{transform:translateY(-4px);box-shadow:0 18px 40px #11182721}.card-body{display:flex;flex-direction:column;gap:12px;flex:1}.card-visual{overflow:hidden;aspect-ratio:1.95 / 1;border:1px solid var(--line);border-radius:8px;background:var(--surface-muted)}.card-visual.has-image img{display:block;width:100%;height:auto;object-fit:contain;transition:transform .35s ease}.card:hover .card-visual img{transform:scale(1.025)}.card-architecture-preview,.card-highlight{height:100%;min-height:0;padding:18px}.card-architecture-preview{padding:14px;background:linear-gradient(135deg,var(--surface-muted),var(--accent-soft))}.card-architecture-preview>p,.card-highlight>p{margin:0;color:var(--subtle);font-size:12px;font-weight:700;text-transform:uppercase}.card-architecture-preview ol{display:grid;gap:3px;list-style:none;margin:8px 0 0;padding:0}.card-architecture-preview li{padding:3px 7px;border-left:3px solid var(--accent);background:var(--surface);color:var(--ink);font-size:12px;font-weight:700}.card-architecture-preview li:nth-child(2){border-left-color:var(--green)}.card-architecture-preview li:nth-child(3){border-left-color:var(--amber)}.card-highlight{display:flex;flex-direction:column;justify-content:center;background:linear-gradient(135deg,var(--accent-strong),var(--accent));color:#fff}.card-highlight>p{color:#ffffffc7}.card-highlight strong{display:block;margin:8px 0;font-family:var(--font-display);font-size:2.2rem;line-height:1}.card-highlight span{max-width:250px;color:#ffffffe6;font-size:.9rem;line-height:1.45}.card-title{font-size:1.16rem;line-height:1.3;margin:0}.card-description{color:var(--muted);line-height:1.58;margin:0}.card-proof{border-top:1px solid var(--line);padding-top:12px}.card-proof span,.summary-item span,.summary-stack span{display:block;color:var(--subtle);font-size:12px;font-weight:700;margin-bottom:5px}.card-proof strong,.summary-item strong{display:block;color:var(--ink);font-size:.92rem;line-height:1.45}.card-proof.result strong{color:var(--muted);font-weight:500}.card-stack-list,.summary-stack ul{display:flex;flex-wrap:wrap;gap:8px;list-style:none;padding:0;margin:0}.card-stack-list li,.summary-stack li{padding:5px 8px;border-radius:999px;background:var(--accent-soft);color:var(--accent-strong);font-size:12px;font-weight:700}.card-link{color:var(--accent);font-weight:700;align-self:flex-start}.card-link:hover{color:var(--accent-strong)}.case-context{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:18px;margin-bottom:24px;border-left:4px solid var(--green)}.filter-row{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:24px}.filter-chip{min-height:44px;padding:8px 13px;border-radius:999px;border:1px solid var(--line);background:var(--surface);color:var(--muted);cursor:pointer;font-size:14px}.filter-chip:hover{border-color:#2557d659;color:var(--ink)}.filter-chip.active{background:var(--accent-soft);border-color:#2557d66b;color:var(--accent-strong);font-weight:700}.detail-hero{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(300px,.9fr);gap:28px;align-items:start;margin-bottom:30px}.detail-copy{padding-top:4px}.detail-title{font-family:var(--font-display);font-size:2.75rem;line-height:1.08;margin:8px 0 14px}.detail-short{color:var(--muted);line-height:1.7;margin:0 0 22px;max-width:680px}.case-summary{padding:22px;box-shadow:var(--shadow)}.case-gallery{margin:0 0 30px}.case-gallery-heading{max-width:700px;margin-bottom:18px}.case-gallery-heading h2{font-family:var(--font-display);font-size:2rem;line-height:1.15;margin:6px 0 8px}.case-gallery-heading p:last-child{margin:0;color:var(--muted);line-height:1.6}.case-gallery-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px}.case-shot{margin:0;overflow:hidden;border:1px solid var(--line);border-radius:12px;background:var(--surface);box-shadow:0 14px 30px #11182714}.case-shot.featured{grid-column:1 / -1}.case-shot img{display:block;width:100%;height:auto;object-fit:contain}.case-shot figcaption{display:grid;gap:4px;padding:15px 17px 17px}.case-shot figcaption strong{font-size:1rem}.case-shot figcaption span{color:var(--muted);font-size:.92rem;line-height:1.5}.architecture-diagram{margin:0 0 30px}.architecture-heading{max-width:740px;margin-bottom:18px}.architecture-heading h2{font-family:var(--font-display);font-size:2rem;line-height:1.15;margin:6px 0 8px}.architecture-heading>p:last-child{margin:0;color:var(--muted);line-height:1.6}.architecture-layers,.architecture-flow{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;list-style:none;margin:0;padding:0}.architecture-layers li,.architecture-flow li{min-height:190px;padding:18px;border:1px solid var(--line);border-top:4px solid var(--accent);border-radius:10px;background:var(--surface)}.architecture-layers li:nth-child(2),.architecture-flow li:nth-child(2){border-top-color:var(--green)}.architecture-layers li:nth-child(3),.architecture-flow li:nth-child(3){border-top-color:var(--amber)}.architecture-layers li:nth-child(4),.architecture-flow li:nth-child(4){border-top-color:var(--accent-strong)}.architecture-step{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:50%;background:var(--accent-soft);color:var(--accent-strong);font-size:13px;font-weight:800}.architecture-layers p,.architecture-flow p{margin:14px 0 4px;color:var(--subtle);font-size:12px;font-weight:700}.architecture-layers h3,.architecture-flow h3{margin:0 0 8px;font-size:1rem}.architecture-layers li>span:last-child,.architecture-flow li>span:last-child{color:var(--muted);font-size:.9rem;line-height:1.5}.architecture-flow{grid-template-columns:repeat(6,minmax(0,1fr))}.architecture-flow li{position:relative}.architecture-flow li:not(:last-child):after,.service-flow li:not(:last-child):after{content:"→";position:absolute;right:-13px;top:50%;z-index:1;color:var(--accent);font-weight:800}.backup-branch,.service-flow{margin-top:18px;padding:20px;border:1px solid var(--line);border-left:4px solid var(--green);border-radius:8px;background:var(--surface)}.backup-branch h3,.service-flow h2{margin:0 0 8px}.backup-branch p{margin:0 0 8px;color:var(--muted);line-height:1.6}.backup-branch strong{color:var(--green)}.service-flow{margin-bottom:30px}.service-flow ol{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:14px;list-style:none;margin:18px 0 0;padding:0}.service-flow li{position:relative;display:grid;place-items:center;min-height:88px;padding:12px;border-radius:8px;background:var(--surface-muted);text-align:center;font-weight:700;line-height:1.35}.summary-item,.summary-stack{padding-top:16px;margin-top:16px;border-top:1px solid var(--line)}.summary-item:first-of-type{padding-top:0;margin-top:14px;border-top:0}.detail-grid{display:grid;gap:22px;grid-template-columns:repeat(2,minmax(0,1fr))}.detail-block{padding:22px}.detail-block.wide{grid-column:1 / -1}.detail-block ul{margin:12px 0 0;padding-left:20px;color:var(--muted);line-height:1.62}.detail-block li+li{margin-top:8px}.outcome-block{border-left:4px solid var(--green)}.skills-grid{grid-template-columns:repeat(auto-fit,minmax(245px,1fr))}.skill-card{padding:21px;animation:float-in .45s ease both}.skill-card ul{margin:12px 0 0;padding-left:20px;color:var(--muted);line-height:1.62}.skill-card li+li{margin-top:8px}.about-text p{color:var(--muted);font-size:1.06rem;line-height:1.75;margin:0 0 20px}.approach-section{margin-top:36px}.approach-section h2{margin:0 0 18px;font-size:1.35rem}.approach-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.approach-card{padding:18px}.approach-step{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:8px;background:var(--green-soft);color:var(--green);font-weight:800;margin-bottom:12px}.approach-card h3{margin:0 0 8px}.approach-card p{margin:0;color:var(--muted);line-height:1.58}.contact-text{font-size:1.08rem;line-height:1.7;color:var(--muted);margin:0 0 24px}.contact-list{display:grid;gap:14px}.contact-card{display:grid;grid-template-columns:auto 1fr;gap:14px;align-items:center;padding:16px}.contact-card:hover{transform:translateY(-3px);box-shadow:0 14px 28px #1118271a}.contact-card strong{display:block;margin-bottom:4px}.contact-card p{margin:0;color:var(--muted);font-size:.95rem;line-height:1.45;word-break:break-word}.contact-icon{width:42px;height:42px;border-radius:8px;display:grid;place-items:center;color:#fff}.contact-icon svg{width:22px;height:22px}.contact-icon.linkedin{background:#0a66c2}.contact-icon.email{background:var(--accent)}.contact-icon.whatsapp{background:#15803d}.contact-icon.github{background:#24292f}.contact-icon span{font-size:13px;font-weight:800}.contact-card.disabled{opacity:.5;pointer-events:none}@media (max-width: 920px){.hero,.detail-hero{grid-template-columns:1fr}.hero-content h1{font-size:2.8rem}.focus-grid{grid-template-columns:1fr}.case-context,.section-top{align-items:flex-start;flex-direction:column}.header-inner{flex-wrap:wrap}.nav-links{order:3;width:100%}.architecture-flow{grid-template-columns:repeat(2,minmax(0,1fr))}.architecture-flow li:after{display:none}}@media (max-width: 720px){.header-inner,.footer-inner{flex-direction:column;align-items:flex-start}.header-inner{gap:12px}.header-tools{width:100%;justify-content:space-between}.footer-links{flex-wrap:wrap}.nav-links{justify-content:flex-start}.theme-label{display:none}.main-content{padding:28px 16px 64px}.hero{gap:28px;margin-bottom:56px}.hero-content h1,.section-heading,.detail-title{font-size:2.25rem}.detail-grid,.case-gallery-grid{grid-template-columns:1fr}.case-shot.featured{grid-column:auto}.architecture-layers,.architecture-flow,.service-flow ol{grid-template-columns:1fr}.service-flow li:after{display:none!important}.button{width:100%}.filter-chip,.tag-chip{font-size:13px}}@media (max-width: 390px){.nav-link{padding:8px;font-size:14px}.hero-content h1,.section-heading,.detail-title{font-size:2rem;overflow-wrap:anywhere}}@keyframes float-in{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}.cards-grid .card:nth-child(1),.skills-grid .skill-card:nth-child(1){animation-delay:.04s}.cards-grid .card:nth-child(2),.skills-grid .skill-card:nth-child(2){animation-delay:.1s}.cards-grid .card:nth-child(3),.skills-grid .skill-card:nth-child(3){animation-delay:.16s}.cards-grid .card:nth-child(4),.skills-grid .skill-card:nth-child(4){animation-delay:.22s}.cards-grid .card:nth-child(5),.skills-grid .skill-card:nth-child(5){animation-delay:.28s}.page-enter-active,.page-leave-active{transition:opacity .25s ease,transform .25s ease}.page-enter-from,.page-leave-to{opacity:0;transform:translateY(12px)}@media (prefers-reduced-motion: reduce){*{animation:none!important;transition:none!important}}:root[data-theme=dark]{--ink: #f5f7ff;--muted: #c8cede;--subtle: #aeb7cc;--accent: #86a2ff;--accent-soft: rgba(134, 162, 255, .18);--accent-strong: #dbe5ff;--green: #5eead4;--green-soft: rgba(94, 234, 212, .14);--amber: #fbbf24;--amber-soft: rgba(251, 191, 36, .12);--surface: #171d2f;--surface-muted: #111827;--page: #0b1020;--line: rgba(245, 247, 255, .16);--shadow: 0 20px 46px rgba(0, 0, 0, .38)}:root[data-theme=dark] body{background:linear-gradient(180deg,#0b1020,#0f172a 55%,#101827)}:root[data-theme=dark] .site-header{background:#0b1020e6}:root[data-theme=dark] .site-footer{background:#0b1020d1}:root[data-theme=dark] .nav-link:hover,:root[data-theme=dark] .button.ghost,:root[data-theme=dark] .filter-chip,:root[data-theme=dark] .tag-chip{background:#151c2f}:root[data-theme=dark] .button.primary{color:#071026}:root[data-theme=dark] .switch-thumb,:root[data-theme=dark] .contact-icon.email{color:#071026}:root[data-theme=dark] .card,:root[data-theme=dark] .detail-block,:root[data-theme=dark] .skill-card,:root[data-theme=dark] .focus-card,:root[data-theme=dark] .approach-card,:root[data-theme=dark] .contact-card,:root[data-theme=dark] .case-context,:root[data-theme=dark] .case-summary,:root[data-theme=dark] .hero-panel{background:var(--surface);border-color:var(--line)}:root[data-theme=dark] .card:hover,:root[data-theme=dark] .contact-card:hover{box-shadow:0 20px 46px #00000075}:root[data-theme=dark] .card-stack-list li,:root[data-theme=dark] .summary-stack li{color:#dbe5ff}
