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 %}" />
@@ -72,7 +78,7 @@

会社概要

4011103016903
@@ -118,7 +124,9 @@

会社概要

関連リンク
- GitHub: masuda-so + GitHub: masuda-so
@@ -129,8 +137,7 @@

会社概要

事業目的

- 定款 第2条において、23項目の事業目的を定めています。 - 領域別に整理した一覧は事業内容のページをご覧ください。 + 定款上の事業目的は、領域別に事業内容のページで掲載しています。

diff --git a/ether/templates/pages/contact.html b/ether/templates/pages/contact.html index 406ee23..79af1a9 100644 --- a/ether/templates/pages/contact.html +++ b/ether/templates/pages/contact.html @@ -3,6 +3,12 @@ {% block title %} お問い合わせ | Ether合同会社 {% endblock title %} +{% block meta_description %} + Ether合同会社へのお問い合わせ先。協業、ソフトウェア開発、取材などの連絡先メールを掲載しています。 +{% endblock meta_description %} +{% block og_description %} + Ether合同会社へのお問い合わせ先。協業、ソフトウェア開発、取材などの連絡先メールを掲載しています。 +{% endblock og_description %} {% block bodyclass %} page-contact {% endblock bodyclass %} @@ -14,10 +20,7 @@ Contact

お問い合わせ

-

- 協業、企画相談、取材、Ethereumエコシステムでの共同検討など。 - まずはメールにてご連絡ください。内容を確認のうえ、担当より折り返しご返信します。 -

+

協業、ソフトウェア開発、取材などの連絡はメールで受け付けています。

@@ -35,7 +38,7 @@

so.masuda.2003@ether-llc.com

- メールを作成する + メールで問い合わせる @@ -45,12 +48,9 @@

so.masuda.2003@ether-llc.com

handshake

協業・パートナーシップ

-

- Ethereumエコシステム、ソフトウェアプロダクト、文化事業における - 共同企画・コラボレーションのご相談。 -

+

Ethereum、ソフトウェア、文化事業に関する共同企画の相談。

- パートナーシップを相談する + メールで問い合わせる @@ -59,12 +59,9 @@

協業・パートナーシップ

code

ソフトウェア開発のご相談

-

- iOS/SwiftUIアプリ、Web3関連の技術検証、ライセンスや - 技術コンサルティングに関するお問い合わせ。 -

+

iOS/SwiftUIアプリ、Web3関連の技術検証、ライセンスに関する相談。

- 開発について相談する + メールで問い合わせる @@ -73,12 +70,9 @@

ソフトウェア開発のご相談

campaign

取材・登壇

-

- メディア取材、インタビュー、登壇のご依頼。 - 内容と日程をできるだけ具体的にお知らせください。 -

+

メディア取材、インタビュー、登壇の依頼。

- 取材を依頼する + メールで問い合わせる 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 @@ Company

Company facts

-

Registered information and publicly disclosable facts about the company.

+

Legal name, representative, office, corporate number, and contact information.

@@ -72,7 +78,7 @@

Company facts

4011103016903
@@ -118,7 +124,9 @@

Company facts

Related links
- GitHub: masuda-so + GitHub: masuda-so
@@ -129,8 +137,7 @@

Company facts

Business purposes

- 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.

diff --git a/ether/templates/pages/en/contact.html b/ether/templates/pages/en/contact.html index dc62ef5..d1fcf73 100644 --- a/ether/templates/pages/en/contact.html +++ b/ether/templates/pages/en/contact.html @@ -3,6 +3,12 @@ {% block title %} Contact | Ether LLC {% endblock title %} +{% block meta_description %} + Contact Ether LLC for partnerships, software development, press inquiries, and Ethereum-related work. +{% endblock meta_description %} +{% block og_description %} + Contact Ether LLC for partnerships, software development, press inquiries, and Ethereum-related work. +{% endblock og_description %} {% block bodyclass %} page-contact {% endblock bodyclass %} @@ -13,11 +19,8 @@ Contact

