/*!****************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[14].oneOf[5].use[2]!./node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[14].oneOf[5].use[3]!./node_modules/@servicekorea/ui/src/PasswordVisibilityInput.module.css ***!
  \****************************************************************************************************************************************************************************************************************************************************************************************************************/
.PasswordVisibilityInput_field__zc3va{position:relative;display:flex;align-items:center;min-width:0;width:100%}
.PasswordVisibilityInput_field__zc3va input{box-sizing:border-box;width:100%;min-width:0;--app-control-padding:9px 48px 9px 10px}
.PasswordVisibilityInput_toggle__m85ol{position:absolute;right:4px;top:50%;transform:translateY(-50%);display:flex;align-items:center;justify-content:center;width:36px;height:36px;min-height:36px;padding:0;border:1px solid var(--line-strong);border-radius:var(--radius-sm);cursor:pointer}

/*!*************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[14].oneOf[5].use[2]!./node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[14].oneOf[5].use[3]!./node_modules/@servicekorea/ui/src/WholeStepNumberInput.module.css ***!
  \*************************************************************************************************************************************************************************************************************************************************************************************************************/
.WholeStepNumberInput_container__5BJA3 { position: relative; display: inline-flex; align-items: stretch; width: 100%; min-width: 0; min-height: 0; vertical-align: middle; }
.WholeStepNumberInput_container__5BJA3 .WholeStepNumberInput_input__WCJVg { width: 100%; min-width: 0; --app-control-padding:9px 26px 9px 10px; -webkit-appearance: textfield; appearance: textfield; -moz-appearance: textfield; }
.WholeStepNumberInput_input__WCJVg::-webkit-inner-spin-button, .WholeStepNumberInput_input__WCJVg::-webkit-outer-spin-button { -webkit-appearance: none; margin: 0; }
.WholeStepNumberInput_container__5BJA3 .WholeStepNumberInput_controls__Xbpkp { position: absolute; inset: 2px 2px 2px auto; width: 22px; display: grid; grid-template-rows: repeat(2, minmax(0, 1fr)); grid-gap: 0; gap: 0; }
.WholeStepNumberInput_container__5BJA3 .WholeStepNumberInput_controls__Xbpkp .WholeStepNumberInput_arrow__V1CDy { display: flex; align-items: center; justify-content: center; width: 22px; min-width: 0; height: auto; min-height: 0; margin: 0; padding: 0; border: 0; border-radius: var(--radius-xs); background: transparent; color: var(--text-secondary); box-shadow: none; cursor: pointer; }
.WholeStepNumberInput_container__5BJA3 .WholeStepNumberInput_controls__Xbpkp .WholeStepNumberInput_arrow__V1CDy:hover:not(:disabled) { background: var(--app-action-edit-bg); }
.WholeStepNumberInput_container__5BJA3 .WholeStepNumberInput_controls__Xbpkp .WholeStepNumberInput_arrow__V1CDy:disabled { cursor: default; opacity: .4; }
.WholeStepNumberInput_container__5BJA3 .WholeStepNumberInput_controls__Xbpkp .WholeStepNumberInput_arrow__V1CDy svg { position: static; width: 10px; height: 6px; transform: none; fill: none; stroke: currentColor; stroke-width: 1.5; stroke-linecap: round; stroke-linejoin: round; }

/*!****************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[14].oneOf[5].use[2]!./node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[14].oneOf[5].use[3]!./components/AppInstall.module.css ***!
  \****************************************************************************************************************************************************************************************************************************************************************************/
.AppInstall_content__upXFy{display:grid;grid-gap:var(--app-gutter-narrow);gap:var(--app-gutter-narrow);min-width:0}
.AppInstall_content__upXFy p{margin:0}
.AppInstall_content__upXFy strong+p{margin-top:calc(var(--app-gutter-narrow)/2)}
.AppInstall_qr__RH5ny{display:grid;justify-items:center;grid-gap:var(--app-gutter-narrow);gap:var(--app-gutter-narrow);padding:var(--app-gutter-narrow);border:1px solid var(--line-strong);border-radius:var(--radius-md);background:var(--text-inverse)}
.AppInstall_qr__RH5ny img{width:208px;max-width:100%;height:auto}
.AppInstall_download__zqKvF{width:100%;box-sizing:border-box}
.AppInstall_note__1gK8I{color:var(--text-muted);font-size:var(--app-font-reading)}
.AppInstall_link__jun3f{display:flex;gap:var(--app-gutter-narrow);align-items:center;min-width:0}
.AppInstall_link__jun3f input{width:100%;min-width:0;flex:1 1}
.AppInstall_page__CVcqK{box-sizing:border-box;max-width:520px;margin:var(--app-gutter) auto;padding:var(--app-gutter);border:1px solid var(--line-strong);border-radius:var(--radius-lg);background:var(--text-inverse)}
.AppInstall_page__CVcqK h1{font-size:var(--app-font-section-title)}
.AppInstall_logo__JffDG{display:block;width:190px;max-width:100%;height:auto}
@media(max-width:720px){.AppInstall_qr__RH5ny{display:none}.AppInstall_page__CVcqK{margin:var(--app-gutter-narrow);padding:var(--app-gutter-narrow)}.AppInstall_link__jun3f{flex-wrap:wrap}.AppInstall_link__jun3f input{flex-basis:100%}.AppInstall_link__jun3f button{width:100%}}

/*!********************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[14].oneOf[5].use[2]!./node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[14].oneOf[5].use[3]!./components/PageTransition.module.css ***!
  \********************************************************************************************************************************************************************************************************************************************************************************/
.PageTransition_loading__4RGgt{position:fixed;inset:0;z-index:calc(var(--app-z-modal) + 2);display:flex;align-items:center;justify-content:center;gap:var(--app-gutter-narrow);background:var(--bg-base);color:var(--text-default)}
.PageTransition_pending__nTs6u{visibility:hidden;pointer-events:none}
.PageTransition_failure__u6iRe{position:fixed;inset:0;z-index:calc(var(--app-z-modal) + 2);display:grid;place-content:center;justify-items:center;grid-gap:var(--app-gutter);gap:var(--app-gutter);padding:var(--app-gutter);background:var(--bg-base);color:var(--text-default)}

.PageTransition_loading__4RGgt[data-overlay=true]{background:var(--app-modal-overlay)}
.PageTransition_indicator__dw9Op{display:flex;align-items:center;gap:var(--app-gutter-narrow);padding:var(--app-gutter);border:1px solid var(--line-soft);border-radius:var(--radius-md);background:var(--bg-base)}
.PageTransition_snapshot__2ceQE{position:fixed;inset:0;z-index:calc(var(--app-z-modal) + 1);overflow:hidden;pointer-events:none;background:var(--bg-base)}

/*!***********************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[14].oneOf[10].use[2]!./node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[14].oneOf[10].use[3]!./app/theme.css ***!
  \***********************************************************************************************************************************************************************************************************************************************************/
/* NamaLink site colors (brand: blue/navy symbol with an orange point).
   Shared structure, spacing, type and semantic colors (danger, warning, success,
   disabled) come from shared/web; this file only re-declares brand colors.
   Action roles stay distinct: primary = navy, search = light blue, edit = light teal. */
