:root { --opi-accent:#8D2115; --opi-ink:#181615; --opi-muted:#625b57; --opi-line:#e9e2dd; --opi-soft:#faf7f4; }
.opi-single, .opi-archive { color:var(--opi-ink); background:#fff; font-family:inherit; }
.opi-single *, .opi-archive * { box-sizing:border-box; }
.opi-hero { position:relative; width:100%; height:51vh!important; display:flex; align-items:flex-end; background-color:#0f172a; background-size:cover; background-position:50% 50%; background-repeat:no-repeat; overflow:hidden; }
.opi-hero::after { content:""; position:absolute; inset:0; background:linear-gradient(180deg,rgba(0,0,0,.05),rgba(0,0,0,.18)); pointer-events:none; }
.opi-hero-inner { position:relative; z-index:2; width:100%; max-width:1300px; margin:0 auto; padding:80px 24px 55px; box-sizing:border-box; text-align:center; }
.opi-hero h1 { margin:0; color:#fff!important; font-size:clamp(2rem,4vw,3.4rem); line-height:1.15; font-weight:700; letter-spacing:-.02em; text-shadow:0 3px 15px rgba(0,0,0,.35); }
.opi-single-shell { width:min(1200px,calc(100% - 48px)); margin:auto; padding:64px 0 96px; }
.opi-section { margin:0 0 76px; }
.opi-section:last-child { margin-bottom:0; }
.opi-section-heading { margin:0 0 26px; }
.opi-section-kicker { display:block; color:var(--opi-accent); font-size:.79rem; font-weight:800; letter-spacing:.08em; text-transform:uppercase; margin-bottom:10px; }
.opi-section-heading h2 { color:var(--opi-ink); font-size:clamp(1.7rem,3vw,2.6rem); line-height:1.26; margin:0; font-weight:800; }
.opi-rich-text { color:#403a37; font-size:clamp(1rem,1.3vw,1.12rem); line-height:1.95; overflow-wrap:anywhere; }
.opi-rich-text p { margin:0 0 1.2em; }
.opi-rich-text p:last-child { margin-bottom:0; }
.opi-rich-text a { color:var(--opi-accent); text-decoration:underline; }
.opi-description { padding:34px clamp(22px,4vw,54px); background:var(--opi-soft); border:1px solid var(--opi-line); border-inline-start:4px solid var(--opi-accent); border-radius:22px; }
.opi-gallery-section { width:100%; margin:24px auto 40px; overflow:hidden; }
.opi-gallery-section > .org-slider-wrap { box-sizing:border-box; width:100%; max-width:none; margin:0; padding:0 clamp(16px,3vw,48px) 28px; overflow:hidden; direction:ltr; }
.opi-gallery-section .org-slider { margin:0; }
.opi-gallery-section .org-slide { padding:0!important; margin:0!important; box-sizing:border-box!important; }
.opi-gallery-section .org-slide-inner { width:calc(100% - 10px)!important; margin-inline:5px!important; border-radius:0!important; box-shadow:none!important; }
.opi-gallery-section .org-slide-open,.opi-gallery-section .org-slide img { border-radius:0!important; transform:none!important; filter:none!important; opacity:1!important; }
.opi-gallery { position:relative; padding:0 clamp(16px,3vw,48px) 30px; --opi-gallery-gap:10px; }
.opi-gallery-viewport { overflow:hidden; touch-action:pan-y; cursor:grab; }
.opi-gallery-viewport:active { cursor:grabbing; }
.opi-gallery-track { display:flex; gap:var(--opi-gallery-gap); transition:transform .65s cubic-bezier(.2,.75,.2,1); will-change:transform; }
.opi-gallery-slide { flex:0 0 calc((100% - 20px) / 3); min-width:0; margin:0; }
.opi-gallery-slide a { display:block; position:relative; overflow:hidden; aspect-ratio:4/3; background:transparent; }
.opi-gallery-slide img { display:block; width:100%; height:100%; object-fit:cover; user-select:none; -webkit-user-drag:none; }
.opi-gallery-control { position:absolute; z-index:2; top:50%; width:48px; height:48px; display:grid; place-items:center; padding:0; border:0; border-radius:50%; color:var(--opi-accent); background:#fff; box-shadow:0 7px 22px rgba(0,0,0,.18); font:inherit; font-size:32px; line-height:1; cursor:pointer; transform:translateY(-50%); }
.opi-gallery-prev { inset-inline-start:12px; }
.opi-gallery-next { inset-inline-end:12px; }
.opi-gallery-control:hover { color:#fff; background:var(--opi-accent); }
.opi-gallery-control[hidden], .opi-gallery-dots[hidden] { display:none; }
.opi-gallery-dots { display:flex; justify-content:center; align-items:center; gap:8px; margin-top:18px; }
.opi-gallery-dot { display:block; width:9px; height:9px; border:0; border-radius:50%; padding:0; background:#d9ccc6; cursor:pointer; transition:width .2s ease,background .2s ease; }
.opi-gallery-dot[aria-current="true"] { width:26px; border-radius:99px; background:var(--opi-accent); }
.opi-tab-list { display:flex; flex-wrap:wrap; gap:10px; border-bottom:1px solid var(--opi-line); padding:0 0 16px; }
.opi-tab-button { padding:12px 18px; border:1px solid var(--opi-line); border-radius:11px; color:var(--opi-ink); background:#fff; font:inherit; font-size:.99rem; font-weight:700; line-height:1.5; cursor:pointer; transition:color .2s,border-color .2s,background .2s; }
.opi-tab-button:hover { border-color:var(--opi-accent); color:var(--opi-accent); }
.opi-tab-button.is-active { border-color:var(--opi-accent); color:#fff; background:var(--opi-accent); }
.opi-tab-panel { margin-top:22px; min-height:130px; padding:28px clamp(20px,3vw,38px); border:1px solid var(--opi-line); border-radius:17px; background:var(--opi-soft); }
.opi-tab-panel[hidden] { display:none; }
.opi-faq-list { margin-top:30px; }
.opi-faq-list h3 { margin:0 0 14px; color:var(--opi-ink); font-size:clamp(1.2rem,2vw,1.55rem); }
.opi-faq-item { margin-top:10px; border:1px solid var(--opi-line); border-radius:12px; background:#fff; overflow:hidden; }
.opi-faq-item summary { display:flex; justify-content:space-between; align-items:center; gap:18px; padding:17px 20px; color:var(--opi-ink); font-size:1.05rem; font-weight:700; cursor:pointer; list-style:none; }
.opi-faq-item summary::-webkit-details-marker { display:none; }
.opi-faq-item summary:hover,.opi-faq-item[open] summary { color:var(--opi-accent); }
.opi-faq-symbol { display:grid; flex:0 0 34px; place-items:center; width:34px; height:34px; border-radius:8px; color:var(--opi-accent); background:#faecea; font:700 24px/1 Arial,sans-serif; }
.opi-faq-symbol::before { content:'+'; }
.opi-faq-item[open] .opi-faq-symbol::before { content:'−'; }
.opi-faq-answer { padding:0 20px 20px; }
.opi-map-frame { height:clamp(300px,38vw,460px); border:1px solid var(--opi-line); border-radius:19px; overflow:hidden; background:#f4f0ed; }
.opi-map-frame iframe { display:block; width:100%; height:100%; border:0; }
.opi-map-link { display:inline-flex; align-items:center; gap:10px; margin-top:18px; padding:12px 18px; border-radius:11px; color:#fff!important; background:var(--opi-accent); font-weight:700; text-decoration:none!important; }
.opi-map-link:hover { background:#6d190f; }
.opi-grid { display:grid; grid-template-columns:repeat(var(--opi-columns,3),minmax(0,1fr)); gap:26px; }
.opi-card { min-width:0; border-radius:19px; overflow:hidden; transition:transform .25s; }
.opi-card:hover { transform:translateY(-5px); }
.opi-card-link { color:inherit!important; display:block; text-decoration:none!important; }
.opi-card-media { position:relative; aspect-ratio:4/3; overflow:hidden; background:#211614; }
.opi-card-media img { display:block; width:100%; height:100%; object-fit:cover; transition:transform .4s ease; }
.opi-card:hover img { transform:scale(1.045); }
.opi-card-placeholder { display:grid; place-items:center; width:100%; height:100%; color:#c59b94; font-size:5rem; }
.opi-card-title { position:absolute; z-index:1; inset-inline:18px; bottom:19px; margin:0; color:#fff!important; font-size:clamp(1rem,1vw,1rem); line-height:1.4; font-weight:800; text-align:center; text-shadow:0 2px 8px rgba(0,0,0,.7); }
.opi-empty { padding:34px; border-radius:16px; background:var(--opi-soft); color:var(--opi-muted); text-align:center; }
.opi-archive-hero { padding:100px 24px 90px; text-align:center; background:linear-gradient(130deg,#291c18,#141212); }
.opi-archive-hero .opi-section-kicker { color:#e9bfb9; }
.opi-archive-hero h1 { margin:0; color:#fff; font-size:clamp(2.2rem,5vw,4.2rem); }
.opi-archive-inner { width:min(1200px,calc(100% - 48px)); margin:0 auto; padding:70px 0 95px; }
.opi-lightbox { position:fixed; max-width:min(96vw,1300px); max-height:95vh; padding:12px; border:0; border-radius:0; background:#fff; box-shadow:0 20px 80px rgba(0,0,0,.45); }
.opi-lightbox::backdrop { background:rgba(255,255,255,.96); }
.opi-lightbox img { display:block; max-width:calc(96vw - 24px); max-height:calc(95vh - 24px); object-fit:contain; }
.opi-lightbox-close { position:absolute; inset-inline-end:18px; top:18px; display:grid; place-items:center; width:38px; height:38px; border:0; border-radius:50%; background:#8D2115; color:#fff; font-size:26px; cursor:pointer; }
.opi-single :is(a,button):focus-visible, .opi-archive :is(a,button):focus-visible, .opi-lightbox button:focus-visible { outline:3px solid var(--opi-accent); outline-offset:3px; }
@media (max-width:992px) { .opi-hero { height:46vh!important; } .opi-hero-inner { padding:70px 22px 45px; } }
@media (max-width:1024px) { .opi-gallery-slide { flex-basis:calc((100% - 10px) / 2); } }
@media (max-width:900px) { .opi-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } .opi-grid[style*="--opi-columns:1"] { grid-template-columns:1fr; } }
@media (max-width:767px) { .opi-hero { min-height:300px; background-position:center center; } .opi-hero-inner { padding:55px 18px 35px; } .opi-hero h1 { font-size:2rem; } }
@media (max-width:640px) { .opi-gallery-slide { flex-basis:100%; } .opi-gallery-control { width:38px; height:38px; font-size:28px; } }
@media (max-width:600px) { .opi-single-shell,.opi-archive-inner { width:calc(100% - 34px); padding-top:40px; padding-bottom:70px; } .opi-section { margin-bottom:54px; } .opi-grid { grid-template-columns:1fr; gap:20px; } .opi-tab-list { flex-wrap:nowrap; overflow:auto; scrollbar-width:thin; } .opi-tab-button { white-space:nowrap; } .opi-archive-hero { padding:72px 20px; } }
@media (max-width:480px) { .opi-hero { min-height:260px; } .opi-hero h1 { font-size:1.75rem; } }
@media (max-width:767px) { .opi-gallery-section > .org-slider-wrap { padding:0 14px 26px; } .opi-gallery { padding-inline:14px; } }
@media (prefers-reduced-motion:reduce) { .opi-gallery-track,.opi-card,.opi-card-media img,.opi-gallery-slide img,.opi-gallery-dot { transition:none!important; } }