-

Get in touch

-

- For partnerships, project briefs, press, or Ethereum ecosystem collaboration — - please email us. We read each message and reply within a few business days. -

+

Contact

+

For partnerships, software development, and press inquiries, contact us by email.

@@ -35,7 +38,7 @@

so.masuda.2003@ether-llc.com

- Compose email + Contact by email @@ -45,12 +48,9 @@

so.masuda.2003@ether-llc.com

handshake

Partnerships

-

- 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 @@

Partnerships

code

Software inquiries

-

- 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 @@

Software inquiries

campaign

Press & speaking

-

- 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 -

-

Anchored in Ethereum, held for the long term.

-

- 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. -

+
+ +

Ethereum holding policy

+

Ether LLC holds Ethereum (ETH) as a long-term corporate reserve asset.

-
-
-
-

- - Policy -

-

Holding policy

-

We don't trade. We hold — as a long-term commitment to the protocol.

+
+
+
+ +

Basic policy

-
-
- 01 -

Long-term horizon

-

- ETH is held as a reserve over multi-year (and ideally multi-decade) horizons. - We do not trade against daily or weekly price movements. -

-
-
- 02 -

Self-funded only

-

- 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. -

-
-
- 03 -

Self-custody first

-

- Reserves are held in wallets the company controls. - Where operationally necessary, we may use trusted custodians on a limited basis. -

-
-
- 04 -

Staking and participation

-

- We evaluate Ethereum staking and participation in related protocols carefully — - judged on implementation and on decentralisation, - never as pure yield-chasing. -

-
-
- 05 -

Transparency

-

- Material changes to the holding policy will be published on this page. - We currently do not publish wallet addresses publicly. -

-
-
- 06 -

Relationship to operating business

-

- ETH is a corporate reserve that supports the long-term continuity - of the company's software and cultural work. -

-
+
+
    +
  • ETH is acquired and held with the company's own capital.
  • +
  • The position is held for the long term, not for short-term trading.
  • +
  • We do not custody customer assets, run an investment fund, or operate a crypto exchange business.
  • +
  • Assets are generally managed in wallets controlled by the company.
  • +
  • Wallet addresses and holding amounts are not public at this time.
  • +
-
-
-
-

Why Ethereum

-

- 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. -

-
-
-

Regulation and compliance

-

- 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. -

+
+
+
+ +

Important 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 -

-

Ecosystem collaborations

-

Open to collaborations, technical research, and consulting work in the Ethereum ecosystem.

-
- + Contact
diff --git a/ether/templates/pages/en/home.html b/ether/templates/pages/en/home.html index a6f89e1..b41d22a 100644 --- a/ether/templates/pages/en/home.html +++ b/ether/templates/pages/en/home.html @@ -1,191 +1,106 @@ {% extends "base.html" %} -{% load static %} - {% block title %} - Ether LLC | Ethereum, Software, Culture + Ether LLC | Ethereum and software company {% endblock title %} +{% block meta_description %} + Ether LLC is a Tokyo company focused on Ethereum holdings, software development, and related cultural projects. +{% endblock meta_description %} +{% block og_title %} + Ether LLC +{% endblock og_title %} +{% block og_description %} + Ethereum holdings, software development, and related cultural projects from Tokyo. +{% endblock og_description %} {% block bodyclass %} page-home {% endblock bodyclass %} {% block content %}
-
-
-

- - Tokyo · Ethereum · Software · Culture -

-

- Anchored in Ethereum. -
- Building software, weaving culture. -

+
+
+

Ether LLC is an Ethereum and software company.

- 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.

-
-
-
Founded
-
- 2025-12-22 -
-
-
-
Reserve Asset
-
- Ethereum (ETH) -
-
-
-
Domains
-
- Software · Web3 · Culture -
-
-
-
-
-
-
-
-

- - Focus +

+
+
+ +

Core business

+
+
+

