* { box-sizing: border-box; margin: 0; padding: 0; } html { font-size: calc(var(--base-font-size) * var(--ui-scale)); } body { min-height: 100vh; display: flex; flex-direction: column; font-family: var(--font-main); color: var(--text-primary); } .mobile-control-strip, .taskbar { background: linear-gradient( 180deg, color-mix(in srgb, var(--surface-window) 87%, #ffffff 13%) 0%, color-mix(in srgb, var(--surface-window) 92%, #000000 8%) 100% ); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.45), 0 -1px 0 rgba(0, 0, 0, 0.35); } .mobile-control-strip { border-bottom: var(--window-border-width) solid var(--border-outer); } .taskbar { border-top: var(--window-border-width) solid var(--border-outer); } .taskbar { position: fixed; left: 0; right: 0; bottom: 0; z-index: 45; } input, select, textarea, button { font: inherit; } .hidden { display: none !important; } .window { background: var(--surface-window); border: var(--window-border-width) solid var(--border-outer); box-shadow: var(--window-shadow); } .title-bar { background: var(--title-bg); color: var(--title-text); padding: 0.25rem 0.45rem; font-size: 1rem; display: flex; justify-content: space-between; align-items: center; } .title-bar-controls { display: inline-flex; gap: 0.12rem; } .title-bar-controls button { width: 1rem; height: 1rem; font-size: 0.72rem; line-height: 0.6rem; border: var(--control-border-width) solid var(--border-outer); background: var(--surface-control); color: var(--text-primary); } .window-content { padding: 0.75rem; } .btn { border: var(--control-border-width) solid var(--border-outer); background: var(--surface-control); color: var(--text-primary); box-shadow: var(--button-shadow); padding: 0.3rem 0.65rem; cursor: pointer; } .btn:active { box-shadow: var(--button-shadow-active); } .btn-primary { font-weight: 700; } input[type="text"], input[type="number"], input[type="password"], select, textarea { background: var(--surface-input); color: var(--text-primary); border: var(--input-border-width) solid var(--border-input); padding: 0.35rem 0.45rem; width: 100%; } input:focus, select:focus, textarea:focus { outline: none; box-shadow: var(--focus-ring); } input[type="number"] { appearance: textfield; -moz-appearance: textfield; } input[type="number"]::-webkit-outer-spin-button, input[type="number"]::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; } .status-line { background: var(--surface-status); border: var(--input-border-width) solid var(--border-input); padding: 0.32rem 0.5rem; min-height: 1.8rem; } .participant-list { list-style: none; background: var(--surface-input); border: var(--input-border-width) solid var(--border-input); } .participant-item { border-bottom: 1px dashed var(--border-muted); } .participant-item:last-child { border-bottom: none; } .participant-name.is-admin { color: #2f58ff; text-shadow: 0 0 0.2rem rgba(47, 88, 255, 0.32); font-weight: 700; } .summary-table { width: 100%; border-collapse: collapse; background: var(--surface-input); } .summary-table th, .summary-table td { border: 1px solid var(--border-muted); padding: 0.35rem 0.45rem; text-align: left; } .vote-card.is-selected { outline: var(--selected-outline); outline-offset: -0.35rem; } .vote-card.impact { animation: vote-impact 320ms cubic-bezier(0.2, 0.85, 0.2, 1); } @keyframes vote-impact { 0% { transform: translateX(0) scale(1) rotate(0deg); } 15% { transform: translateX(-0.18rem) scale(0.9) rotate(-2.2deg); } 30% { transform: translateX(0.14rem) scale(1.06) rotate(1.7deg); } 45% { transform: translateX(-0.1rem) scale(0.98) rotate(-1.4deg); } 60% { transform: translateX(0.08rem) scale(1.04) rotate(1deg); } 100% { transform: translateX(0) scale(1) rotate(0deg); } } .vote-particle { position: absolute; left: 50%; top: 50%; width: 0.32rem; height: 0.32rem; border-radius: 999px; pointer-events: none; background: hsl(var(--hue, 120) 95% 66%); box-shadow: 0 0 0.35rem hsl(var(--hue, 120) 95% 66%); transform: translate(-50%, -50%) scale(1); animation: vote-particle-burst 420ms ease-out forwards; } @keyframes vote-particle-burst { 0% { opacity: 0.95; transform: translate(-50%, -50%) scale(1); } 100% { opacity: 0; transform: translate(calc(-50% + var(--tx, 0px)), calc(-50% + var(--ty, 0px))) scale(0.2); } } .terminal-window .title-bar { background: #0f0f0f; color: #9dff9d; } .terminal-window .title-bar-controls button { background: #1a1a1a; color: #9dff9d; border-color: #2e2e2e; } .terminal-log-output { background: #020a02; color: #84ff84; border: 1px solid #0f4f0f; font-family: "Courier New", Courier, monospace; font-size: 0.9rem; line-height: 1.35; } .terminal-log-line { margin-bottom: 0.18rem; }