.sender-page{
  /* Light theme (default) - v0.dev style */
  --bg: #ffffff;
  --surface: rgb(250 250 250);
  --surface-solid: #f4f4f5;
  --card: #ffffff;
  --stroke: rgba(0, 0, 0, 0.08);
  --stroke-solid: #e4e4e7;
  --accent: #3b82f6;
  --accent-soft: rgba(59, 130, 246, 0.1);
  --success: #22c55e;
  --danger: #ef4444;
  --warning: #f59e0b;
  --muted: #71717a;
  --text: #09090b;
  --radius: 12px;
  
  /* Semantic aliases */
  --background: var(--bg);
  --foreground: var(--text);
  --primary: var(--accent);
  --primary-foreground: #ffffff;
  --secondary: var(--surface-solid);
  --secondary-foreground: var(--text);
  --muted-foreground: var(--muted);
  --accent-foreground: #ffffff;
  --destructive: var(--danger);
  --destructive-foreground: #ffffff;
  --border: var(--stroke-solid);
  --input: var(--stroke-solid);
  --ring: var(--accent);}

/* Dark theme */
.sender-page.dark {
  --bg: #0a0a0b;
  --surface: rgb(24 24 27);
  --surface-solid: #18181b;
  --card: #1f1f23;
  --stroke: rgba(255, 255, 255, 0.08);
  --stroke-solid: #27272a;
  --accent: #3b82f6;
  --accent-soft: rgba(59, 130, 246, 0.15);
  --success: #22c55e;
  --danger: #ef4444;
  --warning: #f59e0b;
  --muted: #71717a;
  --text: #fafafa;
}

.sender-page {
  
  /* Panel/toolbar variables */
  --panel: var(--surface);
  --toolbar-bg: var(--surface);
  --toolbar-border: var(--stroke-solid);
  --toolbar-radius: 14px;
  --toolbar-shadow: none;
  
  /* Panel dimensions */
  --sidebar-width: 320px;
  --layers-width: 240px;
  
  /* Button styling */
  --btn-radius: 8px;
  --panel-radius: 8px;
  
  /* Safe area insets for iPad - with fallbacks */
  --safe-top: env(safe-area-inset-top, 0px);
  --safe-bottom: env(safe-area-inset-bottom, 0px);
  --safe-left: env(safe-area-inset-left, 0px);
  --safe-right: env(safe-area-inset-right, 0px);
  margin:0;
  /* Fixed height for iOS - use 100% as primary, dvh as enhancement */
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  width: 100%;
  height: 100%;
  overflow:hidden;
  background: var(--bg);
  color:var(--text);
  font:14px "Inter", system-ui;
  touch-action:none;
  overscroll-behavior:none;
  -webkit-touch-callout: none;
  -webkit-user-select: none;
  user-select: none;
  -webkit-overflow-scrolling: touch;
  display:grid;
  /* Simplified layout - floating toolbars don't need grid areas */
  grid-template-columns: 0 1fr 0;
  grid-template-rows: 1fr;
  grid-template-areas: "side main layers";
  /* Safe area padding applied to container */
  padding-top: var(--safe-top);
  padding-left: var(--safe-left);
  padding-right: var(--safe-right);
  padding-bottom: var(--safe-bottom);
  box-sizing: border-box;
  }
  /* Dynamic grid when panels are open */
  .sender-page.sidebar-open {
    grid-template-columns: var(--sidebar-width) 1fr 0;
  }
  .sender-page.layers-open {
    grid-template-columns: 0 1fr var(--layers-width);
  }
  .sender-page.sidebar-open.layers-open {
    grid-template-columns: var(--sidebar-width) 1fr var(--layers-width);
  }

  /* ============================================
     FLOATING TOOLBARS
     ============================================ */
  .sender-page .floating-toolbar {
    position: fixed;
    left: 50%;
    transform: translateX(-50%);
    display: flex;
    align-items: center;
    gap: 4px;
    padding: 6px 10px;
    background: var(--toolbar-bg);
    border: 1px solid var(--toolbar-border);
    border-radius: var(--toolbar-radius);
    box-shadow: var(--toolbar-shadow);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    z-index: 100;
  }
  .sender-page .top-toolbar {
    top: calc(var(--safe-top) + 12px);
  }
  .sender-page .bottom-toolbar {
    bottom: calc(var(--safe-bottom) + 12px);
  }
  .sender-page .toolbar-group {
    display: flex;
    align-items: center;
    gap: 2px;
  }
  /* Pill-shaped tool group (v0 style) */
  .sender-page .toolbar-group.pill {
    background: rgba(255, 255, 255, 0.05);
    border-radius: 10px;
    padding: 2px;
    gap: 0;
  }
  .sender-page .toolbar-group.pill button {
    border-radius: 8px;
  }
  .sender-page .toolbar-group.pill button.active {
    background: var(--accent);
    color: var(--primary-foreground);
  }
  .sender-page .toolbar-divider {
    width: 1px;
    height: 24px;
    background: var(--stroke);
    margin: 0 6px;
  }
  .sender-page .floating-toolbar button {
    width: 36px;
    height: 36px;
    border-radius: 8px;
    border: 1px solid transparent;
    background: transparent;
    color: var(--muted-foreground);
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition: all 0.15s ease;
  }
  .sender-page .floating-toolbar button:hover {
    background: rgba(255, 255, 255, 0.08);
  }
  .sender-page .floating-toolbar button:focus {
    outline: none;
  }
  .sender-page .floating-toolbar button:active {
    transform: scale(0.95);
  }
  .sender-page .floating-toolbar button.active {
    border-color: transparent;
    color: var(--accent);
    background: var(--accent-soft);
  }
  .sender-page .floating-toolbar button.danger {
    color: var(--muted);
  }
  .sender-page .floating-toolbar button.danger:hover {
    color: var(--danger);
    background: rgba(239, 68, 68, 0.15);
  }
  .sender-page .floating-toolbar button:disabled {
    opacity: 0.4;
    cursor: not-allowed;
    pointer-events: none;
  }
  /* Recording state - red pulsing */
  .sender-page .floating-toolbar button.recording {
    color: var(--danger);
    background: rgba(239, 68, 68, 0.15);
    animation: pulse-recording 1s ease-in-out infinite;
  }
  @keyframes pulse-recording {
    0%, 100% { opacity: 1; }
    50% { opacity: 0.6; }
  }
  /* Playing state - accent color */
  .sender-page .floating-toolbar button.playing {
    color: var(--accent);
    background: var(--accent-soft);
  }
  /* Logo in toolbar */
  .sender-page .logo-group {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 0 4px;
  }
  .sender-page .logo-group .logo-dot {
    width: 14px;
    height: 14px;
  }
  .sender-page .logo-group .logo-text {
    font-size: 11px;
  }
  /* Color button */
  .sender-page .color-btn-wrapper {
    position: relative;
  }
  .sender-page .color-btn {
    width: 32px !important;
    height: 32px !important;
    border-radius: 6px !important;
    border: 2px solid var(--stroke) !important;
  }
  .sender-page .color-btn .mi {
    font-size: 16px;
    color: rgba(0, 0, 0, 0.5);
    text-shadow: 0 0 2px rgba(255, 255, 255, 0.5);
  }
  /* Size slider group */
  .sender-page .size-group {
    gap: 6px !important;
  }
  .sender-page .size-icon {
    font-size: 16px;
    color: var(--muted);
  }
  .sender-page .size-slider {
    width: 80px;
    height: 4px;
    accent-color: var(--accent);
    cursor: pointer;
  }
  .sender-page .size-label {
    width: 40px;
    height: 28px;
    padding: 0 4px;
    border: 1px solid var(--stroke-solid);
    border-radius: 6px;
    background: var(--card);
    color: var(--text);
    font-size: 12px;
    text-align: center;
    -moz-appearance: textfield;
  }
  .sender-page .size-label::-webkit-outer-spin-button,
  .sender-page .size-label::-webkit-inner-spin-button {
    -webkit-appearance: none;
    margin: 0;
  }
  .sender-page .size-label:focus {
    outline: none;
    border-color: var(--accent);
  }
  .sender-page .size-unit {
    font-size: 11px;
    color: var(--muted);
    margin-left: -2px;
  }
  /* Brushes group */
  .sender-page .brushes-group button {
    width: 32px !important;
    height: 32px !important;
  }
  /* Geometry dropdown */
  .sender-page .geom-dropdown {
    height: 32px;
    padding: 0 12px;
    border: 1px solid var(--stroke-solid);
    border-radius: 8px;
    background: var(--card);
    color: var(--text);
    font-size: 12px;
    cursor: pointer;
  }
  .sender-page .geom-dropdown:hover {
    border-color: #374151;
  }
  /* Zoom group */
  .sender-page .zoom-group {
    gap: 4px !important;
  }
  .sender-page .zoom-group button {
    width: 28px !important;
    height: 28px !important;
  }
  .sender-page .zoom-input {
    width: 52px;
    height: 28px;
    padding: 0 4px;
    border: 1px solid var(--border);
    border-radius: 6px;
    background: var(--card);
    color: var(--foreground);
    font-size: 11px;
    text-align: center;
    appearance: textfield;
    -moz-appearance: textfield;
  }
  .sender-page .zoom-input::-webkit-outer-spin-button,
  .sender-page .zoom-input::-webkit-inner-spin-button {
    appearance: none;
    -webkit-appearance: none;
    margin: 0;
  }
  .sender-page .zoom-input:hover {
    border-color: var(--ring);
  }
  .sender-page .zoom-input:focus {
    outline: none;
    border-color: var(--primary);
    box-shadow: 0 0 0 2px var(--ring);
  }
  .sender-page .zoom-percent {
    font-size: 11px;
    color: var(--muted-foreground);
    margin-left: 0;
  }

  /* Stats indicator - bottom right corner */
  .sender-page .stats-indicator {
    position: fixed;
    bottom: calc(var(--safe-bottom) + 12px);
    right: 16px;
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 6px 12px;
    background: var(--toolbar-bg);
    border: 1px solid var(--toolbar-border);
    border-radius: 8px;
    font-size: 11px;
    color: var(--muted);
    z-index: 90;
  }
  .sender-page .stats-indicator .mi {
    font-size: 14px;
    color: var(--accent);
  }
  .sender-page .stats-indicator .status-dot {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: #4ade80;
  }
  .sender-page .stats-indicator .status-dot.ws-ok { background: #4ade80; }
  .sender-page .stats-indicator .status-dot.ws-bad { background: #f87171; }
  .sender-page .stats-indicator .status-dot.ws-connecting { background: #facc15; }
  /* Logo styles */
  .sender-page .logo-dot{
    width:18px;
    height:18px;
    border-radius:999px;
    background:linear-gradient(135deg, #38bdf8, #6366f1);
    box-shadow:0 0 0 1px #020617, 0 0 20px rgba(56,189,248,0.65);
    flex-shrink:0;
  }
  .sender-page .logo-text{
    font-weight:600;
    letter-spacing:0.04em;
    text-transform:uppercase;
    font-size:11px;
    color:var(--muted);
  }
  .sender-page #sidebar{
    position:fixed;
    top:calc(var(--safe-top) + 60px);
    left:0;
    bottom:calc(var(--safe-bottom) + 60px);
    width:var(--sidebar-width);
    display:flex;
    flex-direction:column;
    border-right:1px solid var(--stroke);
    background:#020617;
    z-index:80;
    overflow-y:auto;
    /* Slide animation */
    transform:translateX(-100%);
    transition:transform 0.25s ease;
  }
  .sender-page.sidebar-open #sidebar{
    transform:translateX(0);
  }
  .sender-page #ui{
    flex:1;
    display:flex;
    flex-direction:column;
    background:transparent;
  overflow:hidden;
  }
  .sender-page .sidebar-header{
    padding:8px 12px;
    border-bottom:1px solid #1f2937;
    background:var(--surface);
    display:flex;
    align-items:center;
    justify-content:space-between;
    position:sticky;
    top:0;
    z-index:1;
  }
  .sender-page .sidebar-header-title{
    font-size:13px;
    font-weight:600;
    color:var(--text);
  }
  .sender-page .sidebar-header button,
  .sender-page .sidebar-close{
    width:28px;
    height:28px;
    border:none;
    background:transparent;
    color:var(--muted);
    cursor:pointer;
    display:flex;
    align-items:center;
    justify-content:center;
    border-radius:6px;
    transition:background 0.15s, color 0.15s;
  }
  .sender-page .sidebar-header button:hover,
  .sender-page .sidebar-close:hover{
    background:rgba(255,255,255,0.1);
    color:var(--text);
  }
  .sender-page .sidebar-scroll{
    flex:1;
    padding:8px 12px 12px;
    overflow:auto;
  }
  .sender-page #ui h4{margin:4px 0 2px;color:#d1d5db;font-weight:600;letter-spacing:0.2px}
  .sender-page #ui .row{display:flex;gap:5px;flex-wrap:wrap}
  .sender-page #ui .pill{display:flex;align-items:center;gap:8px;padding:6px 8px;border:1px solid var(--stroke);border-radius:10px;background:var(--card)}
  .sender-page .color-row{display:flex;gap:8px;align-items:center}
  .sender-page .color-input{width:40px;height:28px;padding:0;border:none;border-radius:6px;cursor:pointer}
  .sender-page .color-text{width:80px;height:28px;padding:0 8px;border:1px solid var(--stroke);border-radius:6px;background:var(--surface-solid);color:var(--text);font-size:12px;font-family:monospace}
  .sender-page #ui button{display:flex;align-items:center;justify-content:center;min-width:36px;height:40px;border:1px solid var(--stroke);border-radius:10px;background:var(--surface-solid);color: var(--muted);cursor:pointer;transition:background 0.2s,border-color 0.2s}
  .sender-page #ui button:hover{background:#1b2130;border-color:#2c3447}
  .sender-page #ui label{display:flex;flex-direction:column;gap:4px;color:var(--muted);font-size:12px}
  .sender-page #ui select,.sender-page #ui input[type="range"],.sender-page #ui input[type="color"],.sender-page #ui input[type="number"]{height:28px;border-radius:8px;border:1px solid var(--stroke);background:var(--surface-solid);color:var(--text);padding:0 6px}
  .sender-page #ui input[type="range"]{padding:0;accent-color:var(--accent);height:6px}
  .sender-page #ui input[type="color"]{padding:0;border:none;cursor:pointer}
  .sender-page .chip-btn{
    display:inline-flex;
    align-items:center;
    gap:4px;
    padding:4px 6px;
    border-radius:8px;
    border:1px solid #1f2937;
    background:var(--surface);
    color:var(--text);
    font-size:11px;
    cursor:pointer;
    transition:background 0.15s,color 0.15s,border-color 0.15s;
  }
  .sender-page .chip-btn span.label{font-size:11px;}
  .sender-page .chip-btn:hover{
    background:rgba(8,47,73,0.7);
    border-color:#0891b2;
    color:#67e8f9;
  }
  .sender-page .panel-section{
    margin-top:4px;
    margin-bottom:10px;
  }
  .sender-page .panel-header{
    width:100%;
    display:flex;
    align-items:center;
    gap:8px;
    padding:6px 8px;
    border-radius:8px;
    border:none;
    background:transparent;
    color:var(--text);
    font-size:12px;
    cursor:pointer;
    transition:background 0.15s;
  }
  .sender-page .panel-header .panel-icon{
    font-size:16px;
    color:var(--accent);
  }
  .sender-page .panel-header span.label{
    flex:1;
    font-weight:500;
    color:var(--text);
    text-align:left;
  }
  .sender-page .panel-header:hover{background:#020617cc;}
  .sender-page .panel-header .chevron{font-size:16px;color:var(--muted);transition:transform 0.15s;}
  .sender-page .panel-header.collapsed .chevron{transform:rotate(-90deg);}
  .sender-page .panel-body{
    margin-top:4px;
    padding-left:8px;
    border-left:1px solid #1f2937;
    display:flex;
    flex-direction:column;
    gap:8px;
  }
  .sender-page .scenes-row button{
    min-width:auto;
    height:28px;
    padding:2px 8px;
    font-size:11px;
    background:#020617;
    border-radius:8px;
  }
  .sender-page #toggleUI{
    width:32px;
    height:32px;
    border:1px solid var(--stroke);
    border-radius:999px;
    background:#0b0f1a;
    color:var(--text);
    display:flex;
    align-items:center;
    justify-content:center;
    box-shadow:var(--shadow);
    cursor:pointer;
  }
  .sender-page #main{
    grid-area:main;
    position:relative;
    overflow:hidden;
    /* Full viewport when no panels */
    width:100%;
    height:100%;
  }
  .sender-page #app{
    position:relative;
    width:100%;
    height:100%;
  }
  .sender-page #viewportOverlay{
    position:absolute;
    top:12px;
    right:16px;
    display:flex;
    align-items:center;
    gap:6px;
    z-index:4;
  }
  .sender-page #viewportOverlay button{
    height:30px;
    min-width:30px;
    border-radius:8px;
    border:1px solid var(--stroke);
    background:rgba(2, 6, 23, 0.88);
    color:var(--text);
    display:flex;
    align-items:center;
    justify-content:center;
    padding:0 8px;
    font-size:11px;
    cursor:pointer;
    transition: all 0.15s ease;
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
  }
  .sender-page #viewportOverlay button:hover{
    background:var(--accent);
    color:var(--accent-foreground);
    border-color:var(--ring);
  }
  .sender-page #viewportOverlay button:active{
    transform: scale(0.95);
  }
  .sender-page #viewportOverlay button .mi{
    font-size:16px;
  }
  /* Mode badge */
  .sender-page .mode-badge{
    position:absolute;
    top:12px;
    left:16px;
    display:flex;
    align-items:center;
    gap:6px;
    padding:6px 12px;
    background:#020617e0;
    border:1px solid var(--stroke);
    border-radius:8px;
    font-size:12px;
    color:var(--text);
    z-index:4;
  }
  .sender-page .mode-badge .mi{
    font-size:16px;
    color:var(--accent);
  }
  /* Reference overlay */
  .sender-page .reference-overlay{
    position:absolute;
    inset:0;
    display:flex;
    align-items:center;
    justify-content:center;
    pointer-events:none;
    z-index:2;
    overflow:hidden;
  }
  .sender-page .reference-overlay img{
    display:block;
    max-width:min(92%, 1200px);
    max-height:92%;
    width:auto;
    height:auto;
    object-fit:contain;
    filter:drop-shadow(0 8px 24px rgba(0,0,0,0.18));
  }
  /* Mini map */
  .sender-page .mini-map{
    position:absolute;
    bottom:60px;
    right:16px;
    width:200px;
    background:#020617;
    border:1px solid var(--stroke);
    border-radius:8px;
    overflow:hidden;
    z-index:4;
    box-shadow:0 4px 20px rgba(0,0,0,0.4);
  }
  .sender-page .mini-map-header{
    display:flex;
    align-items:center;
    gap:6px;
    padding:6px 10px;
    background:var(--surface-solid);
    border-bottom:1px solid var(--stroke);
    font-size:11px;
    color:var(--muted);
    cursor:move;
    user-select:none;
    -webkit-user-select:none;
  }
  .sender-page .mini-map-header:active{
    cursor:grabbing;
  }
  .sender-page .mini-map-header .drag-handle{
    font-size:14px;
    color:var(--muted);
    opacity:0.5;
    transition:opacity 0.15s;
  }
  .sender-page .mini-map-header:hover .drag-handle{
    opacity:1;
  }
  .sender-page .mini-map-header span:not(.mi):not(.drag-handle){
    flex:1;
  }
  .sender-page .mini-map-header button{
    width:20px;
    height:20px;
    border:none;
    background:transparent;
    color:var(--muted);
    cursor:pointer;
    display:flex;
    align-items:center;
    justify-content:center;
  }
  .sender-page .mini-map-content{
    height:120px;
    position:relative;
    background:#0b0b0b;
  }
  .sender-page .mini-map-content canvas{
    display:block;
    width:100%;
    height:100%;
  }
  .sender-page .mini-map-placeholder{
    display:flex;
    flex-direction:column;
    align-items:center;
    gap:4px;
    color:#4b5563;
    font-size:11px;
  }
  .sender-page .mini-map-placeholder .mi{
    font-size:24px;
  }
  /* Drawing tip */
  .sender-page .drawing-tip{
    position:absolute;
    bottom:60px;
    left:50%;
    transform:translateX(-50%);
    display:flex;
    align-items:center;
    gap:8px;
    padding:8px 12px;
    background:#020617e0;
    border:1px solid var(--stroke);
    border-radius:8px;
    font-size:12px;
    color:var(--muted);
    z-index:4;
  }
  .sender-page .drawing-tip .mi{
    color:#facc15;
  }
  .sender-page .drawing-tip .tip-separator{
    color:var(--muted);
    opacity:0.5;
  }
  .sender-page .drawing-tip button{
    width:20px;
    height:20px;
    border:none;
    background:transparent;
    color:var(--muted);
    cursor:pointer;
    display:flex;
    align-items:center;
    justify-content:center;
    margin-left:4px;
  }
  .sender-page .drawing-tip .tip-layer{
    display:flex;
    align-items:center;
    gap:4px;
    color:#00e0ff;
    font-weight:500;
  }
  .sender-page .drawing-tip .tip-layer .mi{
    font-size:14px;
    color:#00e0ff;
  }
  .sender-page .drawing-tip .tip-layer.hidden,
  .sender-page .drawing-tip .tip-layer-sep.hidden{
    display:none;
  }
  .sender-page .drawing-tip.hidden{
    display:none;
  }
  .sender-page .mini-map.hidden{
    display:none;
  }
  .sender-page .hidden{
    display:none !important;
  }
  .sender-page canvas{
    display:block;
    width:100%;
    height:100%;
    /* Allow pinch-zoom and pan for camera controls on touch devices */
    touch-action: pan-x pan-y pinch-zoom;
    -webkit-touch-callout:none;
    -webkit-user-select:none;
    user-select:none;
  }
  /* Lucide icons (SVG) */
  .sender-page svg.lucide,
  .sender-page .lucide {
    width: 18px;
    height: 18px;
    stroke-width: 2;
    flex-shrink: 0;
  }
  /* Legacy Material Icons support (for gradual migration) */
  .sender-page .mi{font-family:"Material Icons Round";font-size:18px;line-height:1;}