+ Ether LLC holds Ethereum as a corporate reserve and develops software, primarily iOS apps. + This site lists the information we can publicly disclose.

-

Asset, tool, expression — kept on the same line.

+ Ethereum holding policy
-

- 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 -

-

Three pillars

-

The shape of the company is three layers — holdings, software and culture.

+
+
+
+ +

Current work

-
-
- - - -

01 — Holdings

-

Long-term Ethereum holding

-

- Self-funded ETH reserve. Held as a long-term commitment to the protocol, - not as a trading position. -

- - Read the policy - - -
-
- - - -

02 — Software

-

Building products

-

- Software for individuals and quiet daily moments. Our flagship is - GratefulMoments, a SwiftUI gratitude journal for iOS. -

- - See products - - -
-
- - - -

03 — Culture

-

Cultural projects

-

- Music, video, publishing, events and venues. The expressive side of a deliberately - broad set of business purposes. -

- - See business areas - - -
+
+
    +
  • Ethereum holdings
  • +
  • Software development
  • +
  • Related cultural projects
  • +
+ See software
-
-
-
-
-

- - Contact -

-

Partnerships, projects and press.

-

- Reach out for collaboration in the Ethereum ecosystem, software development, - or cultural projects. We read every message. -

-
- +
+
+
+ +

Public facts

+
+
+
+
+
Legal name
+
+ Ether合同会社 (Ether LLC) +
+
+
+
Office
+
+ Shinjuku-ku, Tokyo +
+
+
+
Corporate number
+
+ 4011103016903 +
+
+
+ See company facts +
+
+
+
+
+
+ +

Contact us

+
+
+

For partnerships, software work, and press inquiries, contact us by email.

+ Contact
diff --git a/ether/templates/pages/en/legal/cookies.html b/ether/templates/pages/en/legal/cookies.html index 63be0a5..99cf85c 100644 --- a/ether/templates/pages/en/legal/cookies.html +++ b/ether/templates/pages/en/legal/cookies.html @@ -41,12 +41,12 @@

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 %}
-
-

- - Software -

-

Quiet apps for everyday life.

-

- 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 -

-

GratefulMoments

-

A SwiftUI gratitude journal for iOS — capture the small good moments of your day.

-
-
-
-

SwiftUI · SwiftData · Apple Intelligence

-

A quiet way to keep small good moments

-

- 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. -

-
    -
  • - - Gratitude journal: capture moments with a title, note, and photo -
  • -
  • - - Photo support: attach images via PhotosPicker -
  • -
  • - - Hexagon UI: a custom HexagonLayout to visualise entries -
  • -
  • - - Streaks: track consecutive days of journaling -
  • -
  • - - Badge system: unlock badges as you reach milestones -
  • -
  • - - Reflection: chat with your past entries via Apple Intelligence -
  • -
  • - - SwiftData persistence: stored locally on device -
  • -
-
-
-
Platform
-
- iOS 18.6+ (Reflection requires iOS 26+) -
-
-
-
Stack
-
- Swift / SwiftUI / SwiftData / PhotosUI -
-
-
-
License
-
- Apache License 2.0 (open source) -
-
-
-
Status
-
- Active development / preparing for App Store release -
-
-
- -
-
+ +

Software development

+

Ether LLC develops software, primarily iOS apps.

-
-
-
-

- - Approach -

-

How we build

-
-
-
- 01 -

Personal, not platform

-

- We don't build large-scale platforms. We build apps that try to live quietly - inside one person's day. -

-
-
- 02 -

Long-term care

-

- Once an app ships, we tend to it slowly over years. - We aim for products that stay rather than products that trend. -

-
-
- 03 -

Open source by default

-

- Where possible, we publish under permissive licenses (e.g. Apache 2.0) - and try to give back to the technical community. -

-
-
- 04 -

Try new APIs early

-

- We adopt new platform APIs (such as Apple Intelligence) early — but only - for narrow, real use cases. -

-
+
+
+
+ +

