X-Git-Url: https://git-public.kairo.at/?p=themes.git;a=blobdiff_plain;f=EarlyBlue%2Fglobal%2Fin-content%2Fcommon.css;h=05ed5faaa34135c589a7c6aaafb99fe0f7145b43;hp=0b211eb5fd22e5db5b3e169123bfc3804ac4ab52;hb=a9f6369d5cebd3c329b993d57e73bcf30fffd2cd;hpb=f0a62060b4f916640a6c67be840b49b7713f1394 diff --git a/EarlyBlue/global/in-content/common.css b/EarlyBlue/global/in-content/common.css index 0b211eb5..05ed5faa 100644 --- a/EarlyBlue/global/in-content/common.css +++ b/EarlyBlue/global/in-content/common.css @@ -7,13 +7,48 @@ @namespace html "http://www.w3.org/1999/xhtml"; @namespace xul "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"; -html|body, +*|*:root { + --in-content-page-color: #000000; + --in-content-page-background: #CCD0DD; + --in-content-text-color: #000000; + --in-content-selected-text: #000000; + ---in-content-header-border-color: #c8c8c8; + --in-content-box-background: #CCD0DD; + ---in-content-box-background-odd: #f3f6fa; + ---in-content-box-background-hover: #ebebeb; + ---in-content-box-background-active: #dadada; + --in-content-box-border-color: #CCD0DD; + ---in-content-item-hover: rgba(0,149,221,0.25); + ---in-content-item-selected: #0095dd; + --in-content-border-highlight: #33FF33; + ---in-content-border-focus: #0095dd; + --in-content-border-color: #9999CC; + --in-content-category-text: #000000; + --in-content-category-border-focus: 1px dotted #FFFFFF; + --in-content-category-text-selected: #FFFFFF; + --in-content-category-background: #666699; + --in-content-category-background-hover: #CCD0DD; + --in-content-category-background-active: #336699; + ---in-content-tab-color: #424f5a; + ---in-content-link-color: #0095dd; + ---in-content-link-color-hover: #178ce5; + ---in-content-link-color-active: #ff9500; + ---in-content-link-color-visited: #551a8b; + ---in-content-primary-button-background: #0095dd; + ---in-content-primary-button-background-hover: #008acb; + ---in-content-primary-button-background-active: #006b9d; + --in-content-table-border-dark-color: #9999CC; + --in-content-table-header-background: #666699; + --in-content-disabled-text: #999999; +} + +html|html, xul|page, xul|window { font: 11px "Liberation Sans",Arial,Tahoma,Helvetica,sans-serif; -moz-appearance: none; - background-color: #CCD0DD; - color: #000000; + background-color: var(--in-content-page-background); + color: var(--in-content-page-color); } html|body { @@ -26,19 +61,24 @@ html|h1 { font-size: 2.5em; font-weight: lighter; line-height: 1.2; - color: #000000; + color: var(--in-content-text-color); margin: 0; margin-bottom: .5em; } html|hr { border-style: solid none none none; - border-color: #666699; + border-color: var(--in-content-border-color); } xul|caption { } +html|h2, +xul|caption > xul|checkbox, +xul|caption > xul|label { +} + xul|caption > xul|checkbox, xul|caption > xul|label { margin-top: 0; @@ -47,9 +87,9 @@ xul|caption > xul|label { *|*.main-content { padding-top: 40px; - -moz-padding-end: 48px; /* orig is 44px to compensate the 4px margin of child elements */ + padding-inline-end: 48px; /* orig is 44px to compensate the 4px margin of child elements */ padding-bottom: 48px; - -moz-padding-start: 48px; + padding-inline-start: 48px; overflow: auto; } @@ -63,16 +103,16 @@ xul|groupbox { -moz-appearance: none; border: none; margin: 15px 0 0; - -moz-padding-start: 0; - -moz-padding-end: 0; + padding-inline-start: 0; + padding-inline-end: 0; font-size: 1.25rem; } -xul|groupbox xul|label, +xul|groupbox xul|label:not(.menu-accel):not(.menu-text):not(.indent):not(.learnMore), xul|groupbox xul|description { / !important needed to override toolkit !important rule / - -moz-margin-start: 0 !important; - -moz-margin-end: 0 !important; + margin-inline-start: 0 !important; + margin-inline-end: 0 !important; } */ /* tabpanels and tabs */ @@ -89,9 +129,9 @@ xul|tabpanels { xul|tabs { margin-bottom: 15px; - border-top: 1px solid #c1c1c1; - border-bottom: 1px solid #c1c1c1; - background-color: #fbfbfb; + border-top: 1px solid var(--in-content-box-border-color); + border-bottom: 1px solid var(--in-content-box-border-color); + background-color: var(--in-content-page-background); } xul|*.tabs-left, @@ -104,20 +144,22 @@ xul|tab { margin-top: 0; padding: 4px 20px; min-height: 44px; - color: #424f5a; - background-color: #fbfbfb; + color: var(--in-content-tab-color); + background-color: var(--in-content-page-background); border-width: 0; + / !important overrides tabbox.css RTL and visuallyselected rules / + border-radius: 0 !important; transition: background-color 50ms ease 0s; } xul|tab:hover { - background-color: #ebebeb; + background-color: var(--in-content-box-background-hover); } -xul|tab[visuallyselected] { - background-color: #ebebeb; +xul|tab[selected] { + background-color: var(--in-content-box-background-hover); padding-bottom: 0; / compensate the 4px border / - border-bottom: 4px solid #ff9500; + border-bottom: 4px solid var(--in-content-border-highlight); } xul|*.tab-text { @@ -129,67 +171,69 @@ xul|*.tab-text { html|button { border-radius: 0px; - border: 1px outset #CCD0DD; - background-color: #CCD0DD; - color: #000000; - / * override forms.css * / + border: 1px outset var(--in-content-box-border-color); + background-color: var(--in-content-box-background); + color: var(--in-content-text-color); + /* override forms.css */ font: inherit; } /* xul buttons and menulists */ /* *|button, +html|select, xul|colorpicker[type="button"], xul|menulist { -moz-appearance: none; - height: 30px; - color: #333; - line-height: 20px; - border: 1px solid #c1c1c1; + min-height: 30px; + color: var(--in-content-text-color); + border: 1px solid var(--in-content-box-border-color); -moz-border-top-colors: none !important; -moz-border-right-colors: none !important; -moz-border-bottom-colors: none !important; -moz-border-left-colors: none !important; border-radius: 2px; - background-color: #fbfbfb; + background-color: var(--in-content-page-background); } */ html|button:enabled:hover, +html|select:enabled:hover, xul|button:not([disabled="true"]):hover, xul|colorpicker[type="button"]:not([disabled="true"]):hover, xul|menulist:not([disabled="true"]):hover { } html|button:enabled:hover:active, +html|select:enabled:hover:active, xul|button:not([disabled="true"]):hover:active, xul|colorpicker[type="button"]:not([disabled="true"]):hover:active, xul|menulist[open="true"]:not([disabled="true"]) { - border: 1px inset #CCD0DD; + border: 1px inset var(--in-content-box-border-color); } html|button:disabled, +html|select:disabled, xul|button[disabled="true"], xul|colorpicker[type="button"][disabled="true"], xul|menulist[disabled="true"] { - cursor: not-allowed; - border: 1px outset #CCD0DD; - color: #999999; + border: 1px outset var(--in-content-box-border-color); + color: var(--in-content-disabled-text); } /* *|button.primary { - background-color: #0095dd; + background-color: var(--in-content-primary-button-background); border-color: transparent; - color: #fff; + color: var(--in-content-selected-text); } html|button.primary:enabled:hover, xul|button.primary:not([disabled="true"]):hover { - background-color: #008acb; + background-color: var(--in-content-primary-button-background-hover); } html|button.primary:enabled:hover:active, xul|button.primary:not([disabled="true"]):hover:active { - background-color: #006b9d; + background-color: var(--in-content-primary-button-background-active); } xul|colorpicker[type="button"] { @@ -204,13 +248,13 @@ xul|menulist > xul|*.menulist-label-box { } xul|menulist > xul|*.menulist-label-box > xul|*.menulist-icon[src] { - -moz-margin-end: 5px; + margin-inline-end: 5px; } xul|button[type="menu"] > xul|*.button-box > xul|*.button-menu-dropmarker { -moz-appearance: none; margin: 1px 0; - -moz-margin-start: 10px; + margin-inline-start: 10px; padding: 0; width: 10px; height: 16px; @@ -220,23 +264,25 @@ xul|button[type="menu"] > xul|*.button-box > xul|*.button-menu-dropmarker { } xul|*.help-button { - min-width: 30px; - border-radius: 2px; + min-width: 16px; + margin-inline-end: 0; border-width: 0; - background-color: #ffcb00; background-image: none; box-shadow: none; - list-style-image: url("chrome://global/skin/in-content/help-glyph.svg"); + list-style-image: url("chrome://global/skin/in-content/help-glyph.svg#help"); } xul|*.help-button:not([disabled="true"]):hover { - background-color: #f4c200; background-image: none; + / Override default button background / + background-color: transparent; + list-style-image: url("chrome://global/skin/in-content/help-glyph.svg#help-hover"); } - xul|*.help-button:not([disabled="true"]):hover:active { - background-color: #eaba00; background-image: none; + / Override default button background / + background-color: transparent; + list-style-image: url("chrome://global/skin/in-content/help-glyph.svg#help-pressed"); } xul|*.close-icon > xul|*.button-box, @@ -248,17 +294,38 @@ xul|*.help-button > xul|*.button-box { } xul|*.help-button > xul|*.button-box > xul|*.button-icon { - width: 18px; - height: 18px; + width: 16px; + height: 16px; } xul|*.help-button > xul|*.button-box > xul|*.button-text { display: none; } +*/ +html|*.help-button { + width: 16px; + height: 16px; + border: 0; + padding: 0; + display: inline-block; + background-image: url("chrome://global/skin/in-content/help-glyph.svg#help"); + background-repeat: no-repeat; + background-position: center center; + background-size: contain; +} +html|*.help-button:hover { + background-image: url("chrome://global/skin/in-content/help-glyph.svg#help-hover"); +} + +html|*.help-button:hover:active { + background-image: url("chrome://global/skin/in-content/help-glyph.svg#help-pressed"); +} +/* xul|*.spinbuttons-button { - -moz-margin-start: 10px !important; - -moz-margin-end: 2px !important; + min-height: initial; + margin-inline-start: 10px !important; + margin-inline-end: 2px !important; } xul|*.spinbuttons-up { @@ -293,7 +360,7 @@ xul|*.spinbuttons-down[disabled="true"] > xul|*.button-box > xul|*.button-icon { xul|menulist:not([editable="true"]) > xul|*.menulist-dropmarker { -moz-appearance: none; - -moz-margin-end: 4px; + margin-inline-end: 4px; padding: 0; border: none; background-color: transparent; @@ -312,9 +379,9 @@ xul|menulist[disabled="true"]:not([editable="true"]) > xul|*.menulist-dropmarker xul|menulist > xul|menupopup, xul|button[type="menu"] > xul|menupopup { -moz-appearance: none; - border: 1px solid #c1c1c1; + border: 1px solid var(--in-content-box-border-color); border-radius: 2px; - background-color: #fff; + background-color: var(--in-content-box-background); } xul|menulist > xul|menupopup xul|menu, @@ -323,34 +390,34 @@ xul|button[type="menu"] > xul|menupopup xul|menu, xul|button[type="menu"] > xul|menupopup xul|menuitem { -moz-appearance: none; font-size: 1rem; - color: #333; + color: var(--in-content-text-color); padding-top: 0.2em; padding-bottom: 0.2em; - -moz-padding-start: 10px; - -moz-padding-end: 30px; + padding-inline-start: 10px; + padding-inline-end: 30px; } xul|menulist > xul|menupopup > xul|menu:not([disabled="true"])[_moz-menuactive="true"], xul|menulist > xul|menupopup > xul|menuitem:not([disabled="true"])[_moz-menuactive="true"], xul|button[type="menu"] > xul|menupopup > xul|menu:not([disabled="true"])[_moz-menuactive="true"], xul|button[type="menu"] > xul|menupopup > xul|menuitem:not([disabled="true"])[_moz-menuactive="true"] { - color: #333; - background-color: rgba(0,149,221,0.25); + color: var(--in-content-text-color); + background-color: var(--in-content-item-hover); } xul|menulist > xul|menupopup > xul|menu:not([disabled="true"])[selected="true"], xul|menulist > xul|menupopup > xul|menuitem:not([disabled="true"])[selected="true"], xul|button[type="menu"] > xul|menupopup > xul|menu:not([disabled="true"])[selected="true"], xul|button[type="menu"] > xul|menupopup > xul|menuitem:not([disabled="true"])[selected="true"] { - color: #fff; - background-color: #0095dd; + color: var(--in-content-selected-text); + background-color: var(--in-content-item-selected); } xul|menulist > xul|menupopup > xul|menu[disabled="true"], xul|menulist > xul|menupopup > xul|menuitem[disabled="true"], xul|button[type="menu"] > xul|menupopup > xul|menu[disabled="true"], xul|button[type="menu"] > xul|menupopup > xul|menuitem[disabled="true"] { - color: #999; + color: var(--in-content-box-border-color); / override the [_moz-menuactive="true"] background color from global/menu.css / background-color: transparent; @@ -361,34 +428,55 @@ xul|button[type="menu"] > xul|menupopup xul|menuseparator { -moz-appearance: none; margin: 0; padding: 0; - border-top: 1px solid #c1c1c1; + border-top: 1px solid var(--in-content-box-border-color); border-bottom: none; } */ /* textboxes */ /* -*|textbox { +html|input[type="text"], +html|textarea, +xul|textbox { -moz-appearance: none; - height: 30px; - color: #333; - line-height: 20px; - padding-right: 10px; - padding-left: 10px; - border: 1px solid #c1c1c1; + color: var(--in-content-text-color); + border: 1px solid var(--in-content-box-border-color); -moz-border-top-colors: none !important; -moz-border-right-colors: none !important; -moz-border-bottom-colors: none !important; -moz-border-left-colors: none !important; border-radius: 2px; - background-color: #fff; + background-color: var(--in-content-box-background); } -html|textbox:focus, +xul|textbox { + min-height: 30px; + padding-right: 10px; + padding-left: 10px; +} + +/ Create a separate rule to unset these styles on .tree-input instead of + using :not(.tree-input) so the selector specifity doesn't change. / +xul|textbox.tree-input { + min-height: unset; + padding-right: unset; + padding-left: unset; +} + +html|input[type="text"], +html|textarea { + font-family: inherit; + font-size: inherit; + padding: 5px 10px; +} + +html|input[type="text"]:focus, +html|textarea:focus, xul|textbox[focused] { - border-color: #0095dd; + border-color: var(--in-content-border-focus); } -html|textbox:disabled, +html|input[type="text"]:disabled, +html|textarea:disabled, xul|textbox[disabled="true"] { opacity: 0.5; } @@ -396,27 +484,24 @@ xul|textbox[disabled="true"] { /* Links */ /* html|a, -.text-link, -.inline-link { - color: #0095dd; +.text-link { + color: var(--in-content-link-color); text-decoration: none; } -html|a:visited { - color: #551a8b; -} - html|a:hover, -.text-link:hover, -.inline-link:hover { - color: #4cb1ff; +.text-link:hover { + color: var(--in-content-link-color-hover); text-decoration: none; } +html|a:visited { + color: var(--in-content-link-color-visited); +} + html|a:hover:active, -.text-link:hover:active, -.inline-link:hover:active { - color: #ff9500; +.text-link:hover:active { + color: var(--in-content-link-color-active); text-decoration: none; } */ @@ -425,6 +510,8 @@ html|a:hover:active, / Hide the actual checkbox / html|input[type="checkbox"] { opacity: 0; + width: 0; + pointer-events: none; position: absolute; } @@ -440,7 +527,7 @@ html|input[type="checkbox"] + html|label { } xul|checkbox { - -moz-margin-start: 0; + margin-inline-start: 0; } xul|*.checkbox-check, @@ -449,8 +536,8 @@ html|input[type="checkbox"] + html|label:before { width: 23px; height: 23px; border-radius: 2px; - border: 1px solid #c1c1c1; - -moz-margin-end: 10px; + border: 1px solid var(--in-content-box-border-color); + margin-inline-end: 10px; background-color: #f1f1f1; / !important needed to override toolkit checked !important rule / background-image: linear-gradient(#fff, rgba(255,255,255,0.8)) !important; @@ -461,7 +548,7 @@ html|input[type="checkbox"] + html|label:before { xul|checkbox:not([disabled="true"]):hover > xul|*.checkbox-check, html|input[type="checkbox"]:not(:disabled) + html|label:hover:before { - border-color: #0095dd; + border-color: var(--in-content-border-focus); } xul|*.checkbox-check[checked] { @@ -480,32 +567,37 @@ html|input[type="checkbox"]:disabled + html|label { } xul|*.checkbox-label-box { - -moz-margin-start: -1px; / * negative margin for the transparent border * / - -moz-padding-start: 0; + margin-inline-start: -1px; / * negative margin for the transparent border * / + padding-inline-start: 0; } xul|richlistitem > xul|*.checkbox-check { margin: 3px 6px; } - +*/ +html|*.toggle-container-with-text { + display: flex; + align-items: center; +} +/* xul|radio { - -moz-margin-start: 0; + margin-inline-start: 0; } xul|*.radio-check { -moz-appearance: none; width: 23px; height: 23px; - border: 1px solid #c1c1c1; + border: 1px solid var(--in-content-box-border-color); border-radius: 50%; - -moz-margin-end: 10px; + margin-inline-end: 10px; background-color: #f1f1f1; background-image: linear-gradient(#fff, rgba(255,255,255,0.80)); box-shadow: 0 1px 1px 0 #fff, inset 0 2px 0 0 rgba(0,0,0,0.03); } xul|radio:not([disabled="true"]):hover > xul|*.radio-check { - border-color: #0095dd; + border-color: var(--in-content-border-focus); } xul|*.radio-check[selected] { @@ -517,52 +609,53 @@ xul|radio[disabled="true"] > xul|*.radio-check { } xul|*.radio-label-box { - -moz-margin-start: -1px; / * negative margin for the transparent border * / - -moz-margin-end: 10px; - -moz-padding-start: 0; + margin-inline-start: -1px; / * negative margin for the transparent border * / + margin-inline-end: 10px; + padding-inline-start: 0; } */ /* Category List */ -xul|*#categories { +*|*#categories { -moz-appearance: none; - background-color: #666699; + background-color: var(--in-content-category-background); padding-top: 39px; margin: 0; border-width: 0; } -xul|*.category { +*|*.category { -moz-appearance: none; - color: #000000; - -moz-border-end-width: 0; - -moz-padding-start: 15px; - -moz-padding-end: 21px; + color: var(--in-content-category-text); + border-inline-end-width: 0; + padding-inline-start: 15px; + padding-inline-end: 21px; min-height: 40px; transition: background-color 150ms; } -xul|*.category:hover { - background-color: #CCD0DD; +*|*.category:hover { + background-color: var(--in-content-category-background-hover); } -xul|*.category[selected] { - background-color: #336699; - color: #FFFFFF; - -moz-padding-start: 11px; /* compensate the 4px border */ - -moz-border-start: solid 4px #33FF33; +*|*.category[selected], +*|*.category.selected { + background-color: var(--in-content-category-background-active); + color: var(--in-content-category-text-selected); + padding-inline-start: 11px; /* compensate the 4px border */ + border-inline-start: solid 4px var(--in-content-border-highlight); } -xul|*#categories[keyboard-navigation="true"]:-moz-focusring > xul|*.category[current] { - border-top: 1px #ffffff dotted; - border-bottom: 1px #ffffff dotted; +*|*#categories[keyboard-navigation="true"]:-moz-focusring > xul|*.category[current] { + border-top: var(--in-content-category-border-focus); + border-bottom: var(--in-content-category-border-focus); } *|*.category-name { line-height: 22px; font-size: 1.25rem; padding-bottom: 2px; - -moz-padding-start: 9px; + padding-inline-start: 9px; margin: 0; -moz-user-select: none; } @@ -575,10 +668,11 @@ xul|*#categories[keyboard-navigation="true"]:-moz-focusring > xul|*.category[cur /* header */ /* *|*.header { - -moz-margin-end: 4px; / add the 4px end-margin of other elements / - border-bottom: 1px solid #c8c8c8; + margin-inline-end: 4px; / add the 4px end-margin of other elements / + border-bottom: 1px solid var(--in-content-header-border-color); margin-bottom: 15px; padding-bottom: 15px; + -moz-box-align: baseline; } *|*.header-name { @@ -603,13 +697,13 @@ xul|*.fileFieldContentBox { } xul|*.fileFieldIcon { - -moz-margin-start: 10px; - -moz-margin-end: 0; + margin-inline-start: 10px; + margin-inline-end: 0; } xul|*.fileFieldLabel { - -moz-margin-start: -26px; - -moz-padding-start: 36px; + margin-inline-start: -26px; + padding-inline-start: 36px; } xul|textbox:-moz-locale-dir(rtl), @@ -630,7 +724,7 @@ xul|filefield + xul|button:-moz-locale-dir(rtl) { xul|textbox + xul|button, xul|filefield + xul|button { - -moz-border-start: none; + border-inline-start: none; } */ /* List boxes */ @@ -638,10 +732,10 @@ xul|filefield + xul|button { xul|richlistbox, xul|listbox { -moz-appearance: none; - -moz-margin-start: 0; - background-color: #fff; - border: 1px solid #c1c1c1; - color: #333; + margin-inline-start: 0; + background-color: var(--in-content-box-background); + border: 1px solid var(--in-content-box-border-color); + color: var(--in-content-text-color); } xul|treechildren::-moz-tree-row, @@ -655,13 +749,13 @@ xul|listbox xul|listitem { xul|treechildren::-moz-tree-row(hover), xul|listbox xul|listitem:hover { - background-color: rgba(0,149,221,0.25); + background-color: var(--in-content-item-hover); } xul|treechildren::-moz-tree-row(selected), xul|listbox xul|listitem[selected="true"] { - background-color: #0095dd; - color: #fff; + background-color: var(--in-content-item-selected); + color: var(--in-content-selected-text); } */ /* Trees */ @@ -669,41 +763,47 @@ xul|listbox xul|listitem[selected="true"] { xul|tree { -moz-appearance: none; font-size: 1em; - border: 1px solid #c1c1c1; + border: 1px solid var(--in-content-box-border-color); + background-color: var(--in-content-box-background); + margin: 0; } xul|tree:-moz-focusring, xul|richlistbox:-moz-focusring { - border: 1px dotted #0095dd; + border: 1px dotted var(--in-content-border-focus); } xul|listheader, xul|treecols { -moz-appearance: none; border: none; - border-bottom: 1px solid #c1c1c1; + border-bottom: 1px solid var(--in-content-box-border-color); padding: 0; } +.autocomplete-tree > xul|treecols { + border-bottom: none !important; +} + xul|treecol:not([hideheader="true"]), xul|treecolpicker { -moz-appearance: none; border: none; - background-color: #ebebeb; + background-color: var(--in-content-box-background-hover); color: #808080; padding: 5px 10px; } xul|treecol:not([hideheader="true"]):not([sortable="false"]):hover, xul|treecolpicker:hover { - background-color: #dadada; - color: #333; + background-color: var(--in-content-box-background-active); + color: var(--in-content-text-color); } xul|treecol:not([hideheader="true"]):not(:first-child), xul|treecolpicker { - -moz-border-start-width: 1px; - -moz-border-start-style: solid; + border-inline-start-width: 1px; + border-inline-start-style: solid; border-image: linear-gradient(transparent 0%, transparent 20%, #c1c1c1 20%, #c1c1c1 80%, transparent 80%, transparent 100%) 1 1; } @@ -724,11 +824,11 @@ xul|treechildren::-moz-tree-row { / Color needs to be set on tree cell in order to be applied / xul|treechildren::-moz-tree-cell-text { - color: #333; + color: var(--in-content-text-color); } xul|treechildren::-moz-tree-cell-text(selected) { - color: #fff; + color: var(--in-content-selected-text); } */ /* === END common.inc.css === */ @@ -750,21 +850,20 @@ xul|menulist:not([editable="true"]) > xul|*.menulist-dropmarker { } xul|checkbox { - -moz-padding-start: 0; + padding-inline-start: 0; } xul|radio { -moz-binding: url("chrome://global/content/bindings/radio.xml#radio"); - -moz-padding-start: 0; + padding-inline-start: 0; } xul|*.radio-icon, xul|*.checkbox-icon { - -moz-margin-end: 0; + margin-inline-end: 0; } -.text-link:-moz-focusring, -.inline-link:-moz-focusring { +.text-link:-moz-focusring { border: 1px dotted -moz-DialogText; } -*/ \ No newline at end of file +*/