/* Mobile styles */
@media (max-width: 768px) {
  .sender-page {
    grid-template-columns: 1fr;
    grid-template-rows: 1fr;
    grid-template-areas: "main";
  }
  
  /* Floating panels - slide from edges on mobile */
  .sender-page .settings-panel {
    position: fixed;
    top: 60px;
    left: 0;
    bottom: 60px;
    width: 280px;
    max-width: 85vw;
    border-radius: 0 var(--panel-radius) var(--panel-radius) 0;
    transform: translateX(-100%);
    transition: transform 0.25s ease;
  }
  .sender-page .settings-panel:not(.hidden) {
    transform: translateX(0);
  }
  
  .sender-page .layers-panel {
    position: fixed;
    top: 60px;
    right: 0;
    bottom: 60px;
    width: 240px;
    max-width: 85vw;
    border-radius: var(--panel-radius) 0 0 var(--panel-radius);
    transform: translateX(100%);
    transition: transform 0.25s ease;
  }
  .sender-page .layers-panel:not(.hidden) {
    transform: translateX(0);
  }
  
  /* Backdrop overlay when panels are open */
  .sender-page .panel-backdrop {
    display: none;
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: rgba(0, 0, 0, 0.5);
    z-index: 70;
  }
  .sender-page .settings-panel:not(.hidden) ~ .panel-backdrop,
  .sender-page .layers-panel:not(.hidden) ~ .panel-backdrop {
    display: block;
  }
  
  /* Floating toolbar adjustments for mobile */
  .sender-page .floating-toolbar {
    padding: 4px 6px;
    max-width: calc(100vw - 16px);
    overflow-x: auto;
    scrollbar-width: none;
    -ms-overflow-style: none;
  }
  .sender-page .floating-toolbar::-webkit-scrollbar {
    display: none;
  }
  .sender-page .floating-toolbar button {
    width: 40px;
    height: 40px;
    min-width: 40px;
    flex-shrink: 0;
  }
  .sender-page .toolbar-divider {
    margin: 0 4px;
    flex-shrink: 0;
  }
  
  /* Hide groups on mobile to save space */
  .sender-page .top-toolbar .transform-group {
    display: none;
  }
  .sender-page .bottom-toolbar .size-group {
    display: none !important;
  }
  .sender-page .bottom-toolbar .toolbar-group:has(.geom-dropdown) {
    display: none !important;
  }
  .sender-page .bottom-toolbar .zoom-group {
    display: none !important;
  }
  .sender-page .bottom-toolbar .brushes-group {
    display: none !important;
  }
  .sender-page .bottom-toolbar .toolbar-group:has(#rec) {
    display: none !important;
  }
  .sender-page .bottom-toolbar .toolbar-group:has(#exportScene) {
    display: none !important;
  }
  /* Hide dividers next to hidden groups */
  .sender-page .bottom-toolbar .toolbar-divider {
    display: none;
  }
  /* Show only essential: color + theme */
  .sender-page .bottom-toolbar .toolbar-group:has(.color-btn),
  .sender-page .bottom-toolbar .toolbar-group:has(#themeToggle) {
    display: flex !important;
  }
  
  /* Stats indicator on mobile */
  .sender-page .stats-indicator {
    bottom: calc(var(--safe-bottom) + 60px);
    right: 8px;
    padding: 4px 8px;
    font-size: 10px;
  }
  
  /* Viewport overlay on mobile */
  .sender-page #viewportOverlay {
    top: 70px;
    right: 8px;
  }
  .sender-page #viewportOverlay .view-cube {
    display: none !important;
  }
  
  /* Mode badge on mobile */
  .sender-page .mode-badge {
    top: 70px;
    left: 8px;
    padding: 4px 8px;
    font-size: 11px;
  }
  
  /* Drawing tip on mobile */
  .sender-page .drawing-tip {
    bottom: 70px;
    padding: 6px 10px;
    font-size: 11px;
  }
  
  /* Mini map on mobile */
  .sender-page .mini-map {
    width: 150px;
    bottom: 70px;
    right: 8px;
  }
  .sender-page .mini-map-content {
    height: 90px;
  }
  
  /* Shortcuts panel on mobile - centered modal */
  .sender-page .shortcuts-panel {
    width: calc(100vw - 32px);
    max-width: 320px;
    max-height: 70vh;
  }
}