GratefulMoments

-
-
-
-
-
-

- - Roadmap +

+

+ GratefulMoments is an iOS app for recording gratitude. + It saves moments with a title, note, and photo, and supports habit building.

-

What's next

-

Short-term work in progress. Details land here as they're decided.

+
+
+
Platform
+
+ iOS +
+
+
+
Technology
+
+ Swift / SwiftUI / SwiftData / PhotosUI +
+
+
+
License
+
+ Apache License 2.0 +
+
+
+
Status
+
+ In development / preparing for App Store release +
+
+
+ View on GitHub
-
    -
  • - In progress -

    Polishing GratefulMoments for App Store review

    -
  • -
  • - Planned -

    Companion iOS widgets for the gratitude journal experience

    -
  • -
  • - Exploring -

    Optional Web3 hooks (on-chain anchoring, attestation-style NFTs)

    -
  • -
-
-
-
-
-

- - Collaborate -

-

Software collaborations

-

For SwiftUI / Web3 collaborations, licensing, or technical inquiries — please get in touch.

-
- +
+
+
+ +

Software inquiries

+
+
+

For SwiftUI, iOS app, and Web3-related inquiries, contact us by email.

+ Contact
diff --git a/ether/templates/pages/en/vision.html b/ether/templates/pages/en/vision.html index 821661b..08d7d3c 100644 --- a/ether/templates/pages/en/vision.html +++ b/ether/templates/pages/en/vision.html @@ -3,108 +3,36 @@ {% block title %} Vision | Ether LLC {% endblock title %} +{% block meta_description %} + Ether LLC's basic policy for Ethereum holdings, software development, and related cultural projects. +{% endblock meta_description %} +{% block og_description %} + Ether LLC's basic policy for Ethereum holdings, software development, and related cultural projects. +{% endblock og_description %} {% block bodyclass %} page-vision {% endblock bodyclass %} {% block content %}
-
-

- - Vision -

-

Ether — Infrastructure with breathing room

-

Why we started Ether, in the language of the company name and our charter.

-
-
-
-
-
-

About the name

-

- 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. -

-
-
-

Three stances

-

1. Hold the asset for the long term

-

- 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. -

-

2. Build the tools by hand

-

- 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. -

-

3. Express only as much as needed

-

- 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. -

-
-
-

Infrastructure with breathing room

-

- 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. -

-
-
-

About the operator

-

- 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. -

-
+
+ +

Basic policy

+

Ether LLC's operating policy, organized by business area.

-
-
-
-
-

- - Next -

-

Three pillars, one at a time.

-

Each pillar — Holdings, Software, and Culture — has its own page with current details and policy.

-
- +
+
+
+ +

Three areas

+
+
+
    +
  • Hold Ethereum as a long-term corporate reserve asset.
  • +
  • Design, develop, and operate software in-house.
  • +
  • Publish cultural projects as they become active and publicly shareable.
  • +
+ See company facts
diff --git a/ether/templates/pages/holdings.html b/ether/templates/pages/holdings.html index 93b0f12..2ead3ff 100644 --- a/ether/templates/pages/holdings.html +++ b/ether/templates/pages/holdings.html @@ -3,136 +3,53 @@ {% block title %} Holdings | Ether合同会社 {% endblock title %} +{% block meta_description %} + Ether合同会社のEthereum保有方針。自己資金による長期保有、顧客資産非預託、投資勧誘ではない旨を掲載しています。 +{% endblock meta_description %} +{% block og_description %} + Ether合同会社のEthereum保有方針。自己資金による長期保有、顧客資産非預託、投資勧誘ではない旨を掲載しています。 +{% endblock og_description %} {% block bodyclass %} page-holdings {% endblock bodyclass %} {% block content %}
-
-

- - Holdings -

-

Ethereumを基軸に、長く持つ。

-

- Ether合同会社は、Ethereum (ETH) を会社の基軸資産として位置づけ、 - 投機ではなく長期コミットメントとして保有しています。 - 本ページでは、その方針と前提を公開しています。 -

