/* Loaded only by non-registration pages. Desktop styles stay untouched. */
.mobile-agenda { display:none; }
@media screen and (max-width:767px) {
    body { font-size:14px; }
    body, body h1, body h2, body h3, body h4, body button, body input, body select { font-family:Arial,'Malgun Gothic',sans-serif!important; }
    body .standalone-back { position:static!important; display:inline-flex; margin:10px 12px; }
    body main, body .result-page, body .start-wrap, body.portal-inner>#wrap>#info { width:calc(100% - 24px)!important; min-width:0!important; max-width:none!important; }
    body .panel, body .results, body.portal-inner .info_sectionz { min-width:0; padding:16px!important; border-radius:14px!important; }
    body header, body .results-brand { min-height:0!important; padding:30px 20px 46px!important; }
    body header h1, body .results-brand h1 { font-size:28px!important; line-height:1.3!important; }
    body.portal-inner>#wrap>#header { min-height:160px!important; padding:26px 16px 48px!important; }
    body.portal-inner>#wrap>#header .section { width:100%!important; }
    body.portal-lobby>#wrap>#header { min-height:0!important; padding:28px 20px 48px!important; }
    body h2, body h3, body p, body label { overflow-wrap:anywhere; }
    body button, body .course-action, body .file-button { min-height:44px!important; height:auto; line-height:1.4; white-space:normal; touch-action:manipulation; }
    body input:not([type=checkbox]):not([type=radio]):not([type=hidden]), body select, body textarea { box-sizing:border-box; min-width:0!important; max-width:100%!important; min-height:44px!important; font-size:16px!important; }
    body input[type=checkbox], body input[type=radio] { width:20px!important; height:20px!important; min-height:20px!important; flex-shrink:0; vertical-align:middle; }
    body button:hover { transform:none!important; }
    body .controls, body .weights, body .advanced-grid, body .room-controls, body .course-form-grid { display:grid!important; grid-template-columns:minmax(0,1fr)!important; gap:14px!important; }
    body .toolbar, body .room-toolbar, body .room-actions, body .nearby-options, body .result-connect { display:flex!important; flex-direction:column; align-items:stretch!important; gap:12px; }
    body .room-toolbar>*, body .room-controls>*, body .toolbar>*, body .search-wrap { min-width:0!important; width:100%!important; box-sizing:border-box; }
    body .search-wrap { position:relative; }
    body .search-clear { min-width:44px!important; width:44px!important; min-height:44px!important; top:50%!important; transform:translateY(-50%)!important; }
    body .search-wrap input { padding-right:48px!important; }
    body .weekday-options { gap:10px; }
    body .weekday-options label, body .nearby-options label { min-height:44px; display:flex; align-items:center; gap:8px; }
    body .room-grid, body .course-cards, body .selected-groups { grid-template-columns:minmax(0,1fr)!important; }
    body .ready-summary { display:grid!important; grid-template-columns:repeat(2,minmax(0,1fr)); }
    body .ready-summary li { min-width:0; padding:14px 8px!important; }
    body .setting-form { overflow:visible!important; }
    body.portal-settings .setting-form>.tbl_subst02 tr { grid-template-columns:minmax(0,1fr)!important; }
    body.portal-settings .setting-form th { text-align:left; padding:12px 10px 4px!important; border-bottom:0!important; }
    body.portal-settings .setting-form td { padding:4px 10px 12px!important; }
    body .setting-save { display:grid!important; grid-template-columns:repeat(2,minmax(0,1fr)); }
    body .setting-save button { width:100%; padding:10px!important; }
    body.portal-inner .captcha-practice { padding:22px 16px!important; }
    body .portal-login, body.portal-login #info { min-width:0; }
    body.portal-login #header { padding:28px 20px!important; }
    body.portal-login .visual_top_txt>p.e { font-family:Arial,'Malgun Gothic',sans-serif!important; font-size:28px!important; font-weight:700!important; color:#fff!important; line-height:1.35!important; text-shadow:none!important; }
    body .section-title-actions { flex-wrap:wrap!important; }
    body .section-title-actions .reset-button { width:100%!important; max-width:100%; box-sizing:border-box; flex:0 0 100%!important; min-height:44px!important; margin:8px 0 0!important; padding:10px 12px!important; font-size:13px!important; text-align:center; }
    body.portal-login .login_default fieldset p { display:flex!important; flex-direction:column; align-items:stretch; gap:8px; height:auto!important; margin-bottom:16px!important; }
    body.portal-login .login_default fieldset label { width:100%!important; padding:0!important; height:auto!important; line-height:1.5!important; }
    body.portal-login .login_default fieldset input.int { width:100%!important; margin:0!important; }
    body .course-list { max-height:none!important; overflow:visible!important; }
    body .course-row { display:grid!important; grid-template-columns:repeat(3,minmax(0,1fr))!important; min-width:0!important; padding:14px!important; margin:10px 0; gap:10px; border:1px solid #dbe4ea; border-radius:12px; }
    body .course-row>div { grid-column:1/-1; grid-row:1; min-width:0; }
    body .course-row strong { font-size:16px; line-height:1.5; overflow-wrap:anywhere; }
    body .course-row small { display:block; margin-top:5px; font-size:12px; }
    body .course-row label { min-width:0; min-height:44px; display:flex; align-items:center; gap:6px; font-size:13px; }
    body .course-row .department { display:block!important; grid-column:1/3; font-size:12px; overflow-wrap:anywhere; }
    body .course-row .rating { display:block!important; text-align:right; }
    body .selection-chip { max-width:100%; white-space:normal; overflow-wrap:anywhere; }
    body .selection-chip button { flex-shrink:0; min-width:44px; }
    body .course-pagination, body .result-tabs { flex-wrap:wrap!important; gap:6px; }
    body .course-pagination button { min-width:40px; padding:8px!important; }
    body .course-table-wrap, body .file-table-wrap, body #favorites { overflow:visible!important; border:0!important; }
    body .mobile-table-note { display:none!important; }
    body table.mobile-records, body table.mobile-records tbody { display:block!important; width:100%!important; min-width:0!important; border:0!important; }
    body table.mobile-records colgroup, body table.mobile-records thead { display:none!important; }
    body table.mobile-records tr { display:block; width:100%; margin:12px 0; padding:12px; border:1px solid #dbe4ea; border-radius:12px; box-sizing:border-box; background:#fff; }
    body table.mobile-records td { display:block!important; width:auto!important; min-width:0; padding:8px 0!important; text-align:left!important; border:0!important; overflow-wrap:anywhere; }
    body table.mobile-records td[data-label]::before { content:attr(data-label); display:block; margin-bottom:4px; color:#637487; font-size:12px; font-weight:600; }
    body .course-management-page, body .course-name { overflow-wrap:anywhere; }
    body .course-actions { grid-template-columns:repeat(2,minmax(0,1fr))!important; }
    body .favorite-toggle { margin:0!important; width:44px!important; }
    body .result-actions { grid-template-columns:minmax(0,1fr)!important; }
    body .result-actions button, body .result-actions select { width:100%; }
    body .result-manage, body .result-export { display:grid; grid-template-columns:minmax(0,1fr); width:100%; padding:0; }
    body .result-export .export-label { position:static; }
    body .course-card h4, body .course-card .course-time, body .course-card .reason, body .course-card .course-summary { display:block; height:auto; max-height:none; overflow:visible; -webkit-line-clamp:unset; line-height:1.6; }
    body .timetable { display:none!important; }
    body .mobile-agenda { display:grid; gap:12px; margin:18px 0; }
    .mobile-agenda section { border:1px solid #dbe4ea; border-radius:12px; background:#fff; padding:14px; }
    .mobile-agenda h3 { margin:0 0 10px; font-size:16px; color:#173853; }
    .mobile-agenda article { padding:10px 0; border-top:1px solid #e7edf1; }
    .mobile-agenda time { display:block; color:#315f86; font-size:14px; font-weight:700; margin-bottom:5px; }
    .mobile-agenda strong { display:block; font-size:15px; overflow-wrap:anywhere; }
    .mobile-agenda small { display:block; margin-top:5px; color:#637487; overflow-wrap:anywhere; }
    body .site-footer { padding:20px 16px!important; }
    body .site-footer p { line-height:2!important; }
    body .site-footer .legal-link { display:inline-block; padding:6px 2px; }
    body .unofficial-notice { max-height:40dvh; overflow-y:auto!important; }
}
/* Compact mobile information hierarchy; none of these rules apply to desktop. */
@media screen and (max-width:767px) {
    body:not(.sugang-main) #header .section {
        height:auto!important; min-height:0!important; max-height:none!important;
        display:flow-root; overflow:visible!important;
    }
    body:not(.sugang-main) #header .logout_ment {
        position:static!important; height:auto!important; max-height:none!important;
        white-space:normal!important; overflow:visible!important;
        word-break:keep-all; overflow-wrap:anywhere; line-height:1.7!important;
    }
    body.portal-inner>#wrap>#info, body .start-wrap,
    body.results-page-body .result-page, body.recommendation-page-body main,
    body:has(.room-header) main {
        margin-top:16px!important;
    }
    body.portal-inner>#wrap>#header, body.portal-lobby>#wrap>#header {
        padding-bottom:24px!important; flex-shrink:0;
    }
    body header, body .results-brand { height:auto!important; max-height:none!important; overflow:visible!important; flex-shrink:0; }
    body .section-title, body .start-section-heading, body .management-section-heading {
        height:auto!important; min-height:0!important; align-items:flex-start!important;
    }
    body .section-title>div, body .start-section-heading>div, body .management-section-heading>div {
        min-width:0; flex:1; height:auto!important;
    }
    body .section-title p, body .start-section-heading p, body .management-section-heading p,
    body .room-note, body .lobby-tab-note, body .legal-intro {
        position:static!important; height:auto!important; max-height:none!important;
        white-space:normal!important; overflow:visible!important;
        word-break:keep-all; overflow-wrap:anywhere; line-height:1.7!important;
    }
    body .section-title>span, body .section-number { flex-shrink:0; }
    body .panel, body .start-hero, body .course-editor { box-shadow:0 4px 16px rgba(20,36,58,.045)!important; }
    body button:active, body .start-login:active { filter:brightness(.94); }
    body button:focus-visible, body a:focus-visible { outline:3px solid #86abc8; outline-offset:3px; }
}
@media screen and (max-width:767px) {
    body.portal-inner>#wrap>#header { min-height:0!important; padding:20px 16px 40px!important; }
    body.portal-inner>#wrap>#header .logout_ment { font-size:13px!important; }
    body.portal-inner>#wrap>#header .logout_ment:before { margin-bottom:6px; }
    body .section-title { gap:10px!important; }
    body .section-title h2 { font-size:18px!important; line-height:1.4; }
    body .section-title p { font-size:13px!important; line-height:1.6; }
    body.course-management-page .course-table-wrap table.mobile-records tr { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:0 8px; position:relative; }
    body.course-management-page .course-table-wrap table.mobile-records td:nth-child(3) { grid-column:1/-1; grid-row:1; padding-right:44px!important; font-size:17px; }
    body.course-management-page .course-table-wrap table.mobile-records td:nth-child(3)::before { display:none; }
    body.course-management-page .course-table-wrap table.mobile-records td:first-child { position:absolute; right:12px; top:8px; }
    body.course-management-page .course-table-wrap table.mobile-records td:first-child::before { display:none; }
    body.course-management-page .course-table-wrap table.mobile-records td:nth-child(6), body.course-management-page .course-table-wrap table.mobile-records td:last-child { grid-column:1/-1; }
    body.course-management-page .course-table-wrap table.mobile-records td:last-child { border-top:1px solid #dbe4ea!important; margin-top:8px; padding-top:12px!important; }
    body.course-management-page .course-table-wrap { height:min(62vh,620px); min-height:460px; overflow:auto!important; overscroll-behavior:contain; scrollbar-gutter:stable; }
    body.course-management-page .course-table-wrap table.mobile-records tr { margin:8px 0; padding:10px; }
    body.course-management-page .course-table-wrap table.mobile-records td { padding:5px 0!important; }
    body.course-management-page .course-table-wrap table.mobile-records td:last-child { margin-top:5px; padding-top:8px!important; }
    body.course-management-page .course-actions { grid-template-columns:repeat(3,minmax(0,1fr))!important; gap:4px!important; }
    body.course-management-page .course-actions select,
    body.course-management-page .course-actions .course-statuses { grid-column:1/-1; }
    body.course-management-page .course-actions .course-action { padding:5px 3px!important; font-size:10px!important; }
    body .mobile-agenda[data-mobile-days] > section:not(.mobile-day-active) { display:none; }
    body .mobile-day-choices { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px; }
    body .mobile-day-choices button { padding:10px 4px; border:1px solid #d6e0e9; border-radius:10px; background:#fff; color:#315f86; font-size:13px; }
    body .mobile-day-choices button[aria-pressed=true] { background:#203c55; border-color:#203c55; color:#fff; }
    body .result-manage { grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; }
    body .result-manage button:first-child { grid-column:1/-1; }
    body .result-export { grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; }
    body .result-export .export-label { grid-column:1/-1; }
    body .portal-eyebrow, body .eyebrow { letter-spacing:1px!important; }
}
.mobile-only { display:none!important; }
.mobile-real-mode-panel { display:contents; }
.mobile-result-info { display:none; }
@media screen and (max-width:767px) {
    body .mobile-result-status { display:block!important; margin:0 0 14px; color:#53616d; font-size:13px; line-height:1.6; overflow-wrap:anywhere; }
    body .mobile-result-info:not(.mobile-folded) { display:block; padding:12px; border:1px solid #d6e0e9; border-radius:12px; }
    body #resultTabs { width:100%!important; box-sizing:border-box; grid-template-columns:repeat(5,minmax(0,1fr)); }
    body #resultTabs button { width:100%!important; min-width:0!important; min-height:48px!important; font-size:13px!important; margin:0!important; }
    body.results-page-body .mobile-result-choice-summary {
        display:block;
        margin:-3px 0 12px;
        padding:9px 11px;
        border-radius:10px;
        background:#edf4f8;
        color:#315f86;
        font-size:11px;
        font-weight:800;
        line-height:1.5;
        text-align:center;
        overflow-wrap:anywhere;
    }
    body.results-page-body .result-group-label { grid-column:1/-1; width:100%; }
    body #resultDetail { display:flex!important; flex-direction:column; }
    body #resultDetail .result-head { order:1; }
    body #resultDetail .mobile-agenda { order:2; }
    body #resultDetail .validation { order:3; margin-top:12px; }
    body #resultDetail > .mobile-disclosure { order:4; }
    body #resultDetail .course-cards { order:5; }
    body .room-pagination button, body .course-pagination button { min-width:44px; min-height:44px; }
    body input:focus-visible, body select:focus-visible, body textarea:focus-visible { outline:3px solid #86abc8; outline-offset:2px; }
    body .mobile-disclosure { cursor:pointer; }
}
@media screen and (max-width:767px) {
    body.portal-inner>#wrap>#header { padding:12px 16px!important; }
    body.portal-lobby>#wrap>#header { padding:16px 20px!important; }
    body.portal-lobby #header h1 { font-size:24px!important; margin:8px 0!important; }
    body #header .portal-eyebrow, body .eyebrow { display:none!important; }
    body .logout_ment::before { display:none!important; }
    body .results-brand h1, body.recommendation-page-body header h1, body .room-header h1 { font-size:23px!important; margin:8px 0!important; }
    body .results-brand, body.recommendation-page-body header, body .room-header { padding:16px 20px!important; min-height:0!important; }
    body .start-section-heading, body .management-section-heading { margin-bottom:12px!important; }
    body .result-tabs { display:grid!important; grid-template-columns:repeat(5,minmax(0,1fr)); gap:3px!important; }
    body .result-tabs button { padding:8px 2px!important; font-size:12px!important; min-width:0; }
    body .file-panel > p, body .review-manager > p { line-height:1.6!important; }
}
@media screen and (max-width:767px) {
    body .mobile-disclosure { display:flex!important; align-items:center; width:100%; min-height:48px; padding:12px 14px; margin:12px 0; border:1px solid #d6e0e9; border-radius:12px; background:#f4f7fa; color:#203c55; font-size:14px; font-weight:600; text-align:left; line-height:1.5; white-space:normal; overflow-wrap:anywhere; }
    body .mobile-folded { display:none!important; }
    body:not(.sugang-main) .unofficial-notice { position:static!important; inset:auto!important; transform:none!important; width:calc(100% - 24px)!important; max-width:680px!important; max-height:none!important; margin:24px auto!important; box-sizing:border-box; overflow:visible!important; box-shadow:none!important; }
    body .result-actions { gap:8px!important; }
    body .result-actions .mobile-disclosure { margin:0; }
    body .results-brand, body .recommendation-brand { min-height:0!important; padding-top:16px!important; padding-bottom:16px!important; }
}
@media screen and (min-width:360px) and (max-width:767px) {
    body .controls, body .weights, body .advanced-grid { grid-template-columns:repeat(2,minmax(0,1fr))!important; }
    body .controls label, body .weights label, body .advanced-grid label { min-width:0; }
    body .controls input, body .weights select, body .advanced-grid input { width:100%; }
}

/* Mobile UX v15: balanced navigation and page-specific information density. */
@media screen and (max-width:767px) {
    body:not(.sugang-main) {
        --mobile-gutter:16px;
        --mobile-radius:16px;
        background:#f5f7f9;
        color:#14243a;
        -webkit-text-size-adjust:100%;
    }
    body:not(.sugang-main) .gnb {
        position:relative;
        z-index:10;
        padding:10px 12px!important;
        border-bottom:1px solid rgba(255,255,255,.08);
        background:#14243a;
    }
    body:not(.sugang-main) .gnb ul {
        display:grid!important;
        grid-template-columns:repeat(6,minmax(0,1fr))!important;
        gap:6px!important;
        width:100%!important;
        padding:0!important;
        overflow:visible!important;
    }
    body:not(.sugang-main) .gnb li { width:auto!important; min-width:0!important; margin:0!important; }
    body:not(.sugang-main) .gnb li.logo { display:none!important; }
    body:not(.sugang-main) .gnb li:not(.logo) { grid-column:span 2; }
    body:not(.sugang-main):not(.legal-page) .gnb li:nth-last-child(2),
    body:not(.sugang-main):not(.legal-page) .gnb li:last-child { grid-column:span 3; }
    body:not(.sugang-main) .gnb li a {
        display:flex!important;
        width:100%!important;
        min-width:0!important;
        height:auto!important;
        min-height:42px!important;
        padding:7px 6px!important;
        border:1px solid transparent;
        border-radius:11px;
        color:#e8eff5!important;
        font-size:12px!important;
        font-weight:750!important;
        letter-spacing:-.1px;
        line-height:1.35!important;
        white-space:normal;
        text-align:center;
        align-items:center;
        justify-content:center;
        box-sizing:border-box;
    }
    body.legal-page .gnb ul a { word-break:keep-all; overflow-wrap:normal; }
    body:not(.sugang-main) .gnb li.on a,
    body:not(.sugang-main) .gnb li a[aria-current="page"] {
        border-color:#49769b;
        background:#315f86!important;
        box-shadow:inset 0 -3px #ed6a3a;
        color:#fff!important;
    }
    body:not(.sugang-main) main,
    body:not(.sugang-main) .result-page,
    body:not(.sugang-main) .start-wrap,
    body.portal-inner:not(.sugang-main)>#wrap>#info {
        width:calc(100% - (var(--mobile-gutter) * 2))!important;
        max-width:none!important;
    }
    body:not(.sugang-main) .panel,
    body:not(.sugang-main) .results,
    body.portal-inner:not(.sugang-main) .info_sectionz,
    body:not(.sugang-main) .start-hero {
        box-sizing:border-box!important;
        padding:18px!important;
        border-radius:var(--mobile-radius)!important;
        box-shadow:0 5px 18px rgba(20,36,58,.055)!important;
    }
    body:not(.sugang-main) .sec_tit {
        margin-bottom:18px!important;
        font-size:23px!important;
        line-height:1.3!important;
        letter-spacing:-.5px;
    }
    body:not(.sugang-main) .section-title,
    body:not(.sugang-main) .start-section-heading,
    body:not(.sugang-main) .management-section-heading { gap:10px!important; }
    body:not(.sugang-main) .section-title>span,
    body:not(.sugang-main) .section-number,
    body:not(.sugang-main) .management-section-heading>span {
        width:38px!important;
        height:38px!important;
        flex:0 0 38px!important;
        border-radius:13px!important;
        box-shadow:none!important;
    }
    body:not(.sugang-main) .section-title h2,
    body:not(.sugang-main) .start-section-heading h2,
    body:not(.sugang-main) .management-section-heading h2 {
        font-size:19px!important;
        line-height:1.35!important;
        letter-spacing:-.35px;
    }
    body:not(.sugang-main) .section-title p,
    body:not(.sugang-main) .start-section-heading p,
    body:not(.sugang-main) .management-section-heading p {
        margin-top:4px!important;
        color:#667784!important;
        font-size:12.5px!important;
        line-height:1.65!important;
        word-break:keep-all;
        overflow-wrap:break-word;
    }
    body:not(.sugang-main) button,
    body:not(.sugang-main) .start-login,
    body:not(.sugang-main) .file-button {
        border-radius:11px!important;
        font-size:13px!important;
        font-weight:750!important;
    }
    body:not(.sugang-main) input:not([type=checkbox]):not([type=radio]):not([type=hidden]),
    body:not(.sugang-main) select,
    body:not(.sugang-main) textarea {
        min-height:46px!important;
        padding:10px 12px!important;
        border-color:#cfdbe5!important;
        border-radius:11px!important;
        background:#fff;
    }
    body:not(.sugang-main) .service-warning,
    body:not(.sugang-main) .room-note,
    body:not(.sugang-main) .lobby-tab-note,
    body:not(.sugang-main) .practice-guide,
    body:not(.sugang-main) .applied-summary {
        padding:13px 14px!important;
        border-radius:12px!important;
        font-size:12px!important;
        line-height:1.65!important;
    }
    body:not(.sugang-main) .mobile-disclosure {
        min-height:44px!important;
        margin:10px 0!important;
        padding:10px 13px!important;
        border-radius:11px!important;
        background:#f2f6f9;
        font-size:13px!important;
    }
    body:not(.sugang-main) .site-footer {
        min-height:68px!important;
        margin-top:36px!important;
        padding:16px!important;
    }

    body.portal-lobby>#wrap>#header {
        min-height:0!important;
        padding:20px var(--mobile-gutter)!important;
    }
    body.portal-lobby #header h1 {
        margin:10px 0 8px!important;
        font-size:27px!important;
        line-height:1.2!important;
        letter-spacing:-1px!important;
    }
    body.portal-lobby #header .logout_ment { font-size:13px!important; line-height:1.65!important; }
    body.portal-lobby .start-wrap { margin-top:14px!important; }
    body.portal-lobby .start-hero { padding:16px!important; }
    body.portal-lobby .start-actions { gap:9px; margin-top:15px; }
    body.portal-lobby .start-actions .start-login { min-height:46px!important; padding:10px 14px!important; }
    body.portal-lobby .start-section-title {
        margin:26px 2px 10px!important;
        padding-left:10px;
        font-size:18px!important;
        letter-spacing:-.3px;
    }
    body.portal-lobby .ready-summary { margin-top:10px!important; border-radius:14px!important; }
    body.portal-lobby .ready-summary li { padding:12px 7px!important; font-size:11.5px!important; }
    body.portal-lobby .ready-summary strong { font-size:17px!important; }

    body.course-management-page .course-search {
        grid-template-columns:minmax(0,1fr) auto!important;
        min-height:0!important;
        gap:8px!important;
        padding:12px!important;
        border-radius:13px!important;
    }
    body.course-management-page .course-search label { grid-column:1!important; grid-row:1!important; }
    body.course-management-page .course-search .course-count { grid-column:2!important; grid-row:1!important; min-width:0!important; }
    body.course-management-page .course-search input { grid-column:1!important; grid-row:2!important; }
    body.course-management-page #clearCourseSearch {
        grid-column:2!important;
        grid-row:2!important;
        width:auto!important;
        min-width:68px!important;
        padding:8px 10px!important;
    }
    body.course-management-page .course-summaries { gap:8px!important; margin-bottom:10px!important; }
    body.course-management-page .priority-courses { padding:12px!important; border-radius:13px!important; }
    body.course-management-page .priority-heading { align-items:flex-start!important; }
    body.course-management-page .priority-item { padding:10px!important; border-radius:11px!important; }
    body.course-management-page .course-table-wrap {
        height:min(58vh,560px)!important;
        min-height:min(420px,58vh)!important;
        border:1px solid #dbe4ea!important;
        border-radius:13px!important;
        background:#f7f9fb;
    }
    body.course-management-page .course-table-wrap table.mobile-records tr {
        margin:7px!important;
        border-radius:12px!important;
        box-shadow:0 2px 8px rgba(20,36,58,.035);
    }
    body.course-management-page .course-actions .course-action { font-size:11px!important; }
    body.course-management-page .course-pagination { margin-top:12px!important; }

    body.portal-files .file-panel { padding:13px!important; border-radius:13px!important; }
    body.portal-files .file-panel>p:has(input[type=file]),
    body.portal-files .review-manager>p:has(input[type=file]) { display:grid!important; gap:8px!important; }
    body.portal-files input[type=file] { padding:4px!important; overflow:hidden; }
    body.portal-files input[type=file]::file-selector-button {
        min-height:36px;
        margin-right:9px;
        padding:7px 10px;
        border:0;
        border-radius:8px;
        background:#e9eff4;
        color:#29465f;
        font-weight:750;
    }
    body.portal-files .file-button { width:100%!important; }
    body.portal-files .review-manager { margin-top:14px!important; padding-top:14px!important; }
    body.portal-files .file-list { margin-top:22px!important; }

    body.portal-settings .setting-form { padding:10px!important; border-radius:13px!important; }
    body.portal-settings .setting-form>.tbl_subst02 tr { padding:2px 0; }
    body.portal-settings .setting-form th { padding:10px 9px 3px!important; font-size:12px!important; }
    body.portal-settings .setting-form td { padding:3px 9px 9px!important; }
    body.portal-settings .setting-save { gap:8px!important; margin-top:14px!important; }
    body.portal-settings .setting-save button { min-height:44px!important; margin:0!important; }
    body.portal-settings .setting-save button.reset { grid-column:1/-1; }

    body.portal-captcha .info_sectionz {
        padding:0!important;
        border:0!important;
        background:transparent!important;
        box-shadow:none!important;
    }
    body.portal-captcha .captcha-practice {
        width:100%!important;
        margin:0!important;
        padding:24px 18px!important;
        border-radius:var(--mobile-radius)!important;
    }
    body.portal-captcha .captcha-practice h2 { font-size:23px!important; }
    body.portal-captcha .captcha-practice canvas { max-width:100%; height:auto; }
    body.portal-captcha .captcha-actions { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; }
    body.portal-captcha .captcha-actions button { width:100%; min-width:0; }
    body.portal-captcha #startPractice { grid-column:1/-1; }

    body.recommendation-page-body header,
    body.results-page-body .results-brand,
    body .room-header {
        padding:20px var(--mobile-gutter)!important;
    }
    body.recommendation-page-body header h1,
    body.results-page-body .results-brand h1,
    body .room-header h1 {
        margin:9px 0!important;
        font-size:26px!important;
        line-height:1.22!important;
        letter-spacing:-.8px!important;
    }
    body.recommendation-page-body header p,
    body.results-page-body .results-brand p,
    body .room-header p { font-size:13px!important; line-height:1.65!important; }
    body.recommendation-page-body .panel,
    body.results-page-body .results { margin-top:14px!important; }
    body.recommendation-page-body .course-row { padding:12px!important; border-radius:12px!important; }
    body.recommendation-page-body .course-row strong { font-size:15px!important; }
    body.results-page-body #resultTabs { gap:4px!important; padding:4px!important; border-radius:12px!important; }
    body.results-page-body #resultTabs button { min-height:44px!important; border-radius:9px!important; }
    body.results-page-body .result-head { grid-template-columns:repeat(3,minmax(0,1fr))!important; gap:7px!important; }
    body.results-page-body .result-head>div { padding:12px 6px!important; border-radius:11px!important; }

    body .room-header { min-height:0!important; padding-top:64px!important; }
    body .room-back { top:10px!important; left:var(--mobile-gutter)!important; margin:0!important; }
    body .room-time-mode {
        display:grid!important;
        grid-template-columns:repeat(2,minmax(0,1fr));
        gap:8px!important;
        padding:11px!important;
        border-radius:12px!important;
    }
    body .room-time-mode>strong { grid-column:1/-1; }
    body .room-time-mode label { min-width:0; padding:0 10px!important; justify-content:flex-start; }
    body .room-controls { padding:14px!important; border-radius:13px!important; }
    body .nearby-controls { grid-template-columns:minmax(0,1fr)!important; }
    body .room-card { padding:14px!important; border-radius:13px!important; }
    body .room-summary { gap:7px!important; }
    body .room-metric { min-width:0; padding:11px 5px!important; border-radius:11px!important; font-size:11px!important; }
    body .room-metric b { font-size:20px!important; }
    body .room-pagination { gap:7px!important; margin-top:14px!important; }

    body.legal-page .legal-heading { margin-bottom:18px!important; padding-bottom:16px!important; }
    body.legal-page .legal-heading .sec_tit { margin-bottom:8px!important; }
    body.legal-page .legal-summary { gap:9px!important; margin-bottom:18px!important; }
    body.legal-page .legal-summary article,
    body.legal-page .legal-card,
    body.legal-page .guide-card,
    body.legal-page .policy-card,
    body.legal-page .terms-card { padding:14px!important; border-radius:13px!important; }
    body.legal-page .legal-actions { display:grid!important; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px!important; }
    body.legal-page .legal-actions a { min-width:0; min-height:44px; padding:9px!important; text-align:center; }
    body.legal-page .legal-actions a.primary { grid-column:1/-1; }
}

@media screen and (min-width:430px) and (max-width:767px) {
    body .room-controls:not(.nearby-controls) { grid-template-columns:repeat(2,minmax(0,1fr))!important; }
    body .room-controls:not(.nearby-controls) .room-actions { grid-column:1/-1!important; }
}

@media screen and (max-width:359px) {
    body:not(.sugang-main) { --mobile-gutter:12px; }
    body:not(.sugang-main) .gnb { padding:8px!important; }
    body:not(.sugang-main) .gnb li a { padding:6px 3px!important; font-size:11px!important; }
    body:not(.sugang-main) .panel,
    body:not(.sugang-main) .results,
    body.portal-inner:not(.sugang-main) .info_sectionz,
    body:not(.sugang-main) .start-hero { padding:14px!important; }
    body.course-management-page .course-search { grid-template-columns:minmax(0,1fr) 64px!important; }
    body.results-page-body .result-head { grid-template-columns:minmax(0,1fr)!important; }
}

/* Mobile UX v17: app-like navigation and task-first layouts. */
.mobile-app-nav,
.mobile-more-backdrop,
.mobile-recommend-sticky,
.mobile-room-modes,
.mobile-room-mode-note { display:none; }

@media screen and (max-width:767px) {
    body:not(.sugang-main) {
        --mobile-nav-height:68px;
        padding-bottom:calc(var(--mobile-nav-height) + env(safe-area-inset-bottom, 0px))!important;
    }
    body:not(.sugang-main).mobile-sheet-open { overflow:hidden; }
    body:not(.sugang-main) .gnb { display:none!important; }
    body:not(.sugang-main) .site-footer {
        margin-bottom:0!important;
        padding-bottom:18px!important;
    }
    .mobile-app-nav {
        position:fixed;
        z-index:950;
        right:0;
        bottom:0;
        left:0;
        display:grid;
        grid-template-columns:repeat(5,minmax(0,1fr));
        height:calc(var(--mobile-nav-height) + env(safe-area-inset-bottom, 0px));
        box-sizing:border-box;
        padding:6px max(6px,env(safe-area-inset-right,0px)) env(safe-area-inset-bottom,0px) max(6px,env(safe-area-inset-left,0px));
        border-top:1px solid rgba(204,216,225,.92);
        background:rgba(255,255,255,.96);
        box-shadow:0 -8px 26px rgba(18,39,57,.08);
        backdrop-filter:blur(16px);
    }
    .mobile-app-nav a,
    .mobile-app-nav button {
        display:flex;
        min-width:0;
        min-height:56px;
        margin:0;
        padding:4px 1px 3px;
        border:0;
        border-radius:11px;
        align-items:center;
        justify-content:center;
        flex-direction:column;
        gap:2px;
        background:transparent;
        color:#71808d;
        font:inherit;
        font-size:10px;
        font-weight:750;
        line-height:1.15;
        text-align:center;
        text-decoration:none;
        cursor:pointer;
        -webkit-tap-highlight-color:transparent;
    }
    .mobile-app-nav svg {
        width:22px;
        height:22px;
        fill:none;
        stroke:currentColor;
        stroke-width:1.8;
        stroke-linecap:round;
        stroke-linejoin:round;
    }
    .mobile-app-nav .is-active {
        background:#edf4f8;
        color:#164b73;
    }
    .mobile-app-nav .is-active span { font-weight:850; }
    .mobile-more-backdrop:not([hidden]) {
        position:fixed;
        z-index:980;
        inset:0;
        display:flex;
        padding:16px;
        align-items:flex-end;
        justify-content:center;
        background:rgba(18,34,47,.5);
        backdrop-filter:blur(2px);
    }
    .mobile-more-sheet {
        width:min(100%,520px);
        max-height:min(78vh,620px);
        padding:7px 14px calc(16px + env(safe-area-inset-bottom,0px));
        border-radius:22px 22px 18px 18px;
        background:#fff;
        box-shadow:0 24px 70px rgba(9,27,42,.3);
        overflow:auto;
        animation:mobile-sheet-in .2s ease-out;
    }
    @keyframes mobile-sheet-in { from { transform:translateY(28px); opacity:.35; } }
    .mobile-sheet-handle { width:38px; height:4px; margin:1px auto 10px; border-radius:999px; background:#d5dde3; }
    .mobile-sheet-head { display:flex; min-height:48px; align-items:center; justify-content:space-between; gap:12px; padding:2px 3px 10px; }
    .mobile-sheet-head>div { display:grid; gap:2px; }
    .mobile-sheet-head strong { color:#173b5e; font-size:20px; }
    .mobile-sheet-head span { color:#788793; font-size:11px; }
    .mobile-sheet-head button { width:42px; height:42px; border:0; border-radius:50%; background:#eef2f5; color:#405363; font-size:24px; cursor:pointer; }
    .mobile-more-links { display:grid; gap:4px; }
    .mobile-more-links a {
        display:flex;
        min-height:58px;
        padding:10px 12px;
        align-items:center;
        justify-content:space-between;
        gap:12px;
        border-radius:12px;
        color:#203b52;
        text-decoration:none;
    }
    .mobile-more-links a:active { background:#f1f5f7; }
    .mobile-more-links a span { display:grid; min-width:0; gap:3px; }
    .mobile-more-links a strong { font-size:14px; }
    .mobile-more-links a small { color:#758591; font-size:11px; line-height:1.4; overflow-wrap:anywhere; }
    .mobile-more-links a b { color:#8795a0; font-size:24px; font-weight:400; }

    /* Home: surface the current semester and the three primary tasks first. */
    body.portal-lobby #header { min-height:0!important; padding-block:24px!important; }
    body.portal-lobby #header h1 { font-size:29px!important; line-height:1.18!important; }
    body.portal-lobby .start-wrap { padding-top:12px!important; }
    body.portal-lobby .mobile-home-dashboard {
        display:block!important;
        margin:0 0 12px;
        padding:15px;
        border:1px solid #dce5eb;
        border-radius:16px;
        background:linear-gradient(145deg,#fff,#f3f8fb);
        box-shadow:0 5px 18px rgba(23,59,94,.06);
    }
    .mobile-dashboard-head { display:flex; align-items:center; justify-content:space-between; gap:10px; }
    .mobile-dashboard-head>div { display:grid; gap:3px; }
    .mobile-dashboard-head span { color:#71818e; font-size:11px; font-weight:750; }
    .mobile-dashboard-head strong { color:#173b5e; font-size:19px; }
    .mobile-dashboard-head a { min-height:38px; padding:8px 12px; border-radius:10px; background:#e7eff4; color:#315a78; font-size:12px; font-weight:800; text-decoration:none; }
    .mobile-dashboard-metrics { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:7px; margin-top:13px; }
    .mobile-dashboard-metrics>div { min-width:0; padding:10px 5px; border-radius:11px; background:#fff; text-align:center; box-shadow:inset 0 0 0 1px #e3eaef; }
    .mobile-dashboard-metrics span { display:block; color:#788793; font-size:10px; }
    .mobile-dashboard-metrics strong { display:block; margin-top:4px; color:#164b73; font-size:14px; white-space:nowrap; }
    body.portal-lobby .start-hero { padding:14px!important; }
    body.portal-lobby .start-section-heading { margin-bottom:11px!important; }
    body.portal-lobby .start-section-heading h2 { font-size:19px!important; }
    body.portal-lobby .start-actions { display:grid!important; grid-template-columns:repeat(2,minmax(0,1fr))!important; gap:8px!important; }
    body.portal-lobby .start-actions a { min-height:52px!important; padding:11px 8px!important; border-radius:12px!important; font-size:13px!important; }
    body.portal-lobby .start-actions a:first-child { grid-column:1/-1; min-height:56px!important; font-size:14px!important; }
    body.portal-lobby .ready-summary,
    body.portal-lobby .start-wrap>.start-section-title,
    body.portal-lobby .start-wrap>.lobby-tab-note { display:none!important; }
    body.portal-lobby .start-guide { margin-top:0!important; }

    /* Recommendation: a focused two-step setup followed by the existing results page. */
    body.recommendation-page-body main { padding-bottom:76px!important; }
    .mobile-recommend-steps {
        position:sticky;
        z-index:20;
        top:0;
        display:grid!important;
        grid-template-columns:repeat(3,minmax(0,1fr));
        gap:5px;
        margin:0 0 12px;
        padding:7px;
        border:1px solid #dce5eb;
        border-radius:14px;
        background:rgba(255,255,255,.96);
        box-shadow:0 5px 18px rgba(20,42,60,.07);
        backdrop-filter:blur(12px);
    }
    .mobile-recommend-steps button { display:flex; min-height:42px; padding:5px; border:0; border-radius:10px; align-items:center; justify-content:center; gap:6px; background:transparent; color:#778692; font-weight:800; cursor:pointer; }
    .mobile-recommend-steps button span { display:grid; width:20px; height:20px; border-radius:50%; place-items:center; background:#e8edf1; font-size:10px; }
    .mobile-recommend-steps button[aria-current=step] { background:#edf4f8; color:#174d74; }
    .mobile-recommend-steps button[aria-current=step] span { background:#174d74; color:#fff; }
    .mobile-recommend-steps button:disabled { opacity:.6; }
    body.recommendation-page-body .panel:not(.mobile-stage-active),
    body.recommendation-page-body .recommendation-action:not(.mobile-stage-active) { display:none!important; }
    body.recommendation-page-body .mobile-stage-next { display:block!important; width:100%; min-height:48px; margin-top:16px; border:0; border-radius:11px; background:#244f70; color:#fff; font-weight:850; cursor:pointer; }
    .mobile-recommend-sticky {
        position:fixed;
        z-index:930;
        right:0;
        bottom:calc(var(--mobile-nav-height) + env(safe-area-inset-bottom,0px));
        left:0;
        display:block!important;
        padding:9px var(--mobile-gutter);
        border-top:1px solid #dce5eb;
        background:rgba(255,255,255,.96);
        backdrop-filter:blur(12px);
    }
    .mobile-recommend-sticky button { width:100%; min-height:48px; border:0; border-radius:12px; background:#e7652f; color:#fff; font-size:14px; font-weight:850; box-shadow:0 7px 18px rgba(204,78,28,.2); cursor:pointer; }
    body.recommendation-page-body #recommend { display:none!important; }
    body.recommendation-page-body .recommendation-controls { grid-template-columns:minmax(0,1fr)!important; }
    body.recommendation-page-body .controls,
    body.recommendation-page-body .weights { grid-template-columns:repeat(2,minmax(0,1fr))!important; gap:9px!important; }
    body.recommendation-page-body .toolbar { gap:8px!important; }
    body.recommendation-page-body .selection-help { display:none!important; }
    body.recommendation-page-body .course-list { height:min(50vh,470px)!important; }
    body.recommendation-page-body[data-mobile-recommend-stage="1"] [data-ad-slot="recommendation-intro"] { display:none!important; }

    /* Room finder: one-tap current-time path, details remain available below. */
    .mobile-room-modes {
        display:grid!important;
        grid-template-columns:repeat(2,minmax(0,1fr));
        gap:5px;
        margin:0 0 12px;
        padding:5px;
        border:1px solid #d8e2e9;
        border-radius:13px;
        background:#eaf1f5;
    }
    .mobile-room-modes button { min-width:0; min-height:44px; padding:8px 6px; border:0; border-radius:9px; background:transparent; color:#687b8a; font-family:inherit; font-size:12px; font-weight:800; cursor:pointer; }
    .mobile-room-modes button[aria-selected="true"] { background:#fff; color:#174d74; box-shadow:0 2px 8px rgba(20,49,71,.09); }
    .mobile-room-mode-note { margin:0 0 12px; padding:10px 12px; border:1px solid #eed6cd; border-radius:11px; background:#fff8f5; color:#82513f; font-size:11px; line-height:1.55; overflow-wrap:anywhere; }
    body[data-mobile-room-mode="time"] .mobile-room-nearby-panel,
    body[data-mobile-room-mode="nearby"] .mobile-room-time-panel,
    body[data-mobile-room-mode="nearby"] .mobile-room-result-panel { display:none!important; }
    body[data-mobile-room-mode="time"] .mobile-room-mode-note { display:none!important; }
    body[data-mobile-room-mode="nearby"] .mobile-room-mode-note { display:block!important; }
    .mobile-room-quick { display:block!important; width:100%; min-height:50px; margin:0 0 11px; border:0; border-radius:12px; background:#e7652f; color:#fff; font-size:14px; font-weight:850; cursor:pointer; }
    body:has(> .room-header) .room-time-mode { margin-top:5px!important; }
    body:has(> .room-header) .room-note { font-size:11px!important; line-height:1.55!important; }
    body:has(> .room-header) .nearby-message { margin-block:10px!important; }

    /* Settings: separate routine actions from the destructive action. */
    body.portal-settings .setting-save { display:grid!important; grid-template-columns:repeat(2,minmax(0,1fr))!important; padding-top:12px; border-top:1px solid #e0e7ec; }
    body.portal-settings .setting-save button[type=submit] { grid-column:1/-1; order:-2; background:#164b73!important; border-color:#164b73!important; font-weight:850; }
    body.portal-settings .setting-save #saveTemporary { order:-1; }
    body.portal-settings .setting-save .reset { margin-top:8px!important; border-color:#ddc9c5!important; background:#fff5f3!important; color:#a43d2e!important; }

    /* Login and supporting content start collapsed, keeping the sign-in task first. */
    body.portal-login #info { margin-top:12px!important; }
    body.portal-login #info .mobile-disclosure { margin-top:8px!important; }
    body.portal-login #info .mt_20 { display:none!important; }
    body.portal-login .mobile-login-tips,
    body.portal-login .mobile-login-schedule { padding-top:4px; }

    /* Compact management records while preserving every action and data field. */
    body.course-management-page .course-table-wrap table.mobile-records tr { padding:9px!important; }
    body.course-management-page .course-table-wrap table.mobile-records td { min-height:28px!important; padding:3px 2px!important; font-size:11px!important; line-height:1.35!important; }
    body.course-management-page .course-table-wrap table.mobile-records td::before { font-size:10px!important; }
    body.course-management-page .course-actions { gap:5px!important; margin-top:4px!important; }
    body.course-management-page .course-actions .course-action { min-height:36px!important; padding:6px 8px!important; }

    /* Dialogs stay within the viewport and keep their main action reachable. */
    body:not(.sugang-main) dialog { max-width:calc(100vw - 20px)!important; max-height:calc(100dvh - 24px)!important; }
    body:not(.sugang-main) button,
    body:not(.sugang-main) select,
    body:not(.sugang-main) input[type=text],
    body:not(.sugang-main) input[type=search],
    body:not(.sugang-main) input[type=time],
    body:not(.sugang-main) input[type=number] { touch-action:manipulation; }
}

@media screen and (max-width:359px) {
    .mobile-app-nav a,
    .mobile-app-nav button { font-size:9px; }
    .mobile-app-nav svg { width:20px; height:20px; }
    .mobile-dashboard-metrics strong { font-size:12px; }
    body.recommendation-page-body .controls,
    body.recommendation-page-body .weights { grid-template-columns:minmax(0,1fr)!important; }
}

@media (prefers-reduced-motion:reduce) {
    .mobile-more-sheet { animation:none; }
    html:focus-within { scroll-behavior:auto; }
}

/* Mobile UX v15: calmer vertical rhythm without changing desktop or registration. */
@media screen and (max-width:767px) {
    body:not(.sugang-main) .panel,
    body:not(.sugang-main) .results { margin-bottom:16px!important; }
    body:not(.sugang-main) .section-title { margin-bottom:18px!important; }

    body.portal-settings .setting-form {
        padding:0!important;
        overflow:hidden!important;
        background:#fff!important;
    }
    body.portal-settings .setting-form>.tbl_subst02 tr {
        display:grid!important;
        grid-template-columns:94px minmax(0,1fr)!important;
        gap:0!important;
        padding:0!important;
    }
    body.portal-settings .setting-form th,
    body.portal-settings .setting-form td {
        min-width:0!important;
        min-height:54px;
        margin:0!important;
        border-bottom:1px solid #dbe4ea!important;
        box-sizing:border-box!important;
    }
    body.portal-settings .setting-form th {
        display:flex!important;
        padding:8px 10px!important;
        align-items:center;
        background:#f2f6f8!important;
        font-size:11.5px!important;
        line-height:1.45!important;
    }
    body.portal-settings .setting-form td {
        display:flex!important;
        padding:5px 7px!important;
        align-items:center;
        gap:6px;
        background:#fff!important;
    }
    body.portal-settings .setting-form td input,
    body.portal-settings .setting-form td select {
        min-height:44px!important;
        width:100%!important;
    }
    body.portal-settings .setting-form input[type=number] { flex:1 1 auto; width:auto!important; }
    body.portal-settings .setting-form .point { margin:12px!important; line-height:1.65!important; }
    body.portal-settings .setting-save { margin:0 12px 12px!important; }

    body.portal-files .file-panel { padding:12px!important; }
    body.portal-files .file-panel>p { margin-bottom:8px!important; }
    body.portal-files .review-manager { margin-top:10px!important; padding-top:10px!important; }
    body.portal-files .file-list { margin-top:18px!important; }

    body .room-time-mode { margin-bottom:10px!important; }
    body .room-controls { gap:10px!important; padding:12px!important; }
    body .room-actions button { flex:none!important; width:100%; min-height:46px!important; }
    body .room-note { margin-top:10px!important; }
    body .nearby-options { margin:10px 0!important; }
    body .room-summary { margin-bottom:14px!important; }
    body .room-grid { gap:10px!important; }
}

@media screen and (min-width:390px) and (max-width:767px) {
    body .room-controls:not(.nearby-controls) {
        grid-template-columns:repeat(2,minmax(0,1fr))!important;
    }
    body .room-controls:not(.nearby-controls)>label:nth-child(1) { grid-column:1; grid-row:1; }
    body .room-controls:not(.nearby-controls)>label:nth-child(4) { grid-column:2; grid-row:1; }
    body .room-controls:not(.nearby-controls)>label:nth-child(2) { grid-column:1/-1; grid-row:2; }
    body .room-controls:not(.nearby-controls)>label:nth-child(3) { grid-column:1/-1; grid-row:3; }
    body .room-controls:not(.nearby-controls) .room-actions { grid-column:1/-1!important; }
}

/* Mobile UX v16: page-specific polish. Desktop and the registration screen are excluded. */
@media screen and (max-width:767px) {
    /* Standalone tools keep their return action inside the hero instead of a detached full-width strip. */
    body.recommendation-page-body,
    body:has(> .room-header) { position:relative; }
    body.recommendation-page-body > .standalone-back,
    body:has(> .room-header) > .room-back {
        position:absolute!important;
        top:12px!important;
        left:var(--mobile-gutter)!important;
        z-index:20;
        width:max-content!important;
        max-width:calc(100% - (var(--mobile-gutter) * 2))!important;
        min-height:36px!important;
        margin:0!important;
        padding:8px 12px!important;
        white-space:nowrap;
    }
    body.recommendation-page-body > header,
    body:has(> .room-header) > .room-header {
        padding-top:64px!important;
    }

    /* Login hero and real-mode controls use the same contrast and spacing as the other mobile pages. */
    body.portal-login #header {
        min-height:250px!important;
        padding:24px var(--mobile-gutter) 22px!important;
    }
    body.portal-login .visual_top_txt>p.e {
        margin:8px 0!important;
        color:#fff!important;
        opacity:1!important;
        font-size:29px!important;
        line-height:1.2!important;
        letter-spacing:-.7px!important;
    }
    body.portal-login .visual_top_txt>p:not(.e) { margin:7px 0!important; }
    body.portal-login .portal-hero-logo { margin-bottom:9px!important; }
    body.portal-login #Contents,
    body.portal-login .main_notice { min-width:0!important; }
    body.portal-login .login_default,
    body.portal-login .main_notice { padding:20px!important; border-radius:var(--mobile-radius)!important; }
    body.portal-login .login_default h2,
    body.portal-login .main_notice h2 { margin-bottom:17px!important; }
    body.portal-login .login_options {
        display:grid!important;
        grid-template-columns:minmax(0,1fr)!important;
        gap:10px!important;
        margin-top:18px!important;
        padding-top:15px;
        border-top:1px solid #e1e7ec;
    }
    body.portal-login .login_options .real_mode {
        display:flex!important;
        min-height:44px;
        align-items:center;
        gap:9px;
        color:#203c55!important;
        font-weight:750;
    }
    body.portal-login .real_mode_controls {
        display:grid!important;
        grid-template-columns:minmax(0,1fr) minmax(88px,.55fr)!important;
        gap:8px!important;
        width:100%;
        margin:0!important;
    }
    body.portal-login #realModeClock { grid-column:1/-1; text-align:center; }
    body.portal-login .real_mode_help { margin-top:12px!important; padding:12px!important; }

    /* Settings remain compact without forcing longer labels into three lines. */
    body.portal-settings .setting-form>.tbl_subst02 tr {
        grid-template-columns:104px minmax(0,1fr)!important;
    }
    body.portal-settings .setting-form th {
        padding-inline:9px!important;
        word-break:keep-all;
        overflow-wrap:normal;
    }

    /* Remove the card-inside-card feeling from file management on a narrow screen. */
    body.portal-files .file-panel {
        padding:0!important;
        border:0!important;
        background:transparent!important;
    }
    body.portal-files .review-manager {
        margin-top:14px!important;
        padding:12px!important;
        border:1px solid #dce4e9;
        border-radius:12px;
        background:#f7fafc;
    }
    body.portal-files .file-list {
        margin-top:20px!important;
        padding-top:18px;
        border-top:1px solid #e0e7ec;
    }

    /* Long result sets stay inside a stable, clearly bounded list area. */
    body.course-management-page .course-table-wrap {
        height:min(52vh,500px)!important;
        min-height:min(360px,52vh)!important;
    }
    body.recommendation-page-body .course-list {
        max-height:min(58vh,540px)!important;
        overflow-y:auto!important;
        overscroll-behavior:contain;
        scrollbar-gutter:stable;
        border:1px solid #dbe4ea!important;
        border-radius:12px;
        background:#f8fafb;
    }
    body.recommendation-page-body .course-row {
        margin:0!important;
        border-width:0 0 1px!important;
        border-radius:0!important;
        background:#fff;
    }
    body.recommendation-page-body .course-row:last-child { border-bottom:0!important; }

    /* Legal headings and footer links keep a deliberate rhythm at every text length. */
    body.legal-page .legal-heading {
        display:grid!important;
        grid-template-columns:minmax(0,1fr)!important;
        gap:12px!important;
    }
    body.legal-page .legal-date {
        justify-self:start;
        margin:0!important;
    }
    body.legal-page .service-warning { margin-top:2px!important; }
    body:not(.sugang-main) .site-footer p {
        display:flex;
        flex-wrap:wrap;
        align-items:center;
        justify-content:center;
        gap:7px 12px;
        line-height:1.5!important;
    }
    body:not(.sugang-main) .site-footer .legal-link {
        min-height:32px;
        margin:0!important;
        padding:6px 1px!important;
        display:inline-flex!important;
        align-items:center;
    }
}

@media screen and (max-width:359px) {
    body.portal-settings .setting-form>.tbl_subst02 tr {
        grid-template-columns:90px minmax(0,1fr)!important;
    }
    body.portal-settings .setting-form th { font-size:11px!important; }
    body.portal-login .real_mode_controls { grid-template-columns:minmax(0,1fr)!important; }
    body.portal-login #realModeClock { grid-column:1; }
}

/* v18 precedence guard: these task-navigation rules must win over legacy mobile blocks. */
@media screen and (max-width:767px) {
    body:not(.sugang-main) .gnb { display:none!important; }
    body:not(.sugang-main) { padding-bottom:calc(68px + env(safe-area-inset-bottom,0px))!important; }
    body.portal-lobby .ready-summary,
    body.portal-lobby .start-wrap>.start-section-title,
    body.portal-lobby .start-wrap>.lobby-tab-note { display:none!important; }
    body.recommendation-page-body .panel:not(.mobile-stage-active),
    body.recommendation-page-body .recommendation-action:not(.mobile-stage-active) { display:none!important; }
    body.recommendation-page-body #recommend { display:none!important; }
    body:has(> .room-header):not(.mobile-room-custom-time) .room-controls:not(.nearby-controls)>label:nth-child(-n+3) { display:none!important; }
    body:has(> .room-header):not(.mobile-room-custom-time) .room-controls:not(.nearby-controls)>label:nth-child(4) {
        grid-column:1/-1!important;
        grid-row:auto!important;
    }
    .mobile-home-flow {
        display:block!important;
        margin:12px 0 0;
        padding:14px;
        border:1px solid #dce5eb;
        border-radius:15px;
        background:#fff;
    }
    .mobile-flow-head { display:flex; align-items:center; justify-content:space-between; gap:10px; margin-bottom:9px; }
    .mobile-flow-head>strong { color:#173b5e; font-size:16px; }
    .mobile-flow-head a,
    .mobile-flow-head button { min-height:40px; padding:8px 9px; border:0; border-radius:9px; background:#edf3f7; color:#315f86; font-family:inherit; font-size:11px; font-weight:800; text-decoration:none; cursor:pointer; }
    .mobile-home-flow[hidden] { display:none!important; }
    .mobile-home-flow ol { display:grid; gap:3px; margin:0; padding:0; list-style:none; }
    .mobile-home-flow li { display:flex; min-width:0; padding:8px 4px; align-items:center; gap:10px; border-top:1px solid #edf1f4; }
    .mobile-home-flow li:first-child { border-top:0; }
    .mobile-home-flow li>b { display:grid; flex:0 0 24px; height:24px; border-radius:8px; place-items:center; background:#e8f1f6; color:#174d74; font-size:11px; }
    .mobile-home-flow li>span { display:grid; min-width:0; gap:2px; }
    .mobile-home-flow li strong { color:#263f54; font-size:12px; }
    .mobile-home-flow li small { color:#788793; font-size:10.5px; line-height:1.45; overflow-wrap:anywhere; }
}

/* Mobile UX v20: task-first information structure without changing desktop. */
@media screen and (max-width:767px) {
    body.has-mobile-context-cta:not(.sugang-main),
    body.recommendation-page-body { padding-bottom:calc(132px + env(safe-area-inset-bottom,0px))!important; }

    /* Home order: term/credit, primary tools, then preparation status. */
    body.portal-lobby .mobile-home-dashboard { padding:14px!important; }
    .mobile-dashboard-credit { display:flex; min-height:48px; margin-top:12px; padding:10px 12px; align-items:center; justify-content:space-between; gap:10px; border-radius:11px; background:#fff; box-shadow:inset 0 0 0 1px #e0e8ed; text-decoration:none; }
    .mobile-dashboard-credit span { color:#677987; font-size:12px; font-weight:750; }
    .mobile-dashboard-credit strong { color:#164b73; font-size:18px; }
    body.portal-lobby .start-actions .recommend { order:1; grid-column:1/-1!important; min-height:56px!important; font-size:14px!important; }
    body.portal-lobby .start-actions .start-login:not(.recommend):not(.rooms) { order:2; grid-column:auto!important; min-height:52px!important; font-size:13px!important; }
    body.portal-lobby .start-actions .rooms { order:3; grid-column:auto!important; }
    .mobile-home-status { display:block!important; margin:12px 0; padding:13px 14px; border:1px solid #dce5eb; border-radius:15px; background:#fff; }
    .mobile-home-status h3 { margin:0 0 9px; color:#173b5e; font-size:15px; }
    .mobile-home-status>div { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:7px; }
    .mobile-home-status a { display:block; min-width:0; min-height:76px; padding:9px 4px; border-radius:10px; background:#f3f7f9; color:#74838f; font-size:10px; text-align:center; text-decoration:none; }
    .mobile-home-status span { display:block; min-width:0; }
    .mobile-home-status strong { display:block; margin-top:4px; color:#174d74; font-size:14px; white-space:nowrap; }
    .mobile-home-status small { display:block; margin-top:5px; color:#315f86; font-size:9px; font-weight:800; }
    .mobile-home-next-action { display:grid!important; grid-template-columns:auto minmax(0,1fr) auto; min-height:48px!important; margin-top:10px; padding:10px 12px!important; align-items:center; gap:9px; border:0!important; border-radius:11px!important; background:#174d74!important; color:#fff!important; text-align:left!important; text-decoration:none; }
    .mobile-home-next-action span { color:#c8dae7!important; font-size:10px; font-weight:750; }
    .mobile-home-next-action strong { margin:0!important; color:#fff!important; font-size:13px!important; white-space:normal!important; }
    .mobile-home-next-action b { color:#fff; font-size:20px; line-height:1; }
    .mobile-home-continue { display:grid!important; gap:7px; margin:0 0 12px; }
    .mobile-home-continue[hidden] { display:none!important; }
    .mobile-home-continue a { display:flex; min-height:46px; padding:10px 13px; align-items:center; justify-content:space-between; gap:12px; border:1px solid #dbe5eb; border-radius:12px; background:#fff; color:#174d74; font-size:12px; font-weight:800; text-decoration:none; }
    .mobile-home-continue a span { font-size:20px; line-height:1; }

    /* Recommendation is truly split into three mobile-only stages. */
    body.recommendation-page-body .setup>.section-title { display:none!important; }
    .mobile-step-heading { display:flex!important; gap:11px; align-items:flex-start; margin-bottom:17px; }
    .mobile-step-heading>span { display:grid; flex:0 0 38px; width:38px; height:38px; place-items:center; border-radius:12px; background:#14243a; color:#fff; font-size:11px; font-weight:850; }
    .mobile-step-heading>div { min-width:0; }
    .mobile-step-heading h2 { margin:1px 0 4px; color:#17202a; font-size:21px!important; }
    .mobile-step-heading p { margin:0; color:#6e7781; font-size:12px; line-height:1.6; }
    body.recommendation-page-body[data-mobile-recommend-stage="1"] .setup>.weights,
    body.recommendation-page-body[data-mobile-recommend-stage="1"] .setup>.advanced-settings { display:none!important; }
    body.recommendation-page-body[data-mobile-recommend-stage="1"] .setup>.mobile-preference-disclosure { display:none!important; }
    body.recommendation-page-body[data-mobile-recommend-stage="2"] .setup>.controls,
    body.recommendation-page-body[data-mobile-recommend-stage="2"] .setup>.service-warning { display:none!important; }
    body.recommendation-page-body[data-mobile-recommend-stage="2"] .setup>.weights.mobile-folded + .advanced-settings { display:none!important; }
    body.recommendation-page-body .setup>.mobile-preference-disclosure { margin:4px 0 8px!important; }
    .mobile-recommend-summary { display:grid!important; grid-column:1/-1; width:100%; min-width:0; margin:0 0 12px; padding:13px 14px; gap:4px; border:1px solid #d9e3ea; border-radius:13px; background:#f5f8fa; box-sizing:border-box; }
    .mobile-recommend-summary>strong { color:#173b5e; font-size:14px; }
    .mobile-recommend-summary p { margin:0; color:#263f54; font-size:12px; font-weight:800; line-height:1.55; overflow-wrap:anywhere; }
    .mobile-recommend-summary small { color:#6d7d89; font-size:11px; line-height:1.55; overflow-wrap:anywhere; }
    .mobile-recommend-summary span { margin-top:4px; padding-top:8px; border-top:1px solid #dfe7ec; color:#315f86; font-size:11px; font-weight:800; }
    body.recommendation-page-body[data-mobile-recommend-stage="3"] .catalog .section-title>span { font-size:0!important; }
    body.recommendation-page-body[data-mobile-recommend-stage="3"] .catalog .section-title>span::after { content:'03'; font-size:11px; }
    body.recommendation-page-body .recommend-presets { gap:6px; margin:12px 0 16px; }
    body.recommendation-page-body .recommend-presets>span { flex:0 0 100%; }
    body.recommendation-page-body .recommend-presets button { flex:1 1 calc(33.333% - 6px); min-width:92px; min-height:40px!important; padding:7px 8px; }
    body.recommendation-page-body .advanced-settings { margin-top:12px!important; padding:13px!important; }
    body.recommendation-page-body .advanced-grid { gap:10px!important; }
    body.recommendation-page-body .weekday-options { margin-top:10px!important; }
    .mobile-recommend-sticky>div { display:grid; grid-template-columns:auto minmax(0,1fr); gap:8px; width:min(100%,620px); margin:auto; }
    .mobile-recommend-sticky button { min-height:48px; border-radius:12px; font-size:14px; font-weight:850; cursor:pointer; }
    .mobile-recommend-sticky .mobile-step-previous { width:76px; border:1px solid #cad6df; background:#fff; color:#31546f; box-shadow:none; }
    .mobile-recommend-sticky .mobile-step-primary { width:100%; border:0; background:#e7652f; color:#fff; box-shadow:0 7px 18px rgba(204,78,28,.2); }
    .mobile-recommend-sticky .mobile-step-previous[hidden] { display:none!important; }
    .mobile-recommend-sticky .mobile-step-previous[hidden]+.mobile-step-primary { grid-column:1/-1; }

    /* Reusable sticky task action, always above the bottom navigation. */
    .mobile-context-sticky {
        position:fixed;
        z-index:930;
        right:0;
        bottom:calc(68px + env(safe-area-inset-bottom,0px));
        left:0;
        display:block!important;
        padding:9px var(--mobile-gutter);
        border-top:1px solid #dce5eb;
        background:rgba(255,255,255,.96);
        backdrop-filter:blur(12px);
    }
    .mobile-context-sticky button { display:block; width:min(100%,620px); min-height:48px!important; margin:auto; border:0; border-radius:12px; background:#174d74; color:#fff; font-size:14px; font-weight:850; box-shadow:0 7px 18px rgba(23,77,116,.18); cursor:pointer; }
    .mobile-context-sticky button:disabled { background:#a9b6c0; box-shadow:none; cursor:not-allowed; }

    /* Current-time search stays immediate; detailed filters are one deliberate disclosure. */
    body:has(> .room-header) .room-query-details { margin-top:0; }
    body:has(> .room-header) .room-query-details.mobile-folded { display:none!important; }
    body:has(> .room-header) .mobile-room-quick { margin-bottom:9px; }
    body:has(> .room-header) .mobile-disclosure[aria-controls] { min-height:44px!important; }

    /* Login keeps the optional real-mode tools behind one deliberate action. */
    body.portal-login .mobile-real-mode-panel { display:block; margin-top:16px; }
    body.portal-login .mobile-real-mode-panel.mobile-folded { display:none!important; }
    body.portal-login .mobile-disclosure[aria-controls^="mobile-panel-"] { width:100%; }

    /* Settings are separate information groups rather than one button strip. */
    body.portal-settings .setting-save { display:grid!important; grid-template-columns:minmax(0,1fr)!important; gap:10px!important; margin:14px 12px 12px!important; padding-top:0!important; border-top:0!important; }
    body.portal-settings .setting-action-group { padding:13px; border-radius:12px; }
    body.portal-settings .setting-action-group h3 { margin-bottom:9px; }
    body.portal-settings .setting-action-buttons { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; }
    body.portal-settings .setting-action-primary .setting-action-buttons button[type=submit] { grid-column:1/-1; order:0; }
    body.portal-settings .setting-danger-zone { grid-column:auto; margin-top:6px; }
    body.portal-settings .setting-danger-zone .setting-action-buttons { grid-template-columns:minmax(0,1fr); }
    body.portal-settings .setting-save button.reset { grid-column:auto; margin:0!important; }
    body.portal-settings .setting-form>.tbl_subst02 tr[data-mobile-group-title]::before { content:attr(data-mobile-group-title); grid-column:1/-1; display:block; padding:10px 10px 7px; border-bottom:1px solid #dbe4ea; background:#eaf1f5; color:#173b5e; font-size:12px; font-weight:850; }

    /* The add/edit form shows the four essential fields first and preserves every optional field. */
    body.course-management-page .course-form-grid>.mobile-course-core { order:1; }
    body.course-management-page .course-form-grid>.mobile-course-extra-toggle { display:block!important; order:2; grid-column:1/-1; width:100%; min-height:44px!important; padding:9px 12px; border:1px solid #d6e0e8; border-radius:10px; background:#edf3f7; color:#315f86; font-family:inherit; font-size:12px; font-weight:800; text-align:left; cursor:pointer; }
    body.course-management-page .course-form-grid>.mobile-course-extra { display:none!important; order:3; }
    body.course-management-page .course-form-grid.mobile-course-extra-open>.mobile-course-extra { display:flex!important; }

    /* The mobile list is visually and structurally a compact record-card view. */
    body.course-management-page .course-table-wrap table.mobile-records {
        display:block!important;
        width:calc(100% - 10px)!important;
        margin-right:10px;
    }
    body.course-management-page .course-table-wrap table.mobile-records thead,
    body.course-management-page .course-table-wrap table.mobile-records colgroup { display:none!important; }
    body.course-management-page .course-table-wrap table.mobile-records tr.course-record { border-radius:13px!important; grid-template-columns:minmax(0,1fr) 72px!important; }
    body.course-management-page .course-table-wrap table.mobile-records tr.course-record td:nth-child(2) { grid-column:1; grid-row:2; }
    body.course-management-page .course-table-wrap table.mobile-records tr.course-record td:nth-child(4) { grid-column:2; grid-row:2; padding-right:10px!important; text-align:right!important; }
    body.course-management-page .course-table-wrap table.mobile-records tr.course-record td:nth-child(6) { grid-column:1/-1; grid-row:3; }
    body.course-management-page .course-table-wrap table.mobile-records tr.course-record:not(.mobile-course-expanded) td:nth-child(5),
    body.course-management-page .course-table-wrap table.mobile-records tr.course-record:not(.mobile-course-expanded) td:nth-child(7),
    body.course-management-page .course-table-wrap table.mobile-records tr.course-record:not(.mobile-course-expanded) td:nth-child(8) { display:none!important; }
    body.course-management-page .course-table-wrap table.mobile-records tr.course-record td:last-child { grid-column:1/-1; grid-row:auto; }
    body.course-management-page .course-actions { grid-template-columns:repeat(2,minmax(0,1fr))!important; gap:7px!important; }
    body.course-management-page .course-actions .course-statuses,
    body.course-management-page .course-actions>select { grid-column:1/-1; }
    body.course-management-page .course-actions .course-action { min-height:44px!important; padding:8px 6px!important; font-size:11px!important; }
    body.course-management-page .course-actions .mobile-course-details { display:block!important; }
    body.course-management-page .course-record:not(.mobile-course-expanded) .course-actions>select,
    body.course-management-page .course-record:not(.mobile-course-expanded) .course-actions .mark-applied,
    body.course-management-page .course-record:not(.mobile-course-expanded) .course-actions .delete { display:none!important; }
    body.course-management-page .course-table-wrap {
        overflow-x:hidden!important;
        scrollbar-width:none;
    }
    body.course-management-page .course-table-wrap::-webkit-scrollbar { width:0; height:0; }
    body.course-management-page .course-table-wrap table.mobile-records tr.course-record,
    body.course-management-page .course-table-wrap table.mobile-records tr.course-record td,
    body.course-management-page .course-table-wrap table.mobile-records .course-name,
    body.course-management-page .course-actions,
    body.course-management-page .course-actions>* {
        box-sizing:border-box;
        min-width:0!important;
        max-width:100%;
        overflow-wrap:anywhere;
        word-break:break-word;
    }
    body.course-management-page .course-actions .course-statuses { align-items:stretch; }
    body.course-management-page .course-actions .course-status { min-width:0; white-space:normal; }
    body.course-management-page .course-table-wrap table.mobile-records tr.empty-record { display:block!important; min-height:210px; padding:0!important; border:0!important; background:transparent!important; box-shadow:none!important; }
    body.course-management-page .course-table-wrap table.mobile-records tr.empty-record td { position:static!important; display:block!important; width:100%!important; padding:18px 10px!important; }
    .empty-state { display:grid; min-height:174px; padding:22px 14px; place-content:center; justify-items:center; gap:7px; border:1px dashed #cfdbe4; border-radius:13px; background:#f8fafb; color:#758491; text-align:center; }
    .empty-state strong { color:#304a60; font-size:15px; }
    .empty-state span { max-width:260px; font-size:11px; line-height:1.55; }
    .empty-state-action { min-width:140px; min-height:44px!important; margin-top:5px; padding:8px 13px; border:0; border-radius:10px; background:#174d74; color:#fff; font-weight:800; cursor:pointer; }

    /* Dense mobile summaries keep high-volume room results easy to scan. */
    body:has(> .room-header) .room-summary {
        grid-template-columns:repeat(3,minmax(0,1fr))!important;
    }
    body:has(> .room-header) .room-card { padding:12px!important; }
    body:has(> .room-header) .room-card h3 { margin-bottom:4px; font-size:16px; }
    body:has(> .room-header) .room-card p { margin:2px 0; line-height:1.45; }
    body:has(> .room-header) .room-card .status { margin-bottom:6px; padding:4px 8px; }
    body:has(> .room-header) .room-card .course { margin-top:6px; padding-top:7px; }

    body.recommendation-page-body .recommend-presets button {
        display:inline-flex;
        align-items:center;
        justify-content:center;
        line-height:1.25;
        text-align:center;
    }

    /* Delayed skeletons appear only while an asynchronous message is still pending. */
    .mobile-loading-state { position:relative; min-height:58px!important; overflow:hidden; color:transparent!important; border-color:#e2e8ed!important; background:#f4f7f9!important; }
    .mobile-loading-state::after { position:absolute; inset:0; content:''; opacity:0; background:linear-gradient(100deg,transparent 20%,rgba(255,255,255,.86) 45%,transparent 70%); transform:translateX(-100%); animation:mobileSkeleton 1.15s .28s infinite; }
    @keyframes mobileSkeleton { 0% { opacity:1; transform:translateX(-100%); } 100% { opacity:1; transform:translateX(100%); } }
}