@media (max-width: 480px) {
  /* Hide more groups on very small screens */
  .sender-page .top-toolbar .logo-group {
    display: none;
  }
  /* Keep mode-group visible - essential buttons */
  .sender-page .bottom-toolbar .brushes-group {
    display: none;
  }
  .sender-page .bottom-toolbar .toolbar-group:has(#rec) {
    display: none;
  }
  .sender-page .bottom-toolbar .toolbar-group:has(#exportScene) {
    display: none;
  }
  
  /* Compact floating toolbars */
  .sender-page .floating-toolbar {
    padding: 3px 4px;
    gap: 2px;
  }
  .sender-page .floating-toolbar button {
    width: 36px;
    height: 36px;
    min-width: 36px;
  }
  .sender-page .toolbar-divider {
    margin: 0 2px;
    height: 20px;
  }
  
  /* Hide stats on very small screens */
  .sender-page .stats-indicator {
    display: none;
  }
  
  /* Smaller mode badge */
  .sender-page .mode-badge {
    padding: 3px 6px;
    font-size: 10px;
  }
  .sender-page .mode-badge .mi {
    font-size: 14px;
  }
}


/* Layers panel (right) - fixed overlay */
.sender-page #layers-panel {
  position: fixed;
  top: calc(var(--safe-top) + 60px);
  right: 0;
  bottom: calc(var(--safe-bottom) + 60px);
  width: var(--layers-width);
  display: flex;
  flex-direction: column;
  background: #020617;
  border-left: 1px solid var(--stroke);
  z-index: 80;
  overflow: hidden;
  /* Slide animation */
  transform: translateX(100%);
  transition: transform 0.25s ease;
}
.sender-page.layers-open #layers-panel {
  transform: translateX(0);
}
.sender-page .layers-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 8px 12px;
  border-bottom: 1px solid #1f2937;
  font-size: 12px;
  font-weight: 600;
  color: var(--text);
}
.sender-page .layer-count {
  background: var(--accent);
  color: #0b0b0b;
  font-size: 10px;
  font-weight: 700;
  padding: 2px 6px;
  border-radius: 10px;
  min-width: 18px;
  text-align: center;
  box-shadow: 0 0 8px rgba(0,224,255,0.3);
}
.sender-page .layers-header button {
  width: 24px;
  height: 24px;
  border: none;
  background: transparent;
  color: var(--muted);
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
}
.sender-page #layers-list {
  flex: 1;
  overflow-y: auto;
  padding: 8px;
}
.sender-page .layer-item {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 6px 8px;
  border-radius: 6px;
  background: var(--surface-solid);
  border: 1px solid transparent;
  margin-bottom: 4px;
  cursor: pointer;
  font-size: 11px;
  color: var(--text);
  transition: background 0.15s, border-color 0.15s;
}
.sender-page .layer-item:hover {
  border-color: #374151;
}
.sender-page .layer-item.selected {
  border-color: var(--accent);
  background: rgba(0, 224, 255, 0.1);
}
.sender-page .layer-item.primary-selected {
  border-color: var(--accent);
  background: rgba(0, 224, 255, 0.25);
}
.sender-page .layer-item.primary-selected .layer-name {
  color: var(--accent);
  font-weight: 500;
}
.sender-page .layer-item.hidden-layer {
  opacity: 0.5;
}
.sender-page .layer-item .layer-visibility {
  width: 20px;
  height: 20px;
  border: none;
  background: transparent;
  color: var(--muted);
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 14px;
}
.sender-page .layer-item .layer-visibility.hidden {
  color: #4b5563;
}
.sender-page .layer-item .layer-name {
  flex: 1;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.sender-page .layer-item .layer-delete {
  width: 20px;
  height: 20px;
  border: none;
  background: transparent;
  color: #6b7280;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 14px;
  opacity: 0;
  transition: opacity 0.15s;
}
.sender-page .layer-item:hover .layer-delete {
  opacity: 1;
}
.sender-page .layer-item .layer-delete:hover {
  color: #f87171;
}


/* Layer color indicator */
.sender-page .layer-item .layer-color {
  width: 12px;
  height: 12px;
  border-radius: 3px;
  flex-shrink: 0;
}


/* Layer lock button */
.sender-page .layer-item .layer-lock {
  width: 20px;
  height: 20px;
  border: none;
  background: transparent;
  color: #6b7280;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 14px;
}
.sender-page .layer-item .layer-lock.locked {
  color: #f59e0b;
}
.sender-page .layer-item.locked {
  opacity: 0.7;
}
.sender-page .layer-item.locked .layer-name {
  font-style: italic;
}

/* Layer move buttons */
.sender-page .layer-item .layer-up,
.sender-page .layer-item .layer-down {
  width: 18px;
  height: 18px;
  border: none;
  background: transparent;
  color: #6b7280;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 12px;
  opacity: 0;
  transition: opacity 0.15s;
}
.sender-page .layer-item:hover .layer-up,
.sender-page .layer-item:hover .layer-down {
  opacity: 1;
}
.sender-page .layer-item .layer-up:hover,
.sender-page .layer-item .layer-down:hover {
  color: var(--accent);
}

/* Editable layer name */
.sender-page .layer-item .layer-name {
  cursor: text;
}
.sender-page .layer-item .layer-name:hover {
  text-decoration: underline;
  text-decoration-style: dotted;
}


/* Drag and drop layers */
.sender-page .layer-item.dragging {
  opacity: 0.5;
}
.sender-page .layer-item.drag-over {
  border-color: var(--accent);
  background: #1e3a5f;
}


/* View cube buttons */
.sender-page .view-cube {
  display: flex;
  gap: 2px;
  background: var(--secondary);
  border-radius: 6px;
  padding: 4px;
  border: 1px solid var(--border);
}
.sender-page .view-cube button {
  width: 24px;
  height: 24px;
  min-width: 24px;
  border-radius: 4px;
  border: 1px solid var(--border);
  background: var(--background);
  color: var(--muted-foreground);
  font-size: 10px;
  font-weight: 600;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0;
  transition: all 0.15s ease;
}
.sender-page .view-cube button:hover {
  background: var(--accent);
  color: var(--accent-foreground);
  border-color: var(--ring);
}
.sender-page .view-cube button:focus {
  outline: none;
  box-shadow: 0 0 0 2px var(--ring);
}
.sender-page .view-cube button:active {
  background: var(--primary);
  color: var(--primary-foreground);
  transform: scale(0.95);
}
.sender-page .view-cube button.active {
  background: var(--primary);
  color: var(--primary-foreground);
  border-color: var(--primary);
}
.sender-page .view-cube button:disabled {
  opacity: 0.5;
  cursor: not-allowed;
  pointer-events: none;
}


/* ============================================
   iPad Pro 12.9" (4th gen) & Apple Pencil 2
   ============================================ */

/* iPad Pro 12.9" landscape (2732x2048 @2x = 1366x1024 CSS pixels) */
@media screen and (min-width: 1024px) and (max-width: 1400px) and (min-height: 700px) and (max-height: 1100px) {
  .sender-page {
    /* Force fixed positioning for iPad */
    position: fixed !important;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
  }
  
  /* Floating toolbars on iPad */
  .sender-page .floating-toolbar {
    padding: 8px 12px;
  }
  .sender-page .floating-toolbar button {
    width: 44px;
    height: 44px;
    min-width: 44px;
    min-height: 44px;
  }
  .sender-page .bottom-toolbar {
    bottom: calc(var(--safe-bottom) + 20px);
  }
  .sender-page .stats-indicator {
    bottom: calc(var(--safe-bottom) + 20px);
  }
}

/* iPad Pro 12.9" portrait (2048x2732 @2x = 1024x1366 CSS pixels) */
@media screen and (min-width: 768px) and (max-width: 1100px) and (min-height: 1200px) and (max-height: 1400px) {
  .sender-page .bottom-toolbar {
    bottom: calc(var(--safe-bottom) + 20px);
    clip-path: none;
  }
}

/* iOS Safari standalone mode (PWA) */
@media screen and (display-mode: standalone) {
  .sender-page {
    /* PWA mode - account for status bar */
    padding-top: env(safe-area-inset-top, 20px);
  }
  
  .sender-page .bottom-toolbar {
    bottom: max(env(safe-area-inset-bottom, 0px), 20px);
  }
  .sender-page .stats-indicator {
    bottom: max(env(safe-area-inset-bottom, 0px), 20px);
  }
}

/* Apple Pencil 2 optimizations & iOS UI */
@supports (-webkit-touch-callout: none) {
  /* iOS-specific styles */
  .sender-page canvas {
    /* Allow pinch-zoom and pan gestures for OrbitControls */
    touch-action: pinch-zoom pan-x pan-y;
    -webkit-touch-callout: none;
  }
  
  /* Floating toolbar buttons on iOS */
  .sender-page .floating-toolbar button {
    -webkit-user-select: none;
    user-select: none;
    -webkit-tap-highlight-color: transparent;
  }
  
  .sender-page {
    /* Prevent rubber-banding */
    overscroll-behavior: none;
    -webkit-overflow-scrolling: auto;
  }
}

/* High precision pointer (Apple Pencil detected) */
@media (pointer: fine) and (any-pointer: coarse) {
  /* Device has both stylus (fine) and touch (coarse) */
  .sender-page canvas {
    /* Allow multi-touch gestures for camera control */
    touch-action: pinch-zoom pan-x pan-y;
  }
  
  /* Slightly larger touch targets for finger fallback */
  .sender-page .floating-toolbar button {
    min-height: 44px;
    min-width: 44px;
  }
}

/* Hover-capable devices with touch (iPad with Pencil hover) */
@media (hover: hover) and (any-pointer: coarse) {
  .sender-page .layer-item .layer-delete,
  .sender-page .layer-item .layer-up,
  .sender-page .layer-item .layer-down {
    /* Show controls on iPad since hover works with Pencil */
    opacity: 0.5;
  }
  
  .sender-page .layer-item:hover .layer-delete,
  .sender-page .layer-item:hover .layer-up,
  .sender-page .layer-item:hover .layer-down {
    opacity: 1;
  }
}

/* Force GPU acceleration for smoother drawing */
.sender-page #main,
.sender-page canvas {
  -webkit-transform: translateZ(0);
  transform: translateZ(0);
  -webkit-backface-visibility: hidden;
  backface-visibility: hidden;
}


/* Quick Tools Popup */
.sender-page .quick-tools {
  position: fixed;
  bottom: 60px;
  left: 50%;
  transform: translateX(-50%);
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 8px 12px;
  height: 54px;
  background: rgb(24, 24, 27);
  border: 1px solid rgb(39, 39, 42);
  border-radius: 14px;
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  z-index: 90;
}
.sender-page .quick-tools.hidden {
  display: none;
}
.sender-page .quick-tools-section {
  display: flex;
  align-items: center;
  gap: 6px;
}
.sender-page .quick-divider {
  width: 1px;
  height: 24px;
  background: var(--stroke);
}
.sender-page .quick-color-main {
  width: 32px;
  height: 32px;
  border-radius: 6px;
  border: 2px solid var(--stroke);
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
}
.sender-page .quick-size {
  gap: 8px;
}
.sender-page .quick-size .size-slider {
  width: 80px;
  height: 4px;
  accent-color: var(--accent);
}
.sender-page .quick-size .size-value {
  font-size: 11px;
  color: var(--muted);
  min-width: 28px;
}
.sender-page .quick-brush {
  width: 32px;
  height: 32px;
  border-radius: 6px;
  border: 1px solid var(--stroke);
  background: #0b0f1a;
  color: var(--muted);
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
}
.sender-page .quick-brush:hover {
  background: #1e293b;
  color: var(--text);
}
.sender-page .quick-brush.active {
  background: #1e3a5f;
  border-color: var(--accent);
  color: var(--accent);
}
.sender-page .geom-select {
  height: 32px;
  padding: 0 8px;
  border-radius: 6px;
  border: 1px solid var(--stroke);
  background: #0b0f1a;
  color: var(--text);
  font-size: 12px;
  cursor: pointer;
}

.sender-page .quick-color-wrapper {
  position: relative;
}
.sender-page .color-picker-popup {
  position: absolute;
  bottom: 48px;
  left: 0;
  padding: 12px;
  background: rgb(24, 24, 27);
  border: 1px solid rgb(39, 39, 42);
  border-radius: 12px;
  box-shadow: rgba(0, 0, 0, 0.5) 0px 8px 32px 0px;
  z-index: 100;
  min-width: 200px;
}
.sender-page .color-picker-popup.hidden {
  display: none;
}
.sender-page .color-picker-input {
  width: 100%;
  height: 36px;
  border: none;
  border-radius: 6px;
  cursor: pointer;
  margin-bottom: 8px;
}
.sender-page .color-label {
  font-size: 11px;
  color: var(--muted);
  margin: 8px 0 6px;
  display: flex;
  align-items: center;
  justify-content: space-between;
}
.sender-page .save-color-btn {
  width: 20px;
  height: 20px;
  border: none;
  background: transparent;
  color: var(--muted);
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
}
.sender-page .color-presets {
  display: flex;
  gap: 4px;
  flex-wrap: wrap;
}
.sender-page .color-preset {
  width: 24px;
  height: 24px;
  border-radius: 4px;
  border: 2px solid transparent;
  cursor: pointer;
  transition: transform 0.1s, border-color 0.15s;
}
.sender-page .color-preset:hover {
  transform: scale(1.1);
  border-color: var(--accent);
}


/* Color picker floating popup */
.sender-page .color-picker-floating {
  position: fixed;
  bottom: 70px;
  left: 50%;
  transform: translateX(-50%);
  padding: 12px;
  background: var(--toolbar-bg);
  border: 1px solid var(--toolbar-border);
  border-radius: 12px;
  box-shadow: var(--toolbar-shadow);
  z-index: 110;
  min-width: 220px;
}
.sender-page .color-picker-floating.hidden {
  display: none;
}
.sender-page .color-picker-floating .color-picker-input {
  width: 100%;
  height: 40px;
  border: none;
  border-radius: 6px;
  cursor: pointer;
  margin-bottom: 8px;
}
.sender-page .color-picker-floating .color-label {
  font-size: 11px;
  color: var(--muted);
  margin: 8px 0 6px;
}
.sender-page .color-picker-floating .color-presets {
  display: grid;
  grid-template-columns: repeat(6, 1fr);
  gap: 6px;
}
.sender-page .color-picker-floating .color-preset {
  width: 28px;
  height: 28px;
  border-radius: 6px;
  border: 2px solid transparent;
  cursor: pointer;
  transition: border-color 0.15s, transform 0.1s;
}
.sender-page .color-picker-floating .color-preset:hover {
  border-color: var(--accent);
  transform: scale(1.1);
}


/* ============================================
   FLOATING SETTINGS PANEL
   ============================================ */
.sender-page .floating-panel {
  position: fixed;
  top: calc(var(--safe-top) + 60px);
  left: 16px;
  width: 320px;
  max-height: calc(100vh - var(--safe-top) - var(--safe-bottom) - 140px);
  background: var(--toolbar-bg);
  border: 1px solid var(--toolbar-border);
  border-radius: var(--toolbar-radius);
  box-shadow: var(--toolbar-shadow);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  z-index: 90;
  display: flex;
  flex-direction: column;
  overflow: hidden;
}
.sender-page .floating-panel.hidden {
  display: none;
}
.sender-page .fp-header {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 10px 12px;
  border-bottom: 1px solid var(--stroke);
  font-size: 13px;
  font-weight: 600;
  color: var(--text);
  cursor: move;
  user-select: none;
  -webkit-user-select: none;
}
.sender-page .fp-header:active {
  cursor: grabbing;
}
.sender-page .fp-header .drag-handle {
  font-size: 16px;
  color: var(--muted);
  opacity: 0.5;
  transition: opacity 0.15s;
}
.sender-page .fp-header:hover .drag-handle {
  opacity: 1;
}
.sender-page .fp-header .mi {
  font-size: 18px;
  color: var(--accent);
}
.sender-page .fp-header .close-btn {
  margin-left: auto;
  width: 28px;
  height: 28px;
  border: none;
  background: transparent;
  color: var(--muted);
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 6px;
  transition: background 0.15s, color 0.15s;
}
.sender-page .fp-header .close-btn:hover {
  background: rgba(255,255,255,0.1);
  color: var(--text);
}
.sender-page .fp-scroll {
  flex: 1;
  overflow-y: auto;
  padding: 8px;
}
.sender-page .fp-section {
  margin-bottom: 4px;
}
.sender-page .section-header {
  width: 100%;
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 8px 10px;
  border-radius: 8px;
  border: none;
  background: transparent;
  color: var(--text);
  font-size: 12px;
  cursor: pointer;
  transition: background 0.15s;
}
.sender-page .section-header:hover {
  background: rgba(255,255,255,0.05);
}
.sender-page .section-header .section-icon {
  font-size: 16px;
  color: var(--accent);
}
.sender-page .section-header span:nth-child(2) {
  flex: 1;
  text-align: left;
  font-weight: 500;
  color: var(--text);
}
.sender-page .section-header .chevron {
  font-size: 16px;
  color: var(--muted);
  transition: transform 0.15s;
}
.sender-page .section-header .chevron.collapsed {
  transform: rotate(-90deg);
}
.sender-page .section-body {
  padding: 8px 10px;
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.sender-page .section-body.hidden {
  display: none;
}
.sender-page .chip-row {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}
.sender-page .chip {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 6px 10px;
  border-radius: 8px;
  border: 1px solid var(--border);
  background: var(--secondary);
  color: var(--secondary-foreground);
  font-size: 11px;
  cursor: pointer;
  transition: all 0.15s ease;
}
.sender-page .chip .mi {
  font-size: 14px;
}
.sender-page .chip:hover {
  background: var(--accent);
  border-color: var(--ring);
  color: var(--accent-foreground);
}
.sender-page .chip:focus {
  outline: none;
  box-shadow: inset 0 0 0px 1px var(--ring);
}
.sender-page .chip:active {
  transform: scale(0.97);
}
.sender-page #ui .chip.active {
  color: var(--accent);
  border-color: var(--accent);
  background: var(--accent-soft);
}
.sender-page .chip:disabled {
  opacity: 0.5;
  cursor: not-allowed;
  pointer-events: none;
}
.sender-page .reference-dropzone {
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding: 12px;
  border: 1px dashed var(--border);
  border-radius: 10px;
  background: color-mix(in srgb, var(--secondary) 78%, transparent);
  transition: border-color 0.15s ease, background 0.15s ease;
}
.sender-page .reference-dropzone.dragover {
  border-color: var(--accent);
  background: color-mix(in srgb, var(--accent-soft) 72%, var(--secondary));
}
.sender-page .reference-dropzone-copy {
  display: flex;
  flex-direction: column;
  gap: 4px;
  font-size: 11px;
  color: var(--muted);
}
.sender-page .reference-dropzone-copy strong {
  color: var(--text);
  font-size: 12px;
}
.sender-page .sculpt-assist-guide {
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding: 10px 12px;
  border: 1px solid var(--border);
  border-radius: 10px;
  background: color-mix(in srgb, var(--surface) 78%, transparent);
}
.sender-page .sculpt-assist-guide strong {
  font-size: 12px;
  color: var(--text);
}
.sender-page .sculpt-assist-guide ol {
  margin: 0;
  padding-left: 18px;
  display: flex;
  flex-direction: column;
  gap: 4px;
  font-size: 11px;
  color: var(--muted);
}
.sender-page .sculpt-assist-status {
  padding-top: 2px;
  font-size: 11px;
  color: var(--accent);
}
.sender-page .reference-gallery {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.sender-page .reference-card {
  display: grid;
  grid-template-columns: 52px minmax(0, 1fr);
  gap: 8px;
  padding: 8px;
  border: 1px solid var(--border);
  border-radius: 10px;
  background: var(--background);
}
.sender-page .reference-card.is-base {
  border-color: var(--accent);
  box-shadow: inset 0 0 0 1px var(--accent-soft);
}
.sender-page .reference-thumb {
  width: 52px;
  height: 52px;
  border-radius: 8px;
  background: rgba(255,255,255,0.04);
  object-fit: cover;
}
.sender-page .reference-meta {
  display: flex;
  flex-direction: column;
  gap: 6px;
  min-width: 0;
}
.sender-page .reference-name {
  font-size: 11px;
  color: var(--text);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.sender-page .reference-row {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}
.sender-page .reference-row label {
  flex-direction: row !important;
  align-items: center;
  gap: 6px;
  font-size: 11px !important;
  color: var(--muted) !important;
}
.sender-page .reference-row select {
  min-width: 122px;
}
.sender-page .reference-empty {
  padding: 8px 0 0;
  font-size: 11px;
  color: var(--muted);
}
.sender-page .slider-row {
  display: flex;
  flex-direction: column;
  gap: 6px;
  font-size: 11px;
  color: var(--muted);
}
.sender-page .slider-input {
  display: flex;
  align-items: center;
  gap: 8px;
}
.sender-page .slider-input input[type="range"] {
  flex: 1;
  height: 4px;
  accent-color: var(--accent);
}
.sender-page .slider-input input[type="number"] {
  width: 56px;
  height: 28px;
  padding: 0 6px;
  border-radius: 6px;
  border: 1px solid var(--border);
  background: var(--background);
  color: var(--foreground);
  font-size: 11px;
  text-align: center;
  transition: border-color 0.15s, box-shadow 0.15s;
}
.sender-page .slider-input input[type="number"]:hover {
  border-color: var(--ring);
}
.sender-page .slider-input input[type="number"]:focus {
  outline: none;
  border-color: var(--primary);
  box-shadow: 0 0 0 2px var(--ring);
}
.sender-page .slider-input input[type="number"]:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}
.sender-page .dual-input,
.sender-page .triple-input {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
}
.sender-page .dual-input input,
.sender-page .triple-input input {
  flex: 1;
  height: 28px;
  padding: 0 6px;
  border-radius: 6px;
  border: 1px solid var(--border);
  background: var(--background);
  color: var(--foreground);
  font-size: 11px;
  text-align: center;
  transition: border-color 0.15s, box-shadow 0.15s;
}
.sender-page .dual-input input:hover,
.sender-page .triple-input input:hover {
  border-color: var(--ring);
}
.sender-page .dual-input input:focus,
.sender-page .triple-input input:focus {
  outline: none;
  border-color: var(--primary);
  box-shadow: 0 0 0 2px var(--ring);
}
.sender-page .scene-select {
  width: 100%;
  height: 32px;
  padding: 0 10px;
  border-radius: 8px;
  border: 1px solid var(--border);
  background: var(--background);
  color: var(--foreground);
  font-size: 12px;
  margin-bottom: 8px;
  transition: border-color 0.15s, box-shadow 0.15s;
  cursor: pointer;
}
.sender-page .scene-select:hover {
  border-color: var(--ring);
}
.sender-page .scene-select:focus {
  outline: none;
  border-color: var(--primary);
  box-shadow: 0 0 0 2px var(--ring);
}
.sender-page .scene-select:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}


/* ============================================
   FLOATING LAYERS PANEL (v0 style)
   ============================================ */
.sender-page .layers-panel {
  right: 16px;
  left: auto;
  width: 260px;
  max-height: 480px;
}
.sender-page .layer-badge {
  background: var(--card);
  font-size: 11px;
  color: var(--muted);
  font-weight: 700;
  padding: 2px 8px;
  border-radius: 10px;
  min-width: 20px;
  text-align: center;
}
.sender-page .layers-toolbar {
  display: flex;
  gap: 6px;
  padding: 8px 10px;
  border-bottom: 1px solid var(--stroke);
}
.sender-page .layers-toolbar button {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  height: 32px;
  padding: 0 12px;
  border-radius: 6px;
  border: 1px solid var(--stroke-solid);
  background: var(--surface-solid);
  color: var(--text);
  font-size: 12px;
  font-weight: 500;
  cursor: pointer;
  transition: all 0.15s ease;
  white-space: nowrap;
}
.sender-page .layers-toolbar button:hover {
  background: var(--accent-soft);
  border-color: var(--accent);
  color: var(--accent);
}
.sender-page .layers-toolbar button:focus {
  outline: none;
  box-shadow: 0 0 0 2px var(--accent-soft);
}
.sender-page .layers-toolbar button:active {
  transform: scale(0.95);
}
.sender-page .layers-toolbar button .mi {
  font-size: 16px;
}
/* Layers actions row */
.sender-page .layers-actions {
  display: flex;
  align-items: center;
  gap: 2px;
  flex-wrap: wrap;
}
.sender-page .layers-actions button {
  width: 28px;
  height: 28px;
  padding: 0;
  min-width: 28px;
}
.sender-page .layers-actions button .mi {
  font-size: 16px;
}
.sender-page .layers-actions .toolbar-sep {
  width: 1px;
  height: 20px;
  background: var(--stroke-solid);
  margin: 0 4px;
}
.sender-page .layers-actions #layerColorPicker {
  width: 28px;
  height: 28px;
  padding: 0;
  border: 1px solid var(--stroke-solid);
  border-radius: 6px;
  cursor: pointer;
  background: transparent;
}
.sender-page .layers-actions #layerColorPicker::-webkit-color-swatch-wrapper {
  padding: 2px;
}
.sender-page .layers-actions #layerColorPicker::-webkit-color-swatch {
  border-radius: 4px;
  border: none;
}
.sender-page .layers-list {
  flex: 1;
  overflow-y: auto;
  padding: 6px;
}
.sender-page .layer-item {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 6px 8px;
  border-radius: 6px;
  background: transparent;
  border: 1px solid transparent;
  margin-bottom: 2px;
  cursor: pointer;
  font-size: 11px;
  color: var(--text);
  transition: background 0.15s, border-color 0.15s;
}
.sender-page .layer-item:hover {
  background: rgba(255,255,255,0.03);
  border-color: var(--stroke);
}
.sender-page .layer-item.active {
  background: #1e293b;
  border-color: var(--accent);
}
.sender-page .layer-item.hidden-layer {
  opacity: 0.5;
}
.sender-page .layer-item .expand-btn,
.sender-page .layer-item .expand-spacer {
  width: 16px;
  height: 16px;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
.sender-page .layer-item .expand-btn {
  border: none;
  background: transparent;
  color: var(--muted);
  cursor: pointer;
  padding: 0;
  border-radius: 4px;
}
.sender-page .layer-item .expand-btn:hover {
  background: rgba(255,255,255,0.1);
  color: var(--text);
}
.sender-page .layer-item .expand-btn .mi {
  font-size: 14px;
  transition: transform 0.15s;
}
.sender-page .layer-item.collapsed .expand-btn .mi {
  transform: rotate(-90deg);
}
.sender-page .layer-item .visibility-btn,
.sender-page .layer-item .lock-btn {
  width: 20px;
  height: 20px;
  border: none;
  background: transparent;
  color: var(--muted);
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0;
  border-radius: 4px;
  flex-shrink: 0;
}
.sender-page .layer-item .visibility-btn:hover,
.sender-page .layer-item .lock-btn:hover {
  background: rgba(255,255,255,0.1);
  color: var(--text);
}
.sender-page .layer-item .visibility-btn .mi,
.sender-page .layer-item .lock-btn .mi {
  font-size: 14px;
}
.sender-page .layer-item .visibility-btn.off {
  color: #4b5563;
}
.sender-page .layer-item .lock-btn.locked {
  color: #f59e0b;
}
.sender-page .layer-item .layer-color-dot {
  width: 12px;
  height: 12px;
  border-radius: 3px;
  flex-shrink: 0;
  box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2);
}
.sender-page .layer-item .layer-name {
  flex: 1;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.sender-page .layer-item .delete-btn {
  width: 20px;
  height: 20px;
  border: none;
  background: transparent;
  color: #6b7280;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0;
  border-radius: 4px;
  opacity: 0;
  transition: opacity 0.15s, color 0.15s;
  flex-shrink: 0;
}
.sender-page .layer-item:hover .delete-btn {
  opacity: 1;
}
.sender-page .layer-item .delete-btn:hover {
  color: #f87171;
  background: rgba(248,113,113,0.1);
}
.sender-page .layer-item .delete-btn .mi {
  font-size: 14px;
}

/* Model layer entry in layers panel */
.sender-page .layer-item.model-layer {
  background: rgba(99, 102, 241, 0.1);
  border-color: rgba(99, 102, 241, 0.3);
}
.sender-page .layer-item.model-layer:hover {
  background: rgba(99, 102, 241, 0.15);
  border-color: rgba(99, 102, 241, 0.5);
}
.sender-page .layer-item.model-layer .model-icon {
  font-size: 16px;
  color: #818cf8;
  flex-shrink: 0;
}
.sender-page .layer-item.model-layer .model-name {
  color: #a5b4fc;
  font-weight: 500;
}
.sender-page .layer-item.model-layer.hidden-layer {
  opacity: 0.5;
}
.sender-page .layer-item.model-layer.hidden-layer .model-icon {
  color: #6b7280;
}
.sender-page .layer-separator {
  height: 1px;
  background: var(--stroke);
  margin: 6px 8px;
}

.sender-page .layers-footer {
  padding: 8px 10px;
  border-top: 1px solid var(--stroke);
}
.sender-page .active-layer {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 11px;
  color: var(--muted);
}
.sender-page .active-layer .mi {
  font-size: 14px;
  color: var(--accent);
}
.sender-page .active-layer strong {
  color: var(--text);
  font-weight: 500;
}


/* Layers search */
.sender-page .layers-search {
  flex: 1;
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 0 8px;
  height: 32px;
  border-radius: 6px;
  border: 1px solid var(--stroke);
  background: var(--surface-solid);
}
.sender-page .layers-search .mi {
  font-size: 14px;
  color: var(--muted);
}
.sender-page .layers-search input {
  flex: 1;
  border: none;
  background: transparent;
  color: var(--text);
  font-size: 11px;
  outline: none;
}
.sender-page .layers-search input::placeholder {
  color: #6b7280;
}
.sender-page .layers-toolbar button {
  width: 32px;
  height: 32px;
  padding: 0;
  flex-shrink: 0;
}
.sender-page .layers-toolbar button span:last-child:not(.mi) {
  display: none;
}

/* Layer item rename input */
.sender-page .layer-item .layer-name-input {
  flex: 1;
  border: 1px solid var(--accent);
  background: var(--surface-solid);
  color: var(--text);
  font-size: 11px;
  padding: 2px 6px;
  border-radius: 4px;
  outline: none;
}

/* Layer item dragging states */
.sender-page .layer-item[draggable="true"] {
  cursor: grab;
}
.sender-page .layer-item.dragging {
  opacity: 0.5;
  cursor: grabbing;
}
.sender-page .layer-item.drag-over {
  border-color: var(--accent);
  background: rgba(0, 224, 255, 0.1);
}
.sender-page .layer-item.drag-over-top {
  border-top: 2px solid var(--accent);
}
.sender-page .layer-item.drag-over-bottom {
  border-bottom: 2px solid var(--accent);
}

/* Layer filtered out by search */
.sender-page .layer-item.filtered {
  display: none;
}


/* Layer hierarchy styles */
.sender-page .layer-item.is-group {
  background: rgba(255,255,255,0.02);
}
.sender-page .layer-item.is-group .layer-folder-icon {
  font-size: 14px;
  color: #facc15;
  margin-right: 2px;
}
.sender-page .layer-item .expand-btn {
  width: 16px;
  height: 16px;
  padding: 0;
  border: none;
  background: transparent;
  color: var(--muted);
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  border-radius: 3px;
}
.sender-page .layer-item .expand-btn:hover {
  background: rgba(255,255,255,0.1);
  color: var(--text);
}
.sender-page .layer-item .expand-btn .mi {
  font-size: 14px;
  transition: transform 0.15s;
}
.sender-page .layer-item.collapsed .expand-btn .mi {
  transform: rotate(0deg);
}
.sender-page .layer-item .expand-spacer {
  width: 16px;
  flex-shrink: 0;
}

/* Drag over inside group indicator */
.sender-page .layer-item.drag-over-inside {
  background: rgba(0, 224, 255, 0.15) !important;
  border-color: var(--accent) !important;
  box-shadow: inset 0 0 0 1px var(--accent);
}


/* Drag indicator line showing drop level */
.sender-page .drag-indicator {
  position: absolute;
  left: 0;
  right: 8px;
  height: 2px;
  background: var(--accent);
  pointer-events: none;
  z-index: 10;
  box-shadow: 0 0 6px var(--accent);
}
.sender-page .drag-indicator::before {
  content: '';
  position: absolute;
  left: 0;
  top: -3px;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--accent);
}
.sender-page .layers-list {
  position: relative;
}

