/* Density pass for the student WASM app. Loaded only by Pages/_student.cshtml,
   so nothing here can reach the server-rendered (DevExpress/Bootstrap) pages.

   MudBlazor ships Material's desktop-first spacing, which assumes a page of a
   few controls. The student pages are long lists of cards and stacked form
   fields, where the defaults stack container gutters on top of component
   padding and the pages read as padded-out. */

/* ---------------------------------------------------------------- results list

   A MudTable whose RowTemplate is a whole card pays the 16px .mud-table-cell
   gutter on top of the card's own padding, plus a row separator the card border
   already draws. Collapse the cell to a plain gap between cards. */
.student-results .mud-table-cell {
    padding: 0 0 12px 0;
    border-bottom: none;
}

.student-results .mud-table-toolbar {
    padding-left: 0;
    padding-right: 0;
}

/* ------------------------------------------------------------------ result card

   Replaces the inline `padding: 8px !important` overrides that used to live in
   PositionCardContent.razor. */
.position-card > .mud-card-header {
    padding: 10px 12px 2px 12px;
}

.position-card > .mud-card-content {
    padding: 0 12px 10px 12px;
    /* The body is a run of `icon + text + <br/>` lines; the inherited 1.5
       line-height is set for paragraphs, not for a spec list. 1.35 still clears
       the 20px Size.Small icons. */
    line-height: 1.35;
}

/* The favourite toggle is a 48px hit target next to a single-line title; pull it
   back into the header box instead of letting it set the header's height. */
.position-card .mud-card-header-actions {
    margin-top: -4px;
}

/* ------------------------------------------------------------------- filter rail

   Section headings used to be `<p style="font-weight:bold">` followed by a <br/>,
   i.e. ~16px of default <p> margin plus a ~24px line break before every group. */
.student-filters .filter-label {
    margin: 16px 0 2px 0;
    font-weight: 600;
}

.student-filters .filter-label:first-child {
    margin-top: 0;
}

/* MudBlazor form controls default to Margin.None, so the stacked
   country/prefecture/city selects sit flush against each other. */
.student-filters .mud-input-control {
    margin-top: 4px;
    margin-bottom: 4px;
}

/* --------------------------------------------------------------------- nav menu

   Seven links at 8px padding + 1.75 line-height is ~44px each. */
.mud-drawer .mud-nav-link {
    padding-top: 6px;
    padding-bottom: 6px;
}

/* ------------------------------------------------- provider logo (modal)

   ProviderDetailsView is laid out with Bootstrap grid classes (.col-lg-2 for the
   logo, .col-lg-10 for the details), but _student.cshtml never loads Bootstrap,
   so both columns are inert full-width blocks. The inline `max-width:100%` then
   lets a provider-uploaded logo fill the whole dialog (measured: 89% of the
   content width for a 400px logo), pushing the provider's name, trade name and
   website below the fold. The inline `max-height:100%` cannot rein it in: the
   parent has auto height, so a percentage max-height resolves to none.

   The server-rendered app uses the same component but does load Bootstrap, and
   this file never reaches it.

   !important is needed because ProviderDetailsView carries the cap as an inline
   `style="max-width:100%;max-height:100%"`, which no class rule can outrank. The
   inline style has to stay for the server-rendered app, which shares the
   component. */
.provider-logo {
    /* 280x120 was picked against the real assets in wwwroot/_img: it keeps the
       widest banner (minedu_logo_5.png, 1920x534) legible, which a 180px cap did
       not, while leaving anything at or below ~280px wide at its natural size. */
    max-width: 280px !important;
    max-height: 120px !important;
    object-fit: contain;
}
