html {
  overflow: hidden;
}

button {
  cursor: pointer;
}

#files {
  display: none;
  position: absolute;
  left: 10vw;
  top: 50%;
  transform: translateY(-50%);
  width: 80vw;
  height: 80vh;
  z-index: 2;
  background: rgba(255, 255, 255, 0.9);
  border-radius: 5px;
  box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.5);
}

#files_frame {
  width: 100%;
  height: 100%;
}

#display {
  width: 100vw;
  height: 100vh;
  position: absolute;
  left: 0;
  top: 0;
  cursor: none;
}

#sidebar {
  display: none;
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  z-index: 2;
  width: 13.5vw;
  height: auto;
}

.menu {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.menu-row {
  display: flex;
  white-space: nowrap;
}

.icons {
  margin-right: 1px;
  margin-left: 1px;
  padding: 4px;
  height: 6vh;
  width: 3.7vw;
  cursor: pointer;
  border-radius: 3px;
  background: rgba(255, 255, 255, 0.3);
  filter: invert(100%) sepia(0%) saturate(0%) hue-rotate(82deg) brightness(105%) contrast(105%);
}

.key-btn {
  margin-right: 1px;
  margin-left: 1px;
  padding: 4px;
  height: 6vh;
  width: 3.7vw;
  cursor: pointer;
  border-radius: 3px;
  background: rgba(255, 255, 255, 0.3);
  border: none;
  color: white;
  font-size: 1.1vh;
  font-weight: 700;
  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  white-space: nowrap;
}

.key-btn:hover {
  background: rgba(255, 255, 255, 0.5);
}

.key-btn-vert {
  margin-right: 1px;
  margin-left: 1px;
  padding: 4px;
  height: 6vh;
  width: 12.5vw;
  cursor: pointer;
  border-radius: 3px;
  background: rgba(255, 255, 255, 0.3);
  border: none;
  color: white;
  font-size: 1.1vh;
  font-weight: 700;
  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  white-space: nowrap;
}

.key-btn-vert:hover {
  background: rgba(255, 255, 255, 0.5);
}

/* ── File transfer progress panel ─────────────────────────────────────────── */
#transfer-panel {
  position: fixed;
  bottom: 20px;
  right: 20px;
  z-index: 5000;
  display: flex;
  flex-direction: column;
  gap: 8px;
  pointer-events: none;
}

.transfer-item {
  background: rgba(15, 15, 15, 0.82);
  color: #fff;
  padding: 10px 14px;
  border-radius: 8px;
  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  font-size: 12px;
  min-width: 230px;
  max-width: 290px;
  pointer-events: auto;
  backdrop-filter: blur(6px);
}

.transfer-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 8px;
  margin-bottom: 7px;
}

.transfer-name {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  flex: 1;
}

.transfer-type {
  flex-shrink: 0;
  font-size: 10px;
  opacity: 0.65;
}

.transfer-bar-wrap {
  background: rgba(255, 255, 255, 0.15);
  border-radius: 3px;
  height: 4px;
  overflow: hidden;
}

.transfer-bar-fill {
  height: 100%;
  width: 0%;
  background: #6366f1;
  border-radius: 3px;
  transition: width 0.15s linear;
}

.transfer-status {
  margin-top: 5px;
  font-size: 10px;
  opacity: 0.65;
  text-align: right;
}

/* indeterminate pulse for downloads (total size unknown) */
.transfer-item.transfer-downloading .transfer-bar-fill {
  width: 100%;
  animation: xfer-pulse 1.4s ease-in-out infinite;
}
@keyframes xfer-pulse {
  0%, 100% { opacity: 0.3; }
  50%       { opacity: 1;   }
}