/* Clear old drag-over styles when using indicator */
.sender-page .layer-item.drag-over-top,
.sender-page .layer-item.drag-over-bottom {
  border-color: transparent !important;
}

/* ============================================
   3D MODEL IMPORT UI
   ============================================ */
.sender-page .model-info {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 8px 12px;
  margin-top: 8px;
  background: var(--accent-soft);
  border: 1px solid var(--accent);
  border-radius: 8px;
  font-size: 12px;
  color: var(--accent);
}
.sender-page .model-info .mi {
  font-size: 16px;
  color: var(--success);
}
.sender-page #modelName {
  flex: 1;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}


/* Transform Panel */
.transform-panel {
  position: fixed;
  top: 80px;
  right: 260px;
  background: var(--surface);
  border: 1px solid var(--stroke-solid);
  border-radius: var(--radius);
  padding: 12px;
  z-index: 1000;
  min-width: 180px;
  box-shadow: var(--toolbar-shadow);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  display: none;
}

.transform-panel .transform-header {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 12px;
  padding-bottom: 8px;
  border-bottom: 1px solid var(--stroke);
  color: var(--text);
  font-weight: 500;
}

.transform-panel .transform-header .close-btn {
  margin-left: auto;
  background: none;
  border: none;
  color: var(--muted);
  cursor: pointer;
  padding: 4px;
  border-radius: 4px;
}

