事業目的
- 定款 第2条において、23項目の事業目的を定めています。 - 領域別に整理した一覧は事業内容のページをご覧ください。 + 定款上の事業目的は、領域別に事業内容のページで掲載しています。
diff --git a/ether/static/css/project.css b/ether/static/css/project.css index fd54212..3020809 100644 --- a/ether/static/css/project.css +++ b/ether/static/css/project.css @@ -1,97 +1,26 @@ -/* ========================================================= - Ether Design System - Inspired by Material 3 — user-centred, calm, accessible. - ========================================================= */ +/* Ether website: simple, direct, company-first interface. */ :root { - /* ------- Color tokens (Material 3 style) ------- */ - --md-primary: #00696b; - --md-on-primary: #ffffff; - --md-primary-container: #6ff7f6; - --md-on-primary-container: #002021; - - --md-secondary: #4a6364; - --md-on-secondary: #ffffff; - --md-secondary-container: #cce8e8; - --md-on-secondary-container: #051f20; - - --md-tertiary: #4b5f7d; - --md-tertiary-container: #d3e4ff; - --md-on-tertiary-container: #001c38; - - --md-error: #ba1a1a; - --md-on-error: #ffffff; - --md-error-container: #ffdad6; - --md-on-error-container: #410002; - - --md-surface: #f5fafa; - --md-surface-dim: #d5dbdb; - --md-surface-bright: #ffffff; - --md-surface-container-lowest: #ffffff; - --md-surface-container-low: #eff5f5; - --md-surface-container: #e9efef; - --md-surface-container-high: #e3eaea; - --md-surface-container-highest: #dee4e4; - - --md-on-surface: #161d1d; - --md-on-surface-variant: #3f4948; - --md-outline: #6f7979; - --md-outline-variant: #bec9c8; - --md-inverse-surface: #2b3231; - --md-inverse-on-surface: #eff1f0; - - --md-scrim: rgba(0, 0, 0, 0.45); - - /* ------- Elevation (Material 3) ------- */ - --md-elevation-1: - 0 1px 2px rgba(0, 32, 33, 0.30), - 0 1px 3px 1px rgba(0, 32, 33, 0.10); - --md-elevation-2: - 0 1px 2px rgba(0, 32, 33, 0.30), - 0 2px 6px 2px rgba(0, 32, 33, 0.10); - --md-elevation-3: - 0 4px 8px 3px rgba(0, 32, 33, 0.10), - 0 1px 3px rgba(0, 32, 33, 0.20); - --md-elevation-4: - 0 6px 10px 4px rgba(0, 32, 33, 0.10), - 0 2px 3px rgba(0, 32, 33, 0.18); - - /* ------- Shape ------- */ - --radius-xs: 4px; - --radius-sm: 8px; - --radius-md: 12px; - --radius-lg: 16px; - --radius-xl: 24px; - --radius-2xl: 28px; - --radius-full: 9999px; - - /* ------- Spacing scale (8pt grid) ------- */ - --space-1: 4px; - --space-2: 8px; - --space-3: 12px; - --space-4: 16px; - --space-5: 24px; - --space-6: 32px; - --space-7: 48px; - --space-8: 64px; - --space-9: 96px; - - /* ------- Type ------- */ + --color-background: #ffffff; + --color-surface: #ffffff; + --color-muted-surface: #f7f8f8; + --color-text: #111414; + --color-muted: #5f6668; + --color-border: #dde1e3; + --color-border-strong: #c4c9cc; + --color-accent: #00696b; + --color-accent-hover: #004f51; + --color-accent-soft: #e7f4f4; + --color-focus: #008487; --font-sans: "Inter", "Noto Sans JP", "Hiragino Sans", "Yu Gothic", "Helvetica Neue", Arial, sans-serif; - --font-display: var(--font-sans); - - /* ------- Motion ------- */ - --ease-emphasized: cubic-bezier(0.2, 0, 0, 1); - --ease-standard: cubic-bezier(0.2, 0, 0, 1); - --duration-short: 150ms; - --duration-medium: 250ms; - --duration-long: 400ms; + --container-wide: 1120px; + --radius-sm: 6px; + --radius-md: 8px; + --space-section: 88px; } -/* ----------- Base ----------- */ - *, *::before, *::after { @@ -106,12 +35,11 @@ html { body { margin: 0; - color: var(--md-on-surface); - background: var(--md-surface); + color: var(--color-text); + background: var(--color-background); font-family: var(--font-sans); - font-feature-settings: "palt", "ss01"; font-weight: 400; - line-height: 1.6; + line-height: 1.65; text-rendering: optimizeLegibility; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; @@ -124,84 +52,80 @@ svg { } a { - color: var(--md-primary); + color: var(--color-accent); text-decoration: none; - transition: color var(--duration-short) var(--ease-standard); + text-underline-offset: 0.18em; } a:hover { - color: var(--md-on-primary-container); + color: var(--color-accent-hover); + text-decoration: underline; } :focus-visible { - outline: 3px solid var(--md-primary); + outline: 2px solid var(--color-focus); outline-offset: 3px; - border-radius: 6px; } ::selection { - color: var(--md-on-primary-container); - background: var(--md-primary-container); + color: #ffffff; + background: var(--color-accent); +} + +.container { + max-width: var(--container-wide); } .material-symbols-rounded { - font-variation-settings: "FILL" 0, "wght" 500, "GRAD" 0, "opsz" 24; - font-size: 20px; + font-variation-settings: "FILL" 0, "wght" 450, "GRAD" 0, "opsz" 24; + font-size: 18px; line-height: 1; vertical-align: middle; } -/* Skip link */ .skip-link { position: absolute; top: -100px; left: 16px; z-index: 1000; - padding: 12px 20px; - color: var(--md-on-primary); - background: var(--md-primary); - border-radius: var(--radius-full); - font-weight: 600; - transition: top var(--duration-medium) var(--ease-emphasized); + padding: 10px 14px; + color: #ffffff; + background: var(--color-accent); + border-radius: var(--radius-sm); + font-weight: 700; } .skip-link:focus { top: 16px; - color: var(--md-on-primary); + color: #ffffff; } -/* ----------- Header / Nav ----------- */ +/* Header */ .site-header { position: sticky; top: 0; z-index: 50; - background: rgba(245, 250, 250, 0.78); - backdrop-filter: saturate(180%) blur(18px); - -webkit-backdrop-filter: saturate(180%) blur(18px); - transition: - background var(--duration-medium) var(--ease-standard), - box-shadow var(--duration-medium) var(--ease-standard), - border-color var(--duration-medium) var(--ease-standard); - border-bottom: 1px solid transparent; + background: rgba(255, 255, 255, 0.94); + border-bottom: 1px solid var(--color-border); + backdrop-filter: blur(12px); + -webkit-backdrop-filter: blur(12px); } .site-header.is-scrolled { - background: rgba(245, 250, 250, 0.92); - border-bottom-color: var(--md-outline-variant); - box-shadow: var(--md-elevation-1); + box-shadow: 0 1px 0 rgba(17, 20, 20, 0.04); } .navbar { - min-height: 72px; + min-height: 64px; padding: 0; } .navbar-brand { display: inline-flex; align-items: center; - gap: var(--space-3); - color: var(--md-on-surface); + gap: 12px; + color: var(--color-text); font-size: 1rem; font-weight: 700; letter-spacing: 0; @@ -209,21 +133,21 @@ a:hover { .navbar-brand:hover, .navbar-brand:focus { - color: var(--md-on-surface); + color: var(--color-text); + text-decoration: none; } .brand-mark { display: inline-grid; - width: 36px; - height: 36px; + width: 34px; + height: 34px; place-items: center; - color: var(--md-on-primary); - background: linear-gradient(135deg, var(--md-primary), #00838a); - border-radius: var(--radius-md); + color: #ffffff; + background: var(--color-accent); + border-radius: var(--radius-sm); + font-size: 0.94rem; font-weight: 800; - font-size: 1rem; letter-spacing: 0; - box-shadow: var(--md-elevation-1); } .brand-name { @@ -231,1552 +155,646 @@ a:hover { } .navbar-nav { - gap: var(--space-1); + gap: 2px; } .nav-link { display: inline-flex; align-items: center; - padding: 0.55rem 0.95rem !important; - color: var(--md-on-surface-variant); - font-size: 0.92rem; + min-height: 40px; + padding: 0.5rem 0.75rem !important; + color: var(--color-muted); + border-radius: var(--radius-sm); + font-size: 0.94rem; font-weight: 600; - letter-spacing: 0; - border-radius: var(--radius-full); - transition: - color var(--duration-short) var(--ease-standard), - background-color var(--duration-short) var(--ease-standard); -} - -.nav-link:hover { - color: var(--md-on-surface); - background-color: rgba(0, 105, 107, 0.08); } +.nav-link:hover, +.nav-link:focus, .nav-link.active { - color: var(--md-on-primary-container); - background-color: var(--md-primary-container); -} - -.nav-link:focus-visible { - outline-offset: 2px; + color: var(--color-text); + background: var(--color-muted-surface); + text-decoration: none; } -.nav-cta { - display: inline-flex; - align-items: center; - gap: 0.4rem; - margin-left: var(--space-2); +.nav-lang-link { + gap: 6px; } .navbar-toggler { - display: inline-grid; - width: 44px; - height: 44px; - place-items: center; - color: var(--md-on-surface); - background: transparent; - border: 0; - border-radius: var(--radius-full); - transition: background-color var(--duration-short) var(--ease-standard); + padding: 8px; + color: var(--color-text); + border: 1px solid var(--color-border); + border-radius: var(--radius-sm); } -.navbar-toggler:hover, .navbar-toggler:focus { - background-color: rgba(0, 105, 107, 0.10); box-shadow: none; } -.navbar-toggler:focus-visible { - outline-offset: 2px; -} - -/* ----------- Buttons ----------- */ +/* Buttons and links */ .btn { display: inline-flex; align-items: center; justify-content: center; - gap: 0.5rem; - min-height: 44px; - padding: 0.65rem 1.4rem; - border-radius: var(--radius-full); - font-family: var(--font-sans); - font-size: 0.95rem; - font-weight: 600; + gap: 8px; + min-height: 42px; + padding: 0.62rem 1rem; + border-radius: var(--radius-sm); + font-size: 0.94rem; + font-weight: 700; + line-height: 1.2; letter-spacing: 0; - text-decoration: none; - border: 1px solid transparent; - transition: - transform var(--duration-short) var(--ease-emphasized), - box-shadow var(--duration-short) var(--ease-standard), - background-color var(--duration-short) var(--ease-standard), - color var(--duration-short) var(--ease-standard), - border-color var(--duration-short) var(--ease-standard); -} - -.btn:focus-visible { - outline-offset: 3px; + white-space: normal; + text-align: center; } -.btn .material-symbols-rounded { - font-size: 20px; +.btn:hover { + text-decoration: none; } -.btn-filled, -.btn-primary { - color: var(--md-on-primary); - background: var(--md-primary); - border-color: var(--md-primary); +.btn-filled { + color: #ffffff; + background: var(--color-accent); + border: 1px solid var(--color-accent); } .btn-filled:hover, -.btn-primary:hover, .btn-filled:focus, -.btn-primary:focus { - color: var(--md-on-primary); - background: #00585a; - border-color: #00585a; - box-shadow: var(--md-elevation-2); - transform: translateY(-1px); +.btn-filled.active, +.btn-filled:active { + color: #ffffff; + background: var(--color-accent-hover); + border-color: var(--color-accent-hover); } +.btn-outline-light, .btn-tonal { - color: var(--md-on-secondary-container); - background: var(--md-secondary-container); - border-color: transparent; + color: var(--color-text); + background: #ffffff; + border: 1px solid var(--color-border-strong); } +.btn-outline-light:hover, +.btn-outline-light:focus, .btn-tonal:hover, .btn-tonal:focus { - color: var(--md-on-secondary-container); - background: #b6d3d3; - box-shadow: var(--md-elevation-1); - transform: translateY(-1px); -} - -.btn-outline-light { - color: #ffffff; - background: rgba(255, 255, 255, 0.06); - border-color: rgba(255, 255, 255, 0.45); - backdrop-filter: blur(8px); -} - -.btn-outline-light:hover, -.btn-outline-light:focus { - color: var(--md-on-primary-container); - background: rgba(255, 255, 255, 0.95); - border-color: rgba(255, 255, 255, 0.95); - transform: translateY(-1px); + color: var(--color-text); + background: var(--color-muted-surface); + border-color: var(--color-border-strong); } -.btn-text { - padding: 0.6rem 0.9rem; - color: var(--md-primary); - background: transparent; -} - -.btn-text:hover, -.btn-text:focus { - color: var(--md-on-primary-container); - background: rgba(0, 105, 107, 0.08); -} - -/* ----------- Layout primitives ----------- */ - -.container { - max-width: 1200px; -} - -.section { - padding: var(--space-9) 0; -} - -.section-tight { - padding: var(--space-8) 0; -} - -.section-muted { - background: var(--md-surface-container-low); -} - -.section-emphasis { - background: var(--md-surface-container); +.btn.disabled, +.btn:disabled { + color: var(--color-muted); + background: var(--color-muted-surface); + border-color: var(--color-border); + opacity: 1; } -.section-heading { - max-width: 760px; - margin-bottom: var(--space-7); +.nav-cta { + min-height: 40px; + padding-inline: 0.95rem; } -.section-heading h2 { - margin: 0; +.navbar .btn-filled.nav-cta, +.navbar .btn-filled.nav-cta.active, +.navbar .btn-filled.nav-cta:active { + color: #ffffff !important; + background: var(--color-accent) !important; + border-color: var(--color-accent) !important; } -.section-heading .lead { - margin-top: var(--space-4); +.navbar .btn-filled.nav-cta:hover, +.navbar .btn-filled.nav-cta:focus { + color: #ffffff !important; + background: var(--color-accent-hover) !important; + border-color: var(--color-accent-hover) !important; } -.eyebrow { +.text-link, +.service-link, +.active-link, +.contact-channel a { display: inline-flex; align-items: center; - gap: 0.5rem; - margin: 0 0 var(--space-4); - padding: 0.35rem 0.85rem; - color: var(--md-on-primary-container); - background: var(--md-primary-container); - border-radius: var(--radius-full); - font-size: 0.78rem; + gap: 6px; + margin-top: 12px; font-weight: 700; - letter-spacing: 0.04em; - text-transform: uppercase; } -.eyebrow .dot { - display: inline-block; - width: 6px; - height: 6px; - background: var(--md-primary); - border-radius: var(--radius-full); -} - -/* ----------- Typography ----------- */ +/* Page structure */ -h1, -h2, -h3, -h4 { - font-family: var(--font-display); - color: var(--md-on-surface); - letter-spacing: -0.01em; - font-weight: 800; +.hero-section { + padding: 112px 0 96px; + background: #ffffff; + border-bottom: 1px solid var(--color-border); } -.display-1 { - margin: 0; - font-size: clamp(2.6rem, 5.5vw, 4.5rem); - line-height: 1.06; - letter-spacing: -0.02em; - font-weight: 800; +.hero-grid { + display: block; } -.headline { - margin: 0; - font-size: clamp(1.9rem, 3.4vw, 2.6rem); - line-height: 1.18; - letter-spacing: -0.015em; - font-weight: 800; +.hero-content { + max-width: 860px; } -.title { +.hero-content h1, +.page-hero h1 { margin: 0; - font-size: 1.25rem; - line-height: 1.4; - font-weight: 700; + max-width: 920px; + color: var(--color-text); + font-size: clamp(2.5rem, 6vw, 5.6rem); + font-weight: 800; + line-height: 1.04; + letter-spacing: 0; } -.lead { - margin: 0; - color: var(--md-on-surface-variant); - font-size: 1.1rem; - line-height: 1.85; +.hero-content h1 .accent { + color: inherit; } +.hero-lead, +.page-hero p, +.lead, .body-lg { - color: var(--md-on-surface-variant); - font-size: 1.02rem; - line-height: 1.95; -} - -.section h2, -.compact-hero h1, -.contact-panel h2 { - margin: 0; - font-size: clamp(1.9rem, 3.4vw, 2.6rem); - line-height: 1.18; - letter-spacing: -0.015em; - font-weight: 800; + max-width: 720px; + margin: 24px 0 0; + color: var(--color-muted); + font-size: 1.16rem; + line-height: 1.75; } -.section p, -.large-copy, -.page-hero p, -.contact-panel p, -.service-detail p { - color: var(--md-on-surface-variant); - font-size: 1.05rem; - line-height: 1.95; +.hero-actions, +.callout-actions, +.product-actions { + display: flex; + flex-wrap: wrap; + gap: 12px; + margin-top: 32px; } -/* ----------- Hero ----------- */ - -.hero-section { - position: relative; - isolation: isolate; - overflow: hidden; - padding: clamp(80px, 12vh, 140px) 0 clamp(72px, 10vh, 120px); - background: var(--md-surface); +.hero-meta, +.product-meta, +.fact-list, +.company-list { + margin: 0; } -.hero-section::before, -.hero-section::after { - content: ""; - position: absolute; - inset: 0; - pointer-events: none; - z-index: -1; +.section, +.page-hero { + padding: var(--space-section) 0; } -.hero-section::before { - background: - radial-gradient(60% 50% at 12% 0%, rgba(0, 131, 138, 0.22), transparent 70%), - radial-gradient(45% 50% at 95% 30%, rgba(111, 247, 246, 0.45), transparent 70%), - radial-gradient(40% 60% at 70% 100%, rgba(75, 95, 125, 0.18), transparent 70%); +.page-hero { + background: #ffffff; + border-bottom: 1px solid var(--color-border); } -.hero-section::after { - background: - linear-gradient(180deg, rgba(245, 250, 250, 0) 70%, rgba(245, 250, 250, 1) 100%); +.compact-hero { + padding: 88px 0 72px; } -.hero-grid { - display: grid; - grid-template-columns: minmax(0, 1.05fr) minmax(0, 0.95fr); - gap: clamp(2rem, 5vw, 4.5rem); - align-items: center; +.section-muted, +.simple-section:nth-of-type(even) { + background: var(--color-muted-surface); + border-block: 1px solid var(--color-border); } -.hero-content { - max-width: 640px; +.section-heading { + max-width: 720px; + margin-bottom: 40px; } -.hero-content h1 { +.headline, +.section-heading h2, +.prose h2, +.simple-layout h2 { margin: 0; - font-size: clamp(2.4rem, 5.4vw, 4.25rem); - line-height: 1.05; - letter-spacing: -0.025em; + color: var(--color-text); + font-size: clamp(1.8rem, 3.4vw, 3rem); font-weight: 800; + line-height: 1.14; + letter-spacing: 0; } -.hero-content h1 .accent { - background: linear-gradient(120deg, var(--md-primary) 0%, #00838a 50%, #4b5f7d 100%); - -webkit-background-clip: text; - background-clip: text; - color: transparent; +.section-label, +.eyebrow, +.service-number, +.product-tagline, +.hero-meta-label, +.fact-list dt, +.company-list dt, +.product-meta dt, +.roadmap-tag, +.policy-num, +.approach-num, +.charter-letter, +.active-icon { + margin: 0 0 10px; + color: var(--color-muted); + font-size: 0.78rem; + font-weight: 800; + letter-spacing: 0.04em; + text-transform: uppercase; } -.hero-lead { - max-width: 540px; - margin: var(--space-5) 0 0; - color: var(--md-on-surface-variant); - font-size: clamp(1.05rem, 1.6vw, 1.22rem); - line-height: 1.85; +.eyebrow { + display: block; } -.hero-actions { - display: flex; - flex-wrap: wrap; - gap: var(--space-3); - margin-top: var(--space-6); +.eyebrow .dot, +.dot { + display: none; } -.hero-meta { - display: flex; - flex-wrap: wrap; - gap: var(--space-5) var(--space-7); - margin-top: var(--space-7); - padding-top: var(--space-5); - border-top: 1px solid var(--md-outline-variant); +.simple-layout, +.split-layout { + display: grid; + grid-template-columns: minmax(180px, 0.36fr) minmax(0, 0.64fr); + gap: clamp(32px, 6vw, 88px); + align-items: start; } -.hero-meta-item { - display: flex; - flex-direction: column; - gap: var(--space-1); +.simple-layout p, +.split-layout p, +.prose p, +.contact-channel p, +.service-item p, +.active-item p, +.policy-item p, +.approach-item p, +.charter-group li { + color: var(--color-muted); + font-size: 1rem; } -.hero-meta-label { - color: var(--md-on-surface-variant); - font-size: 0.78rem; - font-weight: 600; - letter-spacing: 0.04em; - text-transform: uppercase; +.plain-list, +.product-feature-list, +.roadmap-list, +.charter-group ul { + display: grid; + gap: 12px; + margin: 0; + padding: 0; + list-style: none; } -.hero-meta-value { - color: var(--md-on-surface); - font-size: 1rem; - font-weight: 700; +.plain-list li, +.product-feature-list li, +.roadmap-list li, +.charter-group li { + padding: 14px 0; + border-bottom: 1px solid var(--color-border); } -/* Decorative panel on the hero right side */ -.hero-visual { - position: relative; - display: grid; - gap: var(--space-4); - grid-template-columns: repeat(2, minmax(0, 1fr)); - grid-auto-rows: 1fr; +.plain-list li:first-child, +.product-feature-list li:first-child, +.roadmap-list li:first-child, +.charter-group li:first-child { + border-top: 1px solid var(--color-border); } -.hero-card { - position: relative; - display: flex; - flex-direction: column; - justify-content: space-between; - gap: var(--space-4); - min-height: 170px; - padding: var(--space-5); - background: var(--md-surface-container-lowest); - border: 1px solid var(--md-outline-variant); - border-radius: var(--radius-xl); - box-shadow: var(--md-elevation-1); - transition: - transform var(--duration-medium) var(--ease-emphasized), - box-shadow var(--duration-medium) var(--ease-standard); +/* Simple lists and panels */ + +.fact-list, +.company-list, +.product-meta { + display: grid; + border-top: 1px solid var(--color-border); } -.hero-card:hover { - transform: translateY(-4px); - box-shadow: var(--md-elevation-3); +.fact-list > div, +.company-list > div, +.product-meta > div { + display: grid; + grid-template-columns: minmax(140px, 0.3fr) minmax(0, 0.7fr); + gap: 24px; + padding: 18px 0; + border-bottom: 1px solid var(--color-border); } -.hero-card.span-2 { - grid-column: span 2; +.fact-list dd, +.company-list dd, +.product-meta dd { + margin: 0; + color: var(--color-text); + overflow-wrap: anywhere; } -.hero-card.is-primary { - color: var(--md-on-primary-container); - background: linear-gradient(140deg, var(--md-primary-container), #aef0ee); - border-color: transparent; +.company-list dt { + display: flex; + gap: 8px; + align-items: center; } -.hero-card.is-secondary { - color: var(--md-on-secondary-container); - background: var(--md-secondary-container); - border-color: transparent; +.company-list .material-symbols-rounded { + color: var(--color-muted); + font-size: 17px; } -.hero-card.is-tertiary { - color: var(--md-on-tertiary-container); - background: var(--md-tertiary-container); - border-color: transparent; +.compact { + margin: 24px 0 0; } -.hero-card .card-icon { - display: inline-grid; - width: 44px; - height: 44px; - place-items: center; - background: rgba(255, 255, 255, 0.55); +.company-panel, +.product-card, +.contact-panel, +.callout-band { + padding: clamp(28px, 5vw, 48px); + background: #ffffff; + border: 1px solid var(--color-border); border-radius: var(--radius-md); } -.hero-card .card-icon .material-symbols-rounded { - font-size: 22px; - color: var(--md-on-primary-container); +.contact-panel, +.callout-band { + display: grid; + grid-template-columns: minmax(0, 1fr) auto; + gap: 32px; + align-items: center; } -.hero-card h3 { +.contact-panel h2, +.callout-band h2, +.product-card h3 { margin: 0; - font-size: 1.05rem; - font-weight: 700; - letter-spacing: -0.005em; + color: var(--color-text); + font-size: clamp(1.5rem, 2.6vw, 2.3rem); + font-weight: 800; + letter-spacing: 0; + line-height: 1.2; } -.hero-card p { - margin: 0; - font-size: 0.88rem; - line-height: 1.55; - opacity: 0.82; +.callout-band p, +.contact-panel p, +.product-card p { + color: var(--color-muted); } -/* ----------- Section: split layout ----------- */ +/* Legacy grids, normalized to quiet rows/cards */ -.split-layout { +.service-grid, +.policy-grid, +.active-grid, +.approach-grid, +.contact-channels { display: grid; - grid-template-columns: minmax(0, 0.85fr) minmax(0, 1.15fr); - gap: clamp(2rem, 6vw, 5rem); - align-items: start; + grid-template-columns: repeat(3, minmax(0, 1fr)); + gap: 1px; + overflow: hidden; + border: 1px solid var(--color-border); + border-radius: var(--radius-md); + background: var(--color-border); } -.split-layout .lead-block h2 { - margin: 0; +.approach-grid, +.contact-channels { + grid-template-columns: repeat(2, minmax(0, 1fr)); + margin-top: 32px; } -/* ----------- Service grid (Material cards) ----------- */ - -.service-grid { - display: grid; - grid-template-columns: repeat(4, minmax(0, 1fr)); - gap: var(--space-4); +.service-item, +.policy-item, +.active-item, +.approach-item, +.contact-channel, +.charter-group { + padding: 28px; + background: #ffffff; +} + +.service-item h3, +.policy-item h3, +.active-item h3, +.approach-item h3, +.contact-channel h3, +.charter-group h3 { + margin: 0 0 12px; + color: var(--color-text); + font-size: 1.2rem; + font-weight: 800; + line-height: 1.25; } -.service-item { - position: relative; - display: flex; - flex-direction: column; - gap: var(--space-4); - min-height: 280px; - padding: var(--space-6); - background: var(--md-surface-container-lowest); - border: 1px solid var(--md-outline-variant); - border-radius: var(--radius-xl); - box-shadow: var(--md-elevation-1); - overflow: hidden; - transition: - transform var(--duration-medium) var(--ease-emphasized), - box-shadow var(--duration-medium) var(--ease-standard), - border-color var(--duration-medium) var(--ease-standard); +.service-icon, +.channel-icon, +.active-icon { + display: none; } -.service-item::after { - content: ""; - position: absolute; - right: -40px; - bottom: -40px; - width: 160px; - height: 160px; - background: radial-gradient(closest-side, rgba(0, 105, 107, 0.10), transparent 70%); - border-radius: var(--radius-full); - opacity: 0; - transition: opacity var(--duration-medium) var(--ease-standard); +.charter-list { + display: grid; + gap: 16px; } -.service-item:hover, -.service-item:focus-within { - transform: translateY(-4px); - border-color: transparent; - box-shadow: var(--md-elevation-3); +.charter-group { + border: 1px solid var(--color-border); + border-radius: var(--radius-md); } -.service-item:hover::after, -.service-item:focus-within::after { - opacity: 1; +.charter-group header { + display: flex; + gap: 12px; + align-items: baseline; + justify-content: space-between; + margin-bottom: 16px; } -.service-icon { - display: inline-grid; - width: 52px; - height: 52px; - place-items: center; - color: var(--md-on-primary-container); - background: var(--md-primary-container); - border-radius: var(--radius-lg); +.charter-badge { + padding: 4px 8px; + color: var(--color-accent); + background: var(--color-accent-soft); + border-radius: var(--radius-sm); + font-size: 0.75rem; + font-weight: 800; } -.service-icon .material-symbols-rounded { - font-size: 26px; +.prose, +.narrow-prose { + max-width: 760px; } -.service-number { - display: inline-block; - margin: 0; - color: var(--md-primary); - font-size: 0.78rem; - font-weight: 700; - letter-spacing: 0.06em; - text-transform: uppercase; +.prose + .prose { + margin-top: 48px; } -.service-item h3 { - margin: 0; - font-size: 1.2rem; - line-height: 1.35; +.prose h3 { + margin: 28px 0 8px; + color: var(--color-text); + font-size: 1.15rem; font-weight: 800; - letter-spacing: -0.005em; - color: var(--md-on-surface); } -.service-item p { - margin: 0; - color: var(--md-on-surface-variant); - font-size: 0.97rem; - line-height: 1.75; +.prose p { + margin: 14px 0 0; } -/* ----------- CTA card ----------- */ +.contact-note { + margin: 24px 0 0; + color: var(--color-muted); + font-size: 0.94rem; +} -.callout-band, -.contact-panel { +.footer-grid { display: grid; - grid-template-columns: minmax(0, 1.1fr) minmax(0, 0.9fr); - gap: clamp(1.5rem, 4vw, 3rem); - align-items: center; - padding: clamp(2rem, 4vw, 3rem); - background: linear-gradient(135deg, var(--md-primary), #00838a 60%, #4b5f7d); - color: var(--md-on-primary); - border: 0; - border-radius: var(--radius-2xl); - box-shadow: var(--md-elevation-3); - overflow: hidden; - position: relative; + grid-template-columns: minmax(240px, 1fr) repeat(3, minmax(140px, 0.5fr)); + gap: 40px; + padding: 56px 12px 40px; } -.callout-band::before, -.contact-panel::before { - content: ""; - position: absolute; - inset: 0; - background: - radial-gradient(40% 60% at 100% 0%, rgba(255, 255, 255, 0.18), transparent 70%), - radial-gradient(40% 50% at 0% 100%, rgba(0, 0, 0, 0.18), transparent 70%); - pointer-events: none; +.site-footer { + color: var(--color-muted); + background: #ffffff; + border-top: 1px solid var(--color-border); } -.callout-band > *, -.contact-panel > * { - position: relative; - z-index: 1; +.footer-brand, +.footer-brand:hover { + display: inline-flex; + align-items: center; + gap: 12px; + color: var(--color-text); + font-weight: 800; + text-decoration: none; } -.callout-band h2, -.callout-band p, -.contact-panel h2, -.contact-panel p { - color: var(--md-on-primary); +.footer-brand-block p { + max-width: 320px; + margin: 16px 0 0; } -.callout-band .eyebrow, -.contact-panel .eyebrow { - color: var(--md-on-primary); - background: rgba(255, 255, 255, 0.18); +.footer-heading { + margin: 0 0 14px; + color: var(--color-text); + font-size: 0.9rem; + font-weight: 800; } -.callout-band .eyebrow .dot, -.contact-panel .eyebrow .dot { - background: var(--md-on-primary); +.footer-nav ul { + display: grid; + gap: 8px; + margin: 0; + padding: 0; + list-style: none; } -.callout-band p, -.contact-panel p { - color: rgba(255, 255, 255, 0.88); - margin-top: var(--space-3); +.footer-nav a { + color: var(--color-muted); } -.callout-actions { +.footer-meta { display: flex; - gap: var(--space-3); - flex-wrap: wrap; - justify-content: flex-end; + justify-content: space-between; + gap: 16px; + padding: 20px 12px 32px; + border-top: 1px solid var(--color-border); } -@media (max-width: 768px) { - .callout-actions { - justify-content: flex-start; - } +.message-container { + padding-top: 24px; } -/* ----------- Page hero (sub pages) ----------- */ - -.page-hero { - position: relative; - isolation: isolate; - overflow: hidden; - padding: clamp(80px, 14vh, 144px) 0 clamp(56px, 8vh, 88px); - background: var(--md-surface); +[data-reveal] { + opacity: 1; + transform: none; } -.page-hero::before { - content: ""; - position: absolute; - inset: 0; - z-index: -1; - background: - radial-gradient(50% 60% at 0% 0%, rgba(0, 131, 138, 0.18), transparent 70%), - radial-gradient(40% 50% at 100% 30%, rgba(111, 247, 246, 0.36), transparent 70%); -} +@media (max-width: 991.98px) { + .navbar-collapse { + padding: 16px 0 18px; + border-top: 1px solid var(--color-border); + } -.page-hero h1 { - margin: 0; - font-size: clamp(2.2rem, 4.6vw, 3.4rem); - line-height: 1.1; - letter-spacing: -0.02em; - font-weight: 800; -} - -.page-hero p { - max-width: 720px; - margin: var(--space-5) 0 0; - color: var(--md-on-surface-variant); - font-size: 1.1rem; - line-height: 1.85; -} - -/* ----------- Service detail list ----------- */ - -.service-detail-list { - display: grid; - gap: var(--space-4); -} - -.service-detail { - display: grid; - grid-template-columns: 96px minmax(0, 1fr); - gap: var(--space-5); - padding: var(--space-6); - background: var(--md-surface-container-lowest); - border: 1px solid var(--md-outline-variant); - border-radius: var(--radius-xl); - transition: - transform var(--duration-medium) var(--ease-emphasized), - box-shadow var(--duration-medium) var(--ease-standard), - border-color var(--duration-medium) var(--ease-standard); -} - -.service-detail:hover { - transform: translateY(-2px); - border-color: transparent; - box-shadow: var(--md-elevation-2); -} - -.detail-index { - display: grid; - width: 64px; - height: 64px; - place-items: center; - color: var(--md-on-primary-container); - background: var(--md-primary-container); - border-radius: var(--radius-lg); - font-size: 1.25rem; - font-weight: 800; - letter-spacing: 0; -} - -.service-detail h2 { - margin: 0 0 var(--space-3); - font-size: 1.4rem; - line-height: 1.3; - font-weight: 800; - letter-spacing: -0.005em; -} - -.service-detail p { - margin: 0; - color: var(--md-on-surface-variant); - font-size: 1rem; - line-height: 1.85; -} - -/* ----------- Company information ----------- */ - -.company-panel { - max-width: 880px; -} - -.company-list { - display: grid; - grid-template-columns: 1fr; - gap: 1px; - margin: 0; - background: var(--md-outline-variant); - border: 1px solid var(--md-outline-variant); - border-radius: var(--radius-xl); - overflow: hidden; - box-shadow: var(--md-elevation-1); -} - -.company-list > div { - display: grid; - grid-template-columns: 220px minmax(0, 1fr); - gap: var(--space-5); - padding: var(--space-5) var(--space-6); - background: var(--md-surface-container-lowest); - transition: background-color var(--duration-short) var(--ease-standard); -} - -.company-list > div:hover { - background: var(--md-surface-container-low); -} - -.company-list dt { - display: inline-flex; - align-items: center; - gap: var(--space-2); - color: var(--md-on-surface-variant); - font-size: 0.92rem; - font-weight: 700; - letter-spacing: 0; -} - -.company-list dt .material-symbols-rounded { - font-size: 20px; - color: var(--md-primary); -} - -.company-list dd { - margin: 0; - color: var(--md-on-surface); - font-size: 1rem; - font-weight: 600; -} - -/* ----------- Contact ----------- */ - -.contact-channels { - display: grid; - grid-template-columns: repeat(2, minmax(0, 1fr)); - gap: var(--space-4); - margin-top: var(--space-7); -} - -.contact-channel { - display: flex; - flex-direction: column; - gap: var(--space-3); - padding: var(--space-6); - background: var(--md-surface-container-lowest); - border: 1px solid var(--md-outline-variant); - border-radius: var(--radius-xl); - transition: - transform var(--duration-medium) var(--ease-emphasized), - box-shadow var(--duration-medium) var(--ease-standard), - border-color var(--duration-medium) var(--ease-standard); -} - -.contact-channel:hover { - transform: translateY(-2px); - border-color: transparent; - box-shadow: var(--md-elevation-2); -} - -.contact-channel .channel-icon { - display: inline-grid; - width: 48px; - height: 48px; - place-items: center; - color: var(--md-on-primary-container); - background: var(--md-primary-container); - border-radius: var(--radius-md); -} - -.contact-channel h3 { - margin: 0; - color: var(--md-on-surface); - font-size: 1.1rem; - font-weight: 700; -} - -.contact-channel p { - margin: 0; - color: var(--md-on-surface-variant); - font-size: 0.95rem; - line-height: 1.7; -} - -.contact-channel a { - display: inline-flex; - align-items: center; - gap: 0.4rem; - margin-top: auto; - font-weight: 700; -} - -/* ----------- Footer ----------- */ - -.site-footer { - margin-top: var(--space-9); - padding: var(--space-9) 0 var(--space-6); - color: rgba(239, 241, 240, 0.78); - background: linear-gradient(180deg, #16201f 0%, #0e1717 100%); -} - -.footer-grid { - display: grid; - grid-template-columns: minmax(0, 1.4fr) repeat(3, minmax(0, 1fr)); - gap: clamp(1.5rem, 4vw, 3.5rem); - align-items: start; -} - -.footer-brand-block .footer-brand { - display: inline-flex; - align-items: center; - gap: var(--space-3); - color: #ffffff; - font-weight: 800; - text-decoration: none; -} - -.footer-brand-block p { - max-width: 360px; - margin: var(--space-4) 0 0; - color: rgba(239, 241, 240, 0.65); - font-size: 0.95rem; - line-height: 1.75; -} - -.footer-heading { - margin: 0 0 var(--space-4); - color: #ffffff; - font-size: 0.78rem; - font-weight: 700; - letter-spacing: 0.06em; - text-transform: uppercase; -} - -.footer-nav ul { - display: grid; - gap: var(--space-3); - margin: 0; - padding: 0; - list-style: none; -} - -.footer-nav a { - color: rgba(239, 241, 240, 0.78); - font-size: 0.95rem; - font-weight: 500; - text-decoration: none; - transition: color var(--duration-short) var(--ease-standard); -} - -.footer-nav a:hover { - color: #ffffff; -} - -.footer-meta { - display: flex; - justify-content: space-between; - gap: var(--space-3); - margin-top: var(--space-7); - padding-top: var(--space-5); - color: rgba(239, 241, 240, 0.55); - border-top: 1px solid rgba(255, 255, 255, 0.08); - font-size: 0.85rem; -} - -/* ----------- Alerts ----------- */ - -.message-container { - margin-top: var(--space-5); -} - -.alert { - border-radius: var(--radius-lg); - border: 1px solid var(--md-outline-variant); -} - -.alert-debug { - color: var(--md-on-surface); - background-color: var(--md-surface-container-low); - border-color: var(--md-outline-variant); -} - -.alert-error { - color: var(--md-on-error-container); - background-color: var(--md-error-container); - border-color: var(--md-error); -} - -/* ----------- Reveal animation ----------- */ - -[data-reveal] { - opacity: 0; - transform: translateY(16px); - transition: - opacity var(--duration-long) var(--ease-emphasized), - transform var(--duration-long) var(--ease-emphasized); -} - -[data-reveal].is-visible { - opacity: 1; - transform: translateY(0); -} - -@media (prefers-reduced-motion: reduce) { - *, - *::before, - *::after { - animation-duration: 0.01ms !important; - animation-iteration-count: 1 !important; - transition-duration: 0.01ms !important; - scroll-behavior: auto !important; - } - - [data-reveal] { - opacity: 1; - transform: none; - } -} - -/* ----------- Responsive breakpoints ----------- */ - -@media (max-width: 991.98px) { - .hero-grid { - grid-template-columns: 1fr; - gap: var(--space-7); + .navbar-nav { + align-items: stretch !important; } - .hero-visual { - grid-template-columns: repeat(2, minmax(0, 1fr)); + .nav-link, + .nav-cta { + width: 100%; + justify-content: flex-start; } + .simple-layout, .split-layout, - .callout-band, - .contact-panel { + .contact-panel, + .callout-band { grid-template-columns: 1fr; } - .service-grid { - grid-template-columns: repeat(2, minmax(0, 1fr)); + .service-grid, + .policy-grid, + .active-grid, + .approach-grid, + .contact-channels { + grid-template-columns: 1fr; } .footer-grid { grid-template-columns: 1fr 1fr; } - - .footer-brand-block { - grid-column: 1 / -1; - } } @media (max-width: 767.98px) { - .navbar { - min-height: 64px; - } - - .navbar-collapse { - margin-top: var(--space-3); - padding: var(--space-4); - background: var(--md-surface-container-low); - border-radius: var(--radius-xl); - box-shadow: var(--md-elevation-1); - } - - .navbar-nav { - gap: var(--space-2); - align-items: stretch !important; - } - - .nav-link { - width: 100%; - padding: 0.75rem 1rem !important; - } - - .nav-cta { - margin-left: 0; - margin-top: var(--space-2); - } - - .hero-content h1 { - font-size: clamp(2rem, 9vw, 2.8rem); - } - - .hero-meta { - gap: var(--space-4); - } - - .service-grid { - grid-template-columns: 1fr; + :root { + --space-section: 64px; } - .service-item { - min-height: auto; + .hero-section { + padding: 80px 0 72px; } - .service-detail { - grid-template-columns: 56px minmax(0, 1fr); - gap: var(--space-4); - padding: var(--space-5); + .compact-hero { + padding: 72px 0 56px; } - .detail-index { - width: 48px; - height: 48px; - font-size: 1rem; + .hero-content h1, + .page-hero h1 { + font-size: clamp(2.25rem, 13vw, 4.2rem); } - .company-list > div { - grid-template-columns: 1fr; - gap: var(--space-1); - padding: var(--space-4) var(--space-5); + .hero-lead, + .page-hero p, + .lead, + .body-lg { + font-size: 1.04rem; } - .contact-channels { + .fact-list > div, + .company-list > div, + .product-meta > div { grid-template-columns: 1fr; + gap: 6px; } - .footer-grid { - grid-template-columns: 1fr; + .company-panel, + .product-card, + .contact-panel, + .callout-band, + .service-item, + .policy-item, + .active-item, + .approach-item, + .contact-channel, + .charter-group { + padding: 22px; } + .footer-grid, .footer-meta { + grid-template-columns: 1fr; flex-direction: column; - align-items: flex-start; } } -/* ---------------------------------------------------------------- - Additions: language switcher, product card, approach, roadmap, - policy grid, active grid, charter list, narrow-prose, contact-note - ---------------------------------------------------------------- */ - -.nav-lang-link { - display: inline-flex; - align-items: center; - gap: 0.4rem; - font-size: 0.9rem; - letter-spacing: 0.01em; - opacity: 0.85; -} - -.nav-lang-link:hover, -.nav-lang-link:focus-visible { - opacity: 1; -} - -.nav-lang-link .material-symbols-rounded { - font-size: 1rem; -} - -.service-link { - display: inline-flex; - align-items: center; - gap: 0.4rem; - margin-top: var(--space-3); - color: var(--md-primary); - font-weight: 600; - text-decoration: none; - border-bottom: 1px solid transparent; - transition: border-color 180ms ease; -} - -.service-link:hover, -.service-link:focus-visible { - border-bottom-color: currentColor; -} - -.service-link .material-symbols-rounded { - font-size: 1.05rem; -} - -/* Narrow prose for vision/legal/holdings */ -.narrow-prose { - max-width: 760px; -} - -.prose + .prose { - margin-top: var(--space-7); -} - -.prose h2 { - font-family: var(--font-display); - font-size: clamp(1.4rem, 2.6vw, 1.85rem); - font-weight: 700; - margin-bottom: var(--space-4); - letter-spacing: -0.01em; -} - -.prose h3 { - font-family: var(--font-display); - font-size: 1.1rem; - font-weight: 700; - margin: var(--space-5) 0 var(--space-2); -} - -.prose p, -.prose li { - font-size: 1rem; - line-height: 1.85; - color: var(--md-on-surface-variant); -} - -.prose p + p { - margin-top: var(--space-3); -} - -.prose ul { - padding-left: 1.2rem; - margin: var(--space-2) 0; -} - -.prose a { - color: var(--md-primary); - text-decoration: underline; - text-decoration-thickness: 1px; - text-underline-offset: 3px; -} - -.prose a:hover, -.prose a:focus-visible { - text-decoration-thickness: 2px; -} - -/* Software product card */ -.product-card { - background: var(--md-surface-container-low); - border: 1px solid var(--md-outline-variant); - border-radius: var(--radius-xl); - overflow: hidden; - box-shadow: 0 12px 36px rgba(0, 60, 64, 0.08); -} - -.product-card-body { - padding: clamp(1.5rem, 4vw, 3rem); - display: grid; - gap: var(--space-4); -} - -.product-tagline { - display: inline-flex; - align-self: start; - align-items: center; - gap: 0.4rem; - font-size: 0.78rem; - font-weight: 600; - letter-spacing: 0.18em; - text-transform: uppercase; - color: var(--md-primary); - background: var(--md-primary-container); - padding: 0.45rem 0.8rem; - border-radius: 999px; -} - -.product-card-body h3 { - font-family: var(--font-display); - font-size: clamp(1.4rem, 3vw, 1.9rem); - font-weight: 700; - letter-spacing: -0.01em; - margin: 0; -} - -.product-feature-list { - display: grid; - gap: var(--space-2); - margin: var(--space-3) 0 0; - padding: 0; - list-style: none; -} - -.product-feature-list li { - display: grid; - grid-template-columns: 28px minmax(0, 1fr); - align-items: start; - gap: var(--space-2); - font-size: 0.97rem; - line-height: 1.6; - color: var(--md-on-surface-variant); -} - -.product-feature-list .material-symbols-rounded { - color: var(--md-primary); - font-size: 1.2rem; - margin-top: 2px; -} - -.product-meta { - display: grid; - grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); - gap: var(--space-3); - margin-top: var(--space-3); - padding-top: var(--space-4); - border-top: 1px solid var(--md-outline-variant); -} - -.product-meta dt { - font-size: 0.72rem; - font-weight: 700; - letter-spacing: 0.16em; - text-transform: uppercase; - color: var(--md-on-surface-variant); - margin-bottom: 0.3rem; -} - -.product-meta dd { - margin: 0; - font-size: 0.95rem; - font-weight: 600; - color: var(--md-on-surface); -} - -.product-actions { - display: flex; - flex-wrap: wrap; - gap: var(--space-3); - margin-top: var(--space-3); -} - -.btn.disabled { - opacity: 0.55; - pointer-events: none; -} - -/* Approach grid */ -.approach-grid { - display: grid; - grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); - gap: var(--space-4); -} - -.approach-item { - background: var(--md-surface-container-lowest); - border: 1px solid var(--md-outline-variant); - border-radius: var(--radius-lg); - padding: var(--space-5); - display: grid; - gap: var(--space-2); -} - -.approach-num { - font-family: var(--font-display); - font-size: 0.85rem; - font-weight: 700; - letter-spacing: 0.18em; - color: var(--md-primary); -} - -.approach-item h3 { - font-family: var(--font-display); - font-size: 1.1rem; - font-weight: 700; - margin: 0; -} - -.approach-item p { - font-size: 0.95rem; - line-height: 1.7; - color: var(--md-on-surface-variant); - margin: 0; -} - -/* Roadmap list */ -.roadmap-list { - list-style: none; - padding: 0; - margin: 0; - display: grid; - gap: var(--space-3); -} - -.roadmap-list li { - display: grid; - grid-template-columns: minmax(110px, max-content) minmax(0, 1fr); - align-items: start; - gap: var(--space-4); - padding: var(--space-4) var(--space-5); - background: var(--md-surface-container-lowest); - border: 1px solid var(--md-outline-variant); - border-radius: var(--radius-lg); -} - -.roadmap-list p { - margin: 0; - font-size: 0.97rem; - line-height: 1.65; - color: var(--md-on-surface); -} - -.roadmap-tag { - font-size: 0.72rem; - font-weight: 700; - letter-spacing: 0.18em; - text-transform: uppercase; - color: var(--md-primary); - background: var(--md-primary-container); - padding: 0.35rem 0.7rem; - border-radius: 999px; - text-align: center; - align-self: start; -} - -/* Holdings policy grid */ -.policy-grid { - display: grid; - grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); - gap: var(--space-4); -} - -.policy-item { - background: var(--md-surface-container-lowest); - border: 1px solid var(--md-outline-variant); - border-radius: var(--radius-lg); - padding: var(--space-5); - display: grid; - gap: var(--space-2); -} - -.policy-num { - font-family: var(--font-display); - font-size: 0.85rem; - font-weight: 700; - letter-spacing: 0.18em; - color: var(--md-primary); -} - -.policy-item h3 { - font-family: var(--font-display); - font-size: 1.1rem; - font-weight: 700; - margin: 0; -} - -.policy-item p { - font-size: 0.95rem; - line-height: 1.7; - color: var(--md-on-surface-variant); - margin: 0; -} - -/* Business page: active items and charter list */ -.active-grid { - display: grid; - grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); - gap: var(--space-4); -} - -.active-item { - background: var(--md-surface); - border: 1px solid var(--md-outline-variant); - border-radius: var(--radius-lg); - padding: var(--space-5); - display: grid; - gap: var(--space-2); - position: relative; -} - -.active-icon { - display: inline-grid; - place-items: center; - width: 48px; - height: 48px; - border-radius: var(--radius-md); - background: var(--md-primary-container); - color: var(--md-primary); -} - -.active-icon .material-symbols-rounded { - font-size: 1.6rem; -} - -.active-item h3 { - font-family: var(--font-display); - font-size: 1.15rem; - font-weight: 700; - margin: var(--space-1) 0 0; -} - -.active-item p { - font-size: 0.95rem; - line-height: 1.65; - color: var(--md-on-surface-variant); - margin: 0; -} - -.active-link { - display: inline-flex; - align-items: center; - gap: 0.4rem; - margin-top: var(--space-2); - color: var(--md-primary); - font-weight: 600; - text-decoration: none; -} - -.active-link:hover, -.active-link:focus-visible { - text-decoration: underline; - text-underline-offset: 3px; -} - -.charter-list { - display: grid; - gap: var(--space-4); -} - -.charter-group { - background: var(--md-surface-container-lowest); - border: 1px solid var(--md-outline-variant); - border-radius: var(--radius-lg); - padding: var(--space-5); -} - -.charter-group.is-active { - border-color: var(--md-primary); - box-shadow: 0 0 0 1px var(--md-primary) inset; - background: var(--md-surface-container-low); -} - -.charter-group header { - display: flex; - align-items: center; - gap: var(--space-3); - margin-bottom: var(--space-3); -} - -.charter-letter { - display: inline-grid; - place-items: center; - width: 36px; - height: 36px; - border-radius: 50%; - background: var(--md-primary-container); - color: var(--md-primary); - font-family: var(--font-display); - font-weight: 800; - font-size: 0.95rem; -} - -.charter-group header h3 { - font-family: var(--font-display); - font-size: 1.05rem; - font-weight: 700; - margin: 0; - flex: 1; -} - -.charter-badge { - font-size: 0.7rem; - font-weight: 700; - letter-spacing: 0.18em; - text-transform: uppercase; - color: #ffffff; - background: var(--md-primary); - padding: 0.3rem 0.65rem; - border-radius: 999px; -} - -.charter-group ul { - list-style: none; - padding: 0; - margin: 0; - display: grid; - gap: var(--space-2); -} - -.charter-group li { - font-size: 0.95rem; - line-height: 1.7; - color: var(--md-on-surface-variant); - padding-left: 1.1rem; - position: relative; -} - -.charter-group li::before { - content: "·"; - position: absolute; - left: 0; - top: 0; - color: var(--md-primary); - font-weight: 700; -} - -.contact-note { - margin-top: var(--space-5); - padding: var(--space-4) var(--space-5); - background: var(--md-surface-container-lowest); - border: 1px dashed var(--md-outline-variant); - border-radius: var(--radius-md); - font-size: 0.9rem; - color: var(--md-on-surface-variant); - line-height: 1.7; -} - -@media (max-width: 720px) { - .roadmap-list li { - grid-template-columns: 1fr; - gap: var(--space-2); - } - - .charter-group header { - flex-wrap: wrap; +@media (prefers-reduced-motion: reduce) { + *, + *::before, + *::after { + scroll-behavior: auto !important; + transition-duration: 1ms !important; + animation-duration: 1ms !important; } } diff --git a/ether/static/js/project.js b/ether/static/js/project.js index d0b29b9..eacdd6b 100644 --- a/ether/static/js/project.js +++ b/ether/static/js/project.js @@ -1,55 +1,23 @@ -/* Ether — small UX polish: scrolled header state + reveal-on-view. */ +/* Ether — minimal header state only. */ (function () { "use strict"; var doc = document.documentElement; var header = document.querySelector("[data-site-header]"); - var prefersReducedMotion = - window.matchMedia && - window.matchMedia("(prefers-reduced-motion: reduce)").matches; - - /* Toggle scrolled state on the sticky header. */ - if (header) { - var lastScrolled = null; - var updateHeader = function () { - var isScrolled = (window.scrollY || doc.scrollTop) > 4; - if (isScrolled !== lastScrolled) { - header.classList.toggle("is-scrolled", isScrolled); - lastScrolled = isScrolled; - } - }; - updateHeader(); - window.addEventListener("scroll", updateHeader, { passive: true }); - } - - /* Reveal elements on first intersection. */ - var revealTargets = document.querySelectorAll("[data-reveal]"); - if (!revealTargets.length) { - return; - } - - if (prefersReducedMotion || !("IntersectionObserver" in window)) { - revealTargets.forEach(function (element) { - element.classList.add("is-visible"); - }); + if (!header) { return; } - var observer = new IntersectionObserver( - function (entries) { - entries.forEach(function (entry) { - if (!entry.isIntersecting) { - return; - } - entry.target.classList.add("is-visible"); - observer.unobserve(entry.target); - }); - }, - { threshold: 0.12, rootMargin: "0px 0px -8% 0px" } - ); + var lastScrolled = null; + var updateHeader = function () { + var isScrolled = (window.scrollY || doc.scrollTop) > 4; + if (isScrolled !== lastScrolled) { + header.classList.toggle("is-scrolled", isScrolled); + lastScrolled = isScrolled; + } + }; - revealTargets.forEach(function (element) { - observer.observe(element); - }); + updateHeader(); + window.addEventListener("scroll", updateHeader, { passive: true }); })(); diff --git a/ether/templates/base.html b/ether/templates/base.html index 05d5fe1..46c8a09 100644 --- a/ether/templates/base.html +++ b/ether/templates/base.html @@ -16,10 +16,12 @@ + content="{% block meta_description %}{% if lang == 'en' %}Ether LLC is a Tokyo company focused on Ethereum holdings, software development, and related cultural projects.{% else %}Ether合同会社は、Ethereum保有、ソフトウェア開発、関連する文化事業を行う東京の会社です。{% endif %}{% endblock meta_description %}" /> + {% if alt_lang_url %} + content="{% block og_description %}{% if lang == 'en' %}Ethereum holdings, software development, and related cultural projects from Tokyo.{% else %}Ethereum保有、ソフトウェア開発、関連する文化事業を行う東京の会社です。{% endif %}{% endblock og_description %}" />
- 定款 第2条において、23項目の事業目的を定めています。 - 領域別に整理した一覧は事業内容のページをご覧ください。 + 定款上の事業目的は、領域別に事業内容のページで掲載しています。
- 協業、企画相談、取材、Ethereumエコシステムでの共同検討など。 - まずはメールにてご連絡ください。内容を確認のうえ、担当より折り返しご返信します。 -
+協業、ソフトウェア開発、取材などの連絡はメールで受け付けています。
- Ethereumエコシステム、ソフトウェアプロダクト、文化事業における - 共同企画・コラボレーションのご相談。 -
+Ethereum、ソフトウェア、文化事業に関する共同企画の相談。
- パートナーシップを相談する + メールで問い合わせる @@ -59,12 +59,9 @@- iOS/SwiftUIアプリ、Web3関連の技術検証、ライセンスや - 技術コンサルティングに関するお問い合わせ。 -
+iOS/SwiftUIアプリ、Web3関連の技術検証、ライセンスに関する相談。
- 開発について相談する + メールで問い合わせる @@ -73,12 +70,9 @@- メディア取材、インタビュー、登壇のご依頼。 - 内容と日程をできるだけ具体的にお知らせください。 -
+メディア取材、インタビュー、登壇の依頼。
- 取材を依頼する + メールで問い合わせる diff --git a/ether/templates/pages/en/company.html b/ether/templates/pages/en/company.html index 8d665d5..02eaf98 100644 --- a/ether/templates/pages/en/company.html +++ b/ether/templates/pages/en/company.html @@ -3,6 +3,12 @@ {% block title %} Company | Ether LLC {% endblock title %} +{% block meta_description %} + Public facts about Ether LLC, including legal name, representative, office, corporate number, fiscal year, and contact address. +{% endblock meta_description %} +{% block og_description %} + Public facts about Ether LLC, including legal name, representative, office, corporate number, fiscal year, and contact address. +{% endblock og_description %} {% block bodyclass %} page-company {% endblock bodyclass %} @@ -14,7 +20,7 @@ CompanyRegistered information and publicly disclosable facts about the company.
+Legal name, representative, office, corporate number, and contact information.
- Article 2 of our charter sets out 23 specific business purposes. - A grouped overview is available on the Business page. + A grouped overview of the purposes in our charter is available on the Business page.
- For partnerships, project briefs, press, or Ethereum ecosystem collaboration — - please email us. We read each message and reply within a few business days. -
+For partnerships, software development, and press inquiries, contact us by email.
- Collaboration on Ethereum ecosystem work, software products, - and cultural projects. -
+Partnerships across Ethereum, software, and related cultural projects.
- Discuss a partnership + Contact by email @@ -59,12 +59,9 @@- iOS / SwiftUI apps, Web3 technical research, licensing, - and technical consulting. -
+iOS / SwiftUI apps, Web3 technical research, and licensing inquiries.
- Discuss a project + Contact by email @@ -73,12 +70,9 @@- Media interviews, articles, and speaking engagements. - Please include a topic and a tentative date. -
+Media interviews, articles, and speaking engagements.
- Request press + Contact by email diff --git a/ether/templates/pages/en/holdings.html b/ether/templates/pages/en/holdings.html index 28d8fa7..df3763d 100644 --- a/ether/templates/pages/en/holdings.html +++ b/ether/templates/pages/en/holdings.html @@ -3,136 +3,53 @@ {% block title %} Holdings | Ether LLC {% endblock title %} +{% block meta_description %} + Ether LLC's Ethereum holding policy: long-term ETH holdings funded by the company, no third-party custody, and no investment solicitation. +{% endblock meta_description %} +{% block og_description %} + Ether LLC's Ethereum holding policy: long-term ETH holdings funded by the company, no third-party custody, and no investment solicitation. +{% endblock og_description %} {% block bodyclass %} page-holdings {% endblock bodyclass %} {% block content %}- - Holdings -
-- Ether LLC treats Ethereum (ETH) as the company's reserve asset. - We hold it as a long-term commitment to the protocol, not as a trading position. - This page documents the policy and the assumptions behind it. -
+Holdings
+Ether LLC holds Ethereum (ETH) as a long-term corporate reserve asset.
- - Policy -
-We don't trade. We hold — as a long-term commitment to the protocol.
+Policy
+- ETH is held as a reserve over multi-year (and ideally multi-decade) horizons. - We do not trade against daily or weekly price movements. -
-- Our ETH position is acquired and operated entirely with the company's own capital. - We do not custody third-party funds, run an investment vehicle, or operate - a crypto exchange business. -
-- Reserves are held in wallets the company controls. - Where operationally necessary, we may use trusted custodians on a limited basis. -
-- We evaluate Ethereum staking and participation in related protocols carefully — - judged on implementation and on decentralisation, - never as pure yield-chasing. -
-- Material changes to the holding policy will be published on this page. - We currently do not publish wallet addresses publicly. -
-- ETH is a corporate reserve that supports the long-term continuity - of the company's software and cultural work. -
-- Ethereum is a censorship-resistant computational platform that has built - credibility for neutrality and reliability over many years. - We see its value not as a single-purpose currency, - but as a global application substrate. -
-- Holding ETH is not a passive bet — it is the foundation we use - to build software products and cultural projects on top of. - That is why we call it a reserve. -
-- Our ETH holdings are corporate-treasury holdings funded by the company itself. - We do not operate a crypto-asset exchange business and do not custody third-party assets. - We comply with applicable Japanese law and tax obligations. -
+Note
+- Information on this page is provided for transparency and is not a solicitation - to buy, sell, or invest in any security, financial product, or crypto-asset. + This page explains the company's own ETH holding policy. + It is not a solicitation to buy or sell any crypto-asset, financial product, or investment product.
- -- - Inquiries -
-Open to collaborations, technical research, and consulting work in the Ethereum ecosystem.
-- - Tokyo · Ethereum · Software · Culture -
-- Ether LLC is a Tokyo-based company that holds Ethereum as its long-term reserve asset - and works at the intersection of software products and cultural projects. + Based in Tokyo, we hold Ethereum for the long term, build software, and operate related cultural projects.
- -
-
- Focus
+ Overview
+ Ether LLC holds Ethereum as a corporate reserve and develops software, primarily iOS apps.
+ This site lists the information we can publicly disclose.
- Hold Ethereum as a reserve. Build software as the tool. Make music, publish, and host
- as the expression. We don't treat these as separate departments — they share one
- company, one direction, one quiet pace.
-
-
- Three Pillars
- The shape of the company is three layers — holdings, software and culture. Business 01 — Holdings
- Self-funded ETH reserve. Held as a long-term commitment to the protocol,
- not as a trading position.
- 02 — Software
- Software for individuals and quiet daily moments. Our flagship is
- GratefulMoments, a SwiftUI gratitude journal for iOS.
- 03 — Culture
- Music, video, publishing, events and venues. The expressive side of a deliberately
- broad set of business purposes.
-
-
- Contact
-
- Reach out for collaboration in the Ethereum ecosystem, software development,
- or cultural projects. We read every message.
- Company Contact For partnerships, software work, and press inquiries, contact us by email.
-
- Software
-
- We treat software products as instruments for testing ideas.
- Each app is designed, written and operated in-house, and aims to sit gently
- inside one person's day.
-
-
- Flagship
- A SwiftUI gratitude journal for iOS — capture the small good moments of your day. SwiftUI · SwiftData · Apple Intelligence
- Save the moments you're grateful for with a title, a note, and a photo.
- Streak counts and badges make the habit easy to keep without pressure.
- On iOS 26 with Apple Intelligence enabled, you can also reflect on your past
- entries through a chat-based conversation.
- Software Ether LLC develops software, primarily iOS apps.
-
- Approach
-
- We don't build large-scale platforms. We build apps that try to live quietly
- inside one person's day.
-
- Once an app ships, we tend to it slowly over years.
- We aim for products that stay rather than products that trend.
-
- Where possible, we publish under permissive licenses (e.g. Apache 2.0)
- and try to give back to the technical community.
-
- We adopt new platform APIs (such as Apple Intelligence) early — but only
- for narrow, real use cases.
- Product
-
- Roadmap
+
+ GratefulMoments is an iOS app for recording gratitude.
+ It saves moments with a title, note, and photo, and supports habit building.
Short-term work in progress. Details land here as they're decided. Polishing GratefulMoments for App Store review Companion iOS widgets for the gratitude journal experience Optional Web3 hooks (on-chain anchoring, attestation-style NFTs)
-
- Collaborate
- For SwiftUI / Web3 collaborations, licensing, or technical inquiries — please get in touch. Contact For SwiftUI, iOS app, and Web3-related inquiries, contact us by email.
-
- Vision
- Why we started Ether, in the language of the company name and our charter.
- The name Ether carries two meanings at once.
- One is ETH, the native asset of the Ethereum protocol.
- The other is aether, the long-discarded medium that classical physics
- once imagined would carry light and information through space.
-
- The aether was eventually rejected as nonexistent.
- And yet, in our time, blockchains have quietly reintroduced
- a substrate that carries information across networks.
- The company name is a small bow toward that overlap.
-
- We hold Ethereum to keep it, not to trade it.
- Our position is not a bet on price — it is a multi-year commitment
- to the problems the protocol is trying to solve.
-
- Software products are how we test ideas.
- We design, write, and operate apps that try to sit quietly inside daily life,
- and we keep this work in-house rather than outsourcing it.
- Our first product is GratefulMoments,
- a SwiftUI gratitude journal for iOS.
-
- Music, publishing, events, and Web3 cultural work are the expressive layer
- on top of the asset and the tools.
- Our charter lists twenty-three business purposes,
- but we only foreground on this site the parts that are actually moving.
-
- Web3, software, and culture are all crowded fields.
- Plenty of larger, faster, louder players already exist in each.
- Our edge is not scale — it is breathing room.
-
- We don't rush, and we don't sprawl.
- We try to operate at a pace one person and one company can sustain
- for a long time, while building things on top of Ethereum
- that genuinely deserve to exist.
-
- Representative member: Soh Masuda (増田 創).
- A software engineer who has been writing code as an individual developer for years
- and incorporated Ether LLC in Tokyo in December 2025.
- See Company for legal facts,
- and Contact to reach us.
- Vision Ether LLC's operating policy, organized by business area.
-
- Next
- Each pillar — Holdings, Software, and Culture — has its own page with current details and policy. Policy
-
- Holdings
-
- Ether合同会社は、Ethereum (ETH) を会社の基軸資産として位置づけ、
- 投機ではなく長期コミットメントとして保有しています。
- 本ページでは、その方針と前提を公開しています。
- Holdings Ether合同会社は、Ethereum (ETH) を会社の基軸資産として長期保有します。
-
- Policy
- 短期売買を目的とせず、プロトコルへの長期コミットメントとして保有します。 Policy
- ETHは複数年〜数十年の単位で保有することを前提とした基軸資産です。
- 日次・週次の価格変動を目的とした売買は行いません。
-
- Ether合同会社のETH保有は、自己資金により取得・運用しています。
- 第三者からの預託、投資信託の組成、暗号資産交換業の提供は行いません。
-
- 原則として保有資産は自社管理のウォレットで保管します。
- 運用上の必要に応じて、信頼できるカストディを限定的に併用する場合があります。
-
- Ethereumのステーキングや関連プロトコルへの参加は、
- 実装内容と分散性を確認したうえで段階的に検討します。
- 投機的な利回りそのものを目的とはしません。
-
- 必要に応じて保有方針・運用上の重要な変更を本ページで公開します。
- 個別ウォレットアドレスの公表は、現時点では行っていません。
-
- ETHは事業基盤を支える会社資産であり、
- ソフトウェア開発・文化事業の継続性を確保するためのバッファとして機能します。
-
- Ethereumは、検閲耐性のある計算プラットフォームとして、
- 長期にわたり中立性と信頼性を高めてきました。
- 単一の通貨としてではなく、グローバルなアプリケーション基盤として、
- 私たちは価値を見出しています。
-
- ETHを単に投資対象として持つのではなく、
- 自社の事業(ソフトウェア・文化)を、
- このオープンな基盤の上に静かに積み上げていく。
- そのための「基軸資産」としてETHを保有しています。
-
- 当社のETH保有は、自己資金による会社資産の保有であり、
- 顧客資産の預託・運用を伴う暗号資産交換業ではありません。
- 国内法令に従って必要な届出・税務処理を行います。
- Note
- 本ページの内容は情報提供を目的としたものであり、
- 特定の投資勧誘や金融商品の販売・募集を行うものではありません。
+ このページは、会社資産としてのETH保有方針を説明するものです。
+ 特定の暗号資産、金融商品、投資商品の購入や売却を勧誘するものではありません。
-
- Inquiries
- Ethereumエコシステムでの共同企画、技術検証、コンサルティングのご相談はお気軽にどうぞ。
-
- Tokyo · Ethereum · Software · Culture
-
- Ether合同会社は、Ethereumを長期保有資産とし、ソフトウェアプロダクトの開発と
- 文化事業を通じて、技術と表現の交点を静かに形にしていく東京の会社です。
- 東京を拠点に、Ethereumの長期保有、ソフトウェア開発、関連する文化事業を行っています。
-
- Focus
+ 概要
+ Ether合同会社は、Ethereumを会社の基軸資産として保有し、iOSアプリを中心とした
+ ソフトウェアを開発しています。活動内容は、このサイトで公開できる範囲に絞って掲載します。
- Ethereumを基軸資産として持ち、ソフトウェアプロダクトを道具として作り、
- 音楽や出版や場づくりとして表現する。三つを別ものとして扱わず、
- ひとつの会社の中で接続することが、Ether合同会社のやり方です。
-
-
- Three Pillars
- 事業の輪郭は、保有・開発・文化の三層で構成されています。 事業 01 — Holdings
- ETHを基軸とした自己資金運用。短期売買ではなく、
- プロトコルそのものへの長期コミットメントとして保有しています。
- 02 — Software
- 日々の小さな前向きさを支えるiOSアプリ
- GratefulMoments を中心に、
- 個と日常のためのソフトウェアを開発しています。
- 03 — Culture
- 音楽・映像・出版・イベント・場づくり。
- 定款で広く定めた事業領域のうち、表現と人が集まる軸の活動です。
-
-
- Contact
-
- Ethereumエコシステムでの協業、ソフトウェアの開発、文化事業の企画など。
- お気軽にご連絡ください。
- 会社情報 問い合わせ 協業、ソフトウェア開発、取材などの連絡はメールで受け付けています。
-
- Software
-
- Ether合同会社は、ソフトウェアプロダクトを思想を試す道具と捉えています。
- 個と日常に寄り添うアプリを、自分たちの手で設計し、書き、運用しています。
-
-
- Flagship
- 日々の「ありがとう」を残すiOS用の感謝日記アプリ。 SwiftUI · SwiftData · Apple Intelligence
- タイトル、メモ、写真でうれしかったできごとを書き留め、
- 連続記録日数とバッジで習慣化をやさしく支援します。
- iOS 26以降のApple Intelligence対応端末では、
- 書いた内容をもとにふりかえりチャットも利用できます。
- Software Ether合同会社は、iOSアプリを中心にソフトウェアを開発しています。
-
- Approach
-
- 大規模プラットフォームではなく、
- 一人の人間の日常に静かに寄り添うアプリを作ります。
-
- 一度公開したアプリは、流行ではなく定着を目指して、
- 少しずつ手を入れ続けます。
-
- 可能なものはApache License 2.0などで公開し、
- 技術コミュニティへ還元することを基本姿勢としています。
-
- Apple Intelligenceなど新しいプラットフォームAPIは、
- 現実的な用途に絞って早期に組み込んで検証します。
- Product
-
- Roadmap
+
+ GratefulMomentsは、日々の感謝を記録するiOSアプリです。
+ タイトル、メモ、写真でできごとを保存し、習慣化を支援します。
短期で予定している取り組み。詳細は確定次第、本ページでお知らせします。 GratefulMomentsのApp Store審査向け仕上げ 感謝日記体験を補完する小さなiOSウィジェットの追加 Web3要素(オンチェーン保存・属性付きNFTなど)との接続検証
-
- Collaborate
- SwiftUI/Web3領域での共同企画、ライセンス、技術相談などお気軽にどうぞ。 Contact SwiftUI、iOSアプリ、Web3関連の相談はメールで受け付けています。
-
- Vision
- 会社名と定款の言葉を起点に、なぜEtherを始めたのかをまとめています。
- Etherという名前は、二つの意味を重ねています。
- ひとつはイーサリアム(Ethereum)の基盤資産であるETH。
- もうひとつは、近代物理学が一度想定していた「光や情報を運ぶ媒質」としてのEther(エーテル)です。
-
- 実体としては存在しないと否定されたエーテルが、
- いまブロックチェーンという形で再び情報を運ぶ媒体として戻ってきている。
- 会社の名前は、その重なりに対する敬意です。
-
- Ethereumを売買するためではなく、
- 長く持つために保有しています。
- 価格の上下ではなく、プロトコルが解決しようとしている問題に対して
- 時間をかけて関与する立場をとります。
-
- ソフトウェアプロダクトは、思想を試すための道具です。
- 人の暮らしに静かに寄り添うアプリを、
- 外注ではなく自分の手で設計し、書き、運用します。
- 最初のプロダクトはiOS向けの感謝日記
- GratefulMomentsです。
-
- 音楽、出版、イベント、Web3の文化活動は、
- 資産と道具によって支えられた表現です。
- 定款には23項目の事業目的を広く定めていますが、
- 公開サイトでは、いま動いている軸だけを丁寧に紹介していきます。
-
- Web3、ソフトウェア、文化。それぞれの領域には、
- すでに勢いのあるプレイヤーが多数います。
- 私たちは、規模ではなく、余白で勝負します。
-
- 急がない。広げすぎない。
- 一人の人間と一つの会社が、長く健やかに続けられる速度を保ちながら、
- Ethereumという基盤の上で、
- 作るに値するものを作り続けていきます。
-
- 代表社員: 増田 創(Soh Masuda)。
- ソフトウェアエンジニアとして個人開発を続ける傍ら、
- 2025年12月にEther合同会社を東京で設立しました。
- 会社情報は会社概要を、
- 連絡はお問い合わせからお願いします。
- Vision Ether合同会社の活動方針を、事業の軸ごとに整理しています。
-
- Next
- Holdings・Software・Cultureの各ページで、より具体的な現状と方針を公開しています。 PolicyCore business
+ Asset, tool, expression — kept on the same line.
+ Ethereum holding policy
Three pillars
- Current work
Long-term Ethereum holding
- Building products
- Cultural projects
-
+
+ See software
Partnerships, projects and press.
- Public facts
+
+
+ See company facts
+ Contact us
+ 2. Third-party cookies
diff --git a/ether/templates/pages/en/software.html b/ether/templates/pages/en/software.html
index 51503e1..d58d2b4 100644
--- a/ether/templates/pages/en/software.html
+++ b/ether/templates/pages/en/software.html
@@ -3,208 +3,77 @@
{% block title %}
Software | Ether LLC
{% endblock title %}
+{% block meta_description %}
+ Software development by Ether LLC, including GratefulMoments, an iOS gratitude journal built with Swift, SwiftUI, SwiftData, and PhotosUI.
+{% endblock meta_description %}
+{% block og_description %}
+ Software development by Ether LLC, including GratefulMoments, an iOS gratitude journal built with Swift, SwiftUI, SwiftData, and PhotosUI.
+{% endblock og_description %}
{% block bodyclass %}
page-software
{% endblock bodyclass %}
{% block content %}
Quiet apps for everyday life.
- GratefulMoments
- A quiet way to keep small good moments
-
-
-
-
- Software development
+ How we build
- Personal, not platform
- Long-term care
- Open source by default
- Try new APIs early
- GratefulMoments
What's next
-
+
+ View on GitHub
-
Software collaborations
- Software inquiries
+ Ether — Infrastructure with breathing room
- About the name
- Three stances
- 1. Hold the asset for the long term
- 2. Build the tools by hand
- 3. Express only as much as needed
- Infrastructure with breathing room
- About the operator
- Basic policy
+ Three pillars, one at a time.
- Three areas
+
+
+ See company facts
Ethereumを基軸に、長く持つ。
- Ethereum保有方針
+ 保有方針
- 基本方針
長期保有が前提
- 自己資金のみ
- セルフカストディ
- ステーキング・参加
- 透明性
- 会社事業との関係
-
+
なぜEthereumなのか
- 規制とコンプライアンス
- 注意事項
+ エコシステム協業のご相談
-
- Ethereumを基軸に、
-
-
- ソフトウェアと文化を編む。
- Ether合同会社は、Ethereumとソフトウェアの会社です。
+ 事業の中心
+ 資産・道具・表現、を地続きに。
+ Ethereum保有方針
三つの柱
- 現在の活動
Ethereumの長期保有
- プロダクトの開発
- 文化事業の運営
-
+
+ ソフトウェアを見る
協業・企画・取材のご相談
- 公開情報
+
+
+ 会社情報を見る
+ 連絡先
+ 2. 第三者によるCookie
diff --git a/ether/templates/pages/software.html b/ether/templates/pages/software.html
index c7181b0..c6b066c 100644
--- a/ether/templates/pages/software.html
+++ b/ether/templates/pages/software.html
@@ -3,207 +3,77 @@
{% block title %}
Software | Ether合同会社
{% endblock title %}
+{% block meta_description %}
+ Ether合同会社のソフトウェア開発。iOSアプリ GratefulMoments の概要、技術スタック、ライセンス、公開状況を掲載しています。
+{% endblock meta_description %}
+{% block og_description %}
+ Ether合同会社のソフトウェア開発。iOSアプリ GratefulMoments の概要、技術スタック、ライセンス、公開状況を掲載しています。
+{% endblock og_description %}
{% block bodyclass %}
page-software
{% endblock bodyclass %}
{% block content %}
日々を支える、静かなアプリ。
- GratefulMoments
- 毎日の小さな前向きさを、静かに積み上げる
-
-
-
-
- ソフトウェア開発
+ プロダクトに対する態度
- 個に寄り添う
- 長く続ける
- オープンソースを基本に
- 新しいAPIを早めに試す
- GratefulMoments
これから
-
+
+ GitHubで見る
-
ソフトウェア開発の協業
- 開発の相談
+ Ether — 余白のあるインフラ
- 会社名について
- 三つの態度
- 1. 資産は、長く持つ
- 2. 道具は、自分の手で作る
- 3. 表現は、必要なだけ
- 余白のあるインフラ
- 運営者について
- 基本方針
+ 三つの柱を、ひとつずつ。
- 三つの軸
+
+
+ 会社情報を見る