@font-face{font-family:Site Serif;src:url(/fonts/serif-subset.woff2)format("woff2");font-weight:600;font-display:swap}:root{--bg-page:#faf9f5;--bg-surface:#fff;--bg-subtle:#f3f2ee;--bg-subtle-hover:#eae8e1;--text-primary:#18181b;--text-secondary:#52525b;--text-muted:#71717a;--accent-primary:#18181b;--accent-hover:#27272a;--status-online:#16a34a;--status-online-bg:#dcfce7;--border-subtle:#e4e4e7;--border-strong:#d4d4d8;--font-display:"Site Serif", "Noto Serif SC", "Source Han Serif SC", "Songti SC", "STSong", Georgia, serif;--font-sans:-apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Inter", sans-serif;--font-mono:"JetBrains Mono", ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace;--radius-sm:6px;--radius-md:10px;--radius-lg:16px;--radius-pill:9999px;--shadow-card:0 1px 3px #18181b0a;--shadow-card-hover:0 10px 24px -6px #18181b12;--shadow-drawer:0 -8px 30px #18181b29;--container-max:1080px;--transition-fast:.16s cubic-bezier(.22, 1, .36, 1);--transition-smooth:.26s cubic-bezier(.22, 1, .36, 1)}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;margin:0;padding:0}html{scroll-behavior:smooth;background-color:var(--bg-page);color:var(--text-primary);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{min-height:100vh;line-height:1.6;overflow-x:hidden}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:none}button:focus-visible,a:focus-visible{outline:2px solid var(--text-primary);outline-offset:2px;border-radius:4px}.container{width:100%;max-width:var(--container-max);margin:0 auto;padding:0 20px}@media (width>=768px){.container{padding:0 32px}}.icon-svg{stroke:currentColor;stroke-width:1.75px;stroke-linecap:round;stroke-linejoin:round;fill:none;flex-shrink:0;width:16px;height:16px}.site-header{z-index:40;-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--border-subtle);background:#faf9f5eb;height:60px;position:sticky;top:0}@media (width>=768px){.site-header{height:72px}}.header-inner{justify-content:space-between;align-items:center;gap:12px;height:100%;display:flex}.brand-group{flex-shrink:1;align-items:center;gap:8px;min-width:0;display:flex}.brand-name{font-family:var(--font-display);white-space:nowrap;text-overflow:ellipsis;font-size:16px;font-weight:600;overflow:hidden}.brand-suffix,.status-pill{display:none}@media (width>=768px){.brand-name{font-size:20px}.brand-suffix{display:inline}.status-pill{color:var(--text-secondary);background:var(--bg-subtle);border-radius:var(--radius-pill);border:1px solid var(--border-subtle);align-items:center;gap:6px;padding:4px 10px;font-size:12px;display:inline-flex}}.status-dot{background-color:var(--status-online);width:7px;height:7px;box-shadow:0 0 0 3px var(--status-online-bg);border-radius:50%}.site-nav{flex-shrink:0;align-items:center;gap:16px;display:flex}@media (width>=768px){.site-nav{gap:28px}}.nav-link{color:var(--text-secondary);white-space:nowrap;transition:color var(--transition-fast);padding:6px 2px;font-size:14px;font-weight:500}.nav-link:hover{color:var(--text-primary)}.hero-section{border-bottom:1px solid var(--border-subtle);padding:40px 0 36px}@media (width>=768px){.hero-section{padding:72px 0 56px}}.editorial-kicker{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);align-items:center;gap:8px;margin-bottom:14px;font-size:11px;display:inline-flex}@media (width>=768px){.editorial-kicker{margin-bottom:20px;font-size:12px}}.editorial-kicker-line{background-color:var(--text-muted);width:20px;height:1px}.hero-title{font-family:var(--font-display);letter-spacing:-.01em;color:var(--text-primary);margin-bottom:16px;font-size:26px;font-weight:600;line-height:1.34}@media (width>=768px){.hero-title{letter-spacing:-.02em;max-width:820px;margin-bottom:22px;font-size:40px;line-height:1.32}}.hero-lead{color:var(--text-secondary);margin-bottom:28px;font-size:15px;line-height:1.72}@media (width>=768px){.hero-lead{max-width:680px;margin-bottom:34px;font-size:17px;line-height:1.78}}.hero-actions{flex-direction:column;gap:10px;display:flex}@media (width>=480px){.hero-actions{flex-direction:row;align-items:center;gap:12px}}.btn-primary{background-color:var(--accent-primary);color:#fff;border-radius:var(--radius-pill);height:44px;transition:background-color var(--transition-fast);justify-content:center;align-items:center;gap:8px;width:100%;padding:0 20px;font-size:14px;font-weight:500;display:inline-flex}@media (width>=480px){.btn-primary{width:auto}}.btn-primary:hover{background-color:var(--accent-hover)}.btn-secondary{background-color:var(--bg-surface);height:44px;color:var(--text-primary);border-radius:var(--radius-pill);border:1px solid var(--border-subtle);transition:background-color var(--transition-fast), border-color var(--transition-fast);justify-content:center;align-items:center;gap:8px;width:100%;padding:0 18px;font-size:14px;font-weight:500;display:inline-flex}@media (width>=480px){.btn-secondary{width:auto}}.btn-secondary:hover{background-color:var(--bg-subtle);border-color:var(--border-strong)}.projects-section{border-bottom:1px solid var(--border-subtle);padding:40px 0 60px}@media (width>=768px){.projects-section{padding:64px 0 80px}}.section-header{margin-bottom:24px}@media (width>=768px){.section-header{margin-bottom:28px}}@media (width>=900px){.section-header{justify-content:space-between;align-items:flex-end;gap:24px;margin-bottom:36px;display:flex}}.section-index{font-family:var(--font-mono);letter-spacing:.08em;color:var(--text-muted);margin-bottom:4px;font-size:11px;display:block}.section-title{font-family:var(--font-display);letter-spacing:-.01em;margin-bottom:16px;font-size:22px;font-weight:600}@media (width>=768px){.section-title{margin-bottom:16px;font-size:26px}}@media (width>=900px){.section-title{margin-bottom:0}}.filter-bar{white-space:nowrap;-webkit-overflow-scrolling:touch;scrollbar-width:none;gap:8px;padding-bottom:6px;display:flex;overflow-x:auto}.filter-bar::-webkit-scrollbar{display:none}@media (width>=768px){.filter-bar{flex-wrap:wrap;padding-bottom:0;overflow-x:visible}}.filter-btn{border-radius:var(--radius-pill);height:36px;color:var(--text-secondary);background-color:var(--bg-subtle);transition:all var(--transition-fast);border:1px solid #0000;flex-shrink:0;align-items:center;gap:5px;padding:0 14px;font-size:12.5px;font-weight:500;display:inline-flex}.filter-btn:hover{background-color:var(--bg-subtle-hover);color:var(--text-primary)}.filter-btn.active{background-color:var(--accent-primary);color:#fff}.filter-count{font-family:var(--font-mono);opacity:.8;font-size:11px}.projects-grid{grid-template-columns:1fr;gap:20px;display:grid}@media (width>=768px){.projects-grid{grid-template-columns:repeat(2,1fr);gap:32px}}.project-card{background-color:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);transition:border-color var(--transition-smooth), box-shadow var(--transition-smooth);cursor:pointer;flex-direction:column;display:flex;overflow:hidden}.project-card:hover{border-color:var(--border-strong);box-shadow:var(--shadow-card-hover)}.card-preview{aspect-ratio:16/10;background-color:var(--bg-subtle);border-bottom:1px solid var(--border-subtle);justify-content:center;align-items:center;padding:16px;display:flex;position:relative;overflow:hidden}@media (width>=768px){.card-preview{padding:20px}}.preview-canvas{border:1px solid var(--border-subtle);border-radius:var(--radius-sm);width:100%;height:100%;transition:transform var(--transition-smooth);background:#fff;flex-direction:column;justify-content:space-between;padding:12px 14px;display:flex;box-shadow:0 4px 14px #18181b0a}.project-card:hover .preview-canvas{transform:scale(1.02)}.card-badge{backdrop-filter:blur(6px);border:1px solid var(--border-subtle);border-radius:var(--radius-pill);color:var(--text-primary);z-index:2;background:#fffffff2;align-items:center;gap:5px;padding:3px 9px;font-size:11px;font-weight:500;display:inline-flex;position:absolute;top:12px;right:12px}.card-badge-dot{background-color:var(--status-online);border-radius:50%;width:6px;height:6px}.card-body{flex-direction:column;flex:1;padding:20px;display:flex}@media (width>=768px){.card-body{padding:24px 28px 28px}}.card-meta{font-family:var(--font-mono);color:var(--text-muted);align-items:center;gap:6px;margin-bottom:6px;font-size:11.5px;display:flex}.card-title{color:var(--text-primary);margin-bottom:8px;font-size:18px;font-weight:600;line-height:1.35}@media (width>=768px){.card-title{margin-bottom:12px;font-size:21px}}.card-desc{color:var(--text-secondary);margin-bottom:14px;font-size:14px;line-height:1.7}@media (width>=768px){.card-desc{margin-bottom:18px;font-size:15px}}.card-tags{flex-wrap:wrap;gap:6px;margin-top:auto;margin-bottom:18px;display:flex}.tag-chip{color:var(--text-secondary);background-color:var(--bg-page);border:1px solid var(--border-subtle);border-radius:var(--radius-sm);padding:3px 8px;font-size:11.5px}.card-actions{border-top:1px solid var(--border-subtle);padding-top:14px}.btn-card-single{border-radius:var(--radius-pill);color:#fff;background-color:var(--accent-primary);width:100%;height:40px;transition:background-color var(--transition-fast);justify-content:center;align-items:center;gap:6px;padding:0 16px;font-size:13px;font-weight:500;display:inline-flex}.btn-card-single:hover{background-color:var(--accent-hover)}.minor-works-banner{background:var(--bg-surface);border:1px dashed var(--border-subtle);border-radius:var(--radius-md);color:var(--text-secondary);margin-top:28px;padding:16px 18px;font-size:13.5px;line-height:1.65}@media (width>=768px){.minor-works-banner{justify-content:space-between;align-items:center;gap:16px;margin-top:40px;padding:20px 24px;font-size:14.5px;display:flex}}.about-section{border-bottom:1px solid var(--border-subtle);padding:40px 0}@media (width>=768px){.about-section{padding:64px 0}}.about-grid{grid-template-columns:1fr;gap:18px;margin-top:20px;display:grid}@media (width>=768px){.about-grid{grid-template-columns:1.15fr .85fr;gap:32px;margin-top:28px}}.about-card{background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);padding:22px}@media (width>=768px){.about-card{padding:32px}}.about-subtitle{color:var(--text-primary);margin-bottom:12px;font-size:17px;font-weight:600}.about-text{color:var(--text-secondary);margin-bottom:14px;font-size:14px;line-height:1.75}@media (width>=768px){.about-text{font-size:15px;line-height:1.8}}.principle-list{flex-direction:column;gap:12px;list-style:none;display:flex}.principle-item{color:var(--text-secondary);align-items:flex-start;gap:10px;font-size:13.5px;line-height:1.6;display:flex}@media (width>=768px){.principle-item{font-size:14.5px}}.principle-num{font-family:var(--font-mono);color:var(--text-primary);background:var(--bg-subtle);border-radius:4px;flex-shrink:0;margin-top:2px;padding:2px 6px;font-size:11px;font-weight:600}.contact-footer{padding:40px 0 60px}@media (width>=768px){.contact-footer{padding:64px 0 88px}}.contact-box{background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);padding:24px}@media (width>=768px){.contact-box{padding:32px}}@media (width>=980px){.contact-box{justify-content:space-between;align-items:center;gap:32px;padding:36px 40px;display:flex}}.contact-title{font-family:var(--font-display);margin-bottom:8px;font-size:20px;font-weight:600}@media (width>=768px){.contact-title{font-size:24px}}.contact-desc{color:var(--text-secondary);margin-bottom:20px;font-size:14px;line-height:1.65}@media (width>=980px){.contact-desc{max-width:480px;margin-bottom:0;font-size:15px}}.contact-right{flex-direction:column;gap:12px;display:flex}@media (width>=980px){.contact-right{flex-shrink:0;min-width:440px}}.contact-buttons{flex-direction:column;gap:10px;display:flex}@media (width>=480px){.contact-buttons{flex-direction:row}}.contact-ext-links{color:var(--text-muted);align-items:center;gap:16px;padding-top:4px;font-size:13px;display:flex}.ext-link{text-underline-offset:3px;transition:color var(--transition-fast);align-items:center;gap:4px;text-decoration:underline;display:inline-flex}.ext-link:hover{color:var(--text-primary)}.contact-phone-card{background:var(--bg-subtle);border:1px solid var(--border-subtle);border-radius:var(--radius-md);flex-direction:column;gap:10px;padding:14px 16px;display:flex}@media (width>=480px){.contact-phone-card{flex-direction:row;justify-content:space-between;align-items:center;gap:16px}}.phone-info{flex-direction:column;gap:2px;display:flex}.phone-label{color:var(--text-muted);white-space:nowrap;align-items:center;gap:6px;font-size:11.5px;display:flex}.phone-badge{border:1px solid var(--border-subtle);border-radius:var(--radius-pill);color:var(--text-secondary);white-space:nowrap;background:#fff;flex-shrink:0;align-items:center;padding:1px 7px;font-size:11px;font-weight:500;display:inline-flex}.phone-number{font-family:var(--font-mono);color:var(--text-primary);letter-spacing:.5px;white-space:nowrap;font-size:18px;font-weight:600;line-height:1.3}.phone-actions{flex-shrink:0;align-items:center;gap:8px;display:flex}.btn-phone-call,.btn-phone-copy{border-radius:var(--radius-pill);height:36px;transition:all var(--transition-fast);cursor:pointer;justify-content:center;align-items:center;gap:6px;padding:0 14px;font-size:13px;font-weight:500;display:inline-flex}.btn-phone-call{background:var(--accent-primary);color:#fff;flex:1}@media (width>=480px){.btn-phone-call{flex:initial}}.btn-phone-call:hover{background:var(--accent-hover)}.btn-phone-copy{color:var(--text-primary);border:1px solid var(--border-subtle);background:#fff;flex:1}@media (width>=480px){.btn-phone-copy{flex:initial}}.btn-phone-copy:hover{background:var(--bg-subtle-hover);border-color:var(--border-strong)}.footer-meta{color:var(--text-muted);margin-top:24px;font-size:12px;line-height:1.6}@media (width>=768px){.footer-meta{justify-content:space-between;align-items:center;margin-top:32px;display:flex}}.modal-backdrop{-webkit-backdrop-filter:blur(4px);z-index:100;opacity:0;pointer-events:none;transition:opacity var(--transition-fast);background:#18181b85;align-items:flex-end;display:flex;position:fixed;inset:0}@media (width>=768px){.modal-backdrop{justify-content:center;align-items:center;padding:20px}}.modal-backdrop.open{opacity:1;pointer-events:auto}.modal-dialog{background:var(--bg-surface);border:1px solid var(--border-subtle);width:100%;max-height:92vh;box-shadow:var(--shadow-drawer);transition:transform var(--transition-smooth);border-bottom:none;border-top-left-radius:20px;border-top-right-radius:20px;flex-direction:column;display:flex;overflow-y:auto;transform:translateY(100%)}@media (width>=768px){.modal-dialog{border-radius:var(--radius-lg);border:1px solid var(--border-subtle);max-width:660px;max-height:88vh;transform:translateY(16px)}}.modal-backdrop.open .modal-dialog{transform:translateY(0)}.modal-handle-bar{background:#d4d4d8;border-radius:2px;width:36px;height:4px;margin:8px auto 4px}@media (width>=768px){.modal-handle-bar{display:none}}.modal-header{border-bottom:1px solid var(--border-subtle);background:var(--bg-surface);z-index:5;justify-content:space-between;align-items:center;padding:12px 20px 14px;display:flex;position:sticky;top:0}@media (width>=768px){.modal-header{padding:20px 28px 16px}}.modal-title-group{max-width:80%}.modal-kicker{font-family:var(--font-mono);color:var(--text-muted);margin-bottom:2px;font-size:11px}.modal-title{font-family:var(--font-display);font-size:18px;font-weight:600;line-height:1.3}@media (width>=768px){.modal-title{font-size:21px}}.modal-subtitle{color:var(--text-secondary);margin-top:3px;font-size:12.5px;line-height:1.35}@media (width>=768px){.modal-subtitle{font-size:13.5px}}.modal-close{border-radius:var(--radius-sm);width:40px;height:40px;color:var(--text-muted);background:var(--bg-subtle);transition:background-color var(--transition-fast), color var(--transition-fast);flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.modal-close:hover{background:var(--bg-subtle-hover);color:var(--text-primary)}.modal-body{flex-direction:column;gap:20px;padding:20px;display:flex}@media (width>=768px){.modal-body{gap:24px;padding:28px}}.modal-hero-img{aspect-ratio:16/10;background:var(--bg-subtle);border:1px solid var(--border-subtle);border-radius:var(--radius-md);text-align:center;color:var(--text-secondary);flex-direction:column;justify-content:center;align-items:center;padding:20px;font-size:13.5px;display:flex}.modal-section-title{color:var(--text-primary);align-items:center;gap:8px;margin-bottom:8px;font-size:14.5px;font-weight:600;display:flex}.modal-section-title:before{content:"";background:var(--accent-primary);border-radius:2px;width:3px;height:14px}.modal-desc-box{background:var(--bg-page);border:1px solid var(--border-subtle);border-radius:var(--radius-md);color:var(--text-secondary);padding:14px 16px;font-size:13.5px;line-height:1.7}@media (width>=768px){.modal-desc-box{padding:16px 20px;font-size:14.5px}}.modal-features-list{flex-direction:column;gap:8px;list-style:none;display:flex}.modal-features-list li{background:var(--bg-page);border-radius:var(--radius-sm);color:var(--text-secondary);padding:10px 12px;font-size:13.5px;line-height:1.6}.modal-features-list li strong{color:var(--text-primary)}.modal-footer{border-top:1px solid var(--border-subtle);background:var(--bg-page);justify-content:space-between;align-items:center;gap:12px;padding:16px 20px 24px;display:flex;position:sticky;bottom:0}@media (width>=768px){.modal-footer{border-bottom-left-radius:var(--radius-lg);border-bottom-right-radius:var(--radius-lg);padding:18px 28px}}.toast-notice{-webkit-backdrop-filter:blur(8px);color:#fff;border-radius:var(--radius-pill);opacity:0;pointer-events:none;z-index:150;text-align:center;background:#18181bf0;width:max-content;max-width:min(100vw - 32px,360px);padding:11px 20px;font-size:13.5px;font-weight:500;line-height:1.4;transition:opacity .16s cubic-bezier(.22,1,.36,1),transform .16s cubic-bezier(.22,1,.36,1);position:fixed;top:20px;left:50%;transform:translate(-50%,-10px)scale(.95);box-shadow:0 10px 28px #00000038}.toast-notice.show{opacity:1;transform:translate(-50%)scale(1)}.copy-fallback-dialog{z-index:130;background:#18181b80;justify-content:center;align-items:center;padding:20px;display:none;position:fixed;inset:0}.copy-fallback-dialog.open{display:flex}.copy-fallback-box{border-radius:var(--radius-lg);text-align:center;background:#fff;width:100%;max-width:320px;padding:24px 20px;box-shadow:0 20px 40px #0003}.copy-fallback-val{background:var(--bg-subtle);border-radius:var(--radius-sm);font-family:var(--font-mono);-webkit-user-select:all;user-select:all;border:1px dashed var(--border-strong);margin:16px 0;padding:10px;font-size:15px;font-weight:600}.not-found-view{text-align:center;justify-content:center;align-items:center;min-height:80vh;padding:60px 20px;display:flex}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important}}.minor-works-note{font-family:var(--font-mono);color:var(--text-muted);white-space:nowrap;font-size:11px}.about-text:last-child{margin-bottom:0}.principle-item strong{color:var(--text-primary)}.modal-badge{color:var(--text-muted);font-size:12px}.modal-footer .btn-primary{width:auto;height:38px;padding:0 16px}.copy-fallback-title{margin-bottom:6px;font-size:16px}.copy-fallback-text{color:var(--text-secondary);font-size:13px}.copy-fallback-box .btn-primary{width:100%;height:38px}.not-found-view .container{max-width:520px}.not-found-view .hero-title{margin:14px 0 16px}.not-found-view .hero-lead{margin-bottom:28px}.not-found-view .hero-actions{justify-content:center}.preview-canvas.has-image{padding:0;overflow:hidden}.preview-canvas img{object-fit:contain;width:100%;height:100%;display:block}.modal-hero-img .preview-canvas{box-shadow:none}.modal-backdrop{visibility:hidden;transition:opacity var(--transition-fast), visibility 0s linear .26s}.modal-backdrop.open{visibility:visible;transition:opacity var(--transition-fast)}html:not(.js) .modal-backdrop:target{opacity:1;pointer-events:auto;visibility:visible}html:not(.js) .modal-backdrop:target .modal-dialog{transform:translateY(0)}html:not(.js) .filter-bar,.project-card[hidden]{display:none}.project-card .btn-card-single{text-decoration:none}@media (width<=767px){.footer-meta>span{display:block}}section[id]{scroll-margin-top:60px}@media (width>=768px){section[id]{scroll-margin-top:72px}}.card-subtitle{color:var(--text-secondary);margin-top:4px;font-size:13px;font-weight:400;line-height:1.4;display:block}@media (width>=768px){.card-subtitle{margin-top:5px;font-size:13.5px}}@media (hover:none){.nav-link:hover{color:var(--text-secondary)}.ext-link:hover{color:inherit}.btn-primary:hover,.btn-card-single:hover,.btn-phone-call:hover{background-color:var(--accent-primary)}.btn-secondary:hover,.btn-phone-copy:hover{background-color:var(--bg-surface);border-color:var(--border-subtle)}.filter-btn:hover{background-color:var(--bg-subtle);color:var(--text-secondary)}.filter-btn.active:hover{background-color:var(--accent-primary);color:#fff}.project-card:hover{border-color:var(--border-subtle);box-shadow:var(--shadow-card)}.project-card:hover .preview-canvas{transform:none}.modal-close:hover{background:var(--bg-subtle);color:var(--text-muted)}}