.transform-panel .transform-header .close-btn:hover {
  background: var(--stroke);
  color: var(--text);
}

.transform-panel label {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 8px;
  color: var(--text);
  font-size: 13px;
}

.transform-panel input[type="number"] {
  flex: 1;
  background: var(--surface-solid);
  border: 1px solid var(--stroke-solid);
  border-radius: 6px;
  padding: 6px 8px;
  color: var(--text);
  font-size: 13px;
  width: 80px;
}

.transform-panel input[type="number"]:focus {
  outline: none;
  border-color: var(--accent);
}

.transform-panel input[type="checkbox"] {
  accent-color: var(--accent);
}

.transform-panel .transform-row {
  display: flex;
  align-items: center;
  gap: 6px;
  margin-bottom: 8px;
}

.transform-panel .transform-row span {
  width: 30px;
  color: var(--text);
  font-size: 13px;
}

.transform-panel .transform-btn {
  width: 28px;
  height: 28px;
  background: var(--surface-solid);
  border: 1px solid var(--stroke-solid);
  border-radius: 6px;
  color: var(--text);
  font-size: 16px;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: all 0.15s;
}

.transform-panel .transform-btn:hover {
  background: var(--accent);
  border-color: var(--accent);
}

.transform-panel .transform-btn:active {
  transform: scale(0.95);
}

.transform-panel .transform-row input[type="number"] {
  flex: 1;
  text-align: center;
}

/* Transform Panel Actions */
.transform-panel .transform-actions {
  margin-top: 12px;
  padding-top: 12px;
  border-top: 1px solid var(--stroke);
}

.transform-panel .reset-btn {
  width: 100%;
  padding: 8px 12px;
  background: var(--surface-solid);
  border: 1px solid var(--stroke-solid);
  border-radius: 6px;
  color: var(--text);
  font-size: 13px;
  cursor: pointer;
  transition: all 0.15s;
}

.transform-panel .reset-btn:hover {
  background: var(--warning);
  border-color: var(--warning);
  color: #000;
}

.transform-panel .reset-btn:active {
  transform: scale(0.98);
}

