This commit is contained in:
2026-08-09 04:16:11 +09:00
parent ef7a961af3
commit fe35ec6088
4 changed files with 466 additions and 87 deletions

View File

@@ -1,12 +1,12 @@
import { Routes, Route } from 'react-router-dom' import { Routes, Route } from "react-router-dom";
import Header from './components/Header' import Header from "./components/Header";
import Footer from './components/Footer' import Footer from "./components/Footer";
import Home from './pages/Home' import Home from "./pages/Home";
import About from './pages/About' import About from "./pages/About";
import NotFound from './pages/NotFound' import NotFound from "./pages/NotFound";
import Project01 from './pages/projects/Project01' import Project01 from "./pages/projects/Project01";
import Project02 from './pages/projects/Project02' import Project02 from "./pages/projects/Project02";
import Project03 from './pages/projects/Project03' import Project03 from "./pages/projects/Project03";
export default function App() { export default function App() {
return ( return (
@@ -24,5 +24,5 @@ export default function App() {
</main> </main>
<Footer /> <Footer />
</div> </div>
) );
} }

View File

@@ -1,14 +1,68 @@
body { background: var(--color-background); color: var(--color-text); font-family: var(--font-sans); font-size: 16px; line-height: 1.5; } body {
::selection { background: var(--color-text); color: var(--color-background); } background: var(--color-background);
:focus-visible { outline: 2px solid var(--color-text); outline-offset: 5px; } color: var(--color-text);
.eyebrow { color: var(--color-muted); font-size: .75rem; letter-spacing: .08em; text-transform: uppercase; } font-family: var(--font-sans);
h1, h2, h3 { font-weight: 400; letter-spacing: -.05em; line-height: .95; } font-size: 16px;
h1 { font-size: clamp(3.5rem, 9vw, 9rem); } line-height: 1.5;
h2 { font-size: clamp(2rem, 4vw, 4.5rem); } }
h3 { font-size: 1.35rem; } ::selection {
em { font-family: Georgia, serif; font-weight: 400; } background: var(--color-text);
.lede { color: var(--color-muted); font-size: clamp(1.1rem, 1.7vw, 1.5rem); max-width: 32rem; } color: var(--color-background);
.muted { color: var(--color-muted); } }
.text-link { border-bottom: 1px solid var(--color-text); display: inline-flex; gap: .75rem; padding-bottom: .25rem; transition: opacity .2s ease; } :focus-visible {
.text-link:hover { opacity: .55; } outline: 2px solid var(--color-text);
@media (prefers-reduced-motion: reduce) { *, *::before, *::after { scroll-behavior: auto !important; transition-duration: .01ms !important; animation-duration: .01ms !important; } } outline-offset: 5px;
}
.eyebrow {
color: var(--color-muted);
font-size: 0.75rem;
letter-spacing: 0.08em;
text-transform: uppercase;
}
h1,
h2,
h3 {
font-weight: 400;
letter-spacing: -0.05em;
line-height: 0.95;
}
h1 {
font-size: clamp(3.5rem, 9vw, 9rem);
}
h2 {
font-size: clamp(2rem, 4vw, 4.5rem);
}
h3 {
font-size: 1.35rem;
}
em {
font-family: Georgia, serif;
font-weight: 400;
}
.lede {
color: var(--color-muted);
font-size: clamp(1.1rem, 1.7vw, 1.5rem);
max-width: 32rem;
}
.muted {
color: var(--color-muted);
}
.text-link {
border-bottom: 1px solid var(--color-text);
display: inline-flex;
gap: 0.75rem;
padding-bottom: 0.25rem;
transition: opacity 0.2s ease;
}
.text-link:hover {
opacity: 0.55;
}
@media (prefers-reduced-motion: reduce) {
*,
*::before,
*::after {
scroll-behavior: auto !important;
transition-duration: 0.01ms !important;
animation-duration: 0.01ms !important;
}
}

View File

@@ -1,57 +1,358 @@
.container { margin-inline: auto; max-width: var(--container-width); padding-inline: clamp(1.25rem, 5vw, 5rem); width: 100%; } .container {
.site-shell { min-height: 100vh; } margin-inline: auto;
.site-header { align-items: center; display: flex; justify-content: space-between; padding-block: 1.5rem; } max-width: var(--container-width);
.brand { font-size: .9rem; font-weight: 700; letter-spacing: .08em; } padding-inline: clamp(1.25rem, 5vw, 5rem);
.brand span { color: var(--color-muted); } width: 100%;
.site-header nav { align-items: center; display: flex; gap: 1.5rem; } }
.site-header nav a { color: var(--color-muted); font-size: .9rem; } .site-shell {
.site-header nav a:hover, .site-header nav a.active { color: var(--color-text); } min-height: 100vh;
.site-footer { border-top: 1px solid var(--color-line); color: var(--color-muted); display: flex; font-size: .8rem; justify-content: space-between; margin-top: var(--space-xl); padding-block: 1.5rem; } }
.home-hero { min-height: 75vh; padding-bottom: var(--space-xl); padding-top: 16vh; } .site-header {
.home-hero h1 { margin-block: 1.5rem 2rem; } align-items: center;
.home-hero .text-link { margin-top: 3rem; } display: flex;
.section { padding-block: var(--space-xl); } justify-content: space-between;
.section-heading { display: grid; gap: var(--space-md); grid-template-columns: 1fr 2fr; margin-bottom: 4rem; } padding-block: 1.5rem;
.intro-copy { display: grid; gap: var(--space-lg); grid-template-columns: 1fr 1fr; margin-left: 33.33%; max-width: 45rem; } }
.project-grid { display: grid; gap: var(--space-lg) var(--space-md); grid-template-columns: repeat(2, 1fr); } .brand {
.project-card:first-child { grid-column: span 2; } font-size: 0.9rem;
.project-image { aspect-ratio: 4 / 3; background-position: center; background-size: cover; overflow: hidden; padding: 1rem; transition: transform .5s ease; } font-weight: 700;
.project-card:hover .project-image { transform: scale(.98); } letter-spacing: 0.08em;
.project-image span { background: var(--color-background); border-radius: 50%; display: grid; font-size: .75rem; height: 2.5rem; place-items: center; width: 2.5rem; } }
.project-meta { display: flex; justify-content: space-between; padding-top: 1rem; } .brand span {
.project-meta p, .project-meta > span { color: var(--color-muted); font-size: .85rem; margin-top: .25rem; } color: var(--color-muted);
.page-intro { padding-block: 12vh var(--space-xl); } }
.page-intro h1 { margin-top: 2rem; } .site-header nav {
.about-grid, .detail-grid { display: grid; gap: var(--space-lg); grid-template-columns: 1fr 1fr; margin-left: 33.33%; max-width: 50rem; } align-items: center;
.about-lede { font-size: 1.5rem; line-height: 1.2; } display: flex;
.profile-list { display: grid; gap: var(--space-lg); grid-template-columns: repeat(3, 1fr); margin-left: 33.33%; } gap: 1.5rem;
.profile-list h3 { font-size: 1rem; letter-spacing: 0; margin-bottom: 1rem; } }
.profile-list p { color: var(--color-muted); font-size: .9rem; margin-bottom: .35rem; } .site-header nav a {
.not-found { padding-block: 18vh; } color: var(--color-muted);
.not-found h1 { margin-block: 2rem 3rem; } font-size: 0.9rem;
.project-hero { padding-block: 10vh var(--space-xl); } }
.project-hero-copy { display: grid; gap: 2rem; grid-template-columns: 1fr 2fr; } .site-header nav a:hover,
.project-hero-copy h1 { grid-column: 2; } .site-header nav a.active {
.project-hero-copy .lede { grid-column: 2; } color: var(--color-text);
.hero-image { background-position: center; background-size: cover; height: min(55vw, 42rem); margin-top: 5rem; } }
.detail-grid dl { display: grid; font-size: .9rem; grid-template-columns: 1fr 2fr; row-gap: .5rem; } .site-footer {
.detail-grid dt { color: var(--color-muted); } border-top: 1px solid var(--color-line);
.prose { margin-left: 33.33%; max-width: 50rem; } color: var(--color-muted);
.prose > p { max-width: 30rem; } display: flex;
.image-grid { display: grid; gap: 1rem; grid-template-columns: repeat(2, 1fr); margin-top: 4rem; } font-size: 0.8rem;
.grid-image { aspect-ratio: 1; background-position: center; background-size: cover; } justify-content: space-between;
.highlight-box { background: var(--color-text); color: var(--color-background); margin-left: 33.33%; padding: 5rem; } margin-top: var(--space-xl);
.highlight-box p { font-family: Georgia, serif; font-size: clamp(2rem, 4vw, 4rem); line-height: 1; } padding-block: 1.5rem;
.project-navigation { border-top: 1px solid var(--color-line); margin-top: var(--space-xl); padding-block: 2rem 5rem; } }
.project-navigation > a { align-items: center; display: flex; gap: 1rem; justify-content: space-between; padding-top: 1.5rem; } .home-hero {
.project-navigation strong { font-size: clamp(2rem, 5vw, 5rem); font-weight: 400; letter-spacing: -.05em; } min-height: 75vh;
.editorial-feature { background-position: center; background-size: cover; height: 70vh; margin-inline: 5vw; } padding-bottom: var(--space-xl);
.editorial-intro { font-size: clamp(1.5rem, 3vw, 3rem); line-height: 1.1; margin-left: 33.33%; max-width: 40rem; } padding-top: 16vh;
.editorial blockquote { font-family: Georgia, serif; font-size: clamp(3rem, 8vw, 8rem); line-height: .9; margin: var(--space-xl) auto; max-width: 1200px; padding-inline: clamp(1.25rem, 5vw, 5rem); } }
.visual-project .project-hero { padding-bottom: 4rem; } .home-hero h1 {
.visual-stack { display: grid; gap: 4rem; grid-template-columns: 1fr 1fr; } margin-block: 1.5rem 2rem;
.visual-image { background-position: center; background-size: cover; grid-column: span 2; min-height: 70vh; } }
.visual-image.tall { min-height: 100vh; } .home-hero .text-link {
.visual-caption { align-self: center; max-width: 20rem; } margin-top: 3rem;
.narrow-copy { font-size: 1.5rem; margin-left: 33.33%; max-width: 30rem; } }
@media (max-width: 720px) { .site-header nav { gap: .8rem; } .site-header nav a { font-size: .8rem; } .home-hero { min-height: 70vh; padding-top: 12vh; } .section-heading, .intro-copy, .about-grid, .detail-grid, .profile-list, .project-hero-copy { display: block; margin-left: 0; } .section-heading > h2 { margin-top: 1.5rem; } .intro-copy > p + p { margin-top: 2rem; } .project-grid { display: block; } .project-card { display: block; margin-bottom: 3rem; } .project-card:first-child { grid-column: auto; } .project-hero-copy h1, .project-hero-copy .lede { margin-top: 1.5rem; } .hero-image { height: 65vw; margin-top: 3rem; } .profile-list > div + div { margin-top: 2.5rem; } .prose, .highlight-box, .editorial-intro, .narrow-copy { margin-left: 0; } .highlight-box { padding: 2rem; } .image-grid { grid-template-columns: 1fr; } .editorial-feature { height: 55vh; margin-inline: 1.25rem; } .visual-stack { display: block; } .visual-image { margin-bottom: 3rem; min-height: 60vh; } .visual-image.tall { min-height: 80vh; } .visual-caption { margin-bottom: 3rem; } .site-footer { display: block; } .site-footer span { display: block; } .site-footer span + span { margin-top: .5rem; } } .section {
padding-block: var(--space-xl);
}
.section-heading {
display: grid;
gap: var(--space-md);
grid-template-columns: 1fr 2fr;
margin-bottom: 4rem;
}
.intro-copy {
display: grid;
gap: var(--space-lg);
grid-template-columns: 1fr 1fr;
margin-left: 33.33%;
max-width: 45rem;
}
.project-grid {
display: grid;
gap: var(--space-lg) var(--space-md);
grid-template-columns: repeat(2, 1fr);
}
.project-card:first-child {
grid-column: span 2;
}
.project-image {
aspect-ratio: 4 / 3;
background-position: center;
background-size: cover;
overflow: hidden;
padding: 1rem;
transition: transform 0.5s ease;
}
.project-card:hover .project-image {
transform: scale(0.98);
}
.project-image span {
background: var(--color-background);
border-radius: 50%;
display: grid;
font-size: 0.75rem;
height: 2.5rem;
place-items: center;
width: 2.5rem;
}
.project-meta {
display: flex;
justify-content: space-between;
padding-top: 1rem;
}
.project-meta p,
.project-meta > span {
color: var(--color-muted);
font-size: 0.85rem;
margin-top: 0.25rem;
}
.page-intro {
padding-block: 12vh var(--space-xl);
}
.page-intro h1 {
margin-top: 2rem;
}
.about-grid,
.detail-grid {
display: grid;
gap: var(--space-lg);
grid-template-columns: 1fr 1fr;
margin-left: 33.33%;
max-width: 50rem;
}
.about-lede {
font-size: 1.5rem;
line-height: 1.2;
}
.profile-list {
display: grid;
gap: var(--space-lg);
grid-template-columns: repeat(3, 1fr);
margin-left: 33.33%;
}
.profile-list h3 {
font-size: 1rem;
letter-spacing: 0;
margin-bottom: 1rem;
}
.profile-list p {
color: var(--color-muted);
font-size: 0.9rem;
margin-bottom: 0.35rem;
}
.not-found {
padding-block: 18vh;
}
.not-found h1 {
margin-block: 2rem 3rem;
}
.project-hero {
padding-block: 10vh var(--space-xl);
}
.project-hero-copy {
display: grid;
gap: 2rem;
grid-template-columns: 1fr 2fr;
}
.project-hero-copy h1 {
grid-column: 2;
}
.project-hero-copy .lede {
grid-column: 2;
}
.hero-image {
background-position: center;
background-size: cover;
height: min(55vw, 42rem);
margin-top: 5rem;
}
.detail-grid dl {
display: grid;
font-size: 0.9rem;
grid-template-columns: 1fr 2fr;
row-gap: 0.5rem;
}
.detail-grid dt {
color: var(--color-muted);
}
.prose {
margin-left: 33.33%;
max-width: 50rem;
}
.prose > p {
max-width: 30rem;
}
.image-grid {
display: grid;
gap: 1rem;
grid-template-columns: repeat(2, 1fr);
margin-top: 4rem;
}
.grid-image {
aspect-ratio: 1;
background-position: center;
background-size: cover;
}
.highlight-box {
background: var(--color-text);
color: var(--color-background);
margin-left: 33.33%;
padding: 5rem;
}
.highlight-box p {
font-family: Georgia, serif;
font-size: clamp(2rem, 4vw, 4rem);
line-height: 1;
}
.project-navigation {
border-top: 1px solid var(--color-line);
margin-top: var(--space-xl);
padding-block: 2rem 5rem;
}
.project-navigation > a {
align-items: center;
display: flex;
gap: 1rem;
justify-content: space-between;
padding-top: 1.5rem;
}
.project-navigation strong {
font-size: clamp(2rem, 5vw, 5rem);
font-weight: 400;
letter-spacing: -0.05em;
}
.editorial-feature {
background-position: center;
background-size: cover;
height: 70vh;
margin-inline: 5vw;
}
.editorial-intro {
font-size: clamp(1.5rem, 3vw, 3rem);
line-height: 1.1;
margin-left: 33.33%;
max-width: 40rem;
}
.editorial blockquote {
font-family: Georgia, serif;
font-size: clamp(3rem, 8vw, 8rem);
line-height: 0.9;
margin: var(--space-xl) auto;
max-width: 1200px;
padding-inline: clamp(1.25rem, 5vw, 5rem);
}
.visual-project .project-hero {
padding-bottom: 4rem;
}
.visual-stack {
display: grid;
gap: 4rem;
grid-template-columns: 1fr 1fr;
}
.visual-image {
background-position: center;
background-size: cover;
grid-column: span 2;
min-height: 70vh;
}
.visual-image.tall {
min-height: 100vh;
}
.visual-caption {
align-self: center;
max-width: 20rem;
}
.narrow-copy {
font-size: 1.5rem;
margin-left: 33.33%;
max-width: 30rem;
}
@media (max-width: 720px) {
.site-header nav {
gap: 0.8rem;
}
.site-header nav a {
font-size: 0.8rem;
}
.home-hero {
min-height: 70vh;
padding-top: 12vh;
}
.section-heading,
.intro-copy,
.about-grid,
.detail-grid,
.profile-list,
.project-hero-copy {
display: block;
margin-left: 0;
}
.section-heading > h2 {
margin-top: 1.5rem;
}
.intro-copy > p + p {
margin-top: 2rem;
}
.project-grid {
display: block;
}
.project-card {
display: block;
margin-bottom: 3rem;
}
.project-card:first-child {
grid-column: auto;
}
.project-hero-copy h1,
.project-hero-copy .lede {
margin-top: 1.5rem;
}
.hero-image {
height: 65vw;
margin-top: 3rem;
}
.profile-list > div + div {
margin-top: 2.5rem;
}
.prose,
.highlight-box,
.editorial-intro,
.narrow-copy {
margin-left: 0;
}
.highlight-box {
padding: 2rem;
}
.image-grid {
grid-template-columns: 1fr;
}
.editorial-feature {
height: 55vh;
margin-inline: 1.25rem;
}
.visual-stack {
display: block;
}
.visual-image {
margin-bottom: 3rem;
min-height: 60vh;
}
.visual-image.tall {
min-height: 80vh;
}
.visual-caption {
margin-bottom: 3rem;
}
.site-footer {
display: block;
}
.site-footer span {
display: block;
}
.site-footer span + span {
margin-top: 0.5rem;
}
}

View File

@@ -1,6 +1,30 @@
*, *::before, *::after { box-sizing: border-box; } *,
html { scroll-behavior: smooth; } *::before,
body, h1, h2, h3, p, dl, dd, blockquote { margin: 0; } *::after {
img { display: block; max-width: 100%; } box-sizing: border-box;
a { color: inherit; text-decoration: none; } }
button, input { font: inherit; } html {
scroll-behavior: smooth;
}
body,
h1,
h2,
h3,
p,
dl,
dd,
blockquote {
margin: 0;
}
img {
display: block;
max-width: 100%;
}
a {
color: inherit;
text-decoration: none;
}
button,
input {
font: inherit;
}