:root{--bg: #F5F3EE;--bg-canvas: #E8E4DD;--toolbar-bg: rgba(245, 243, 238, .92);--surface: #FDFCFA;--surface-hover: #F5F3EE;--text: #2D2926;--text-secondary: #7D756C;--border: #DDD9D2;--control-border: #A8A29A;--accent: #F59E0B;--accent-hover: #D97706;--btn-bg: #FDFCFA;--btn-hover: #F5F3EE;--modal-overlay: rgba(0, 0, 0, .4);--fs-xs: .6875rem;--fs-sm: .75rem;--fs-base: .875rem;--fs-md: 1rem;--fs-lg: 1.125rem;--fs-xl: 1.25rem;--fs-2xl: 1.5rem;--sp-1: .25rem;--sp-2: .5rem;--sp-3: .75rem;--sp-4: 1rem;--sp-5: 1.5rem;--sp-6: 2rem;--r-xs: .25rem;--r-sm: .5rem;--r-md: .75rem;--r-full: 999px;--dur-fast: .12s;--dur-base: .2s;--ease: cubic-bezier(.4, 0, .2, 1);--elev-1: 0 1px 3px rgba(0, 0, 0, .1);--elev-2: 0 4px 12px rgba(0, 0, 0, .14);--elev-3: 0 8px 24px rgba(0, 0, 0, .18);--focus-ring: var(--text);--danger: #EF4444;--danger-soft: rgba(239, 68, 68, .1);--danger-border: rgba(239, 68, 68, .3);--ok-fg: #065F46;--ok-bg: #ECFDF5;--warn-fg: #92400E;--warn-bg: #FFFBEB;--danger-fg: #991B1B;--danger-bg: #FEF2F2;--info-fg: #075985;--info-bg: #F0F9FF;--warning: var(--warn-fg);--meter: var(--text-secondary)}:root[data-theme=dark]{--bg: #0C0A09;--bg-canvas: #1C1917;--toolbar-bg: rgba(28, 25, 23, .95);--surface: #292524;--surface-hover: #44403C;--control-border: #78716C;--text: #FAFAF9;--text-secondary: #A8A29E;--border: #44403C;--accent: #F59E0B;--accent-hover: #FBBF24;--btn-bg: #292524;--btn-hover: #44403C;--modal-overlay: rgba(0, 0, 0, .7);--elev-1: 0 1px 3px rgba(0, 0, 0, .45);--elev-2: 0 4px 12px rgba(0, 0, 0, .55);--elev-3: 0 8px 24px rgba(0, 0, 0, .65);--ok-fg: #6EE7B7;--ok-bg: rgba(16, 185, 129, .14);--warn-fg: #FCD34D;--warn-bg: rgba(245, 158, 11, .14);--danger-fg: #FCA5A5;--danger-bg: rgba(239, 68, 68, .14);--info-fg: #7DD3FC;--info-bg: rgba(14, 165, 233, .14)}@media(prefers-color-scheme:dark){:root:not([data-theme]){--bg: #0C0A09;--bg-canvas: #1C1917;--toolbar-bg: rgba(28, 25, 23, .95);--surface: #292524;--surface-hover: #44403C;--text: #FAFAF9;--text-secondary: #A8A29E;--border: #44403C;--accent: #F59E0B;--accent-hover: #FBBF24;--btn-bg: #292524;--btn-hover: #44403C;--modal-overlay: rgba(0, 0, 0, .7);--elev-1: 0 1px 3px rgba(0, 0, 0, .45);--elev-2: 0 4px 12px rgba(0, 0, 0, .55);--elev-3: 0 8px 24px rgba(0, 0, 0, .65);--ok-fg: #6EE7B7;--ok-bg: rgba(16, 185, 129, .14);--warn-fg: #FCD34D;--warn-bg: rgba(245, 158, 11, .14);--danger-fg: #FCA5A5;--danger-bg: rgba(239, 68, 68, .14);--info-fg: #7DD3FC;--info-bg: rgba(14, 165, 233, .14)}}*{box-sizing:border-box;margin:0;padding:0;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}body{font-family:Arial,Helvetica,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;background:var(--bg);color:var(--text);height:100vh;height:100dvh;overflow:hidden;touch-action:none;transition:background-color var(--dur-base),color var(--dur-base)}.app{display:flex;flex-direction:column;height:100%}.top-bar{position:fixed;top:0;left:0;right:0;height:calc(3.5rem + env(safe-area-inset-top));display:flex;align-items:center;justify-content:space-between;padding:var(--sp-4) var(--sp-5) 0;z-index:80;pointer-events:none}.top-bar button{pointer-events:auto}.top-btn{width:2.75rem;height:2.75rem;border:none;border-radius:50%;background:var(--toolbar-bg);backdrop-filter:blur(.75rem);-webkit-backdrop-filter:blur(.75rem);color:var(--text);font-size:var(--fs-xl);cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:var(--elev-1);transition:all var(--dur-base)}@media(hover:hover){.top-btn:hover{background:var(--surface-hover)}}.top-btn:active{transform:scale(.95)}.top-btn:disabled{opacity:.3;pointer-events:none;filter:grayscale(100%)}.close-btn{position:relative;width:2.75rem;height:2.75rem;font-size:var(--fs-md);background:transparent;box-shadow:none}@media(hover:hover){.close-btn:hover{background:var(--btn-hover)}}.lock-btn{position:fixed;top:calc(1rem + env(safe-area-inset-top));right:1.5rem;width:2.75rem;height:2.75rem;border:none;border-radius:50%;background:var(--toolbar-bg);backdrop-filter:blur(.75rem);-webkit-backdrop-filter:blur(.75rem);color:var(--text);font-size:var(--fs-xl);cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:var(--elev-2);transition:opacity var(--dur-base),background var(--dur-base);z-index:85}@media(hover:hover){.lock-btn:hover{background:var(--surface-hover)}}.lock-btn:active{transform:scale(.95)}.lock-btn .lock-icon.unlocked,.lock-btn.unlocked .lock-icon.locked{display:none}.lock-btn.unlocked .lock-icon.unlocked{display:block}:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}.zoom-hint{position:fixed;left:1.5rem;right:1.5rem;width:fit-content;max-width:100%;margin-inline:auto;display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);border:1px solid var(--border);border-radius:var(--r-full);background:var(--surface);color:var(--text-secondary);font-family:inherit;font-size:var(--fs-sm);cursor:pointer;box-shadow:var(--elev-1);opacity:0;pointer-events:none;transition:opacity var(--dur-base);z-index:70}.zoom-hint.active{opacity:1;pointer-events:auto}body:has(.zoom-hint.active) .mode-indicator{opacity:0;pointer-events:none}.zoom-hint svg{flex:none}.new-problem-btn{position:fixed;bottom:calc(var(--chrome-band) + var(--toggle-lift));right:1.5rem;width:2.75rem;height:2.75rem;border:none;border-radius:50%;background:var(--accent);color:#1c1917;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:var(--elev-2);transition:opacity var(--dur-base),background var(--dur-base);z-index:85}@media(hover:hover){.new-problem-btn:hover:not(:disabled){background:var(--accent-hover)}}.new-problem-btn:active{transform:scale(.95)}.new-problem-btn:disabled{opacity:.3;pointer-events:none}body.editor-locked .float-btn-container,body.editor-locked #newProblemBtn,body.editor-locked #markerHoldsToggle,body.editor-locked .mode-indicator{opacity:0;pointer-events:none;transition:opacity var(--dur-base) ease-out}body.editor-locked .bottom-bar .tools-row>:not(.action-btn),body.editor-locked .bottom-bar .sub-options{opacity:.35;pointer-events:none;transition:opacity var(--dur-base) ease-out}body:not(.editor-locked) .float-btn-container,body:not(.editor-locked) #newProblemBtn,body:not(.editor-locked) #markerHoldsToggle,body:not(.editor-locked) .mode-indicator,body:not(.editor-locked) .bottom-bar .tools-row>:not(.action-btn),body:not(.editor-locked) .bottom-bar .sub-options{transition:opacity var(--dur-base) ease-in}.bottom-bar{position:fixed;bottom:0;left:0;right:0;background:var(--toolbar-bg);backdrop-filter:blur(.75rem);-webkit-backdrop-filter:blur(.75rem);border-top:.0625rem solid var(--border);padding-bottom:env(safe-area-inset-bottom);z-index:80;transition:all var(--dur-base);touch-action:manipulation}.sub-options{position:absolute;bottom:100%;left:0;right:0;display:flex;justify-content:center;align-items:center;gap:var(--sp-2);height:4rem;padding:var(--sp-2) var(--sp-4);background:var(--surface);border-top:.0625rem solid var(--border);box-shadow:0 -2px 8px #0000000f;pointer-events:none;opacity:0;visibility:hidden}.sub-options.active{pointer-events:auto;opacity:1;visibility:visible}.sub-option-btn{position:relative;width:2.5rem;height:2.5rem;min-width:2.5rem;padding:0;border:1px solid var(--control-border);background:var(--bg);color:var(--text);border-radius:50%;font-size:var(--fs-base);font-weight:600;cursor:pointer;transition:all var(--dur-base);display:flex;align-items:center;justify-content:center}@media(hover:hover){.sub-option-btn:hover{background:var(--bg-canvas)}}.sub-option-btn.active{border:.125rem solid var(--accent);background:var(--accent);color:#1c1917}.sub-option-btn:disabled{opacity:.3;pointer-events:none;cursor:not-allowed}.sub-option-btn:after,.icon-btn:after{content:"";position:absolute;inset:-.1875rem;border-radius:inherit}.sub-divider{width:1px;height:1.25rem;background:var(--border);align-self:center}.mode-indicator{position:fixed;left:1.5rem;bottom:calc(var(--chrome-band) + var(--toggle-lift));background:var(--toolbar-bg);backdrop-filter:blur(.75rem);-webkit-backdrop-filter:blur(.75rem);border:1px solid var(--border);color:var(--text);padding:var(--sp-2) var(--sp-3);border-radius:var(--r-md);font-size:var(--fs-xs);font-weight:500;text-transform:uppercase;letter-spacing:.05em;pointer-events:none;display:none;z-index:85;transition:opacity var(--dur-base)}.mode-indicator.active{display:block}body{--chrome-band: calc(5.5rem + env(safe-area-inset-bottom)) ;--toggle-lift: 0rem}body:has(.sub-options.active){--chrome-band: calc(10rem + env(safe-area-inset-bottom)) }body.has-marker-holds-toggle{--toggle-lift: 3.25rem}.wall-markers-toggle{position:fixed;left:1.5rem;right:1.5rem;width:fit-content;max-width:100%;margin-inline:auto;bottom:var(--chrome-band);display:flex;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);padding:var(--sp-1);z-index:85;box-shadow:var(--elev-1)}.wall-markers-toggle .wmt-option{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);border:none;border-radius:var(--r-sm);background:transparent;color:var(--text-secondary);font-size:var(--fs-xs);font-weight:600;text-transform:uppercase;letter-spacing:.03em;cursor:pointer;transition:all var(--dur-fast) ease;white-space:nowrap}.wall-markers-toggle .wmt-option svg{opacity:.6;transition:opacity var(--dur-fast) ease}.wall-markers-toggle .wmt-option:hover:not(.active){color:var(--text)}.wall-markers-toggle .wmt-option:hover:not(.active) svg{opacity:.8}.wall-markers-toggle .wmt-option.active{background:var(--accent);color:#1c1917;box-shadow:var(--elev-1)}.wall-markers-toggle .wmt-option.active svg{opacity:1}.wall-markers-toggle[data-disabled=true]{opacity:.4}.wall-markers-toggle[data-disabled=true] .wmt-option{pointer-events:none;cursor:not-allowed}.wall-markers-toggle.single-mode{display:none}.sub-option-btn.delete-btn{color:var(--danger);border-color:var(--danger-border)}@media(hover:hover){.sub-option-btn.delete-btn:hover{background:var(--danger-soft)}}.tools-row{display:flex;justify-content:space-around;align-items:center;padding:var(--sp-3) var(--sp-2)}.tool-btn{width:3rem;height:3rem;border:none;border-radius:50%;background:transparent;color:var(--text-secondary);font-size:var(--fs-xs);font-weight:500;cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--sp-1);transition:all var(--dur-base);position:relative}.tool-btn:hover,.tool-btn.active{background:var(--btn-hover);color:var(--text)}.tool-btn .icon{width:1.25rem;height:1.25rem;border-radius:50%;border:.1875rem solid}.tool-btn.start .icon{border-color:#22c55e}.tool-btn.foot .icon{border-color:#eab308}.tool-btn.hand .icon{border-color:#3b82f6}.tool-btn.top .icon{border-color:#ef4444}.tool-btn.hold .icon{border-color:#fffc;background:transparent;box-shadow:0 0 0 1px #00000047}.tool-btn.start.active{background:#22c55e26}.tool-btn.foot.active{background:#eab30826}.tool-btn.hand.active{background:#3b82f626}.tool-btn.top.active{background:#ef444426}.tool-btn.hold.active{background:#ffffff1a}body[data-editor-mode=navigate] .tool-btn:hover,body[data-editor-mode=navigate] .tool-btn:active{background:transparent}.tool-btn:disabled,.action-btn:disabled{opacity:.3;pointer-events:none;filter:grayscale(100%)}.action-btn{width:3rem;height:3rem;border:none;border-radius:50%;color:var(--text-secondary);font-size:var(--fs-xs);font-weight:500;cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--sp-1);background:transparent;transition:all var(--dur-base)}@media(hover:hover){.action-btn:hover{background:var(--btn-hover)}body[data-editor-mode=navigate] .action-btn:hover{background:transparent}}.action-btn .icon-char{width:1.25rem;height:1.25rem;border:.125rem solid var(--text-secondary);border-radius:50%;font-size:var(--fs-sm);font-weight:700;line-height:1.25rem;text-align:center}.action-btn:active{transform:scale(.95)}.action-btn.done{color:var(--accent)}.action-btn.done .icon-char{border-color:var(--accent);color:var(--accent)}.divider{width:.0625rem;height:1.5rem;background:var(--border)}.float-btn-container{position:fixed;top:calc(4.5rem + env(safe-area-inset-top));right:1.5rem;display:flex;flex-direction:column;gap:var(--sp-3);z-index:75}.float-btn{width:2.75rem;height:2.75rem;border:none;border-radius:50%;background:var(--toolbar-bg);backdrop-filter:blur(.75rem);-webkit-backdrop-filter:blur(.75rem);color:var(--text);font-size:var(--fs-xl);cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:var(--elev-2);transition:opacity var(--dur-base),background var(--dur-base)}.float-btn:disabled{opacity:.3;pointer-events:none;filter:grayscale(100%)}.float-btn.visible{visibility:visible;opacity:1}@media(hover:hover){.float-btn:hover{background:var(--surface-hover)}}.float-btn:active{transform:scale(.95)}.canvas-area{flex:1;width:100%;display:flex;align-items:center;justify-content:center;background:var(--bg-canvas);position:relative;overflow:hidden;transition:background-color var(--dur-base)}.canvas-area:after{content:"";position:absolute;inset:0;pointer-events:none;opacity:0;transition:opacity var(--dur-base) ease-out;box-shadow:inset 0 0 60px 30px var(--bg)}.canvas-area.zoomed:after{opacity:1}.placeholder{text-align:center;color:var(--text-secondary);padding:var(--sp-5);animation:fadeIn .4s ease-out}.app-logo{width:6rem;height:6rem;margin-bottom:var(--sp-4);border-radius:var(--r-md)}@keyframes fadeIn{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.placeholder-btn{display:block;width:100%;max-width:16rem;margin:var(--sp-3) auto 0;padding:var(--sp-3) var(--sp-5);background:var(--accent);color:#1c1917;border:1px solid transparent;border-radius:var(--r-sm);font-size:var(--fs-md);font-weight:600;cursor:pointer;transition:background-color var(--dur-base),color var(--dur-base),border-color var(--dur-base)}.placeholder-btn.secondary{background:transparent;color:var(--text);border:1px solid var(--border)}@media(hover:hover){.placeholder-btn:hover{background:var(--accent-hover)}.placeholder-btn.secondary:hover{background:var(--btn-hover)}}.placeholder-btn:disabled{opacity:.3;pointer-events:none;cursor:not-allowed}.library-fullscreen{position:fixed;inset:0;background:var(--bg);z-index:200;display:none;flex-direction:column}.library-fullscreen.active{display:flex}.library-header{display:flex;align-items:center;justify-content:space-between;padding:var(--sp-4) var(--sp-5);border-bottom:1px solid var(--border);background:var(--surface)}.library-header h2{font-size:var(--fs-xl);font-weight:600;color:var(--text);margin:0}.library-back-btn{position:relative;width:2.5rem;height:2.5rem;border:none;border-radius:50%;background:var(--btn-bg);color:var(--text);font-size:var(--fs-xl);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background var(--dur-base)}@media(hover:hover){.library-back-btn:hover{background:var(--btn-hover)}}.library-back-btn:after{content:"";position:absolute;inset:-.125rem;border-radius:inherit}.library-filter-toggle{width:2.5rem;height:2.5rem;border:none;border-radius:50%;background:var(--btn-bg);color:var(--text);font-size:var(--fs-md);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--dur-base);margin-left:auto;margin-right:var(--sp-2)}@media(hover:hover){.library-filter-toggle:hover{background:var(--btn-hover)}}.library-filter-toggle span{transition:transform var(--dur-base);display:inline-block}.library-filter-toggle-labeled{padding:var(--sp-2) var(--sp-3);border:none;border-radius:var(--r-sm);background:var(--btn-bg);color:var(--text);font-size:var(--fs-base);font-weight:500;cursor:pointer;display:flex;align-items:center;transition:all var(--dur-base)}@media(hover:hover){.library-filter-toggle-labeled:hover{background:var(--btn-hover)}}.library-filter-toggle-labeled span{transition:transform var(--dur-base);display:inline-block}.library-section{margin-bottom:var(--sp-6)}.library-section:last-child{margin-bottom:0}.library-section-header{font-size:var(--fs-base);font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em;margin-bottom:var(--sp-4);padding:0 var(--sp-1)}.library-separator{height:1px;background:var(--border);margin:var(--sp-6) 0}.segment-control{display:flex;margin:var(--sp-4) var(--sp-5) 0;padding:var(--sp-1);background:var(--bg-canvas, var(--surface));border-radius:var(--r-sm)}.segment{flex:1;min-height:2.75rem;padding:var(--sp-2) var(--sp-3);border:none;border-radius:var(--r-sm);background:transparent;color:var(--text-secondary);font:inherit;font-size:var(--fs-base);font-weight:500;cursor:pointer;transition:all var(--dur-base)}.segment.active{background:var(--btn-bg);color:var(--text);box-shadow:var(--elev-1)}.segment-count{font-size:var(--fs-sm);opacity:.7}.segment-count:empty{display:none}.search-bar{padding:var(--sp-3) var(--sp-5)}.search-wrapper{position:relative}.search-icon{position:absolute;left:.875rem;top:50%;transform:translateY(-50%);color:var(--text-secondary);font-size:var(--fs-base);pointer-events:none}.search-input{width:100%;min-height:2.75rem;padding:var(--sp-3) var(--sp-4);padding-left:2.5rem;border:1px solid var(--border);border-radius:var(--r-sm);background:var(--bg);color:var(--text);font:inherit;font-size:var(--fs-base);box-shadow:inset 0 1px 2px #0000000d}.search-input::placeholder{color:var(--text-secondary)}.search-input:focus{border-color:var(--accent);box-shadow:inset 0 1px 2px #0000000d,0 0 0 2px #f59e0b26}.filter-bar{display:flex;align-items:center;gap:var(--sp-2);padding:0 var(--sp-5) var(--sp-3);overflow-x:auto;scrollbar-width:none}.filter-bar::-webkit-scrollbar{display:none}.filter-chip{flex-shrink:0;min-height:2.75rem;padding:var(--sp-2) var(--sp-4);border:1px solid var(--border);border-radius:var(--r-full);background:transparent;color:var(--text-secondary);font:inherit;font-size:var(--fs-sm);font-weight:500;cursor:pointer;transition:all var(--dur-fast)}.filter-chip:active{transform:scale(.96)}.filter-chip.active{border-color:var(--accent);background:var(--accent-muted, rgba(245, 158, 11, .12));color:var(--accent)}.grade-range{display:flex;align-items:center;gap:var(--sp-2);margin-left:auto;flex-shrink:0}.grade-select{min-height:2.75rem;padding:var(--sp-2) var(--sp-2);border:1px solid var(--border);border-radius:var(--r-sm);background:var(--bg);color:var(--text);font:inherit;font-size:var(--fs-sm);font-weight:500;cursor:pointer;min-width:3.5rem;box-shadow:inset 0 1px 2px #0000000d}.grade-select:focus{border-color:var(--accent);box-shadow:inset 0 1px 2px #0000000d,0 0 0 2px #f59e0b26}.grade-label{font-size:var(--fs-xs);color:var(--text-secondary)}.library-content{flex:1;overflow-y:auto;padding:var(--sp-2) var(--sp-5) var(--sp-6);-webkit-overflow-scrolling:touch}.section-label{font-size:var(--fs-xs);font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--text-secondary);margin:var(--sp-4) 0 var(--sp-3)}.library-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--sp-4)}@media(min-width:480px){.library-grid{grid-template-columns:repeat(3,1fr)}}@media(min-width:768px){.library-grid{grid-template-columns:repeat(4,1fr)}}.library-card{position:relative;border-radius:var(--r-sm);overflow:hidden;cursor:pointer;background:var(--surface);transition:transform var(--dur-base),box-shadow var(--dur-base)}.library-card:active{transform:scale(.97)}@media(hover:hover){.library-card:hover{transform:translateY(-2px);box-shadow:var(--elev-3)}}.library-card-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.card-thumb:after{content:"";position:absolute;inset:0;background:linear-gradient(to top,rgba(0,0,0,.4) 0%,rgba(0,0,0,.1) 40%,transparent 70%);pointer-events:none}.library-card-body{position:absolute;bottom:0;left:0;right:0;padding:var(--sp-3);z-index:1}.library-card-grade{font-size:var(--fs-xl);font-weight:700;color:var(--accent);line-height:1;letter-spacing:-.02em}.library-card-name{font-size:var(--fs-base);font-weight:600;color:#fff;margin-top:var(--sp-1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.library-card-meta{display:flex;align-items:center;gap:var(--sp-2);margin-top:var(--sp-2);font-size:var(--fs-xs);color:#ffffffb3}.library-card-rules{position:absolute;top:.5rem;left:.5rem;display:flex;flex-direction:column;gap:var(--sp-1);z-index:2}.rule-icon{width:1.75rem;height:1.75rem;display:flex;align-items:center;justify-content:center;border-radius:var(--r-sm);padding:var(--sp-1)}.rule-icon svg{width:100%;height:100%;fill:none;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round}.rule-icon.feet-follow-hands,.rule-icon-inline.feet-follow-hands{background:#eab30840;border:1px solid rgba(234,179,8,.5)}.rule-icon.feet-follow-hands svg,.rule-icon-inline.feet-follow-hands svg{stroke:#eab308}.rule-icon.campus,.rule-icon-inline.campus{background:#3b82f640;border:1px solid rgba(59,130,246,.5)}.rule-icon.campus svg,.rule-icon-inline.campus svg{stroke:#3b82f6}.rule-icon.no-match,.rule-icon-inline.no-match{background:#2d292640;border:1px solid rgba(45,41,38,.5)}.rule-icon.no-match svg,.rule-icon-inline.no-match svg{stroke:#2d2926}.rule-icon-inline{display:inline-flex;align-items:center;justify-content:center;width:1.25rem;height:1.25rem;border-radius:var(--r-xs);margin-right:var(--sp-2);vertical-align:middle}.rule-icon-inline svg{width:.875rem;height:.875rem;fill:none;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round}.library-card-delete{position:absolute;top:.5rem;right:.5rem;width:1.75rem;height:1.75rem;border:none;border-radius:50%;background:#00000080;color:#fff;font-size:var(--fs-base);cursor:pointer;display:grid;place-items:center;z-index:2;opacity:0;transition:opacity var(--dur-fast),background var(--dur-fast)}@media(hover:hover){.library-card:hover .library-card-delete{opacity:1}.library-card-delete:hover{background:#ef4444cc}}@media(hover:none){.library-card-delete{opacity:1}}.card-thumb{position:relative;width:100%;aspect-ratio:3/4;background-size:cover;background-position:center;background-color:var(--surface)}.card-info{padding:var(--sp-2);background:var(--surface)}.card-title{font-size:var(--fs-base);font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.card-subtitle{font-size:var(--fs-xs);color:var(--text-secondary);margin-top:var(--sp-1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.card-rules{position:absolute;bottom:.5rem;left:.5rem;display:flex;gap:var(--sp-1);z-index:2}.favorite-btn{position:absolute;top:.5rem;right:.5rem;width:1.75rem;height:1.75rem;border:none;border-radius:50%;background:#00000080;color:var(--text-secondary);font-size:var(--fs-md);line-height:1;cursor:pointer;display:grid;place-items:center;z-index:2;transition:color var(--dur-fast),background var(--dur-fast)}.favorite-btn.active{color:#f59e0b}@media(hover:hover){.favorite-btn:hover{background:#000000b3}}.library-context-menu{position:fixed;inset:0;background:#00000080;backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);display:flex;flex-direction:column;justify-content:flex-end;padding:var(--sp-4);z-index:1100;opacity:0;pointer-events:none;transition:opacity var(--dur-base)}.library-context-menu.active{opacity:1;pointer-events:auto}.context-menu-content{background:var(--surface);border-radius:var(--r-md);overflow:hidden;margin-bottom:var(--sp-2)}.context-menu-item{display:flex;align-items:center;gap:var(--sp-3);width:100%;padding:var(--sp-4) var(--sp-5);border:none;background:none;color:var(--text);font-size:var(--fs-md);font-family:inherit;text-align:left;cursor:pointer;transition:background var(--dur-fast)}.context-menu-item:not(:last-child){border-bottom:1px solid var(--border)}.context-menu-item:active{background:var(--hover)}.context-menu-item.danger{color:var(--danger)}.context-menu-icon{width:1.5rem;text-align:center;font-size:var(--fs-lg)}.context-menu-cancel{display:block;width:100%;padding:var(--sp-4);border:none;border-radius:var(--r-md);background:var(--surface);color:var(--accent);font-size:var(--fs-md);font-weight:600;font-family:inherit;cursor:pointer;transition:background var(--dur-fast)}.context-menu-cancel:active{background:var(--hover)}.library-card.wall .library-card-name{font-size:var(--fs-md);margin:0}.library-card.wall .library-card-meta{margin-top:var(--sp-1)}.problem-count{display:inline-flex;padding:var(--sp-1) var(--sp-2);background:var(--accent-muted, rgba(245, 158, 11, .12));color:var(--accent);font-size:var(--fs-xs);font-weight:600;border-radius:var(--r-full)}.library-card.add{border:2px dashed var(--border);background:transparent;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--sp-1)}.library-card.add:after{display:none}.library-card .add-icon{font-size:var(--fs-2xl);color:var(--text-secondary)}.library-card .add-text{font-size:var(--fs-sm);color:var(--text-secondary)}.library-empty{text-align:center;padding:4rem var(--sp-6)}.library-empty-icon{font-size:3rem;margin-bottom:var(--sp-4);opacity:.25}.library-empty h3{font-size:var(--fs-md);font-weight:600;margin-bottom:var(--sp-1)}.library-empty p{font-size:var(--fs-base);color:var(--text-secondary)}.library-footer{display:flex;align-items:center;justify-content:space-between;padding:var(--sp-3) var(--sp-5);border-top:1px solid var(--border);background:var(--surface);font-size:var(--fs-xs);color:var(--text-secondary)}.storage{display:flex;align-items:center;gap:var(--sp-2)}.storage-bar{width:4rem;height:.25rem;background:var(--border);border-radius:var(--r-xs);overflow:hidden}.storage-fill{height:100%;background:var(--meter);border-radius:var(--r-xs)}.storage-warning{display:inline-flex;align-items:center;gap:var(--sp-1);color:var(--warning, #f59e0b);font-size:var(--fs-sm)}.storage-warning svg{flex-shrink:0}[data-tab]{display:none}[data-tab].active{display:block;animation:tabFadeIn .2s ease-out}[data-tab=walls]{padding-top:1rem}@keyframes tabFadeIn{0%{opacity:0}to{opacity:1}}@keyframes cardFadeUp{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.library-card{animation:cardFadeUp .35s ease-out backwards}.library-card:nth-child(1){animation-delay:.03s}.library-card:nth-child(2){animation-delay:.06s}.library-card:nth-child(3){animation-delay:.09s}.library-card:nth-child(4){animation-delay:.12s}.library-card:nth-child(5){animation-delay:.15s}.library-card:nth-child(6){animation-delay:.18s}.canvas-wrapper{display:flex;align-items:center;justify-content:center;transform-origin:center center;transition:transform var(--dur-fast) ease-out}canvas{max-width:100%;max-height:100%;touch-action:none;border-radius:var(--r-xs)}.confirm-dialog{position:fixed;inset:0;background:var(--modal-overlay);display:none;align-items:center;justify-content:center;z-index:500}.confirm-dialog.active{display:flex}.confirm-content{background:var(--surface);border:.0625rem solid var(--border);border-radius:var(--r-md);padding:var(--sp-5);width:calc(100% - 3rem);max-width:20rem;text-align:center}.confirm-content h3{font-size:var(--fs-lg);margin-bottom:var(--sp-2);color:var(--text)}.confirm-content p{font-size:var(--fs-base);color:var(--text-secondary);margin-bottom:var(--sp-5)}.confirm-buttons{display:flex;flex-direction:column;gap:var(--sp-3)}.confirm-btn{width:100%;padding:var(--sp-4);border:.0625rem solid var(--border);border-radius:var(--r-md);font-size:var(--fs-md);font-weight:600;cursor:pointer;transition:all var(--dur-base)}.confirm-btn.cancel{background:var(--btn-bg);color:var(--text)}@media(hover:hover){.confirm-btn.cancel:hover{background:var(--btn-hover)}}.confirm-btn.primary{background:var(--accent);color:#1c1917;border-color:var(--accent)}@media(hover:hover){.confirm-btn.primary:hover{background:var(--accent-hover);border-color:var(--accent-hover)}}.confirm-btn.danger{background:transparent;color:var(--danger);border-color:var(--border)}@media(hover:hover){.confirm-btn.danger:hover{background:var(--danger-soft)}}.save-dialog-overlay{position:fixed;inset:0;background:var(--modal-overlay);display:none;align-items:flex-end;justify-content:center;z-index:200}.save-dialog-overlay.active{display:flex}.save-dialog{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md) var(--r-md) 0 0;padding:var(--sp-5);width:100%;max-width:28rem;animation:slideUp .3s ease-out}@keyframes slideUp{0%{transform:translateY(100%);opacity:0}to{transform:translateY(0);opacity:1}}.save-dialog-handle{width:2.5rem;height:.25rem;background:var(--border);border-radius:var(--r-xs);margin:0 auto var(--sp-5)}.save-dialog-header{margin-bottom:var(--sp-4)}.save-dialog-title{font-size:var(--fs-lg);font-weight:600;letter-spacing:-.02em;color:var(--text)}.save-dialog-note{font-size:var(--fs-base);color:var(--text-secondary);margin-top:var(--sp-1)}.save-dialog-actions{display:flex;flex-direction:column;gap:var(--sp-2)}.save-btn-primary{width:100%;min-height:2.75rem;padding:var(--sp-3) var(--sp-4);font-size:var(--fs-base);font-weight:600;font-family:inherit;color:#1c1917;background:var(--accent);border:none;border-radius:var(--r-sm);cursor:pointer;transition:background var(--dur-base)}@media(hover:hover){.save-btn-primary:hover{background:var(--accent-hover)}}.save-btn-secondary{width:100%;min-height:2.75rem;padding:var(--sp-3) var(--sp-4);font-size:var(--fs-base);font-weight:600;font-family:inherit;color:var(--text);background:transparent;border:1px solid var(--border);border-radius:var(--r-sm);cursor:pointer;transition:background var(--dur-base)}@media(hover:hover){.save-btn-secondary:hover{background:var(--btn-hover)}}.save-btn-text{width:100%;min-height:2.75rem;padding:var(--sp-2);font-size:var(--fs-base);font-family:inherit;color:var(--text-secondary);background:transparent;border:none;cursor:pointer;transition:color var(--dur-base)}@media(hover:hover){.save-btn-text:hover{color:var(--text)}}.propagate-preview{background:var(--bg);border:1px solid var(--border);border-radius:var(--r-sm);padding:var(--sp-4);margin-bottom:var(--sp-4)}.propagate-change{display:flex;align-items:center;gap:var(--sp-3);font-size:var(--fs-base)}.propagate-old{color:var(--text-secondary);text-decoration:line-through}.propagate-arrow{color:var(--accent)}.propagate-new{font-weight:500;color:var(--text)}.propagate-count{display:flex;align-items:center;gap:var(--sp-2);margin-top:var(--sp-3);padding-top:var(--sp-3);border-top:1px solid var(--border);font-size:var(--fs-base);color:var(--text-secondary)}.propagate-count-badge{display:inline-flex;align-items:center;justify-content:center;min-width:1.25rem;height:1.25rem;padding:0 var(--sp-2);background:#f59e0b26;color:var(--accent);font-weight:600;font-size:var(--fs-sm);border-radius:var(--r-md)}.import-option-group{padding:var(--sp-4) var(--sp-4);border-top:1px solid var(--border)}.import-option-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--sp-2)}.import-option-label{font-size:var(--fs-base);font-weight:500;color:var(--text)}.import-option-match{font-size:var(--fs-sm);color:var(--text-secondary)}.import-segment-control{display:flex;background:var(--hover);border-radius:var(--r-sm);padding:var(--sp-1)}.import-segment{flex:1;display:flex;align-items:center;justify-content:center;padding:var(--sp-2) var(--sp-2);border:none;border-radius:var(--r-sm);background:transparent;color:var(--text-secondary);font-size:var(--fs-base);font-weight:500;font-family:inherit;cursor:pointer;transition:all var(--dur-fast) ease;white-space:nowrap}.import-segment:hover:not(.active){color:var(--text)}.import-segment.active{background:var(--accent);color:#1c1917;box-shadow:var(--elev-1)}.import-segment:disabled{opacity:.4;cursor:not-allowed}.segment-control,.import-segment-control,.grade-type-selector{display:flex;gap:0;padding:var(--sp-1);background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md)}.segment,.import-segment,.grade-type-option{flex:1;display:flex;align-items:center;justify-content:center;gap:var(--sp-2);min-height:2.75rem;padding:var(--sp-2) var(--sp-3);border:none;border-radius:var(--r-sm);background:transparent;color:var(--text-secondary);font:inherit;font-size:var(--fs-base);font-weight:500;cursor:pointer;transition:all var(--dur-fast) ease;white-space:nowrap}.segment.active,.import-segment.active,.grade-type-option:has(input:checked),.wall-markers-toggle .wmt-option.active{background:var(--accent);color:#1c1917;font-weight:600;box-shadow:var(--elev-1)}.segment.active .segment-count,.grade-type-option:has(input:checked) label{color:inherit}.grade-type-option:has(input:focus-visible){outline:2px solid var(--focus-ring);outline-offset:1px}.grade-type-option input[type=radio]{flex-shrink:0;width:1.125rem;height:1.125rem;margin:0;cursor:pointer;accent-color:var(--accent)}.grade-type-option label{font-size:var(--fs-base);font-weight:inherit;color:inherit;cursor:pointer}.segment-control,.import-segment-control{width:100%}#unifiedImportSubmit:disabled{opacity:.4;cursor:not-allowed}.wall-name-prompt{position:fixed;top:4rem;left:.75rem;right:.75rem;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);padding:var(--sp-4);box-shadow:var(--elev-2);z-index:100;animation:fadeInSlideDown .3s ease-out}@keyframes fadeInSlideDown{0%{opacity:0;transform:translateY(-.5rem)}to{opacity:1;transform:translateY(0)}}.wall-name-prompt-header{display:flex;align-items:center;gap:var(--sp-3);margin-bottom:var(--sp-3)}.wall-name-prompt-icon{width:2rem;height:2rem;border-radius:var(--r-sm);background:#f59e0b26;color:var(--accent);display:flex;align-items:center;justify-content:center;flex-shrink:0}.wall-name-prompt-icon svg{width:1rem;height:1rem}.wall-name-prompt-text{flex:1;min-width:0}.wall-name-prompt-title{font-size:var(--fs-base);font-weight:600;color:var(--text)}.wall-name-prompt-subtitle{font-size:var(--fs-sm);color:var(--text-secondary)}.wall-name-prompt-close{position:relative;width:1.75rem;height:1.75rem;border-radius:50%;background:transparent;border:none;color:var(--text-secondary);cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0}.wall-name-prompt-close:after{content:"";position:absolute;inset:-.5rem;border-radius:inherit}@media(hover:hover){.wall-name-prompt-close:hover{background:var(--btn-hover);color:var(--text)}}.wall-name-prompt-input{position:relative}.wall-name-prompt-input input{width:100%;min-height:3.25rem;padding:var(--sp-3) var(--sp-4);padding-right:4.5rem;font-size:var(--fs-base);font-family:inherit;border:1px solid var(--border);border-radius:var(--r-sm);background:var(--bg);color:var(--text)}.wall-name-prompt-input input:focus{border-color:var(--accent)}.wall-name-prompt-input button{position:absolute;right:.25rem;top:var(--sp-1);bottom:var(--sp-1);padding:0 var(--sp-3);font-size:var(--fs-base);font-weight:600;font-family:inherit;color:#1c1917;background:var(--accent);border:none;border-radius:var(--r-sm);cursor:pointer}.wall-name-prompt-input button:disabled{opacity:.5;cursor:not-allowed}.modal-overlay{position:fixed;inset:0;background:var(--modal-overlay);display:none;align-items:flex-start;justify-content:center;padding-top:var(--sp-5);z-index:9999}.modal-overlay.active{display:flex}.modal{background:var(--surface);border:.0625rem solid var(--border);width:calc(100% - 2.5rem);max-width:25rem;border-radius:var(--r-md);padding:var(--sp-5);max-height:calc(100vh - 2.5rem);overflow-y:auto;transition:all var(--dur-base)}.modal-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--sp-4)}.modal-header h2{font-size:var(--fs-lg);color:var(--text)}.modal-close{position:relative;width:2rem;height:2rem;border:.0625rem solid var(--border);background:var(--btn-bg);color:var(--text);border-radius:50%;font-size:var(--fs-lg);cursor:pointer;transition:all var(--dur-base);display:flex;align-items:center;justify-content:center}@media(hover:hover){.modal-close:hover{background:var(--btn-hover)}}.modal-close:after{content:"";position:absolute;inset:-.4375rem;border-radius:inherit}.modal-actions{margin-top:var(--sp-5);padding-top:var(--sp-4);border-top:1px solid var(--border)}.modal-save-btn{width:100%;padding:var(--sp-4) var(--sp-4);background:var(--accent);color:#000;border:none;border-radius:var(--r-sm);font-size:var(--fs-md);font-weight:600;cursor:pointer;transition:all var(--dur-base)}@media(hover:hover){.modal-save-btn:hover{background:var(--accent-hover, #d97706)}}.modal-save-btn:active{transform:scale(.98)}@media(max-width:47.99rem){.modal-overlay{align-items:flex-end;padding-top:0}.modal{width:100%;max-width:28rem;border-radius:var(--r-md) var(--r-md) 0 0;max-height:calc(100vh - 2.5rem)}.modal-header{position:sticky;top:0;z-index:1;background:var(--surface);padding-bottom:var(--sp-2)}.modal-actions{position:sticky;bottom:0;background:var(--surface)}}@media(min-width:48rem){.save-dialog-overlay{align-items:center}.save-dialog{border-radius:var(--r-md);animation:none}.save-dialog-handle{display:none}}.form-group{margin-bottom:var(--sp-4)}.form-group label{display:block;font-size:var(--fs-base);color:var(--text-secondary);margin-bottom:var(--sp-2)}.form-group input,.form-group select{width:100%;padding:var(--sp-3);border:1px solid var(--border);border-radius:var(--r-sm);background:var(--bg);color:var(--text);font-size:var(--fs-md);transition:all var(--dur-base);box-shadow:inset 0 1px 2px #0000000d}.form-group input:focus,.form-group select:focus{border-color:var(--accent);box-shadow:inset 0 1px 2px #0000000d,0 0 0 2px #f59e0b26}.grade-type-selector{display:flex;gap:var(--sp-3);margin-bottom:var(--sp-3)}.grade-type-option{display:flex;align-items:center;gap:var(--sp-2);min-height:2.75rem;cursor:pointer}.grade-type-option input[type=radio]{width:1.25rem;height:1.25rem;cursor:pointer;accent-color:var(--accent)}.grade-type-option label{font-size:var(--fs-base);cursor:pointer;color:var(--text)}.checkbox-group{display:flex;flex-direction:column;gap:var(--sp-3)}.checkbox-item{display:flex;align-items:center;gap:var(--sp-3);min-height:2.75rem}.checkbox-item input{width:1.375rem;height:1.375rem;accent-color:var(--accent)}.checkbox-item label{font-size:var(--fs-md);color:var(--text);margin-bottom:0}.danger-btn{width:100%;padding:var(--sp-4);background:transparent;color:var(--danger);border:1px solid var(--border);border-radius:var(--r-md);font-size:var(--fs-md);font-weight:600;cursor:pointer;transition:all var(--dur-base)}@media(hover:hover){.danger-btn:hover{background:var(--danger-soft);border-color:var(--danger)}}.primary-btn{width:100%;padding:var(--sp-4);background:var(--accent);color:#1c1917;border:1px solid var(--accent);border-radius:var(--r-md);font-size:var(--fs-md);font-weight:600;cursor:pointer;transition:all var(--dur-base)}@media(hover:hover){.primary-btn:hover{background:var(--accent-hover);border-color:var(--accent-hover)}}.primary-btn:disabled{opacity:.5;cursor:not-allowed}.secondary-btn{width:100%;padding:var(--sp-4);background:transparent;color:var(--text);border:1px solid var(--border);border-radius:var(--r-md);font-size:var(--fs-md);font-weight:600;cursor:pointer;transition:all var(--dur-base)}@media(hover:hover){.secondary-btn:hover{background:var(--btn-hover)}}.secondary-btn:disabled{opacity:.5;cursor:not-allowed}.info-btn{width:1.5rem;height:1.5rem;border:1px solid var(--border);border-radius:50%;background:var(--btn-bg);color:var(--text-secondary);font-size:var(--fs-base);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--dur-base);padding:0}@media(hover:hover){.info-btn:hover{background:var(--btn-hover);color:var(--text)}}.settings-content{flex:1;overflow-y:auto;padding:var(--sp-4) var(--sp-5)}.settings-content .section-label{margin:0 0 var(--sp-2)}.settings-section,.settings-content .form-group{margin-bottom:0}.settings-content .checkbox-group{gap:var(--sp-2)}.settings-content .checkbox-item input{width:1.125rem;height:1.125rem}.settings-dropdown-row{display:flex;align-items:center;justify-content:space-between;padding:var(--sp-2) 0}.settings-dropdown-label{font-size:var(--fs-base);color:var(--text);font-weight:500}.settings-dropdown{appearance:none;-webkit-appearance:none;min-height:2.75rem;background-color:var(--surface);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%237D756C' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .75rem center;background-size:12px 12px;border:1px solid var(--border);border-radius:var(--r-sm);padding:var(--sp-2) var(--sp-6) var(--sp-2) var(--sp-3);font-size:var(--fs-base);color:var(--text);cursor:pointer;min-width:10rem;max-width:14rem}:root[data-theme=dark] .settings-dropdown{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23A8A29E' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E")}@media(prefers-color-scheme:dark){:root:not([data-theme]) .settings-dropdown{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23A8A29E' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E")}}.settings-dropdown:focus{border-color:var(--accent)}.form-group .settings-dropdown{width:auto;padding:var(--sp-2) var(--sp-6) var(--sp-2) var(--sp-3);background-color:var(--surface);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%237D756C' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .75rem center;background-size:12px 12px;box-shadow:none}:root[data-theme=dark] .form-group .settings-dropdown{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23A8A29E' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E")}@media(prefers-color-scheme:dark){:root:not([data-theme]) .form-group .settings-dropdown{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23A8A29E' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E")}}.settings-label{display:flex;align-items:center;gap:var(--sp-2);margin-bottom:var(--sp-2)}.settings-label span{font-size:var(--fs-base);color:var(--text-secondary)}.status-card{font-size:var(--fs-base);color:var(--text);padding:var(--sp-3);background:var(--surface);border:1px solid var(--border);border-radius:var(--r-sm)}.status-card-title{font-weight:600;margin-bottom:var(--sp-1)}.status-card-subtitle{font-size:var(--fs-sm);color:var(--text-secondary)}.settings-separator{border:none;border-top:1px solid var(--border);margin:var(--sp-3) 0}.settings-hint{font-size:var(--fs-sm);color:var(--text-secondary);margin-top:var(--sp-2)}.settings-row{display:flex;justify-content:space-between;align-items:center;padding:var(--sp-2) 0}.settings-row-left,.settings-row-right{display:flex;align-items:center;gap:var(--sp-2)}.settings-row-label{font-size:var(--fs-base);font-weight:500;color:var(--text)}.settings-row-value{font-size:var(--fs-base);font-weight:600}.build-channel-badge{display:inline-flex;align-items:center;padding:1px var(--sp-2);border-radius:var(--r-xs);background:var(--accent);color:#fff;font-size:var(--fs-xs);font-weight:700;letter-spacing:.05em;text-transform:uppercase}.settings-row-subtitle{font-size:var(--fs-sm);color:var(--text-secondary);margin-bottom:var(--sp-4)}.settings-storage-row{display:flex;align-items:center;gap:var(--sp-2);flex:1}.settings-storage-bar{flex:1;max-width:8rem}.settings-storage-text{font-size:var(--fs-sm);color:var(--text-secondary);white-space:nowrap}.settings-row-dot{color:var(--text-tertiary);font-size:var(--fs-base)}.settings-storage-type{font-size:var(--fs-sm);font-weight:500;white-space:nowrap}.settings-link-btn{background:none;border:none;padding:0;font-size:var(--fs-sm);color:var(--accent);cursor:pointer;white-space:nowrap;text-decoration:underline;text-underline-offset:2px}.settings-link-btn:hover{opacity:.8}.settings-warning-group{display:inline-flex;align-items:center;gap:var(--sp-1);color:var(--danger)}.settings-warning-icon{flex-shrink:0}.settings-warning-text{font-size:var(--fs-sm);font-weight:500;color:var(--warn-fg);text-decoration:underline;text-underline-offset:2px}.settings-status-text{font-size:var(--fs-sm);color:var(--text-secondary);margin-left:auto;margin-right:var(--sp-2)}.icon-btn{position:relative;width:2.5rem;height:2.5rem;min-width:2.5rem;border-radius:var(--r-sm);border:1px solid var(--border);background:var(--surface);color:var(--text-secondary);display:flex;align-items:center;justify-content:center;cursor:pointer}@media(hover:hover){.icon-btn:hover{background:var(--btn-hover);color:var(--text)}}.icon-btn svg{width:1.25rem;height:1.25rem}.icon-btn.danger{color:var(--danger)}@media(hover:hover){.icon-btn.danger:hover{background:var(--danger-soft)}}.info-btn svg{width:.875rem;height:.875rem}.size-indicator{position:fixed;background:var(--surface);border:.0625rem solid var(--border);color:var(--text);padding:var(--sp-2) var(--sp-4);border-radius:var(--r-md);font-size:var(--fs-base);pointer-events:none;display:none;z-index:1001;left:50%;top:20%;transform:translate(-50%)}.size-indicator.active{display:block}.toast{position:fixed;top:2%;left:50%;transform:translate(-50%);background:var(--surface);border:.0625rem solid var(--border);color:var(--text);padding:var(--sp-3) var(--sp-5);border-radius:var(--r-sm);font-size:var(--fs-base);z-index:9999;opacity:0;transition:opacity var(--dur-base);pointer-events:none;text-align:center;max-width:90%;box-shadow:var(--elev-2)}.toast.active{opacity:1}.toast.tappable{pointer-events:auto;cursor:pointer}input[type=file],.desktop-only-shortcuts{display:none}@media(pointer:fine){.desktop-only-shortcuts{display:block}}@media(min-width:48rem){.tool-btn,.action-btn{width:3.25rem;height:3.25rem}.tool-btn .icon{width:1.5rem;height:1.5rem}.action-btn .icon-char{width:1.5rem;height:1.5rem;line-height:1.5rem}.tools-row{max-width:28rem;margin:0 auto}.canvas-area{padding-bottom:var(--bottom-bar-h, 0)}}.a2hs-prompt{position:fixed;bottom:5.5rem;left:1rem;right:1rem;z-index:100}.a2hs-prompt-content{display:flex;align-items:center;gap:var(--sp-3);background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);padding:var(--sp-3) var(--sp-4);box-shadow:var(--elev-2)}.a2hs-prompt-icon{flex-shrink:0;width:2.5rem;height:2.5rem;display:flex;align-items:center;justify-content:center;background:var(--accent);border-radius:var(--r-sm)}.a2hs-prompt-icon svg{width:1.25rem;height:1.25rem;stroke:#fff}.a2hs-prompt-text{flex:1;min-width:0}.a2hs-prompt-title{font-weight:600;font-size:var(--fs-base);color:var(--text)}.a2hs-prompt-subtitle{font-size:var(--fs-sm);color:var(--text-secondary)}.a2hs-prompt-install{flex-shrink:0;background:var(--accent);color:#fff;border:none;border-radius:var(--r-sm);padding:var(--sp-2) var(--sp-4);font-weight:600;font-size:var(--fs-base);cursor:pointer}.a2hs-prompt-close{flex-shrink:0;background:none;border:none;padding:var(--sp-1);cursor:pointer;opacity:.5;color:var(--text)}@media(hover:hover){.a2hs-prompt-close:hover{opacity:1}}.gesture-icon{display:inline-block;width:1.25rem;height:1.25rem;margin-right:var(--sp-2);vertical-align:middle;position:relative;flex-shrink:0}.gesture-icon.gesture-tap:before{content:"";position:absolute;width:.5rem;height:.5rem;background:var(--accent);border-radius:50%;top:50%;left:50%;transform:translate(-50%,-50%)}.gesture-icon.gesture-tap:after{content:"";position:absolute;width:1rem;height:1rem;border:1.5px solid var(--accent);border-radius:50%;top:50%;left:50%;transform:translate(-50%,-50%);opacity:.5}.gesture-icon.gesture-doubletap:before{content:"";position:absolute;width:.375rem;height:.375rem;background:var(--accent);border-radius:50%;top:30%;left:50%;transform:translate(-50%,-50%)}.gesture-icon.gesture-doubletap:after{content:"";position:absolute;width:.375rem;height:.375rem;background:var(--accent);border-radius:50%;top:70%;left:50%;transform:translate(-50%,-50%)}.gesture-icon.gesture-longpress:before{content:"";position:absolute;width:.5rem;height:.5rem;background:var(--accent);border-radius:50%;top:50%;left:50%;transform:translate(-50%,-50%)}.gesture-icon.gesture-longpress:after{content:"";position:absolute;width:1rem;height:1rem;border:1.5px solid transparent;border-top-color:var(--accent);border-right-color:var(--accent);border-radius:50%;top:50%;left:50%;transform:translate(-50%,-50%) rotate(45deg)}.gesture-icon.gesture-pinch:before{content:"";position:absolute;width:.3rem;height:.3rem;background:var(--accent);border-radius:50%;top:50%;left:20%;transform:translateY(-50%)}.gesture-icon.gesture-pinch:after{content:"";position:absolute;width:.3rem;height:.3rem;background:var(--accent);border-radius:50%;top:50%;right:20%;transform:translateY(-50%)}.gesture-icon.gesture-drag:before{content:"";position:absolute;width:.375rem;height:.375rem;background:var(--accent);border-radius:50%;top:50%;left:25%;transform:translateY(-50%)}.gesture-icon.gesture-drag:after{content:"";position:absolute;width:.5rem;height:0;border-top:1.5px solid var(--accent);top:50%;left:45%;transform:translateY(-50%)}#shortcutsOverlay ul{list-style:none}#shortcutsOverlay ul li{display:flex;align-items:center;margin-bottom:var(--sp-2)}.map-mode-bar{position:fixed;bottom:0;left:0;right:0;background:var(--toolbar-bg);backdrop-filter:blur(.75rem);-webkit-backdrop-filter:blur(.75rem);border-top:1px solid var(--border);padding:var(--sp-3) var(--sp-4);padding-bottom:calc(var(--sp-3) + env(safe-area-inset-bottom));z-index:80;display:flex;justify-content:space-between;align-items:center;gap:var(--sp-2)}.map-mode-tools,.map-mode-actions{display:flex;align-items:center;gap:var(--sp-2)}.map-mode-divider{width:1px;height:1.5rem;background:var(--border);margin:0 var(--sp-1)}.map-tool-btn{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--sp-1);padding:var(--sp-2);min-width:3rem;height:3rem;border:none;border-radius:var(--r-sm);background:transparent;color:var(--text-secondary);font-size:var(--fs-xs);font-weight:500;cursor:pointer;transition:all var(--dur-base)}.map-tool-btn svg{flex-shrink:0}.map-tool-btn.active{background:var(--btn-hover);color:var(--text)}@media(hover:hover){.map-tool-btn:hover{background:var(--btn-hover);color:var(--text)}}.map-tool-btn:disabled{opacity:.3;pointer-events:none}.map-done-btn{padding:var(--sp-3) var(--sp-5);background:var(--accent);color:#1c1917;border:none;border-radius:var(--r-sm);font-size:var(--fs-base);font-weight:600;cursor:pointer;transition:background var(--dur-base)}@media(hover:hover){.map-done-btn:hover{background:var(--accent-hover)}}} .detection-progress{position:fixed;inset:0;background:var(--modal-overlay);display:flex;align-items:center;justify-content:center;z-index:300}.detection-progress-content{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);padding:var(--sp-5) var(--sp-6);min-width:16rem;text-align:center}.detection-progress-text{font-size:var(--fs-base);font-weight:500;color:var(--text);margin-bottom:var(--sp-4)}.detection-progress-bar{width:100%;height:.5rem;background:var(--border);border-radius:var(--r-xs);overflow:hidden}.detection-progress-fill{height:100%;background:var(--accent);border-radius:var(--r-xs);transition:width var(--dur-base) ease-out;width:0%}.hold-mapping-sensitivity{padding:var(--sp-4) 0;border-bottom:1px solid var(--border);margin-bottom:var(--sp-2)}.hold-mapping-sensitivity label{display:block;font-size:var(--fs-base);font-weight:500;color:var(--text-secondary);margin-bottom:var(--sp-3)}.sensitivity-slider-container{display:flex;align-items:center;gap:var(--sp-3)}.sensitivity-label{font-size:var(--fs-xs);color:var(--text-secondary);min-width:2rem}.sensitivity-label:first-of-type{text-align:right}.sensitivity-slider-container input[type=range]{flex:1;height:.25rem;appearance:none;-webkit-appearance:none;background:var(--border);border-radius:var(--r-xs)}.sensitivity-slider-container input[type=range]::-webkit-slider-thumb{appearance:none;-webkit-appearance:none;width:1rem;height:1rem;background:var(--accent);border-radius:50%;cursor:pointer}.sensitivity-slider-container input[type=range]::-moz-range-thumb{width:1rem;height:1rem;background:var(--accent);border:none;border-radius:50%;cursor:pointer}.hold-count-badge{position:absolute;bottom:.5rem;right:.5rem;display:flex;align-items:center;gap:var(--sp-1);background:#000000b3;color:#fff;padding:var(--sp-1) var(--sp-2);border-radius:var(--r-xs);font-size:var(--fs-xs);font-weight:500;z-index:2}.hold-count-badge svg{width:.75rem;height:.75rem}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}