/* Stroke Transform Panel - positioned on the right side */
.stroke-transform-panel {
  right: calc(var(--layers-width) + 20px);
  left: auto;
}

/* Transform Mode Selector */
.transform-mode-selector {
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  background: var(--surface-solid);
  border: 1px solid var(--stroke-solid);
  border-radius: var(--radius);
  padding: 16px;
  z-index: 10001;
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.5);
  min-width: 200px;
}

.transform-mode-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 16px;
  font-weight: 500;
  color: var(--text);
}

.transform-mode-header .close-btn {
  background: none;
  border: none;
  color: var(--muted);
  cursor: pointer;
  padding: 4px;
  border-radius: 4px;
}

.transform-mode-header .close-btn:hover {
  background: var(--stroke);
  color: var(--text);
}

.transform-mode-buttons {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.transform-mode-btn {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 12px 16px;
  background: var(--surface);
  border: 1px solid var(--stroke-solid);
  border-radius: 8px;
  color: var(--text);
  cursor: pointer;
  transition: all 0.15s ease;
}

.transform-mode-btn:hover {
  background: var(--accent-soft);
  border-color: var(--accent);
}

.transform-mode-btn .mi {
  font-size: 20px;
  color: var(--accent);
}

/* Layer item transform button */
.layer-item .transform-btn {
  background: none;
  border: none;
  color: var(--muted);
  cursor: pointer;
  padding: 4px;
  border-radius: 4px;
  opacity: 0;
  transition: opacity 0.15s ease;
}

.layer-item:hover .transform-btn {
  opacity: 1;
}

.layer-item .transform-btn:hover {
  background: var(--accent-soft);
  color: var(--accent);
}

/* Stroke transform button styles */
.stroke-transform-btn {
  width: 28px;
  height: 28px;
  background: var(--surface);
  border: 1px solid var(--stroke-solid);
  border-radius: 4px;
  color: var(--text);
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 14px;
  transition: all 0.15s ease;
}

.stroke-transform-btn:hover {
  background: var(--accent);
  border-color: var(--accent);
}

.stroke-transform-btn:active {
  transform: scale(0.95);
}


/* ============================================
   SELECT TOOL MODE STYLES
   ============================================ */

/* Cursor changes to pointer when select mode is active */
.sender-page.select-mode #app {
  cursor: pointer;
}

.sender-page.select-mode canvas {
  cursor: pointer;
}

/* Mode badge updates for select mode */
.sender-page.select-mode .mode-badge .mi {
  color: var(--warning);
}

/* Stroke hover highlight effect in select mode - applied via JS using emissive material property */

/* Visual feedback when hovering over selectable strokes */
.sender-page.select-mode #app:hover {
  cursor: pointer;
}

/* Select mode button active state (handled by .active class in floating-toolbar) */
.sender-page .floating-toolbar #selectMode.active {
  border-color: transparent;
  color: var(--warning);
  background: rgba(245, 158, 11, 0.15);
}

/* Drawing tip shows select mode info */
.sender-page.select-mode .drawing-tip #tipIcon {
  color: var(--warning);
}


/* ============================================
   TRANSFORM PANEL STYLES
   ============================================ */

/* Transform panel - unified panel for model/stroke transform controls */
.transform-panel {
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  background: var(--surface-solid);
  border: 1px solid var(--stroke-solid);
  border-radius: var(--radius);
  padding: 16px;
  min-width: 280px;
  z-index: 1000;
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.5);
}

/* Unified transform panel - positioned next to sidebar */
.unified-transform-panel {
  position: fixed;
  top: 50px;
  left: 360px;
  transform: none;
  background: var(--surface-solid);
  border: 1px solid var(--stroke-solid);
  border-radius: var(--radius);
  padding: 12px;
  min-width: 200px;
  z-index: 100;
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.5);
}

.unified-transform-panel .transform-target {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 8px 12px;
  background: var(--accent-soft);
  border-radius: 8px;
  margin-bottom: 16px;
  color: var(--accent);
  font-size: 13px;
}

.unified-transform-panel .transform-target .mi {
  font-size: 18px;
}

.unified-transform-panel .transform-section {
  margin-bottom: 16px;
}

.unified-transform-panel .transform-section-header {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 12px;
  padding-bottom: 8px;
  border-bottom: 1px solid var(--stroke);
  font-size: 12px;
  font-weight: 500;
  color: var(--muted);
  text-transform: uppercase;
  letter-spacing: 0.5px;
}

.unified-transform-panel .transform-section-header .mi {
  font-size: 16px;
  color: var(--accent);
}

/* Stroke transform panel - placeholder for future styling */

.transform-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  margin-bottom: 12px;
  padding-bottom: 8px;
  border-bottom: 1px solid var(--stroke-solid);
  font-weight: 500;
  color: var(--text);
}

.unified-transform-panel .transform-header .transform-section-header {
  margin-bottom: 0;
  padding-bottom: 0;
  border-bottom: none;
}

.transform-header .mi {
  font-size: 20px;
  color: var(--accent);
}

.transform-header .close-btn {
  margin-left: auto;
  background: transparent;
  border: none;
  color: var(--muted);
  cursor: pointer;
  padding: 4px;
  border-radius: 4px;
  display: flex;
  align-items: center;
  justify-content: center;
}

.transform-header .close-btn:hover {
  background: var(--stroke);
  color: var(--text);
}

.transform-row {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 12px;
}

.transform-row > span:first-child {
  min-width: 40px;
  color: var(--muted);
  font-size: 13px;
}

.transform-row input[type="number"] {
  flex: 1;
  background: var(--bg);
  border: 1px solid var(--stroke-solid);
  border-radius: 6px;
  padding: 8px 12px;
  color: var(--text);
  font-size: 14px;
  text-align: center;
  -moz-appearance: textfield;
}

.transform-row input[type="number"]::-webkit-outer-spin-button,
.transform-row input[type="number"]::-webkit-inner-spin-button {
  -webkit-appearance: none;
  margin: 0;
}

.transform-row input[type="number"]:focus {
  outline: none;
  border-color: var(--accent);
}

.transform-btn,
.stroke-transform-btn {
  background: var(--surface);
  border: 1px solid var(--stroke-solid);
  border-radius: 6px;
  color: var(--text);
  width: 36px;
  height: 36px;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  font-size: 18px;
  font-weight: 500;
  transition: all 0.15s ease;
}

.transform-btn:hover,
.stroke-transform-btn:hover {
  background: var(--accent-soft);
  border-color: var(--accent);
  color: var(--accent);
}

.transform-btn:active,
.stroke-transform-btn:active {
  transform: scale(0.95);
}

.transform-actions {
  margin-top: 16px;
  padding-top: 12px;
  border-top: 1px solid var(--stroke-solid);
  justify-content: center;
}

.reset-btn {
  background: var(--surface);
  border: 1px solid var(--stroke-solid);
  border-radius: 6px;
  color: var(--muted);
  padding: 8px 24px;
  cursor: pointer;
  font-size: 13px;
  transition: all 0.15s ease;
}

.reset-btn:hover {
  background: var(--danger);
  border-color: var(--danger);
  color: white;
}

/* Transform mode selector popup */
.transform-mode-selector {
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  background: var(--surface-solid);
  border: 1px solid var(--stroke-solid);
  border-radius: var(--radius);
  padding: 16px;
  z-index: 1000;
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.5);
}

.transform-mode-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 16px;
  padding-bottom: 12px;
  border-bottom: 1px solid var(--stroke-solid);
  font-weight: 500;
  color: var(--text);
}

.transform-mode-header .close-btn {
  background: transparent;
  border: none;
  color: var(--muted);
  cursor: pointer;
  padding: 4px;
  border-radius: 4px;
  display: flex;
  align-items: center;
  justify-content: center;
}

.transform-mode-header .close-btn:hover {
  background: var(--stroke);
  color: var(--text);
}

.transform-mode-buttons {
  display: flex;
  gap: 12px;
}

.transform-mode-btn {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  padding: 16px 24px;
  background: var(--surface);
  border: 1px solid var(--stroke-solid);
  border-radius: 8px;
  color: var(--text);
  cursor: pointer;
  transition: all 0.15s ease;
}

.transform-mode-btn .mi {
  font-size: 24px;
  color: var(--accent);
}

.transform-mode-btn span:last-child {
  font-size: 12px;
  color: var(--muted);
}

.transform-mode-btn:hover {
  background: var(--accent-soft);
  border-color: var(--accent);
}

.transform-mode-btn:hover .mi {
  color: var(--accent);
}

.transform-mode-btn:hover span:last-child {
  color: var(--text);
}

.transform-mode-btn:active {
  transform: scale(0.95);
}


/* Unified transform panel button styles */
.unified-transform-btn {
  background: var(--surface);
  border: 1px solid var(--stroke-solid);
  border-radius: 6px;
  color: var(--text);
  width: 32px;
  height: 32px;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  font-size: 16px;
  font-weight: 500;
  transition: all 0.15s ease;
}

.unified-transform-btn:hover {
  background: var(--accent-soft);
  border-color: var(--accent);
  color: var(--accent);
}

.unified-transform-btn:active {
  transform: scale(0.95);
}

.unified-transform-panel .transform-row {
  margin-bottom: 8px;
}

.unified-transform-panel .transform-row input[type="number"] {
  flex: 1;
  min-width: 60px;
  height: 32px;
  padding: 0 8px;
}


/* ============================================
   LIGHT THEME OVERRIDES
   ============================================ */

/* Light theme - applied via .light-theme class on body or .sender-page */
.sender-page.light-theme {
  /* Override background gradient for light theme */
  background: radial-gradient(circle at 20% 20%, rgba(59, 130, 246, 0.08), transparent 35%),
              radial-gradient(circle at 80% 0%, rgba(59, 130, 246, 0.05), transparent 40%),
              var(--bg);
}

/* Canvas background is controlled by Three.js scene.background */
/* No need to override here - setSceneTheme() handles it */

/* Sidebar and panels in light theme */
.sender-page.light-theme #sidebar {
  background: var(--surface-solid);
  border-right-color: var(--stroke-solid);
  box-shadow: 12px 0 40px rgba(0, 0, 0, 0.15);
}

.sender-page.light-theme .sidebar-header {
  background: var(--surface);
  border-bottom-color: var(--stroke-solid);
}

.sender-page.light-theme .panel-body {
  border-left-color: var(--stroke-solid);
}

/* Floating panels in light theme */
.sender-page.light-theme .floating-panel {
  background: var(--toolbar-bg);
  border-color: var(--toolbar-border);
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.15), 0 0 0 1px var(--stroke);
}

/* Floating toolbars in light theme */
.sender-page.light-theme .floating-toolbar {
  background: var(--toolbar-bg);
  border-color: var(--toolbar-border);
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.15), 0 0 0 1px var(--stroke);
}

/* Layers panel in light theme */
.sender-page.light-theme #layers-panel {
  background: var(--surface-solid);
  border-left-color: var(--stroke-solid);
  box-shadow: -12px 0 40px rgba(0, 0, 0, 0.15);
}

.sender-page.light-theme .layers-header {
  border-bottom-color: var(--stroke-solid);
}

.sender-page.light-theme .layer-item:hover {
  background: rgba(0, 0, 0, 0.03);
  border-color: var(--stroke);
}

.sender-page.light-theme .layer-item.active {
  background: rgba(37, 99, 235, 0.1);
  border-color: var(--accent);
}

/* Button hover states in light theme */
.sender-page.light-theme #ui button:hover {
  background: rgba(0, 0, 0, 0.05);
  border-color: var(--stroke-solid);
}

.sender-page.light-theme .chip-btn:hover {
  background: rgba(37, 99, 235, 0.1);
  border-color: var(--accent);
  color: var(--accent);
}

.sender-page.light-theme .panel-header:hover {
  background: rgba(0, 0, 0, 0.03);
}

/* Mode badge and overlays in light theme - keep dark for contrast over canvas */
.sender-page.light-theme .mode-badge,
.sender-page.light-theme #viewportOverlay button,
.sender-page.light-theme .drawing-tip,
.sender-page.light-theme .mini-map {
  background: rgba(10, 10, 11, 0.9);
  color: #fafafa;
}

.sender-page.light-theme .mode-badge .mi {
  color: #3b82f6;
}

.sender-page.light-theme .drawing-tip .mi {
  color: #facc15;
}

.sender-page.light-theme .drawing-tip .tip-layer {
  color: #00e0ff;
}

.sender-page.light-theme .drawing-tip .tip-layer .mi {
  color: #00e0ff;
}

/* Stats indicator in light theme */
.sender-page.light-theme .stats-indicator {
  background: var(--toolbar-bg);
  border-color: var(--toolbar-border);
}