/* Declared on the body class, not :root: the CSS minifier merges :root rules and could reorder them after the shared defaults. */
.app-ui-root {
  --accent: #1f5fae;
  --accent-strong: #173f73;
  --accent-warm: #e2742b;
  --app-color-focus: #e2742b;
  --app-site-frame-border: #8da7c7;

  --app-panel-header-bg: #1d3b62;
  --app-panel-header-border: #16304f;
  --app-panel-header-title: #ffffff;
  --app-panel-header-description: #d9e5f3;
  --app-list-tabs-bg: #e2ebf6;
  --app-list-tabs-border: #b6c8e0;

  --app-action-primary-bg: #1d4f8c;
  --app-action-primary-fg: #ffffff;
  --app-action-primary-border: #1d4f8c;
  --app-action-primary-hover: #163e70;
  --app-action-edit-bg: #e3f1ef;
  --app-action-edit-fg: #1f5650;
  --app-action-edit-border: #9fc9c3;
  --app-action-edit-hover: #cfe6e2;
  --app-action-choice-bg: #eef3fa;
  --app-action-choice-fg: #24466e;
  --app-action-choice-border: #a9bedb;
  --app-action-choice-hover: #dde8f5;

  --app-modal-header-bg: radial-gradient(circle at 82% 12%, rgba(226, 116, 43, 0.14), transparent 34%), linear-gradient(135deg, #10223a 0%, #173356 52%, #4f6886 100%);
  --app-modal-border: rgba(29, 79, 140, 0.24);
  --app-modal-surface: #f6f8fc;
  --app-modal-body-bg: linear-gradient(180deg, rgba(249, 251, 254, 0.98), rgba(240, 245, 251, 0.98));
  --app-modal-footer-border: rgba(29, 79, 140, 0.12);

  --app-section-header-bg: #e8eef7;
  --app-section-header-border: #cfdbec;
  --app-section-info-bg: #e6f1fb;
  --app-section-info-border: #c3d9ef;
  --app-section-accent-bg: #e1eaf7;
  --app-section-accent-border: #bfd0ea;
  --app-section-warm-bg: #fcefe4;
  --app-section-warm-border: #f0d2b8;
  --app-section-calm-bg: #e6f2f0;
  --app-section-calm-border: #c3ddd8;

  --app-field-label-bg: #e8eef6;
  --app-field-label-border: #c7d4e6;
  --app-field-label-text: #2c4566;
  --app-focus-glow: rgba(29, 79, 140, 0.22);
}

/*!*************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[14].oneOf[10].use[2]!./node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[14].oneOf[10].use[3]!./app/globals.css ***!
  \*************************************************************************************************************************************************************************************************************************************************************/
.environment-banner{box-sizing:border-box;max-width:1400px;margin:16px auto 0;padding:12px 24px;border:1px solid var(--line-strong);border-left:4px solid var(--accent);border-radius:var(--radius-sm);background:var(--text-inverse);color:var(--text-default);font-size:var(--app-font-reading);line-height:var(--app-line-height-reading)}.environment-banner strong{color:var(--text-heading)}.environment-banner p{margin:4px 0 0}@media(max-width:720px){.environment-banner{margin:12px 12px 0;padding:12px}}

.app-ui-root header select[data-workspace-selector]{padding-left:40px;background:var(--app-list-tabs-bg);border-color:var(--app-action-choice-border);color:var(--app-action-choice-fg)}

/* Reserve the vertical scrollbar gutter on every page so centred content does not shift sideways when page height changes. */
html{scrollbar-gutter:stable}

/*!*****************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[14].oneOf[10].use[2]!./node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[14].oneOf[10].use[3]!./node_modules/@servicekorea/ui/src/foundation-tokens.css ***!
  \*****************************************************************************************************************************************************************************************************************************************************************************************************/
:root {
 --app-guide-blue:#245b94;--app-guide-blue-bg:#edf4fd;
 --app-guide-green:#246345;--app-guide-green-bg:#edf7ef;
 --app-guide-violet:#7043a0;--app-guide-violet-bg:#f5effb;
 --app-guide-amber:#885c13;--app-guide-amber-bg:#fff7e6;
 --app-guide-teal:#176a6d;--app-guide-teal-bg:#eaf7f6;
 --app-guide-rose:#a23c64;--app-guide-rose-bg:#fceff4;
 --app-guide-slate:#48596c;--app-guide-slate-bg:#eef2f6;
 --app-guide-indigo:#4a50a0;--app-guide-indigo-bg:#f0f0fc;
 --app-guide-orange:#a25223;--app-guide-orange-bg:#fff1e9;
  --font-sans:
    system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
    "Apple SD Gothic Neo", "Noto Sans KR", "Malgun Gothic", sans-serif;
  --bg-base: #f5f7fa;
  --line-soft: rgba(15, 23, 42, 0.09);
  --line-strong: rgba(15, 23, 42, 0.18);
  /* Design tokens: docs/RESPONSIVE_PAGE_LAYOUT_CODEX_HANDOFF.md#design-tokens */
  --text-heading: #0f172a;
  --text-strong: #111827;
  --text-default: #334155;
  --text-secondary: #475569;
  --text-muted: #64748b;
  --text-inverse: #ffffff;
  --accent: #0f766e;
  --accent-strong: #115e59;
  --accent-warm: #b45309;
  --seller-mobile-navy: #11263b;
  --seller-mobile-slate: #1f3c4c;
  --seller-mobile-teal: #28766f;
  --seller-mobile-page-gutter: 16px;
  --seller-mobile-header-action-gutter: 24px;
  --app-panel-header-bg: #446c57;
  --app-panel-header-border: #365744;
  --app-panel-header-title: #ffffff;
  --app-panel-header-description: #e3eee7;
  --app-list-tabs-bg: #dce9e1;
  --app-list-tabs-border: #b8cdbf;
  --app-list-content-inset: 12px;
  --admin-panel-header-bg: var(--app-panel-header-bg);
  --admin-panel-header-bg-soft: var(--app-panel-header-bg);
  --admin-table-header-bg: #64748b;
  --admin-table-header-text: #ffffff;
  --admin-table-row-hover: #fbf7ef;
  --seller-management-hero-bg: linear-gradient(
    105deg,
    #17283b,
    #214958 62%,
    #829796
  );
  --seller-management-panel-header-bg: linear-gradient(
    90deg,
    #17283b,
    #284a5a 68%,
    #8a9c9b
  );
  --seller-management-table-header-bg: #697d91;
  --seller-management-table-header-text: #ffffff;
  --admin-panel-surface: linear-gradient(
    180deg,
    rgba(255, 253, 249, 0.94),
    rgba(255, 255, 255, 0.82)
  );
  --admin-table-row-height: 54.4px;
  --admin-table-head-height: 45.9px;
  /* Confirmed body/description standard: docs/RESPONSIVE_PAGE_LAYOUT_CODEX_HANDOFF.md#body-description-typography */
  --app-font-reading: 14px;
  --app-line-height-reading: 1.6;
  /* All role tokens share the confirmed 14px minimum; titles and metrics retain their hierarchy. */
  --app-font-page-eyebrow: 14px;
  --app-font-page-title: 19px;
  --app-font-page-description: 14px;
  --app-font-section-title: 14px;
  --app-font-body: 14px;
  --app-font-table-header: 14px;
  --app-font-table-body: 14px;
  --app-font-control: 14px;
  --app-font-button: 14px;
  --app-font-label: 14px;
  --app-font-caption: 14px;
  --app-font-micro: 14px;
  --app-font-metric: 19px;
  --admin-list-font-size: var(--app-font-table-body);
  --admin-dark-control: #172334;
  --success: #15803d;
  --danger: #b91c1c;
  --shadow-md: 0 14px 32px rgba(15, 23, 42, 0.09);
  --shadow-sm: 0 4px 12px rgba(15, 23, 42, 0.06);
  --radius-xl: 16px;
  --radius-lg: 12px;
  --radius-md: 10px;
  --radius-sm: 8px;
  --radius-xs: 6px;
  --radius-pill: 999px;
  --topbar-height: 74.8px;
  --sidebar-width: 255px;
  --content-pad: 20.4px;
  --app-ui-scale: 1;
  --app-ui-scale-inverse: 1;
}

/* Shared style contract: literals belong here, never in feature-page styles. */
:root {
 --app-font-minimum:14px; --app-font-screen-title:26px; --app-font-login-title:24px; --app-font-block-title:22px; --app-font-subtitle:18px;
 --app-color-focus:#b88616;
 --app-action-primary-bg:#254d38; --app-action-primary-fg:#fff; --app-action-primary-border:#254d38; --app-action-primary-hover:#193c29;
 --app-action-secondary-bg:#f1f5f9; --app-action-secondary-fg:#334155; --app-action-secondary-border:#b8c5d2; --app-action-secondary-hover:#e2e8f0;
 --app-action-search-bg:#e5eef9; --app-action-search-fg:#244b78; --app-action-search-border:#a6bfdc; --app-action-search-hover:#d2e1f3;
 --app-action-edit-bg:#e4edde; --app-action-edit-fg:#294d30; --app-action-edit-border:#a3ba98; --app-action-edit-hover:#d1e0c9;
 --app-action-danger-bg:#fee2e2; --app-action-danger-fg:#991b1b; --app-action-danger-border:#e7a5a5; --app-action-danger-hover:#fecaca;
 --app-action-warning-bg:#fff3cd; --app-action-warning-fg:#785414; --app-action-warning-border:#d9bd72; --app-action-warning-hover:#ffe6a0;
 --app-action-choice-bg:#f2f6ee; --app-action-choice-fg:#34513a; --app-action-choice-border:#a5b99b; --app-action-choice-hover:#e1ebda;
 --app-disabled-bg:#e5e7eb; --app-disabled-fg:#667080; --app-disabled-border:#cbd0d8;
 --app-control-height:44px; --app-control-height-compact:32px; --app-checkbox-size:18px; --app-control-padding:9px 10px; --app-field-label-width:112px; --app-field-label-width-narrow:96px;
 --app-field-label-bg:#e9eef0; --app-field-label-border:#cbd7dc; --app-field-label-text:#334b55;
 --app-modal-overlay:rgba(15,23,42,.5); --app-modal-border:rgba(20,83,75,.24); --app-modal-surface:#f6faf8;
 --app-modal-header-bg:radial-gradient(circle at 82% 12%,rgba(130,221,208,.16),transparent 34%),linear-gradient(135deg,#11251f 0%,#17352c 52%,#627260 100%);
 --app-modal-header-border:rgba(255,255,255,.16); --app-modal-close-bg:rgba(255,255,255,.14); --app-modal-close-border:rgba(255,255,255,.36);
 --app-modal-body-bg:linear-gradient(180deg,rgba(249,252,251,.98),rgba(240,247,245,.98));
 --app-modal-footer-bg:linear-gradient(180deg,rgba(255,252,246,.98),rgba(246,250,248,.98)); --app-modal-footer-border:rgba(15,118,110,.12);
 --app-modal-shadow:0 26px 70px rgba(15,23,42,.34); --app-modal-sm:500px; --app-modal-md:760px; --app-modal-lg:920px; --app-modal-xl:1120px;
 --app-crop-mask:rgba(0,0,0,.45); --app-canvas-outline:#142c45; --app-z-modal:1800;
}

/* Letter spacing (tracking): body text keeps the font default; text inside boxes
   (buttons, tabs, field labels, status boxes) is tightened slightly to sit evenly
   in the box; titles are tightened a little more. Screens must not set their own. */
:root{--app-tracking-body:0;--app-tracking-control:-0.01em;--app-tracking-title:-0.02em}

/* Text buttons share one minimum width so short labels (저장, 취소, 확인) stay easy to see and tap. */
:root{--app-button-min-width:96px}
:root{--app-category-blue:#1F5FAE;--app-category-blue-bg:#E4EEFD;--app-category-green:#1E6B44;--app-category-green-bg:#E3F4EA;--app-category-purple:#5B3FA0;--app-category-purple-bg:#EEE8FA;--app-floating-width:480px;--app-activity-avatar:32px}

/* Titled section boxes: the title band gets a tint so it separates from the content.
   Several boxes on one screen pick a tone that suits their content via
   data-section-tone (info, accent, warm, calm). Sites override these in theme.css. */
:root{
 --app-section-header-bg:#eef2f6;--app-section-header-border:#d9e1ea;--app-section-header-text:var(--text-heading);
 --app-section-info-bg:#e8f0fa;--app-section-info-border:#c9d9ee;
 --app-section-accent-bg:#e6f2ef;--app-section-accent-border:#c4ddd7;
 --app-section-warm-bg:#fbf1e6;--app-section-warm-border:#ecd5b8;
 --app-section-calm-bg:#eef4ea;--app-section-calm-border:#d3e2c9
}

/* Common style spec (docs/RESPONSIVE_PAGE_LAYOUT_CODEX_HANDOFF.md#common-style-spec).
   Input widths by field kind, list/table geometry, layout widths. */
:root{
 --app-input-short:160px;--app-input-medium:280px;--app-search-width:320px;
 --app-table-row-height:48px;--app-content-max:1200px;--app-gutter:24px;--app-gutter-narrow:16px;
 --app-topbar-height:64px;--app-bottom-nav-height:64px;
 --app-message-autoclose:2s
}
/* Site-colored icon square and focus glow; sites override in theme.css. */
/* Icon squares and the focus ring use --app-action-primary-bg directly: an alias declared on :root would resolve to the shared default before the site theme on .app-ui-root applies. */
:root{--app-icon-tile-fg:#fff;--app-focus-glow:rgba(37,77,56,.22)}
/* Error highlight, holidays, skeleton and the leave/danger icon use fixed semantic colors. */
:root{--app-field-error-border:#c62828;--app-field-error-glow:rgba(198,40,40,.16);--app-required-mark:#c62828;--app-holiday:#c62828;--app-skeleton-base:#e7ebf0;--app-skeleton-shine:#f3f5f8;--app-danger-icon-bg:#fdecec;--app-danger-icon-fg:#c62828;--app-overlay-soft:rgba(15,23,42,.06)}
/* Status badges: fixed meaning colors, independent of the site theme. */
:root{
 --app-badge-active-bg:#e5f4ea;--app-badge-active-fg:#1d6b38;--app-badge-active-dot:#2e9b55;
 --app-badge-waiting-bg:#fdf3d8;--app-badge-waiting-fg:#7a5410;--app-badge-waiting-dot:#d39a17;
 --app-badge-ended-bg:#eceff3;--app-badge-ended-fg:#4b5563;--app-badge-ended-dot:#8a94a3;
 --app-badge-error-bg:#fde8e8;--app-badge-error-fg:#9b1c1c;--app-badge-error-dot:#d64545;
 --app-badge-info-bg:#e6f0fb;--app-badge-info-fg:#1e4f8a;--app-badge-info-dot:#3b7dd8
}

/* Informational note surfaces, shared by public policies and detail panels. */
:root{--app-note-border:#C9DDF7;--app-note-bg:#EAF3FF;--app-note-fg:#1F4E7A;--app-note-neutral-bg:#F3F6FA;--app-note-neutral-border:#DDE4EE;--app-note-warning-bg:#FFF6E5;--app-note-warning-border:#F1D9A6;--app-note-warning-fg:#7A4E12;}

:root{--app-media-control-bg:rgba(255,255,255,.82);--app-media-control-active-bg:rgba(225,237,252,.9)}

/*!******************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[14].oneOf[10].use[2]!./node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[14].oneOf[10].use[3]!./node_modules/@servicekorea/ui/src/tokens.css ***!
  \******************************************************************************************************************************************************************************************************************************************************************************************/
/* Compatibility names resolve to the canonical foundation tokens. */
:root{--sk-font-body:var(--app-font-reading);--sk-line-body:var(--app-line-height-reading);--sk-font-title:var(--app-font-page-title);--sk-color-text:var(--text-default);--sk-color-muted:var(--text-muted);--sk-color-surface:var(--text-inverse);--sk-color-page:var(--bg-base);--sk-color-accent:var(--accent)}
/* Wrap Korean text between words, never inside a word; break only unbreakable long strings (URLs, IDs). */
html,body{margin:0;background:var(--bg-base);color:var(--text-default);font-size:var(--app-font-reading);line-height:var(--app-line-height-reading);font-family:var(--font-sans);word-break:keep-all;overflow-wrap:break-word;letter-spacing:var(--app-tracking-body)}

.app-service-shell{max-width:960px;margin:0 auto;padding:32px 16px}.app-service-shell__title{font-size:var(--sk-font-title);margin:0 0 12px}

/*!********************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[14].oneOf[10].use[2]!./node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[14].oneOf[10].use[3]!./node_modules/@servicekorea/ui/src/controls.css ***!
  \********************************************************************************************************************************************************************************************************************************************************************************************/
/* Canonical shared controls and surfaces; feature CSS owns only layout. */





.app-ui-root *,.app-ui-root *::before,.app-ui-root *::after{box-sizing:border-box}





.app-ui-root :is(button,input,select,textarea){font:inherit;font-size:var(--app-font-reading)}





.app-ui-root :is(input:not([type=checkbox],[type=radio],[type=range],[type=color]),select,textarea){min-height:var(--app-control-height);max-width:100%;padding:var(--app-control-padding);border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:var(--text-inverse);color:var(--text-default)}





.app-ui-root :is(input,select,textarea):disabled{background:var(--app-disabled-bg);color:var(--app-disabled-fg);cursor:not-allowed}





.app-ui-root :is(input,textarea)[readonly]{background:var(--bg-base)}





.app-ui-root h1{font-size:var(--app-font-screen-title);color:var(--text-heading)}.app-ui-root h2{font-size:var(--app-font-block-title);color:var(--text-heading)}.app-ui-root h3{font-size:var(--app-font-subtitle);color:var(--text-heading)}





.app-ui-root :focus-visible{outline:2px solid var(--app-action-primary-bg);outline-offset:2px;box-shadow:0 0 0 6px var(--app-focus-glow)}





.app-button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-width:var(--app-button-min-width);min-height:var(--app-control-height);padding:10px 14px;border:1px solid var(--ui-action-border,var(--line-strong));border-radius:var(--radius-sm);font-size:var(--app-font-reading);line-height:1.4;font-weight:600;text-decoration:none;cursor:pointer;background:var(--ui-action-bg,var(--text-inverse));color:var(--ui-action-fg,var(--text-default))}





.app-page{min-width:0}.app-page__hero{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 20px;border-radius:var(--radius-lg);background:var(--app-modal-header-bg);color:var(--text-inverse)}.app-page__hero :is(h1,h2,h3,p){margin:0;color:inherit}.app-page__hero p{font-size:var(--app-font-reading);line-height:var(--app-line-height-reading)}





.app-panel{min-width:0;padding:20px;border:1px solid var(--line-strong);border-radius:var(--radius-lg);background:var(--text-inverse)}





.app-tabs{display:flex;flex-wrap:wrap;gap:6px}.app-tabs button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:var(--app-control-height);padding:10px 16px;border:1px solid var(--line-strong);border-radius:var(--radius-sm);font-weight:600;cursor:pointer;background:transparent;color:var(--text-secondary)}.app-tabs button[aria-current=page],.app-tabs button[aria-selected=true]{background:var(--accent-strong);color:var(--text-inverse);border-color:var(--accent-strong)}.app-tabs button:disabled{color:var(--app-disabled-fg);cursor:not-allowed}





.app-tabs[data-density=compact]{justify-content:center}.app-tabs[data-density=compact] button{flex:0 0 auto;min-height:var(--app-control-height-compact);padding:4px 12px}





.app-table-frame{max-width:100%;overflow:auto;border:1px solid var(--line-strong);border-radius:0}.app-table-frame table{width:100%;border-collapse:collapse;background:var(--text-inverse);font-size:var(--app-font-reading)}.app-table-frame :is(td,th){padding:12px 14px;border:1px solid var(--line-soft);text-align:left;white-space:nowrap}.app-table-frame th{background:var(--app-panel-header-bg);color:var(--app-panel-header-title);font-weight:600}.app-table-frame tbody tr:hover{background:var(--admin-table-row-hover)}





.app-status{padding:14px;border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:var(--text-inverse);font-size:var(--app-font-reading);line-height:var(--app-line-height-reading)}.app-status--danger{color:var(--danger);border-left:4px solid var(--danger)}.app-status--success{color:var(--success);border-left:4px solid var(--success)}





.app-ui-root input[type=checkbox]:not([role=switch]){-webkit-appearance:auto;-moz-appearance:auto;appearance:auto;box-sizing:border-box;width:var(--app-checkbox-size);height:var(--app-checkbox-size);min-width:var(--app-checkbox-size);min-height:var(--app-checkbox-size);max-width:var(--app-checkbox-size);max-height:var(--app-checkbox-size);flex:none;margin:0;padding:0;vertical-align:middle;accent-color:var(--app-action-primary-bg);cursor:pointer}.app-ui-root input[type=checkbox]:disabled{cursor:not-allowed}





.app-form-field,.app-soft-gray-field,[data-modal-field]{display:grid;grid-template-columns:var(--app-field-label-width) minmax(0,1fr);align-items:stretch;grid-gap:8px;gap:8px;min-width:0;margin:0}





:is(.app-form-field,.app-soft-gray-field,[data-modal-field])>span:first-child{display:flex;align-items:center;justify-content:center;min-height:var(--app-control-height);padding:10px 14px;border:1px solid var(--app-field-label-border);border-radius:var(--radius-sm);background:var(--app-field-label-bg);color:var(--app-field-label-text);font-size:var(--app-font-reading);line-height:1.4;font-weight:600;text-align:center;word-break:keep-all;overflow-wrap:anywhere}





:is(.app-form-field,.app-soft-gray-field,[data-modal-field])>:is(input,select,textarea,[data-whole-step-input]){width:100%;min-width:0;max-width:100%}





.app-form-field--stacked{grid-template-columns:minmax(0,1fr);gap:8px}.app-form-field--stacked>span:first-child{justify-content:flex-start;min-height:0;padding:0;border:0;background:transparent;text-align:left}





.app-field-help{grid-column:1/-1;margin:0;color:var(--text-muted);font-size:var(--app-font-reading);line-height:var(--app-line-height-reading)}





@media(max-width:720px){.app-form-field,.app-soft-gray-field,[data-modal-field]{--app-field-label-width:var(--app-field-label-width-narrow)}.app-panel{padding:16px}.app-page__hero{align-items:flex-start;flex-direction:column}.app-tabs button{flex:1 0 auto}}











.app-message-body{margin:0;white-space:pre-wrap;overflow-wrap:anywhere;font-size:var(--app-font-reading);line-height:var(--app-line-height-reading)}











.app-ui-root input[type=color]{width:64px;height:var(--app-control-height);padding:2px;border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:var(--text-inverse)}.app-form-field>span:first-child{font-weight:600}





/* Tracking tokens: titles and text inside boxes (see foundation-tokens.css). */





.app-ui-root :is(h1,h2,h3){letter-spacing:var(--app-tracking-title)}





:is(.app-button,.app-tabs button,.app-status,:is(.app-form-field,.app-soft-gray-field,[data-modal-field])>span:first-child){letter-spacing:var(--app-tracking-control)}





/* Titled section box: the first heading of .app-panel (or an explicit .app-panel__header holding a title and actions) becomes a tinted band. */





.app-panel>:is(h2,h3):first-child,.app-panel>.app-panel__header:first-child{margin:-20px -20px 12px;padding:14px 20px;border-bottom:1px solid var(--app-section-header-border);border-radius:var(--radius-lg) var(--radius-lg) 0 0;background:var(--app-section-header-bg);color:var(--app-section-header-text);line-height:1.4}





.app-panel__header{display:flex;align-items:center;flex-wrap:wrap;gap:10px}.app-panel__header>:is(h2,h3){margin:0 auto 0 0;line-height:1.4}





.app-panel[data-section-tone=info]{--app-section-header-bg:var(--app-section-info-bg);--app-section-header-border:var(--app-section-info-border)}





.app-panel[data-section-tone=accent]{--app-section-header-bg:var(--app-section-accent-bg);--app-section-header-border:var(--app-section-accent-border)}





.app-panel[data-section-tone=warm]{--app-section-header-bg:var(--app-section-warm-bg);--app-section-header-border:var(--app-section-warm-border)}





.app-panel[data-section-tone=calm]{--app-section-header-bg:var(--app-section-calm-bg);--app-section-header-border:var(--app-section-calm-border)}





@media(max-width:720px){.app-panel>:is(h2,h3):first-child,.app-panel>.app-panel__header:first-child{margin:-16px -16px 12px;padding:12px 16px}}











/* Keep button text vertically balanced independently of inherited reading rhythm. */





.app-ui-root .app-button,.app-tabs button{line-height:1.4}





.app-button[data-size=icon]{width:var(--app-control-height);min-width:var(--app-control-height);height:var(--app-control-height);padding:0;flex:none}





.app-button[data-size=icon][data-density=compact]{width:var(--app-control-height-compact);min-width:var(--app-control-height-compact);height:var(--app-control-height-compact);min-height:var(--app-control-height-compact)}





.app-button[data-size=section-header]{min-height:36px;padding:6px 14px}





@media(max-width:720px){.app-button[data-size=section-header]{min-height:36px;padding:6px 12px}}





/* One line first: when the layout has room, boxes widen to fit their text instead of wrapping.





   Buttons, tabs, chips and badges never wrap; field labels widen past the standard label





   width on PC. Only narrow screens fall back to word-level wrapping. */





:is(.app-button,.app-tabs button){white-space:nowrap}





.app-button[data-wrap]{white-space:normal;word-break:keep-all;overflow-wrap:anywhere}





.app-tabs[data-equal-width]{display:grid;grid-template-columns:repeat(auto-fit,minmax(108px,1fr))}





.app-tabs[data-equal-width]>button{width:100%;min-width:0}





@media(min-width:720px){.app-form-field:not(.app-form-field--stacked){grid-template-columns:minmax(var(--app-field-label-width),max-content) minmax(0,1fr)}.app-form-field:not(.app-form-field--stacked)>span:first-child{white-space:nowrap}}











/* Stacked panel content: a button and the text around it keep an 8px gap (same rule as the app section cards). */





.app-panel>p+p,.app-panel>p+.app-button,.app-panel>.app-button+p,.app-panel>.app-button+.app-button{margin-top:8px}











/* Stacked form fields outside field lists and rows keep a 12px gap (fields are margin-free by default). */





.app-form-field+.app-form-field:not(.app-field-list>*):not(.app-field-row>*),.app-form-field+.app-button,.app-form-field+p{margin-top:12px}





.app-status[data-density=compact]{padding:calc(var(--app-gutter-narrow)*.75)}








/* Explanatory text in a tinted box (info by default). */


.app-note{margin:0 0 8px;padding:12px 14px;border:1px solid var(--app-note-border);border-radius:var(--radius-sm);background:var(--app-note-bg);color:var(--app-note-fg);font-size:var(--app-font-reading);line-height:var(--app-line-height-reading)}


.app-note[data-tone=neutral]{background:var(--app-note-neutral-bg);border-color:var(--app-note-neutral-border);color:var(--text-secondary)}


.app-note[data-tone=warning]{background:var(--app-note-warning-bg);border-color:var(--app-note-warning-border);color:var(--app-note-warning-fg)}


.app-note:last-child{margin-bottom:0}

.app-note+.app-note{margin-top:0}

/* Header bands that hold a button only need the button height plus a slim margin. */

.app-panel>.app-panel__header:first-child:has(.app-button){padding-top:10px;padding-bottom:10px}

/* Auto-growing text fields: one line by default, no manual resize handle. */
.app-autogrow{display:block;width:100%;min-height:var(--app-control-height);resize:none;line-height:1.5;overflow-y:hidden}

/*!*******************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[14].oneOf[10].use[2]!./node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[14].oneOf[10].use[3]!./node_modules/@servicekorea/ui/src/actions.css ***!
  \*******************************************************************************************************************************************************************************************************************************************************************************************/
/* Shared intent colors. Features set intent, never override these colors. */
small,sub,sup{font-size:max(var(--app-font-minimum),.833333em)}
::placeholder{font-size:inherit}
[data-action-tone='primary'],[data-action-tone='choice']{--ui-action-bg:var(--app-action-primary-bg);--ui-action-fg:var(--app-action-primary-fg);--ui-action-border:var(--app-action-primary-border);--ui-action-hover:var(--app-action-primary-hover);}
[data-action-tone='secondary']{--ui-action-bg:var(--app-action-secondary-bg);--ui-action-fg:var(--app-action-secondary-fg);--ui-action-border:var(--app-action-secondary-border);--ui-action-hover:var(--app-action-secondary-hover);}
[data-action-tone='search']{--ui-action-bg:var(--app-action-search-bg);--ui-action-fg:var(--app-action-search-fg);--ui-action-border:var(--app-action-search-border);--ui-action-hover:var(--app-action-search-hover);}
[data-action-tone='edit']{--ui-action-bg:var(--app-action-edit-bg);--ui-action-fg:var(--app-action-edit-fg);--ui-action-border:var(--app-action-edit-border);--ui-action-hover:var(--app-action-edit-hover);}
[data-action-tone='danger']{--ui-action-bg:var(--app-action-danger-bg);--ui-action-fg:var(--app-action-danger-fg);--ui-action-border:var(--app-action-danger-border);--ui-action-hover:var(--app-action-danger-hover);}
[data-action-tone='warning']{--ui-action-bg:var(--app-action-warning-bg);--ui-action-fg:var(--app-action-warning-fg);--ui-action-border:var(--app-action-warning-border);--ui-action-hover:var(--app-action-warning-hover);}
[data-action-tone='choice']:not([aria-pressed='true']):not([aria-selected='true']):not([aria-current='page']){--ui-action-bg:var(--app-action-choice-bg);--ui-action-fg:var(--app-action-choice-fg);--ui-action-border:var(--app-action-choice-border);--ui-action-hover:var(--app-action-choice-hover)}
:is(button,a)[data-action-tone]:not([data-action-tone='navigation']){background:var(--ui-action-bg);color:var(--ui-action-fg);border-color:var(--ui-action-border)}
:is(button,a)[data-action-tone]:not([data-action-tone='navigation']):hover:not(:disabled):not([aria-disabled='true']){background:var(--ui-action-hover)}
:is(button,a)[data-action-tone]:focus-visible{outline:2px solid var(--app-action-primary-bg);outline-offset:2px;box-shadow:0 0 0 6px var(--app-focus-glow)}
:is(button,a)[data-action-tone]:not([data-action-tone='navigation']):is(:disabled,[aria-disabled='true']){background:var(--app-disabled-bg);color:var(--app-disabled-fg);border-color:var(--app-disabled-border);box-shadow:none;cursor:not-allowed;opacity:1}
.app-pagination{display:flex;justify-content:center;align-items:center;flex-wrap:wrap;gap:calc(var(--app-gutter-narrow)/2);margin-top:calc(var(--app-gutter-narrow)/2)}
.app-button[data-action-tone][data-size=pagination]{padding:0;min-height:44px;border:0;background:transparent;box-shadow:none}
.app-button[data-action-tone][data-size=pagination]:hover:not(:disabled){background:transparent}
.app-pagination__surface{display:inline-flex;align-items:center;justify-content:center;gap:calc(var(--app-gutter-narrow)/2);min-height:32px;padding:0 var(--app-gutter-narrow);background:var(--ui-action-bg);border:1px solid var(--ui-action-border);border-radius:var(--radius-sm)}
.app-button[data-size=pagination]:hover:not(:disabled)>.app-pagination__surface{background:var(--ui-action-hover)}
.app-button[data-size=pagination]:disabled>.app-pagination__surface{background:var(--app-disabled-bg);border-color:var(--app-disabled-border)}

.app-button[data-action-tone][data-size=pagination]:disabled{background:transparent;border:0}

/*!******************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[14].oneOf[10].use[2]!./node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[14].oneOf[10].use[3]!./node_modules/@servicekorea/ui/src/modals.css ***!
  \******************************************************************************************************************************************************************************************************************************************************************************************/
/* Existing AppModal geometry and field contract, consolidated for separated services. */
.app-standard-modal-backdrop{position:fixed;inset:0;z-index:var(--app-z-modal);display:grid;place-items:center;padding:20px 20px calc(20px + env(safe-area-inset-bottom));overflow:auto;overscroll-behavior:contain;background:var(--app-modal-overlay)}
.app-standard-modal{--app-standard-modal-width:var(--app-modal-md);display:flex;flex-direction:column;width:min(var(--app-standard-modal-width),calc(100vw - 40px));max-height:calc(100dvh - 40px);min-height:0;overflow:hidden;border:1px solid var(--app-modal-border);border-radius:var(--radius-md);background:var(--app-modal-surface);box-shadow:var(--app-modal-shadow)}
.app-standard-modal--sm{--app-standard-modal-width:var(--app-modal-sm)}.app-standard-modal--md{--app-standard-modal-width:var(--app-modal-md)}.app-standard-modal--lg{--app-standard-modal-width:var(--app-modal-lg)}.app-standard-modal--xl{--app-standard-modal-width:var(--app-modal-xl)}
.app-standard-modal__header{position:relative;flex:none;display:flex;align-items:center;min-height:108px;padding:20px 76px 20px 24px;background:var(--app-modal-header-bg);color:var(--text-inverse)}
.app-standard-modal__title{margin:0;color:var(--text-inverse);font-size:var(--app-font-block-title);line-height:1.3}.app-ui-root .app-standard-modal__title{color:var(--text-inverse)}
.app-standard-modal__close{position:absolute;top:50%;right:22px;transform:translateY(-50%);display:grid;place-items:center;width:var(--app-control-height);height:var(--app-control-height);padding:0;border:1px solid var(--app-modal-close-border);border-radius:var(--radius-md);background:var(--app-modal-close-bg);color:var(--text-inverse);font-size:var(--app-font-block-title);cursor:pointer}.app-standard-modal__close:disabled{cursor:not-allowed}
.app-standard-modal__body{min-height:0;flex:1 1 auto;padding:20px 24px;overflow:auto;background:var(--app-modal-body-bg)}
.app-standard-modal__actions{display:flex;flex:none;align-items:center;justify-content:flex-end;gap:10px;flex-wrap:wrap;padding:16px 24px;border-top:1px solid var(--app-modal-footer-border);background:var(--app-modal-footer-bg)}
.app-standard-modal__description{margin-bottom:16px;font-size:var(--app-font-reading);line-height:var(--app-line-height-reading);color:var(--text-secondary)}.app-standard-modal__body-actions{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:16px}
@media(max-width:720px){.app-standard-modal-backdrop{padding:8px 8px calc(8px + env(safe-area-inset-bottom))}.app-standard-modal{width:min(var(--app-standard-modal-width),calc(100vw - 16px));max-height:calc(100dvh - 16px)}.app-standard-modal__header{min-height:76px;padding:16px 64px 16px 16px}.app-standard-modal__close{right:16px}.app-standard-modal__body{padding:16px}.app-standard-modal__actions{padding:14px 16px}}

.app-standard-modal[data-density=compact] .app-standard-modal__header{min-height:96px}.app-standard-modal__heading{min-width:0}
/* Keep the title vertically centred in the header: page heading rules (e.g. ".page h2") must not add margins inside a modal. */
.app-standard-modal__header .app-standard-modal__title{margin:0}
.app-standard-modal__header{gap:16px}
.app-standard-modal__heading{flex:1 1 auto}
.app-standard-modal__header [data-modal-header-tools]{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:8px;min-width:0}

/*!**********************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[14].oneOf[10].use[2]!./node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[14].oneOf[10].use[3]!./node_modules/@servicekorea/ui/src/components.css ***!
  \**********************************************************************************************************************************************************************************************************************************************************************************************/
/* Shared components for the common style spec (docs/RESPONSIVE_PAGE_LAYOUT_CODEX_HANDOFF.md#common-style-spec).
   Structure and sizes live here; colors come from foundation tokens and the site theme. */
.app-icon{flex:none;display:inline-block;vertical-align:middle}
.app-sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}

/* Icon square: white glyph on the site color (page header, menu, states, section titles, contact lines). */
.app-icon-tile{display:inline-grid;place-items:center;flex:none;width:36px;height:36px;border-radius:var(--radius-sm);background:var(--app-action-primary-bg);color:var(--app-icon-tile-fg)}
.app-icon-tile[data-size=sm]{width:24px;height:24px;border-radius:var(--radius-xs)}.app-icon-tile[data-size=sm] .app-icon{width:14px;height:14px}
.app-icon-tile[data-size=lg]{width:48px;height:48px;border-radius:var(--radius-md)}
.app-icon-tile[data-tone=soft]{background:var(--app-section-header-bg);color:var(--app-action-primary-bg)}
.app-icon-tile[data-tone=danger]{background:var(--app-danger-icon-bg);color:var(--app-danger-icon-fg);border-radius:var(--radius-pill)}

/* Inputs: width by kind, required mark, unit inside the field, error highlight. */
.app-form-field[data-width=short]{grid-template-columns:var(--app-field-label-width) minmax(0,var(--app-input-short))}
.app-form-field[data-width=medium]{grid-template-columns:var(--app-field-label-width) minmax(0,var(--app-input-medium))}
@media(min-width:720px){.app-form-field[data-width=short]:not(.app-form-field--stacked){grid-template-columns:minmax(var(--app-field-label-width),max-content) minmax(0,var(--app-input-short))}.app-form-field[data-width=medium]:not(.app-form-field--stacked){grid-template-columns:minmax(var(--app-field-label-width),max-content) minmax(0,var(--app-input-medium))}}
.app-form-field--stacked[data-width=short]{grid-template-columns:minmax(0,var(--app-input-short))}.app-form-field--stacked[data-width=medium]{grid-template-columns:minmax(0,var(--app-input-medium))}
/* Field list: labels of one list share the width of the longest label so inputs stay aligned while labels stay on one line. */
@media(min-width:720px){.app-field-list{display:grid;grid-template-columns:minmax(var(--app-field-label-width),max-content) minmax(0,1fr);grid-gap:16px 8px;gap:16px 8px;min-width:0}.app-field-list>.app-form-field:not(.app-form-field--stacked){grid-column:1/-1;grid-template-columns:subgrid}.app-field-list>.app-form-field[data-width=short]>:last-child{max-width:var(--app-input-short)}.app-field-list>.app-form-field[data-width=medium]>:last-child{max-width:var(--app-input-medium)}.app-field-list>:not(.app-form-field){grid-column:1/-1}}
/* Phones too: one label width per list (the longest label), kept on one line up to 44% of the screen; only longer labels wrap by word. */
@media(max-width:720px){.app-field-list{display:grid;grid-template-columns:max-content minmax(0,1fr);grid-gap:14px 8px;gap:14px 8px;min-width:0}.app-field-list>.app-form-field:not(.app-form-field--stacked){grid-column:1/-1;grid-template-columns:subgrid}.app-field-list>.app-form-field:not(.app-form-field--stacked)>span:first-child{min-width:var(--app-field-label-width-narrow);max-width:44vw}.app-field-list>:not(.app-form-field){grid-column:1/-1}}
.app-required-mark{margin-left:3px;color:var(--app-required-mark);font-weight:700}
@media(max-width:720px){.app-field-list[data-mobile-layout=stacked]{grid-template-columns:minmax(0,1fr)}.app-field-list[data-mobile-layout=stacked]>.app-form-field:not(.app-form-field--stacked){grid-template-columns:minmax(0,1fr)}.app-field-list[data-mobile-layout=stacked]>.app-form-field:not(.app-form-field--stacked)>span:first-child{max-width:none;justify-content:flex-start;text-align:left}}
.app-field-row{display:flex;flex-wrap:wrap;align-items:flex-start;gap:12px 20px}.app-field-row>.app-form-field:not([data-width]),.app-field-row>.app-form-field[data-width=long]{flex:1 1 100%}
.app-unit-input{position:relative;display:block;min-width:0}.app-ui-root .app-unit-input>input{width:100%;padding-right:44px;text-align:right}
.app-unit-input__unit{position:absolute;top:50%;right:12px;transform:translateY(-50%);color:var(--text-muted);pointer-events:none}
.app-ui-root :is(input,select,textarea)[type=number],.app-ui-root input[data-numeric]{text-align:right}
.app-ui-root :is(input,select,textarea)[aria-invalid=true]{border-color:var(--app-field-error-border);box-shadow:0 0 0 3px var(--app-field-error-glow)}

/* Search field: one component for every page. */
.app-search-field{position:relative;display:flex;align-items:center;width:var(--app-search-width);max-width:100%}
.app-search-field>.app-icon{position:absolute;left:12px;color:var(--text-muted);pointer-events:none}
.app-ui-root .app-search-field input{width:100%;padding-left:42px;padding-right:44px;-webkit-appearance:none;-moz-appearance:none;appearance:none}
.app-search-field input::-webkit-search-cancel-button{-webkit-appearance:none;appearance:none}
.app-search-field__clear{position:absolute;right:4px;display:grid;place-items:center;width:36px;height:36px;padding:0;border:0;border-radius:var(--radius-pill);background:transparent;color:var(--text-muted);cursor:pointer}.app-search-field__clear:hover{background:var(--app-overlay-soft);color:var(--text-default)}

/* Switch, segmented choice and filter chips. */
.app-switch{position:relative;display:inline-flex;align-items:center;gap:10px;min-height:var(--app-control-height);cursor:pointer}
.app-switch>input{position:absolute;opacity:0;width:1px;height:1px}
.app-switch__track{position:relative;flex:none;width:44px;height:26px;border-radius:var(--radius-pill);background:var(--app-disabled-border);transition:background .15s}
.app-switch__thumb{position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:var(--radius-pill);background:var(--text-inverse);box-shadow:var(--shadow-sm);transition:transform .15s}
.app-switch>input:checked+.app-switch__track{background:var(--app-action-primary-bg)}.app-switch>input:checked+.app-switch__track .app-switch__thumb{transform:translateX(18px)}
.app-switch>input:focus-visible+.app-switch__track{outline:2px solid var(--app-action-primary-bg);outline-offset:2px;box-shadow:0 0 0 6px var(--app-focus-glow)}
.app-switch>input:disabled+.app-switch__track{opacity:.5}.app-switch:has(input:disabled){cursor:not-allowed}
.app-segmented{display:inline-flex;max-width:100%;padding:3px;border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:var(--bg-base)}
.app-segmented button{flex:1 0 auto;min-width:72px;white-space:nowrap;min-height:var(--app-control-height);padding:6px 14px;border:0;border-radius:var(--radius-xs);background:transparent;color:var(--text-secondary);font-weight:600;letter-spacing:var(--app-tracking-control);cursor:pointer}
.app-segmented button[aria-checked=true]{background:var(--app-action-primary-bg);color:var(--app-action-primary-fg)}.app-segmented button:disabled{cursor:not-allowed;color:var(--app-disabled-fg)}
.app-filter-chips{display:flex;flex-wrap:wrap;gap:8px}
.app-filter-chips__count{font-weight:400;opacity:.85}

/* Calendar: dropdown under the field and the same month grid inside a modal. */
.app-date-field{position:relative;display:flex;width:var(--app-input-short);max-width:100%}
.app-ui-root .app-date-field>input{width:100%;padding-right:46px}
.app-date-field__button{position:absolute;top:0;right:0;display:grid;place-items:center;width:var(--app-control-height);height:100%;padding:0;border:0;background:transparent;color:var(--app-action-primary-bg);cursor:pointer}
.app-date-field__button:disabled{color:var(--app-disabled-fg);cursor:not-allowed}
.app-date-field__popover{position:absolute;top:calc(100% + 6px);left:0;z-index:20;width:320px;padding:12px;border:1px solid var(--line-strong);border-radius:var(--radius-md);background:var(--text-inverse);box-shadow:var(--shadow-md)}
.app-calendar{display:grid;grid-gap:8px;gap:8px}
.app-calendar__head{display:flex;align-items:center;gap:4px}.app-calendar__head strong{flex:1 1;text-align:center;font-size:var(--app-font-subtitle);letter-spacing:var(--app-tracking-title)}
.app-calendar__nav{display:grid;place-items:center;width:36px;height:36px;padding:0;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--text-secondary);cursor:pointer}.app-calendar__nav:hover{background:var(--app-overlay-soft)}
.app-calendar__today{min-height:32px;padding:4px 12px;border:1px solid var(--app-action-choice-border);border-radius:var(--radius-pill);background:var(--app-action-choice-bg);color:var(--app-action-choice-fg);font-weight:600;cursor:pointer}
.app-calendar__grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));grid-gap:2px;gap:2px}
.app-calendar__weekday{padding:4px 0;text-align:center;color:var(--text-muted)}.app-calendar__weekday[data-sunday]{color:var(--app-holiday)}
.app-calendar__day{aspect-ratio:1;min-height:36px;padding:0;border:1px solid transparent;border-radius:var(--radius-sm);background:transparent;color:var(--text-default);cursor:pointer}
.app-calendar__day:hover:not(:disabled){background:var(--app-section-header-bg)}
.app-calendar__day[data-holiday]{color:var(--app-holiday)}.app-calendar__day[data-outside]{opacity:.4}
.app-calendar__day[data-today]{border-color:var(--app-action-primary-bg);font-weight:700}
.app-calendar__day[data-in-range]{border-radius:0;background:var(--app-section-header-bg)}
.app-calendar__day[aria-selected=true]{background:var(--app-action-primary-bg);color:var(--app-action-primary-fg);font-weight:700}
.app-calendar__day:disabled{color:var(--app-disabled-fg);cursor:not-allowed;text-decoration:line-through}
.app-date-range__value{display:inline-flex;align-items:center;gap:8px;min-height:var(--app-control-height);padding:9px 12px;border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:var(--text-inverse);color:var(--text-default);cursor:pointer}.app-date-range__value .app-icon{color:var(--app-action-primary-bg)}
.app-date-range__draft{display:flex;justify-content:center;gap:10px;margin:0 0 12px;font-weight:700}

