TestBase64ImportURLInCSS
---------- /out/entry.css ----------
/* entry.css */
a {
  background: url(data:image/png;base64,iVBORw0KGgo=);
}

================================================================================
TestBinaryImportURLInCSS
---------- /out/entry.css ----------
/* entry.css */
a {
  background: url(data:application/octet-stream;base64,iVBORw0KGgo=);
}

================================================================================
TestCSSAndJavaScriptCodeSplittingIssue1064
---------- /out/a.js ----------
import {
  shared_default
} from "./chunk-XTGNVFM6.js";

// a.js
console.log(shared_default() + 1);

---------- /out/b.js ----------
import {
  shared_default
} from "./chunk-XTGNVFM6.js";

// b.js
console.log(shared_default() + 2);

---------- /out/chunk-XTGNVFM6.js ----------
// shared.js
function shared_default() {
  return 3;
}

export {
  shared_default
};

---------- /out/c.css ----------
/* shared.css */
body {
  background: black;
}

/* c.css */
body {
  color: red;
}

---------- /out/d.css ----------
/* shared.css */
body {
  background: black;
}

/* d.css */
body {
  color: blue;
}

================================================================================
TestCSSAssetPathsWithSpacesBundle
---------- /foo-AKINYSFH.copy ----------
...
---------- /foo-AKINYSFH.file ----------
...
---------- /foo 2-AKINYSFH.copy ----------
...
---------- /foo 2-AKINYSFH.file ----------
...
---------- /out.css ----------
/* entry.css */
a {
  background: url("./foo-AKINYSFH.copy");
  background: url("./foo-AKINYSFH.file");
}
/*! The URLs for "foo 2" files must have quotes in the final CSS */
b {
  background: url("./foo 2-AKINYSFH.copy");
  background: url("./foo 2-AKINYSFH.file");
}

================================================================================
TestCSSAtImport
---------- /out.css ----------
/* a.css */
.a {
  color: green;
}

/* shared.css */
.shared {
  color: black;
}

/* b.css */
.b {
  color: blue;
}

/* entry.css */
.entry {
  color: red;
}

================================================================================
TestCSSAtImportConditionsAtLayerBundle
---------- /out/case1.css ----------
@layer first.one;

/* case1-foo.css */
@layer last.one {
  body {
    color: red;
  }
}

/* case1-foo.css */
@layer first.one {
  body {
    color: red;
  }
}

/* case1.css */

---------- /out/case2.css ----------
@layer first.one;

/* case2-bar.css */
@layer last.one {
  body {
    color: green;
  }
}

/* case2-foo.css */
@layer first.one {
  body {
    color: red;
  }
}

/* case2.css */

---------- /out/case3.css ----------
/* case3-bar.css */
@layer only.one {
  body {
    color: green;
  }
}

/* case3-foo.css */
@layer {
  body {
    color: red;
  }
}

/* case3.css */

---------- /out/case4.css ----------
@layer first {
  @layer one, one.two, one.three.four;
}

/* case4-foo.css */
@layer last {
  @layer one {
    @layer two, three.four;
    body {
      color: red;
    }
  }
}

/* case4-foo.css */
@layer first {
  @layer one {
    @layer two, three.four;
    body {
      color: red;
    }
  }
}

/* case4.css */

---------- /out/case5.css ----------
/* case5-foo.css */
@layer middle {
  @layer one {
    @layer two, three.four;
    body {
      color: red;
    }
  }
}

/* case5-foo.css */
@layer {
  @layer one {
    @layer two, three.four;
    body {
      color: red;
    }
  }
}

/* case5.css */

---------- /out/case6.css ----------
@layer first;

/* case6-foo.css */
@layer last {
  @layer {
    @layer two, three.four;
    body {
      color: red;
    }
  }
}

/* case6-foo.css */
@layer first {
  @layer {
    @layer two, three.four;
    body {
      color: red;
    }
  }
}

/* case6.css */

================================================================================
TestCSSAtImportConditionsAtLayerBundleAlternatingLayerInFile
---------- /out/case1.css ----------
/* a.css */
@layer first {
  body {
    color: red;
  }
}

/* case1.css */

---------- /out/case2.css ----------
@layer first;

/* b.css */
@layer last {
  body {
    color: green;
  }
}

/* a.css */
@layer first {
  body {
    color: red;
  }
}

/* case2.css */

---------- /out/case3.css ----------
@layer first, last;

/* a.css */
@layer first {
  body {
    color: red;
  }
}

/* b.css */
@layer last {
  body {
    color: green;
  }
}

/* case3.css */

---------- /out/case4.css ----------
@layer first;

/* b.css */
@layer last {
  body {
    color: green;
  }
}

/* a.css */
@layer first {
  body {
    color: red;
  }
}

/* case4.css */

---------- /out/case5.css ----------
@layer first, last;

/* a.css */
@layer first {
  body {
    color: red;
  }
}

/* b.css */
@layer last {
  body {
    color: green;
  }
}

/* case5.css */

---------- /out/case6.css ----------
@layer first;

/* b.css */
@layer last {
  body {
    color: green;
  }
}

/* a.css */
@layer first {
  body {
    color: red;
  }
}

/* case6.css */

================================================================================
TestCSSAtImportConditionsAtLayerBundleAlternatingLayerOnImport
---------- /out/case1.css ----------
/* a.css */
@layer first {
  body {
    color: red;
  }
}

/* case1.css */

---------- /out/case2.css ----------
@layer first;

/* b.css */
@layer last {
  body {
    color: green;
  }
}

/* a.css */
@layer first {
  body {
    color: red;
  }
}

/* case2.css */

---------- /out/case3.css ----------
@layer first;
@layer last;

/* a.css */
@layer first {
  body {
    color: red;
  }
}

/* b.css */
@layer last {
  body {
    color: green;
  }
}

/* case3.css */

---------- /out/case4.css ----------
@layer first;

/* b.css */
@layer last {
  body {
    color: green;
  }
}

/* a.css */
@layer first {
  body {
    color: red;
  }
}

/* case4.css */

---------- /out/case5.css ----------
@layer first;
@layer last;

/* a.css */
@layer first {
  body {
    color: red;
  }
}

/* b.css */
@layer last {
  body {
    color: green;
  }
}

/* case5.css */

---------- /out/case6.css ----------
@layer first;

/* b.css */
@layer last {
  body {
    color: green;
  }
}

/* a.css */
@layer first {
  body {
    color: red;
  }
}

/* case6.css */

================================================================================
TestCSSAtImportConditionsBundle
---------- /out.css ----------
@import "http://example.com/foo.css";
@import "http://example.com/foo.css" layer;
@import "http://example.com/foo.css" layer(layer-name);
@import "http://example.com/foo.css" layer(layer-name) supports(supports-condition);
@import "http://example.com/foo.css" layer(layer-name) list-of-media-queries;
@import "http://example.com/foo.css" supports(supports-condition);
@import "http://example.com/foo.css" list-of-media-queries;

/* foo.css */
body {
  color: red;
}

/* foo.css */
@layer {
  body {
    color: red;
  }
}

/* foo.css */
@layer layer-name {
  body {
    color: red;
  }
}

/* foo.css */
@supports (supports-condition) {
  @layer layer-name {
    body {
      color: red;
    }
  }
}

/* foo.css */
@media list-of-media-queries {
  @layer layer-name {
    body {
      color: red;
    }
  }
}

/* foo.css */
@supports (supports-condition) {
  body {
    color: red;
  }
}

/* foo.css */
@media list-of-media-queries {
  body {
    color: red;
  }
}

/* empty-1.css */
@layer empty-1;

/* empty-2.css */

/* empty-3.css */

/* foo.css */
@layer outer {
  @layer inner {
    body {
      color: red;
    }
  }
}