/* Logo dot keeps its gradient in both themes */
.sender-page.light-theme .logo-dot {
  box-shadow: 0 0 0 1px var(--stroke-solid), 0 0 20px rgba(56, 189, 248, 0.4);
}

/* Quick tools popup in light theme */
.sender-page.light-theme .quick-tools {
  background: var(--surface-solid);
  border-color: var(--stroke-solid);
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.15);
}

.sender-page.light-theme .quick-brush {
  background: var(--surface);
  border-color: var(--stroke-solid);
}

.sender-page.light-theme .quick-brush:hover {
  background: rgba(0, 0, 0, 0.05);
}

.sender-page.light-theme .quick-brush.active {
  background: var(--accent-soft);
  border-color: var(--accent);
}

/* Color picker popup in light theme */
.sender-page.light-theme .color-picker-popup,
.sender-page.light-theme .color-picker-floating {
  background: var(--surface-solid);
  border-color: var(--stroke-solid);
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.15);
}

/* Transform panels in light theme */
.sender-page.light-theme .transform-panel,
.sender-page.light-theme .unified-transform-panel,
.sender-page.light-theme .transform-mode-selector {
  background: var(--surface-solid);
  border-color: var(--stroke-solid);
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.15);
}

/* Scenes row buttons in light theme */
.sender-page.light-theme .scenes-row button {
  background: var(--surface);
}

/* Toggle UI button in light theme */
.sender-page.light-theme #toggleUI {
  background: var(--surface);
  border-color: var(--stroke-solid);
}

/* Mini map in light theme - keep dark for 3D preview */
.sender-page.light-theme .mini-map-content {
  background: #0b0b0b;
}

.sender-page.light-theme .mini-map-header {
  background: rgba(10, 10, 11, 0.9);
  border-bottom-color: rgba(255, 255, 255, 0.1);
  color: #9aa3b5;
}

/* View cube in light theme - keep dark for contrast over canvas */
.sender-page.light-theme .view-cube {
  background: rgba(10, 10, 11, 0.9);
  border-color: rgba(255, 255, 255, 0.1);
}

.sender-page.light-theme .view-cube button {
  background: rgba(10, 10, 11, 0.8);
  border-color: rgba(255, 255, 255, 0.1);
  color: #9aa3b5;
}

.sender-page.light-theme .view-cube button:hover {
  background: var(--accent);
  color: #ffffff;
}

/* Geom dropdown in light theme */
.sender-page.light-theme .geom-dropdown {
  background: var(--card);
  border-color: var(--stroke-solid);
}

.sender-page.light-theme .geom-dropdown:hover {
  border-color: var(--accent);
}

/* Layer visibility button off state in light theme */
.sender-page.light-theme .layer-item .visibility-btn.off {
  color: var(--muted);
}

/* Delete button in light theme */
.sender-page.light-theme .layer-item .delete-btn {
  color: var(--muted);
}

.sender-page.light-theme .layer-item .delete-btn:hover {
  color: var(--danger);
  background: rgba(220, 38, 38, 0.1);
}

/* Search input placeholder in light theme */
.sender-page.light-theme .layers-search input::placeholder {
  color: var(--muted);
}

/* Model layer in light theme */
.sender-page.light-theme .layer-item.model-layer {
  background: rgba(99, 102, 241, 0.08);
  border-color: rgba(99, 102, 241, 0.2);
}

.sender-page.light-theme .layer-item.model-layer:hover {
  background: rgba(99, 102, 241, 0.12);
  border-color: rgba(99, 102, 241, 0.4);
}

/* Group folder icon in light theme */
.sender-page.light-theme .layer-item.is-group .layer-folder-icon {
  color: #d97706;
}

/* Expand button hover in light theme */
.sender-page.light-theme .layer-item .expand-btn:hover {
  background: rgba(0, 0, 0, 0.05);
}

/* Layer count badge in light theme */
.sender-page.light-theme .layer-count {
  background: var(--accent);
  color: #ffffff;
}

/* ============================================
   ENHANCED TOOLTIPS (Requirements 6.1-6.5)
   ============================================ */