/* Tables: header in the site tone, 48px rows, text left / numbers right / status and actions centered. */
.app-data-table{max-width:100%;overflow:auto;border:1px solid var(--line-strong);border-radius:var(--radius-sm)}
.app-data-table table{width:100%;border-collapse:collapse;background:var(--text-inverse)}
.app-data-table :is(th,td),.app-table-frame :is(th,td){height:var(--app-table-row-height);padding:10px 14px;border-bottom:1px solid var(--line-soft);white-space:nowrap;vertical-align:middle}
.app-data-table th,.app-ui-root .app-table-frame th{background:var(--app-section-header-bg);color:var(--app-section-header-text);font-weight:700;text-align:left;letter-spacing:var(--app-tracking-control)}
.app-data-table :is(th,td)[data-align=number]{text-align:right;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.app-data-table :is(th,td)[data-align=center]{text-align:center}
.app-data-table tbody tr:hover{background:var(--app-overlay-soft)}
.app-table-actions{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin:0}
@media(max-width:720px){
 .app-data-table{overflow:visible;border:0}.app-data-table table,.app-data-table tbody,.app-data-table tr,.app-data-table td{display:block;width:100%}
 .app-data-table thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
 .app-data-table tr{margin-bottom:10px;padding:6px 14px;border:1px solid var(--line-strong);border-radius:var(--radius-md);background:var(--text-inverse)}
 .app-data-table td{display:flex;align-items:center;justify-content:space-between;gap:12px;height:auto;min-height:40px;padding:6px 0;white-space:normal;text-align:right}
 .app-data-table td[data-label]::before{content:attr(data-label);flex:none;color:var(--text-muted);text-align:left}
 .app-data-table td[data-primary]{order:-1;font-weight:700;font-size:var(--app-font-subtitle);text-align:left}.app-data-table td[data-primary]::before{content:none}
 .app-data-table td[data-align]{text-align:right}.app-data-table tr{display:flex;flex-direction:column}
}

/* List toolbar, count, "더 보기". */
.app-list-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:12px}
.app-list-toolbar__summary{margin-right:auto}
.app-list-toolbar__filters,.app-list-toolbar__sort{display:flex;align-items:center;gap:8px}
.app-list-toolbar__actions{display:flex;gap:8px;margin-left:auto}
.app-list-count{margin:0 0 8px;color:var(--text-secondary)}.app-list-count strong{color:var(--text-heading)}
.app-list-count[data-boxed]{display:flex;align-items:center;gap:calc(var(--app-gutter-narrow)/4);box-sizing:border-box;min-height:var(--app-control-height);margin:0;padding:0 var(--app-gutter-narrow);border:1px solid var(--line-strong);border-radius:var(--radius-md);background:var(--app-section-header-bg);white-space:nowrap}
.app-more{display:flex;justify-content:center;margin-top:16px}
@media(max-width:720px){.app-list-toolbar__search{flex:1 1 100%}.app-list-toolbar__search .app-search-field{width:100%}}