/* nested-layer.css */
@layer outer;

/* foo.css */
@supports (outer: true) {
  @layer inner {
    body {
      color: red;
    }
  }
}

/* nested-layer.css */

/* foo.css */
@media (outer: true) {
  @layer inner {
    body {
      color: red;
    }
  }
}

/* nested-layer.css */

/* foo.css */
@layer outer {
  @supports (inner: true) {
    body {
      color: red;
    }
  }
}

/* nested-supports.css */
@layer outer;

/* foo.css */
@supports (outer: true) {
  @supports (inner: true) {
    body {
      color: red;
    }
  }
}

/* nested-supports.css */

/* foo.css */
@media (outer: true) {
  @supports (inner: true) {
    body {
      color: red;
    }
  }
}

/* nested-supports.css */

/* foo.css */
@layer outer {
  @media (inner: true) {
    body {
      color: red;
    }
  }
}

/* nested-media.css */
@layer outer;

/* foo.css */
@supports (outer: true) {
  @media (inner: true) {
    body {
      color: red;
    }
  }
}

/* nested-media.css */

/* foo.css */
@media (outer: true) {
  @media (inner: true) {
    body {
      color: red;
    }
  }
}

/* nested-media.css */

/* entry.css */

================================================================================
TestCSSAtImportConditionsBundleExternal
---------- /out.css ----------
@import "https://example.com/print.css" print;

/* entry.css */

================================================================================
TestCSSAtImportConditionsBundleExternalConditionWithURL
---------- /out.css ----------
@import "https://example.com/foo.css" (foo: url(foo.png)) and (bar: url(bar.png));

/* entry.css */

================================================================================
TestCSSAtImportConditionsChainExternal
---------- /out.css ----------
@import "http://example.com/external1.css" layer(a) not print;
@import 'data:text/css,@import "http://example.com/external3.css" layer(b) not tv;' layer(a) not print;
@import "data:text/css,@import 'data:text/css,@import \"http://example.com/external4.css\" layer(b2);' layer(b) not tv;" layer(a) not print;
@import 'data:text/css,@import "http://example.com/external2.css" layer(a2);' layer(a) not print;

/* b.css */
@media not print {
  @layer a {
    @media not tv {
      @layer b;
    }
  }
}

/* a.css */
@media not print {
  @layer a;
}

/* entry.css */

================================================================================
TestCSSAtImportConditionsFromExternalRepo
---------- /out/001/default/style.css ----------
/* 001/default/a.css */
.box {
  background-color: green;
}

/* 001/default/style.css */

---------- /out/001/relative-url/style.css ----------
/* 001/relative-url/a.css */
.box {
  background-color: green;
}

/* 001/relative-url/style.css */

---------- /out/at-charset/001/style.css ----------
@charset "UTF-8";

/* at-charset/001/a.css */
.box {
  background-color: red;
}

/* at-charset/001/b.css */
.box {
  background-color: green;
}

/* at-charset/001/style.css */

---------- /out/at-keyframes/001/style.css ----------
/* at-keyframes/001/a.css */
@media screen {
  .box {
    animation: BOX;
    animation-duration: 0s;
    animation-fill-mode: both;
  }
  @keyframes BOX {
    0%, 100% {
      background-color: green;
    }
  }
}

/* at-keyframes/001/b.css */
@media print {
  .box {
    animation: BOX;
    animation-duration: 0s;
    animation-fill-mode: both;
  }
  @keyframes BOX {
    0%, 100% {
      background-color: red;
    }
  }
}

/* at-keyframes/001/style.css */

---------- /out/at-layer/001/style.css ----------
@layer a;

/* at-layer/001/b.css */
@layer b {
  .box {
    background-color: green;
  }
}

/* at-layer/001/a.css */
@layer a {
  .box {
    background-color: red;
  }
}

/* at-layer/001/style.css */

---------- /out/at-layer/002/style.css ----------
@media print {
  @layer a;
}

/* at-layer/002/b.css */
@layer b {
  .box {
    background-color: red;
  }
}

/* at-layer/002/a.css */
@layer a {
  .box {
    background-color: green;
  }
}

/* at-layer/002/style.css */

---------- /out/at-layer/003/style.css ----------
@layer a;

/* at-layer/003/b.css */
@layer b {
  .box {
    background-color: green;
  }
}

/* at-layer/003/a.css */
@layer a {
  .box {
    background-color: red;
  }
}

/* at-layer/003/style.css */

---------- /out/at-layer/004/style.css ----------
/* at-layer/004/b.css */
@layer {
  .box {
    background-color: red;
  }
}

/* at-layer/004/a.css */
@layer {
  .box {
    background-color: green;
  }
}

/* at-layer/004/style.css */

---------- /out/at-layer/005/style.css ----------
/* at-layer/005/b.css */
@media (min-width: 1px) {
  @layer a {
    @media (width: 1px) {
      @layer b {
        .box {
          background-color: red;
        }
      }
    }
  }
}

/* at-layer/005/a.css */
@media (min-width: 1px) {
  @layer a;
}

/* at-layer/005/style.css */
@layer a.c {
  .box {
    background-color: red;
  }
}
@layer a.b {
  .box {
    background-color: green;
  }
}

---------- /out/at-layer/006/style.css ----------
/* at-layer/006/b.css */
@media (min-width: 1px) {
  @layer a {
    @media (min-width: 1px) {
      @layer b {
        .box {
          background-color: red;
        }
      }
    }
  }
}

/* at-layer/006/a.css */
@media (min-width: 1px) {
  @layer a;
}

/* at-layer/006/style.css */
@layer a.c {
  .box {
    background-color: green;
  }
}
@layer a.b {
  .box {
    background-color: red;
  }
}

---------- /out/at-layer/007/style.css ----------
/* at-layer/007/style.css */
@layer foo {
}
@layer bar {
}
@layer bar {
  .box {
    background-color: green;
  }
}
@layer foo {
  .box {
    background-color: red;
  }
}

---------- /out/at-layer/008/style.css ----------
/* at-layer/008/b.css */
@layer {
  @layer {
    .box {
      background-color: red;
    }
  }
}

/* at-layer/008/a.css */
@layer {
  .box {
    background-color: green;
  }
}

/* at-layer/008/style.css */

---------- /out/at-media/001/default/style.css ----------
/* at-media/001/default/a.css */
@media screen {
  .box {
    background-color: green;
  }
}

/* at-media/001/default/style.css */

---------- /out/at-media/002/style.css ----------
/* at-media/002/a.css */
@media screen {
  .box {
    background-color: green;
  }
}

/* at-media/002/b.css */
@media print {
  .box {
    background-color: red;
  }
}

/* at-media/002/style.css */

---------- /out/at-media/003/style.css ----------
/* at-media/003/b.css */
@media screen {
  @media (min-width: 1px) {
    .box {
      background-color: green;
    }
  }
}

/* at-media/003/a.css */

/* at-media/003/style.css */

---------- /out/at-media/004/style.css ----------
/* at-media/004/c.css */
.box {
  background-color: green;
}

/* at-media/004/b.css */
@media print {
  @media print {
    .box {
      background-color: red;
    }
  }
}

/* at-media/004/a.css */

/* at-media/004/style.css */

---------- /out/at-media/005/style.css ----------
/* at-media/005/c.css */
.box {
  background-color: green;
}

/* at-media/005/b.css */
@media (max-width: 1px) {
  @media (max-width: 1px) {
    .box {
      background-color: red;
    }
  }
}

/* at-media/005/a.css */

/* at-media/005/style.css */

---------- /out/at-media/006/style.css ----------
/* at-media/006/b.css */
@media (min-height: 1px) {
  @media (min-width: 1px) {
    .box {
      background-color: green;
    }
  }
}

/* at-media/006/a.css */

/* at-media/006/style.css */

