:root {
	--ad-ink: #1c1a18;
	--ad-ink-strong: #191715;
	--ad-ink-body: #4b4540;
	--ad-ink-muted: #3a352f;
	--ad-stone: #8b8378;
	--ad-stone-light: #9a9188;
	--ad-paper: #f4f1ec;
	--ad-panel: rgba(252, 251, 249, .9);
	--ad-card: rgba(255, 255, 255, .9);
	--ad-red: #8f1a20;
	--ad-red-bright: #b3272d;
	--ad-red-soft: #c98b8f;
	--ad-hairline: rgba(28, 26, 24, .1);
	--ad-font-display: "Noto Serif Display", "Times New Roman", serif;
	--ad-font-ui: "Noto Sans", system-ui, sans-serif;
	--ad-font-jp: "Noto Sans JP", "Noto Sans", sans-serif;
}

*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body.ad-body {
	margin: 0;
	background-color: var(--ad-paper);
	background-image: url("../images/ishigaki-island-back.jpg");
	background-position: top center;
	background-size: 1280px auto;
	background-repeat: repeat-y;
	color: var(--ad-ink-body);
	font: 400 15px/1.85 var(--ad-font-ui);
}
img { max-width: 100%; height: auto; }
a { color: var(--ad-red); text-decoration: none; }
a:hover { color: #5e1114; }
h1, h2, h3, h4 { color: var(--ad-ink-strong); font-family: var(--ad-font-display); font-weight: 400; }
.visually-hidden {
	position: absolute !important;
	width: 1px; height: 1px;
	padding: 0; margin: -1px;
	overflow: hidden; clip: rect(0,0,0,0);
	white-space: nowrap; border: 0;
}

.ad-page {
	min-height: 100vh;
	background: none;
}
.ad-scrim {
	background: none;
	min-height: 100vh;
}

/* Utility */
.ad-utility {
	display: flex;
	justify-content: space-between;
	align-items: center;
	padding: 0 40px;
	height: 34px;
	background: rgba(28,26,24,.9);
	color: rgba(255,255,255,.72);
	font-size: 11.5px;
	letter-spacing: .04em;
}
.ad-utility a { color: rgba(255,255,255,.72); }
.ad-utility a:hover { color: #fff; }
.ad-utility__end {
	display: flex;
	align-items: center;
	gap: 18px;
}
.ad-social {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	text-decoration: none;
}
.ad-social__icon {
	width: 13px;
	height: 13px;
	display: block;
	flex-shrink: 0;
}
.ad-utility .mod-languages,
.ad-utility .mod-languages__list,
.ad-utility ul {
	display: flex;
	align-items: center;
	gap: 14px;
	list-style: none;
	margin: 0;
	padding: 0;
}
.ad-utility .mod-languages img { display: none; }
.ad-utility .mod-languages a {
	color: rgba(255,255,255,.72);
	text-transform: uppercase;
	letter-spacing: .08em;
}
.ad-utility .mod-languages .lang-active a,
.ad-utility .mod-languages li.lang-active a {
	color: #fff;
	border-bottom: 1px solid var(--ad-red-bright);
	padding-bottom: 2px;
}
.ad-utility .visually-hidden { display: none; }

/* Masthead */
.ad-masthead {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 14px;
	padding: 30px 0 24px;
	background: var(--ad-panel);
}
.ad-masthead__brand {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 14px;
	color: inherit;
	text-align: center;
}
.ad-masthead__brand:hover { color: inherit; }
.ad-masthead__brand img { width: 100px; height: 100px; display: block; }
.ad-masthead__title {
	font: 600 27px/1.1 var(--ad-font-display);
	letter-spacing: .16em;
	color: var(--ad-ink);
}
.ad-masthead__tagline {
	margin-top: 7px;
	font: 500 12px/1 var(--ad-font-ui);
	letter-spacing: .34em;
	color: var(--ad-stone);
}

/* Sticky nav */
.ad-nav {
	position: sticky;
	top: 0;
	z-index: 20;
	display: flex;
	justify-content: center;
	align-items: center;
	gap: 32px;
	padding: 0 40px;
	min-height: 52px;
	background: rgba(250,248,245,.96);
	border-top: 1px solid var(--ad-hairline);
	border-bottom: 1px solid rgba(28,26,24,.14);
	backdrop-filter: blur(6px);
}
.ad-nav__toggle {
	display: none;
	background: none;
	border: 0;
	padding: 12px;
	cursor: pointer;
}
.ad-nav__toggle-bar,
.ad-nav__toggle-bar::before,
.ad-nav__toggle-bar::after {
	display: block;
	width: 22px;
	height: 2px;
	background: var(--ad-ink);
	position: relative;
}
.ad-nav__toggle-bar::before,
.ad-nav__toggle-bar::after {
	content: "";
	position: absolute;
	left: 0;
}
.ad-nav__toggle-bar::before { top: -6px; }
.ad-nav__toggle-bar::after { top: 6px; }
.ad-nav .mod-menu,
.ad-nav ul {
	display: flex;
	justify-content: center;
	align-items: stretch;
	gap: 32px;
	list-style: none;
	margin: 0;
	padding: 0;
}
.ad-nav .mod-menu li { display: flex; align-items: stretch; }
.ad-nav .mod-menu a,
.ad-nav .mod-menu span.separator {
	display: flex;
	align-items: center;
	font: 500 13px/1 var(--ad-font-ui);
	letter-spacing: .1em;
	text-transform: uppercase;
	color: var(--ad-ink-muted);
	padding: 16px 0 14px;
	border-bottom: 2px solid transparent;
}
.ad-nav .mod-menu a:hover { color: #5e1114; }
.ad-nav .mod-menu .current > a,
.ad-nav .mod-menu a.is-active {
	color: var(--ad-red);
	border-bottom-color: var(--ad-red);
}
body.view-featured .ad-nav .mod-menu .current > a {
	color: var(--ad-ink-muted);
	border-bottom-color: transparent;
}
body.view-featured .ad-nav .mod-menu a.is-active {
	color: var(--ad-red);
	border-bottom-color: var(--ad-red);
}

/* Main / article */
.ad-main {
	max-width: 1280px;
	margin: 0 auto;
	padding: 0;
	background: rgba(255, 255, 255, .86);
	border-left: 1px solid var(--ad-hairline);
	border-right: 1px solid var(--ad-hairline);
}
.ad-main .blog-featured,
.ad-main .blog,
.ad-main .item-page,
.ad-main .com-content-article,
.ad-main .com-content-category,
.ad-main .com-contact,
.ad-main .com-contact-contact,
.ad-main article.item-page {
	padding: 70px 96px 60px;
}
.blog-featured > .page-header,
.ad-main .article-info,
.ad-main .icons,
.ad-main .content-links { display: none; }
.ad-main img[src*="back-to-top"] { display: none; }
.ad-main h1 {
	margin: 0 0 20px;
	font: 400 44px/1.24 var(--ad-font-display);
	color: var(--ad-ink-strong);
	text-wrap: pretty;
	text-align: center;
	max-width: 820px;
	margin-left: auto;
	margin-right: auto;
}
.ad-main h2,
.ad-main .heading h2,
.ad-main h3.page-header {
	margin: 56px 0 20px;
	padding-top: 56px;
	border-top: 1px solid var(--ad-hairline);
	font: 400 30px/1.25 var(--ad-font-display);
	scroll-margin-top: 60px;
}
.ad-main h2 a,
.ad-main h2 strong,
.ad-main h2 b {
	font-weight: 400;
	color: inherit;
}
.ad-main h2 a[id],
.ad-main a[id] {
	scroll-margin-top: 60px;
}
.ad-main table {
	width: 100%;
	border-collapse: collapse;
	margin: 24px 0;
}
.ad-main table td {
	vertical-align: top;
	padding: 8px 12px 8px 0;
}
.ad-main h2:first-of-type { margin-top: 40px; }
.ad-main h3, .ad-main h4 {
	margin: 28px 0 12px;
	font: 400 20px/1.3 var(--ad-font-display);
}
.ad-main p {
	margin: 0 0 14px;
	font: 400 14.5px/1.9 var(--ad-font-ui);
	color: var(--ad-ink-body);
	text-wrap: pretty;
}
.ad-main img {
	display: block;
	margin: 24px auto;
}

/* Dojo mini gallery */
.ad-main ul.brSigContainer {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: 10px;
	list-style: none;
	margin: 28px 0 24px;
	padding: 0;
}
.ad-main .brSigItem {
	margin: 0;
	padding: 0;
	list-style: none;
}
.ad-main .brSigLink {
	display: block;
	border: 0;
	box-shadow: none;
	background: transparent;
}
.ad-main .brSigLink:hover { transform: none; }
.ad-main .brSigLink img {
	display: block;
	width: 100%;
	height: auto;
	margin: 0;
	object-fit: cover;
}
.ad-hero { padding: 70px 96px 60px; text-align: center; }

/* Downloads (OSDownloads) */
body.com_osdownloads .osdownloads-container {
	padding: 40px 48px 56px;
}
body.com_osdownloads .osdownloads-container .items {
	margin: 0;
}
body.com_osdownloads .osdownloads-container .column {
	float: none;
	width: 100%;
	padding: 0;
}
body.com_osdownloads .osdownloads-container [class^="item_"] {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 8px 20px;
	padding: 14px 0 0;
}
body.com_osdownloads .osdownloads-container h3 {
	flex: 1 1 240px;
	margin: 0;
	padding: 0;
	border: 0;
	font: 400 17px/1.35 var(--ad-font-display);
}
body.com_osdownloads .osdownloads-container h3 a { color: var(--ad-red); }
body.com_osdownloads .osdownloads-container h3 a:hover { color: #5e1114; }
body.com_osdownloads .osdownloads-container .item_content:empty,
body.com_osdownloads .osdownloads-container .osdownloads-readmore-wrapper,
body.com_osdownloads .osdownloads-container .clr {
	display: none;
}
body.com_osdownloads .osdownloads-container .osdownloadsactions,
body.com_osdownloads .osdownloads-container .btn_download {
	margin: 0;
}
body.com_osdownloads .osdownloads-container .seperator {
	flex-basis: 100%;
	width: 100%;
	margin: 14px 0 0;
	border-bottom: 1px solid var(--ad-hairline);
}
body.com_osdownloads .osdownloads-pages-counter,
body.com_osdownloads .osdownloads-pagination {
	margin-top: 20px;
}

/* Iframe ratio (keeps YouTube / Maps embeds) */
.ratio { position: relative; width: 100%; }
.ratio::before { display: block; padding-top: var(--bs-aspect-ratio, 56.25%); content: ""; }
.ratio-16x9 { --bs-aspect-ratio: 56.25%; }
.ratio > * {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	border: 0;
}

/* Buttons */
.ad-btn,
.ad-main .btn,
.com-contact .btn,
button.btn {
	display: inline-block;
	padding: 14px 26px;
	font: 500 13px/1 var(--ad-font-ui);
	letter-spacing: .08em;
	border-radius: 0;
	cursor: pointer;
	border: 0;
}
.ad-btn--primary,
.ad-main .btn-primary,
.com-contact .btn-primary {
	background: var(--ad-red);
	color: #fff;
}
.ad-btn--primary:hover,
.ad-main .btn-primary:hover { background: #7a151b; color: #fff; }
.ad-btn--ghost {
	border: 1px solid rgba(28,26,24,.3);
	color: var(--ad-ink);
	background: transparent;
}

/* Contact */
.com-contact,
.com-contact-contact {
	display: block;
}
.com-contact .page-header {
	text-align: center;
	margin-bottom: 12px;
}
.com-contact .page-header h1 {
	font-size: 44px;
}
.com-contact__container {
	display: flex;
	gap: 40px;
	align-items: flex-start;
	margin-bottom: 40px;
}
.com-contact__thumbnail img {
	width: 100px;
	height: 100px;
	margin: 0;
	object-fit: contain;
}
.com-contact dl, .com-contact address {
	font: 400 13.5px/1.9 var(--ad-font-ui);
	color: var(--ad-ink-body);
	margin: 0;
}
.com-contact dt { display: none; }
.com-contact dd { margin: 0; }
.contact-form .control-group { margin: 0 0 16px; }
.contact-form .control-label {
	margin-bottom: 6px;
	font: 500 12px/1.4 var(--ad-font-ui);
	letter-spacing: .04em;
	color: var(--ad-ink-muted);
}
.contact-form .controls,
.contact-form .form-control { width: 100%; }
.contact-form fieldset { border: 0; margin: 0; padding: 0; }
.contact-form legend { font: 400 20px/1.3 var(--ad-font-display); color: var(--ad-ink-strong); margin-bottom: 16px; }
.com-contact input[type="text"],
.com-contact input[type="email"],
.com-contact textarea,
.ad-main input[type="text"],
.ad-main input[type="email"],
.ad-main input[type="tel"],
.ad-main textarea,
.ad-main .form-control {
	width: 100%;
	padding: 13px 14px;
	background: var(--ad-card);
	border: 1px solid rgba(28,26,24,.16);
	border-radius: 0;
	font: 400 13px/1.4 var(--ad-font-ui);
	color: var(--ad-ink);
}
.ad-main input::placeholder,
.ad-main textarea::placeholder { color: var(--ad-stone-light); }

/* Messages */
#system-message-container .alert {
	padding: 14px 18px;
	margin: 20px 96px 0;
	border: 1px solid var(--ad-hairline);
	background: var(--ad-card);
}

/* Footer */
.ad-footer {
	background: var(--ad-ink);
	color: rgba(244,241,236,.66);
	padding: 38px 96px 30px;
}
.ad-footer a { color: rgba(244,241,236,.66); }
.ad-footer a:hover { color: #fff; }
.ad-footer__top {
	display: flex;
	justify-content: space-between;
	align-items: flex-start;
	gap: 40px;
}
.ad-footer__brand { display: flex; gap: 16px; align-items: center; }
.ad-footer__brand img { width: 52px; height: 52px; opacity: .85; }
.ad-footer__name {
	color: #f4f1ec;
	font: 600 13px/1 var(--ad-font-display);
	letter-spacing: .16em;
}
.ad-footer__place { margin-top: 7px; font-size: 12px; }
.ad-footer__menu .mod-menu,
.ad-footer__menu ul {
	display: flex;
	flex-wrap: wrap;
	gap: 22px;
	list-style: none;
	margin: 0;
	padding: 0;
	font: 400 12.5px/1 var(--ad-font-ui);
}
.ad-footer__social { display: flex; gap: 14px; font-size: 11.5px; color: rgba(244,241,236,.45); align-items: center; }
.ad-footer__modules { margin-top: 24px; }
.ad-footer__modules img { width: 68px; }
.ad-footer__bottom {
	margin-top: 30px;
	padding-top: 16px;
	border-top: 1px solid rgba(255,255,255,.1);
	display: flex;
	justify-content: space-between;
	align-items: center;
	font-size: 11.5px;
	color: rgba(244,241,236,.4);
}
.ad-footer__bottom a {
	color: rgba(244,241,236,.6);
	letter-spacing: .14em;
}

.ad-bottoms {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
	gap: 1px;
	background: var(--ad-hairline);
	border-top: 1px solid var(--ad-hairline);
}
.ad-bottoms__item {
	background: rgba(252,251,249,.92);
	padding: 34px 32px;
}

/* Floating back-to-top */
.ad-totop {
	position: fixed;
	right: 26px;
	bottom: 26px;
	width: 46px;
	height: 46px;
	border-radius: 50%;
	background: var(--ad-red);
	color: #fff;
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 17px;
	box-shadow: 0 3px 12px rgba(0,0,0,.28);
	z-index: 30;
	opacity: 0;
	pointer-events: none;
	transition: opacity .2s;
}
.ad-totop.is-visible { opacity: 1; pointer-events: auto; color: #fff; }
.ad-totop:hover { background: #7a151b; color: #fff; }

.ad-error { text-align: center; padding: 70px 32px; }
.ad-error__code { font: 500 11px/1 var(--ad-font-ui); letter-spacing: .22em; color: var(--ad-red); }

/* Sections appended via modules */
.ad-section {
	padding: 56px 96px;
	border-top: 1px solid var(--ad-hairline);
}
.ad-section:nth-of-type(even) { background: var(--ad-panel); }

@media (max-width: 1279px) {
	.ad-main .blog-featured,
	.ad-main .blog,
	.ad-main .item-page,
	.ad-main .com-content-article,
	.ad-main .com-contact,
	.ad-main .com-contact-contact,
	.ad-main article.item-page,
	.ad-hero, .ad-section { padding-left: 48px; padding-right: 48px; }
	.ad-footer { padding-left: 48px; padding-right: 48px; }
	body.com_osdownloads .osdownloads-container { padding-left: 48px; padding-right: 48px; }
}
@media (max-width: 1023px) {
	.ad-main .blog-featured,
	.ad-main .blog,
	.ad-main .item-page,
	.ad-main .com-content-article,
	.ad-main .com-contact,
	.ad-main .com-contact-contact,
	.ad-main article.item-page,
	.ad-hero, .ad-section { padding: 40px 32px; }
	.ad-footer { padding: 32px; }
	.ad-footer__top { flex-direction: column; }
	.ad-nav .mod-menu { gap: 18px; }
	.com-contact__container { flex-direction: column; }
	body.com_osdownloads .osdownloads-container { padding: 32px; }
}
@media (max-width: 767px) {
	body.ad-body {
		background-size: cover;
		background-attachment: scroll;
		background-position: top center;
	}
	.ad-utility { padding: 0 20px; font-size: 10.5px; }
	.ad-main ul.brSigContainer { grid-template-columns: repeat(2, 1fr); }
	.ad-utility__text { display: none; }
	.ad-masthead__title { font-size: 22px; letter-spacing: .1em; }
	.ad-nav { justify-content: flex-end; padding: 0 16px; }
	.ad-nav__toggle { display: block; }
	.ad-nav__list {
		display: none;
		position: absolute;
		top: 52px;
		left: 0; right: 0;
		background: rgba(250,248,245,.98);
		border-bottom: 1px solid rgba(28,26,24,.14);
		padding: 12px 20px 20px;
	}
	.ad-nav.is-open .ad-nav__list { display: block; }
	.ad-nav .mod-menu { flex-direction: column; gap: 0; align-items: stretch; }
	.ad-main h1 { font-size: 32px; line-height: 1.3; }
	.ad-main .blog-featured,
	.ad-main .blog,
	.ad-main .item-page,
	.ad-main .com-content-article,
	.ad-main .com-contact,
	.ad-main .com-contact-contact,
	.ad-main article.item-page,
	.ad-hero, .ad-section { padding: 32px 20px; }
	.ad-footer { padding: 32px 20px; }
	body.com_osdownloads .osdownloads-container { padding: 28px 20px 40px; }
	.ad-footer__bottom { flex-direction: column; gap: 12px; }
}