/* Loading skeleton, empty and failed states. */
.app-skeleton{display:grid;grid-gap:8px;gap:8px}
.app-skeleton__row{display:grid;grid-template-columns:2fr 3fr 1fr;grid-gap:16px;gap:16px;align-items:center;height:var(--app-table-row-height);padding:0 14px;border:1px solid var(--line-soft);border-radius:var(--radius-sm);background:var(--text-inverse)}
.app-skeleton__row>span{height:14px;border-radius:var(--radius-xs);background:linear-gradient(90deg,var(--app-skeleton-base) 0%,var(--app-skeleton-shine) 50%,var(--app-skeleton-base) 100%);background-size:200% 100%;animation:app-skeleton 1.2s ease-in-out infinite}
@keyframes app-skeleton{from{background-position:100% 0}to{background-position:-100% 0}}
.app-state{display:grid;justify-items:center;grid-gap:12px;gap:12px;padding:32px 20px;border-radius:var(--radius-md);background:var(--app-section-header-bg);text-align:center}
.app-state[data-tone=error]{background:var(--app-danger-icon-bg)}
.app-state>p{margin:0;color:var(--text-default);font-weight:600}

/* Status badges: fixed meaning colors with a leading dot. */
.app-badge{display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border-radius:var(--radius-pill);background:var(--badge-bg);color:var(--badge-fg);font-weight:600;line-height:1.5;letter-spacing:var(--app-tracking-control);white-space:nowrap}
.app-badge::before{content:'';width:7px;height:7px;border-radius:var(--radius-pill);background:var(--badge-dot)}
.app-badge[data-indicator=none]::before{display:none}
.app-badge[data-density=compact]{height:var(--app-control-height-compact);padding:4px 8px;border-radius:var(--radius-sm)}
.app-badge[data-tone=active]{--badge-bg:var(--app-badge-active-bg);--badge-fg:var(--app-badge-active-fg);--badge-dot:var(--app-badge-active-dot)}
.app-badge[data-tone=waiting]{--badge-bg:var(--app-badge-waiting-bg);--badge-fg:var(--app-badge-waiting-fg);--badge-dot:var(--app-badge-waiting-dot)}
.app-badge[data-tone=ended]{--badge-bg:var(--app-badge-ended-bg);--badge-fg:var(--app-badge-ended-fg);--badge-dot:var(--app-badge-ended-dot)}
.app-badge[data-tone=error]{--badge-bg:var(--app-badge-error-bg);--badge-fg:var(--app-badge-error-fg);--badge-dot:var(--app-badge-error-dot)}
.app-badge[data-tone=info]{--badge-bg:var(--app-badge-info-bg);--badge-fg:var(--app-badge-info-fg);--badge-dot:var(--app-badge-info-dot)}