---------- /out/at-media/007/style.css ----------
/* at-media/007/b.css */
@media all {
  @media screen {
    .box {
      background-color: green;
    }
  }
}

/* at-media/007/a.css */

/* at-media/007/style.css */

---------- /out/at-media/008/style.css ----------
/* at-media/008/green.css */
@media all {
  @layer alpha {
    @media print {
      @layer alpha {
        .box {
          background-color: green;
        }
      }
    }
  }
}

/* at-media/008/a.css */
@media all {
  @layer alpha;
}

/* at-media/008/red.css */
@media all {
  @layer beta {
    @media print {
      @layer beta {
        .box {
          background-color: red;
        }
      }
    }
  }
}

/* at-media/008/b.css */
@media all {
  @layer beta;
}

/* at-media/008/style.css */
@layer beta {
  .box {
    background-color: green;
  }
}
@layer alpha {
  .box {
    background-color: red;
  }
}

---------- /out/at-supports/001/style.css ----------
/* at-supports/001/a.css */
@supports (display: block) {
  .box {
    background-color: green;
  }
}

/* at-supports/001/style.css */

---------- /out/at-supports/002/style.css ----------
/* at-supports/002/b.css */
@supports (display: block) {
  @supports (width: 10px) {
    .box {
      background-color: green;
    }
  }
}

/* at-supports/002/a.css */

/* at-supports/002/style.css */

---------- /out/at-supports/003/style.css ----------
/* at-supports/003/b.css */
@supports ((display: block) or (display: inline)) {
  @supports (width: 10px) {
    .box {
      background-color: green;
    }
  }
}

/* at-supports/003/a.css */

/* at-supports/003/style.css */

---------- /out/at-supports/004/style.css ----------
/* at-supports/004/b.css */
@supports (display: block) {
  @layer a {
    @supports (width: 10px) {
      @layer b {
        .box {
          background-color: green;
        }
      }
    }
  }
}

/* at-supports/004/a.css */
@supports (display: block) {
  @layer a;
}

/* at-supports/004/style.css */

---------- /out/at-supports/005/style.css ----------
/* at-supports/005/green.css */
@supports (display: block) {
  @layer alpha {
    @supports (foo: bar) {
      @layer alpha {
        .box {
          background-color: green;
        }
      }
    }
  }
}

/* at-supports/005/a.css */
@supports (display: block) {
  @layer alpha;
}

/* at-supports/005/red.css */
@supports (display: block) {
  @layer beta {
    @supports (foo: bar) {
      @layer beta {
        .box {
          background-color: red;
        }
      }
    }
  }
}

/* at-supports/005/b.css */
@supports (display: block) {
  @layer beta;
}

/* at-supports/005/style.css */
@layer beta {
  .box {
    background-color: green;
  }
}
@layer alpha {
  .box {
    background-color: red;
  }
}

---------- /out/cycles/001/style.css ----------
/* cycles/001/style.css */
.box {
  background-color: green;
}

---------- /out/cycles/002/style.css ----------
/* cycles/002/red.css */
.box {
  background-color: red;
}

/* cycles/002/green.css */
.box {
  background-color: green;
}

/* cycles/002/b.css */

/* cycles/002/a.css */

/* cycles/002/style.css */

---------- /out/cycles/003/style.css ----------
/* cycles/003/b.css */
.box {
  background-color: red;
}

/* cycles/003/a.css */
.box {
  background-color: green;
}

/* cycles/003/style.css */

---------- /out/cycles/004/style.css ----------
/* cycles/004/a.css */
.box {
  background-color: red;
}

/* cycles/004/b.css */
.box {
  background-color: green;
}

/* cycles/004/style.css */

---------- /out/cycles/005/style.css ----------
/* cycles/005/b.css */
.box {
  background-color: red;
}

/* cycles/005/a.css */
.box {
  background-color: green;
}

/* cycles/005/style.css */

---------- /out/cycles/006/style.css ----------
/* cycles/006/red.css */
.box {
  background-color: red;
}

/* cycles/006/green.css */
.box {
  background-color: green;
}

/* cycles/006/b.css */

/* cycles/006/a.css */

/* cycles/006/c.css */

/* cycles/006/style.css */

---------- /out/cycles/007/style.css ----------
/* cycles/007/green.css */
.box {
  background-color: green;
}

/* cycles/007/red.css */
@media all {
  .box {
    background-color: red;
  }
}

/* cycles/007/a.css */

/* cycles/007/b.css */

/* cycles/007/red.css */
@media not print {
  .box {
    background-color: red;
  }
}

/* cycles/007/green.css */
@media not print {
  @media screen {
    .box {
      background-color: green;
    }
  }
}

/* cycles/007/b.css */

/* cycles/007/a.css */

/* cycles/007/c.css */

/* cycles/007/style.css */

---------- /out/cycles/008/style.css ----------
/* cycles/008/green.css */
@layer {
  .box {
    background-color: green;
  }
}

/* cycles/008/red.css */
@layer {
  .box {
    background-color: red;
  }
}

/* cycles/008/a.css */

/* cycles/008/b.css */

/* cycles/008/red.css */
@layer {
  @layer {
    .box {
      background-color: red;
    }
  }
}

/* cycles/008/green.css */
@layer {
  @layer {
    .box {
      background-color: green;
    }
  }
}

/* cycles/008/b.css */

/* cycles/008/a.css */

/* cycles/008/c.css */

/* cycles/008/style.css */

---------- /out/data-urls/002/style.css ----------
/* <data:text/css;plain,.box%20%7B%0A%09background-color%3A%20green%...> */
.box {
  background-color: green;
}

/* data-urls/002/style.css */

---------- /out/data-urls/003/style.css ----------
/* <data:text/css,.box%20%7B%0A%09background-color%3A%20green%3B%0A%...> */
.box {
  background-color: green;
}

/* data-urls/003/style.css */

---------- /out/duplicates/001/style.css ----------
/* duplicates/001/b.css */
.box {
  background-color: red;
}

/* duplicates/001/a.css */
.box {
  background-color: green;
}

/* duplicates/001/style.css */

---------- /out/duplicates/002/style.css ----------
/* duplicates/002/b.css */
.box {
  background-color: red;
}

/* duplicates/002/a.css */
.box {
  background-color: green;
}

/* duplicates/002/style.css */

---------- /out/empty/001/style.css ----------
/* empty/001/empty.css */
/* empty/001/style.css */
.box {
  background-color: green;
}

---------- /out/relative-paths/001/style.css ----------
/* relative-paths/001/b/b.css */
.box {
  background-color: green;
}

/* relative-paths/001/a/a.css */

/* relative-paths/001/style.css */

---------- /out/relative-paths/002/style.css ----------
/* relative-paths/002/b/b.css */
.box {
  background-color: green;
}

/* relative-paths/002/a/a.css */

/* relative-paths/002/style.css */

---------- /out/subresource/001/style.css ----------
/* subresource/001/something/styles/green.css */
.box {
  background-image: url(data:image/png;base64,Li4u);
}

/* subresource/001/style.css */

---------- /out/subresource/002/style.css ----------
/* subresource/002/styles/green.css */
.box {
  background-image: url(data:image/png;base64,Li4u);
}

/* subresource/002/style.css */

---------- /out/subresource/004/style.css ----------
/* subresource/004/styles/green.css */
.box {
  background-image: url(data:image/png;base64,Li4u);
}

/* subresource/004/style.css */

---------- /out/subresource/005/style.css ----------
/* subresource/005/styles/green.css */
.box {
  background-image: url(data:image/png;base64,Li4u);
}

/* subresource/005/style.css */

---------- /out/subresource/007/style.css ----------
/* subresource/007/style.css */
.box {
  background-image: url(data:image/png;base64,Li4u);
}