.transfer-item.transfer-done  .transfer-bar-fill { background: #22c55e; width: 100%; }
.transfer-item.transfer-error .transfer-bar-fill { background: #ef4444; width: 100%; }

.menu-vert {
}

.icons-vert {
  margin-right: 1px;
  margin-left: 1px;
  padding: 4px;
  height: 6vh;
  width: 12.5vw;
  cursor: pointer;
  border-radius: 3px;
  background: rgba(255, 255, 255, 0.3);
  filter: invert(100%) sepia(0%) saturate(0%) hue-rotate(82deg) brightness(105%) contrast(105%);
}

#sideopen {
  position: absolute;
  background: black;
  cursor: pointer;
  top: 50%;
  transform: translateY(-50%);
  border-radius:50%;
  width: 18px;
  height: 18px;
  border: 2px solid white;
}

.close {
  position: absolute;
  background: black;
  top: -10px;
  right: -10px;
  cursor: pointer;
  border-radius:50%;
  width: 20px;
  height: 20px;
  border: 2px solid white;
}

#clipboard {
  border-radius: 5px;
  height: 10vh;
  width: 13vw;
  resize: none;
}

/* On Screen Keyboard */

#Keyboard {
  display: none;
  position: absolute;
  bottom: 0;
  left: 0;
  width: 100vw;
  opacity: 0.8;
  z-index: 2;
  background: rgba(0, 0, 0, 0.1);
}

#keyboardClose {
  position: absolute;
  right: 0;
  top: 0;
  background: #444;
  border: 0.125em solid #666;
  -moz-border-radius: 0.25em;
  -webkit-border-radius: 0.25em;
  -khtml-border-radius: 0.25em;
  border-radius: 0.25em;
  color: white;
  font-size: 30px;
  font-weight: lighter;
  text-align: center;
  white-space: pre;
  text-shadow: 1px 1px 0 rgba(0, 0, 0, 0.25), 1px -1px 0 rgba(0, 0, 0, 0.25), -1px 1px 0 rgba(0, 0, 0, 0.25), -1px -1px 0 rgba(0, 0, 0, 0.25);
}

.osk {
  position: relative;
}

.guac-keyboard {
  display: inline-block;
  width: 100%;
  margin: 0;
  padding: 0;
  cursor: default;
  text-align: left;
  vertical-align: middle;
}

.guac-keyboard,
.guac-keyboard * {
  overflow: hidden;
  white-space: nowrap;
}

.guac-keyboard .guac-keyboard-key-container {
  display: inline-block;
  margin: 0.05em;
  position: relative;
}

.guac-keyboard .guac-keyboard-key {
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  bottom: 0;
  background: #444;
  border: 0.125em solid #666;
  -moz-border-radius: 0.25em;
  -webkit-border-radius: 0.25em;
  -khtml-border-radius: 0.25em;
  border-radius: 0.25em;
  color: white;
  font-size: 40%;
  font-weight: lighter;
  text-align: center;
  white-space: pre;
  text-shadow: 1px 1px 0 rgba(0, 0, 0, 0.25), 1px -1px 0 rgba(0, 0, 0, 0.25), -1px 1px 0 rgba(0, 0, 0, 0.25), -1px -1px 0 rgba(0, 0, 0, 0.25);
}

.guac-keyboard .guac-keyboard-key:hover {
  cursor: pointer;
}

.guac-keyboard .guac-keyboard-key.highlight {
  background: #666;
  border-color: #666;
}


/* Align some keys to the left */

.guac-keyboard .guac-keyboard-key-caps,
.guac-keyboard .guac-keyboard-key-enter,
.guac-keyboard .guac-keyboard-key-tab,
.guac-keyboard .guac-keyboard-key-lalt,
.guac-keyboard .guac-keyboard-key-ralt,
.guac-keyboard .guac-keyboard-key-alt-gr,
.guac-keyboard .guac-keyboard-key-lctrl,
.guac-keyboard .guac-keyboard-key-rctrl,
.guac-keyboard .guac-keyboard-key-lshift,
.guac-keyboard .guac-keyboard-key-rshift {
  text-align: left;
  padding-left: 0.75em;
}


/* Active shift */

.guac-keyboard.guac-keyboard-modifier-shift .guac-keyboard-key-rshift,
.guac-keyboard.guac-keyboard-modifier-shift .guac-keyboard-key-lshift,

