645 lines · 91.6 KB · CSS
RawDownload
/* ============================================================================ * FILE:  style.css * ROLE:  STYLESHEET * PURPOSE:   Wormhole file browser — krisyotam.com cell-strip design language * ========================================================================== */ /* -- Variables ------------------------------------------------------------- */:root {  --bg: hsl(0 0% 98%);  --bg-muted: hsl(0 0% 96%);  --bg-muted-30: hsla(0,0%,92%,0.3);  --fg: hsl(0 0% 20%);  --fg-muted: hsl(0 0% 50%);  --border: hsl(0 0% 88%);  --hover: hsla(0,0%,92%,0.3);  --highlight: hsl(0 0% 90%);  --accent: hsl(0 0% 10%);  --icon-invert: 0%;  color-scheme: light;} [data-theme="dark"] {  --bg: hsl(0 0% 7%);  --bg-muted: hsl(0 0% 12%);  --bg-muted-30: hsla(0,0%,15%,0.3);  --fg: hsl(0 0% 90%);  --fg-muted: hsl(0 0% 55%);  --border: hsl(0 0% 18%);  --hover: hsla(0,0%,20%,0.3);  --highlight: hsl(0 0% 20%);  --accent: hsl(0 0% 90%);  --icon-invert: 85%;  color-scheme: dark;} @media (prefers-color-scheme: dark) {  :root:not([data-theme="light"]) {    --bg: hsl(0 0% 7%);    --bg-muted: hsl(0 0% 12%);    --bg-muted-30: hsla(0,0%,15%,0.3);    --fg: hsl(0 0% 90%);    --fg-muted: hsl(0 0% 55%);    --border: hsl(0 0% 18%);    --hover: hsla(0,0%,20%,0.3);    --highlight: hsl(0 0% 20%);    --accent: hsl(0 0% 90%);    --icon-invert: 85%;    color-scheme: dark;  }} /* -- Base ------------------------------------------------------------------ */@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500&family=IBM+Plex+Sans:wght@400;500;600&display=swap'); * { box-sizing: border-box; } ::-webkit-scrollbar { background: var(--bg); width: 6px; }::-webkit-scrollbar-thumb { background: var(--border); } html {  color: var(--fg);  background-color: var(--bg);  font-size: 15px;  font-family: 'IBM Plex Sans', -apple-system, Helvetica, Arial, sans-serif;  line-height: 1.65;  overflow-x: hidden;  scrollbar-color: var(--border) var(--bg);  -webkit-tap-highlight-color: transparent;  -webkit-font-smoothing: antialiased;} body {  margin: 0;  padding: 0;  min-height: 100vh;  display: flex;  align-items: center;  justify-content: center;} a {  color: var(--fg);  text-decoration: none;  background-color: transparent !important;  outline: 0;} a:hover { color: var(--accent); } a.linkSelected { border-bottom: 1px solid var(--fg); } div, i { background-size: cover !important; } /* -- Page Container (cell-strip article) ----------------------------------- */#page {  border: 1px solid var(--border);  width: 92vw;  max-width: 960px;  min-height: 60vh;  display: flex;  flex-direction: column;} /* -- Rows ------------------------------------------------------------------ */.row {  display: flex;  align-items: stretch;  border-bottom: 1px solid var(--border);} .row:last-child { border-bottom: none; } /* -- Cells ----------------------------------------------------------------- */.cell {  padding: 8px 12px;} /* -- Header Row ------------------------------------------------------------ */.row-header {  min-height: 52px;} .cell-label {  width: 56px;  display: flex;  align-items: center;  justify-content: center;  border-right: 1px solid var(--border);  background: var(--bg-muted-30);  flex-shrink: 0;  font-family: 'IBM Plex Mono', monospace;  font-size: 10px;  font-weight: 500;  text-transform: uppercase;  letter-spacing: 0.08em;  color: var(--fg-muted);} .cell-path {  flex: 1;  display: flex;  align-items: center;  min-width: 0;  cursor: pointer;} .cell-path h1 {  margin: 0;  font-family: 'IBM Plex Mono', monospace;  font-size: 13px;  font-weight: 500;  color: var(--fg);  letter-spacing: 0.01em;  white-space: nowrap;  overflow: hidden;  text-overflow: ellipsis;  display: block;  width: 100%;} .cell-path h1 > span:hover {  color: var(--fg-muted);} .cell-actions {  display: flex;  align-items: center;  justify-content: center;  border-left: 1px solid var(--border);  background: var(--bg-muted-30);  flex-shrink: 0;  width: 52px;  padding: 0;} /* -- Column Headers -------------------------------------------------------- */.row-colheader {  background: var(--bg-muted-30);  font-family: 'IBM Plex Mono', monospace;  font-size: 10px;  font-weight: 500;  text-transform: uppercase;  letter-spacing: 0.08em;  color: var(--fg-muted);  min-height: 28px;} .cell-col-icon {  width: 56px;  border-right: 1px solid var(--border);  flex-shrink: 0;} .cell-col-size {  width: 72px;  text-align: right;  padding: 6px 12px;  border-right: 1px solid var(--border);  flex-shrink: 0;} .cell-col-name {  flex: 1;  padding: 6px 12px;} /* -- Listing --------------------------------------------------------------- */#listing {  flex: 1;  min-height: 120px;  border-bottom: 1px solid var(--border);} /* -- Table ----------------------------------------------------------------- */table {  width: 100%;  border-collapse: collapse;} tr {  line-height: 40px;  border-bottom: 1px solid var(--border);  transition: background-color 0.1s;}  tr:hover { background-color: var(--hover); } td.iconRow {  text-align: center;  width: 56px;  padding: 0;  border-right: 1px solid var(--border);} .icon {  height: 18px;  width: 18px;  display: block;  cursor: pointer;  filter: grayscale(1) invert(var(--icon-invert));  opacity: 0.5;  margin: 0 auto;} td.file-size {  text-align: right;  width: 72px;  padding: 0 12px;  border-right: 1px solid var(--border);  font-family: 'IBM Plex Mono', monospace;  font-size: 12px;  color: var(--fg-muted);  white-space: nowrap;} td.file-size code { font-family: inherit; } .arrow {  height: 14px;  width: 14px;  text-align: center;  padding-left: 8px;  filter: invert(var(--icon-invert));  opacity: 0.25;  padding-bottom: 2px;} .arrow-selected {  height: inherit;  opacity: 0.6;} td.display-name {  padding-left: 12px;  text-overflow: ellipsis;  overflow-x: hidden;  white-space: nowrap;  max-width: 100px;  font-size: 15px;} .highlight { background-color: var(--highlight); } /* -- Footer Row ------------------------------------------------------------ */.row-footer {  min-height: 32px;  font-family: 'IBM Plex Mono', monospace;  font-size: 11px;  color: var(--fg-muted);  background: var(--bg-muted-30);} .cell-footer-help {  flex: 1;  display: flex;  align-items: center;  padding: 6px 12px;  opacity: 0.6;} .cell-footer-brand {  display: flex;  align-items: center;  padding: 6px 12px;  border-left: 1px solid var(--border);  letter-spacing: 0.02em;} /* -- Theme Toggle Button --------------------------------------------------- */#themeToggle {  cursor: pointer;  background: none;  border: none;  outline: none;  color: var(--fg-muted);  padding: 4px;  line-height: 1;  display: flex;  align-items: center;  justify-content: center;  transition: color 0.15s;  -webkit-appearance: none;  appearance: none;} #themeToggle:hover {  color: var(--fg);} #themeToggle:focus {  outline: none;} /* -- Action Icons ---------------------------------------------------------- */#icHolder { display: none; } .ic {  width: 24px;  height: 24px;  cursor: pointer;  display: inline-block;  overflow: hidden;  color: transparent;  opacity: 0.45;  filter: grayscale(1) invert(var(--icon-invert));  transition: opacity 0.15s;} .ic:hover { opacity: 1; } /* -- Upload Bar ------------------------------------------------------------ */.uploading-table { padding-bottom: 80px; } .bar {  width: 100%;  left: 0;  right: 0;  position: fixed;  bottom: 0;  max-height: 50%;  overflow-x: hidden;  background-color: var(--bg);  border-top: 1px solid var(--border);} .barName {  width: 100%;  font-size: 12px;  color: var(--fg-muted);  font-family: 'IBM Plex Mono', monospace;} .barPc {  width: 1%;  height: 28px;  text-align: center;  line-height: 28px;  min-width: 30px;  margin-top: 4px;  color: var(--bg);  background-color: var(--accent) !important;  margin-bottom: 4px;  font-family: 'IBM Plex Mono', monospace;  font-size: 11px;} /* -- Drop Zone ------------------------------------------------------------- */#drop-grid {  display: none !important;} /* -- Text Editor ----------------------------------------------------------- */#text-editor {  font-family: 'IBM Plex Mono', monospace;  font-size: 13px;  line-height: 1.6;  background-color: var(--bg);  color: var(--fg);  position: fixed;  inset: 0;  z-index: 100;  overflow-y: auto;  word-wrap: anywhere;  padding: 40px;  outline: none;  width: -moz-available;  width: -webkit-fill-available;  height: 100%;  border: none;  resize: none;  box-sizing: border-box;} /* -- Media Viewers --------------------------------------------------------- */#pics, #pdf, #video {  user-select: none;  -webkit-tap-highlight-color: transparent;  justify-content: center;  align-items: center;  position: fixed;  background-color: hsl(0 0% 0%);  inset: 0;  overflow: hidden;  z-index: 99;} #picsHolder {  user-select: none;  height: 100%;  width: 100%;  cursor: pointer;  object-fit: contain;  image-orientation: from-image;} #pdf embed { width: 100%; height: 100%; } #videoHolder {  height: auto;  max-height: 100%;  width: 100%;  cursor: pointer;  object-fit: contain;} #video-dl {  position: fixed;  right: 8px;  top: 80px;  width: 50px;  height: 50px;  cursor: pointer;  z-index: 101;  filter: invert(var(--icon-invert));} /* -- Close Button ---------------------------------------------------------- */#quitAll {  position: fixed;  right: 16px;  top: 16px;  width: 28px;  height: 28px;  cursor: pointer;  z-index: 101;  filter: invert(var(--icon-invert));  opacity: 0.7;} #quitAll:hover { opacity: 1; } /* -- Toast ----------------------------------------------------------------- */#toast {  top: 7px;  position: absolute;  right: 70px;  font-style: normal;  font-family: 'IBM Plex Mono', monospace;  font-size: 12px;  color: var(--fg-muted);  width: max-content;} /* -- Notifications --------------------------------------------------------- */@keyframes fade {  0%   { opacity: 0; }  20%  { opacity: 1; }  80%  { opacity: 1; }  100% { opacity: 0; }} .runFade { animation: fade 3s 1; } .notif {  opacity: 0;  width: 60px;  height: 60px;  position: fixed;  bottom: 24px;

Lines 1–500 of 645.