@import"https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap";:root{--bg-surface: #FAFAF9;--text-primary: #0A0A0B;--accent: #3654FF;--border: #E4E4E7;--text-muted: #71717A;--bg-white: #FFFFFF;--accent-hover: #2a45d9;--accent-light: rgba(54, 84, 255, .08);--accent-light-hover: rgba(54, 84, 255, .14);--shadow-block: 0 1px 3px rgba(0, 0, 0, .04);--shadow-fab: 0 6px 24px rgba(54, 84, 255, .28);--shadow-overlay: 0 16px 48px rgba(0, 0, 0, .12);--status-green: #22c55e;--status-amber: #f59e0b;--status-red: #ef4444;--font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono: "JetBrains Mono", "SF Mono", "Fira Code", monospace;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 14px;--radius-full: 9999px;--ease-out: cubic-bezier(.16, 1, .3, 1);--transition-fast: .15s var(--ease-out);--transition-normal: .25s var(--ease-out)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{height:100%;height:100dvh}body{font-family:var(--font-sans);font-weight:400;font-size:15px;line-height:1.6;color:var(--text-primary);background-color:var(--bg-surface);min-height:100%;min-height:100dvh;overflow-x:hidden;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}::-webkit-scrollbar{width:5px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border);border-radius:var(--radius-full)}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}@keyframes fadeIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeOut{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(6px)}}@keyframes scaleIn{0%{opacity:0;transform:scale(.85)}to{opacity:1;transform:scale(1)}}@keyframes pulseSync{0%,to{opacity:1}50%{opacity:.4}}@keyframes fabRotate{0%{transform:rotate(0)}to{transform:rotate(45deg)}}@keyframes fabRotateBack{0%{transform:rotate(45deg)}to{transform:rotate(0)}}.mono{font-family:var(--font-mono);font-size:.82rem;letter-spacing:.03em}.hidden{display:none!important}.status-dot{width:7px;height:7px;border-radius:50%;display:inline-block;flex-shrink:0}.status-dot-disconnected{background-color:var(--status-red)}.status-dot-connecting{background-color:var(--status-amber);animation:pulseSync 1.2s infinite}.status-dot-connected{background-color:var(--status-green)}::selection{background:var(--accent-light);color:var(--text-primary)}.top-bar{position:sticky;top:0;z-index:50;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 20px;background:#fafaf9d9;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--border)}.top-bar-left{display:flex;align-items:center;gap:12px}.top-bar-brand{font-family:var(--font-sans);font-weight:700;font-size:.95rem;color:var(--text-primary);letter-spacing:-.02em;user-select:none}.room-code-pill{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;background:var(--accent-light);border:1px solid rgba(54,84,255,.15);border-radius:var(--radius-full);cursor:pointer;transition:background var(--transition-fast)}.room-code-pill:hover{background:var(--accent-light-hover)}.room-code-val{font-family:var(--font-mono);font-weight:600;font-size:.8rem;color:var(--accent);letter-spacing:.1em}.top-bar-right{display:flex;align-items:center;gap:10px}.connection-indicator{display:flex;align-items:center;gap:6px}.connection-text{font-family:var(--font-mono);font-size:.72rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em}.pairing-overlay{position:fixed;inset:0;z-index:100;display:flex;align-items:center;justify-content:center;background:#fafaf9eb;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);padding:24px;padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px)}.pairing-card{display:flex;flex-direction:column;align-items:center;gap:20px;width:100%;max-width:340px;padding:32px 28px;background:var(--bg-white);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-overlay);text-align:center}.pairing-title{font-weight:700;font-size:1.15rem;color:var(--text-primary);letter-spacing:-.01em}.pairing-subtitle{font-size:.85rem;color:var(--text-muted);line-height:1.5}.qr-frame{background:var(--bg-white);padding:12px;border:1px solid var(--border);border-radius:var(--radius-md)}.qr-frame canvas{display:block;width:160px!important;height:160px!important}.room-code-display{font-family:var(--font-mono);font-weight:700;font-size:1.6rem;letter-spacing:.18em;color:var(--text-primary);user-select:all}.pairing-divider{width:100%;display:flex;align-items:center;gap:12px;color:var(--text-muted);font-size:.75rem;text-transform:uppercase;letter-spacing:.06em}.pairing-divider:before,.pairing-divider:after{content:"";flex:1;height:1px;background:var(--border)}.pairing-actions{display:flex;flex-direction:column;gap:8px;width:100%}.canvas-surface{flex:1;position:relative;overflow-y:auto;overflow-x:hidden;min-height:calc(100dvh - 60px);width:100%;padding-bottom:calc(120px + env(safe-area-inset-bottom,0px))}.canvas-empty-state{position:absolute;top:40%;left:50%;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:10px;padding:40px 20px;color:var(--text-muted);pointer-events:none}.empty-icon{font-size:2rem;opacity:.4;margin-bottom:4px}.empty-title{font-weight:600;font-size:1rem;color:var(--text-primary)}.empty-subtitle{font-size:.85rem;max-width:300px;line-height:1.5}.fab-container{position:fixed;bottom:calc(24px + env(safe-area-inset-bottom,0px));right:24px;z-index:80;display:flex;flex-direction:column-reverse;align-items:center;gap:12px}.fab-btn{width:56px;height:56px;border-radius:50%;border:none;background:var(--accent);color:#fff;font-size:1.5rem;display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:var(--shadow-fab);transition:transform var(--transition-normal),box-shadow var(--transition-fast);line-height:1}.fab-btn:hover{box-shadow:0 8px 30px #3654ff61}.fab-btn.open{animation:fabRotate .25s var(--ease-out) forwards}.fab-btn.closed{animation:fabRotateBack .25s var(--ease-out) forwards}.fab-options{display:flex;flex-direction:column-reverse;gap:10px;opacity:0;pointer-events:none;transition:opacity var(--transition-fast)}.fab-options.visible{opacity:1;pointer-events:auto}.fab-option{display:flex;align-items:center;gap:8px;flex-direction:row-reverse;animation:scaleIn .2s var(--ease-out) forwards}.fab-option-btn{width:44px;height:44px;border-radius:50%;border:1px solid var(--border);background:var(--bg-white);color:var(--text-primary);font-size:1.1rem;display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:var(--shadow-block);transition:all var(--transition-fast)}.fab-option-btn:hover{border-color:var(--accent);color:var(--accent);box-shadow:0 2px 8px #3654ff26}.fab-option-label{font-size:.78rem;font-weight:600;color:var(--text-primary);background:var(--bg-white);padding:4px 10px;border-radius:var(--radius-sm);border:1px solid var(--border);box-shadow:var(--shadow-block);white-space:nowrap}.fab-backdrop{position:fixed;inset:0;z-index:79;background:transparent}.join-modal-overlay{position:fixed;inset:0;z-index:200;background:#0a0a0b66;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);display:flex;align-items:center;justify-content:center;padding:24px}.join-modal-card{width:100%;max-width:360px;background:var(--bg-white);border:1px solid var(--border);border-radius:var(--radius-lg);padding:28px 24px;box-shadow:var(--shadow-overlay);display:flex;flex-direction:column;gap:14px}.join-modal-header{display:flex;align-items:center;justify-content:space-between}.join-modal-title{font-weight:700;font-size:1rem;color:var(--text-primary)}.join-modal-close{width:28px;height:28px;border:none;background:transparent;color:var(--text-muted);font-size:1rem;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-sm);transition:background var(--transition-fast)}.join-modal-close:hover{background:#0000000d}#app-container{display:flex;flex-direction:column;min-height:100dvh;min-height:100vh}@media(max-width:480px){.top-bar{padding:8px 14px;padding-top:calc(8px + env(safe-area-inset-top,0px))}.top-bar-brand{font-size:.85rem}.fab-container{bottom:calc(18px + env(safe-area-inset-bottom,0px));right:18px}.fab-btn{width:50px;height:50px;font-size:1.3rem}.pairing-card{padding:24px 20px}.qr-frame canvas{width:140px!important;height:140px!important}.room-code-display{font-size:1.35rem}}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:8px 16px;border-radius:var(--radius-md);font-family:var(--font-sans);font-size:.85rem;font-weight:600;cursor:pointer;border:1px solid transparent;transition:all var(--transition-fast);text-decoration:none;line-height:1.4}.btn-primary{background:var(--accent);color:#fff;border-color:var(--accent)}.btn-primary:hover{background:var(--accent-hover);border-color:var(--accent-hover)}.btn-secondary{background:var(--bg-white);color:var(--text-primary);border:1px solid var(--border)}.btn-secondary:hover{background:var(--bg-surface);border-color:var(--text-muted)}.btn-ghost{background:transparent;color:var(--text-muted);border:none;padding:6px 8px}.btn-ghost:hover{color:var(--text-primary);background:#0000000a}.btn-danger-ghost{background:transparent;color:var(--text-muted);border:none;padding:6px 8px}.btn-danger-ghost:hover{color:var(--status-red);background:#ef44440f}.btn-sm{padding:5px 10px;font-size:.78rem}.input-textarea{width:100%;min-height:72px;background:var(--bg-white);border:1px solid var(--border);border-radius:var(--radius-md);padding:10px 12px;color:var(--text-primary);font-family:var(--font-sans);font-size:.9rem;line-height:1.5;resize:vertical;outline:none;transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}.input-textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-light)}.input-textarea::placeholder{color:var(--text-muted)}.input-text{width:100%;background:var(--bg-white);border:1px solid var(--border);border-radius:var(--radius-md);padding:10px 14px;color:var(--text-primary);font-family:var(--font-mono);font-size:1.1rem;letter-spacing:.12em;text-align:center;text-transform:uppercase;outline:none;transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}.input-text:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-light)}.input-text::placeholder{color:var(--text-muted);text-transform:none;letter-spacing:.04em}.canvas-block{position:absolute;width:320px;max-width:calc(100vw - 32px);background:var(--bg-white);border:1px solid var(--border);border-radius:var(--radius-md);padding:14px 16px;display:flex;flex-direction:column;gap:8px;box-shadow:var(--shadow-block);animation:fadeIn .2s var(--ease-out) forwards;transition:border-color var(--transition-fast),box-shadow var(--transition-fast);z-index:10;box-sizing:border-box}.canvas-block:hover{border-color:#d4d4d8;box-shadow:0 4px 12px #0000000f}.canvas-block.dragging{opacity:.88;z-index:100!important;box-shadow:0 12px 32px #00000024;transition:none!important}.block-header{display:flex;align-items:center;justify-content:space-between;cursor:grab;user-select:none;-webkit-user-select:none;touch-action:none;padding-bottom:4px}.block-header:active{cursor:grabbing}.block-drag-handle{display:flex;align-items:center;gap:6px}.drag-icon{font-size:.75rem;color:var(--text-muted);opacity:.5}.block-tag{display:flex;align-items:center;gap:5px;font-family:var(--font-mono);font-size:.7rem;font-weight:500;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em}.block-time{font-family:var(--font-mono);font-size:.7rem;color:var(--text-muted)}.block-content{font-size:.92rem;line-height:1.6;word-break:break-word;white-space:pre-wrap;color:var(--text-primary)}.block-link{color:var(--accent);text-decoration:none;word-break:break-all;font-size:.88rem}.block-link:hover{text-decoration:underline}.block-actions{display:flex;align-items:center;justify-content:flex-end;gap:4px;margin-top:2px}.text-input-block .input-textarea{min-height:56px;font-size:.9rem}.text-input-block .block-actions{justify-content:space-between}.text-input-hint{font-size:.72rem;color:var(--text-muted)}.voice-recorder-block{display:flex;align-items:center;gap:14px}.rec-btn{width:40px;height:40px;border-radius:50%;background:var(--bg-white);border:2px solid var(--status-red);color:var(--status-red);display:flex;align-items:center;justify-content:center;font-size:1.1rem;cursor:pointer;transition:all var(--transition-fast);flex-shrink:0}.rec-btn:hover{background:#ef44440f}.rec-btn.recording{background:var(--status-red);color:#fff;animation:pulseSync 1s infinite}.timer-display{font-family:var(--font-mono);font-size:1rem;font-weight:600;color:var(--text-primary);min-width:50px}.rec-status-text{font-size:.8rem;color:var(--text-muted);flex:1}.file-info{display:flex;align-items:center;gap:10px}.file-icon{width:36px;height:36px;border-radius:var(--radius-sm);background:var(--accent-light);color:var(--accent);display:flex;align-items:center;justify-content:center;font-size:1rem;flex-shrink:0}.file-meta{display:flex;flex-direction:column;gap:1px;min-width:0}.file-name{font-weight:600;font-size:.88rem;color:var(--text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-size{font-family:var(--font-mono);font-size:.72rem;color:var(--text-muted)}.progress-bar-bg{width:100%;height:4px;background:var(--border);border-radius:var(--radius-full);overflow:hidden}.progress-bar-fill{height:100%;background:var(--accent);border-radius:var(--radius-full);width:0%;transition:width .1s linear}.progress-text{font-family:var(--font-mono);font-size:.7rem;color:var(--text-muted)}.audio-player-wrap{width:100%}.audio-player-wrap audio{width:100%;height:36px;border-radius:var(--radius-sm)}.toast-container{position:fixed;bottom:calc(24px + env(safe-area-inset-bottom,0px));left:50%;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;gap:8px;z-index:1000;pointer-events:none;width:min(90%,400px)}.toast{background:var(--bg-white);border:1px solid var(--border);padding:10px 16px;border-radius:var(--radius-md);font-size:.82rem;color:var(--text-primary);box-shadow:var(--shadow-overlay);display:flex;align-items:center;gap:8px;animation:fadeIn .2s var(--ease-out) forwards;pointer-events:auto;width:100%}.toast-success{border-left:3px solid var(--status-green)}.toast-error{border-left:3px solid var(--status-red)}.toast-info{border-left:3px solid var(--accent)}
