*{margin:0;padding:0;box-sizing:border-box}:root{--radius: 24px;--radius-sm: 16px;--radius-xs: 12px;--radius-full: 100px;--ease-out-quart: cubic-bezier(.25, 1, .5, 1);--ease-out-expo: cubic-bezier(.16, 1, .3, 1);--ease-in-out: cubic-bezier(.65, 0, .35, 1);--duration-fast: .12s;--duration-base: .2s;--duration-slow: .35s;--duration-entrance: .45s}[data-theme=dark]{--bg: oklch(.06 .003 258);--surface: oklch(.155 .005 258);--surface-hover: oklch(.21 .006 258);--surface-elevated: oklch(.195 .006 258);--surface-input: oklch(.17 .004 258);--border: oklch(.28 .006 258);--border-subtle: oklch(.22 .004 258);--text-primary: oklch(.96 .001 95);--text-secondary: oklch(.64 .008 250);--text-tertiary: oklch(.44 .005 250);--text-inverse: oklch(.09 .003 258);--accent: oklch(.65 .14 200);--accent-dim: oklch(.45 .1 200);--danger: oklch(.55 .18 25);--logo-circle: oklch(.96 .001 95);--logo-stroke: oklch(.09 .003 258);--shadow-card: 0 8px 32px oklch(0 0 0 / .3);--shadow-modal: 0 24px 64px oklch(0 0 0 / .5);--shadow-glow: 0 0 12px oklch(.62 .12 200 / .08);--shadow-btn: 0 4px 16px oklch(0 0 0 / .3);--overlay-bg: oklch(0 0 0 / .82);--drag-glow: 0 0 48px oklch(.62 .12 200 / .15);--gradient-border-start: oklch(.25 .01 200 / 0);--gradient-border-end: oklch(.25 .01 200 / 0);--shimmer-color: oklch(.8 .05 200 / .3)}[data-theme=light]{--bg: oklch(.97 .002 90);--surface: oklch(.93 .005 250);--surface-hover: oklch(.88 .007 250);--surface-elevated: oklch(.9 .006 250);--surface-input: oklch(.91 .005 250);--border: oklch(.72 .007 250);--border-subtle: oklch(.78 .005 250);--text-primary: oklch(.095 .003 260);--text-secondary: oklch(.36 .008 250);--text-tertiary: oklch(.52 .006 250);--text-inverse: oklch(.97 .001 95);--accent: oklch(.52 .16 200);--accent-dim: oklch(.46 .1 200);--danger: oklch(.48 .18 25);--logo-circle: oklch(.095 .003 260);--logo-stroke: oklch(.97 .001 95);--shadow-card: 0 4px 20px oklch(.6 .01 250 / .15);--shadow-modal: 0 16px 48px oklch(.5 .01 250 / .2);--shadow-glow: 0 0 12px oklch(.52 .16 200 / .12);--shadow-btn: 0 4px 16px oklch(.6 .01 250 / .2);--overlay-bg: oklch(.6 .01 250 / .6);--drag-glow: 0 0 48px oklch(.52 .16 200 / .2);--gradient-border-start: oklch(.52 .16 200 / 0);--gradient-border-end: oklch(.52 .16 200 / 0);--shimmer-color: oklch(.65 .1 200 / .35)}body{font-family:Space Grotesk,sans-serif;background:var(--bg);color:var(--text-primary);min-height:100vh;overflow-x:hidden;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.app{max-width:600px;margin:0 auto;padding:24px;min-height:100vh;display:flex;flex-direction:column}.header{display:flex;align-items:center;justify-content:space-between;padding:16px 0;margin-bottom:32px;flex-wrap:wrap;gap:12px}.logo{display:flex;align-items:center;gap:12px}.logo-circle{fill:var(--logo-circle);transition:fill var(--duration-base) var(--ease-out-quart)}.logo-line{fill:none;stroke:var(--logo-stroke);transition:stroke var(--duration-base) var(--ease-out-quart)}.logo-dot{fill:var(--logo-stroke);transition:fill var(--duration-base) var(--ease-out-quart)}.logo-text{font-size:1.25rem;font-weight:600;letter-spacing:-.02em;-webkit-user-select:none;user-select:none}.header-right{display:flex;align-items:center;gap:12px}.theme-toggle{background:var(--surface);border:none;border-radius:var(--radius-full);padding:8px;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--text-secondary);transition:background var(--duration-base) var(--ease-out-quart),color var(--duration-base) var(--ease-out-quart),transform var(--duration-fast) var(--ease-out-expo);width:36px;height:36px}.theme-toggle:hover{background:var(--surface-hover);color:var(--text-primary);transform:scale(1.05)}.theme-toggle:active{transform:scale(.92)}.theme-toggle-icon{transition:transform var(--duration-slow) var(--ease-out-quart)}.theme-toggle .sun,.theme-toggle .moon{position:absolute;transition:opacity var(--duration-base) var(--ease-out-quart),transform var(--duration-base) var(--ease-out-quart)}[data-theme=dark] .theme-toggle .sun{opacity:1;transform:rotate(0) scale(1)}[data-theme=dark] .theme-toggle .moon{opacity:0;transform:rotate(-90deg) scale(.5)}[data-theme=light] .theme-toggle .sun{opacity:0;transform:rotate(90deg) scale(.5)}[data-theme=light] .theme-toggle .moon{opacity:1;transform:rotate(0) scale(1)}.theme-toggle svg{width:18px;height:18px;position:relative}.nickname-input{background:var(--surface-input);color:var(--text-primary);border:none;padding:8px 16px;border-radius:var(--radius-full);font-family:Space Grotesk,sans-serif;font-size:.8125rem;font-weight:500;width:140px;transition:background var(--duration-base) var(--ease-out-quart),box-shadow var(--duration-base) var(--ease-out-quart)}.nickname-input::placeholder{color:var(--text-secondary)}.nickname-input:hover{background:var(--surface-hover)}.nickname-input:focus{outline:none;background:var(--surface-hover)}.status{font-size:.75rem;font-weight:600;padding:8px 16px;background:var(--surface);border-radius:var(--radius-full);color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.05em;transition:background var(--duration-slow) var(--ease-out-quart),color var(--duration-slow) var(--ease-out-quart),box-shadow var(--duration-slow) var(--ease-out-quart);position:relative}.status:before{content:"";display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--text-tertiary);margin-right:8px;vertical-align:middle;transition:background var(--duration-slow) var(--ease-out-quart)}.status.connected{color:var(--text-primary);background:var(--surface-elevated)}.status.connected:before{background:var(--accent)}.main{flex:1;display:flex;flex-direction:column;gap:32px}.drop-zone{background:var(--surface);border:none;border-radius:var(--radius);padding:64px 32px;text-align:center;cursor:pointer;transition:background var(--duration-slow) var(--ease-out-quart),transform var(--duration-slow) var(--ease-out-quart),box-shadow var(--duration-slow) var(--ease-out-quart);position:relative;overflow:hidden;font-family:inherit;color:inherit;width:100%}.drop-zone:hover{background:var(--surface-hover);transform:scale(1.015)}.drop-zone:active{transform:scale(.99);transition:transform var(--duration-fast) var(--ease-in-out)}.drop-zone.dragover{background:var(--text-primary);transform:scale(1.02)}.drop-zone.dragover .drop-text,.drop-zone.dragover .drop-subtext{color:var(--text-inverse)}.drop-zone.dragover .drop-icon path{stroke:var(--text-inverse)}.drop-content{display:flex;flex-direction:column;align-items:center;gap:16px;pointer-events:none}.drop-icon{transition:transform var(--duration-slow) var(--ease-out-quart)}.drop-zone:hover .drop-icon{transform:translateY(-4px)}.drop-zone.dragover .drop-icon{transform:translateY(-4px) scale(1.1)}.drop-text{font-size:1.125rem;font-weight:500;color:var(--text-primary);transition:color var(--duration-slow) var(--ease-out-quart)}.drop-subtext{font-size:.875rem;color:var(--text-secondary);transition:color var(--duration-slow) var(--ease-out-quart)}.section-title{font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.1em;color:var(--text-tertiary);margin-bottom:16px;padding-bottom:12px;-webkit-user-select:none;user-select:none}.peers-list{display:flex;flex-direction:column;gap:8px}.peer-item{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;background:var(--surface);border-radius:var(--radius-sm);transition:background var(--duration-base) var(--ease-out-quart),transform var(--duration-base) var(--ease-out-quart);animation:peer-enter var(--duration-entrance) var(--ease-out-quart) both}.peer-item:hover{background:var(--surface-hover);transform:translate(4px)}.peer-info{display:flex;align-items:center;gap:12px}.peer-dot{width:8px;height:8px;background:var(--accent);border-radius:50%;animation:pulse 2s infinite}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(.85)}}@keyframes peer-enter{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.peer-id{font-size:.9375rem;font-weight:500}.peer-nickname{font-size:.75rem;color:var(--text-secondary);margin-left:4px}.peer-badge{font-size:.6875rem;font-weight:500;padding:4px 10px;background:var(--surface-elevated);border-radius:var(--radius-full);color:var(--text-tertiary);letter-spacing:.03em}.password-badge{display:inline-flex;align-items:center;gap:4px;font-size:.6875rem;font-weight:500;padding:4px 10px;background:var(--surface-elevated);border-radius:var(--radius-full);color:var(--text-tertiary);margin-left:8px}.password-badge svg{width:10px;height:10px}.transfers-list{display:flex;flex-direction:column;gap:8px}.transfer-item{padding:16px 20px;background:var(--surface);border-radius:var(--radius-sm);animation:transfer-enter var(--duration-entrance) var(--ease-out-quart) both}@keyframes transfer-enter{0%{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.transfer-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.transfer-name{font-size:.875rem;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:300px}.transfer-status{font-size:.6875rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text-tertiary);transition:color var(--duration-base) var(--ease-out-quart)}.transfer-status.sending{color:var(--accent)}.transfer-status.complete{color:var(--text-primary)}.progress-bar{height:4px;background:var(--surface-elevated);border-radius:var(--radius-full);overflow:hidden;position:relative}.progress-fill{height:100%;background:var(--accent);border-radius:var(--radius-full);transition:width var(--duration-base) var(--ease-out-quart);width:0%;position:relative}.progress-fill:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(90deg,transparent,var(--shimmer-color),transparent);animation:shimmer 1.8s ease-in-out infinite;opacity:0;transition:opacity var(--duration-base)}.progress-fill[style*="width: 1"]:after,.progress-fill[style*="width: 2"]:after,.progress-fill[style*="width: 3"]:after,.progress-fill[style*="width: 4"]:after,.progress-fill[style*="width: 5"]:after,.progress-fill[style*="width: 6"]:after,.progress-fill[style*="width: 7"]:after,.progress-fill[style*="width: 8"]:after,.progress-fill[style*="width: 9"]:after{opacity:1}.progress-fill[style*="width: 100"]:after{opacity:0}@keyframes shimmer{0%{transform:translate(-100%)}to{transform:translate(200%)}}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--overlay-bg);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);display:flex;align-items:center;justify-content:center;padding:24px;opacity:0;visibility:hidden;transition:opacity var(--duration-slow) var(--ease-out-expo),visibility 0s var(--duration-slow);z-index:100}.modal-overlay.active{opacity:1;visibility:visible;transition:opacity var(--duration-slow) var(--ease-out-expo),visibility 0s 0s}.modal{background:var(--surface-elevated);border-radius:var(--radius);padding:32px;max-width:400px;width:100%;transform:scale(.92) translateY(24px);transition:transform var(--duration-slow) var(--ease-out-expo)}.modal-overlay.active .modal{transform:scale(1) translateY(0)}.modal-title{font-size:1.25rem;font-weight:600;margin-bottom:8px;letter-spacing:-.01em}.modal-text{font-size:.875rem;color:var(--text-secondary);margin-bottom:20px;line-height:1.5}.modal-files{display:flex;flex-direction:column;gap:6px;margin-bottom:24px;max-height:200px;overflow-y:auto}.modal-file{font-size:.8125rem;padding:10px 14px;background:var(--surface-input);border-radius:var(--radius-xs);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:background var(--duration-base) var(--ease-out-quart)}.modal-file:hover{background:var(--surface-hover)}.password-input-wrapper{position:relative;margin-bottom:8px}.password-input{width:100%;background:var(--surface-input);color:var(--text-primary);border:none;padding:14px 44px 14px 18px;border-radius:var(--radius-xs);font-family:Space Grotesk,sans-serif;font-size:.875rem;transition:background var(--duration-base) var(--ease-out-quart),box-shadow var(--duration-base) var(--ease-out-quart)}.password-input::placeholder{color:var(--text-tertiary)}.password-input:hover{background:var(--surface-hover)}.password-input:focus{outline:none;background:var(--surface-hover)}.password-toggle{position:absolute;right:12px;top:50%;transform:translateY(-50%);background:none;border:none;cursor:pointer;color:var(--text-tertiary);padding:4px;display:flex;align-items:center;transition:color var(--duration-fast) var(--ease-out-quart),transform var(--duration-fast) var(--ease-out-quart)}.password-toggle:hover{color:var(--text-secondary)}.password-toggle:active{transform:translateY(-50%) scale(.92)}.password-error{font-size:.75rem;font-weight:500;color:var(--danger);margin-bottom:16px;min-height:18px;transition:color var(--duration-base) var(--ease-out-quart)}.modal-actions{display:flex;gap:12px}.btn{flex:1;padding:14px 24px;border:none;border-radius:var(--radius-full);font-family:Space Grotesk,sans-serif;font-size:.875rem;font-weight:600;cursor:pointer;transition:transform var(--duration-fast) var(--ease-out-expo),background var(--duration-base) var(--ease-out-quart),box-shadow var(--duration-base) var(--ease-out-quart);text-transform:uppercase;letter-spacing:.05em;position:relative;-webkit-user-select:none;user-select:none}.btn-accept{background:var(--text-primary);color:var(--text-inverse)}.btn-accept:hover{transform:translateY(-1px)}.btn-accept:active{transform:translateY(0) scale(.98)}.btn-reject{background:var(--surface-input);color:var(--text-primary)}.btn-reject:hover{background:var(--surface-hover);transform:translateY(-1px)}.btn-reject:active{transform:translateY(0) scale(.98);background:var(--surface-elevated)}.empty-state{text-align:center;padding:40px 32px;color:var(--text-tertiary);font-size:.875rem;font-weight:500;letter-spacing:.01em;animation:fade-in var(--duration-slow) var(--ease-out-quart) both}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.file-preview{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px;animation:slide-up-in var(--duration-slow) var(--ease-out-quart) both}@keyframes slide-up-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.file-chip{display:flex;align-items:center;gap:8px;padding:8px 14px;background:var(--surface-elevated);border-radius:var(--radius-full);font-size:.75rem;transition:background var(--duration-base) var(--ease-out-quart),transform var(--duration-fast) var(--ease-out-quart);animation:chip-enter var(--duration-base) var(--ease-out-quart) both}@keyframes chip-enter{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}.file-chip:hover{background:var(--surface-hover)}.file-chip-remove{width:20px;height:20px;display:flex;align-items:center;justify-content:center;cursor:pointer;opacity:.6;border-radius:50%;transition:opacity var(--duration-fast) var(--ease-out-quart),background var(--duration-fast) var(--ease-out-quart),transform var(--duration-fast) var(--ease-out-quart);font-size:.625rem;color:var(--text-primary);background:none;border:none}.file-chip-remove:hover{opacity:1;background:var(--surface-input);transform:scale(1.15)}.file-chip-remove:active{transform:scale(.85)}.send-bar{display:flex;flex-direction:column;gap:12px;margin-top:16px;padding:16px;background:var(--surface);border-radius:var(--radius-sm);animation:slide-up-in var(--duration-slow) var(--ease-out-quart) both}.send-bar-row{display:flex;align-items:center;gap:12px}.send-bar select{flex:1;background:var(--surface-input);color:var(--text-primary);border:none;padding:10px 36px 10px 14px;border-radius:var(--radius-full);font-family:Space Grotesk,sans-serif;font-size:.8125rem;-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23999999' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 14px center;transition:background var(--duration-base) var(--ease-out-quart),box-shadow var(--duration-base) var(--ease-out-quart)}.send-bar select:hover{background-color:var(--surface-hover)}.send-bar select:focus{outline:none}.send-bar-password{flex:1;background:var(--surface-input);color:var(--text-primary);border:none;padding:10px 14px;border-radius:var(--radius-full);font-family:Space Grotesk,sans-serif;font-size:.8125rem;transition:background var(--duration-base) var(--ease-out-quart),box-shadow var(--duration-base) var(--ease-out-quart)}.send-bar-password::placeholder{color:var(--text-tertiary)}.send-bar-password:hover{background:var(--surface-hover)}.send-bar-password:focus{outline:none;background:var(--surface-hover)}.send-btn{padding:10px 20px;background:var(--text-primary);color:var(--text-inverse);border:none;border-radius:var(--radius-full);font-family:Space Grotesk,sans-serif;font-size:.8125rem;font-weight:600;cursor:pointer;transition:transform var(--duration-fast) var(--ease-out-expo),background var(--duration-base) var(--ease-out-quart),box-shadow var(--duration-base) var(--ease-out-quart),opacity var(--duration-base) var(--ease-out-quart);white-space:nowrap;position:relative;-webkit-user-select:none;user-select:none}.send-btn:hover{transform:translateY(-1px)}.send-btn:active{transform:translateY(0) scale(.97)}.send-btn:disabled{opacity:.3;cursor:not-allowed;transform:none;box-shadow:none}::-webkit-scrollbar{width:4px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--surface-elevated);border-radius:var(--radius-full)}::-webkit-scrollbar-thumb:hover{background:var(--border-subtle)}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}@media(max-width:480px){.app{padding:16px}.header{flex-direction:column;align-items:flex-start}.header-right{width:100%}.nickname-input{flex:1}.drop-zone{padding:48px 20px}.drop-text{font-size:1rem}.modal{padding:24px;max-width:100%}.send-bar-row{flex-direction:column}.send-btn{width:100%}.peer-item,.transfer-item{padding:14px 16px}.transfer-name{max-width:180px}}
