:root { --ink:#071d36; --ink-2:#203a54; --teal:#009c9d; --teal-dark:#007879; --mist:#eff7f7; --line:#d8e4e7; --paper:#fff; --muted:#607286; --max:1160px; --shadow:0 22px 70px rgba(7,29,54,.12); --background:#fff; --foreground:#071d36; --card:#fff; --card-foreground:#071d36; --popover:#fff; --popover-foreground:#071d36; --primary:#071d36; --primary-foreground:#fff; --secondary:#eff7f7; --secondary-foreground:#071d36; --accent:#eff7f7; --accent-foreground:#071d36; --destructive:#b42318; --border:#d8e4e7; --input:#d8e4e7; --ring:#009c9d; --radius:.625rem; }
@theme inline { --color-background:var(--background); --color-foreground:var(--foreground); --color-card:var(--card); --color-card-foreground:var(--card-foreground); --color-popover:var(--popover); --color-popover-foreground:var(--popover-foreground); --color-primary:var(--primary); --color-primary-foreground:var(--primary-foreground); --color-secondary:var(--secondary); --color-secondary-foreground:var(--secondary-foreground); --color-accent:var(--accent); --color-accent-foreground:var(--accent-foreground); --color-destructive:var(--destructive); --color-border:var(--border); --color-input:var(--input); --color-ring:var(--ring); --radius-sm:calc(var(--radius) - 4px); --radius-md:calc(var(--radius) - 2px); --radius-lg:var(--radius); --radius-xl:calc(var(--radius) + 4px); --font-sans:"Noto Sans JP","Yu Gothic",YuGothic,"Hiragino Kaku Gothic ProN",Meiryo,sans-serif; }
* { box-sizing:border-box; }
html { scroll-behavior:smooth; }
body { margin:0; color:var(--ink); background:var(--paper); font-family:"Noto Sans JP","Yu Gothic",YuGothic,"Hiragino Kaku Gothic ProN",Meiryo,sans-serif; font-size:16px; line-height:1.85; -webkit-font-smoothing:antialiased; }
a { color:inherit; }
.skip { position:fixed; left:1rem; top:-5rem; z-index:100; padding:.7rem 1rem; color:#fff; background:var(--ink); border-radius:.4rem; }
.skip:focus { top:1rem; }
.wrap { width:min(calc(100% - 40px),var(--max)); margin-inline:auto; }
.site-header { position:sticky; top:0; z-index:20; background:rgba(255,255,255,.94); border-bottom:1px solid rgba(216,228,231,.9); backdrop-filter:blur(16px); }
.nav { min-height:76px; display:flex; align-items:center; justify-content:space-between; gap:1.5rem; }
.brand { display:inline-flex; align-items:center; gap:.9rem; text-decoration:none; font-weight:800; letter-spacing:.03em; }
.brand-logo { width:124px; height:auto; display:block; }
.brand-name { padding-left:.9rem; border-left:1px solid var(--line); }
nav ul { display:flex; gap:1.45rem; align-items:center; margin:0; padding:0; list-style:none; }
nav a { color:var(--ink-2); font-size:.9rem; font-weight:700; text-decoration:none; }
nav a:hover,nav a:focus-visible { color:var(--teal-dark); }
.nav-contact { padding:.62rem 1rem; color:#fff; background:var(--ink); border-radius:999px; }
.menu-button { display:none; border:0; background:transparent; padding:.5rem; color:var(--ink); font:inherit; font-weight:700; }
.hero { position:relative; overflow:hidden; min-height:650px; display:grid; align-items:center; background:var(--ink); color:#fff; }
.hero::before { content:""; position:absolute; width:520px; height:520px; right:-100px; top:-140px; border:92px solid rgba(0,167,167,.18); border-radius:50%; }
.hero::after { content:""; position:absolute; width:380px; height:380px; right:12%; bottom:-290px; border:1px solid rgba(255,255,255,.2); border-radius:50%; box-shadow:0 0 0 70px rgba(255,255,255,.025),0 0 0 140px rgba(255,255,255,.018); }
.hero-inner { position:relative; z-index:1; padding-block:96px; display:grid; grid-template-columns:1.25fr .75fr; gap:5rem; align-items:end; }
.eyebrow { display:flex; align-items:center; gap:.65rem; margin:0 0 1.1rem; color:#65d6d0; font-size:.84rem; font-weight:800; letter-spacing:.16em; text-transform:uppercase; }
.eyebrow::before { content:""; width:30px; height:2px; background:currentColor; }
h1 { max-width:760px; margin:0; font-size:clamp(2.65rem,6.2vw,5.5rem); line-height:1.18; letter-spacing:-.035em; }
.hero h1 span { display:block; color:#65d6d0; }
.hero-copy { max-width:530px; margin:1.8rem 0 0; color:#cfdae4; font-size:1.06rem; }
.hero-aside { padding:1.7rem; border-left:1px solid rgba(255,255,255,.22); color:#cfdae4; }
.hero-aside strong { display:block; margin-bottom:.4rem; color:#fff; font-size:1.1rem; }
.hero-aside p { margin:0; }
.hero-aside a { display:inline-block; margin-top:1.4rem; color:#65d6d0; font-weight:800; text-decoration:none; }
section { padding-block:108px; scroll-margin-top:74px; }
.section-head { display:grid; grid-template-columns:.7fr 1.3fr; gap:4rem; align-items:start; margin-bottom:3.2rem; }
.section-head.compact { margin-bottom:2rem; }
.section-no { color:var(--teal-dark); font-size:.78rem; font-weight:800; letter-spacing:.17em; text-transform:uppercase; }
h2 { margin:.4rem 0 0; font-size:clamp(2rem,4vw,3.45rem); line-height:1.25; letter-spacing:-.025em; }
.section-lead { margin:.6rem 0 0; color:var(--ink-2); font-size:1.12rem; }
.news-section { padding-block:82px; background:#fff; }
.news-list { border-top:2px solid var(--ink); }
.news-item { display:grid; grid-template-columns:150px 1fr; gap:2rem; padding:1.35rem .5rem; border-bottom:1px solid var(--line); }
.news-item time { color:var(--teal-dark); font-size:.92rem; font-weight:800; letter-spacing:.06em; }
.news-item h3 { margin:0; font-size:1.08rem; }
.news-item p { margin:.35rem 0 0; color:var(--muted); white-space:pre-line; }
.news-link { display:inline-flex; align-items:center; gap:.45rem; margin-top:.8rem; color:var(--teal-dark); font-weight:800; text-decoration:underline; text-underline-offset:.22em; }
.news-link span { transition:transform .2s ease; }
.news-link:hover span { transform:translateX(3px); }
.news-empty { margin:0; padding:1.5rem; color:var(--muted); background:var(--mist); border-left:4px solid var(--teal); }
.services { background:var(--mist); }
.service-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:1px; background:#cbdde0; border:1px solid #cbdde0; }
.service { min-height:560px; padding:0; overflow:hidden; background:#fff; transition:transform .2s ease,box-shadow .2s ease; }
.service:hover { position:relative; z-index:2; transform:translateY(-5px); box-shadow:var(--shadow); }
.service-media { position:relative; aspect-ratio:3/2; overflow:hidden; background:#dce9eb; }
.service-media>img { width:100%; height:100%; object-fit:cover; display:block; transition:transform .55s ease; }
.service:hover .service-media>img { transform:scale(1.035); }
.service-logo { position:absolute; right:1rem; bottom:1rem; display:grid; place-items:center; width:110px; height:64px; padding:.6rem; background:rgba(255,255,255,.95); border-radius:.55rem; box-shadow:0 7px 24px rgba(7,29,54,.16); }
.service-logo img { max-width:100%; max-height:100%; object-fit:contain; }
.service-logo.is-round { width:68px; }
.service-logo.is-company { width:118px; }
.service-body { padding:1.8rem 2rem 2.2rem; }
.service-num { display:flex; justify-content:space-between; align-items:center; color:var(--teal-dark); font-size:.8rem; font-weight:800; letter-spacing:.13em; }
.service h3 { margin:1rem 0 .8rem; font-size:1.42rem; line-height:1.45; }
.service p { margin:0; color:var(--muted); }
.service a { display:inline-flex; margin-top:1.3rem; color:var(--teal-dark); font-weight:800; text-decoration-thickness:1px; text-underline-offset:4px; }
.message-grid { display:grid; grid-template-columns:.85fr 1.15fr; gap:7rem; }
.quote-card { position:relative; min-height:420px; padding:3rem; color:#fff; background:var(--ink); display:flex; flex-direction:column; justify-content:space-between; overflow:hidden; }
.quote-card::after { content:"“"; position:absolute; right:18px; bottom:-120px; color:rgba(101,214,208,.15); font:400 24rem/1 Georgia,serif; }
.quote-card p { position:relative; z-index:1; margin:0; font-size:clamp(1.7rem,3vw,2.5rem); font-weight:800; line-height:1.55; }
.quote-card small { position:relative; z-index:1; color:#aebdcc; }
.message-text p { margin:0 0 1.4rem; color:var(--ink-2); }
.signature { margin-top:3rem; padding-top:1.4rem; border-top:1px solid var(--line); text-align:right; }
.signature span { display:block; color:var(--muted); font-size:.88rem; }
.signature strong { font-size:1.25rem; letter-spacing:.08em; }
.profile { background:#f7f9fa; }
.profile-list { border-top:2px solid var(--ink); }
.profile-row { display:grid; grid-template-columns:210px 1fr; gap:2rem; padding:1.15rem .4rem; border-bottom:1px solid var(--line); }
.profile-row dt { font-weight:800; }
.profile-row dd { margin:0; color:var(--ink-2); }
.profile-row a { color:var(--teal-dark); text-underline-offset:3px; }
.contact { padding-block:0; background:var(--ink); color:#fff; }
.contact-grid { display:grid; grid-template-columns:1fr 1fr; }
.contact-main { padding:5.3rem max(2rem,calc((100vw - var(--max))/2)); padding-right:5rem; }
.contact-main h2 { max-width:640px; }
.contact-main p { color:#b9c8d5; }
.contact-info { padding:5.3rem 3.5rem; background:#0c2948; }
.contact-label { margin:0 0 .4rem; color:#65d6d0; font-size:.75rem; font-weight:800; letter-spacing:.14em; }
.contact-email-label { margin-top:1.6rem; }
.contact-link { display:block; width:fit-content; color:#fff; font-size:clamp(1.3rem,3vw,2rem); font-weight:800; line-height:1.5; text-decoration:none; }
.contact-link:hover { color:#65d6d0; }
address { margin-top:2rem; color:#b9c8d5; font-style:normal; }
.map { display:inline-flex; margin-top:1rem; color:#65d6d0; font-weight:800; text-underline-offset:4px; }
footer { padding-block:2rem; color:#a7b6c4; background:#041529; font-size:.82rem; }
.footer-inner { display:flex; justify-content:space-between; gap:2rem; }

.admin-shell { min-height:100vh; padding:0 32px 64px; background:#f2f6f7; }
.admin-header { width:min(100%,1180px); min-height:74px; margin:0 auto; display:flex; align-items:center; justify-content:space-between; border-bottom:1px solid var(--line); }
.admin-header img { width:120px; height:auto; }
.admin-header>div { display:flex; gap:1.2rem; align-items:center; font-size:.9rem; }
.admin-header a { color:var(--teal-dark); font-weight:800; text-underline-offset:4px; }
.admin-title { width:min(100%,1180px); margin:0 auto; padding:56px 0 32px; }
.admin-title p,.admin-kicker { margin:0; color:var(--teal-dark); font-size:.78rem; font-weight:800; letter-spacing:.16em; text-transform:uppercase; }
.admin-title h1 { margin:.3rem 0 .7rem; font-size:clamp(2rem,4vw,3.2rem); }
.admin-title span { color:var(--muted); }
.admin-grid { width:min(100%,1180px); margin:0 auto; display:grid; grid-template-columns:minmax(0,.86fr) minmax(0,1.14fr); gap:24px; align-items:start; }
.admin-panel { padding:30px; background:#fff; border:1px solid var(--line); border-radius:16px; box-shadow:0 12px 40px rgba(7,29,54,.06); }
.admin-panel h2 { margin:.2rem 0 1.5rem; font-size:1.5rem; }
.news-form { display:grid; gap:1.25rem; }
.news-form label { display:grid; gap:.45rem; font-weight:800; }
.news-form label span { color:var(--muted); font-size:.82rem; font-weight:500; }
.news-form input,.news-form textarea { width:100%; padding:.8rem .9rem; color:var(--ink); background:#fff; border:1px solid #b9c9d0; border-radius:8px; font:inherit; line-height:1.5; }
.news-form textarea { resize:vertical; }
.news-form input:focus,.news-form textarea:focus { outline:3px solid rgba(0,156,157,.16); border-color:var(--teal); }
.form-actions { display:flex; gap:.8rem; flex-wrap:wrap; }
.primary-button,.secondary-button { min-height:46px; padding:.7rem 1.3rem; border:1px solid var(--ink); border-radius:8px; font:inherit; font-weight:800; cursor:pointer; }
.primary-button { color:#fff; background:var(--ink); }
.secondary-button { color:var(--ink); background:#fff; }
button:disabled { opacity:.55; cursor:wait; }
.form-success,.form-error { padding:.8rem 1rem; border-radius:8px; }
.form-success { color:#075a4d; background:#e5f6f2; }
.form-error { color:#8f1d16; background:#feecea; }
.admin-items { display:grid; gap:1rem; }
.admin-items article { padding:1.15rem; border:1px solid var(--line); border-radius:10px; }
.admin-items time { color:var(--teal-dark); font-size:.84rem; font-weight:800; }
.admin-items h3 { margin:.2rem 0; font-size:1.05rem; }
.admin-items p { margin:.4rem 0 .9rem; color:var(--muted); white-space:pre-line; }
.admin-items .admin-link-preview { padding:.7rem .8rem; background:var(--mist); border-radius:8px; color:var(--teal-dark); font-size:.86rem; font-weight:700; overflow-wrap:anywhere; }
.admin-items .admin-link-preview span { color:var(--muted); font-weight:500; }
.admin-items article>div { display:flex; gap:.6rem; }
.admin-items button { padding:.45rem .85rem; color:var(--ink); background:#fff; border:1px solid #9fb2bd; border-radius:7px; font:inherit; font-size:.88rem; font-weight:800; cursor:pointer; }
.admin-items .delete-button { color:#a52a21; border-color:#e2b7b4; }
.admin-empty { color:var(--muted); }
.admin-denied { width:min(calc(100% - 40px),560px); margin:10vh auto; padding:3rem; text-align:center; background:#fff; border-radius:16px; box-shadow:var(--shadow); }
.admin-denied img { width:160px; }
.admin-denied h1 { margin:2rem auto 1rem; font-size:1.8rem; }
.admin-denied p { color:var(--muted); }
.admin-denied a { color:var(--teal-dark); font-weight:800; }
.admin-login { width:min(calc(100% - 40px),520px); margin:8vh auto; padding:2rem; background:#fff; border:1px solid var(--line); border-radius:16px; box-shadow:var(--shadow); }
.admin-login .brand-logo { width:150px; margin-bottom:1.5rem; }
.admin-login h1 { font-size:2rem; }
.admin-note { padding:1rem; color:var(--ink-2); background:var(--mist); border-left:4px solid var(--teal); }
.admin-items form { margin:0; }
.admin-items article>div.admin-actions { display:flex; gap:.6rem; margin-top:1rem; }
.admin-items a.admin-edit { display:inline-flex; align-items:center; padding:.45rem .85rem; color:var(--ink); border:1px solid #9fb2bd; border-radius:7px; font-size:.88rem; font-weight:800; text-decoration:none; }

@media (max-width:900px) {
  .menu-button { display:block; }
  nav { display:none; position:absolute; inset:76px 0 auto; padding:1.2rem 20px 1.5rem; background:#fff; border-bottom:1px solid var(--line); }
  nav.open { display:block; }
  nav ul { align-items:stretch; flex-direction:column; gap:0; }
  nav a { display:block; padding:.8rem 0; }
  .nav-contact { color:var(--ink-2); background:transparent; border-radius:0; }
  .hero { min-height:auto; }
  .hero-inner,.section-head,.message-grid { grid-template-columns:1fr; gap:2.5rem; }
  .hero-inner { padding-block:76px; }
  .hero-aside { max-width:540px; }
  .service-grid { grid-template-columns:1fr; }
  .service { min-height:auto; }
  .message-grid { gap:3.5rem; }
  .quote-card { min-height:330px; }
  .contact-grid { grid-template-columns:1fr; }
  .contact-main { padding:4.2rem 20px; }
  .contact-info { padding:4.2rem max(20px,calc((100vw - var(--max))/2)); }
  .admin-grid { grid-template-columns:1fr; }
}
@media (max-width:600px) {
  .wrap { width:min(calc(100% - 30px),var(--max)); }
  .brand-logo { width:108px; }
  .brand-name { display:none; }
  section { padding-block:76px; }
  .hero-inner { padding-block:64px; }
  .hero-copy { font-size:1rem; }
  .news-item { grid-template-columns:1fr; gap:.3rem; }
  .service-body { padding:1.45rem; }
  .quote-card { min-height:300px; padding:2rem; }
  .profile-row { grid-template-columns:1fr; gap:.2rem; padding:1rem 0; }
  .footer-inner { flex-direction:column; gap:.4rem; }
  .admin-shell { padding-inline:15px; }
  .admin-header>div span { display:none; }
  .admin-header>div { gap:.7rem; font-size:.8rem; }
  .admin-title { padding-top:36px; }
  .admin-panel { padding:22px 18px; }
}
@media (prefers-reduced-motion:reduce) { html { scroll-behavior:auto; } * { transition:none!important; } }