/* Active ctrl */

.guac-keyboard.guac-keyboard-modifier-control .guac-keyboard-key-rctrl,
.guac-keyboard.guac-keyboard-modifier-control .guac-keyboard-key-lctrl,

/* Active alt */

.guac-keyboard.guac-keyboard-modifier-alt .guac-keyboard-key-ralt,
.guac-keyboard.guac-keyboard-modifier-alt .guac-keyboard-key-lalt,

/* Active alt-gr */

.guac-keyboard.guac-keyboard-modifier-alt-gr .guac-keyboard-key-alt-gr,

/* Active caps */

.guac-keyboard.guac-keyboard-modifier-caps .guac-keyboard-key-caps,

/* Active super */

.guac-keyboard.guac-keyboard-modifier-super .guac-keyboard-key-super {
  background: #882;
  border-color: #DD4;
}

.guac-keyboard .guac-keyboard-key.guac-keyboard-pressed {
  background: #822;
  border-color: #D44;
}

.guac-keyboard .guac-keyboard-group {
  line-height: 0;
}

.guac-keyboard .guac-keyboard-group.guac-keyboard-alpha,
.guac-keyboard .guac-keyboard-group.guac-keyboard-movement {
  display: inline-block;
  text-align: center;
  vertical-align: top;
}

.guac-keyboard .guac-keyboard-group.guac-keyboard-main {
  /* IE10 */
  display: -ms-flexbox;
  -ms-flex-align: stretch;
  -ms-flex-direction: row;
  /* Ancient Mozilla */
  display: -moz-box;
  -moz-box-align: stretch;
  -moz-box-orient: horizontal;
  /* Ancient WebKit */
  display: -webkit-box;
  -webkit-box-align: stretch;
  -webkit-box-orient: horizontal;
  /* Old WebKit */
  display: -webkit-flex;
  -webkit-align-items: stretch;
  -webkit-flex-direction: row;
  /* W3C */
  display: flex;
  align-items: stretch;
  flex-direction: row;
}

.guac-keyboard .guac-keyboard-group.guac-keyboard-movement {
  -ms-flex: 1 1 auto;
  -moz-box-flex: 1;
  -webkit-box-flex: 1;
  -webkit-flex: 1 1 auto;
  flex: 1 1 auto;
}

.guac-keyboard .guac-keyboard-gap {
  display: inline-block;
}


/* Hide keycaps requiring modifiers which are NOT currently active. */

.guac-keyboard:not(.guac-keyboard-modifier-caps) .guac-keyboard-cap.guac-keyboard-requires-caps,
.guac-keyboard:not(.guac-keyboard-modifier-shift) .guac-keyboard-cap.guac-keyboard-requires-shift,
.guac-keyboard:not(.guac-keyboard-modifier-alt-gr) .guac-keyboard-cap.guac-keyboard-requires-alt-gr,

/* Hide keycaps NOT requiring modifiers which ARE currently active, where that
   modifier is used to determine which cap is displayed for the current key. */

.guac-keyboard.guac-keyboard-modifier-shift .guac-keyboard-key.guac-keyboard-uses-shift .guac-keyboard-cap:not(.guac-keyboard-requires-shift),
.guac-keyboard.guac-keyboard-modifier-caps .guac-keyboard-key.guac-keyboard-uses-caps .guac-keyboard-cap:not(.guac-keyboard-requires-caps),
.guac-keyboard.guac-keyboard-modifier-alt-gr .guac-keyboard-key.guac-keyboard-uses-alt-gr .guac-keyboard-cap:not(.guac-keyboard-requires-alt-gr) {
  display: none;
}


/* Fade out keys which do not use AltGr if AltGr is active */

.guac-keyboard.guac-keyboard-modifier-alt-gr .guac-keyboard-key:not(.guac-keyboard-uses-alt-gr):not(.guac-keyboard-key-alt-gr) {
  opacity: 0.5;
}
