/* Material owns the silhouette. Important declarations in this layer take
   precedence over legacy component shapes, including nested glass in ABS. */
@layer material-shapes {
  /* Layout joins stay square inside every surface. Discrete ABS controls and
     outer windows receive their own squircle below. */
  :is(.material-surface-glass,.desktop-glass-dialog,.glass-surface,.glass-side,
      .glass-menu,.glass-banner,.glass-row,.guide-nav,.theme-switch,.mobile-queue-sheet) {
    --material-content-radius:0px;
    --material-content-shape:square;
  }
  :is(.material-surface-abs,.abs-example,.abs-surface,.abs-side,
      .intro-copy,.rule-card,.abs-menu,.abs-banner,.dolphin-window,.music-window,.plasma-rail) {
    --material-content-radius:0px;
    --material-content-shape:square;
  }
  :is(.material-surface-glass,.desktop-glass-dialog,.glass-surface,.glass-side,
      .glass-menu,.glass-banner,.glass-row,.guide-nav,.theme-switch,.mobile-queue-sheet,
      .material-surface-abs,.abs-example,.abs-surface,.abs-side,
      .intro-copy,.rule-card,.abs-menu,.abs-banner,.dolphin-window,.music-window,.plasma-rail)
      :where(*):not(:where(
        .material-surface-abs,
        .app-art,.app-art *, .app-tile,.app-tile *, .mini-art,.mini-art *,
        .online-dot,.theme-dot,.link-badge,
        .overview-window-titlebar>i,.overview-mini-browser>i,
        svg,svg *)) {
    border-radius:var(--material-content-radius,0px)!important;
    corner-shape:var(--material-content-shape,square)!important;
  }
  :is(.material-surface-abs,.abs-example,.abs-surface,.abs-side,.shape-window,.intro-copy,.rule-card,.abs-menu,.abs-banner,
      .dolphin-window,.music-window,.plasma-rail) {
    border-radius:var(--window-corner,22px)!important;
    corner-shape:squircle!important;
  }
  :is(.material-abs-button,.material-abs-field,.material-abs-element,
      .abs-button,.abs-field,.abs-choice,.abs-side .tab,.abs-menu .menu-item,
      .abs-side .row-icon,.rule span,.monitor-app,.material-chip.abs,
      .dolphin-window button,.music-window button,.dolphin-window .recess-field,
      .music-window .recess-field,.rail-key,.shell-key) {
    border-radius:var(--window-control-corner,10px)!important;
    corner-shape:squircle!important;
  }

  /* An editor or selectable row is part of the document, even when it also
     carries a field/button material class. Avoid rounded seams between panes. */
  :is(.app-frame,.package-window) :is(
      .app-titlebar,.app-toolbar,.browser-toolbar,.music-controls,.app-status,
      .app-body,.files-module,.places-sidebar,.file-well,.file-head,.file-list,
      .music-hero,.playlist,.start-page,.terminal-screen,
      .notes-layout,.notes-layout nav,.notes-layout textarea,
      .package-panel,.import-map,.content-row) {
    border-radius:0!important;
    corner-shape:square!important;
  }

  /* Dolphin's recessed file well and Places panel have their own ABS edges.
     Round the containers; their headers and document rows remain flush. */
  .app-frame[data-app-kind="dolphin"] :is(.places-list,.file-well) {
    border-radius:var(--window-control-corner,10px)!important;
    corner-shape:squircle!important;
  }

  /* Insets have space around them; joined app panes above keep straight seams. */
  :is(.app-frame,.guide-window) .recessed-field.material-abs-field {
    border-radius:var(--window-control-corner,10px)!important;
    corner-shape:squircle!important;
    overflow:hidden;
  }
  .app-frame[data-app-kind="elisa"] .album-block {
    border-radius:var(--window-panel-corner,13px)!important;
    corner-shape:squircle!important;
    overflow:hidden;
  }

  :is(.material-surface-glass,.material-glass-button,.material-glass-field,.material-glass-element,
      .desktop-glass-dialog,.glass-example,.glass-surface,.glass-side,.shape-area,.glass-button,.glass-field,.glass-choice,
      .glass-tab,.glass-menu,.glass-banner,.glass-row,.glass-side .recessed-field,
      .glass-side .tab,.glass-side .row-icon,.glass-menu .menu-item,
      .guide-nav,.theme-switch,.theme-switch button,.top-link,.material-chip.glass,
      .glass-side .menu-demo,.glass-side .menu-item,.glass-side kbd,
      .glass-control,.glass-chip,.recessed-glass,.glass-contact,
      .phone button,.phone .phone-toolbar label,.music-phone button,.mobile-queue-sheet,
      .tile-drop-preview,.tile-pressure-hint,.intent-area-tab) {
    border-radius:0!important;
    corner-shape:square!important;
  }
  :is(.material-surface-glass,.material-glass-button,.glass-button,.glass-tab)::after {
    border-radius:0!important;
    corner-shape:square!important;
  }

  /* App icons are solid objects placed on glass, rather than pieces of the
     glass sheet. Their silhouette still uses ABS geometry at icon scale. */
  :is(.app-tile,.mini-art,.app-art:not(svg),.monitor-app,.abs-side .surface-tag)::before,
  :is(.app-tile,.mini-art,.app-art:not(svg)) {
    border-radius:var(--icon-corner,9px)!important;
    corner-shape:squircle!important;
  }
  :is(.material-abs-button,.abs-button,.abs-side .tab)::after {
    corner-shape:squircle!important;
  }
  :is(.abs-led,.state-level)::before,
  .abs-side .field-demo::after {
    corner-shape:squircle!important;
  }
  .abs-led {corner-shape:squircle!important}
  :is(.material-glass-field,.material-glass-element,.glass-field,.glass-control,
      .glass-chip,.glass-side .surface-tag,.glass-row)::before,
  :is(.material-glass-field,.material-glass-element,.glass-field,.glass-control,
      .glass-chip,.glass-side .surface-tag,.glass-row)::after {
    border-radius:0!important;corner-shape:square!important;
  }
  /* Radio dials and status lamps are circular objects; square check keys on
     ABS use a squircle. A radio engraved into glass remains rectangular. */
  input[type=radio].material-abs-field,
  :is(.online-dot,.theme-dot,.link-badge) {
    border-radius:50%!important;corner-shape:round!important;
  }
  input:is([type=checkbox],[type=radio]):is(.material-glass-field,.material-abs-field) {
    appearance:none;width:14px;height:14px;vertical-align:middle;
    border:1px solid var(--sd-glass-groove,var(--line));
    background:var(--glass-field,transparent);
  }
  input:is([type=checkbox],[type=radio]).material-abs-field {
    background:var(--shell);border-color:var(--line);
  }
  input:is([type=checkbox],[type=radio]):is(.material-glass-field,.material-abs-field):checked {
    background:var(--state-tone,var(--text));
    box-shadow:inset 0 0 0 3px var(--glass-field,var(--shell));
  }
  input:is([type=checkbox],[type=radio]).material-abs-field:checked {
    box-shadow:inset 0 0 0 3px var(--shell);
  }
  .material-guide-page .brand-mark i:first-child {
    corner-shape:squircle!important;
  }
  .material-guide-page .brand-mark i:last-child,
  .glass-side .surface-tag::before {
    border-radius:0!important;corner-shape:square!important;
  }

  /* Native range parts do not inherit their input's corner geometry. */
  :is(.material-glass-field,.glass-range,.phone input[type="range"])::-webkit-slider-runnable-track {
    border-radius:0!important;corner-shape:square!important;
  }
  :is(.material-glass-field,.glass-range,.phone input[type="range"])::-webkit-slider-thumb {
    border-radius:0!important;corner-shape:square!important;
  }
  :is(.material-glass-field,.glass-range,.phone input[type="range"])::-moz-range-track {
    border-radius:0!important;corner-shape:square!important;
  }
  :is(.material-glass-field,.glass-range,.phone input[type="range"])::-moz-range-progress {
    border-radius:0!important;corner-shape:square!important;
  }
  :is(.material-glass-field,.glass-range,.phone input[type="range"])::-moz-range-thumb {
    border-radius:0!important;corner-shape:square!important;
  }
  /* The grip follows its own material, including glass nested in ABS apps.
     ABS grips are circular; the glass rules above preserve rectangular grips. */
  :is(.material-abs-field,.abs-range,
      .dolphin-window input[type="range"],.music-window input[type="range"]):not(.material-glass-field,.glass-range,.material-surface-glass)::-webkit-slider-thumb {
    width:16px!important;height:16px!important;box-sizing:border-box!important;
    border-radius:50%!important;corner-shape:round!important;
  }
  :is(.material-abs-field,.abs-range,
      .dolphin-window input[type="range"],.music-window input[type="range"]):not(.material-glass-field,.glass-range,.material-surface-glass)::-moz-range-thumb {
    width:16px!important;height:16px!important;box-sizing:border-box!important;
    border-radius:50%!important;corner-shape:round!important;
  }
  :is(.material-abs-field,.abs-range)::-webkit-slider-runnable-track {
    border-radius:3px!important;corner-shape:squircle!important;
  }
  :is(.material-abs-field,.abs-range)::-moz-range-track,
  :is(.material-abs-field,.abs-range)::-moz-range-progress {
    border-radius:3px!important;corner-shape:squircle!important;
  }
}

/* A bonded fullscreen surface meets the display edges rather than using the
   outer-window squircle. Keep this exception in the material shape layer. */
@layer material-shapes {
  body.is-fullscreen-desktop .app-frame.is-fullscreen {
    border-radius:0!important;
    corner-shape:square!important;
  }
}
