PluginProbe
OpenStation: Desktop Windows, Dock & Virtual Desktops for WP Admin / 1.1.10
OpenStation: Desktop Windows, Dock & Virtual Desktops for WP Admin v1.1.10
1.1.10 1.1.9 1.1.8 1.1.7 1.1.6 1.1.5 1.1.4 1.1.3 1.1.2 1.1.1 1.1.0 1.0.1 1.0.0 0.9.8 0.9.7 0.9.6 0.9.4 0.9.5 0.9.3 0.9.2 0.9.1 0.9.0 0.8.9 0.8.8 0.8.7 All 34 releases
← All changes | assets/css/chromeless.css +725 -0 1.1.01.1.10 View file →
@@ -118,8 +118,36 @@
118 118 .os-chromeless .woocommerce-layout__header {
119 119 width: 100% !important;
120 120 }
121 121
122 +/*
123 + * MailPoet top-bar overlap fix.
124 + *
125 + * MailPoet mounts a 64px-tall brand bar on its screens as
126 + * `.wrap .mailpoet-top-bar { position: absolute; top: 0 }` —
127 + * anchored to `#wpbody` (core's `position: relative`), overlaying
128 + * whatever the page's first 64px contain. In classic admin nothing
129 + * is visibly covered only by accident of geometry: the in-flow
130 + * space above `.wrap` — the `#screen-meta-links` row plus `.wrap`'s
131 + * own top margin — happens to add up to more than the bar's height,
132 + * so the content starts below it (measured: `.wrap` at y=114 vs
133 + * bar bottom at y=96).
134 + *
135 + * Chromeless collapses exactly that space on purpose — screen-meta
136 + * links are hidden (the window title bar owns those buttons) and
137 + * `.wrap` margins are trimmed — which slides MailPoet's content up
138 + * underneath the overlaid bar. Symptom: the page's heading sits
139 + * half-hidden behind the white logo bar inside the window.
140 + *
141 + * Reserve the bar's height in flow instead. `:has()` scopes the
142 + * rule to precisely the pages that render the in-wrap bar —
143 + * whatever MailPoet screen shape it is, present or future — and to
144 + * nothing else.
145 + */
146 +.os-chromeless .wrap:has( .mailpoet-top-bar ) {
147 + padding-top: 64px;
148 +}
149 +
122 150 /* ---------------------------------------------------------------
123 151 * Screen Meta (Screen Options / Help panels)
124 152 * The toggle buttons (#screen-meta-links) are hidden because
125 153 * the parent desktop shell adds its own buttons to the window
@@ -215,8 +243,34 @@
215 243 .os-chromeless.themes-php .wrap > .page-title-action {
216 244 display: none;
217 245 }
218 246
247 +/*
248 + * Core offsets every title action by `top: -3px` (common.css) so it
249 + * sits on the H1's baseline. Chromeless hides the H1, and the first
250 + * thing in the frame has nothing above it to overlap: the offset
251 + * pulls the button's top border under the window's content edge and
252 + * it renders cropped. The offset has no baseline left to meet here,
253 + * so drop it.
254 + *
255 + * The margins are the same 12px the rule above gives a lone button,
256 + * applied to whatever element a plugin grouped its buttons in. On a
257 + * Jetpack site that is `div.wpcom-media-library-action-buttons`
258 + * (external-media moves core's "Add Media File" into it so it can
259 + * append "Import Media"; Big Sky adds "Generate Image" beside them),
260 + * and a group is not a `.page-title-action`, so it picks up neither
261 + * the margin nor the block layout and lands flush against the top.
262 + * `:has()` reaches the group whatever a plugin decided to call it.
263 + */
264 +.os-chromeless .wrap .page-title-action {
265 + top: 0;
266 +}
267 +
268 +.os-chromeless .wrap :has( > .page-title-action ) {
269 + margin-top: 12px;
270 + margin-bottom: 12px;
271 +}
272 +
219 273 /* ---------------------------------------------------------------
220 274 * WooCommerce "embed page" header overlay — page-scoped.
221 275 *
222 276 * Background: WC renders TWO layouts simultaneously on "connected"
@@ -314,8 +368,85 @@
314 368 width: auto;
315 369 }
316 370
317 371 /* ---------------------------------------------------------------
372 + * Metabox screens — the one-column breakpoint is 160px too early.
373 + *
374 + * Core collapses every `#poststuff` two-column screen (the classic
375 + * post editor, any CPT editor, a WooCommerce order) to one column
376 + * at `max-width: 850px`. That number is a VIEWPORT width, and it is
377 + * sized for a viewport that still has the 160px admin menu in it:
378 + * at 851px core leaves roughly 650px of usable content — less than
379 + * the 763px the two columns actually need (`#post-body-content`'s
380 + * 463px floor plus the 300px sidebar reservation), which is why
381 + * core's own two-column layout scrolls sideways just above the
382 + * breakpoint.
383 + *
384 + * A chromeless iframe hides the admin menu, so the same 851px gives
385 + * 835px of content — comfortably two columns — and core stacks it
386 + * anyway. The sidebar then lands BELOW the editor, and since the
387 + * classic editor grows to fit its text, a long post pushes Publish,
388 + * Categories, Tags and Featured image thousands of pixels down the
389 + * page. The user's word for that is "vanished".
390 + *
391 + * Same shape as the WooCommerce header fix at the top of this file:
392 + * the page reserved space for a sidebar we removed, so reclaim the
393 + * reservation. Two columns stay until the content really stops
394 + * fitting: 763px of content, plus the 16px `#wpbody-content` gutter
395 + * above, plus up to 17px for a classic vertical scrollbar — which a
396 + * media query does NOT subtract from the width it matches on, the
397 + * same reason `100vw` overflows a scrolling page. That is 796px.
398 + * Below it, core's one-column layout is correct and stays.
399 + *
400 + * The reservation is written flow-relative rather than as core's
401 + * `margin-right` / `float: right`, because core ships the mirrored
402 + * values in a separate `edit-rtl.css` and this file has no RTL
403 + * build — one logical declaration lands on the correct side in
404 + * both directions. `float: right` stays ahead of `float:
405 + * inline-end` as the fallback.
406 + *
407 + * Attachments keep core's own, wider, 1200px breakpoint: the media
408 + * editor's sidebar carries the whole attachment form and needs the
409 + * room. `.post-type-attachment` is excluded rather than re-stacked
410 + * so that rule keeps working untouched.
411 + *
412 + * Verifying: open a post with a few thousand words in a window
413 + * ~800px wide. Publish/Categories/Tags sit beside the editor, not
414 + * under it, and the page has no horizontal scrollbar.
415 + * --------------------------------------------------------------- */
416 +@media only screen and ( min-width: 796px ) and ( max-width: 850px ) {
417 + .os-chromeless:not( .post-type-attachment ) #wpbody-content #poststuff #post-body.columns-2 {
418 + margin-inline-end: 300px;
419 + }
420 +
421 + .os-chromeless:not( .post-type-attachment ) #wpbody-content #post-body.columns-2 #postbox-container-1 {
422 + float: right;
423 + float: inline-end;
424 + margin-inline-end: -300px;
425 + width: 280px;
426 + }
427 +
428 + .os-chromeless:not( .post-type-attachment ) #poststuff #post-body.columns-2 #side-sortables {
429 + min-height: 250px;
430 + width: 280px;
431 + }
432 +
433 + /*
434 + * Core hides the Layout radios with the two-column layout. They
435 + * are the way back to one column, so they come back with it.
436 + *
437 + * `edit.css` is part of the `wp-admin` bundle and loads on every
438 + * screen, so that hide reaches the Dashboard's own 1-4 column
439 + * radios too. Only un-hide them where this block actually gave a
440 + * layout back.
441 + */
442 + .os-chromeless:not( .post-type-attachment ):has( #post-body.columns-2 ) .screen-layout,
443 + .os-chromeless:not( .post-type-attachment ):has( #post-body.columns-2 ) .columns-prefs {
444 + display: block;
445 + }
446 +}
447 +
448 +/* ---------------------------------------------------------------
318 449 * Block Editor — hide Gutenberg chrome that would break the window.
319 450 *
320 451 * The fullscreen-mode close button (the "W" logo top-left of the editor)
321 452 * is an <a href="/wp-admin/edit.php"> that navigates the iframe to a
@@ -489,5 +620,599 @@
489 620 * --------------------------------------------------------------- */
490 621 .os-chromeless .commands-command-menu__container,
491 622 .os-chromeless .commands-command-menu {
492 623 display: none !important;
624 +}
625 +
626 +/* ---------------------------------------------------------------
627 + * A file drag over a native upload box.
628 + *
629 + * The chromeless bridge hands an OS-file drop to Core's own
630 + * `<input type="file">` when it lands on one, or anywhere on the
631 + * `form.wp-upload-form` box around it (Upload Plugin, Upload
632 + * Theme), and stamps `data-os-file-drop-active` on that box while
633 + * the drag is over it. Outside the shell the box gives no sign it
634 + * will take a drop; inside, the shell used to take the file
635 + * instead, so people learned it would not. Say so while it can.
636 + *
637 + * Core's own admin colour, read the way common.css reads it, not
638 + * the station's: this is a wp-admin control on a wp-admin page.
639 + * --------------------------------------------------------------- */
640 +.os-chromeless [data-os-file-drop-active] {
641 + outline: 2px dashed var( --wp-admin-theme-color, #3858e9 );
642 + outline-offset: -2px;
643 +}
644 +
645 +/* ---------------------------------------------------------------
646 + * Appearance → Themes workspace
647 + *
648 + * Core's one-theme state renders the Theme Details dialog inline and
649 + * removes its header. Inside a short desktop window that leaves a large,
650 + * unexplained panel whose actions fall below the fold. Treat it as an
651 + * active-site identity card instead: screenshot first, useful context at
652 + * the side, and actions kept in the card's visible edge.
653 + *
654 + * With multiple installed themes the native cards become a deliberate
655 + * library grid and Core's details view remains a dialog. All selectors are
656 + * scoped to the chromeless Themes screen; the classic wp-admin page keeps
657 + * Core's own presentation and the shell's palette cannot leak in here.
658 + * --------------------------------------------------------------- */
659 +.os-chromeless.themes-php #wpbody-content {
660 + padding: 10px 16px;
661 + background: #f6f7f7;
662 +}
663 +
664 +.os-chromeless.themes-php .openstation-themes-intro {
665 + display: flex;
666 + align-items: center;
667 + justify-content: space-between;
668 + gap: 24px;
669 + margin: 0 0 8px;
670 + padding: 14px 18px;
671 + background: #fff;
672 + border: 1px solid #dcdcde;
673 + border-radius: 12px;
674 + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04);
675 + box-sizing: border-box;
676 +}
677 +
678 +.os-chromeless.themes-php .openstation-themes-intro__copy {
679 + max-width: 680px;
680 +}
681 +
682 +.os-chromeless.themes-php .openstation-themes-intro__eyebrow {
683 + margin: 0 0 5px;
684 + color: var(--wp-admin-theme-color, #2271b1);
685 + font-size: 11px;
686 + font-weight: 700;
687 + letter-spacing: 0.08em;
688 + line-height: 1.4;
689 + text-transform: uppercase;
690 +}
691 +
692 +.os-chromeless.themes-php .openstation-themes-intro h1 {
693 + margin: 0;
694 + color: #1d2327;
695 + font-size: clamp(22px, 2.8vw, 30px);
696 + font-weight: 650;
697 + letter-spacing: -0.025em;
698 + line-height: 1.12;
699 +}
700 +
701 +.os-chromeless.themes-php .openstation-themes-intro__copy > p:last-child {
702 + max-width: 650px;
703 + margin: 6px 0 0;
704 + color: #50575e;
705 + font-size: 13px;
706 + line-height: 1.45;
707 +}
708 +
709 +.os-chromeless.themes-php .openstation-themes-intro__count {
710 + display: grid;
711 + flex: 0 0 auto;
712 + min-width: 104px;
713 + margin: 0;
714 + padding: 10px 14px;
715 + background: #f6f7f7;
716 + border: 1px solid #dcdcde;
717 + border-radius: 9px;
718 + box-sizing: border-box;
719 + text-align: center;
720 +}
721 +
722 +.os-chromeless.themes-php .openstation-themes-intro__count strong {
723 + color: #1d2327;
724 + font-size: 22px;
725 + font-weight: 650;
726 + letter-spacing: -0.03em;
727 + line-height: 1;
728 +}
729 +
730 +.os-chromeless.themes-php .openstation-themes-intro__count span {
731 + margin-top: 5px;
732 + color: #646970;
733 + font-size: 10px;
734 + font-weight: 600;
735 + letter-spacing: 0.04em;
736 + line-height: 1.25;
737 + text-transform: uppercase;
738 +}
739 +
740 +.os-chromeless.themes-php .wrap {
741 + margin: 0;
742 +}
743 +
744 +.os-chromeless.themes-php .search-form {
745 + display: flex;
746 + margin: 0 0 16px;
747 + padding: 0;
748 +}
749 +
750 +.os-chromeless.themes-php .wp-filter-search {
751 + width: min(320px, 100%);
752 + min-height: 36px;
753 + padding-inline: 12px;
754 + background: #fff;
755 + border-color: #8c8f94;
756 + border-radius: 7px;
757 +}
758 +
759 +/* Searching a library of one is noise, so the field goes away in Core's
760 + * single-theme state. The general sibling combinator rather than `+`:
761 + * themes.php emits `wp_admin_notice()` output between the search form and
762 + * `.theme-browser` on `?activated`, `?deleted`, `?broken` and
763 + * `?delete-active-child` — exactly the loads that follow activating or
764 + * deleting a theme — which breaks strict adjacency. */
765 +.os-chromeless.themes-php
766 + .search-form:has(~ .theme-browser .themes.single-theme) {
767 + display: none;
768 +}
769 +
770 +/* Installed-theme library. The Add Theme destination already has its own
771 + * persistent window tab, so Core's duplicate dashed card is unnecessary. */
772 +.os-chromeless.themes-php .theme-browser .themes:not(.single-theme) {
773 + display: grid;
774 + grid-template-columns: repeat(auto-fit, minmax(min(260px, 100%), 1fr));
775 + gap: 18px;
776 + clear: both;
777 +}
778 +
779 +.os-chromeless.themes-php .theme-browser .themes:not(.single-theme) > .theme {
780 + float: none;
781 + width: auto;
782 + margin: 0;
783 + background: #fff;
784 + border: 1px solid #c3c4c7;
785 + border-radius: 10px;
786 + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04);
787 + overflow: hidden;
788 + transition:
789 + border-color 120ms ease,
790 + box-shadow 120ms ease,
791 + transform 120ms ease;
792 +}
793 +
794 +.os-chromeless.themes-php
795 + .theme-browser
796 + .themes:not(.single-theme)
797 + > .theme:hover,
798 +.os-chromeless.themes-php
799 + .theme-browser
800 + .themes:not(.single-theme)
801 + > .theme.focus {
802 + border-color: #8c8f94;
803 + box-shadow: 0 7px 20px rgba(0, 0, 0, 0.1);
804 + transform: translateY(-2px);
805 +}
806 +
807 +.os-chromeless.themes-php
808 + .theme-browser
809 + .themes:not(.single-theme)
810 + > .theme.active {
811 + border-color: var(--wp-admin-theme-color, #2271b1);
812 + box-shadow:
813 + 0 0 0 1px var(--wp-admin-theme-color, #2271b1),
814 + 0 7px 20px rgba(0, 0, 0, 0.08);
815 +}
816 +
817 +.os-chromeless.themes-php
818 + .theme-browser
819 + .themes:not(.single-theme)
820 + > .add-new-theme {
821 + display: none;
822 +}
823 +
824 +.os-chromeless.themes-php
825 + .theme-browser
826 + .themes:not(.single-theme)
827 + .theme-screenshot {
828 + background: #f0f0f1;
829 +}
830 +
831 +.os-chromeless.themes-php
832 + .theme-browser
833 + .themes:not(.single-theme)
834 + .theme-id-container {
835 + display: flex;
836 + align-items: center;
837 + justify-content: space-between;
838 + min-height: 58px;
839 + background: #fff;
840 +}
841 +
842 +.os-chromeless.themes-php .theme-browser .themes:not(.single-theme) .theme-name,
843 +.os-chromeless.themes-php
844 + .theme-browser
845 + .themes:not(.single-theme)
846 + .theme.active
847 + .theme-name {
848 + flex: 1 1 auto;
849 + height: auto;
850 + min-width: 0;
851 + margin: 0;
852 + padding: 14px 12px 14px 14px;
853 + background: #fff;
854 + box-shadow: none;
855 + color: #1d2327;
856 + font-size: 14px;
857 + font-weight: 600;
858 + line-height: 1.3;
859 +}
860 +
861 +.os-chromeless.themes-php
862 + .theme-browser
863 + .themes:not(.single-theme)
864 + .theme.active
865 + .theme-name
866 + span {
867 + display: block;
868 + margin-bottom: 2px;
869 + color: var(--wp-admin-theme-color, #2271b1);
870 + font-size: 10px;
871 + font-weight: 700;
872 + letter-spacing: 0.06em;
873 + line-height: 1.2;
874 + text-transform: uppercase;
875 +}
876 +
877 +.os-chromeless.themes-php
878 + .theme-browser
879 + .themes:not(.single-theme)
880 + .theme-actions,
881 +.os-chromeless.themes-php
882 + .theme-browser
883 + .themes:not(.single-theme)
884 + .theme.active
885 + .theme-actions {
886 + display: flex;
887 + align-items: center;
888 + flex: 0 0 auto;
889 + position: static;
890 + opacity: 1;
891 + padding: 10px 12px 10px 0;
892 + background: #fff;
893 + border: 0;
894 + box-shadow: none;
895 + transform: none;
896 +}
897 +
898 +/* Multiple-theme details remain a modal, but fit the iframe rather than
899 + * reserving the classic admin sidebar's 160px gutter. */
900 +.os-chromeless.themes-php .theme-overlay.active .theme-backdrop {
901 + position: fixed;
902 + left: 0;
903 + background: rgba(29, 35, 39, 0.62);
904 + backdrop-filter: blur(2px);
905 +}
906 +
907 +.os-chromeless.themes-php .theme-overlay.active .theme-wrap {
908 + top: 18px;
909 + right: 18px;
910 + bottom: 18px;
911 + left: 18px;
912 + border: 1px solid #c3c4c7;
913 + border-radius: 12px;
914 + box-shadow: 0 20px 55px rgba(0, 0, 0, 0.28);
915 + overflow: hidden;
916 +}
917 +
918 +.os-chromeless.themes-php .theme-overlay.active .theme-header {
919 + background: #fff;
920 +}
921 +
922 +.os-chromeless.themes-php .theme-overlay.active .theme-about {
923 + padding: 24px;
924 +}
925 +
926 +.os-chromeless.themes-php .theme-overlay.active .theme-actions {
927 + justify-content: flex-end;
928 + padding: 10px 16px 5px;
929 +}
930 +
931 +/* Single-theme mode is a workspace card, not a stranded modal. */
932 +.os-chromeless.themes-php .themes.single-theme {
933 + display: block;
934 + margin: 0;
935 +}
936 +
937 +.os-chromeless.themes-php .themes.single-theme .theme-overlay.active {
938 + display: block;
939 + position: static;
940 +}
941 +
942 +.os-chromeless.themes-php
943 + .themes.single-theme
944 + .theme-overlay.active
945 + .theme-backdrop,
946 +.os-chromeless.themes-php
947 + .themes.single-theme
948 + .theme-overlay.active
949 + .theme-header {
950 + display: none;
951 +}
952 +
953 +.os-chromeless.themes-php
954 + .themes.single-theme
955 + .theme-overlay.active
956 + .theme-wrap {
957 + display: grid;
958 + grid-template-columns: minmax(320px, 0.95fr) minmax(300px, 1.05fr);
959 + grid-template-areas: "screenshot details";
960 + column-gap: 24px;
961 + align-items: start;
962 + position: relative;
963 + top: auto;
964 + right: auto;
965 + bottom: auto;
966 + left: auto;
967 + min-height: 0;
968 + padding: 12px 16px;
969 + background: #fff;
970 + border: 1px solid #c3c4c7;
971 + border-radius: 12px;
972 + box-shadow: 0 8px 24px rgba(0, 0, 0, 0.08);
973 + overflow: visible;
974 + z-index: 10;
975 +}
976 +
977 +.os-chromeless.themes-php
978 + .themes.single-theme
979 + .theme-overlay.active
980 + .theme-about {
981 + display: contents;
982 +}
983 +
984 +.os-chromeless.themes-php
985 + .themes.single-theme
986 + .theme-overlay.active
987 + .theme-screenshots {
988 + grid-area: screenshot;
989 + float: none;
990 + width: 100%;
991 + max-width: none;
992 + margin: 0;
993 +}
994 +
995 +.os-chromeless.themes-php
996 + .themes.single-theme
997 + .theme-overlay.active
998 + .screenshot {
999 + background: #f0f0f1;
1000 + border: 0;
1001 + border-radius: 8px;
1002 + box-shadow: 0 0 0 1px #dcdcde;
1003 + overflow: hidden;
1004 +}
1005 +
1006 +.os-chromeless.themes-php
1007 + .themes.single-theme
1008 + .theme-overlay.active
1009 + .theme-info {
1010 + grid-area: details;
1011 + align-self: start;
1012 + float: none;
1013 + width: auto;
1014 + max-height: 240px;
1015 + padding: 2px 10px 2px 0;
1016 + overflow: auto;
1017 + scrollbar-gutter: stable;
1018 +}
1019 +
1020 +.os-chromeless.themes-php
1021 + .themes.single-theme
1022 + .theme-overlay.active
1023 + .current-label {
1024 + margin: 0 0 10px;
1025 + padding: 4px 9px;
1026 + background: #e7f5ed;
1027 + border: 1px solid #9ad7b5;
1028 + border-radius: 999px;
1029 + color: #0a5c36;
1030 + font-size: 10px;
1031 + font-weight: 700;
1032 + letter-spacing: 0.05em;
1033 + line-height: 1.4;
1034 + text-transform: uppercase;
1035 +}
1036 +
1037 +.os-chromeless.themes-php
1038 + .themes.single-theme
1039 + .theme-overlay.active
1040 + .theme-name {
1041 + margin: 0;
1042 + color: #1d2327;
1043 + font-size: clamp(25px, 3vw, 34px);
1044 + font-weight: 650;
1045 + letter-spacing: -0.03em;
1046 + line-height: 1.12;
1047 +}
1048 +
1049 +.os-chromeless.themes-php
1050 + .themes.single-theme
1051 + .theme-overlay.active
1052 + .theme-version {
1053 + margin-left: 8px;
1054 + color: #646970;
1055 + font-size: 11px;
1056 + font-weight: 500;
1057 + letter-spacing: 0;
1058 +}
1059 +
1060 +.os-chromeless.themes-php
1061 + .themes.single-theme
1062 + .theme-overlay.active
1063 + .theme-author {
1064 + margin: 8px 0 14px;
1065 + color: #646970;
1066 + font-size: 13px;
1067 +}
1068 +
1069 +.os-chromeless.themes-php
1070 + .themes.single-theme
1071 + .theme-overlay.active
1072 + .theme-autoupdate {
1073 + margin: 0 0 14px;
1074 + padding: 9px 10px;
1075 + background: #f6f7f7;
1076 + border: 1px solid #dcdcde;
1077 + border-radius: 6px;
1078 + font-size: 12px;
1079 +}
1080 +
1081 +.os-chromeless.themes-php
1082 + .themes.single-theme
1083 + .theme-overlay.active
1084 + .theme-description {
1085 + margin: 0;
1086 + color: #3c434a;
1087 + font-size: 13px;
1088 + line-height: 1.55;
1089 +}
1090 +
1091 +.os-chromeless.themes-php
1092 + .themes.single-theme
1093 + .theme-overlay.active
1094 + .theme-tags,
1095 +.os-chromeless.themes-php
1096 + .themes.single-theme
1097 + .theme-overlay.active
1098 + .parent-theme {
1099 + margin-top: 16px;
1100 + padding-top: 12px;
1101 + border-top-width: 1px;
1102 + color: #646970;
1103 + font-size: 11px;
1104 + line-height: 1.5;
1105 +}
1106 +
1107 +.os-chromeless.themes-php
1108 + .themes.single-theme
1109 + .theme-overlay.active
1110 + .theme-actions {
1111 + display: flex;
1112 + grid-area: details;
1113 + align-items: center;
1114 + align-self: end;
1115 + justify-content: flex-start;
1116 + position: static;
1117 + padding: 14px 0 0;
1118 + background: transparent;
1119 + border-top: 1px solid #dcdcde;
1120 + text-align: left;
1121 +}
1122 +
1123 +.os-chromeless.themes-php
1124 + .themes.single-theme
1125 + .theme-overlay.active
1126 + .theme-actions
1127 + .active-theme {
1128 + display: flex;
1129 + flex-wrap: wrap;
1130 + gap: 7px;
1131 +}
1132 +
1133 +.os-chromeless.themes-php
1134 + .themes.single-theme
1135 + .theme-overlay.active
1136 + .theme-actions
1137 + .inactive-theme {
1138 + display: none;
1139 +}
1140 +
1141 +.os-chromeless.themes-php
1142 + .themes.single-theme
1143 + .theme-overlay.active
1144 + .theme-actions
1145 + .button {
1146 + margin: 0;
1147 +}
1148 +
1149 +@media (max-width: 760px) {
1150 + .os-chromeless.themes-php #wpbody-content {
1151 + padding: 12px;
1152 + }
1153 +
1154 + .os-chromeless.themes-php .openstation-themes-intro {
1155 + align-items: flex-start;
1156 + gap: 16px;
1157 + padding: 16px;
1158 + }
1159 +
1160 + .os-chromeless.themes-php .openstation-themes-intro__copy > p:last-child {
1161 + display: none;
1162 + }
1163 +
1164 + .os-chromeless.themes-php
1165 + .themes.single-theme
1166 + .theme-overlay.active
1167 + .theme-wrap {
1168 + grid-template-columns: minmax(0, 1fr);
1169 + grid-template-areas:
1170 + "screenshot"
1171 + "info"
1172 + "actions";
1173 + padding: 16px;
1174 + }
1175 +
1176 + .os-chromeless.themes-php
1177 + .themes.single-theme
1178 + .theme-overlay.active
1179 + .theme-info {
1180 + grid-area: info;
1181 + max-height: none;
1182 + padding-right: 0;
1183 + overflow: visible;
1184 + }
1185 +
1186 + .os-chromeless.themes-php
1187 + .themes.single-theme
1188 + .theme-overlay.active
1189 + .theme-actions {
1190 + grid-area: actions;
1191 + }
1192 +
1193 + .os-chromeless.themes-php .theme-overlay.active .theme-wrap {
1194 + top: 10px;
1195 + right: 10px;
1196 + bottom: 10px;
1197 + left: 10px;
1198 + }
1199 +}
1200 +
1201 +@media (max-width: 480px) {
1202 + .os-chromeless.themes-php .openstation-themes-intro__count {
1203 + display: none;
1204 + }
1205 +
1206 + .os-chromeless.themes-php .openstation-themes-intro h1 {
1207 + font-size: 21px;
1208 + }
1209 +}
1210 +
1211 +@media (prefers-reduced-motion: reduce) {
1212 + .os-chromeless.themes-php
1213 + .theme-browser
1214 + .themes:not(.single-theme)
1215 + > .theme {
1216 + transition: none;
1217 + }
493 1218 }