/* Header and menu: PC 64px row; phones top logo row plus fixed bottom bar. */
.app-topbar{position:-webkit-sticky;position:sticky;top:0;z-index:30;border-bottom:1px solid var(--line-strong);background:var(--text-inverse)}
.app-topbar__inner{display:flex;align-items:center;gap:24px;max-width:var(--app-content-max);height:var(--app-topbar-height);margin:0 auto;padding:0 var(--app-gutter)}
.app-topbar__logo{display:flex;align-items:center;flex:none;font-weight:700}
.app-topbar__menu{display:flex;align-items:stretch;gap:4px;height:100%;min-width:0}
.app-topbar__link{display:inline-flex;align-items:center;gap:8px;padding:0 14px;border-bottom:3px solid transparent;color:var(--text-secondary);font-weight:600;text-decoration:none;letter-spacing:var(--app-tracking-control)}
.app-topbar__link:hover{color:var(--text-heading)}.app-topbar__link[aria-current=page]{border-bottom-color:var(--app-action-primary-bg);color:var(--app-action-primary-bg)}
.app-topbar__link .app-icon{width:20px;height:20px}
.app-topbar__tools{display:flex;align-items:center;gap:8px;margin-left:auto}
.app-bottom-nav{display:none}
.app-content{max-width:var(--app-content-max);margin:0 auto;padding:24px var(--app-gutter) 40px}
@media(max-width:720px){
 .app-topbar__inner{height:56px;padding:0 var(--app-gutter-narrow)}.app-topbar__menu{display:none}
 .app-bottom-nav{position:fixed;inset:auto 0 0;z-index:30;display:flex;height:calc(var(--app-bottom-nav-height) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);border-top:1px solid var(--line-strong);background:var(--text-inverse)}
 .app-bottom-nav__link{flex:1 1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-width:0;color:var(--text-muted);text-decoration:none;font-weight:600}
 .app-bottom-nav__link[aria-current=page]{color:var(--app-action-primary-bg)}
 .app-content{padding:16px var(--app-gutter-narrow) calc(var(--app-bottom-nav-height) + 24px + env(safe-area-inset-bottom))}
}