+
+ +

Ethereum保有方針

+

Ether合同会社は、Ethereum (ETH) を会社の基軸資産として長期保有します。

-
-
-
-

- - Policy -

-

保有方針

-

短期売買を目的とせず、プロトコルへの長期コミットメントとして保有します。

+
+
+
+ +

基本方針

-
-
- 01 -

長期保有が前提

-

- ETHは複数年〜数十年の単位で保有することを前提とした基軸資産です。 - 日次・週次の価格変動を目的とした売買は行いません。 -

-
-
- 02 -

自己資金のみ

-

- Ether合同会社のETH保有は、自己資金により取得・運用しています。 - 第三者からの預託、投資信託の組成、暗号資産交換業の提供は行いません。 -

-
-
- 03 -

セルフカストディ

-

- 原則として保有資産は自社管理のウォレットで保管します。 - 運用上の必要に応じて、信頼できるカストディを限定的に併用する場合があります。 -

-
-
- 04 -

ステーキング・参加

-

- Ethereumのステーキングや関連プロトコルへの参加は、 - 実装内容と分散性を確認したうえで段階的に検討します。 - 投機的な利回りそのものを目的とはしません。 -

-
-
- 05 -

透明性

-

- 必要に応じて保有方針・運用上の重要な変更を本ページで公開します。 - 個別ウォレットアドレスの公表は、現時点では行っていません。 -

-
-
- 06 -

会社事業との関係

-

- ETHは事業基盤を支える会社資産であり、 - ソフトウェア開発・文化事業の継続性を確保するためのバッファとして機能します。 -

-
+
+
    +
  • ETHは自己資金で取得・保有します。
  • +
  • 短期売買ではなく、長期保有を前提とします。
  • +
  • 顧客資産の預託、投資信託、暗号資産交換業は行いません。
  • +
  • 保有資産は原則として自社管理のウォレットで管理します。
  • +
  • ウォレットアドレスと保有量は、現時点では公開しません。
  • +
-
-
-
-

なぜEthereumなのか

-

- Ethereumは、検閲耐性のある計算プラットフォームとして、 - 長期にわたり中立性と信頼性を高めてきました。 - 単一の通貨としてではなく、グローバルなアプリケーション基盤として、 - 私たちは価値を見出しています。 -

-

- ETHを単に投資対象として持つのではなく、 - 自社の事業(ソフトウェア・文化)を、 - このオープンな基盤の上に静かに積み上げていく。 - そのための「基軸資産」としてETHを保有しています。 -

-
-
-

規制とコンプライアンス

-

- 当社のETH保有は、自己資金による会社資産の保有であり、 - 顧客資産の預託・運用を伴う暗号資産交換業ではありません。 - 国内法令に従って必要な届出・税務処理を行います。 -

+
+
+
+ +

注意事項

+
+

- 本ページの内容は情報提供を目的としたものであり、 - 特定の投資勧誘や金融商品の販売・募集を行うものではありません。 + このページは、会社資産としてのETH保有方針を説明するものです。 + 特定の暗号資産、金融商品、投資商品の購入や売却を勧誘するものではありません。

-
-
-
-
-
-
-
-

- - Inquiries -

-

エコシステム協業のご相談

-

Ethereumエコシステムでの共同企画、技術検証、コンサルティングのご相談はお気軽にどうぞ。

-
- + お問い合わせ
diff --git a/ether/templates/pages/home.html b/ether/templates/pages/home.html index 171a010..a5f1ade 100644 --- a/ether/templates/pages/home.html +++ b/ether/templates/pages/home.html @@ -1,192 +1,104 @@ {% extends "base.html" %} -{% load static %} - {% block title %} - Ether合同会社 | Ethereum, Software, Culture + Ether合同会社 | Ethereumとソフトウェアの会社 {% endblock title %} +{% block meta_description %} + Ether合同会社は、Ethereum保有、ソフトウェア開発、関連する文化事業を行う東京の会社です。 +{% endblock meta_description %} +{% block og_title %} + Ether合同会社 +{% endblock og_title %} +{% block og_description %} + Ethereum保有、ソフトウェア開発、関連する文化事業を行う東京の会社です。 +{% endblock og_description %} {% block bodyclass %} page-home {% endblock bodyclass %} {% block content %}
-
-
-

