:root{--brand-50: #e8f2ff;--brand-100: #cfe5ff;--brand-400: #2e8dff;--brand-500: #007aff;--brand-600: #0064d6;--background: #ffffff;--background-100: #f7f7fa;--background-200: #f2f2f7;--background-300: #e5e5ea;--background-700: #3a3a3c;--background-800: #1c1c1e;--foreground: #1d1d1f;--muted-foreground: #6e6e73;--border: #e5e5ea;--card: #ffffff;--primary: var(--brand-500);--primary-foreground: #ffffff;--ring: var(--brand-500);--icon-muted: #8e8e93;--radius: 1.2rem;--shadow-xs: 0 1px 2px 0 rgba(0, 0, 0, .04);--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, .05), 0 1px 3px -1px rgba(0, 0, 0, .05);--shadow-md: 0 4px 8px -2px rgba(0, 0, 0, .06), 0 2px 4px -2px rgba(0, 0, 0, .05);--shadow-lg: 0 8px 24px -8px rgba(0, 0, 0, .08), 0 4px 8px -4px rgba(0, 0, 0, .05);--shadow-xl: 0 16px 40px -10px rgba(0, 0, 0, .1), 0 8px 16px -8px rgba(0, 0, 0, .06);--shadow-2xl: 0 24px 64px -12px rgba(0, 0, 0, .12);--font-display: "DM Sans", "Noto Sans SC", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-headline: "DM Sans", "Noto Sans SC", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-body: "Noto Sans SC", "DM Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-caption: "DM Sans", "Noto Sans SC", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-label: "DM Sans", "Noto Sans SC", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--ease-apple: cubic-bezier(.32, .72, 0, 1);--ease-standard: cubic-bezier(.4, 0, .2, 1);color:var(--foreground);background:var(--background);font-family:var(--font-body);font-synthesis:none;text-rendering:geometricPrecision;-webkit-font-smoothing:antialiased}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;min-width:320px;background:var(--background)}a{color:inherit;text-decoration:none}button,a{-webkit-tap-highlight-color:transparent}a:focus-visible,button:focus-visible{outline:2px solid var(--ring);outline-offset:4px}.site{min-height:100vh;overflow-x:hidden;padding-top:56px}@keyframes fade-up{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}@keyframes soft-reveal{0%{opacity:0;transform:scale(.98);filter:blur(8px)}to{opacity:1;transform:scale(1);filter:blur(0)}}.globalnav{position:fixed;top:0;left:0;z-index:10;width:100%;height:56px;border-bottom:1px solid rgba(29,29,31,.06);background:#fafafcb8;-webkit-backdrop-filter:saturate(180%) blur(22px);backdrop-filter:saturate(180%) blur(22px);transition:background-color .25s var(--ease-apple),border-color .25s var(--ease-apple),box-shadow .25s var(--ease-apple)}.globalnav-scrolled{border-color:#1d1d1f1f;background:#f7f7fae6;box-shadow:0 1px 18px #0000000d}.nav-inner{display:flex;align-items:center;justify-content:space-between;gap:18px;width:min(1320px,calc(100% - 28px));height:100%;margin:0 auto;font-family:var(--font-label);font-size:12px}.brand{display:inline-flex;align-items:center;flex:0 0 auto;min-height:44px;border-radius:999px}.brand img{width:auto;height:46px;max-width:190px;object-fit:contain}.menu-toggle{display:inline-flex;align-items:center;justify-content:center;flex-direction:column;gap:5px;width:44px;height:44px;padding:0;border:0;border-radius:999px;background:#1d1d1f0e;color:var(--foreground);cursor:pointer;transition:background-color .18s var(--ease-standard),transform .18s var(--ease-standard)}.menu-toggle span{width:16px;height:2px;border-radius:999px;background:currentColor;transition:transform .18s var(--ease-standard)}.menu-toggle:hover{background:#1d1d1f16}.menu-toggle[aria-expanded=true] span:first-child{transform:translateY(3.5px) rotate(45deg)}.menu-toggle[aria-expanded=true] span:last-child{transform:translateY(-3.5px) rotate(-45deg)}.nav-menu{position:absolute;top:calc(100% + 10px);right:max(14px,calc((100vw - 1320px)/2));display:grid;gap:6px;min-width:148px;padding:8px;border:1px solid rgba(29,29,31,.08);border-radius:18px;background:#ffffffe6;box-shadow:var(--shadow-xl);-webkit-backdrop-filter:saturate(180%) blur(22px);backdrop-filter:saturate(180%) blur(22px);opacity:0;pointer-events:none;transform:translateY(-6px);transition:opacity .18s var(--ease-standard),transform .18s var(--ease-standard)}.nav-menu.is-open{opacity:1;pointer-events:auto;transform:translateY(0)}.nav-menu a{display:flex;align-items:center;gap:10px;min-height:44px;padding:0 14px;border-radius:12px;color:#1d1d1fbd;font-family:var(--font-label);font-size:14px;font-weight:600;white-space:nowrap}.nav-menu .icon{width:17px;height:17px;color:var(--icon-muted)}.nav-menu a:hover,.nav-menu a.is-active{background:#007aff1a;color:var(--foreground)}.nav-menu a:hover .icon,.nav-menu a.is-active .icon{color:var(--brand-600)}.hero{position:relative;display:flex;align-items:center;min-height:min(700px,calc(100vh - 56px));padding:clamp(54px,6vw,88px) max(24px,calc((100vw - 1180px)/2)) 44px;overflow:hidden;background:radial-gradient(circle at 72% 12%,rgba(0,122,255,.13),transparent 34%),radial-gradient(circle at 22% 86%,rgba(245,179,90,.11),transparent 30%),linear-gradient(180deg,#fff,#fff 72%,#f7f7fa);color:var(--foreground)}.hero:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;opacity:.45;background-image:linear-gradient(rgba(29,29,31,.03) 1px,transparent 1px),linear-gradient(90deg,rgba(29,29,31,.025) 1px,transparent 1px);background-size:44px 44px;-webkit-mask-image:radial-gradient(circle at 50% 20%,#000 0%,transparent 58%);mask-image:radial-gradient(circle at 50% 20%,#000 0%,transparent 58%)}.hero-copy{position:relative;z-index:1;max-width:780px}.hero-copy h1{margin:0;font-family:var(--font-display);font-size:clamp(72px,11vw,142px);font-weight:600;line-height:.92;letter-spacing:-.04em;animation:fade-up .7s var(--ease-apple) both 80ms}.hero-copy p{max-width:590px;margin:28px 0 0;color:var(--muted-foreground);font-size:clamp(20px,2.2vw,30px);line-height:1.32;animation:fade-up .7s var(--ease-apple) both .18s}.cta-row{display:flex;flex-wrap:wrap;gap:14px;margin-top:32px;animation:fade-up .7s var(--ease-apple) both .28s}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:0 23px;border:1px solid transparent;border-radius:999px;font-family:var(--font-label);font-size:16px;font-weight:600;line-height:1;white-space:nowrap;box-shadow:var(--shadow-sm);transition:background-color .18s var(--ease-standard),color .18s var(--ease-standard),border-color .18s var(--ease-standard),transform .18s var(--ease-standard),box-shadow .18s var(--ease-standard),filter .18s var(--ease-standard)}.btn:hover{transform:translateY(-2px);box-shadow:var(--shadow-md)}.btn:active,.text-link:active,.mail-link:active,.phone-button:active{transform:translateY(0) scale(.99)}.btn-primary{background:var(--primary);color:var(--primary-foreground)}.btn-primary:hover{background:var(--brand-600)}.btn-secondary{border-color:#007aff3d;background:#ffffffad;color:var(--brand-600)}.btn-secondary:hover{border-color:#007aff57;background:var(--brand-50)}.phone{width:min(100%,260px);margin:0 auto;overflow:hidden;border:1px solid rgba(0,0,0,.08);border-radius:36px;background:#f7f7fa;box-shadow:0 24px 60px -28px #00000073;transition:transform .26s ease,box-shadow .26s ease}.phone-screen{aspect-ratio:576 / 1188;overflow:hidden;background:#fff}.phone img{display:block;width:100%;height:auto;transform:translateY(-7.2%)}.product-card:hover .phone,.phone-button:hover .phone{transform:translateY(-8px);box-shadow:0 34px 70px -30px #00000080}.section{padding:clamp(74px,9vw,122px) max(22px,calc((100vw - 1180px)/2))}.products{background:linear-gradient(180deg,#f7f7fa,#f2f2f7)}.section-heading{display:grid;grid-template-columns:minmax(0,.95fr) minmax(280px,.75fr);gap:clamp(24px,5vw,80px);align-items:end;margin-bottom:38px;animation:fade-up .7s var(--ease-apple) both}.section-heading h2,.opensource h2,.contact h2{margin:0;font-family:var(--font-headline);font-size:clamp(40px,6vw,76px);font-weight:600;line-height:1.04;letter-spacing:-.03em}.section-heading p,.opensource p{margin:0;color:var(--muted-foreground);font-size:21px;line-height:1.48}.product-grid{display:grid;gap:18px}.product-card{display:grid;grid-template-columns:minmax(0,1fr) minmax(220px,.42fr);align-items:center;gap:clamp(24px,5vw,72px);min-height:430px;padding:clamp(28px,5vw,64px);overflow:hidden;border:1px solid rgba(209,209,214,.82);border-radius:28px;background:radial-gradient(circle at 84% 18%,rgba(0,122,255,.11),transparent 32%),linear-gradient(145deg,#fffffffa,#f7f7faeb);text-align:left;box-shadow:var(--shadow-xs);animation:fade-up .7s var(--ease-apple) both;transition:transform .24s var(--ease-apple),box-shadow .24s var(--ease-apple),border-color .24s var(--ease-apple)}.product-card:nth-child(2){animation-delay:.12s}.product-card:hover{transform:translateY(-6px);border-color:#007aff47;box-shadow:var(--shadow-lg)}.product-card.reader{background:radial-gradient(circle at 84% 18%,rgba(245,179,90,.15),transparent 30%),linear-gradient(145deg,#fff,#fbfaf7)}.product-card h3{margin:0;font-family:var(--font-headline);font-size:clamp(44px,6vw,82px);font-weight:600;line-height:1;letter-spacing:-.02em}.product-card p{max-width:470px;margin:18px 0 0;color:var(--muted-foreground);font-size:clamp(17px,2vw,22px);line-height:1.55}.product-card .phone{width:min(100%,280px);transform:none}.phone-button{width:100%;padding:0;border:0;background:transparent;cursor:zoom-in}.text-link{display:inline-flex;align-items:center;justify-content:center;gap:5px;margin-top:26px;color:var(--brand-600);font-family:var(--font-label);font-size:17px;font-weight:600;transition:color .18s var(--ease-standard),transform .18s var(--ease-standard)}.text-link .icon{transition:transform .18s var(--ease-standard)}.text-link:hover .icon{transform:translate(3px)}.icon{width:18px;height:18px;flex:0 0 auto;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}.dark{position:relative;display:grid;grid-template-columns:minmax(0,.95fr) minmax(320px,.75fr);gap:clamp(28px,7vw,96px);align-items:center;overflow:hidden;background:radial-gradient(circle at 80% 18%,rgba(0,122,255,.2),transparent 32%),radial-gradient(circle at 10% 92%,rgba(255,255,255,.08),transparent 26%),linear-gradient(135deg,#070708,#111113 52%,#0a0a0a);color:#f5f5f7}.dark p{color:#f5f5f7c2}.repo-panel{display:flex;flex-direction:column;gap:34px;padding:34px;border:1px solid rgba(255,255,255,.14);border-radius:28px;background:linear-gradient(145deg,#ffffff1a,#ffffff09),#111113d6;box-shadow:0 28px 80px -48px #007affb8,inset 0 1px #ffffff1f;animation:soft-reveal .7s var(--ease-apple) both;transition:transform .24s var(--ease-apple),border-color .24s var(--ease-apple),box-shadow .24s var(--ease-apple)}.repo-panel:hover{transform:translateY(-4px);border-color:#2e8dff80;box-shadow:0 34px 90px -48px #007affdb,inset 0 1px #ffffff29}.repo-label{color:#f5f5f794;font-family:var(--font-label);font-size:12px;font-weight:700;letter-spacing:.12em;text-transform:uppercase}.repo-panel h3{margin:10px 0;font-family:var(--font-headline);font-size:clamp(24px,3vw,36px);line-height:1.1;letter-spacing:-.02em}.repo-panel p{margin:0;font-size:16px}.repo-panel .btn{align-self:flex-start}.contact{display:grid;place-items:center;gap:24px;min-height:360px;background:radial-gradient(circle at 50% 0%,rgba(0,122,255,.08),transparent 34%),var(--background-100);text-align:center}.contact-links{display:flex;flex-wrap:wrap;justify-content:center;gap:12px}.mail-link{display:inline-flex;align-items:center;gap:10px;min-height:48px;padding:0 22px;border:1px solid var(--border);border-radius:999px;background:#fff;color:var(--brand-600);box-shadow:var(--shadow-sm);font-family:var(--font-label);font-size:18px;font-weight:600;transition:transform .2s var(--ease-standard),box-shadow .2s var(--ease-standard),border-color .2s var(--ease-standard)}.mail-link:hover{transform:translateY(-2px);border-color:#007aff3d;box-shadow:var(--shadow-lg)}.announcement-page{min-height:calc(100vh - 112px);padding:clamp(76px,9vw,128px) max(22px,calc((100vw - 980px)/2)) clamp(80px,10vw,140px);background:radial-gradient(circle at 78% 8%,rgba(0,122,255,.1),transparent 28%),linear-gradient(180deg,#fff,#f7f7fa)}.announcement-hero{margin-bottom:clamp(44px,7vw,80px);animation:fade-up .7s var(--ease-apple) both}.announcement-hero h1{margin:0;font-family:var(--font-display);font-size:clamp(72px,12vw,142px);font-weight:600;line-height:.92;letter-spacing:-.04em}.announcement-hero p{max-width:620px;margin:26px 0 0;color:var(--muted-foreground);font-size:clamp(20px,2.2vw,28px);line-height:1.38}.announcement-list{display:grid;gap:14px}.announcement-item,.announcement-article{padding:clamp(28px,5vw,56px);border:1px solid rgba(209,209,214,.82);border-radius:28px;background:#ffffffc7;box-shadow:var(--shadow-xs);animation:fade-up .7s var(--ease-apple) both .12s}.announcement-item{display:block;transition:transform .22s var(--ease-apple),box-shadow .22s var(--ease-apple),border-color .22s var(--ease-apple)}.announcement-item:hover{transform:translateY(-4px);border-color:#007aff47;box-shadow:var(--shadow-lg)}.announcement-item time,.announcement-article time{display:block;margin-bottom:18px;color:var(--muted-foreground);font-family:var(--font-caption);font-size:13px;font-weight:700;letter-spacing:.12em;text-transform:uppercase}.announcement-article h1,.announcement-item h2,.announcement-article h2{margin:0;font-family:var(--font-headline);font-size:clamp(38px,6vw,72px);line-height:1.04;letter-spacing:-.03em}.back-link{display:inline-flex;align-items:center;gap:6px;min-height:44px;margin-bottom:24px;color:var(--brand-600);font-family:var(--font-label);font-size:16px;font-weight:600}.back-link:before{content:"←";font-size:18px}.back-link:hover{text-decoration:underline}.announcement-article p{max-width:700px;margin:24px 0 0;color:var(--muted-foreground);font-size:clamp(17px,2vw,21px);line-height:1.75}.members-page{min-height:calc(100vh - 112px);padding:clamp(76px,9vw,128px) max(22px,calc((100vw - 1080px)/2)) clamp(80px,10vw,140px);background:radial-gradient(circle at 76% 8%,rgba(0,122,255,.1),transparent 28%),linear-gradient(180deg,#fff,#f7f7fa)}.members-hero{margin-bottom:clamp(34px,6vw,64px);animation:fade-up .7s var(--ease-apple) both}.members-hero h1{margin:0;font-family:var(--font-display);font-size:clamp(72px,12vw,142px);font-weight:600;line-height:.92;letter-spacing:-.04em}.members-hero p{max-width:680px;margin:26px 0 0;color:var(--muted-foreground);font-size:clamp(20px,2.2vw,28px);line-height:1.38}.member-card{display:grid;gap:28px;padding:clamp(26px,5vw,44px);border:1px solid rgba(209,209,214,.82);border-radius:28px;background:#ffffffd1;box-shadow:var(--shadow-xs);animation:fade-up .7s var(--ease-apple) both .12s}.member-profile{display:flex;align-items:center;gap:18px}.member-avatar{width:72px;height:72px;border-radius:24px;object-fit:cover;box-shadow:var(--shadow-lg)}.member-profile h2{margin:0;font-family:var(--font-headline);font-size:clamp(34px,5vw,58px);line-height:1;letter-spacing:-.03em}.member-profile p{margin:8px 0 0;color:var(--muted-foreground);font-size:18px}.heatmap-card{display:grid;gap:16px;min-width:0;padding:clamp(18px,3vw,26px);border:1px solid var(--border);border-radius:22px;background:#f7f7fabd}.heatmap-header{display:flex;align-items:end;justify-content:space-between;gap:16px}.heatmap-header h2{margin:0;font-size:clamp(22px,3vw,30px);letter-spacing:-.02em}.heatmap-header span,.heatmap-footer,.heatmap-label{color:var(--muted-foreground);font-family:var(--font-caption);font-size:12px}.heatmap-scroll{min-width:0;overflow-x:auto;padding-bottom:4px}.heatmap-svg{display:block;min-width:760px;width:100%}.heatmap-cell{fill:#ebedf0}.heatmap-cell.level-1{fill:#9be9a8}.heatmap-cell.level-2{fill:#40c463}.heatmap-cell.level-3{fill:#30a14e}.heatmap-cell.level-4{fill:#216e39}.heatmap-error{margin:0;color:var(--muted-foreground)}.heatmap-footer{display:flex;align-items:center;justify-content:flex-end;gap:6px}.heatmap-footer .heatmap-cell{display:inline-block;width:11px;height:11px;border-radius:2px}.footer{display:flex;justify-content:flex-start;gap:18px;padding:28px max(22px,calc((100vw - 1180px)/2));color:var(--muted-foreground);background:#fff;font-family:var(--font-caption);font-size:13px}.lightbox{position:fixed;top:0;right:0;bottom:0;left:0;z-index:30;display:grid;place-items:center;padding:28px;background:#000000bd;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);animation:soft-reveal .18s var(--ease-apple) both}.lightbox-close{position:fixed;top:18px;right:18px;width:44px;height:44px;border:1px solid rgba(255,255,255,.22);border-radius:999px;background:#ffffff1f;color:#fff;font-size:28px;line-height:1;cursor:pointer}.lightbox-phone{width:min(82vw,360px);cursor:default}.lightbox-phone .phone{width:100%;border-radius:42px;box-shadow:0 34px 90px -28px #000000e6}@media(max-width:860px){.section-heading,.dark,.product-grid{grid-template-columns:1fr}.hero{min-height:auto;padding-top:72px}.phone{border-radius:28px}.footer{flex-direction:column}.product-card{grid-template-columns:minmax(0,1fr) minmax(118px,.5fr);gap:18px;min-height:auto;text-align:left}.product-card p{margin-right:0;margin-left:0}.product-card .phone{width:min(34vw,180px)}}@media(max-width:520px){.site{padding-top:56px}.nav-inner{gap:6px;width:calc(100% - 18px)}.brand{min-height:44px}.brand img{height:40px;max-width:132px}.hero{padding-bottom:34px}.product-card{grid-template-columns:minmax(0,1fr) 118px;padding:28px 18px}.product-card h3{font-size:clamp(30px,10vw,42px)}.product-card p{font-size:15px}.product-card .phone{width:118px}.text-link{margin-top:18px;font-size:14px}}@media(max-width:380px){.brand img{height:36px;max-width:116px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}}