/* Page header: site dark band with icon, title, one line, icon cluster and main buttons. */
.app-page-header{display:flex;align-items:center;gap:16px;margin-bottom:20px;padding:20px 24px;border-radius:var(--radius-lg);background:var(--app-panel-header-bg);color:var(--app-panel-header-title)}
.app-page-header__icon{display:grid;place-items:center;flex:none;width:48px;height:48px;border-radius:var(--radius-md);background:var(--app-modal-close-bg);border:1px solid var(--app-modal-close-border)}
.app-page-header__text{flex:1 1;min-width:0}.app-page-header__text h1{margin:0;color:inherit;font-size:var(--app-font-block-title);line-height:1.3}
.app-page-header__text p{margin:4px 0 0;color:var(--app-panel-header-description)}
.app-page-header__art{display:flex;gap:10px;opacity:.55}
.app-page-header__actions{display:flex;flex-wrap:wrap;gap:8px}
.app-page-header__actions .app-button[data-action-tone=primary]{--ui-action-bg:var(--text-inverse);--ui-action-fg:var(--app-action-primary-bg);--ui-action-border:var(--text-inverse);--ui-action-hover:var(--app-section-header-bg)}
@media(max-width:720px){.app-page-header{flex-wrap:wrap;padding:16px}.app-page-header__art{display:none}.app-page-header__actions{flex:1 1 100%}.app-page-header__actions .app-button{flex:1 1}}
.app-section-title{display:inline-flex;align-items:center;gap:10px}