- - Tokyo · Ethereum · Software · Culture -

-

- Ethereumを基軸に、 -
- ソフトウェアと文化を編む。 -

-

- Ether合同会社は、Ethereumを長期保有資産とし、ソフトウェアプロダクトの開発と - 文化事業を通じて、技術と表現の交点を静かに形にしていく東京の会社です。 -

+
+
+

Ether合同会社は、Ethereumとソフトウェアの会社です。

+

東京を拠点に、Ethereumの長期保有、ソフトウェア開発、関連する文化事業を行っています。

-
-
-
Founded
-
- 2025-12-22 -
-
-
-
Reserve Asset
-
- Ethereum (ETH) -
-
-
-
Domains
-
- Software · Web3 · Culture -
-
-
-
-
-
-
-
-

- - Focus +

+
+
+ +

事業の中心

+
+
+

+ Ether合同会社は、Ethereumを会社の基軸資産として保有し、iOSアプリを中心とした + ソフトウェアを開発しています。活動内容は、このサイトで公開できる範囲に絞って掲載します。

-

資産・道具・表現、を地続きに。

+ Ethereum保有方針
-

- Ethereumを基軸資産として持ち、ソフトウェアプロダクトを道具として作り、 - 音楽や出版や場づくりとして表現する。三つを別ものとして扱わず、 - ひとつの会社の中で接続することが、Ether合同会社のやり方です。 -

-
-
-
-

- - Three Pillars -

-

三つの柱

-

事業の輪郭は、保有・開発・文化の三層で構成されています。

+
+
+
+ +

現在の活動

-
-
- - - -

01 — Holdings

-

Ethereumの長期保有

-

- ETHを基軸とした自己資金運用。短期売買ではなく、 - プロトコルそのものへの長期コミットメントとして保有しています。 -

- - 方針を見る - - -
-
- - - -

02 — Software

-

プロダクトの開発

-

- 日々の小さな前向きさを支えるiOSアプリ - GratefulMoments を中心に、 - 個と日常のためのソフトウェアを開発しています。 -

- - プロダクトを見る - - -
-
- - - -

03 — Culture

-

文化事業の運営

-

- 音楽・映像・出版・イベント・場づくり。 - 定款で広く定めた事業領域のうち、表現と人が集まる軸の活動です。 -

- - 事業内容を見る - - -
+
+
    +
  • Ethereum保有
  • +
  • ソフトウェア開発
  • +
  • 関連する文化事業
  • +
+ ソフトウェアを見る
-
-
-
-
-

- - Contact -

-

協業・企画・取材のご相談

-

- Ethereumエコシステムでの協業、ソフトウェアの開発、文化事業の企画など。 - お気軽にご連絡ください。 -

-
- +
+
+
+ +

公開情報

+
+
+
+
+
商号
+
+ Ether合同会社 +
+
+
+
所在地
+
+ 東京都新宿区 +
+
+
+
法人番号
+
+ 4011103016903 +
+
+
+ 会社情報を見る +
+
+
+
+
+
+ +

連絡先

+
+
+

協業、ソフトウェア開発、取材などの連絡はメールで受け付けています。

+ お問い合わせ
diff --git a/ether/templates/pages/legal/cookies.html b/ether/templates/pages/legal/cookies.html index 72bf0a4..b176f01 100644 --- a/ether/templates/pages/legal/cookies.html +++ b/ether/templates/pages/legal/cookies.html @@ -42,12 +42,12 @@

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 %}
-
-

- - Software -

-

