.source-top { padding:14px max(16px,calc((100% - 1120px)/2)); background:var(--ink); display:flex; align-items:center; justify-content:space-between; gap:20px; }
.source-top img { display:block; width:170px; height:auto; }
.source-top nav { display:flex; gap:16px; flex-wrap:wrap; }
.source-top nav a { color:#fffaf3; font-size:13px; text-decoration:none; }
.source-heading { padding:46px 0 24px; }
.source-heading h1 { font-size:clamp(32px,5vw,52px); }
.source-heading h1 small { display:block; font:500 20px/1.5 var(--sans); margin-top:10px; }
.source-heading > p:last-child { max-width:850px; font-size:13px; color:var(--ink-soft); }
.source-nav { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:8px; margin:0 0 30px; }
.source-nav a { background:#fffaf3; border:1px solid var(--line); padding:12px; border-radius:10px; text-decoration:none; font-size:14px; font-weight:700; }
.source-nav small { display:block; color:var(--ink-soft); font-weight:400; margin-top:4px; }
.source-section { margin:24px 0; background:#fff; border:1px solid var(--line); border-radius:14px; overflow:hidden; }
.source-grid { display:grid; grid-template-columns:repeat(50,minmax(0,1fr)); grid-auto-rows:minmax(20px,auto); padding:8px 0; }
.source-node { grid-column:var(--dcs)/var(--dce); grid-row:var(--drs)/var(--dre); min-width:0; padding:5px; align-self:center; overflow-wrap:anywhere; }
.source-node h1 { font-size:clamp(26px,3vw,40px); }
.source-node h2 { font-size:clamp(24px,2.7vw,34px); }
.source-node h3 { font-size:clamp(22px,2.2vw,28px); }
.source-node h4,.source-node h5,.source-node h6 { font-family:var(--sans); font-size:18px; line-height:1.5; }
.source-node p { font-size:16px; margin:0 0 10px; }
.source-node p:last-child { margin-bottom:0; }
.source-center { text-align:center; }
.source-right { text-align:right; }
.source-figure { margin:0; }
.source-figure a { display:block; }
.source-figure img { display:block; width:100%; height:auto; max-height:720px; object-fit:contain; background:#fff; border-radius:6px; }
.source-banner { background:#e6eeec; }
.source-banner img { height:auto; max-height:420px; object-fit:contain; }
.source-gallery { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(180px,100%),1fr)); gap:12px; }
.source-slides { grid-template-columns:repeat(4,minmax(0,1fr)); }
.source-gallery-help { font-size:12px!important; color:var(--ink-soft); }
.source-video iframe,.source-map iframe { display:block; border:0; width:100%; aspect-ratio:16/9; min-height:220px; }
.source-contact { border:1px solid var(--line); padding:24px; border-radius:12px; background:var(--paper-2); }
.source-contact .fine { font-size:12px; margin-top:15px; }
.source-end { padding:32px 0; }
.source-dialog { padding:54px 16px 18px; border:0; width:calc(100% - 24px); max-width:1400px; max-height:96vh; background:#172331; color:white; border-radius:12px; }
.source-dialog::backdrop { background:rgba(0,0,0,.85); }
.source-dialog img { display:block; max-height:78vh; width:100%; object-fit:contain; }
.source-dialog-controls { display:flex; gap:12px; align-items:center; justify-content:center; margin-top:12px; }
.source-dialog button { border:1px solid #fff8; border-radius:8px; color:white; background:transparent; padding:8px 16px; cursor:pointer; }
.source-dialog .source-close { position:absolute; right:16px; top:10px; }
.source-dialog a { color:#f4c662; }
@media(max-width:760px) {
 .source-top { align-items:flex-start; flex-direction:column; gap:14px; }
 .source-nav { grid-template-columns:repeat(2,minmax(0,1fr)); }
 .source-grid { display:flex; flex-direction:column; gap:18px; padding:24px 18px; }
 .source-node { order:var(--mobile-order); width:100%; padding:0; }
 .source-node p { font-size:15px; }
 .source-node h4,.source-node h5,.source-node h6 { font-size:16px; }
 .source-slides { grid-template-columns:repeat(2,minmax(0,1fr)); }
 .source-contact { padding:16px; }
}
@media print { .source-top,.source-nav,.source-dialog { display:none; } .source-grid { display:block; } .source-node { margin:16px 0; } }