---------- /out/url-format/001/default/style.css ----------
/* url-format/001/default/a.css */
.box {
  background-color: green;
}

/* url-format/001/default/style.css */

---------- /out/url-format/001/relative-url/style.css ----------
/* url-format/001/relative-url/a.css */
.box {
  background-color: green;
}

/* url-format/001/relative-url/style.css */

---------- /out/url-format/002/default/style.css ----------
/* url-format/002/default/a.css */
.box {
  background-color: green;
}

/* url-format/002/default/style.css */

---------- /out/url-format/002/relative-url/style.css ----------
/* url-format/002/relative-url/a.css */
.box {
  background-color: green;
}

/* url-format/002/relative-url/style.css */

---------- /out/url-format/003/default/style.css ----------
/* url-format/003/default/a.css */
.box {
  background-color: green;
}

/* url-format/003/default/style.css */

---------- /out/url-format/003/relative-url/style.css ----------
/* url-format/003/relative-url/a.css */
.box {
  background-color: green;
}

/* url-format/003/relative-url/style.css */

---------- /out/url-fragments/001/style.css ----------
/* url-fragments/001/a.css#foo */
.box {
  background-color: green;
}

/* url-fragments/001/style.css */

---------- /out/url-fragments/002/style.css ----------
/* url-fragments/002/a.css#1 */
.box {
  background-color: green;
}

/* url-fragments/002/b.css#2 */
.box {
  background-color: red;
}

/* url-fragments/002/a.css#3 */
.box {
  background-color: green;
}

/* url-fragments/002/style.css */

================================================================================
TestCSSAtImportConditionsNoBundle
---------- /out.css ----------
@import "./print.css" print;

================================================================================
TestCSSAtImportConditionsWithImportRecordsBundle
---------- /out.css ----------
/* foo.css */
@supports (background: url(a.png)) {
  body {
    color: red;
  }
}

/* foo.css */
@media list-of-media-queries {
  @supports (background: url(b.png)) {
    body {
      color: red;
    }
  }
}

/* foo.css */
@supports (background: url(a.png)) {
  @layer layer-name {
    body {
      color: red;
    }
  }
}

/* foo.css */
@media list-of-media-queries {
  @supports (background: url(b.png)) {
    @layer layer-name {
      body {
        color: red;
      }
    }
  }
}

/* entry.css */

================================================================================
TestCSSAtImportExtensionOrderCollision
---------- /out.css ----------
/* test.css */
.css {
  color: red;
}

/* entry.css */

================================================================================
TestCSSAtImportExternal
---------- /out/entry.css ----------
@charset "UTF-8";
@import "../external1.css";
@import "../external2.css";
@import "../external4.css";
@import "../external5.css";
@import "https://www.example.com/style2.css";
@import "../external3.css";
@import "https://www.example.com/style1.css";
@import "https://www.example.com/style3.css";
@import "../external5.css" screen;

/* internal.css */
.before {
  color: red;
}

/* charset1.css */
.middle {
  color: green;
}

/* charset2.css */
.after {
  color: blue;
}

/* entry.css */

================================================================================
TestCSSAtLayerBeforeImportBundle
---------- /out/entry.css ----------
@layer layer1, layer2.layer3;

/* a.css */
@layer layer4 {
  a {
    color: red;
  }
}

/* b.css */
@layer layer5 {
  b {
    color: red;
  }
}

/* entry.css */
@layer layer6.layer7, layer8;

================================================================================
TestCSSAtLayerBeforeImportNoBundle
---------- /out/entry.css ----------
@layer layer1, layer2.layer3;
@import "a.css";
@import "b.css";
@layer layer6.layer7, layer8;

================================================================================
TestCSSAtLayerMergingWithImportConditions
---------- /out/entry.css ----------
@supports (color: first) {
  @layer a;
}
@import "http://example.com/a.css" supports(color: first);
@import "http://example.com/a.css" supports(color: second);
@import "http://example.com/b.css" supports(color: second);
@import "http://example.com/b.css" supports(color: first);
@supports (color: second) {
  @layer a, b;
}

/* a.css */
@supports (color: first) {
  @layer b;
}

/* a.css */

/* b.css */

/* b.css */

/* entry.css */

================================================================================
TestCSSCaseInsensitivity
---------- /image-AKINYSFH.png ----------
...
---------- /out.css ----------
/* nested.css */
@media list-of-media-queries {
  @supports (supports-condition) {
    @layer layer-name {
      @KeyFrames Foo {
        0% {
          OPAcity: 0;
        }
        tO {
          opaCITY: 1;
        }
      }
      body {
        BACKGROUND-color: red;
        width: 50Px;
        background-IMAGE: url("./image-AKINYSFH.png");
      }
    }
  }
}

/* entry.css */

================================================================================
TestCSSEntryPoint
---------- /out.css ----------
/* entry.css */
body {
  background: white;
  color: black;
}

================================================================================
TestCSSExternalQueryAndHashMatchIssue1822
---------- /out.css ----------
/* entry.css */
a {
  background: url(foo/bar.png?baz);
}
b {
  background: url(foo/bar.png#baz);
}

================================================================================
TestCSSFromJSMissingStarImport
---------- /out/entry.js ----------
// entry.js
console.log(void 0);

---------- /out/entry.css ----------
/* a.css */
.a {
  color: red;
}

================================================================================
TestCSSMalformedAtImport
---------- /out/entry.css ----------
@import "https://example.com/url-token-eof.css";
@import "https://example.com/url-token-whitespace-eof.css";
@import "https://example.com/function-token-eof.css";
@import "https://example.com/function-token-whitespace-eof.css";

/* url-token-eof.css */

/* url-token-whitespace-eof.css */

/* function-token-eof.css */

/* function-token-whitespace-eof.css */

/* entry.css */

================================================================================
TestCSSNestingOldBrowser
---------- /out/two-type-selectors.css ----------
/* two-type-selectors.css */
.c a:is(b) {
  color: red;
}

---------- /out/two-parent-selectors.css ----------
/* two-parent-selectors.css */
.c :is(a b) {
  color: red;
}

---------- /out/only-one-warning.css ----------
/* only-one-warning.css */
.a > .a,
.a > :is(.b .c),
.a > .d,
.b .c > .a,
.b .c > :is(.b .c),
.b .c > .d,
.d > .a,
.d > :is(.b .c),
.d > .d {
  color: red;
}

---------- /out/nested-@layer.css ----------
/* nested-@layer.css */
@layer base {
  a {
    color: red;
  }
}

---------- /out/nested-@media.css ----------
/* nested-@media.css */
@media screen {
  a {
    color: red;
  }
}

---------- /out/nested-ampersand-twice.css ----------
/* nested-ampersand-twice.css */
a,
a {
  color: red;
}

---------- /out/nested-ampersand-first.css ----------
/* nested-ampersand-first.css */
a,
a b {
  color: red;
}

---------- /out/nested-attribute.css ----------
/* nested-attribute.css */
a [href] {
  color: red;
}

---------- /out/nested-colon.css ----------
/* nested-colon.css */
a :hover {
  color: red;
}

---------- /out/nested-dot.css ----------
/* nested-dot.css */
a .cls {
  color: red;
}

---------- /out/nested-greaterthan.css ----------
/* nested-greaterthan.css */
a > b {
  color: red;
}

---------- /out/nested-hash.css ----------
/* nested-hash.css */
a #id {
  color: red;
}

---------- /out/nested-plus.css ----------
/* nested-plus.css */
a + b {
  color: red;
}

---------- /out/nested-tilde.css ----------
/* nested-tilde.css */
a ~ b {
  color: red;
}

---------- /out/toplevel-ampersand-twice.css ----------
/* toplevel-ampersand-twice.css */
:scope,
:scope {
  color: red;
}