日々を支える、静かなアプリ。

-

- Ether合同会社は、ソフトウェアプロダクトを思想を試す道具と捉えています。 - 個と日常に寄り添うアプリを、自分たちの手で設計し、書き、運用しています。 -

-
-
-
-
-

- - Flagship -

-

GratefulMoments

-

日々の「ありがとう」を残すiOS用の感謝日記アプリ。

-
-
-
-

SwiftUI · SwiftData · Apple Intelligence

-

毎日の小さな前向きさを、静かに積み上げる

-

- タイトル、メモ、写真でうれしかったできごとを書き留め、 - 連続記録日数とバッジで習慣化をやさしく支援します。 - iOS 26以降のApple Intelligence対応端末では、 - 書いた内容をもとにふりかえりチャットも利用できます。 -

-
    -
  • - - ありがとう日記: タイトル・メモ・写真でできごとを残す -
  • -
  • - - 写真サポート: PhotosPickerで画像を添付 -
  • -
  • - - 六角形UI: HexagonLayoutでできごとを視覚化 -
  • -
  • - - 連続記録日数: 毎日の習慣をストリークで可視化 -
  • -
  • - - バッジシステム: 達成条件に応じてアンロック -
  • -
  • - - ふりかえり: Apple Intelligenceで過去の記録を対話的に振り返る -
  • -
  • - - SwiftData永続化: できごととバッジをローカル保存 -
  • -
-
-
-
プラットフォーム
-
- iOS 18.6以上 (ふりかえり機能はiOS 26以降) -
-
-
-
技術スタック
-
- Swift / SwiftUI / SwiftData / PhotosUI -
-
-
-
ライセンス
-
- Apache License 2.0 (オープンソース) -
-
-
-
ステータス
-
- 開発継続中 / App Store公開準備中 -
-
-
- -
-
+ +

ソフトウェア開発

+

Ether合同会社は、iOSアプリを中心にソフトウェアを開発しています。

-
-
-
-

- - Approach -

-

プロダクトに対する態度

-
-
-
- 01 -

個に寄り添う

-

- 大規模プラットフォームではなく、 - 一人の人間の日常に静かに寄り添うアプリを作ります。 -

-
-
- 02 -

長く続ける

-

- 一度公開したアプリは、流行ではなく定着を目指して、 - 少しずつ手を入れ続けます。 -

-
-
- 03 -

オープンソースを基本に

-

- 可能なものはApache License 2.0などで公開し、 - 技術コミュニティへ還元することを基本姿勢としています。 -

-
-
- 04 -

新しいAPIを早めに試す

-

- Apple Intelligenceなど新しいプラットフォームAPIは、 - 現実的な用途に絞って早期に組み込んで検証します。 -

-
+
+
+
+ +

GratefulMoments

-
-
-
-
-
-

- - Roadmap +

+

+ GratefulMomentsは、日々の感謝を記録するiOSアプリです。 + タイトル、メモ、写真でできごとを保存し、習慣化を支援します。

-

これから

-

短期で予定している取り組み。詳細は確定次第、本ページでお知らせします。

+
+
+
プラットフォーム
+
+ iOS +
+
+
+
技術
+
+ Swift / SwiftUI / SwiftData / PhotosUI +
+
+
+
ライセンス
+
+ Apache License 2.0 +
+
+
+
状態
+
+ 開発中 / App Store公開準備中 +
+
+
+ GitHubで見る
-
    -
  • - In progress -

    GratefulMomentsのApp Store審査向け仕上げ

    -
  • -
  • - Planned -

    感謝日記体験を補完する小さなiOSウィジェットの追加

    -
  • -
  • - Exploring -

    Web3要素(オンチェーン保存・属性付きNFTなど)との接続検証

    -
  • -
-
-
-
-
-

- - Collaborate -

-

ソフトウェア開発の協業

-

SwiftUI/Web3領域での共同企画、ライセンス、技術相談などお気軽にどうぞ。