/* Contact line: small site square before the value. */
.app-contact-line{display:flex;align-items:center;gap:10px;margin:0;min-height:32px}.app-contact-line a{color:inherit;text-decoration:none}.app-contact-line a:hover{text-decoration:underline}

/* Form actions: right-aligned [취소][저장]; spinner while saving. */
.app-form-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:10px;margin-top:20px}
.app-spinner{width:16px;height:16px;border:2px solid currentColor;border-right-color:transparent;border-radius:var(--radius-pill);animation:app-spin .8s linear infinite}
@keyframes app-spin{to{transform:rotate(360deg)}}

/* Upload area. */
.app-upload{display:grid;grid-gap:12px;gap:12px}
.app-upload__drop{display:grid;justify-items:center;grid-gap:8px;gap:8px;width:100%;padding:24px 16px;border:2px dashed var(--app-section-header-border);border-radius:var(--radius-md);background:var(--app-section-header-bg);color:var(--text-default);cursor:pointer}
.app-upload__drop[data-over]{border-color:var(--app-action-primary-bg)}.app-upload__drop>span{color:var(--text-muted)}
.app-upload[data-density=compact] .app-upload__drop{display:flex;align-items:center;justify-content:center;gap:8px;min-height:var(--app-control-height);padding:var(--app-control-padding);border-width:1px;border-style:solid;white-space:nowrap}.app-upload[data-density=compact] .app-upload__drop strong{font-weight:600}
.app-upload__list{display:flex;flex-wrap:wrap;gap:10px;margin:0;padding:0;list-style:none}
.app-upload__list li{position:relative;display:grid;justify-items:center;grid-gap:4px;gap:4px;width:96px}
.app-upload__list img,.app-upload__list li>.app-icon{width:96px;height:96px;border:1px solid var(--line-strong);border-radius:var(--radius-sm);object-fit:cover;background:var(--bg-base)}
.app-upload__list li>span{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-muted)}
.app-upload__list button{position:absolute;top:-8px;right:-8px;display:grid;place-items:center;width:28px;height:28px;padding:0;border:1px solid var(--line-strong);border-radius:var(--radius-pill);background:var(--text-inverse);color:var(--text-default);cursor:pointer}

/* Message modal body: icon + text; danger confirm uses the red circle; success shows the 2s progress. */
.app-message{display:flex;align-items:flex-start;gap:14px}.app-message>div{min-width:0;padding-top:6px}
.app-message[data-danger-confirm]{flex-direction:column;align-items:center;text-align:center}.app-message[data-danger-confirm]>div{padding-top:0}
.app-message[data-danger-confirm] .app-message-body{font-weight:700}
.app-message-detail{margin:6px 0 0;color:var(--text-secondary)}
.app-message-progress{display:block;height:4px;margin-top:16px;border-radius:var(--radius-pill);background:var(--app-action-primary-bg);transform-origin:left;animation:app-message-progress var(--app-message-autoclose) linear forwards}
@keyframes app-message-progress{from{transform:scaleX(1)}to{transform:scaleX(0)}}
.app-calendar-modal .app-standard-modal__body{padding:16px}

