/* Shared public-page design, scoped away from the admin and map applications. */
.portal-renewal { --text:#163c33; --navy:#163c33; --muted:#42584c; --line:#e1e8dd; --green:#147a53; --green-dark:#126747; --cyan:#147a53; margin:0; padding:0; min-height:100vh; background:#fafbf7; color:#163c33; font-family:Pretendard,"Apple SD Gothic Neo","Malgun Gothic",system-ui,sans-serif; }
.portal-renewal * { box-sizing:border-box; }
.portal-renewal :is(input,select,textarea,button) { font-family:inherit; }
.portal-renewal :is(a,button,input,select,textarea):focus-visible { outline:3px solid #91b66a; outline-offset:3px; }
.portal-renewal :is(h1,h2,h3) { color:#163c33; letter-spacing:-.045em; word-break:keep-all; }
.portal-renewal .board-topbar { max-width:none; width:100%; padding:18px max(24px,calc((100% - 1200px)/2)); min-height:86px; gap:20px; background:#fff; border-bottom:1px solid #e1e8dd; }
.portal-renewal .board-brand { gap:12px; }
.portal-renewal .board-brand img { width:44px; height:44px; }
.portal-renewal .board-brand strong { font-size:22px; }
.portal-renewal .board-topbar nav { flex-wrap:wrap; justify-content:flex-end; }
.portal-renewal .board-topbar nav a { font-size:14px; font-weight:650; }
.portal-renewal .board-global-nav { flex-wrap:nowrap; overflow-x:auto; scrollbar-width:thin; padding:12px max(24px,calc((100% - 1200px)/2)); gap:6px; background:#fff; }
.portal-renewal .board-global-nav a { flex:0 0 auto; padding:9px 12px; font-size:14px; font-weight:600; background:transparent; border:1px solid transparent; border-radius:999px; white-space:nowrap; }
.portal-renewal .board-global-nav a:is(.active,:hover) { background:#eaf3de; color:#163c33; border-color:#d9e7c9; }
.portal-renewal .board-page,.portal-renewal .member-dashboard { width:min(1248px,100%); margin:0 auto; padding:40px 24px 72px; }
.portal-renewal .board-hero { grid-template-columns:minmax(0,1fr) minmax(240px,350px); align-items:center; padding:36px; margin-bottom:28px; border:1px solid #dce7cf; border-radius:24px; color:#163c33; background:#eef5e3; }
.portal-renewal .board-hero span { font-size:14px; font-weight:700; color:#147a53; letter-spacing:.09em; }
.portal-renewal .board-hero h1 { font-size:clamp(30px,4vw,42px); font-weight:800; line-height:1.25; margin:12px 0; }
.portal-renewal .board-hero p { font-size:14px; font-weight:400; line-height:1.8; color:#61765f; word-break:keep-all; }
.portal-renewal .board-search { background:#fff; border:1px solid #d5e3cc; border-radius:12px; padding:6px; backdrop-filter:none; }
.portal-renewal .board-search input { font-size:14px; font-weight:400; width:100%; min-width:0; }
.portal-renewal .board-search button { background:#147a53; border-radius:8px; font-size:14px; white-space:nowrap; }
.portal-renewal .board-action-search { padding:0; border:0; background:transparent; }
.portal-renewal .board-action-search button { min-width:128px; }
/* The same destinations remain in the primary menu; avoid displaying it twice. */
.portal-renewal .board-tabs { display:none; }
.portal-renewal .board-shell { grid-template-columns:minmax(0,1fr) 260px; gap:24px; align-items:start; }
.portal-renewal .board-main { min-width:0; padding:30px; border:1px solid #e1e8dd; border-radius:20px; background:#fff; box-shadow:0 12px 32px #163c3304; }
.portal-renewal .board-title { margin-bottom:28px; align-items:start; }
.portal-renewal .board-title h2 { font-size:24px; line-height:1.4; margin:0 0 8px; }
.portal-renewal .board-title p { color:#42584c; font-size:14px; line-height:1.7; font-weight:400; }
.portal-renewal .board-sidebar { gap:16px; }
.portal-renewal .side-card { padding:24px; border-radius:18px; border:1px solid #e1e8dd; box-shadow:none; background:#fff; }
.portal-renewal .side-card h2,.portal-renewal .side-card>strong { font-size:17px; }
.portal-renewal .side-card p { font-size:14px; line-height:1.85; font-weight:400; color:#42584c; }
.portal-renewal .side-card a { border-radius:9px; font-size:14px; }
.portal-renewal .side-card.app-card { background:#163c33; color:white; border-color:#163c33; }
.portal-renewal .side-card.app-card :is(h2,strong) { color:white; }
.portal-renewal .side-card.app-card p { color:#c6d8cd; }
.portal-renewal .side-card.app-card a { background:#d8f596; color:#163c33; }
.portal-renewal .partner-form-card { padding:0; background:transparent; border:0; box-shadow:none; }
.portal-renewal .partner-form-card form { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:22px 18px; }
.portal-renewal .partner-form-card form>label { display:block; min-width:0; }
.portal-renewal .partner-form-card label>span { display:block; font-size:14px; color:#496257; margin-bottom:9px; font-weight:650; }
.portal-renewal :is(.partner-form-card,.board-write-form,.comment-form) :is(input:not([type=radio]):not([type=checkbox]),select,textarea) { width:100%; min-width:0; padding:13px 14px; background:#fcfdfb; color:#163c33; border:1px solid #dbe4d7; border-radius:10px; font-size:15px; font-weight:400; }
.portal-renewal :is(.partner-form-card,.board-write-form,.comment-form) textarea { min-height:180px; resize:vertical; line-height:1.8; }
.portal-renewal .partner-form-card :is(fieldset,form>button,.site-file-field,form>label:has(textarea)) { grid-column:1 / -1; }
.portal-renewal .partner-type-field { margin:4px 0; padding:0; border:0; min-width:0; }
.portal-renewal .partner-type-field legend { padding:0; margin:0 0 12px; font-size:14px; font-weight:700; color:#496257; }
.portal-renewal .partner-type-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; }
.portal-renewal .partner-type-option { position:relative; display:flex; align-items:center; gap:10px; min-height:92px; padding:14px; background:#fff; border:1px solid #e1e8dd; border-radius:12px; cursor:pointer; }
.portal-renewal .partner-type-option:has(input:checked) { background:#f0f6e6; border-color:#8eb474; }
.portal-renewal .partner-type-option input[type=radio] { position:static; width:16px; height:16px; flex:0 0 auto; margin:0; opacity:1; accent-color:#147a53; }
.portal-renewal .partner-type-option .partner-type-mark { display:none; }
.portal-renewal .partner-type-option .partner-type-copy { display:block; margin:0; }
.portal-renewal .partner-type-copy strong { display:block; font-size:14px; color:#163c33; line-height:1.5; }
.portal-renewal .partner-type-copy small { display:block; margin-top:5px; font-size:14px; line-height:1.6; font-weight:400; color:#42584c; }
.portal-renewal :is(.partner-form-card,.board-write-form,.comment-form)>form>button,.portal-renewal :is(.partner-form-card,.board-write-form,.comment-form) button[type=submit] { padding:14px 24px; min-height:48px; border:0; border-radius:10px; background:#147a53; color:#fff; font-size:14px; font-weight:700; cursor:pointer; }
.portal-renewal .partner-form-card form>button { justify-self:start; min-width:160px; }
.portal-renewal .site-file-field { padding:18px; border:1px dashed #cbd9c3; background:#f8faf4; border-radius:12px; }
.portal-renewal .site-file-field small { display:block; margin-top:10px; color:#42584c; font-size:14px; line-height:1.7; }
.portal-renewal .site-file-field input[type=file] { font-size:14px; padding:8px; background:#fff; }
.portal-renewal .board-write-form,.portal-renewal .comment-form { display:grid; gap:18px; }
.portal-renewal .board-write-form label>span { font-size:14px; font-weight:650; }
.portal-renewal :is(.board-write-panel,.post-content,.comment-card,.board-card,.member-panel,.member-mini-panel,.member-stat-grid>div) { border-color:#e1e8dd; border-radius:16px; box-shadow:none; }
.portal-renewal .post-content { line-height:1.9; overflow-wrap:anywhere; }
.portal-renewal .post-content img { max-width:100%; height:auto; }
.portal-renewal .post-title { font-size:clamp(24px,3vw,34px); line-height:1.4; }
.portal-renewal :is(.board-item,.board-list-item) { border-color:#e1e8dd; padding:20px 0; }
.portal-renewal .board-empty { padding:32px 20px; border-radius:14px; background:#f8faf4; }
.portal-renewal :is(.municipality-summary,.operator-summary) { gap:12px; }
.portal-renewal :is(.municipality-summary,.operator-summary)>div { background:#f6f9f0; border:1px solid #e1e8dd; border-radius:12px; box-shadow:none; }
.portal-renewal :is(.municipality-table-wrap,.operator-table-wrap) { max-width:100%; overflow-x:auto; border-radius:12px; border-color:#e1e8dd; }
.portal-renewal :is(.municipality-table,.operator-table) th { background:#f1f5eb; color:#496257; }
.portal-renewal :is(.municipality-table,.operator-table) td { border-color:#e8ede3; }
.portal-renewal :is(.municipality-toolbar,.operator-toolbar) { flex-wrap:wrap; }
.portal-renewal :is(.municipality-toolbar,.operator-toolbar) :is(input,select) { border-radius:9px; min-width:0; max-width:100%; }
.portal-renewal .operator-member-chart-card { border-color:#e1e8dd; border-radius:16px; background:#f8faf4; }
.portal-renewal .member-dashboard-head { margin-bottom:26px; padding:30px; background:#eef5e3; border:1px solid #dce7cf; border-radius:20px; }
.portal-renewal .member-dashboard-head h1 { margin:8px 0 12px; font-size:36px; }
.portal-renewal .member-dashboard-head p { font-size:14px; color:#147a53; letter-spacing:.1em; }
.portal-renewal .member-dashboard-head span { font-size:14px; color:#42584c; }
.portal-renewal .member-side-menu { background:#fff; border-color:#e1e8dd; border-radius:16px; }
.portal-renewal .member-side-menu a.active { background:#eaf3de; color:#163c33; }
.portal-renewal .member-panel { background:#fff; padding:28px; min-width:0; }
.portal-renewal .member-stat-grid>div { background:#f6f9f0; }
.portal-renewal .member-section-head h2 { font-size:24px; }
.portal-renewal .member-profile-form :is(input,select,textarea) { border-radius:10px; background:#fcfdfb; }
.portal-renewal .delete-member-panel { max-width:820px; margin:40px auto 64px; border:1px solid #e1e8dd; border-radius:20px; padding:30px; background:#fff; }
.portal-policy>main { max-width:900px; margin:40px auto 64px; padding:36px; border-color:#e1e8dd; border-radius:20px; }
.portal-policy>main h1 { font-size:28px; }
.portal-policy>main p { color:#496257; font-size:14px; line-height:1.9; }
@media(max-width:1000px) { .portal-renewal .board-shell { grid-template-columns:minmax(0,1fr); } .portal-renewal .board-sidebar { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); } .portal-renewal .board-hero { grid-template-columns:1fr; gap:24px; } .portal-renewal .board-search { max-width:460px; } }
@media(max-width:600px) { .portal-renewal .board-topbar { padding:16px 18px; min-height:76px; } .portal-renewal .board-brand img { width:36px; height:36px; } .portal-renewal .board-brand strong { font-size:19px; } .portal-renewal .board-global-nav { padding:10px 16px; } .portal-renewal .board-page,.portal-renewal .member-dashboard { padding:24px 16px 48px; } .portal-renewal .board-hero { padding:26px 22px; border-radius:20px; margin-bottom:20px; } .portal-renewal .board-hero h1 { font-size:30px; } .portal-renewal .board-main { padding:22px 18px; border-radius:18px; } .portal-renewal .board-title h2 { font-size:22px; } .portal-renewal .board-sidebar { grid-template-columns:1fr; } .portal-renewal .partner-form-card form,.portal-renewal .partner-type-grid { grid-template-columns:1fr; } .portal-renewal .partner-type-option { min-height:76px; } .portal-renewal .partner-form-card form>button { width:100%; } .portal-renewal .member-dashboard-head { padding:24px; } .portal-renewal .member-panel { padding:22px 18px; } .portal-renewal .member-layout { grid-template-columns:minmax(0,1fr); } .portal-renewal .member-side-menu { display:flex; overflow-x:auto; flex-wrap:nowrap; } .portal-renewal .member-side-menu a { flex:0 0 auto; } .portal-renewal .delete-member-panel,.portal-policy>main { margin:24px 16px 40px; padding:24px 20px; } }
/* Give news cards room for a readable headline and image. */
.portal-renewal .board-card-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:18px; }
.portal-renewal .board-card-grid .board-card { padding:18px; }
.portal-renewal .board-card-grid .board-row-body.has-thumb { grid-template-columns:minmax(0,1fr); gap:16px; }
.portal-renewal .board-card-grid .board-row-thumb { width:100%; aspect-ratio:16 / 9; border-radius:10px; }
.portal-renewal .board-card-grid .board-row-content { min-height:150px; }
.portal-renewal .board-card-grid .board-row strong { font-size:19px; line-height:1.5; }
.portal-renewal .board-card-grid .board-row span { font-size:14px; line-height:1.8; color:#42584c; font-weight:400; }
.portal-renewal .board-card-grid .board-row small { font-weight:400; }
.portal-renewal .delete-member-panel { background:transparent; padding:0 20px; border:0; }
.portal-renewal .delete-member-card { box-shadow:none; border-radius:20px; }
@media(max-width:600px) {
 .portal-renewal .board-card-grid { grid-template-columns:minmax(0,1fr); }
 .portal-renewal .board-card-grid .board-row-content { min-height:0; }
 .portal-renewal .delete-member-panel { padding:0; }
 .portal-renewal :is(.delete-member-card,.delete-account-card) { padding:24px 20px; }
 .portal-renewal .delete-member-warning ul { padding-left:20px; }
}
/* Common page typography */
.portal-renewal { font-size:16px; font-weight:500; --muted:#42584c; }
.portal-renewal .board-hero p,.portal-renewal .board-title p,.portal-renewal .side-card p { font-size:16px; line-height:1.85; color:#42584c; font-weight:500; }
.portal-renewal .board-global-nav a { font-size:14px; }
.portal-renewal .partner-form-card label>span,.portal-renewal .partner-type-field legend { font-size:15px; color:#354d41; }
.portal-renewal .partner-type-copy strong { font-size:16px; }
.portal-renewal .partner-type-copy small,.portal-renewal .site-file-field small { font-size:14px; color:#42584c; font-weight:500; }
.portal-renewal .board-card-grid .board-row span { font-size:15px; color:#42584c; font-weight:500; }
.portal-renewal :is(input,textarea)::placeholder { color:#59675f; opacity:1; }
.portal-renewal .side-card.app-card p { color:#e2eee6; }
.portal-renewal .member-dashboard-head span { font-size:16px; color:#42584c; }
.portal-policy>main p { font-size:16px; line-height:1.9; }
/* Let desktop navigation wrap rather than hide the final links off screen. */
@media(min-width:821px) {
 .portal-renewal .board-global-nav { flex-wrap:wrap; overflow-x:visible; row-gap:6px; }
}
/* Shared 1440px content canvas, aligned with the homepage and footer. */
@media(min-width:601px) {
 .portal-renewal .board-topbar { padding-left:max(32px,calc((100% - 1440px)/2)); padding-right:max(32px,calc((100% - 1440px)/2)); }
 .portal-renewal .board-global-nav { padding-left:max(32px,calc((100% - 1440px)/2)); padding-right:max(32px,calc((100% - 1440px)/2)); }
 .portal-renewal .board-page,.portal-renewal .member-dashboard { width:min(1504px,100%); padding-left:32px; padding-right:32px; }
 .portal-policy>main { max-width:1440px; }
}
/* Give all eight operator metrics the entire content width. */
.operator-stats-page .board-shell { grid-template-columns:minmax(0,1fr); }
.operator-stats-page .board-sidebar { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); }
.operator-stats-page .operator-summary { grid-template-columns:repeat(5,minmax(0,1fr)); }
.operator-stats-page .operator-table { min-width:0; table-layout:fixed; }
.operator-stats-page .operator-table th,.operator-stats-page .operator-table td { padding:14px 10px; white-space:normal; overflow-wrap:anywhere; }
.operator-stats-page .operator-table th:first-child { width:5%; }
.operator-stats-page .operator-table th:nth-child(2) { width:20%; }
.operator-stats-page .operator-table th:last-child { width:9%; }
.operator-stats-page .operator-table-wrap { overflow:visible; }
.operator-stats-page .operator-name { line-height:1.6; }
.operator-stats-page .operator-logo { flex-shrink:0; }
.operator-stats-page .operator-metric { display:flex; align-items:flex-end; gap:5px; }
.operator-stats-page .operator-metric small { display:flex; flex-direction:column; gap:2px; color:#42584c; font-size:14px; line-height:1.5; }
.operator-stats-page .operator-metric b { font-size:16px; }
.operator-stats-page .operator-rate { min-width:0; font-size:14px; }
@media(max-width:1100px) { .operator-stats-page .operator-summary { grid-template-columns:repeat(3,minmax(0,1fr)); } }
@media(max-width:900px) {
 .operator-stats-page .board-sidebar { grid-template-columns:1fr; }
 .operator-stats-page .operator-table,.operator-stats-page .operator-table tbody { display:block; width:100%; }
 .operator-stats-page .operator-table thead { position:absolute; width:1px; height:1px; overflow:hidden; clip-path:inset(50%); }
 .operator-stats-page .operator-table tbody tr { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:0 16px; border:1px solid #dce6d7; border-radius:14px; padding:8px 16px; margin-bottom:16px; background:#fff; }
 .operator-stats-page .operator-table td { display:flex; flex-direction:column; gap:6px; padding:12px 0; text-align:left; min-width:0; }
 .operator-stats-page .operator-table td::before { content:attr(data-label); font-size:13px; font-weight:600; color:#42584c; }
 .operator-stats-page .operator-table td:first-child { flex-direction:row; grid-column:1/-1; align-items:center; }
 .operator-stats-page .operator-table td:nth-child(2) { grid-column:1/-1; }
 .operator-stats-page .operator-table td:nth-child(2)::before { display:none; }
 .operator-stats-page .operator-table td[colspan] { grid-column:1/-1; }
 .operator-stats-page .operator-table td[colspan]::before { display:none; }
 .operator-stats-page .operator-metric { align-items:flex-start; }
 .operator-stats-page .operator-rate { align-self:flex-start; }
}
@media(max-width:600px) { .operator-stats-page .operator-summary { grid-template-columns:repeat(2,minmax(0,1fr)); } }