-
- +
+
+
+ +

開発の相談

+
+
+

SwiftUI、iOSアプリ、Web3関連の相談はメールで受け付けています。

+ お問い合わせ
diff --git a/ether/templates/pages/vision.html b/ether/templates/pages/vision.html index e80d506..47187eb 100644 --- a/ether/templates/pages/vision.html +++ b/ether/templates/pages/vision.html @@ -1,109 +1,38 @@ {% extends "base.html" %} {% block title %} - Vision | Ether合同会社 + 方針 | Ether合同会社 {% endblock title %} +{% block meta_description %} + Ether合同会社の基本方針。Ethereum保有、ソフトウェア開発、関連する文化事業の考え方を掲載しています。 +{% endblock meta_description %} +{% block og_description %} + Ether合同会社の基本方針。Ethereum保有、ソフトウェア開発、関連する文化事業の考え方を掲載しています。 +{% endblock og_description %} {% block bodyclass %} page-vision {% endblock bodyclass %} {% block content %}
-
-

- - Vision -

-

Ether — 余白のあるインフラ

-

会社名と定款の言葉を起点に、なぜEtherを始めたのかをまとめています。

-
-
-
-
-
-

会社名について

-

- Etherという名前は、二つの意味を重ねています。 - ひとつはイーサリアム(Ethereum)の基盤資産であるETH。 - もうひとつは、近代物理学が一度想定していた「光や情報を運ぶ媒質」としてのEther(エーテル)です。 -

-

- 実体としては存在しないと否定されたエーテルが、 - いまブロックチェーンという形で再び情報を運ぶ媒体として戻ってきている。 - 会社の名前は、その重なりに対する敬意です。 -

-
-
-

三つの態度

-

1. 資産は、長く持つ

-

- Ethereumを売買するためではなく、 - 長く持つために保有しています。 - 価格の上下ではなく、プロトコルが解決しようとしている問題に対して - 時間をかけて関与する立場をとります。 -

-

2. 道具は、自分の手で作る

-

- ソフトウェアプロダクトは、思想を試すための道具です。 - 人の暮らしに静かに寄り添うアプリを、 - 外注ではなく自分の手で設計し、書き、運用します。 - 最初のプロダクトはiOS向けの感謝日記 - GratefulMomentsです。 -

-

3. 表現は、必要なだけ

-

- 音楽、出版、イベント、Web3の文化活動は、 - 資産と道具によって支えられた表現です。 - 定款には23項目の事業目的を広く定めていますが、 - 公開サイトでは、いま動いている軸だけを丁寧に紹介していきます。 -

-
-
-

余白のあるインフラ

-

- Web3、ソフトウェア、文化。それぞれの領域には、 - すでに勢いのあるプレイヤーが多数います。 - 私たちは、規模ではなく、余白で勝負します。 -

-

- 急がない。広げすぎない。 - 一人の人間と一つの会社が、長く健やかに続けられる速度を保ちながら、 - Ethereumという基盤の上で、 - 作るに値するものを作り続けていきます。 -

-
-
-

運営者について

-

- 代表社員: 増田 創(Soh Masuda)。 - ソフトウェアエンジニアとして個人開発を続ける傍ら、 - 2025年12月にEther合同会社を東京で設立しました。 - 会社情報は会社概要を、 - 連絡はお問い合わせからお願いします。 -

-
+
+ +

基本方針

+

Ether合同会社の活動方針を、事業の軸ごとに整理しています。

-
-
-
-
-

- - Next -

-

三つの柱を、ひとつずつ。

-

Holdings・Software・Cultureの各ページで、より具体的な現状と方針を公開しています。

-
- +
+
+
+ +

三つの軸

+
+
+
    +
  • Ethereumを会社の基軸資産として長期保有します。
  • +
  • ソフトウェアは自社で設計、開発、運用します。
  • +
  • 文化事業は、公開できる活動から順に掲載します。
  • +
+ 会社情報を見る