/* Address search: the postcode widget fills the modal body. */
.app-standard-modal__body.app-postcode-body{padding:0}
.app-postcode-frame{height:min(480px,70dvh)}

.app-upload__picker[data-selection]{display:flex;align-items:center;gap:8px;padding-left:10px;border:1px solid var(--app-section-header-border);border-radius:var(--radius-md);background:var(--app-section-header-bg)}.app-upload[data-density=compact] .app-upload__picker[data-selection] .app-upload__drop{flex:1 1;min-width:0;border:0;background:transparent;padding-left:0}

/* Filter chips: rectangular buttons matching .app-button; the pressed chip uses the site action color. */
.app-chips{display:flex;flex-wrap:wrap;gap:12px}
.app-chip{display:inline-flex;align-items:center;justify-content:center;min-height:var(--app-control-height);padding:6px 22px;border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:var(--text-inverse);color:var(--text-secondary);font:inherit;font-weight:600;letter-spacing:var(--app-tracking-control);cursor:pointer}
.app-chip:hover{border-color:var(--app-action-primary-bg);color:var(--text-heading)}
.app-chip:focus-visible{outline:2px solid var(--app-action-primary-bg);outline-offset:2px}
.app-chip[aria-pressed=true]{border-color:var(--app-action-primary-bg);background:var(--app-action-primary-bg);color:var(--app-action-primary-fg)}
/* Public service policy/operator information. Shared compact rhythm and hit areas. */
.app-footer{box-sizing:border-box;width:100%;max-width:var(--app-content-max);margin:0 auto;padding:calc(var(--app-gutter-narrow)/2) var(--app-gutter);border-top:1px solid var(--line-strong);background:var(--bg-base);color:var(--text-secondary);font-size:var(--app-font-reading);line-height:var(--app-line-height-reading);overflow-wrap:anywhere}
.app-footer__links{display:flex;flex-wrap:wrap;gap:var(--app-gutter);align-items:center}
.app-footer__links a{display:inline-flex;align-items:center;min-height:44px;color:var(--text-heading)}
.app-footer__details{display:flex;flex-wrap:wrap;gap:0 var(--app-gutter-narrow);margin:0}
.app-footer__details div{display:flex;flex-wrap:wrap;align-items:baseline;gap:calc(var(--app-gutter-narrow)/2);max-width:100%}
.app-footer__details dt{font-weight:600}
.app-footer__details dd{margin:0;min-width:0}
.app-footer__details a{display:inline-block;min-height:44px;color:inherit}
.app-footer>p{margin:0}

/* Flat selectable rows, including compact conversation lists. */
.app-menu-list{display:grid;grid-gap:0;gap:0;align-content:start}
.app-menu-list>button{display:flex;align-items:center;width:100%;min-height:44px;padding:calc(var(--app-gutter-narrow)/2) var(--app-gutter-narrow);border:0;border-bottom:1px solid var(--line-soft);border-radius:0;background:transparent;color:var(--text-default);text-align:left;overflow-wrap:anywhere}
.app-menu-list>button:is(:hover,[aria-pressed=true]){background:var(--app-section-header-bg);color:var(--text-heading)}

.app-site-header{border:1px solid var(--app-site-frame-border,var(--accent-strong))}

.app-site-navigation>button{border-color:var(--app-site-frame-border,var(--accent-strong))}

.app-data-table[data-layout=prose] :is(th,td){white-space:normal;overflow-wrap:anywhere}
.app-policy-links{display:flex;align-items:center;flex-wrap:wrap;gap:var(--app-gutter-narrow)}
.app-policy-links>a{display:inline-flex;align-items:center;min-height:44px}

/* Image-side labels share the bottom centre of the preview, with full touch targets. */
.app-image-side-controls{position:absolute;left:0;right:0;bottom:0;display:flex;flex-direction:row;justify-content:center;align-items:center;gap:0;pointer-events:none}
.app-image-side-controls>button{pointer-events:auto;display:flex;align-items:center;justify-content:center;min-width:64px;min-height:44px;padding:0;border:0;background:transparent;color:var(--accent-strong);cursor:pointer}
.app-image-side-controls>button>span{display:inline-block;padding:2px calc(var(--app-gutter-narrow)/2);border-radius:var(--radius-sm);background:var(--app-media-control-bg);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);color:var(--accent-strong);font-size:var(--app-font-minimum);line-height:1.2;font-weight:600;box-shadow:var(--shadow-sm)}
.app-image-side-controls>button[aria-pressed=true]>span{background:var(--app-media-control-active-bg);font-weight:700;text-decoration:underline;text-underline-offset:2px}
.app-image-side-controls>button:focus-visible{outline:2px solid var(--accent-strong);outline-offset:-2px}
.app-image-side-controls>button:disabled{cursor:wait}

.app-icon-status::after{content:attr(aria-label);display:none;position:absolute;left:0;top:calc(100% + 4px);z-index:2;max-width:240px;padding:4px calc(var(--app-gutter-narrow)/2);border-radius:var(--radius-sm);background:var(--text-heading);color:var(--text-inverse);font-size:var(--app-font-reading);font-weight:600;line-height:var(--app-line-height-reading);white-space:nowrap;pointer-events:none}
.app-icon-status:hover::after,button:focus-visible>.app-icon-status::after{display:block}

/*!********************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[14].oneOf[10].use[2]!./node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[14].oneOf[10].use[3]!./node_modules/@servicekorea/ui/src/activity.css ***!
  \********************************************************************************************************************************************************************************************************************************************************************************************/
.app-category-label{display:inline-flex;align-items:center;gap:6px;height:26px;padding:0 10px;border-radius:var(--radius-pill);font-weight:600;font-size:var(--app-font-reading);white-space:nowrap}
.app-category-label[data-color=blue]{background:var(--app-category-blue-bg);color:var(--app-category-blue)}
.app-category-label[data-color=green]{background:var(--app-category-green-bg);color:var(--app-category-green)}
.app-category-label[data-color=purple]{background:var(--app-category-purple-bg);color:var(--app-category-purple)}
.app-activity{display:grid;grid-template-columns:var(--app-activity-avatar) minmax(0,1fr) auto;align-items:start;grid-gap:var(--app-gutter-narrow);gap:var(--app-gutter-narrow);padding:var(--app-gutter) 0;border-top:1px solid var(--line-soft)}
.app-activity__leading{display:flex;align-items:center;justify-content:center;width:var(--app-activity-avatar);height:var(--app-activity-avatar);color:var(--text-muted)}
.app-activity__leading img{width:100%;height:100%;object-fit:contain;border-radius:var(--radius-xs)}
.app-activity__body{min-width:0}
.app-activity__heading{display:flex;align-items:center;gap:var(--app-gutter-narrow);flex-wrap:wrap}
.app-activity__heading h3{margin:0;font-size:var(--app-font-reading)}
.app-activity__meta,.app-activity__time{color:var(--text-muted);font-size:var(--app-font-reading)}
.app-activity__time{white-space:nowrap;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}
.app-floating-panel{position:fixed;z-index:40;right:max(var(--app-gutter),env(safe-area-inset-right));bottom:calc(80px + env(safe-area-inset-bottom));width:min(var(--app-floating-width),calc(100% - var(--app-gutter)*2));max-height:calc(100dvh - 120px);display:flex;flex-direction:column;background:var(--text-inverse);color:var(--text-default);border:1px solid var(--line-strong);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);overflow:hidden}
.app-floating-panel[hidden]{display:none}
.app-floating-panel__header{display:flex;align-items:center;justify-content:space-between;padding:var(--app-gutter-narrow) var(--app-gutter);border-bottom:1px solid var(--line-soft);background:var(--app-section-header-bg)}
.app-floating-panel__header h2{margin:0;font-size:var(--app-font-subtitle)}
.app-floating-panel__body{min-height:0;overflow:auto;padding:var(--app-gutter)}
body:has([aria-modal=true]) .app-floating-panel{visibility:hidden}
@media(max-width:720px){.app-activity{grid-template-columns:var(--app-activity-avatar) minmax(0,1fr)}.app-activity__time{grid-column:2}.app-floating-panel{right:max(var(--app-gutter-narrow),env(safe-area-inset-right));width:calc(100% - var(--app-gutter-narrow)*2);max-height:calc(100dvh - 100px);bottom:calc(76px + env(safe-area-inset-bottom))}.app-floating-panel__body{padding:var(--app-gutter-narrow)}}
.app-floating-panel[data-tone=strong]>.app-floating-panel__header{background:var(--app-panel-header-bg);color:var(--app-panel-header-title);border-color:var(--app-panel-header-border)}
.app-floating-panel[data-density=compact]>.app-floating-panel__header{padding:calc(var(--app-gutter-narrow)/4) var(--app-gutter-narrow)}
.app-floating-panel[data-density=compact]>.app-floating-panel__body{padding:var(--app-gutter-narrow)}
.app-floating-panel[data-tone=strong]>.app-floating-panel__header h2{color:var(--app-panel-header-title)}

/*!*****************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[14].oneOf[10].use[2]!./node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[14].oneOf[10].use[3]!./node_modules/@servicekorea/ui/src/index.css ***!
  \*****************************************************************************************************************************************************************************************************************************************************************************************/
/* Import once in the application root. Feature files must not re-import tokens. */

