/* OPC Base visual system 2.2.1. Loaded after the existing layout CSS. */
.opc-base-page {
  --opc-ink: #203047;
  --opc-muted: #536477;
  --opc-blue: #2d6ae3;
  --opc-line: rgba(31, 58, 85, .09);
  --opc-ease: cubic-bezier(.2, 0, 0, 1);
  --opc-shadow: 0 0 0 1px rgba(23, 55, 83, .055), 0 2px 5px rgba(23, 55, 83, .035), 0 14px 34px rgba(23, 55, 83, .055);
  --opc-shadow-hover: 0 0 0 1px rgba(37, 91, 155, .11), 0 6px 12px rgba(23, 55, 83, .05), 0 20px 38px rgba(23, 55, 83, .1);
  --opc-sidebar: 224px;
  --opc-gap: 28px;
  background: #f5f7f7;
  color: var(--opc-ink);
}
.opc-base-page h1,.opc-base-page h2,.opc-base-page h3 { text-wrap: balance; }
.opc-base-page p { text-wrap: pretty; }
.opc-base-main { padding-top: 22px; }
.opc-base-sidebar {
  padding: 0 14px 0 0;
  background: linear-gradient(150deg, #edf4f7, #f3f7f7 58%, #f5f7f7);
  border-right: 1px solid rgba(59, 92, 119, .11);
}
.opc-side-sticky { position: sticky; top: 86px; max-height: calc(100vh - 88px); overflow: auto; padding: 26px 11px 24px 0; scrollbar-width: thin; }
.opc-side-brand { display: flex; align-items: center; gap: 12px; padding: 0 10px 26px; }
.opc-side-brand .opc-side-brand-icon { display: grid; flex: 0 0 42px; width: 42px; height: 42px; place-items: center; border-radius: 13px; background: #193e69; color: #fff; font: 25px 'Songti SC', serif; box-shadow: 0 7px 18px rgba(31, 73, 118, .15); }
.opc-side-brand>span:last-child { min-width: 0; }
.opc-side-brand strong { display: block; color: #1d3652; font-size: 18px; letter-spacing: -.03em; line-height: 1.2; }
.opc-side-brand small { display: block; margin-top: 5px; color: #758799; font-size: 11px; white-space: nowrap; }
.opc-base-sidebar .opc-side-nav { display: grid; gap: 3px; }
.opc-side-group { display: block; margin: 22px 10px 7px; color: #8798a6; font-size: 11px; font-weight: 750; letter-spacing: .1em; }
.opc-base-sidebar .opc-side-link { position: relative; display: flex; align-items: center; gap: 12px; min-height: 46px; padding: 0 13px; border-radius: 11px; color: #536779; font-size: 14px; font-weight: 650; transition: background-color 170ms var(--opc-ease), color 170ms var(--opc-ease), box-shadow 170ms var(--opc-ease); }
.opc-base-sidebar .opc-side-link svg { flex: 0 0 20px; width: 20px; height: 20px; color: #768da0; transition: color 170ms var(--opc-ease); }
.opc-base-sidebar .opc-side-link:hover { background: rgba(255, 255, 255, .65); color: #1f5eae; transform: none; }
.opc-base-sidebar .opc-side-link:hover svg,.opc-base-sidebar .opc-side-link.is-current svg { color: #2469d4; }
.opc-base-sidebar .opc-side-link.is-current { color: #185abe; background: linear-gradient(95deg, #deebff, #eaf3ff); box-shadow: inset 0 0 0 1px rgba(72, 135, 212, .09); font-weight: 800; }
.opc-base-sidebar .opc-side-link.is-current::before { position: absolute; left: 0; top: 10px; bottom: 10px; width: 3px; border-radius: 4px; background: #2d6ae3; content: ''; }
.opc-side-personal { margin-top: 26px; padding: 1px 0 0; border-top: 1px solid rgba(41, 80, 111, .1); }
.opc-side-personal p { margin: 9px 12px 0; color: #8a9bac; font-size: 11px; line-height: 1.65; }
.opc-mobile-nav { position: relative; display: flex; gap: 8px; align-items: center; overflow: visible; padding: 0 0 14px; }
.opc-mobile-nav-list { display: flex; flex: 1 1 auto; gap: 7px; min-width: 0; overflow-x: auto; scrollbar-width: none; white-space: nowrap; }
.opc-mobile-nav-list::-webkit-scrollbar { display: none; }
.opc-mobile-nav a,.opc-mobile-drawer a { display: inline-flex; gap: 7px; align-items: center; min-height: 42px; }
.opc-mobile-nav-list a { flex: none; padding: 0 12px; border: 1px solid #e0e8f0; border-radius: 11px; background: #fff; color: #52677a; font-size: 12px; box-shadow: 0 1px 3px rgba(24, 55, 85, .035); }
.opc-mobile-nav-list a.is-current { border-color: #b8d2f5; background: #e8f1ff; color: #1a5dbc; }
.opc-mobile-nav-list svg,.opc-mobile-drawer svg { width: 17px; height: 17px; }
.opc-mobile-more { flex: 0 0 auto; min-height: 42px; padding: 0 12px; border: 1px solid #bed4ea; border-radius: 11px; background: #eaf3ff; color: #255d9f; font-size: 12px; font-weight: 750; cursor: pointer; }
.opc-mobile-more[aria-expanded="true"] { background: #dceaff; }
.opc-mobile-drawer[hidden] { display: none !important; }
.opc-mobile-drawer { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 7px; margin: -3px 0 18px; padding: 13px; border-radius: 15px; background: #fff; box-shadow: var(--opc-shadow); }
.opc-mobile-drawer a { padding: 0 10px; border-radius: 9px; color: #4a6074; font-size: 13px; }
.opc-mobile-drawer a[aria-current] { background: #e9f2ff; color: #1b5bb5; font-weight: 750; }
.opc-hero { position: relative; display: flex; align-items: center; min-height: 346px; padding: 42px clamp(30px, 4vw, 70px); overflow: hidden; border: 1px solid rgba(122, 155, 178, .19); border-radius: 24px; background: linear-gradient(90deg, rgba(250, 251, 250, .98) 0%, rgba(250, 251, 250, .91) 28%, rgba(250, 251, 250, .56) 53%, rgba(250, 251, 250, .02) 86%), url('opc-hero-mountains.jpg') center center / cover no-repeat; box-shadow: 0 15px 40px rgba(38, 78, 117, .09); }
.opc-hero-copy { position: relative; z-index: 1; max-width: min(62%, 635px); }
.opc-hero .opc-eyebrow { color: #406c92; font-size: 12px; letter-spacing: .12em; }
.opc-hero h1 { margin: 15px 0 13px; color: #172d43; font-family: 'Songti SC', 'Noto Serif CJK SC', Georgia, serif; font-size: clamp(42px, 3.7vw, 58px); font-weight: 700; letter-spacing: -.055em; line-height: 1.17; }
.opc-hero p { max-width: 30em; margin: 0; color: #4f6478; font-size: 15px; line-height: 1.72; }
.opc-hero-actions { margin-top: 23px; }
.opc-hero-vertical { position: absolute; right: 23px; top: 24px; z-index: 1; color: rgba(37, 68, 92, .82); font-family: 'Songti SC', serif; font-size: 14px; letter-spacing: .12em; writing-mode: vertical-rl; }
.opc-button { min-height: 44px; border-radius: 11px; background: var(--opc-blue); border-color: var(--opc-blue); font-size: 13px; transition: background-color 170ms var(--opc-ease), box-shadow 170ms var(--opc-ease), transform 170ms var(--opc-ease), scale 120ms var(--opc-ease); }
.opc-button:hover { background: #195ac7; transform: translateY(-1px); }
.opc-button:active { scale: .96; }
.opc-button-light { border-color: #cedde9; background: rgba(255, 255, 255, .88); color: #315d83 !important; }
.opc-button-light:hover { background: #fff; }
.opc-base-page :is(a,button,input,select,textarea):focus-visible { outline: 3px solid #69a6ef; outline-offset: 3px; }
.opc-section { margin-top: 36px; }
.opc-section--features { margin-top: 26px; }
.opc-section-head { margin-bottom: 16px; }
.opc-section-head .opc-eyebrow { color: #5e85a6; font-size: 11px; letter-spacing: .11em; }
.opc-section-head h2 { margin-top: 5px; color: var(--opc-ink); font-size: 26px; letter-spacing: -.035em; }
.opc-section-head p { color: #7b8c9b; font-size: 13px; }
.opc-section-head>a { display: inline-flex; align-items: center; min-height: 40px; color: #2a66ac; font-size: 13px; transition: color 170ms var(--opc-ease); }
.opc-section-head>a:hover { color: #154881; }
.opc-feature-grid { gap: 12px; }
.opc-content-grid { gap: 16px; }
.opc-card { position: relative; min-height: 0; padding: 0; overflow: hidden; border: 0; border-radius: 17px; background: #fff; box-shadow: var(--opc-shadow); color: var(--opc-ink); transition: transform 190ms var(--opc-ease), box-shadow 190ms var(--opc-ease); }
.opc-card:hover { transform: translateY(-3px); border-color: transparent; box-shadow: var(--opc-shadow-hover); }
.opc-card:active { transform: translateY(-1px); }
.opc-card--feature { --feature-bg: #e8eafa; --feature-ink: #685ac7; display: flex; flex-direction: row; align-items: center; gap: 14px; min-height: 118px; padding: 16px 18px; background: linear-gradient(105deg, var(--feature-bg), #fff 54%); }
.opc-card--feature::before { position: absolute; inset: 16px auto 16px 0; width: 3px; border-radius: 0 3px 3px 0; background: var(--feature-ink); opacity: .7; content: ''; }
.opc-card--projects { --feature-bg: #e6f3ee; --feature-ink: #248971; }
.opc-card--cases { --feature-bg: #e5eefb; --feature-ink: #2d6faf; }
.opc-card--accounts { --feature-bg: #fdf0e2; --feature-ink: #bc733a; }
.opc-card--policies { --feature-bg: #fbeae9; --feature-ink: #bc5f62; }
.opc-card--communities { --feature-bg: #e7f2eb; --feature-ink: #398b63; }
.opc-card--feature .opc-card-top { display: flex; flex: 0 0 46px; align-items: center; min-height: 0; }
.opc-feature-icon { display: grid; flex: 0 0 43px; width: 43px; height: 43px; place-items: center; border-radius: 12px; background: var(--feature-bg); color: var(--feature-ink); }
.opc-feature-icon svg { width: 23px; height: 23px; }
.opc-card--feature .opc-feature-icon { width: 46px; height: 46px; flex-basis: 46px; background: rgba(255, 255, 255, .72); box-shadow: 0 0 0 1px rgba(31, 58, 85, .045); }
.opc-card--feature .opc-card-arrow { position: absolute; top: 13px; right: 16px; display: grid; width: 28px; height: 28px; place-items: center; border-radius: 8px; color: #8ba2b7; font-size: 18px; line-height: 1; transition: transform 190ms var(--opc-ease), color 190ms var(--opc-ease), background-color 190ms var(--opc-ease); }
.opc-card--feature:hover .opc-card-arrow { color: var(--feature-ink); background: rgba(255, 255, 255, .8); transform: translate(2px, -2px); }
.opc-card-copy { display: flex; flex: 1; flex-direction: column; min-width: 0; }
.opc-card-label { color: var(--feature-ink); font-size: 11px; font-weight: 800; letter-spacing: .02em; }
.opc-card--feature .opc-card-copy { flex: 1 1 auto; justify-content: center; padding-right: 21px; }
.opc-card--feature .opc-card-label { margin-top: 0; font-variant-numeric: tabular-nums; }
.opc-card--feature h3 { margin: 5px 0 5px; font-size: 19px; }
.opc-card--feature p { margin: 0; font-size: 12.5px; line-height: 1.48; -webkit-line-clamp: 2; }
.opc-card h3 { margin: 8px 0 7px; color: #1f3348; font-size: 18px; font-weight: 780; line-height: 1.3; }
.opc-card p { margin: 0; color: #627589; font-size: 13px; line-height: 1.65; -webkit-line-clamp: 2; }
.opc-card small { margin-top: auto; color: #768a9d; font-size: 12px; }
.opc-card--feature .opc-card-end { display: none; }
.opc-card--content:not(.opc-card--resource) { min-height: 294px; }
.opc-card-media { position: relative; display: block; width: 100%; height: 160px; overflow: hidden; background: linear-gradient(135deg, #eaf3f3, #dce6eb); }
.opc-card-media img { display: block; width: 100%; height: 100%; object-fit: cover; outline: 1px solid rgba(0,0,0,.1); outline-offset: -1px; transition: transform 260ms var(--opc-ease); }
.opc-card:hover .opc-card-media img { transform: scale(1.025); }
.opc-card-media--case { display: flex; align-items: center; justify-content: center; background: radial-gradient(circle at 72% 20%, rgba(202, 222, 238, .45), transparent 44%), linear-gradient(135deg, #1d4665, #376f91 68%, #78a3ae); }
.opc-card-media--case::before { position: absolute; inset: 14px; border: 1px solid rgba(255,255,255,.2); border-radius: 8px; content: ''; }
.opc-card-media--case strong { color: rgba(255,255,255,.91); font-family: 'Songti SC', serif; font-size: 52px; font-weight: 500; text-shadow: 0 4px 16px rgba(0,0,0,.12); }
.opc-media-caption { position: absolute; left: 14px; bottom: 12px; padding: 5px 8px; border-radius: 5px; background: rgba(255,255,255,.88); color: #345b79; font-size: 10px; font-weight: 700; }
.opc-card-media--case .opc-media-caption { background: rgba(15,50,76,.64); color: #fff; }
.opc-card--content .opc-card-copy { padding: 17px 18px 0; }
.opc-card--content .opc-card-label { color: #5c83a5; }
.opc-card--content h3 { margin-top: 7px; font-size: 17px; }
.opc-card--content p { font-size: 13px; }
.opc-card--content small { margin-top: 11px; }
.opc-card-end { display: flex; justify-content: space-between; align-items: center; gap: 10px; margin: auto 18px 16px; padding-top: 12px; border-top: 1px solid rgba(26,65,99,.08); color: #346a9f; font-size: 12px; font-weight: 750; }
.opc-card-end span { font-size: 17px; transition: transform 190ms var(--opc-ease); }
.opc-card:hover .opc-card-end span { transform: translateX(3px); }
.opc-card--resource { min-height: 180px; padding: 18px; }
.opc-content-grid--resources { grid-template-columns: minmax(0, 1fr) !important; }
.opc-card--resource { display: grid; grid-column: 1 / -1; grid-template-columns: minmax(0, 1fr) minmax(140px, 180px); grid-template-rows: auto 1fr; align-items: end; column-gap: 24px; }
.opc-card-resource-top { display: flex; align-items: center; gap: 10px; color: #6b8296; font-size: 12px; font-weight: 700; }
.opc-card-resource-top { grid-column: 1 / -1; }
.opc-card-resource-top .opc-feature-icon { flex-basis: 39px; width: 39px; height: 39px; border-radius: 10px; }
.opc-card-resource-top svg { width: 20px; height: 20px; }
.opc-card-status { margin-left: auto; padding: 5px 8px; border-radius: 6px; background: #eef3f6; color: #647a8c; font-size: 11px; white-space: nowrap; }
.opc-card-status--open { background: #e6f5eb; color: #227046; }
.opc-card-status--closed { background: #faeeee; color: #995458; }
.opc-card--resource .opc-card-copy { padding: 5px 0 0; }
.opc-card--resource .opc-card-label { display: none; }
.opc-card--resource h3 { margin-top: 7px; font-size: 18px; }
.opc-card--resource .opc-card-copy { max-width: 63em; }
.opc-card--resource .opc-card-end { grid-column: 2; grid-row: 2; margin: 0 0 3px; }
.opc-empty { border: 1px dashed #d5e2e8; border-radius: 15px; background: rgba(255,255,255,.8); font-size: 14px; }
.opc-empty--feature { display: flex; align-items: center; gap: 20px; padding: 23px; }
.opc-empty--feature .opc-empty-icon { display: grid; flex: 0 0 48px; width: 48px; height: 48px; place-items: center; border-radius: 13px; background: #fdf0e2; color: #b6703e; }
.opc-empty--feature svg { width: 24px; height: 24px; }
.opc-empty--feature strong { color: var(--opc-ink); font-size: 16px; }
.opc-empty--feature p { margin: 4px 0 0; }
.opc-empty--feature a { margin-left: auto; flex: none; font-size: 13px; font-weight: 750; }
.opc-resource-band { position: relative; overflow: hidden; margin-top: 36px; border-radius: 20px; background: linear-gradient(110deg, #183e5e, #2d6684 74%, #5f94a5); box-shadow: 0 12px 30px rgba(35, 82, 117, .11); }
.opc-resource-band::after { position: absolute; right: -35px; bottom: -90px; width: 280px; height: 220px; border: 1px solid rgba(255,255,255,.14); border-radius: 50%; box-shadow: 0 0 0 38px rgba(255,255,255,.035), 0 0 0 85px rgba(255,255,255,.025); pointer-events: none; content: ''; }
.opc-resource-band>* { position: relative; z-index: 1; }
.opc-resource-band .opc-eyebrow { color: #c8dce7; }
.opc-resource-band p { color: #e7f0f4; font-size: 14px; }
.opc-resource-band a { min-height: 44px; align-items: center; border-radius: 10px; transition: background-color 170ms var(--opc-ease); }
.opc-breadcrumb { color: #8798a6; font-size: 12px; }
.opc-page-title { margin: 27px 0 23px; }
.opc-page-title .opc-eyebrow { color: #6a8da8; }
.opc-page-title h1,.opc-resource-detail h1 { color: #1f3245; font-family: 'Songti SC','Noto Serif CJK SC',serif; font-size: clamp(33px, 3vw, 48px); font-weight: 700; letter-spacing: -.045em; }
.opc-page-title p,.opc-resource-detail>header p { color: #607486; font-size: 15px; }
.opc-filter { padding: 19px; border: 0; border-radius: 16px; box-shadow: var(--opc-shadow); }
.opc-filter input,.opc-filter select { min-height: 44px; border-color: #d7e2e9; border-radius: 9px; font-size: 13px; }
.opc-filter input:focus,.opc-filter select:focus { border-color: #7baeee; }
.opc-count { margin: 0 0 17px; font-size: 13px; font-variant-numeric: tabular-nums; }
.opc-count strong { color: #245fba; font-weight: 800; }
.opc-pagination a { width: 42px; height: 42px; border-radius: 9px; }
.opc-resource-detail>header { padding: 34px; border: 0; border-radius: 20px; background: linear-gradient(120deg, #fff, #e9f2f5); box-shadow: var(--opc-shadow); }
.opc-detail-layout>div>section,.opc-detail-layout>aside,.opc-correction { border: 0; border-radius: 16px; box-shadow: var(--opc-shadow); }
.opc-detail-layout>div>section h2 { margin-bottom: 14px; }
.opc-detail-layout p { max-width: 43em; font-size: 15px; line-height: 1.82; }
.opc-detail-layout>aside { position: sticky; top: 94px; }
.opc-detail-layout dl { font-size: 13px; }
.opc-detail-layout dd { color: #334a60; }
.opc-status { padding: 5px 10px; border-radius: 7px; }
.opc-save { min-height: 44px; border-radius: 9px; font-size: 13px; }
.opc-save:active,.opc-mobile-more:active { scale: .96; }
.opc-correction textarea { border-radius: 9px; }
.opc-footer { color: #8193a2; }
/* Related legacy sections keep their data and page templates, but share surface polish. */
body.baiye-shell :is(.baiye-card,.zmt-case-card) { border-radius: 17px; box-shadow: 0 0 0 1px rgba(23,55,83,.06), 0 6px 24px rgba(23,55,83,.055); transition: box-shadow 190ms cubic-bezier(.2,0,0,1), transform 190ms cubic-bezier(.2,0,0,1); }
body.baiye-shell :is(.baiye-card,.zmt-case-card):hover { transform: translateY(-3px); box-shadow: 0 0 0 1px rgba(37,91,155,.11), 0 18px 36px rgba(23,55,83,.1); }
.opc-legacy-nav { min-height: 51px; background: #f7f9f9; border-bottom-color: #e2e9ed; }
.opc-legacy-nav a { display: inline-flex; align-items: center; min-height: 36px; border-radius: 9px; font-size: 13px; }
@container (min-width: 760px) { .opc-feature-grid { grid-template-columns: repeat(3,minmax(0,1fr)); } }
@container (min-width: 950px) { .opc-content-grid { grid-template-columns: repeat(3,minmax(0,1fr)); } }
@container (min-width: 1320px) { .opc-content-grid { grid-template-columns: repeat(4,minmax(0,1fr)); } }
@container (min-width: 1800px) { .opc-content-grid { grid-template-columns: repeat(5,minmax(0,1fr)); } }
@container (min-width: 2300px) { .opc-content-grid { grid-template-columns: repeat(5,minmax(0,1fr)); } }
@media (min-width: 768px) { .opc-base-page { --opc-gutter: 24px; } }
@media (min-width: 1200px) { .opc-base-page { --opc-gutter: 32px; --opc-sidebar: 224px; } .opc-base-main { padding-top: 24px; } .opc-mobile-nav,.opc-mobile-drawer { display: none !important; } }
@media (min-width: 1600px) { .opc-base-page { --opc-gutter: 48px; --opc-sidebar: 232px; --opc-gap: 32px; } }
@media (min-width: 2200px) { .opc-base-page { --opc-gutter: 64px; } }
@media (max-width: 1199px) { .opc-base-main { padding-top: 14px; } }
@media (max-width: 900px) { .opc-detail-layout>aside { position: static; } .opc-hero { min-height: 330px; } .opc-hero-copy { max-width: 66%; } .opc-hero-vertical { display: none; } }
@media (max-width: 599px) { .opc-hero { min-height: 355px; padding: 27px 22px; border-radius: 18px; background-image: linear-gradient(90deg, rgba(250,251,250,.94), rgba(250,251,250,.75) 70%, rgba(250,251,250,.48)), url('opc-hero-mountains.jpg'); background-position: right center; background-size: auto 100%; } .opc-hero-copy { max-width: 100%; } .opc-hero h1 { font-size: clamp(32px, 8.5vw, 39px); } .opc-hero p { max-width: 26em; font-size: 14px; } .opc-hero-actions { gap: 9px; } .opc-hero-actions .opc-button { min-height: 42px; padding: 9px 14px; font-size: 12px; } .opc-section { margin-top: 28px; } .opc-section--features { margin-top: 22px; } .opc-section-head h2 { font-size: 22px; } .opc-feature-grid { gap: 10px; } .opc-feature-grid .opc-card--feature { min-height: 184px; padding: 14px; } .opc-card--feature .opc-feature-icon { width: 36px; height: 36px; flex-basis: 36px; border-radius: 10px; } .opc-card--feature svg { width: 19px; height: 19px; } .opc-card--feature h3 { font-size: 16px; } .opc-card--feature p { font-size: 12px; -webkit-line-clamp: 3; } .opc-card--feature .opc-card-label { margin-top: 9px; font-size: 10px; } .opc-card--resource { grid-template-columns: minmax(0, 1fr); } .opc-card--resource .opc-card-resource-top { grid-column: 1; } .opc-card--resource .opc-card-end { grid-column: 1; grid-row: auto; margin-top: 14px; } .opc-empty--feature { flex-wrap: wrap; gap: 12px; } .opc-empty--feature a { margin-left: 0; } .opc-resource-band { padding: 25px; } .opc-resource-detail>header { padding: 25px; } .opc-filter { padding: 14px; } }
@media (max-width: 360px) { .opc-feature-grid { grid-template-columns: 1fr; } .opc-hero h1 { font-size: 32px; } .opc-hero-actions .opc-button { padding-inline: 11px; } }
@media (max-width: 599px) { .opc-feature-grid { grid-template-columns: 1fr; } .opc-feature-grid .opc-card--feature { min-height: 104px; padding: 13px 15px; gap: 12px; } .opc-card--feature .opc-card-top { flex-basis: 38px; } .opc-card--feature .opc-feature-icon { width: 38px; height: 38px; flex-basis: 38px; } .opc-card--feature .opc-card-label { margin-top: 0; } .opc-card--feature h3 { margin: 4px 0; font-size: 16px; } .opc-card--feature p { -webkit-line-clamp: 2; } .opc-card--feature .opc-card-arrow { top: 11px; right: 11px; } }
@media (hover: none) { .opc-card:hover { transform: none; } .opc-card:hover .opc-card-media img { transform: none; } }
@media (prefers-reduced-motion: reduce) { .opc-base-page *,.opc-base-page *::before,.opc-base-page *::after,body.baiye-shell :is(.baiye-card,.zmt-case-card) { animation-duration: .01ms !important; transition-duration: .01ms !important; scroll-behavior: auto !important; } }

/* Resource surfaces. Scoped to the policy / community feed, not the project libraries. */
.opc-feed { --feed-accent:#315d85; --feed-deep:#18374c; --feed-soft:#eaf0f5; --feed-line:rgba(38,67,87,.12); --feed-muted:#697b87; color:#253c4c; -webkit-font-smoothing:antialiased; }
.opc-feed--communities { --feed-accent:#267461; --feed-deep:#153e39; --feed-soft:#eaf2ee; --feed-line:rgba(39,91,73,.13); }
.opc-feed-header { position:relative; isolation:isolate; display:flex; align-items:center; justify-content:space-between; gap:32px; min-height:178px; padding:30px 36px; overflow:hidden; border:1px solid #ffffff24; border-radius:20px; color:#fff; background:radial-gradient(ellipse at 85% 0%,#527d994d,transparent 70%),linear-gradient(115deg,#173346,#244b64); box-shadow:inset 0 1px 0 #ffffff12,0 3px 6px #213f5410,0 15px 30px #213f5410; }
.opc-feed--communities .opc-feed-header { background:radial-gradient(ellipse at 85% 0%,#7db39b38,transparent 70%),linear-gradient(115deg,#163c36,#2d5b50); }
.opc-feed-header::before,.opc-feed-header::after { position:absolute; z-index:-1; pointer-events:none; content:''; border:1px solid #b3d6e61a; border-radius:50%; width:440px; height:440px; right:4%; top:-228px; }
.opc-feed-header::before { box-shadow:0 0 0 42px #adcce608,0 0 0 84px #adcce608,0 0 0 126px #adcce605; }
.opc-feed-header::after { width:310px; height:310px; right:-130px; top:30px; border-color:#b3d6e614; }
.opc-feed-intro { min-width:0; }
.opc-feed-header .opc-eyebrow { display:flex; align-items:center; gap:9px; color:#b7cbd6; font-size:10px; font-weight:600; letter-spacing:.15em; }
.opc-feed-header .opc-eyebrow i { flex:none; width:6px; height:6px; border-radius:50%; background:#b4d4ea; box-shadow:0 0 0 4px #b4d4ea12; }
.opc-feed--communities .opc-feed-header .opc-eyebrow { color:#b8d4c7; }
.opc-feed--communities .opc-feed-header .opc-eyebrow i { background:#aad4b8; }
.opc-feed-header h1 { margin:13px 0 10px; color:#fff; font:600 36px/1.15 'Songti SC','Noto Serif CJK SC',serif; letter-spacing:.025em; text-wrap:balance; }
.opc-feed-header p { margin:0; color:#c1d0d9; font-size:13px; line-height:1.8; }
.opc-feed--communities .opc-feed-header p { color:#c5d8ce; }
.opc-feed-stats { display:flex; flex:none; align-items:center; gap:32px; padding:8px 0 8px 28px; border-left:1px solid #ffffff26; }
.opc-feed-stat { min-width:80px; display:flex; flex-direction:column; gap:9px; }
.opc-feed-stat strong { color:#f4f4e8; font:400 48px/.95 Georgia,serif; font-variant-numeric:tabular-nums; letter-spacing:-.04em; }
.opc-feed-stat span { color:#c6d7df; font-size:11px; letter-spacing:.06em; }
.opc-feed--communities .opc-feed-stat span { color:#cadbd1; }
.opc-feed-controls { margin-top:20px; padding:17px 20px 12px; border:1px solid var(--feed-line); border-radius:16px; background:#ffffffc7; box-shadow:0 2px 4px #203b4d03,0 6px 18px #203b4d03; }
.opc-feed-tabs { display:flex; align-items:center; gap:5px; width:fit-content; max-width:100%; padding:4px; margin:0 0 15px; border-radius:11px; background:#edf2ef; }
.opc-feed-tabs a { display:inline-flex; align-items:center; justify-content:center; gap:10px; min-height:40px; padding:0 20px; border-radius:8px; color:#64796f; font-size:13px; transition:background-color 160ms ease,color 160ms ease,box-shadow 160ms ease; }
.opc-feed-tabs span { color:#7b9285; font-size:11px; font-variant-numeric:tabular-nums; }
.opc-feed-tabs a[aria-current] { color:var(--feed-deep); background:#fff; box-shadow:0 1px 3px #20433413,0 2px 5px #20433406; font-weight:700; }
.opc-feed-tabs a[aria-current] span { color:var(--feed-accent); }
.opc-feed-filter { display:grid; grid-template-columns:minmax(0,1fr) minmax(120px,180px) 140px auto; align-items:center; gap:10px; margin:0; }
.opc-feed-filter label { min-width:0; margin:0; }
.opc-feed-filter input,.opc-feed-filter select { width:100%; height:44px; min-width:0; padding:0 12px; border:1px solid #dbe4e8; border-radius:9px; background:#f8fafb; color:#385365; font:inherit; font-size:13px; transition:border-color 160ms ease,box-shadow 160ms ease; }
.opc-feed-filter input::placeholder { color:#83939e; }
.opc-feed-filter input:focus,.opc-feed-filter select:focus { outline:2px solid var(--feed-accent); outline-offset:2px; background:#fff; }
.opc-feed-search { display:flex; align-items:center; position:relative; }
.opc-feed-search svg { position:absolute; left:14px; width:18px; height:18px; color:#8195a0; pointer-events:none; }
.opc-feed-search input { padding-left:42px; }
.opc-feed-filter .opc-button { height:44px; min-width:86px; margin:0; padding:0 22px; border-radius:9px; background:var(--feed-deep); border-color:var(--feed-deep); color:#fff; box-shadow:0 2px 4px #163d4220,inset 0 1px 0 #ffffff12; }
.opc-feed-filter .opc-button:hover { background:var(--feed-accent); border-color:var(--feed-accent); transform:none; }
.opc-feed-regions { display:flex; flex-wrap:wrap; align-items:center; gap:0 5px; margin:9px 0 0; }
.opc-feed-regions a { display:inline-flex; gap:7px; align-items:center; min-height:40px; padding:0 10px; border-radius:7px; color:#6c7d86; font-size:12px; transition:background-color 160ms ease,color 160ms ease; }
.opc-feed-regions small { color:#85969e; font-size:10px; font-variant-numeric:tabular-nums; }
.opc-feed-regions a:hover,.opc-feed-regions a[aria-current] { color:var(--feed-accent); background:var(--feed-soft); }
.opc-feed-regions a[aria-current] { font-weight:700; }
.opc-feed-toolbar { display:flex; align-items:center; gap:16px; flex-wrap:wrap; margin:24px 0 14px; color:var(--feed-muted); font-size:11px; min-height:42px; }
.opc-feed-toolbar p { display:flex; align-items:center; gap:9px; margin:0; }
.opc-feed-results-title { color:var(--feed-deep); font-size:17px; font-weight:700; letter-spacing:-.015em; }
.opc-feed-result-count { padding:2px 7px; border-radius:5px; color:var(--feed-accent); background:var(--feed-soft); font-size:11px; font-weight:650; font-variant-numeric:tabular-nums; }
.opc-feed-clear { display:inline-flex; align-items:center; min-height:40px; margin-left:5px; color:var(--feed-accent); font-size:11px; }
.opc-feed-updated { margin-left:auto; color:#7b8c94; font-variant-numeric:tabular-nums; }
.opc-feed-views { display:flex; gap:2px; padding:3px; border:1px solid var(--feed-line); border-radius:9px; background:#eaf0f3; }
.opc-feed-views a { display:inline-flex; align-items:center; justify-content:center; min-width:58px; min-height:40px; padding:0 10px; border-radius:6px; color:#738491; font-size:11px; transition:background-color 160ms ease,color 160ms ease; }
.opc-feed-views a[aria-current] { color:var(--feed-accent); background:#fff; box-shadow:0 1px 3px #1d3a5010; font-weight:700; }
.opc-feed-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:18px; }
.opc-feed-card { position:relative; min-width:0; display:flex; flex-direction:column; padding:22px 23px 0; border:1px solid var(--feed-line); border-radius:16px; background:linear-gradient(160deg,#fff 55%,#f3f6f8); box-shadow:0 1px 2px #18374804,0 4px 12px #18374804; transition:box-shadow 180ms ease,border-color 180ms ease,transform 180ms ease; }
.opc-feed-card-top { display:flex; justify-content:space-between; align-items:center; gap:10px; margin-bottom:16px; }
.opc-feed-category { display:inline-flex; align-items:center; gap:8px; color:var(--feed-accent); font-size:11px; font-weight:650; }
.opc-news-layout .opc-feed-card::after { content:""; position:absolute; top:-1px; left:23px; width:32px; height:2px; background:var(--feed-accent); opacity:.7; border-radius:0 0 2px 2px; }
.opc-feed-category svg { width:31px; height:31px; padding:7px; border:1px solid #315d850c; border-radius:9px; background:var(--feed-soft); }
.opc-feed-card-meta { flex:none; color:#80919a; font-size:10px; font-variant-numeric:tabular-nums; }
.opc-feed-card h2 { display:-webkit-box; overflow:hidden; -webkit-box-orient:vertical; -webkit-line-clamp:3; min-height:4.65em; margin:0 0 13px; color:#263c4a; font-size:18px; font-weight:650; line-height:1.55; letter-spacing:-.018em; text-wrap:pretty; overflow-wrap:anywhere; }
.opc-feed-card h2 a { color:inherit; transition:color 160ms ease; }
.opc-feed-card h2 a:hover { color:var(--feed-accent); }
.opc-feed-location { display:flex; align-items:center; gap:5px; margin:0 0 13px; color:var(--feed-accent); font-size:11px; line-height:1.6; }
.opc-feed-location svg { flex:none; width:14px; height:14px; }
.opc-feed-summary { display:-webkit-box; overflow:hidden; -webkit-box-orient:vertical; -webkit-line-clamp:3; margin:0 0 15px; color:#5e707c; font-size:13px; line-height:1.85; text-wrap:pretty; }
.opc-feed-address { display:-webkit-box; overflow:hidden; -webkit-box-orient:vertical; -webkit-line-clamp:2; margin:0 0 10px; color:#687e73; font-size:12px; line-height:1.7; }
.opc-feed-tags { display:flex; flex-wrap:wrap; gap:4px 7px; margin:0 0 14px; }
.opc-feed-tags a { display:inline-flex; align-items:center; min-height:40px; padding:0 7px; border-radius:6px; background:#edf2f5; color:#5e778b; font-size:11px; transition:color 160ms ease; }
.opc-feed-tags a::before { content:'#'; margin-right:3px; color:#a4b4bd; }
.opc-feed-tags a:hover { color:var(--feed-deep); text-decoration:underline; text-underline-offset:3px; }
.opc-feed-card footer { display:flex; align-items:center; justify-content:space-between; gap:10px; margin-top:auto; min-height:56px; border-top:1px solid var(--feed-line); color:#73858f; font-size:11px; }
.opc-feed-card footer>span { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.opc-feed-card footer>a { display:inline-flex; flex:none; align-items:center; gap:10px; min-height:44px; color:var(--feed-accent); font-size:11px; font-weight:600; }
.opc-feed-card footer>a span { display:grid; place-items:center; width:26px; height:26px; border:1px solid var(--feed-line); border-radius:50%; font:15px/1 system-ui,sans-serif; transition:background-color 180ms ease,color 180ms ease,transform 180ms ease; }
.opc-community-layout { display:grid; grid-template-columns:290px minmax(0,1fr); gap:20px; align-items:start; }
.opc-community-layout .opc-feed-grid { grid-template-columns:minmax(0,1fr); gap:16px; }
.opc-feed-card--place { padding:0 21px; background:linear-gradient(160deg,#fff 65%,#f3f7f3); }
.opc-feed-card--place .opc-feed-card-top { position:relative; margin:0 -21px 18px; padding:16px 21px; border-bottom:1px solid var(--feed-line); border-radius:15px 15px 0 0; background:linear-gradient(115deg,#eef3ec,#e6eee9); }
.opc-place-city { display:inline-flex; align-items:center; gap:9px; color:#2f6554; }
.opc-place-city svg { width:23px; height:23px; padding:4px; border-radius:5px; background:#d5e4d7; color:#396d58; }
.opc-place-city strong { font:600 18px/1.1 'Songti SC',serif; letter-spacing:.025em; }
.opc-place-type { display:inline-flex; align-items:center; padding:4px 9px; border:1px solid #718c772e; border-radius:5px; color:#667e6d; background:#ffffff55; font-size:10px; }
.opc-feed-card--place h2 { min-height:0; font-size:18px; margin-bottom:10px; }
.opc-feed-card--place .opc-feed-location { margin-bottom:8px; font-size:11px; color:#527363; }
.opc-feed-card--place .opc-feed-summary { color:#536f60; margin-top:4px; padding-top:11px; border-top:1px dashed #56736526; }
.opc-community-atlas { min-width:0; overflow:hidden; padding:23px 20px 18px; border:1px solid #ffffff14; border-radius:16px; background:radial-gradient(ellipse at 100% 40%,#376b553b,transparent 75%),#193d36; box-shadow:0 3px 7px #1b453a0c,0 12px 28px #1b453a0a; }
.opc-atlas-label { display:flex; justify-content:space-between; align-items:center; margin-bottom:13px; color:#96b7a4; font:500 9px/1.4 system-ui,sans-serif; letter-spacing:.15em; }
.opc-atlas-label>span { font-size:19px; color:#b2c4ad; }
.opc-community-map summary { display:flex; flex-direction:column; gap:9px; cursor:pointer; min-height:55px; color:#f0f1df; list-style:none; }
.opc-community-map summary::-webkit-details-marker { display:none; }
.opc-community-map summary strong { font:500 18px/1.4 'Songti SC',serif; letter-spacing:.01em; }
.opc-community-map summary span { display:flex; justify-content:space-between; color:#93b3a2; font-size:11px; }
.opc-community-map summary i { font:16px/1 system-ui,sans-serif; transition:transform 180ms ease; }
.opc-community-map:not([open]) summary i { transform:rotate(-90deg); }
.opc-community-map svg { display:block; width:100%; height:auto; margin:10px 0; }
.opc-community-map svg a:focus-visible { outline:none; }
.opc-map-land { fill:#31594b; stroke:#6b9078; stroke-width:1.4; transition:fill 170ms ease; }
.opc-map-land.has-places { fill:#6a9375; }
.opc-community-map svg a:hover .opc-map-land,.opc-community-map svg a:focus-visible .opc-map-land { fill:#a1bf8e; }
.opc-map-city circle { fill:#e4d5a1; stroke:#183e32; stroke-width:3; transition:fill 170ms ease,stroke-width 170ms ease; }
.opc-map-city:hover circle,.opc-map-city:focus-visible circle { fill:#fff1b6; stroke:#faf6d9; stroke-width:5; }
.opc-map-city text { text-anchor:middle; font-size:13px; font-family:system-ui,sans-serif; fill:#284937; pointer-events:none; font-weight:700; }
.opc-map-inset rect { fill:#1c4135; stroke:#73907a; stroke-width:1.5; }
.opc-map-inset path { fill:#6f947a; stroke:#adc0a1; stroke-width:1; }
.opc-map-inset .opc-map-dash { fill:none; stroke:#a6b996; stroke-width:2; }
.opc-map-inset text { text-anchor:middle; fill:#c1cfb3; font-size:12px; }
.opc-map-legend { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:8px; margin:8px 0; color:#b8cbb8; font-size:10px; }
.opc-map-legend span:first-child { display:flex; gap:6px; align-items:center; }
.opc-map-legend i { width:6px; height:6px; border-radius:50%; background:#e4d5a1; }
.opc-community-map p { margin:10px 0 17px; color:#93ad9b; font-size:10px; line-height:1.7; }
.opc-map-city-list { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:3px 5px; padding-top:17px; border-top:1px solid #a9c8ad26; }
.opc-map-city-list>span { grid-column:1/-1; margin-bottom:7px; color:#a8c0ab; font-size:10px; letter-spacing:.04em; }
.opc-map-city-list a { display:flex; align-items:center; justify-content:space-between; gap:3px; min-height:40px; padding:0 8px; border:1px solid #b5cdb41c; border-radius:6px; color:#d4dfcc; font-size:11px; transition:background-color 160ms ease,color 160ms ease; }
.opc-map-city-list small { color:#96b398; font-size:10px; font-variant-numeric:tabular-nums; }
.opc-map-city-list a:hover,.opc-map-city-list a[aria-current] { color:#f5f6df; background:#b5c4a62b; border-color:#b5cdb449; }
.opc-feed-grid--timeline { display:flex; flex-direction:column; gap:0; padding-left:26px; border-left:1px solid #bfd0dc; margin-left:7px; }
.opc-feed-grid--timeline .opc-feed-card { position:relative; margin-bottom:18px; padding:20px 25px 0; background:#fcfdfe; }
.opc-feed-grid--timeline .opc-feed-card::before { position:absolute; left:-33px; top:31px; width:11px; height:11px; border:3px solid #f5f7f7; border-radius:50%; box-shadow:0 0 0 1px #8ba7bd; background:var(--feed-accent); content:''; }
.opc-feed-grid--timeline .opc-feed-card-top { flex-direction:row-reverse; margin-bottom:9px; }
.opc-feed-grid--timeline .opc-feed-card-top time { color:var(--feed-accent); font-size:13px; font-weight:650; }
.opc-feed-grid--timeline .opc-feed-card h2 { min-height:0; font-size:17px; }
.opc-feed-grid--timeline .opc-feed-summary { -webkit-line-clamp:2; }
.opc-feed-credit { display:flex; justify-content:center; align-items:center; gap:10px; margin-top:25px; color:#8b9ba4; font-size:10px; }
.opc-feed-credit a { display:inline-flex; align-items:center; min-height:40px; color:#698293; }
.opc-feed .opc-pagination { margin-top:25px; }
.opc-feed .opc-pagination a { display:grid; place-items:center; min-width:40px; min-height:40px; padding:0 10px; border-radius:9px; border-color:var(--feed-line); font-size:12px; }
.opc-feed .opc-pagination a[aria-current] { background:var(--feed-deep); border-color:var(--feed-deep); color:#fff; }
.opc-feed :is(a,button):focus-visible,.opc-source-detail a:focus-visible { outline:2px solid #628faf; outline-offset:3px; }
.opc-community-atlas a:focus-visible { outline-color:#e4d5a1; }
@media (hover:hover) and (pointer:fine) {
  .opc-feed-card:hover { transform:translateY(-3px); border-color:#8fa9b54d; box-shadow:0 2px 4px #18374808,0 8px 18px #18374808,0 20px 28px #18374805; }
  .opc-feed-card:hover footer>a span { background:var(--feed-deep); color:#fff; border-color:var(--feed-deep); transform:translate(1px,-1px); }
}
@container (min-width:1080px) {
  .opc-news-layout .opc-feed-grid:not(.opc-feed-grid--timeline) { grid-template-columns:repeat(3,minmax(0,1fr)); }
  .opc-community-layout .opc-feed-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@container (min-width:1650px) {
  .opc-news-layout .opc-feed-grid:not(.opc-feed-grid--timeline) { grid-template-columns:repeat(4,minmax(0,1fr)); }
  .opc-community-layout { grid-template-columns:320px minmax(0,1fr); }
  .opc-community-layout .opc-feed-grid { grid-template-columns:repeat(3,minmax(0,1fr)); }
}
@container (max-width:850px) {
  .opc-feed-header { padding:26px; min-height:168px; gap:24px; }
  .opc-feed-stats { gap:23px; padding-left:22px; }
  .opc-feed-stat { min-width:60px; }
  .opc-feed-stat strong { font-size:40px; }
  .opc-feed-filter { grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto; }
  .opc-feed-search { grid-column:1/-1; }
  .opc-community-layout { grid-template-columns:minmax(0,1fr); }
  .opc-community-map svg { max-height:265px; }
  .opc-community-layout .opc-feed-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .opc-map-city-list { grid-template-columns:repeat(5,minmax(0,1fr)); }
}
@container (max-width:580px) {
  .opc-feed-header { align-items:stretch; flex-direction:column; gap:22px; padding:24px; border-radius:16px; }
  .opc-feed-header h1 { font-size:32px; margin-block:12px 8px; }
  .opc-feed-header p { font-size:12px; }
  .opc-feed-header .opc-eyebrow { font-size:8px; }
  .opc-feed-stats { gap:27px; padding:16px 0 0; border-left:0; border-top:1px solid #ffffff26; }
  .opc-feed-stat { flex-direction:row; align-items:baseline; gap:9px; min-width:0; }
  .opc-feed-stat strong { font-size:29px; }
  .opc-feed-stat span { font-size:10px; }
  .opc-feed-controls { margin-top:14px; padding:13px; border-radius:13px; }
  .opc-feed-tabs { width:100%; margin-bottom:12px; }
  .opc-feed-tabs a { flex:1; padding-inline:10px; font-size:12px; }
  .opc-feed-filter { gap:7px; grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto; }
  .opc-feed-filter .opc-button { min-width:0; padding:0 14px; height:44px; }
  .opc-feed-filter select { padding-inline:9px; font-size:12px; }
  .opc-feed-regions { flex-wrap:nowrap; overflow-x:auto; scrollbar-width:thin; margin-top:10px; padding-bottom:3px; }
  .opc-feed-regions a { flex:none; min-height:40px; padding-inline:9px; font-size:11px; }
  .opc-feed-toolbar { gap:10px; margin-top:17px; }
  .opc-feed-results-title { font-size:15px; }
  .opc-feed-updated { font-size:9px; }
  .opc-feed-toolbar:has(.opc-feed-views) .opc-feed-updated { display:none; }
  .opc-feed-views { margin-left:auto; }
  .opc-feed-views a { min-width:48px; min-height:36px; padding-inline:8px; }
  .opc-feed-grid,.opc-community-layout .opc-feed-grid { grid-template-columns:minmax(0,1fr); gap:13px; }
  .opc-feed-card { padding:19px 19px 0; border-radius:13px; }
  .opc-feed-card h2 { min-height:0; font-size:17px; }
  .opc-feed-card-top { margin-bottom:13px; }
  .opc-feed-summary { font-size:13px; }
  .opc-feed-card--place { padding:0 19px; }
  .opc-feed-card--place .opc-feed-card-top { margin-inline:-19px; padding:15px 19px; border-radius:12px 12px 0 0; }
  .opc-community-atlas { padding:20px 18px; border-radius:13px; }
  .opc-community-map svg { max-height:190px; }
  .opc-map-city-list { display:none; }
  .opc-map-city-list a { min-height:40px; padding-inline:7px; }
  .opc-feed-grid--timeline { padding-left:18px; }
  .opc-feed-grid--timeline .opc-feed-card { padding:17px 18px 0; }
  .opc-feed-grid--timeline .opc-feed-card::before { left:-25px; }
}
@media (prefers-reduced-motion:reduce) { .opc-feed *, .opc-source-detail * { transition:none !important; transform:none !important; } }

.opc-source-detail>header { padding: clamp(22px,3vw,38px); }
.opc-source-detail h1 { max-width: 30em; font-family: inherit; font-size: clamp(25px,2.4vw,36px); line-height: 1.5; letter-spacing: -.025em; text-wrap: pretty; }
.opc-feed-back { display: inline-flex; min-height: 40px; align-items: center; margin: -12px 0 10px; color: #66819a; font-size: 12px; }
.opc-source-byline { margin: 13px 0 18px; color: #7b8c9b; font-size: 12px; }
.opc-source-detail .opc-feed-tags { margin-bottom: 0; }
.opc-source-detail .opc-detail-layout { grid-template-columns: minmax(0,1fr) 258px; gap: 22px; align-items: start; }
.opc-source-detail .opc-detail-layout>aside { position: static; }
.opc-source-detail .opc-source-body { padding: clamp(22px,3vw,38px); }
.opc-source-body p { max-width: none; margin: 0 0 19px; overflow-wrap: anywhere; line-height: 1.95; }
.opc-source-address { margin-top: 24px; padding: 18px; border-left: 3px solid #87baa3; background: #f0f6f3; }
.opc-source-address span { color: #58806a; font-size: 12px; }
.opc-source-address p { margin: 7px 0 0; }
.opc-source-inline { display: inline-flex; min-height: 44px; align-items: center; color: #396ca2; font-size: 13px; }
.opc-source-detail aside dd { overflow-wrap: anywhere; }

@container (max-width:750px) { .opc-source-detail .opc-detail-layout { grid-template-columns:minmax(0,1fr); } }

/* In-place reading: a native modal drawer keeps the underlying list and filters intact. */
html.opc-resource-modal-open,html.opc-resource-modal-open body { overflow:hidden !important; overscroll-behavior:none; }
.opc-feed-card { cursor:pointer; }
dialog.opc-resource-drawer { --drawer-ink:#18374c; --drawer-accent:#315d85; --drawer-soft:#eaf0f5; --feed-deep:#18374c; --feed-accent:#315d85; position:fixed; inset:0; width:min(790px,calc(100vw - 72px)); max-width:none; height:100vh; height:100dvh; max-height:none; margin:0 0 0 auto; padding:0; overflow:hidden; border:0; border-radius:20px 0 0 20px; color:#253c4c; background:#f8fafb; box-shadow:-1px 0 0 #ffffff50,-10px 0 35px #1837471c,-35px 0 95px #1633481f; opacity:1; transform:translateX(0); transition:opacity 180ms ease,transform 220ms cubic-bezier(.2,0,0,1); -webkit-font-smoothing:antialiased; }
dialog.opc-resource-drawer[open] { display:grid; grid-template-rows:auto minmax(0,1fr); }
dialog.opc-resource-drawer[data-kind="communities"] { --drawer-ink:#153e39; --drawer-accent:#267461; --drawer-soft:#eaf2ee; --feed-deep:#153e39; --feed-accent:#267461; background:#f8faf8; }
.opc-resource-drawer::backdrop { background:rgba(18,36,46,.42); backdrop-filter:blur(3px); }
@starting-style { dialog.opc-resource-drawer[open] { opacity:.35; transform:translateX(28px); } }
.opc-resource-drawer-bar { display:flex; align-items:center; justify-content:space-between; gap:16px; padding:17px 26px; border-bottom:1px solid #2d526414; background:#fff; }
.opc-resource-drawer-bar>div { display:flex; align-items:center; gap:11px; }
.opc-resource-drawer-mark { display:grid; place-items:center; width:34px; height:34px; border-radius:9px; color:var(--drawer-accent); background:var(--drawer-soft); font:500 20px/1 'Songti SC',serif; }
.opc-resource-drawer-bar h2 { margin:0; color:var(--drawer-ink); font-size:14px; font-weight:650; letter-spacing:.02em; }
.opc-resource-drawer-close { display:grid; place-items:center; flex:none; width:42px; height:42px; padding:10px; border:1px solid #536e7c14; border-radius:11px; color:#677d8b; background:#f3f6f7; cursor:pointer; transition:background-color 160ms ease,color 160ms ease,scale 120ms ease; }
.opc-resource-drawer-close svg { width:21px; height:21px; }
.opc-resource-drawer-close:hover { color:var(--drawer-ink); background:var(--drawer-soft); }
.opc-resource-drawer-close:active { scale:.96; }
.opc-resource-drawer-body { container-type:inline-size; min-height:0; overflow:auto; overscroll-behavior:contain; scrollbar-width:thin; scrollbar-color:#aebfc6 transparent; padding:30px 34px max(28px,env(safe-area-inset-bottom)); }
.opc-resource-drawer .opc-source-detail { margin:0; }
.opc-resource-drawer .opc-source-detail>header { padding:0 0 24px; border:0; border-bottom:1px solid #2949541c; border-radius:0; background:transparent; box-shadow:none; }
.opc-resource-drawer .opc-source-detail .opc-eyebrow { color:var(--drawer-accent); font-size:11px; line-height:1.8; letter-spacing:.06em; }
.opc-resource-drawer .opc-source-detail h1 { margin:14px 0 16px; color:var(--drawer-ink); font:650 27px/1.5 -apple-system,BlinkMacSystemFont,'PingFang SC','Microsoft YaHei',sans-serif; letter-spacing:-.02em; text-wrap:pretty; overflow-wrap:anywhere; }
.opc-resource-drawer .opc-source-byline { margin:12px 0 17px; color:#74848d; font-size:12px; line-height:1.8; }
.opc-resource-drawer .opc-source-detail>header p { max-width:none; color:#5d7280; font-size:14px; line-height:1.9; }
.opc-resource-drawer .opc-feed-tags { margin-top:15px; }
.opc-resource-drawer .opc-source-detail .opc-detail-layout { display:grid; grid-template-columns:minmax(0,1fr); gap:20px; margin-top:25px; }
.opc-resource-drawer .opc-source-detail .opc-source-body { margin:0; padding:0; border:0; border-radius:0; background:transparent; box-shadow:none; }
.opc-resource-drawer .opc-detail-layout h2 { color:var(--drawer-ink); font-size:17px; margin:0 0 16px; }
.opc-resource-drawer .opc-source-body p { margin:0 0 18px; font-size:15px; line-height:2; color:#435d6b; overflow-wrap:anywhere; }
.opc-resource-drawer .opc-source-address { margin-top:20px; padding:16px 18px; border-left-color:var(--drawer-accent); background:var(--drawer-soft); border-radius:0 9px 9px 0; }
.opc-resource-drawer .opc-source-address p { margin:7px 0 0; font-size:14px; }
.opc-resource-drawer .opc-detail-layout>aside { position:static; margin:0; padding:22px; border:1px solid #29495417; border-radius:13px; background:#fff; box-shadow:0 2px 5px #193d4c03; }
.opc-resource-drawer .opc-detail-layout dl { grid-template-columns:70px minmax(0,1fr); gap:11px 15px; font-size:12px; line-height:1.8; }
.opc-resource-drawer .opc-detail-layout .opc-button,.opc-resource-drawer .opc-resource-error .opc-button { background:var(--drawer-ink); border-color:var(--drawer-ink); }
.opc-resource-drawer .opc-source-inline { color:var(--drawer-accent); }
.opc-resource-drawer :is(a,button,select,input):focus-visible { outline:2px solid var(--drawer-accent); outline-offset:3px; }
.opc-resource-loading { padding:12px 0; }
.opc-resource-loading p { color:#647a87; font-size:14px; }
.opc-resource-loading div { display:grid; gap:18px; margin-top:25px; }
.opc-resource-loading i { display:block; height:17px; border-radius:5px; background:#e5ecef; }
.opc-resource-loading i:first-child { height:31px; width:86%; }
.opc-resource-loading i:nth-child(3) { width:75%; }
.opc-resource-loading i:last-child { height:170px; margin-top:20px; background:linear-gradient(145deg,#edf2f4,#e5ecef); }
.opc-resource-error { padding:45px 10px; text-align:center; }
.opc-resource-error p { margin-bottom:22px; color:#687e8b; font-size:14px; line-height:1.8; }
.opc-resource-action-status { padding:12px; border-radius:8px; background:#fff2e5; color:#865a34; font-size:13px; }
@media (max-width:700px) {
  dialog.opc-resource-drawer { width:100%; border-radius:0; }
  .opc-resource-drawer-bar { padding:max(12px,env(safe-area-inset-top)) 18px 12px; }
  .opc-resource-drawer-body { padding:24px 21px max(24px,env(safe-area-inset-bottom)); }
  .opc-resource-drawer .opc-source-detail h1 { font-size:22px; line-height:1.6; }
  .opc-resource-drawer .opc-source-detail>header p { font-size:13px; }
  .opc-resource-drawer .opc-source-body p { font-size:15px; }
  .opc-resource-drawer .opc-detail-layout>aside { padding:19px; }
}
@media (prefers-reduced-motion:reduce) { dialog.opc-resource-drawer { transition:none; } .opc-resource-drawer * { transition:none !important; } }