---------- /out/toplevel-ampersand-first.css ----------
/* toplevel-ampersand-first.css */
:scope,
a {
  color: red;
}

---------- /out/toplevel-ampersand-second.css ----------
/* toplevel-ampersand-second.css */
a,
:scope {
  color: red;
}

---------- /out/toplevel-attribute.css ----------
/* toplevel-attribute.css */
[href] {
  color: red;
}

---------- /out/toplevel-colon.css ----------
/* toplevel-colon.css */
:hover {
  color: red;
}

---------- /out/toplevel-dot.css ----------
/* toplevel-dot.css */
.cls {
  color: red;
}

---------- /out/toplevel-greaterthan.css ----------
/* toplevel-greaterthan.css */
> b {
  color: red;
}

---------- /out/toplevel-hash.css ----------
/* toplevel-hash.css */
#id {
  color: red;
}

---------- /out/toplevel-plus.css ----------
/* toplevel-plus.css */
+ b {
  color: red;
}

---------- /out/toplevel-tilde.css ----------
/* toplevel-tilde.css */
~ b {
  color: red;
}

---------- /out/media-ampersand-twice.css ----------
/* media-ampersand-twice.css */
@media screen {
  :scope,
  :scope {
    color: red;
  }
}

---------- /out/media-ampersand-first.css ----------
/* media-ampersand-first.css */
@media screen {
  :scope,
  a {
    color: red;
  }
}

---------- /out/media-ampersand-second.css ----------
/* media-ampersand-second.css */
@media screen {
  a,
  :scope {
    color: red;
  }
}

---------- /out/media-attribute.css ----------
/* media-attribute.css */
@media screen {
  [href] {
    color: red;
  }
}

---------- /out/media-colon.css ----------
/* media-colon.css */
@media screen {
  :hover {
    color: red;
  }
}

---------- /out/media-dot.css ----------
/* media-dot.css */
@media screen {
  .cls {
    color: red;
  }
}

---------- /out/media-greaterthan.css ----------
/* media-greaterthan.css */
@media screen {
  > b {
    color: red;
  }
}

---------- /out/media-hash.css ----------
/* media-hash.css */
@media screen {
  #id {
    color: red;
  }
}

---------- /out/media-plus.css ----------
/* media-plus.css */
@media screen {
  + b {
    color: red;
  }
}

---------- /out/media-tilde.css ----------
/* media-tilde.css */
@media screen {
  ~ b {
    color: red;
  }
}

---------- /out/page-no-warning.css ----------
/* page-no-warning.css */
@page {
  @top-left {
    background: red;
  }
}

================================================================================
TestDataURLImportURLInCSS
---------- /out/entry.css ----------
/* entry.css */
a {
  background: url(data:image/png;base64,iVBORw0KGgo=);
}

================================================================================
TestDeduplicateRules
---------- /out/yes0.css ----------
/* yes0.css */
a {
  color: green;
  color: red;
}

---------- /out/yes1.css ----------
/* yes1.css */
a {
  color: green;
}
a {
  color: red;
}

---------- /out/yes2.css ----------
/* yes2.css */
@media screen {
  a {
    color: red;
  }
}

---------- /out/yes3.css ----------
/* yes3.css */
@media screen {
  a {
    color: red;
  }
}

---------- /out/no0.css ----------
/* no0.css */
@media screen {
  a {
    color: red;
  }
}
@media screen {
  b a& {
    color: red;
  }
}

---------- /out/no1.css ----------
/* no1.css */
@media screen {
  a {
    color: red;
  }
}
@media screen {
  a[x] {
    color: red;
  }
}

---------- /out/no2.css ----------
/* no2.css */
@media screen {
  a {
    color: red;
  }
}
@media screen {
  a.x {
    color: red;
  }
}

---------- /out/no3.css ----------
/* no3.css */
@media screen {
  a {
    color: red;
  }
}
@media screen {
  a#x {
    color: red;
  }
}

---------- /out/no4.css ----------
/* no4.css */
@media screen {
  a {
    color: red;
  }
}
@media screen {
  a:x {
    color: red;
  }
}

---------- /out/no5.css ----------
/* no5.css */
@media screen {
  a:x {
    color: red;
  }
}
@media screen {
  a:x(y) {
    color: red;
  }
}

---------- /out/no6.css ----------
/* no6.css */
@media screen {
  a b {
    color: red;
  }
}
@media screen {
  a + b {
    color: red;
  }
}

---------- /out/across-files.css ----------
/* across-files-0.css */
/* across-files-1.css */
a {
  color: green;
}

/* across-files-2.css */
a {
  color: red;
}

/* across-files.css */

---------- /out/across-files-url.css ----------
@import "http://example.com/some.css";

/* across-files-url-0.css */

