CODE · 15.5 KB
refs/pengin/wireframe-base.css
Workspace snapshot · 08/31 23:51
/*
ワイヤーフレーム HTML 共通スタイル(PC基準・装飾なし・モノクロベース)
デフォルト: PC 1366px幅
.wf-frame.sp-375 で SP 375px幅に切替可
EC・特殊機能(カート/お気に入り/FAB/スライダー)は _ec.css 側に分離。
*/
* { margin: 0; padding: 0; box-sizing: border-box; }
:root {
/* WF 表示用カラー */
--wf-bg-stage: #E8E8E8; /* 背景ステージ */
--wf-bg: #FFFFFF; /* WFフレーム背景 */
--wf-bg-soft: #F5F5F5; /* セクション ソフト背景 */
--wf-bg-mute: #EEEEEE; /* 区切り背景 */
--wf-img: #D9D9D9; /* 画像プレースホルダ */
--wf-img-dark: #999999;
--wf-img-deep: #595959; /* footer背景 */
--wf-line: #D9D9D9;
--wf-text: #000000;
--wf-text-mute: #5E5E5E;
--wf-text-light: #A0A0A0;
--wf-text-faint: #B1B1B1;
--wf-btn-dark: #373737;
--wf-tag: #555555;
/* フレーム幅切替 */
--wf-frame-pc: 1366px;
--wf-frame-sp: 375px;
--wf-frame-w: var(--wf-frame-pc);
/* セクション余白 */
--wf-section-py: 80px;
--wf-section-px: 80px;
/* 横配置のコンテナ最大幅 */
--wf-container-max: 1206px;
}
html, body {
font-family: 'Noto Sans JP', -apple-system, 'Hiragino Kaku Gothic ProN', sans-serif;
color: var(--wf-text);
background: var(--wf-bg-stage);
-webkit-font-smoothing: antialiased;
letter-spacing: 0.02em;
font-size: 16px;
line-height: 1.7;
}
img { max-width: 100%; display: block; }
a { color: inherit; text-decoration: none; }
ul, ol { list-style: none; }
button { font: inherit; cursor: pointer; border: none; background: none; color: inherit; }
/* ==========================================================================
ステージ&ページラベル(WF確認用UI、本実装には引き継がない)
========================================================================== */
.wf-stage {
min-height: 100vh;
padding: 24px 16px 80px;
display: flex;
flex-direction: column;
align-items: center;
gap: 16px;
}
.wf-pagebar {
width: 100%;
max-width: var(--wf-frame-pc);
display: flex;
justify-content: space-between;
align-items: center;
font-size: 12px;
color: #666;
letter-spacing: 0.08em;
}
.wf-pagebar .label {
text-transform: uppercase;
font-weight: 600;
}
.wf-pagebar .nav a {
margin-left: 12px;
color: #444;
text-decoration: underline;
}
.wf-pagebar .nav a:hover { color: #000; }
/* ==========================================================================
フレーム(PC既定 / SP切替)
========================================================================== */
.wf-frame {
width: var(--wf-frame-w);
background: var(--wf-bg);
position: relative;
box-shadow: 0 4px 24px rgba(0,0,0,0.08);
overflow: hidden;
}
.wf-frame.sp-375 { --wf-frame-w: var(--wf-frame-sp); }
/* ==========================================================================
Header(PC基準・グローバルナビ横一列)
========================================================================== */
.wf-header {
background: var(--wf-bg);
border-bottom: 1px solid var(--wf-line);
}
.wf-header-bar {
height: 32px;
background: var(--wf-bg-soft);
display: flex;
align-items: center;
justify-content: center;
font-size: 12px;
color: var(--wf-text-mute);
}
.wf-header-main {
height: 80px;
display: flex;
align-items: center;
justify-content: space-between;
padding: 0 40px;
background: var(--wf-bg);
}
.wf-header-logo {
font-size: 22px;
font-weight: 600;
letter-spacing: 0.04em;
}
.wf-header-nav {
display: flex;
align-items: center;
gap: 28px;
font-size: 14px;
}
.wf-header-nav a { padding: 6px 0; }
.wf-header-cta {
display: flex;
align-items: center;
gap: 8px;
}
/* SP用ヘッダー(.wf-frame.sp-375 内で適用) */
.wf-frame.sp-375 .wf-header-main {
height: 56px;
padding: 0 16px;
}
.wf-frame.sp-375 .wf-header-nav { display: none; }
.wf-frame.sp-375 .wf-header-logo { font-size: 18px; }
/* ハンバーガー */
.wf-hamburger {
display: none;
flex-direction: column;
align-items: center;
gap: 1px;
font-size: 9px;
}
.wf-frame.sp-375 .wf-hamburger { display: flex; }
.wf-hamburger i { display: block; width: 24px; height: 1px; background: #000; }
.wf-hamburger i + i { margin-top: 5px; }
/* ==========================================================================
Section base
========================================================================== */
.wf-section {
padding: var(--wf-section-py) var(--wf-section-px);
background: var(--wf-bg);
}
.wf-section.tight { padding: 40px var(--wf-section-px); }
.wf-section.flat { padding: 0; }
.wf-section.mute { background: var(--wf-bg-mute); }
.wf-section.soft { background: var(--wf-bg-soft); }
.wf-frame.sp-375 .wf-section { padding: 32px 16px; }
.wf-frame.sp-375 .wf-section.tight { padding: 16px 16px; }
.wf-container {
max-width: var(--wf-container-max);
margin: 0 auto;
}
/* セクションタイトル:BtoB標準は日本語見出し中心。英字併記は任意。 */
.wf-section-title {
margin-bottom: 32px;
}
.wf-section-title .label {
font-size: 13px;
color: var(--wf-text-mute);
display: block;
margin-bottom: 12px;
letter-spacing: 0.05em;
}
.wf-section-title h2 {
font-size: 32px;
font-weight: 600;
letter-spacing: 0.02em;
line-height: 1.4;
}
.wf-section-title .lead {
margin-top: 16px;
font-size: 15px;
color: var(--wf-text-mute);
line-height: 1.9;
max-width: 720px;
}
/* 旧形式(en/jp併記)も残す — ブランド寄り案件で使用 */
.wf-section-title-en-jp {
display: flex;
align-items: baseline;
gap: 16px;
margin-bottom: 24px;
}
.wf-section-title-en-jp .en {
font-family: 'Cormorant Garamond', 'Times New Roman', serif;
font-size: 28px;
letter-spacing: 0.06em;
font-weight: 500;
}
.wf-section-title-en-jp .jp {
font-size: 16px;
font-weight: 500;
}
.wf-section-lead {
font-size: 15px;
line-height: 1.9;
margin: 12px 0 32px;
max-width: 780px;
}
.wf-section-h {
font-size: 22px;
font-weight: 600;
margin-bottom: 16px;
line-height: 1.5;
}
.wf-section-h-en {
font-family: 'Cormorant Garamond', 'Times New Roman', serif;
font-size: 24px;
letter-spacing: 0.06em;
margin-bottom: 4px;
}
.wf-frame.sp-375 .wf-section-title .en { font-size: 20px; }
.wf-frame.sp-375 .wf-section-title .jp { font-size: 14px; }
.wf-frame.sp-375 .wf-section-lead { font-size: 13px; line-height: 1.7; margin: 8px 0 16px; }
.wf-frame.sp-375 .wf-section-h { font-size: 16px; }
/* ==========================================================================
画像プレースホルダ
========================================================================== */
.wf-img {
background: var(--wf-img);
display: flex;
align-items: center;
justify-content: center;
color: #fff;
font-size: 12px;
letter-spacing: 0.1em;
font-family: 'Inter', sans-serif;
}
.wf-img.dark { background: var(--wf-img-dark); }
.wf-img.deep { background: var(--wf-img-deep); color: #fff; }
.wf-img.thumb { background: var(--wf-img-dark); }
.wf-img.kv { width: 100%; aspect-ratio: 16 / 7; }
.wf-img.square { aspect-ratio: 1 / 1; }
.wf-img.r-4-3 { aspect-ratio: 4 / 3; }
.wf-img.r-3-2 { aspect-ratio: 3 / 2; }
.wf-img.r-16-9 { aspect-ratio: 16 / 9; }
.wf-frame.sp-375 .wf-img.kv { aspect-ratio: 375 / 280; }
/* 実画像配置時 */
.wf-img.has-img {
background-color: transparent;
background-size: cover;
background-position: center;
background-repeat: no-repeat;
color: transparent;
}
/* ==========================================================================
オプション要素(必要に応じて使う・デフォルトはシンプル)
========================================================================== */
/* セリフ系見出し — ブランド寄りWFで使用、デフォルトはゴシック */
.wf-h-serif {
font-family: 'Noto Serif JP', serif;
font-weight: 500;
letter-spacing: 0.04em;
line-height: 1.6;
}
/* 英字アイブロウ — 必要時のみ。BtoB標準では使わないことが多い。
デフォルトでは目立たないトーン。装飾必要時は .wf-eb.bold で */
.wf-eb {
font-size: 12px;
letter-spacing: 0.18em;
color: var(--wf-text-mute);
display: block;
font-weight: 500;
text-transform: uppercase;
}
.wf-eb.serif {
font-family: 'Cormorant Garamond', serif;
font-style: italic;
font-size: 14px;
}
/* 日本語アイブロウ — BtoB標準。「セクション名」の上に小さく置く */
.wf-jp-eb {
font-size: 13px;
color: var(--wf-text-mute);
display: block;
font-weight: 500;
letter-spacing: 0.08em;
}
/* セクションラベル — 番号付き見出しの前置き(「01 / 事業内容」形式) */
.wf-num-label {
display: inline-flex;
align-items: center;
gap: 12px;
font-size: 13px;
color: var(--wf-text-mute);
margin-bottom: 16px;
letter-spacing: 0.05em;
}
.wf-num-label::before {
content: "";
width: 24px;
height: 1px;
background: currentColor;
}
/* 引用 */
.wf-quote {
font-family: 'Noto Serif JP', serif;
font-weight: 400;
line-height: 2.0;
}
/* ==========================================================================
グリッド(PC基準)
========================================================================== */
.wf-col-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 32px; }
.wf-col-3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; }
.wf-col-4 { display: grid; grid-template-columns: repeat(4, 1fr); gap: 20px; }
.wf-col-asym { display: grid; grid-template-columns: 5fr 7fr; gap: 48px; align-items: center; }
.wf-frame.sp-375 .wf-col-2,
.wf-frame.sp-375 .wf-col-3,
.wf-frame.sp-375 .wf-col-4,
.wf-frame.sp-375 .wf-col-asym {
grid-template-columns: 1fr;
gap: 16px;
}
/* ==========================================================================
カード
========================================================================== */
.wf-card {
background: var(--wf-bg);
border: 1px solid var(--wf-line);
padding: 24px;
}
.wf-card .card-img {
background: var(--wf-img);
aspect-ratio: 16 / 9;
margin-bottom: 16px;
}
.wf-card .card-cat {
font-size: 11px;
letter-spacing: 0.1em;
color: var(--wf-text-mute);
margin-bottom: 8px;
}
.wf-card .card-title {
font-size: 16px;
font-weight: 600;
margin-bottom: 8px;
line-height: 1.5;
}
.wf-card .card-desc {
font-size: 13px;
color: var(--wf-text-mute);
line-height: 1.7;
}
/* ==========================================================================
ボタン
========================================================================== */
.wf-btn {
display: inline-flex;
align-items: center;
justify-content: center;
height: 56px;
padding: 0 32px;
background: var(--wf-img);
color: var(--wf-text); /* デフォルト黒文字(暗背景内継承を防ぐ) */
font-size: 14px;
letter-spacing: 0.04em;
min-width: 240px;
text-decoration: none;
white-space: nowrap; /* ボタン内文字折り返し防止 */
}
.wf-btn.block { display: flex; width: 100%; min-width: 0; white-space: normal; }
.wf-btn.white {
background: #fff !important;
border: 1px solid #000;
color: var(--wf-text) !important; /* 白背景:絶対に黒文字(親要素の color:#fff 継承を遮断) */
}
.wf-btn.dark {
background: var(--wf-btn-dark);
color: #fff;
border: 1px solid var(--wf-btn-dark);
}
/* outline-white = 暗背景内で使う透過ボタン(白枠白文字) */
.wf-btn.outline-white {
background: transparent;
border: 1px solid #fff;
color: #fff;
}
/* outline-dark = 明背景内で使う透過ボタン(黒枠黒文字) */
.wf-btn.outline-dark {
background: transparent;
border: 1px solid #000;
color: var(--wf-text);
}
.wf-btn.lg { height: 64px; font-size: 15px; }
.wf-btn.sm { height: 40px; font-size: 12px; min-width: 0; padding: 0 16px; }
.wf-btn-pair {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 16px;
}
.wf-frame.sp-375 .wf-btn { height: 45px; font-size: 13px; padding: 0 16px; min-width: 0; width: 100%; }
/* ==========================================================================
タグ・パンくず
========================================================================== */
.wf-tag {
display: inline-flex;
align-items: center;
height: 24px;
padding: 0 12px;
background: var(--wf-img);
font-size: 11px;
color: var(--wf-text-mute);
margin-right: 8px;
}
.wf-breadcrumb {
font-size: 12px;
color: var(--wf-text-mute);
padding: 16px 40px;
line-height: 1.5;
}
.wf-frame.sp-375 .wf-breadcrumb { font-size: 10px; padding: 8px 16px; }
/* ==========================================================================
フォーム
========================================================================== */
.wf-form-row {
display: grid;
grid-template-columns: 200px 1fr;
gap: 24px;
padding: 20px 0;
border-bottom: 1px solid var(--wf-line);
}
.wf-form-label {
font-size: 14px;
font-weight: 600;
display: flex;
align-items: center;
gap: 8px;
}
.wf-form-label .req {
background: #B32D2D;
color: #fff;
font-size: 10px;
padding: 2px 6px;
}
.wf-form-input {
width: 100%;
height: 48px;
padding: 0 16px;
border: 1px solid var(--wf-line);
background: var(--wf-bg-soft);
font-size: 14px;
}
.wf-form-textarea {
width: 100%;
min-height: 160px;
padding: 16px;
border: 1px solid var(--wf-line);
background: var(--wf-bg-soft);
font-size: 14px;
resize: vertical;
}
.wf-frame.sp-375 .wf-form-row { grid-template-columns: 1fr; gap: 8px; padding: 12px 0; }
/* ==========================================================================
ヘルパー
========================================================================== */
.wf-row { display: flex; align-items: center; gap: 8px; }
.wf-row.gap-16 { gap: 16px; }
.wf-row.gap-24 { gap: 24px; }
.wf-row.center { justify-content: center; }
.wf-row.between { justify-content: space-between; }
.wf-mt-4 { margin-top: 4px; }
.wf-mt-8 { margin-top: 8px; }
.wf-mt-16 { margin-top: 16px; }
.wf-mt-24 { margin-top: 24px; }
.wf-mt-32 { margin-top: 32px; }
.wf-mt-48 { margin-top: 48px; }
.wf-mb-8 { margin-bottom: 8px; }
.wf-mb-16 { margin-bottom: 16px; }
.wf-mb-24 { margin-bottom: 24px; }
.wf-mb-32 { margin-bottom: 32px; }
.wf-mb-48 { margin-bottom: 48px; }
.wf-text-mute { color: var(--wf-text-mute); }
.wf-text-light { color: var(--wf-text-light); }
.wf-small { font-size: 12px; }
.wf-xs { font-size: 11px; }
.wf-line { height: 1px; background: var(--wf-line); width: 100%; }
.wf-text-center { text-align: center; }
/* ==========================================================================
Footer
========================================================================== */
.wf-footer {
background: var(--wf-img-deep);
color: #fff;
padding: 64px 40px 32px;
}
.wf-footer-cols {
display: grid;
grid-template-columns: 2fr 1fr 1fr 1fr;
gap: 48px;
max-width: var(--wf-container-max);
margin: 0 auto 48px;
}
.wf-footer-col h4 {
font-size: 13px;
letter-spacing: 0.1em;
margin-bottom: 16px;
font-weight: 500;
}
.wf-footer-col ul li {
font-size: 13px;
line-height: 2.0;
color: rgba(255,255,255,0.85);
}
.wf-footer-bar {
border-top: 1px solid rgba(255,255,255,0.3);
padding-top: 24px;
max-width: var(--wf-container-max);
margin: 0 auto;
display: flex;
justify-content: space-between;
font-size: 12px;
color: rgba(255,255,255,0.7);
}
.wf-frame.sp-375 .wf-footer { padding: 32px 16px 16px; }
.wf-frame.sp-375 .wf-footer-cols { grid-template-columns: 1fr; gap: 24px; margin-bottom: 24px; }
.wf-frame.sp-375 .wf-footer-bar { flex-direction: column; gap: 8px; font-size: 11px; }