:root {
  color-scheme: light;
  font-family: Arial, Helvetica, sans-serif;
  background: #edf7fc;
  color: #123a5f;
}

* { box-sizing: border-box; }

[hidden] { display: none !important; }

body { margin: 0; min-width: 320px; }

.startup-loading { position: fixed; z-index: 100; inset: 0; display: grid; place-items: center; padding: 24px; background: linear-gradient(135deg, #f8fcfe 0%, #e7f3f9 100%); color: #1f668f; opacity: 1; transition: opacity .34s ease; }
.startup-loading-content { display: flex; width: min(276px, 84vw); flex-direction: column; align-items: center; gap: 15px; padding: 22px 24px 19px; border: 1px solid rgba(184, 218, 235, .9); border-radius: 24px; background: rgba(255,255,255,.9); box-shadow: 0 13px 32px rgba(17,70,111,.13); backdrop-filter: blur(8px); font-size: .82rem; font-weight: 800; }
.startup-loading-logo-wrap { width: 105px; height: 105px; display: grid; place-items: center; opacity: 0; transform: scale(.96); animation: msinfor-logo-enter .48s cubic-bezier(.2,.7,.2,1) .04s forwards; }
.startup-loading-logo { display: block; width: 94px; height: 94px; object-fit: contain; border-radius: 22%; box-shadow: 0 7px 19px rgba(20, 93, 163, .2); }
.startup-loading-progress { width: 100%; height: 3px; overflow: hidden; border-radius: 999px; background: #e1eef6; }
.startup-loading-progress span { display: block; width: 38%; height: 100%; border-radius: inherit; background: linear-gradient(90deg, #1976b4, #36b8d9); animation: msinfor-progress 1.25s ease-in-out infinite; }
.startup-loading-copy { color: #48657b; letter-spacing: .01em; }
.startup-loading.is-hiding { opacity: 0; pointer-events: none; }

button { font: inherit; }

.page-shell { min-height: 100dvh; padding: 26px 18px 42px; background: linear-gradient(135deg, #edf8fc 0%, #e3f1f8 100%); }

.notification-app { max-width: 590px; margin: 0 auto; background: #fff; border-radius: 29px; overflow: hidden; box-shadow: 0 12px 38px rgba(17, 70, 111, .16); border: 1px solid #d4eafa; }
.notification-app.is-view-transitioning .content-card,
.notification-app.is-view-transitioning .identity-card,
.notification-app.is-view-transitioning .active-access-panel,
.notification-app.is-view-transitioning .history-button,
.notification-app.is-view-transitioning .change-identity-button { animation: msinfor-view-enter .26s ease both; will-change: opacity, transform; }
@keyframes msinfor-view-enter { from { opacity: .72; transform: translateY(4px); } to { opacity: 1; transform: translateY(0); } }
@media (prefers-reduced-motion: reduce) { .notification-app.is-view-transitioning .content-card, .notification-app.is-view-transitioning .identity-card, .notification-app.is-view-transitioning .active-access-panel, .notification-app.is-view-transitioning .history-button, .notification-app.is-view-transitioning .change-identity-button { animation: none; } }

.brand-header { border-top: 7px solid #1c63a3; padding: 30px 24px; text-align: center; }
.brand-logo { display: block; width: min(220px, 62vw); height: auto; aspect-ratio: 1; object-fit: contain; margin: 0 auto; border-radius: 22%; }
.access-loading { margin: 0 24px 22px; padding: 18px 20px; border: 1px solid #cfe8f6; border-radius: 18px; background: #f6fbfe; color: #48657b; font-size: .91rem; text-align: center; }

.identity-card { margin: 0 24px 22px; padding: 22px 21px 21px; border-radius: 18px; background: #f6fbfe; border: 1px solid #cfe8f6; }
.identity-card h1 { display: block; min-height: 0; margin: 0 0 6px; color: #143856; font-size: 1.22rem; text-align: left; }
.identity-card > p { margin: 0 0 17px; color: #48657b; font-size: .91rem; line-height: 1.4; }
.identity-card form { display: grid; gap: 8px; }
.identity-card label { color: #244d6c; font-size: .86rem; font-weight: 800; }
.identity-card input, .identity-card select { width: 100%; height: 45px; border: 1px solid #b6d4e6; border-radius: 10px; color: #153b59; background: #fff; font-size: 1rem; transition: border-color .18s ease, box-shadow .18s ease, background-color .18s ease; }
.identity-card input { padding: 0 13px; }
.select-shell { position: relative; width: 100%; }
.identity-card select { appearance: none; -webkit-appearance: none; padding: 0 44px 0 13px; cursor: pointer; box-shadow: 0 2px 5px rgba(26, 91, 132, .04); }
.select-chevron { position: absolute; right: 16px; top: 50%; width: 8px; height: 8px; border-right: 2px solid #2378ad; border-bottom: 2px solid #2378ad; transform: translateY(-67%) rotate(45deg); pointer-events: none; transition: border-color .18s ease, transform .18s ease; }
.identity-card select:focus + .select-chevron { border-color: #146ca8; transform: translateY(-35%) rotate(225deg); }
.identity-card input:focus, .identity-card select:focus { outline: none; border-color: #2a89bf; box-shadow: 0 0 0 3px #d1edfc, 0 3px 8px rgba(26, 91, 132, .08); }
.identity-card input:hover, .identity-card select:enabled:hover { border-color: #78b9d8; }
.identity-card select:disabled { color: #7a8c99; background: #f8fbfd; cursor: not-allowed; box-shadow: none; }
.identity-card select:disabled + .select-chevron { border-color: #a7bac6; }
.code-status { min-height: 1.15em; margin: 0 !important; color: #48657b; font-size: .82rem !important; }
.code-status.is-loading { display: inline-flex; align-items: center; gap: 7px; }
.code-status.is-loading::before { content: ''; width: 12px; height: 12px; flex: 0 0 12px; border: 2px solid #b9dceb; border-top-color: #1976b4; border-radius: 50%; animation: msinfor-spin .75s linear infinite; }
.activation-status { margin: 0 !important; padding: 8px 10px; border: 1px solid #cfe4ef; border-radius: 9px; background: #f2f9fd; color: #48657b; font-size: .82rem !important; font-weight: 700; line-height: 1.3; }
.activation-status.is-loading { color: #48657b; background: #f2f9fd; }
.activation-status.is-active { border-color: #b8dfc8; background: #effaf3; color: #237348; }
.activation-status.is-inactive { border-color: #cfe4ef; background: #f2f9fd; color: #48657b; }
.activation-status.is-error { border-color: #e7c1c1; background: #fff6f6; color: #a43d3d; }
.identity-card .button { margin-top: 8px; }
.form-result { min-height: 1.15em; margin: 0 !important; color: #a43d3d !important; font-size: .83rem !important; font-weight: 700; }

.content-card { position: relative; margin: 0 24px; padding: 40px 21px 22px; border: 3px solid #51a9d9; border-top-color: #1475b0; border-radius: 23px; background: linear-gradient(150deg, #fff 2%, #f4fbff 100%); text-align: center; }
h1 { margin: 0 0 31px; min-height: 52px; display: flex; align-items: center; justify-content: center; text-align: center; font-size: clamp(1.45rem, 6vw, 2rem); line-height: 1; color: #10355c; }
.active-access-panel { margin: 14px 24px 0; padding: 13px 14px 14px; border: 1px solid #c5e1ef; border-radius: 16px; background: #f5fbfe; color: #237348; text-align: left; box-shadow: 0 4px 12px rgba(33, 80, 117, .05); }
.active-access-panel.is-pending { color: #48657b; }
.active-access-header { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.active-access-header h2 { margin: 0; color: inherit; font-size: .88rem; font-weight: 900; letter-spacing: .02em; }
.active-access-count { flex: 0 0 auto; padding: 4px 9px; border-radius: 999px; background: #dff3e7; color: #237348; font-size: .74rem; font-weight: 900; white-space: nowrap; }
.is-pending .active-access-count { background: #e8f2f7; color: #48657b; }
.active-access-list { display: grid; gap: 8px; margin-top: 10px; }
.active-access-item { display: flex; align-items: center; gap: 10px; min-width: 0; padding: 8px 10px; border: 1px solid #d7eaf4; border-radius: 11px; background: #fff; }
.active-access-code { flex: 0 0 auto; color: #146ca8; font-size: .82rem; }
.active-access-description { min-width: 0; overflow: hidden; color: #48657b; font-size: .8rem; font-weight: 700; line-height: 1.25; text-overflow: ellipsis; white-space: nowrap; }
.active-access-remove { flex: 0 0 29px; width: 29px; height: 29px; display: grid; place-items: center; margin-left: auto; border: 1px solid #e9b9bb; border-radius: 9px; padding: 0; background: #fff7f7; color: #bb3f43; cursor: pointer; transition: background-color .15s ease, border-color .15s ease, transform .15s ease; }
.active-access-remove svg { width: 15px; height: 15px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.active-access-remove:hover { border-color: #d9898c; background: #ffeded; transform: translateY(-1px); }
.active-access-remove:focus-visible { outline: 3px solid #77bce6; outline-offset: 2px; }
.active-access-remove:disabled { cursor: default; opacity: .55; transform: none; }
.status-chip { display: inline-block; margin: 0 0 16px; padding: 7px 17px; background: #e7f4fc; color: #236fa3; border-radius: 999px; font-size: .83rem; font-weight: 800; }
.notifications-loading { display: inline-flex; align-items: center; justify-content: center; gap: 9px; margin: 0 0 16px; padding: 8px 13px; border: 1px solid #cfe4ef; border-radius: 999px; background: #f2f9fd; color: #48657b; font-size: .82rem; font-weight: 800; }
.loading-spinner { width: 15px; height: 15px; flex: 0 0 15px; border: 2px solid #b9dceb; border-top-color: #1976b4; border-radius: 50%; animation: msinfor-spin .75s linear infinite; }
@keyframes msinfor-spin { to { transform: rotate(360deg); } }
@keyframes msinfor-logo-enter { from { opacity: 0; transform: scale(.96); } to { opacity: 1; transform: scale(1); } }
@keyframes msinfor-progress { from { transform: translateX(-130%); } to { transform: translateX(330%); } }
@media (prefers-reduced-motion: reduce) { .startup-loading-logo-wrap, .startup-loading-progress span { animation: none; opacity: 1; transform: none; } }
.button.is-loading { position: relative; cursor: wait; }
.button.is-loading::before { content: ''; display: inline-block; width: 14px; height: 14px; margin-right: 8px; vertical-align: -2px; border: 2px solid rgba(255,255,255,.6); border-top-color: currentColor; border-radius: 50%; animation: msinfor-spin .75s linear infinite; }
.button-secondary.is-loading::before, .button-danger.is-loading::before { border-color: #b9dceb; border-top-color: currentColor; }
.feedback-toast { position: fixed; z-index: 20; left: 50%; bottom: calc(16px + env(safe-area-inset-bottom)); width: min(90vw, 430px); margin: 0; padding: 11px 15px; border: 1px solid #b8dfc8; border-radius: 12px; background: #effaf3; color: #237348; box-shadow: 0 8px 22px rgba(17,70,111,.18); font-size: .85rem; font-weight: 800; text-align: center; transform: translateX(-50%); }
.feedback-toast.is-error { border-color: #e7c1c1; background: #fff6f6; color: #a43d3d; }
.msinfor-dialog-backdrop { position: fixed; inset: 0; z-index: 1000; display: grid; place-items: center; padding: 22px; background: rgba(20, 34, 53, .62); -webkit-backdrop-filter: blur(4px); backdrop-filter: blur(4px); }
.msinfor-dialog-panel { width: min(100%, 380px); max-height: calc(100dvh - 44px); overflow-y: auto; padding: 24px 22px 18px; border: 1px solid rgba(255,255,255,.35); border-radius: 22px; background: #fff; box-shadow: 0 20px 60px rgba(8, 25, 44, .3); color: #142235; font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; text-align: left; animation: msinfor-dialog-in .18s ease-out; }
.msinfor-dialog-icon { display: grid; place-items: center; width: 42px; height: 42px; margin-bottom: 13px; border-radius: 50%; color: #1768ac; background: #e5f0f9; font-size: 1.4rem; font-weight: 850; }
.msinfor-dialog-title { margin: 0; color: #17476f; font-size: 1.15rem; font-weight: 800; }
.msinfor-dialog-message { margin: 10px 0 22px; color: #526273; line-height: 1.5; white-space: pre-wrap; overflow-wrap: anywhere; }
.msinfor-dialog-actions { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.msinfor-dialog-actions.is-single { grid-template-columns: 1fr; }
.msinfor-dialog-actions button { width: 100%; min-height: 46px; margin: 0; padding: 11px 12px; border: 0; border-radius: 12px; background: #1768ac; color: #fff; cursor: pointer; font: inherit; font-weight: 750; }
.msinfor-dialog-actions button:focus-visible { outline: 3px solid #82bce9; outline-offset: 3px; }
.msinfor-dialog-actions .msinfor-dialog-cancel { color: #17476f; background: #e5f0f9; }
.msinfor-dialog-actions .msinfor-dialog-cancel:hover { background: #d6e8f6; }
.msinfor-dialog-actions .msinfor-dialog-confirm:hover { background: #12558e; }
.msinfor-dialog-actions .msinfor-dialog-confirm.danger { background: #b42318; }
.msinfor-dialog-actions .msinfor-dialog-confirm.danger:hover { background: #8f1c13; }
@keyframes msinfor-dialog-in { from { opacity: 0; transform: translateY(8px) scale(.98); } to { opacity: 1; transform: translateY(0) scale(1); } }
@media (prefers-reduced-motion: reduce) { .msinfor-dialog-panel { animation: none; } }
.notice-card { position: relative; display: block; text-align: left; padding: 16px 14px; border: 1px solid #c9e0ee; border-radius: 18px; background: #fff; box-shadow: 0 5px 14px rgba(33, 80, 117, .06); transition: border-color .18s ease, box-shadow .18s ease, background-color .18s ease; }
.notice-card[role="group"] { cursor: pointer; }
.notice-card.is-selected { border: 2px solid #1976b4; background: #fafdff; box-shadow: 0 6px 16px rgba(25, 118, 180, .14); }
.notifications-list { display: grid; gap: 10px; margin-top: 10px; }
.notice-card-secondary { padding-top: 14px; padding-bottom: 14px; }
.notice-card-secondary .notice-content h2 { font-size: .95rem; }
.notice-icon { flex: 0 0 44px; width: 44px; height: 44px; display: grid; place-items: center; border-radius: 50%; background: #e4f3fd; color: #1476b4; font-size: 1.85rem; font-weight: 700; }
.notice-content { display: flex; width: 100%; min-width: 0; flex-direction: column; gap: 6px; }
.notice-content h2 { margin: 0; padding-right: 24px; color: #143856; font-size: 1rem; line-height: 1.25; }
.notice-content p { margin: 0; color: #34536d; font-size: .92rem; line-height: 1.35; }
.notice-content .notice-subtitle { margin: 0; color: #1f5479; font-size: .86rem; font-weight: 700; white-space: nowrap; overflow-x: auto; overflow-y: hidden; scrollbar-width: none; -webkit-overflow-scrolling: touch; }
.notice-content .notice-subtitle::-webkit-scrollbar { display: none; }
.notice-content .notice-subtitle:focus-visible { outline: 2px solid #77bce6; outline-offset: 2px; }
.notice-content .notice-client { width: 100%; min-width: 0; margin: 0; color: #1f5479; font-size: .86rem; font-weight: 700; white-space: nowrap; overflow-x: auto; overflow-y: hidden; scrollbar-width: none; -webkit-overflow-scrolling: touch; }
.notice-content .notice-message { color: #1f5479; font-size: .86rem; font-weight: 700; }
.notice-products { display: flex; min-width: 0; flex-direction: column; align-items: flex-start; gap: 6px; margin-top: 0; }
.notice-products > .notice-products { width: 100%; }
.notice-products-observation { margin: 0; color: #34536d; font-size: .82rem; font-weight: 700; line-height: 1.35; }
.notice-products-observation:not(.notice-products-current-value) { width: 100%; min-width: 0; white-space: nowrap; overflow-x: auto; overflow-y: hidden; scrollbar-width: none; -webkit-overflow-scrolling: touch; }
.notice-content .notice-client::-webkit-scrollbar, .notice-products-observation::-webkit-scrollbar { display: none; }
.notice-content .notice-client:focus-visible, .notice-products-observation:focus-visible { outline: 2px solid #77bce6; outline-offset: 2px; }
.notice-products-current-value { display: flex; width: 100%; min-width: 0; align-items: baseline; justify-content: space-between; flex-wrap: nowrap; gap: 8px; padding: 9px 11px; border: 1px solid #9ecde8; border-left: 4px solid #1976b4; border-radius: 10px; background: #eaf6fd; color: #123a5f; font-size: .86rem; font-weight: 800; overflow-x: auto; overflow-y: hidden; scrollbar-width: none; -webkit-overflow-scrolling: touch; }
.notice-products-current-value span, .notice-products-current-value strong { flex: 0 0 auto; white-space: nowrap; }
.notice-products-current-value strong { color: #0b4978; font-size: 1.14rem; font-weight: 900; line-height: 1.15; }
.notice-products-summary { margin: 0 0 6px; color: #5e778c; font-size: .72rem; font-weight: 900; line-height: 1.25; }
.notice-products-toggle { min-height: 27px; border: 1px solid #b9dceb; border-radius: 999px; padding: 4px 11px; background: #f3faff; color: #1f668f; cursor: pointer; font-size: .72rem; font-weight: 900; }
.notice-products-toggle:hover { border-color: #6eb4d8; background: #e6f5fd; }
.notice-products-toggle:focus-visible { outline: 3px solid #77bce6; outline-offset: 2px; }
.notice-products-details { display: grid; min-width: 0; width: 100%; gap: 4px; margin-top: 0; padding: 7px 8px; border: 1px solid #d7eaf4; border-radius: 9px; background: #f8fcfe; }
.notice-product-row, .notice-products-total { display: grid; min-width: 0; grid-template-columns: minmax(0, 1fr) auto; align-items: baseline; column-gap: 12px; color: #34536d; font-size: .73rem; line-height: 1.3; }
.notice-product-row span, .notice-products-total span { min-width: 0; overflow-wrap: anywhere; white-space: normal; }
.notice-product-row strong, .notice-products-total strong { width: 82px; min-width: 82px; max-width: 82px; overflow: hidden; color: #1f5479; font-size: .72rem; text-align: right; text-overflow: ellipsis; white-space: nowrap; }
.notice-products-more { margin: 1px 0 0; color: #5e778c; font-size: .7rem; }
.notice-products-total { margin-top: 3px; padding-top: 5px; border-top: 1px solid #d7eaf4; font-weight: 900; }
.notice-controls { display: flex; width: 100%; min-width: 0; align-items: center; justify-content: space-between; gap: 10px; }
.notification-card-actions { display: flex; flex: 0 0 auto; align-items: center; gap: 7px; margin-left: auto; }
.notification-icon-button { width: 31px; height: 31px; display: grid; place-items: center; border: 1px solid #b9dceb; border-radius: 9px; padding: 0; background: #f3faff; color: #1f668f; cursor: pointer; font-size: 1rem; font-weight: 900; line-height: 1; transition: background-color .15s ease, border-color .15s ease, color .15s ease, transform .15s ease; }
.notification-icon-button svg { width: 16px; height: 16px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.notification-icon-button:hover { border-color: #6eb4d8; background: #e6f5fd; transform: translateY(-1px); }
.notification-icon-read { color: #1976b4; }
.notification-icon-delete { border-color: #e9b9bb; background: #fff7f7; color: #bb3f43; }
.notification-icon-delete:hover { border-color: #d9898c; background: #ffeded; }
.notification-icon-button:disabled { cursor: default; opacity: .55; transform: none; }
.notification-icon-button:focus-visible { outline: 3px solid #77bce6; outline-offset: 2px; }
.unread-dot { position: absolute; top: 18px; right: 16px; width: 12px; height: 12px; border-radius: 50%; background: #1e93db; box-shadow: 0 0 0 5px #e8f7ff; }
.notice-empty { margin: 0; padding: 24px 14px; border: 1px dashed #c9e0ee; border-radius: 16px; color: #5e778c; font-size: .88rem; }
.selection-hint { margin: 14px 0 0; color: #5e778c; font-size: .76rem; line-height: 1.35; }
.notifications-empty-standalone { margin: 18px 16px 0; padding: 22px 16px; color: #5e778c; text-align: center; font-size: .95rem; }
.divider { height: 1px; margin: 16px 0 14px; background: #c9dce8; }
.actions { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.bulk-actions { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-top: 10px; }
.bulk-notification-panel { margin: 14px 24px 0; padding: 14px; border: 1px solid #c5e1ef; border-radius: 16px; background: #f5fbfe; box-shadow: 0 4px 12px rgba(33, 80, 117, .05); }
.content-card .bulk-notification-panel { margin: 16px 0 0; }
.bulk-notification-panel h2 { margin: 0; color: #48657b; font-size: .86rem; font-weight: 900; text-align: left; }
.button { min-height: 46px; border-radius: 11px; border: 1px solid transparent; padding: 10px 14px; cursor: pointer; font-weight: 800; font-size: .93rem; transition: transform .15s ease, filter .15s ease; }
.button:hover { filter: brightness(.97); transform: translateY(-1px); }
.button:disabled { cursor: default; opacity: .72; transform: none; }
.button:focus-visible { outline: 3px solid #77bce6; outline-offset: 2px; }
.button-primary { background: #1976b4; color: #fff; }
.button-secondary { background: #eef7fc; color: #1f668f; border-color: #b9dceb; }
.button-danger { background: #fff7f7; color: #bb3f43; border-color: #e9b9bb; }
.history-button { display: block; width: calc(100% - 48px); min-height: 44px; margin: 14px 24px 8px; padding: 10px 14px; border: 1px solid #b9dceb; border-radius: 11px; background: #eef7fc; color: #1f668f; cursor: pointer; font-size: .9rem; font-weight: 800; transition: transform .15s ease, background-color .15s ease, color .15s ease; }
.history-button:hover { background: #e3f3fb; color: #145b88; transform: translateY(-1px); }
.history-button:focus-visible { outline: 3px solid #77bce6; outline-offset: 2px; }
.change-identity-button { display: block; width: calc(100% - 48px); min-height: 46px; margin: 8px 24px 24px; padding: 10px 14px; border: 1px solid #1976b4; border-radius: 11px; background: #fff; color: #1976b4; cursor: pointer; font-size: .9rem; font-weight: 800; transition: transform .15s ease, background-color .15s ease, color .15s ease; }
.change-identity-button:hover { background: #edf8fe; color: #145b88; transform: translateY(-1px); }
.change-identity-button:focus-visible { outline: 3px solid #77bce6; outline-offset: 2px; }
.notice-card.is-read .unread-dot { display: none; }
.is-read .status-chip { color: #426078; background: #eef3f6; }
.is-deleted .notice-card { opacity: .48; }

@media (max-width: 430px) {
  .page-shell { padding: 0; }
  .notification-app { min-height: 100dvh; border-radius: 0; }
  .brand-header { padding: 30px 24px; }
  .content-card, .history-button, .change-identity-button, .bulk-notification-panel { margin-left: 16px; margin-right: 16px; }
  .history-button { width: calc(100% - 32px); }
  .change-identity-button { width: calc(100% - 32px); }
  .active-access-panel { margin-left: 16px; margin-right: 16px; }
  .actions, .bulk-actions { grid-template-columns: 1fr; }
}

@media (max-width: 365px) {
  .notice-products-observation:not(.notice-products-current-value) { font-size: .76rem; }
}