/* Tooltip container */
.kiro-tooltip {
  position: fixed;
  z-index: 10000;
  max-width: 280px;
  padding: 6px 10px;
  font-size: 12px;
  font-weight: 500;
  line-height: 1.4;
  color: var(--text, #fafafa);
  background: var(--surface-solid, #18181b);
  border: 1px solid var(--stroke, rgba(255, 255, 255, 0.08));
  border-radius: 6px;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.4), 0 0 0 1px rgba(255, 255, 255, 0.05);
  pointer-events: none;
  visibility: hidden;
  opacity: 0;
  transition: opacity 150ms ease, transform 150ms ease;
  transform: scale(0.95);
  white-space: nowrap;
}

/* Visible state with animation (Requirement 6.2) */
.kiro-tooltip.visible {
  visibility: visible;
  opacity: 1;
  transform: scale(1);
}

/* Arrow/pointer for tooltip below element */
.kiro-tooltip.tooltip-below::before {
  content: '';
  position: absolute;
  top: -5px;
  left: 50%;
  transform: translateX(-50%);
  border-width: 0 5px 5px 5px;
  border-style: solid;
  border-color: transparent transparent var(--stroke, rgba(255, 255, 255, 0.08)) transparent;
}

.kiro-tooltip.tooltip-below::after {
  content: '';
  position: absolute;
  top: -4px;
  left: 50%;
  transform: translateX(-50%);
  border-width: 0 4px 4px 4px;
  border-style: solid;
  border-color: transparent transparent var(--surface-solid, #18181b) transparent;
}

/* Arrow/pointer for tooltip above element */
.kiro-tooltip.tooltip-above::before {
  content: '';
  position: absolute;
  bottom: -5px;
  left: 50%;
  transform: translateX(-50%);
  border-width: 5px 5px 0 5px;
  border-style: solid;
  border-color: var(--stroke, rgba(255, 255, 255, 0.08)) transparent transparent transparent;
}

.kiro-tooltip.tooltip-above::after {
  content: '';
  position: absolute;
  bottom: -4px;
  left: 50%;
  transform: translateX(-50%);
  border-width: 4px 4px 0 4px;
  border-style: solid;
  border-color: var(--surface-solid, #18181b) transparent transparent transparent;
}

/* Light theme tooltip styles */
.sender-page.light-theme .kiro-tooltip {
  color: var(--text, #1a1a1a);
  background: var(--card, #ffffff);
  border-color: var(--stroke, #e0e0e0);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15), 0 0 0 1px rgba(0, 0, 0, 0.05);
}

.sender-page.light-theme .kiro-tooltip.tooltip-below::before {
  border-color: transparent transparent var(--stroke, #e0e0e0) transparent;
}

.sender-page.light-theme .kiro-tooltip.tooltip-below::after {
  border-color: transparent transparent var(--card, #ffffff) transparent;
}

.sender-page.light-theme .kiro-tooltip.tooltip-above::before {
  border-color: var(--stroke, #e0e0e0) transparent transparent transparent;
}

.sender-page.light-theme .kiro-tooltip.tooltip-above::after {
  border-color: var(--card, #ffffff) transparent transparent transparent;
}

/* Keyboard shortcut styling within tooltip */
.kiro-tooltip kbd {
  display: inline-block;
  padding: 1px 4px;
  margin-left: 4px;
  font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;
  font-size: 10px;
  font-weight: 600;
  color: var(--muted, #71717a);
  background: rgba(255, 255, 255, 0.1);
  border: 1px solid rgba(255, 255, 255, 0.15);
  border-radius: 3px;
}

.sender-page.light-theme .kiro-tooltip kbd {
  color: var(--muted, #666666);
  background: rgba(0, 0, 0, 0.05);
  border-color: rgba(0, 0, 0, 0.1);
}

/* ============================================
   UNIFIED TRANSFORM PANEL
   ============================================ */

.unified-transform-panel {
  position: fixed;
  top: 80px;
  right: 260px;
  width: 200px;
  background: var(--surface-solid, #18181b);
  border: 1px solid var(--stroke-solid, #27272a);
  border-radius: var(--panel-radius, 8px);
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.5);
  z-index: 1000;
  font-size: 12px;
  color: var(--text, #fafafa);
}

.unified-transform-panel .transform-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 8px 10px;
  border-bottom: 1px solid var(--stroke-solid, #27272a);
  cursor: move;
  user-select: none;
}

.unified-transform-panel .transform-section-header {
  display: flex;
  align-items: center;
  gap: 6px;
  font-weight: 500;
}

.unified-transform-panel .transform-section-header .mi {
  font-size: 16px;
  color: var(--accent, #3b82f6);
}

.unified-transform-panel .close-btn {
  background: none;
  border: none;
  color: var(--muted, #71717a);
  cursor: pointer;
  padding: 2px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 4px;
  transition: color 0.15s, background 0.15s;
}

.unified-transform-panel .close-btn:hover {
  color: var(--text, #fafafa);
  background: rgba(255, 255, 255, 0.1);
}

.unified-transform-panel .close-btn .mi {
  font-size: 16px;
}

.unified-transform-panel .transform-section {
  padding: 10px;
}

.unified-transform-panel .transform-row {
  display: flex;
  align-items: center;
  gap: 6px;
  margin-bottom: 8px;
}

.unified-transform-panel .transform-row:last-child {
  margin-bottom: 0;
}

.unified-transform-panel .transform-row > span:first-child {
  width: 28px;
  color: var(--muted, #71717a);
  font-size: 11px;
}

.unified-transform-panel .transform-row input[type="number"] {
  flex: 1;
  min-width: 0;
  padding: 4px 6px;
  background: var(--bg, #0a0a0b);
  border: 1px solid var(--stroke-solid, #27272a);
  border-radius: 4px;
  color: var(--text, #fafafa);
  font-size: 11px;
  text-align: center;
}

.unified-transform-panel .transform-row input[type="number"]:focus {
  outline: none;
  border-color: var(--accent, #3b82f6);
}

.unified-transform-panel .unified-transform-btn {
  width: 24px;
  height: 24px;
  padding: 0;
  background: var(--bg, #0a0a0b);
  border: 1px solid var(--stroke-solid, #27272a);
  border-radius: 4px;
  color: var(--text, #fafafa);
  font-size: 14px;
  font-weight: 500;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background 0.15s, border-color 0.15s;
}

.unified-transform-panel .unified-transform-btn:hover {
  background: var(--accent-soft, rgba(59, 130, 246, 0.15));
  border-color: var(--accent, #3b82f6);
}

.unified-transform-panel .unified-transform-btn:active {
  background: var(--accent, #3b82f6);
}

.unified-transform-panel .transform-actions {
  padding: 8px 10px;
  border-top: 1px solid var(--stroke-solid, #27272a);
  justify-content: center;
}

.unified-transform-panel .reset-btn {
  flex: 1;
  padding: 6px 12px;
  background: var(--bg, #0a0a0b);
  border: 1px solid var(--stroke-solid, #27272a);
  border-radius: 4px;
  color: var(--muted, #71717a);
  font-size: 11px;
  cursor: pointer;
  transition: color 0.15s, border-color 0.15s;
}

.unified-transform-panel .reset-btn:hover {
  color: var(--text, #fafafa);
  border-color: var(--muted, #71717a);
}

/* Light theme */
.sender-page.light-theme .unified-transform-panel {
  background: #ffffff;
  border-color: #e4e4e7;
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.15);
}

.sender-page.light-theme .unified-transform-panel .transform-header {
  border-bottom-color: #e4e4e7;
}

.sender-page.light-theme .unified-transform-panel .transform-row input[type="number"],
.sender-page.light-theme .unified-transform-panel .unified-transform-btn,
.sender-page.light-theme .unified-transform-panel .reset-btn {
  background: #f4f4f5;
  border-color: #e4e4e7;
  color: #18181b;
}

.sender-page.light-theme .unified-transform-panel .transform-actions {
  border-top-color: #e4e4e7;
}


/* ============================================
   LIGHT THEME OVERRIDES
   ============================================ */
.sender-page.light-theme {
  background: radial-gradient(circle at 20% 20%, rgba(37, 99, 235, 0.08), transparent 35%),
              radial-gradient(circle at 80% 0%, rgba(37, 99, 235, 0.05), transparent 40%),
              var(--bg);
}

.sender-page.light-theme .floating-toolbar,
.sender-page.light-theme .floating-panel,
.sender-page.light-theme .stats-indicator,
.sender-page.light-theme .mini-map,
.sender-page.light-theme .mode-badge,
.sender-page.light-theme .drawing-tip {
  background: var(--toolbar-bg);
  border-color: var(--toolbar-border);
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.1), 0 0 0 1px var(--stroke);
}

.sender-page.light-theme .fp-header,
.sender-page.light-theme .mini-map-header,
.sender-page.light-theme .layers-toolbar {
  border-bottom-color: var(--stroke-solid);
}

.sender-page.light-theme .section-body,
.sender-page.light-theme .layers-footer {
  border-top-color: var(--stroke-solid);
}

.sender-page.light-theme .chip,
.sender-page.light-theme .section-header,
.sender-page.light-theme .layer-item {
  background: var(--secondary);
  border-color: var(--border);
  color: var(--foreground);
}

.sender-page.light-theme .chip:hover,
.sender-page.light-theme .section-header:hover {
  background: var(--accent-soft);
}

.sender-page.light-theme input[type="number"],
.sender-page.light-theme input[type="text"],
.sender-page.light-theme select {
  background: var(--background);
  border-color: var(--border);
  color: var(--foreground);
}

.sender-page.light-theme .toolbar-divider {
  background: var(--stroke-solid);
}

/* ============================================
   MINIMAP DRAG SUPPORT
   ============================================ */
.sender-page .mini-map-header {
  cursor: move;
  user-select: none;
  -webkit-user-select: none;
}

.sender-page .mini-map-header:active {
  cursor: grabbing;
}


/* ============================================
   KEYBOARD SHORTCUTS MODAL
   ============================================ */
.shortcuts-modal {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 10010;
  display: flex;
  align-items: center;
  justify-content: center;
}

.shortcuts-modal.hidden {
  display: none;
}

.shortcuts-modal .shortcuts-backdrop {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: rgba(0, 0, 0, 0.6);
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
}

.shortcuts-modal .shortcuts-content {
  position: relative;
  background: var(--surface-solid, #18181b);
  border: 1px solid var(--stroke-solid, #27272a);
  border-radius: 16px;
  width: 90%;
  max-width: 600px;
  max-height: 80vh;
  overflow: hidden;
  box-shadow: 0 24px 64px rgba(0, 0, 0, 0.5);
}

.shortcuts-modal .shortcuts-header {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 16px 20px;
  border-bottom: 1px solid var(--stroke-solid, #27272a);
  font-size: 16px;
  font-weight: 600;
  color: var(--text, #fafafa);
}

.shortcuts-modal .shortcuts-header .mi {
  font-size: 22px;
  color: var(--accent, #3b82f6);
}

.shortcuts-modal .shortcuts-header .close-btn {
  margin-left: auto;
  width: 32px;
  height: 32px;
  border: none;
  background: transparent;
  color: var(--muted, #71717a);
  cursor: pointer;
  border-radius: 6px;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background 0.15s, color 0.15s;
}

.shortcuts-modal .shortcuts-header .close-btn:hover {
  background: rgba(255, 255, 255, 0.1);
  color: var(--text, #fafafa);
}

.shortcuts-modal .shortcuts-body {
  padding: 20px;
  overflow-y: auto;
  max-height: calc(80vh - 70px);
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
  gap: 20px;
}

.shortcuts-modal .shortcuts-category h3 {
  font-size: 12px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.5px;
  color: var(--muted, #71717a);
  margin: 0 0 12px 0;
  padding-bottom: 8px;
  border-bottom: 1px solid var(--stroke, rgba(255, 255, 255, 0.08));
}

.shortcuts-modal .shortcuts-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.shortcuts-modal .shortcut-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 6px 0;
}

.shortcuts-modal .shortcut-keys {
  display: flex;
  align-items: center;
  gap: 4px;
  flex-shrink: 0;
}

.shortcuts-modal .shortcut-keys kbd {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 24px;
  height: 24px;
  padding: 0 8px;
  background: var(--card, #1f1f23);
  border: 1px solid var(--stroke-solid, #27272a);
  border-radius: 6px;
  font-family: inherit;
  font-size: 11px;
  font-weight: 500;
  color: var(--text, #fafafa);
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);
}

.shortcuts-modal .shortcut-desc {
  font-size: 13px;
  color: var(--muted-foreground, #71717a);
  text-align: right;
}

/* Light theme for shortcuts modal */
.sender-page.light-theme .shortcuts-modal .shortcuts-content {
  background: var(--surface-solid, #ffffff);
  border-color: var(--stroke-solid, #e5e5e5);
}

.sender-page.light-theme .shortcuts-modal .shortcut-keys kbd {
  background: var(--secondary, #f5f5f5);
  border-color: var(--border, #e5e5e5);
  color: var(--foreground, #171717);
}


/* ============================================
   Keyboard Shortcuts Floating Panel
   ============================================ */

.sender-page .shortcuts-panel {
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 320px;
  max-height: 80vh;
  z-index: 1100;
}

.sender-page .shortcuts-content {
  padding: 16px;
}

.sender-page .shortcut-group {
  margin-bottom: 16px;
}

.sender-page .shortcut-group:last-child {
  margin-bottom: 0;
}

.sender-page .shortcut-group h4 {
  font-size: 11px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.5px;
  color: var(--muted, #71717a);
  margin: 0 0 8px 0;
  padding-bottom: 6px;
  border-bottom: 1px solid var(--stroke, rgba(255, 255, 255, 0.08));
}

.sender-page .shortcut-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 6px 0;
  font-size: 13px;
  color: var(--text, #fafafa);
}

.sender-page .shortcut-item kbd {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 28px;
  height: 24px;
  padding: 0 8px;
  background: var(--card, #1f1f23);
  border: 1px solid var(--stroke-solid, #27272a);
  border-radius: 5px;
  font-family: -apple-system, BlinkMacSystemFont, 'SF Pro Text', sans-serif;
  font-size: 12px;
  font-weight: 500;
  color: var(--text, #fafafa);
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);
}

.sender-page .shortcut-item span {
  color: var(--muted, #a1a1aa);
}

/* Light theme */
.sender-page.light-theme .shortcut-group h4 {
  color: var(--muted, #71717a);
  border-color: var(--stroke, rgba(0, 0, 0, 0.08));
}

.sender-page.light-theme .shortcut-item kbd {
  background: var(--secondary, #f5f5f5);
  border-color: var(--border, #e5e5e5);
  color: var(--foreground, #171717);
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
}

.sender-page.light-theme .shortcut-item span {
  color: var(--muted-foreground, #525252);
}


/* ============================================
   V0 SYNC STYLES - Top Toolbar
   ============================================ */

/* Logo pill style (v0) */
.sender-page .logo-pill {
  display: flex;
  align-items: center;
  gap: 6px;
  background: var(--accent);
  border-radius: 12px;
  padding: 6px 10px;
  margin-right: 4px;
}
.sender-page .logo-pill .logo-text {
  font-size: 10px;
  font-weight: 700;
  color: var(--primary-foreground);
  letter-spacing: 0.04em;
}

/* More menu button */
.sender-page .more-group button {
  padding: 8px;
}
.sender-page .more-dots {
  font-size: 14px;
  letter-spacing: 2px;
  color: var(--muted-foreground);
}

/* Separate grid button (v0 style) */
.sender-page .grid-btn-separate {
  margin-left: 8px;
  width: 36px;
  height: 36px;
  border-radius: 8px;
  border: 1px solid transparent;
  background: transparent;
  color: var(--muted-foreground);
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: all 0.15s ease;
}
.sender-page .grid-btn-separate:hover {
  background: rgba(255, 255, 255, 0.08);
}
.sender-page .grid-btn-separate.active {
  color: var(--accent);
  background: var(--accent-soft);
}

/* ============================================
   V0 SYNC STYLES - Bottom Toolbar
   ============================================ */

/* Brush info section */
.sender-page .brush-info {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 12px;
}
.sender-page .brush-info-icon {
  color: var(--accent);
}
.sender-page .brush-info-name {
  color: var(--foreground);
  font-weight: 500;
}
.sender-page .brush-info-sep {
  color: var(--muted-foreground);
}
.sender-page .brush-info-geom {
  color: var(--muted-foreground);
}

/* Layer badge in bottom toolbar */
.sender-page .layer-badge {
  display: flex;
  align-items: center;
  gap: 6px;
  background: var(--accent-soft);
  border: 1px solid rgba(59, 130, 246, 0.2);
  border-radius: 12px;
  padding: 6px 10px;
}
.sender-page .layer-badge-dot {
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: var(--accent);
}
.sender-page .layer-badge-text {
  font-size: 12px;
  font-weight: 500;
  color: var(--accent);
  white-space: nowrap;
}

/* Zoom display (v0 style - text only) */
.sender-page .zoom-display {
  font-size: 12px;
  font-weight: 500;
  color: var(--foreground);
  min-width: 40px;
  text-align: center;
}

/* Stroke count in bottom toolbar */
.sender-page .stroke-count-group {
  display: flex;
  align-items: center;
  gap: 4px;
  margin-left: 8px;
  font-size: 12px;
  color: var(--muted-foreground);
}
.sender-page .stroke-count-icon {
  color: var(--muted-foreground);
}
.sender-page .stroke-count-text {
  white-space: nowrap;
}

/* ============================================
   V0 SYNC STYLES - View Cube Panel
   ============================================ */

.sender-page .view-cube-panel {
  position: fixed;
  bottom: 80px;
  right: 12px;
  display: flex;
  flex-direction: column;
  gap: 4px;
  background: var(--card);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border: 1px solid var(--border);
  border-radius: 12px;
  padding: 6px;
  z-index: 30;
}
.sender-page .view-cube-row {
  display: flex;
  gap: 4px;
}
.sender-page .view-cube-panel button {
  width: 28px;
  height: 28px;
  border-radius: 8px;
  border: none;
  background: var(--secondary);
  color: var(--muted-foreground);
  font-size: 10px;
  font-weight: 500;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: all 0.15s ease;
}
.sender-page .view-cube-panel button:hover {
  background: var(--secondary);
  color: var(--foreground);
}

/* ============================================
   V0 SYNC STYLES - Layers Panel
   ============================================ */

/* Header icon */
.sender-page .layers-panel .header-icon {
  color: var(--accent);
}

/* Layer count badge */
.sender-page .layer-count-badge {
  font-size: 10px;
  color: var(--muted-foreground);
  background: var(--secondary);
  padding: 2px 6px;
  border-radius: 10px;
  margin-left: auto;
  margin-right: 8px;
}

/* Search bar */
.sender-page .layers-search-bar {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 8px 12px;
  border-bottom: 1px solid var(--stroke);
}
.sender-page .layers-search-bar input {
  flex: 1;
  background: var(--secondary);
  border: none;
  border-radius: 12px;
  padding: 6px 10px;
  font-size: 12px;
  color: var(--foreground);
  outline: none;
}
.sender-page .layers-search-bar input::placeholder {
  color: var(--muted-foreground);
}
.sender-page .layers-search-bar svg {
  color: var(--muted-foreground);
  position: absolute;
  left: 20px;
}
.sender-page .layers-search-bar {
  position: relative;
}
.sender-page .layers-search-bar input {
  padding-left: 28px;
}

/* Layers toolbar - 3 groups */
.sender-page .layers-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 8px 12px;
  border-bottom: 1px solid var(--stroke);
  gap: 4px;
}
.sender-page .layers-actions-left,
.sender-page .layers-actions-center,
.sender-page .layers-actions-right {
  display: flex;
  gap: 2px;
}
.sender-page .layers-toolbar button {
  width: 28px;
  height: 28px;
  border: none;
  background: transparent;
  color: var(--muted-foreground);
  border-radius: 8px;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: all 0.15s ease;
}
.sender-page .layers-toolbar button:hover {
  background: var(--secondary);
  color: var(--foreground);
}
.sender-page .layers-toolbar button.danger:hover {
  color: var(--danger);
  background: rgba(239, 68, 68, 0.1);
}

/* Layers footer */
.sender-page .layers-footer {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 10px 12px;
  border-top: 1px solid var(--stroke);
  font-size: 12px;
  color: var(--muted-foreground);
  background: var(--surface);
}
.sender-page .layers-footer strong {
  color: var(--foreground);
  font-weight: 500;
}

/* Hide old layers search */
.sender-page .layers-search {
  display: none;
}
.sender-page .layers-actions {
  display: none;
}

/* ============================================
   V0 SYNC STYLES - Settings Panel
   ============================================ */

/* Accordion chevron on right */
.sender-page .fp-section .section-header .chevron {
  margin-left: auto;
  transition: transform 0.2s ease;
}
.sender-page .fp-section .section-header .chevron.collapsed {
  transform: rotate(-90deg);
}

/* Hide old stats indicator */
.sender-page .stats-indicator {
  display: none;
}