/* across-files-url-1.css */
@font-face {
  src: url(http://example.com/some.other.font);
}

/* across-files-url-2.css */
@font-face {
  src: url(http://example.com/some.font);
}

/* across-files-url.css */

================================================================================
TestDeduplicateRulesGlobalVsLocalNames
---------- /out/entry.css ----------
/* a.css */
b {
  color: green;
}
.bar {
  color: green;
}
.a_foo {
  color: red;
}
.a_bar {
  color: green;
}
div {
  animation-name: a_anim_local;
}

/* b.css */
a {
  color: red;
}
b {
  color: #00f;
}
.foo {
  color: red;
}
.bar {
  color: #00f;
}
.b_foo {
  color: red;
}
.b_bar {
  color: #00f;
}
div {
  animation-name: anim_global;
}
div {
  animation-name: b_anim_local;
}

/* entry.css */

================================================================================
TestExternalImportURLInCSS
---------- /out/entry.css ----------
/* src/entry.css */
div:after {
  content: 'If this is recognized, the path should become "../src/external.png"';
  background: url(../src/external.png);
}
a {
  background: url(http://example.com/images/image.png);
}
b {
  background: url(https://example.com/images/image.png);
}
c {
  background: url(//example.com/images/image.png);
}
d {
  background: url(data:image/png;base64,iVBORw0KGgo=);
}
path {
  fill: url(#filter);
}

================================================================================
TestFileImportURLInCSS
---------- /out/example-GDKWWYFY.data ----------
This is some data.
---------- /out/entry.css ----------
/* one.css */
a {
  background: url("./example-GDKWWYFY.data");
}

/* two.css */
b {
  background: url("./example-GDKWWYFY.data");
}

/* entry.css */

================================================================================
TestIgnoreURLsInAtRulePrelude
---------- /out/entry.css ----------
/* entry.css */
@supports (background: url(ignored.png)) {
  a {
    color: red;
  }
}

================================================================================
TestImportCSSFromJSComposes
---------- /out/entry.js ----------
// styles.module.css
var styles_default = {
  local0: "GLOBAL1 GLOBAL2 styles_local4 styles_local3 styles_local1 GLOBAL3 styles_local2 GLOBAL4 styles_local0",
  local1: "styles_local4 styles_local3 styles_local1",
  local2: "styles_local2",
  local3: "styles_local4 styles_local3",
  local4: "styles_local4",
  fromOtherFile: "base_base1 base_base2 other1_local0 base_base3 other2_local0 styles_fromOtherFile"
};

// entry.js
console.log(styles_default);

---------- /out/entry.css ----------
/* global.css */
.GLOBAL1 {
  color: black;
}

/* other1.module.css */
.other1_local0 {
  color: blue;
}

/* base.module.css */
.base_base1 {
  cursor: pointer;
}
.base_base2 {
  display: inline;
}
.base_base3 {
  float: left;
}

/* other2.module.css */
.other2_local0 {
  background: purple;
}

/* styles.module.css */
.styles_local0 {
}
.styles_local0 {
  background: green;
}
.styles_local0 {
}
.styles_local3 {
  border: 1px solid black;
}
.styles_local4 {
  opacity: 0.5;
}
.styles_local1 {
  color: red;
}
.styles_fromOtherFile {
}

================================================================================
TestImportCSSFromJSComposesCircular
---------- /out/entry.js ----------
// styles.css
var styles_default = {
  foo: "styles_bar styles_foo",
  bar: "styles_foo styles_bar",
  baz: "styles_baz"
};

// entry.js
console.log(styles_default);

---------- /out/entry.css ----------
/* styles.css */
.styles_foo {
}
.styles_bar {
}
.styles_baz {
}

================================================================================
TestImportCSSFromJSComposesFromCircular
---------- /out/entry.js ----------
// styles.css
var styles_default = {
  foo: "other_bar styles_foo",
  bar: "styles_bar"
};

// entry.js
console.log(styles_default);

---------- /out/entry.css ----------
/* other.css */
.other_bar {
}

/* styles.css */
.styles_foo {
}
.styles_bar {
}

================================================================================
TestImportCSSFromJSComposesFromUndefined
---------- /out/entry.js ----------
// styles.css
var styles_default = {};

// entry.js
console.log(styles_default);

---------- /out/entry.css ----------
/* well-defined.css */
.well_defined_z1 {
  zoom: 1;
}
.well_defined_z2 {
  zoom: 2;
}
.well_defined_z4 {
  zoom: 4;
}
.well_defined_z3 {
  zoom: 3;
}
.well_defined_z5 {
}

/* undefined/case1.css */
.case1_foo {
  zoom: 2;
}

/* undefined/case2.css */
.case2_foo {
}

/* undefined/case3.css */
.case3_foo {
}
.case3_nested1 {
  zoom: 3;
}
.case3_nested2 {
}

/* undefined/case4.css */
.case4_foo {
}
.case4_nested1 {
}
.case4_nested2 {
  zoom: 3;
}

/* file-1.css */
.file_1_foo {
  zoom: 1;
}
.file_1_bar {
  zoom: 2;
}

/* file-2.css */
.file_2_foo {
  zoom: 2;
}

/* undefined/case5.css */
.case5_foo {
}
.case5_nested1 {
}
.case5_nested2 {
}

/* styles.css */

================================================================================
TestImportCSSFromJSLocalAtContainer
---------- /out/entry.js ----------
// styles.css
var styles_default = {
  local: "styles_local",
  local1: "styles_local1",
  local2: "styles_local2"
};

// entry.js
console.log(styles_default);

---------- /out/entry.css ----------
/* styles.css */
@container not (max-width: 100px) {
  div {
    color: red;
  }
}
@container styles_local (max-width: 100px) {
  div {
    color: red;
  }
}
@container styles_local not (max-width: 100px) {
  div {
    color: red;
  }
}
@container styles_local (max-width: 100px) or (min-height: 100px) {
  div {
    color: red;
  }
}
@container styles_local (max-width: 100px) and (min-height: 100px) {
  div {
    color: red;
  }
}
@container general_enclosed(max-width: 100px) {
  div {
    color: red;
  }
}
@container styles_local general_enclosed(max-width: 100px) {
  div {
    color: red;
  }
}
div {
  container-name: NONE initial;
}
div {
  container-name: none INITIAL;
}
div {
  container-name: GLOBAL1 GLOBAL2;
}
div {
  container-name: styles_local1 styles_local2;
}
div {
  container: none;
}
div {
  container: NONE;
}
div {
  container: NONE / size;
}
div {
  container: none / size;
}
div {
  container: GLOBAL1 GLOBAL2;
}
div {
  container: styles_local1 styles_local2;
}
div {
  container: GLOBAL1 GLOBAL2 / size;
}
div {
  container: styles_local1 styles_local2 / size;
}

================================================================================
TestImportCSSFromJSLocalAtCounterStyle
---------- /out/entry.js ----------
// list_style_type.css
var list_style_type_default = {
  local: "list_style_type_local"
};

// list_style.css
var list_style_default = {
  local: "list_style_local",
  inside: "list_style_inside",
  outside: "list_style_outside"
};

// entry.js
console.log(list_style_type_default, list_style_default);

---------- /out/entry.css ----------
/* list_style_type.css */
@counter-style list_style_type_local {
  symbols: A B C;
}
div {
  list-style-type: GLOBAL;
}
div {
  list-style-type: list_style_type_local;
}
div {
  list-style-type: none;
}
div {
  list-style-type: INITIAL;
}
div {
  list-style-type: decimal;
}
div {
  list-style-type: disc;
}
div {
  list-style-type: SQUARE;
}
div {
  list-style-type: circle;
}
div {
  list-style-type: disclosure-OPEN;
}
div {
  list-style-type: DISCLOSURE-closed;
}
div {
  list-style-type: LAO;
}
div {
  list-style-type: "👍";
}

/* list_style.css */
@counter-style list_style_local {
  symbols: A B C;
}
div {
  list-style: GLOBAL;
}
div {
  list-style: list_style_local;
}
div {
  list-style: list_style_local none;
}
div {
  list-style: list_style_local url(http://);
}
div {
  list-style: list_style_local linear-gradient(red, green);
}
div {
  list-style: list_style_local inside;
}
div {
  list-style: list_style_local outside;
}
div {
  list-style: none list_style_local;
}
div {
  list-style: url(http://) list_style_local;
}
div {
  list-style: linear-gradient(red, green) list_style_local;
}
div {
  list-style: list_style_local inside;
}
div {
  list-style: list_style_local outside;
}
div {
  list-style: inside list_style_inside;
}
div {
  list-style: inside list_style_outside;
}
div {
  list-style: outside list_style_inside;
}
div {
  list-style: outside list_style_outside;
}
div {
  list-style: url(http://) none invalid;
}
div {
  list-style: linear-gradient(red, green) none invalid;
}
div {
  list-style: INITIAL;
}
div {
  list-style: decimal;
}
div {
  list-style: disc;
}
div {
  list-style: SQUARE;
}
div {
  list-style: circle;
}
div {
  list-style: disclosure-OPEN;
}
div {
  list-style: DISCLOSURE-closed;
}
div {
  list-style: LAO;
}

================================================================================
TestImportCSSFromJSLocalAtKeyframes
---------- /out/entry.js ----------
// styles.css
var styles_default = {
  local_name: "styles_local_name",
  local_name1: "styles_local_name1",
  local_name2: "styles_local_name2",
  none: "styles_none"
};

// entry.js
console.log(styles_default);

---------- /out/entry.css ----------
/* styles.css */
@keyframes styles_local_name {
  to {
    color: red;
  }
}
div {
  animation-name: none;
}
div {
  animation-name: none;
}
div {
  animation-name: global_name;
}
div {
  animation-name: styles_local_name;
}
div {
  animation-name:
    global_name1,
    none,
    global_name2,
    Inherit,
    INITIAL,
    revert,
    revert-layer,
    unset;
}
div {
  animation-name:
    styles_local_name1,
    none,
    styles_local_name2,
    Inherit,
    INITIAL,
    revert,
    revert-layer,
    unset;
}
div {
  animation: 2s infinite global_name;
}
div {
  animation: 2s infinite styles_local_name;
}
@keyframes styles_none {
  to {
    color: red;
  }
}
div {
  animation-name: "none";
}
div {
  animation-name: styles_none;
}

================================================================================
TestImportCSSFromJSLocalVsGlobal
---------- /out/entry.js ----------
// normal.css
var normal_default = {};

// LOCAL.global-css
var LOCAL_default = {
  local: "LOCAL_local",
  local_a: "LOCAL_local_a",
  local_b: "LOCAL_local_b",
  local_c: "LOCAL_local_c"
};

// LOCAL.local-css
var LOCAL_default2 = {
  top_level: "LOCAL_top_level",
  local: "LOCAL_local2",
  local_a: "LOCAL_local_a2",
  local_b: "LOCAL_local_b2",
  local_c: "LOCAL_local_c2",
  nested: "LOCAL_nested"
};

// entry.js
console.log("should be empty:", normal_default);
console.log("fewer local names:", LOCAL_default);
console.log("more local names:", LOCAL_default2);

---------- /out/entry.css ----------
/* normal.css */
.top_level {
  color: #000;
}
:global(.GLOBAL) {
  color: #001;
}
:local(.local) {
  color: #002;
}
div:global(.GLOBAL) {
  color: #003;
}
div:local(.local) {
  color: #004;
}
.top_level:global(div) {
  color: #005;
}
.top_level:local(div) {
  color: #006;
}
:global(div.GLOBAL) {
  color: #007;
}
:local(div.local) {
  color: #008;
}
div:global(span.GLOBAL) {
  color: #009;
}
div:local(span.local) {
  color: #00A;
}
div:global(#GLOBAL_A.GLOBAL_B.GLOBAL_C):local(.local_a.local_b#local_c) {
  color: #00B;
}
div:global(#GLOBAL_A .GLOBAL_B .GLOBAL_C):local(.local_a .local_b #local_c) {
  color: #00C;
}
.nested {
  :global(&.GLOBAL) {
    color: #00D;
  }
  :local(&.local) {
    color: #00E;
  }
  &:global(.GLOBAL) {
    color: #00F;
  }
  &:local(.local) {
    color: #010;
  }
}
:global(.GLOBAL_A .GLOBAL_B) {
  color: #011;
}
:local(.local_a .local_b) {
  color: #012;
}
div:global(.GLOBAL_A .GLOBAL_B):hover {
  color: #013;
}
div:local(.local_a .local_b):hover {
  color: #014;
}
div :global(.GLOBAL_A .GLOBAL_B) span {
  color: #015;
}
div :local(.local_a .local_b) span {
  color: #016;
}
div > :global(.GLOBAL_A ~ .GLOBAL_B) + span {
  color: #017;
}
div > :local(.local_a ~ .local_b) + span {
  color: #018;
}
div:global(+ .GLOBAL_A):hover {
  color: #019;
}
div:local(+ .local_a):hover {
  color: #01A;
}
:global.GLOBAL:local.local {
  color: #01B;
}
:global .GLOBAL :local .local {
  color: #01C;
}
:global {
  .GLOBAL {
    before: outer;
    :local {
      before: inner;
      .local {
        color: #01D;
      }
      after: inner;
    }
    after: outer;
  }
}

/* LOCAL.global-css */
.top_level {
  color: #000;
}
.GLOBAL {
  color: #001;
}
.LOCAL_local {
  color: #002;
}
div.GLOBAL {
  color: #003;
}
div.LOCAL_local {
  color: #004;
}
div.top_level {
  color: #005;
}
div.top_level {
  color: #006;
}
div.GLOBAL {
  color: #007;
}
div.LOCAL_local {
  color: #008;
}
div:is(span).GLOBAL {
  color: #009;
}
div:is(span).LOCAL_local {
  color: #00A;
}
div#GLOBAL_A.GLOBAL_B.GLOBAL_C.LOCAL_local_a.LOCAL_local_b#LOCAL_local_c {
  color: #00B;
}
div#GLOBAL_A .GLOBAL_B .GLOBAL_C.LOCAL_local_a .LOCAL_local_b #LOCAL_local_c {
  color: #00C;
}
.nested {
  &.GLOBAL {
    color: #00D;
  }
  &.LOCAL_local {
    color: #00E;
  }
  &.GLOBAL {
    color: #00F;
  }
  &.LOCAL_local {
    color: #010;
  }
}
.GLOBAL_A .GLOBAL_B {
  color: #011;
}
.LOCAL_local_a .LOCAL_local_b {
  color: #012;
}
div.GLOBAL_A .GLOBAL_B:hover {
  color: #013;
}
div.LOCAL_local_a .LOCAL_local_b:hover {
  color: #014;
}
div .GLOBAL_A .GLOBAL_B span {
  color: #015;
}
div .LOCAL_local_a .LOCAL_local_b span {
  color: #016;
}
div > .GLOBAL_A ~ .GLOBAL_B + span {
  color: #017;
}
div > .LOCAL_local_a ~ .LOCAL_local_b + span {
  color: #018;
}
div + .GLOBAL_A:hover {
  color: #019;
}
div + .LOCAL_local_a:hover {
  color: #01A;
}
.GLOBAL.LOCAL_local {
  color: #01B;
}
.GLOBAL .LOCAL_local {
  color: #01C;
}
& {
  .GLOBAL {
    before: outer;
    before: inner;
    .LOCAL_local {
      color: #01D;
    }
    after: inner;
    after: outer;
  }
}

/* LOCAL.local-css */
.LOCAL_top_level {
  color: #000;
}
.GLOBAL {
  color: #001;
}
.LOCAL_local2 {
  color: #002;
}
div.GLOBAL {
  color: #003;
}
div.LOCAL_local2 {
  color: #004;
}
div.LOCAL_top_level {
  color: #005;
}
div.LOCAL_top_level {
  color: #006;
}
div.GLOBAL {
  color: #007;
}
div.LOCAL_local2 {
  color: #008;
}
div:is(span).GLOBAL {
  color: #009;
}
div:is(span).LOCAL_local2 {
  color: #00A;
}
div#GLOBAL_A.GLOBAL_B.GLOBAL_C.LOCAL_local_a2.LOCAL_local_b2#LOCAL_local_c2 {
  color: #00B;
}
div#GLOBAL_A .GLOBAL_B .GLOBAL_C.LOCAL_local_a2 .LOCAL_local_b2 #LOCAL_local_c2 {
  color: #00C;
}
.LOCAL_nested {
  &.GLOBAL {
    color: #00D;
  }
  &.LOCAL_local2 {
    color: #00E;
  }
  &.GLOBAL {
    color: #00F;
  }
  &.LOCAL_local2 {
    color: #010;
  }
}
.GLOBAL_A .GLOBAL_B {
  color: #011;
}
.LOCAL_local_a2 .LOCAL_local_b2 {
  color: #012;
}
div.GLOBAL_A .GLOBAL_B:hover {
  color: #013;
}
div.LOCAL_local_a2 .LOCAL_local_b2:hover {
  color: #014;
}
div .GLOBAL_A .GLOBAL_B span {
  color: #015;
}
div .LOCAL_local_a2 .LOCAL_local_b2 span {
  color: #016;
}
div > .GLOBAL_A ~ .GLOBAL_B + span {
  color: #017;
}
div > .LOCAL_local_a2 ~ .LOCAL_local_b2 + span {
  color: #018;
}
div + .GLOBAL_A:hover {
  color: #019;
}
div + .LOCAL_local_a2:hover {
  color: #01A;
}
.GLOBAL.LOCAL_local2 {
  color: #01B;
}
.GLOBAL .LOCAL_local2 {
  color: #01C;
}
& {
  .GLOBAL {
    before: outer;
    before: inner;
    .LOCAL_local2 {
      color: #01D;
    }
    after: inner;
    after: outer;
  }
}

================================================================================
TestImportCSSFromJSLowerBareLocalAndGlobal
---------- /out/entry.js ----------
// styles.css
var styles_default = {
  before: "styles_before",
  button: "styles_button",
  after: "styles_after"
};

// entry.js
console.log(styles_default);

---------- /out/entry.css ----------
/* styles.css */
.styles_before {
  color: #000;
}
:scope .styles_button {
  color: #000;
}
.styles_after {
  color: #000;
}
.styles_before {
  color: #001;
}
:scope .button {
  color: #001;
}
.styles_after {
  color: #001;
}
div .styles_button {
  color: #002;
}
div .button {
  color: #003;
}
:scope {
  color: #004;
}
:scope {
  color: #005;
}
:scope .styles_button {
  color: #006;
}
:scope .styles_button {
  color: #007;
}

================================================================================
TestImportCSSFromJSNthIndexLocal
---------- /out/entry.js ----------
// styles.css
var styles_default = {
  local: "styles_local",
  local1: "styles_local1",
  local2: "styles_local2"
};

// entry.js
console.log(styles_default);

---------- /out/entry.css ----------
/* styles.css */
:nth-child(2n of .styles_local) {
  color: #000;
}
:nth-child(2n of #styles_local, .GLOBAL) {
  color: #001;
}
:nth-child(2n of .styles_local1 .GLOBAL1, .GLOBAL2 .styles_local2) {
  color: #002;
}
.styles_local1,
:nth-child(2n of .GLOBAL),
.styles_local2 {
  color: #003;
}
:nth-last-child(2n of .styles_local) {
  color: #000;
}
:nth-last-child(2n of #styles_local, .GLOBAL) {
  color: #001;
}
:nth-last-child(2n of .styles_local1 .GLOBAL1, .GLOBAL2 .styles_local2) {
  color: #002;
}
.styles_local1,
:nth-last-child(2n of .GLOBAL),
.styles_local2 {
  color: #003;
}

================================================================================
TestImportGlobalCSSFromJS
---------- /out/entry.js ----------
// a.css
var a_default = {};

// a.js
console.log("a", void 0, a_default.a);

// b.css
var b_default = {};

// b.js
console.log("b", void 0, b_default.b);

---------- /out/entry.css ----------
/* a.css */
.a {
  color: red;
}

/* b.css */
.b {
  color: blue;
}

================================================================================
TestImportLocalCSSFromJS
---------- /out/entry.js ----------
// dir1/style.css
var button = "style_button";
var style_default = {
  a: "style_a",
  button
};

// a.js
console.log("file 1", button, style_default.a);

// dir2/style.css
var button2 = "style_button2";
var style_default2 = {
  b: "style_b",
  button: button2
};

// b.js
console.log("file 2", button2, style_default2.b);

---------- /out/entry.css ----------
/* dir1/style.css */
.style_a {
  color: red;
}
.style_button {
  display: none;
}

/* dir2/style.css */
.style_b {
  color: blue;
}
.style_button2 {
  display: none;
}

================================================================================
TestImportLocalCSSFromJSMinifyIdentifiers
---------- /out/entry.js ----------
// dir1/style.css
var t = "l";
var l = {
  a: "o",
  button: t
};

// a.js
console.log("file 1", t, l.a);

// dir2/style.css
var e = "n";
var n = {
  b: "e",
  button: e
};

// b.js
console.log("file 2", e, n.b);

---------- /out/entry.css ----------
/* dir1/style.css */
.o {
  color: red;
}
.l {
  display: none;
}

/* dir2/style.css */
.e {
  color: blue;
}
.n {
  display: none;
}

================================================================================
TestImportLocalCSSFromJSMinifyIdentifiersAvoidGlobalNames
---------- /out/entry.js ----------

---------- /out/entry.css ----------
/* global.css */
:is(.a, .b, .c, .d, .e, .f, .g, .h, .i, .j, .k, .l, .m, .n, .o, .p, .q, .r, .s, .t, .u, .v, .w, .x, .y, .z),
:is(.A, .B, .C, .D, .E, .F, .G, .H, .I, .J, .K, .L, .M, .N, .O, .P, .Q, .R, .S, .T, .U, .V, .W, .X, .Y, .Z),
._ {
  color: red;
}

/* local.module.css */
.oo {
  color: blue;
}

================================================================================
TestImportLocalCSSFromJSMinifyIdentifiersMultipleEntryPoints
---------- /out/a.js ----------
// a.module.css
var r = "o";
var l = "c";

// a.js
console.log(r, l);

---------- /out/a.css ----------
/* a.module.css */
.o {
  color: #001;
}
.c {
  color: #002;
}

---------- /out/b.js ----------
// b.module.css
var r = "l";
var l = "r";

// b.js
console.log(r, l);

---------- /out/b.css ----------
/* b.module.css */
.l {
  color: #003;
}
.r {
  color: #004;
}

================================================================================
TestMetafileCSSBundleTwoToOne
---------- /out/js/2PSDKYWE.js ----------
// foo/entry.js
console.log("foo");

---------- /out/css/DIO3TRUB.css ----------
/* common.css */
body {
  color: red;
}

---------- /out/js/MA6C7ZBK.js ----------
// bar/entry.js
console.log("bar");
---------- metafile.json ----------
{
  "inputs": {
    "common.css": {
      "bytes": 28,
      "imports": []
    },
    "foo/entry.js": {
      "bytes": 54,
      "imports": [
        {
          "path": "common.css",
          "kind": "import-statement",
          "original": "../common.css"
        }
      ],
      "format": "esm"
    },
    "bar/entry.js": {
      "bytes": 54,
      "imports": [
        {
          "path": "common.css",
          "kind": "import-statement",
          "original": "../common.css"
        }
      ],
      "format": "esm"
    }
  },
  "outputs": {
    "out/js/2PSDKYWE.js": {
      "imports": [],
      "exports": [],
      "entryPoint": "foo/entry.js",
      "cssBundle": "out/css/DIO3TRUB.css",
      "inputs": {
        "common.css": {
          "bytesInOutput": 0
        },
        "foo/entry.js": {
          "bytesInOutput": 20
        }
      },
      "bytes": 36
    },
    "out/css/DIO3TRUB.css": {
      "imports": [],
      "inputs": {
        "common.css": {
          "bytesInOutput": 23
        }
      },
      "bytes": 40
    },
    "out/js/MA6C7ZBK.js": {
      "imports": [],
      "exports": [],
      "entryPoint": "bar/entry.js",
      "cssBundle": "out/css/DIO3TRUB.css",
      "inputs": {
        "common.css": {
          "bytesInOutput": 0
        },
        "bar/entry.js": {
          "bytesInOutput": 20
        }
      },
      "bytes": 36
    }
  }
}

================================================================================
TestPackageURLsInCSS
---------- /out/entry.css ----------
/* test.css */
.css {
  color: red;
}

/* entry.css */
a {
  background: url(data:image/png;base64,YS0x);
}
b {
  background: url(data:image/png;base64,Yi0yLW5vZGVfbW9kdWxlcw==);
}
c {
  background: url(data:image/png;base64,Yy0z);
}

================================================================================
TestTextImportURLInCSSText
---------- /out/entry.css ----------
/* entry.css */
a {
  background: url(data:text/plain;base64,VGhpcyBpcyBzb21lIHRleHQu);
}

================================================================================
TestUndefinedImportWarningCSS
---------- /out/entry.js ----------
// empty.js
var require_empty = __commonJS({
  "empty.js"() {
  }
});

// node_modules/pkg/empty.js
var require_empty2 = __commonJS({
  "node_modules/pkg/empty.js"() {
  }
});

// entry.js
var empty_js2 = __toESM(require_empty());
var pkg_empty_js = __toESM(require_empty2());

// node_modules/pkg/index.js
var empty_js = __toESM(require_empty2());
console.log(
  void 0,
  void 0,
  void 0,
  void 0,
  void 0,
  void 0
);

// entry.js
console.log(
  void 0,
  void 0,
  void 0,
  void 0,
  void 0,
  void 0
);
console.log(
  void 0,
  void 0,
  void 0,
  void 0,
  void 0,
  void 0
);

---------- /out/entry.css ----------
/* empty.css */
/* empty.global-css */
/* empty.local-css */
/* node_modules/pkg/empty.css */
/* node_modules/pkg/empty.global-css */
/* node_modules/pkg/empty.local-css */
