:root { --navy:#1a2f4e; --ink:#192a43; --muted:#5f6e82; --line:#dfe5ec; --soft:#f4f7fa; }
* { box-sizing:border-box; }
html { font-family:"Noto Sans JP",sans-serif; color:var(--ink); }
body { margin:0; background:#fff; }
.site-header { height:82px; padding:0 5vw; display:flex; align-items:center; gap:35px; position:sticky; top:0; z-index:10; background:rgba(255,255,255,.92); border-bottom:1px solid rgba(26,47,78,.1); backdrop-filter:blur(14px); }
.logo { display:flex; align-items:center; gap:7px; margin-right:auto; }.logo img:first-child { width:48px; height:48px; object-fit:contain; }.logo img:last-child { width:91px; height:auto; }
nav { display:flex; gap:30px; }nav a { position:relative; color:var(--ink); text-decoration:none; font:700 11px "Inter",sans-serif; letter-spacing:.06em; }nav a.active::after { content:""; position:absolute; height:2px; inset:auto 0 -9px; background:var(--navy); }
.contact-link { padding:11px 18px; border-radius:99px; color:#fff; background:var(--navy); text-decoration:none; font-size:11px; font-weight:700; }
.hero { min-height:420px; padding:95px max(6vw,24px); position:relative; overflow:hidden; display:flex; align-items:center; background:linear-gradient(130deg,#f4f7fa,#e9eff6); }.hero h1 { margin:15px 0 22px; font-size:clamp(45px,8vw,90px); letter-spacing:-.06em; line-height:1; }.eyebrow { margin:0; color:var(--navy); font:800 10px "Inter",sans-serif; letter-spacing:.28em; }.lead { color:var(--muted); line-height:2; font-size:14px; }.hero-shape { position:absolute; right:7vw; width:300px; height:300px; transform:rotate(45deg); border:1px solid rgba(26,47,78,.12); border-radius:50px; }.hero-shape span { position:absolute; inset:60px; border-radius:30px; background:var(--navy); box-shadow:0 30px 70px rgba(26,47,78,.2); }
.works-section { max-width:1240px; margin:auto; padding:100px 30px 130px; }.section-head { margin-bottom:42px; display:flex; align-items:end; justify-content:space-between; gap:25px; }.section-head h2 { margin:11px 0 0; font-size:clamp(28px,4vw,45px); }.filters { display:flex; flex-wrap:wrap; justify-content:flex-end; gap:7px; }.filters button { padding:8px 13px; border:1px solid var(--line); border-radius:99px; color:var(--muted); background:#fff; font-size:10px; cursor:pointer; }.filters button.active { color:#fff; border-color:var(--navy); background:var(--navy); }
.works-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:42px 28px; }.work-card { min-width:0; }.thumbnail { width:100%; padding:0; position:relative; overflow:hidden; display:block; aspect-ratio:16/9; border:0; border-radius:20px; background:#e8edf3; cursor:pointer; }.thumbnail img { width:100%; height:100%; display:block; object-fit:cover; transition:.5s ease; }.thumbnail:hover img { transform:scale(1.035); }.play { position:absolute; inset:50% auto auto 50%; width:65px; height:47px; transform:translate(-50%,-50%); display:grid; place-items:center; border-radius:13px; color:#fff; background:rgba(220,52,42,.94); box-shadow:0 10px 30px rgba(0,0,0,.25); }.work-copy { padding:20px 4px; }.category { display:inline-block; padding:5px 9px; border-radius:99px; color:var(--navy); background:#eaf0f6; font-size:9px; font-weight:700; }.work-copy h3 { margin:11px 0 8px; font-size:20px; }.work-copy p { margin:0; color:var(--muted); font-size:12px; line-height:1.8; }
.empty { grid-column:1/-1; padding:80px 20px; border:1px dashed #cdd5df; border-radius:18px; color:var(--muted); text-align:center; }
.thumbnail-sample { cursor:default; }.thumbnail-sample:hover img { transform:none; }.sample-badge { position:absolute; top:12px; left:12px; padding:5px 10px; border-radius:99px; color:#1a2f4e; background:rgba(255,255,255,.92); font:800 10px "Inter",sans-serif; letter-spacing:.18em; box-shadow:0 4px 12px rgba(0,0,0,.15); }
.thumbnail-empty { background:linear-gradient(135deg,#eef2f8,#dbe4f0); }
footer { padding:60px 6vw 35px; color:#fff; background:#142640; }footer img { width:120px; filter:brightness(0) invert(1); }footer p { margin:18px 0 50px; color:rgba(255,255,255,.7); font-size:12px; }footer small { color:rgba(255,255,255,.4); }
dialog { width:min(920px,calc(100% - 25px)); padding:0; border:0; border-radius:18px; overflow:hidden; color:#fff; background:#0c1727; box-shadow:0 30px 90px rgba(0,0,0,.35); }dialog::backdrop { background:rgba(7,15,27,.78); backdrop-filter:blur(4px); }.dialog-head { min-height:58px; padding:12px 15px 12px 20px; display:flex; align-items:center; justify-content:space-between; gap:20px; }.dialog-head strong { font-size:13px; }.dialog-head button { width:35px; height:35px; border:1px solid rgba(255,255,255,.2); border-radius:10px; color:#fff; background:transparent; font-size:22px; cursor:pointer; }.video-frame iframe { width:100%; aspect-ratio:16/9; display:block; border:0; }
@media(max-width:780px) { .site-header { height:68px; padding:0 18px; }.logo img:first-child { width:40px;height:40px; }.logo img:last-child { width:75px; }nav { display:none; }.contact-link { padding:9px 13px; }.hero { min-height:350px; padding-top:70px; }.hero-shape { width:170px;height:170px;right:-80px;opacity:.45; }.works-section { padding:75px 18px 90px; }.section-head { align-items:flex-start; flex-direction:column; }.filters { justify-content:flex-start; }.works-grid { grid-template-columns:1fr; gap:30px; }.thumbnail { border-radius:14px; }.work-copy h3 { font-size:17px; } }

/* 実績一覧・検索 */
.works-toolbar { margin:-10px 0 42px; display:grid; grid-template-columns:minmax(240px,380px) 1fr; align-items:center; gap:18px 28px; }
.search-box { height:46px; padding:0 17px; display:flex; align-items:center; gap:9px; border:1px solid var(--line); border-radius:99px; background:var(--soft); color:var(--muted); }
.search-box:focus-within { border-color:rgba(26,47,78,.55); background:#fff; box-shadow:0 0 0 3px rgba(26,47,78,.07); }
.search-box input { width:100%; border:0; outline:0; color:var(--ink); background:transparent; font:500 13px "Noto Sans JP",sans-serif; }
.filters a { padding:8px 13px; border:1px solid var(--line); border-radius:99px; color:var(--muted); background:#fff; font-size:10px; text-decoration:none; }
.filters a.active { color:#fff; border-color:var(--navy); background:var(--navy); }
.active-tag { min-height:0; grid-column:1/-1; display:flex; align-items:center; gap:9px; color:var(--muted); font-size:12px; }
.active-tag:empty { display:none; }
.active-tag-chip { padding:6px 10px; border-radius:99px; color:var(--navy); background:#eaf0f6; font-weight:700; }
.active-tag-chip a { margin-left:7px; color:inherit; text-decoration:none; opacity:.55; }
.work-card .thumbnail { cursor:pointer; }
.thumbnail .sample-badge, .detail-visual .sample-badge { position:absolute; }
.work-copy h3 a { color:inherit; text-decoration:none; }
.work-copy h3 a:hover { color:var(--navy); }
.tags { margin-top:13px; display:flex; flex-wrap:wrap; gap:6px; }
.tags a,.tags span { padding:4px 8px; border-radius:99px; color:var(--muted); background:var(--soft); font-size:9px; font-weight:700; text-decoration:none; }
.tags a:hover { color:var(--navy); background:#eaf0f6; }
.empty strong { display:block; color:var(--ink); }.empty p { margin:8px 0 18px; font-size:12px; }.empty a { color:var(--navy); font-size:12px; font-weight:700; }

/* 実績詳細 */
.detail-main { max-width:1180px; min-height:65vh; margin:auto; padding:55px 30px 120px; }
.breadcrumbs { min-width:0; margin-bottom:58px; display:flex; gap:9px; color:var(--muted); font-size:10px; white-space:nowrap; overflow:hidden; }
.breadcrumbs a { color:inherit; text-decoration:none; }.breadcrumbs span:last-child { overflow:hidden; text-overflow:ellipsis; }
.detail-head { max-width:880px; margin-bottom:48px; }
.detail-head .category { margin-top:20px; }
.detail-head h1 { margin:16px 0 18px; font-size:clamp(30px,5vw,58px); line-height:1.35; letter-spacing:-.04em; }
.detail-head time { margin-top:18px; display:block; color:var(--muted); font:500 11px "Inter",sans-serif; letter-spacing:.05em; }
.detail-visual { position:relative; overflow:hidden; aspect-ratio:16/9; border-radius:26px; background:var(--soft); box-shadow:0 22px 60px rgba(26,47,78,.12); }
.detail-visual img { width:100%; height:100%; display:block; object-fit:cover; }
.detail-layout { padding:90px 5% 100px; display:grid; grid-template-columns:minmax(0,1.55fr) minmax(280px,.8fr); gap:80px; }
.detail-layout h2,.related h2 { margin:10px 0 24px; font-size:clamp(25px,3vw,36px); }
.detail-copy>p:last-of-type { margin:0; color:var(--muted); font-size:14px; line-height:2.25; white-space:pre-wrap; }
.button-primary { margin-top:30px; padding:13px 22px; display:inline-block; border:0; border-radius:99px; color:#fff; background:var(--navy); font:700 12px "Noto Sans JP",sans-serif; text-decoration:none; cursor:pointer; }
.spec { padding:32px; border-radius:20px; background:var(--soft); align-self:start; }
.spec h2 { margin:8px 0 20px; font-size:21px; }.spec dl { margin:0; }.spec dl div { padding:14px 0; display:grid; grid-template-columns:90px 1fr; gap:15px; border-bottom:1px solid var(--line); }.spec dl div:last-child { border-bottom:0; }.spec dt { color:var(--muted); font-size:10px; }.spec dd { margin:0; font-size:12px; font-weight:700; }
.work-navigation { padding:35px 0; display:grid; grid-template-columns:1fr 1fr; gap:25px; border-top:1px solid var(--line); border-bottom:1px solid var(--line); }
.work-navigation a { min-width:0; color:var(--ink); text-decoration:none; }.work-navigation a:last-child { text-align:right; }.work-navigation small { display:block; margin-bottom:7px; color:var(--muted); font:700 9px "Inter",sans-serif; letter-spacing:.18em; }.work-navigation strong { display:block; overflow:hidden; font-size:12px; text-overflow:ellipsis; white-space:nowrap; }
.related { padding-top:95px; }.related-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:25px; }.related .work-copy h3 { font-size:15px; }.related .work-copy p { display:none; }
.detail-empty { padding:120px 20px; text-align:center; }.detail-empty p { color:var(--muted); }

@media(max-width:780px) {
  .works-toolbar { grid-template-columns:1fr; margin-bottom:32px; }.filters { overflow-x:auto; flex-wrap:nowrap; padding-bottom:5px; justify-content:flex-start; }.filters a { flex:none; }.active-tag { grid-column:auto; }
  .detail-main { padding:35px 18px 80px; }.breadcrumbs { margin-bottom:38px; }.detail-head { margin-bottom:30px; }.detail-head h1 { font-size:29px; }.detail-visual { border-radius:15px; }.detail-layout { padding:55px 0 65px; grid-template-columns:1fr; gap:45px; }.detail-copy>p:last-of-type { font-size:13px; line-height:2; }.spec { padding:25px; }.related { padding-top:70px; }.related-grid { grid-template-columns:1fr; }.work-navigation { gap:15px; }.work-navigation strong { font-size:10px; }
}
