:root{--bg: #f4efe6;--panel: #fff;--ink: #2b2b2b;--muted: #8a8578;--accent: #3a6ea5;--ok: #2e7d32;--no: #c62828;--line: #e3dccb;--star: #e6a817;--accent-soft: #eef3f9;--panel-soft: #f6f1e6;--ok-soft: #e8f5e9;--no-soft: #fdecea;--on-accent: #fff}:root[data-theme=dark]{--bg: #141414;--panel: #1f1f1f;--ink: #e6e6e6;--muted: #8f8f8f;--accent: #6ea8dc;--ok: #81c784;--no: #ef9a9a;--line: #333333;--star: #e6a817;--accent-soft: #22384d;--panel-soft: #2a2a2a;--ok-soft: #1d3323;--no-soft: #3d2525;--on-accent: #101010}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--bg: #141414;--panel: #1f1f1f;--ink: #e6e6e6;--muted: #8f8f8f;--accent: #6ea8dc;--ok: #81c784;--no: #ef9a9a;--line: #333333;--star: #e6a817;--accent-soft: #22384d;--panel-soft: #2a2a2a;--ok-soft: #1d3323;--no-soft: #3d2525;--on-accent: #101010}}*{box-sizing:border-box}.auth-mine{display:none}@media (max-width: 720px){.auth-header{display:none}.auth-mine{display:flex;justify-content:flex-end;margin-bottom:10px}}html{-webkit-text-size-adjust:100%}button,select{touch-action:manipulation;-webkit-tap-highlight-color:transparent}button{transition:transform .12s ease,background-color .12s ease,border-color .12s ease}button:active:not(:disabled){transform:scale(.98)}html,body,#root{height:100%;margin:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei,sans-serif;background:var(--bg);color:var(--ink);overscroll-behavior-y:none}.app{max-width:1100px;margin:0 auto;padding:16px;min-height:100%;display:flex;flex-direction:column}.app-header{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px;margin-bottom:14px}.app-header h1{font-size:22px;margin:0}.mode-nav{display:flex;align-items:center;gap:8px}.mobile-nav-trigger{display:none}.auth-user{display:flex;align-items:center;gap:8px}.auth-avatar{width:26px;height:26px;border-radius:50%;border:1px solid var(--line)}.auth-name{font-size:13px;color:var(--muted);max-width:140px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.auth-btn{border:1px solid var(--line);background:var(--panel);color:var(--ink);padding:6px 10px;border-radius:8px;cursor:pointer;font-size:13px}.auth-btn:hover{border-color:var(--accent);color:var(--accent)}.auth-btn.google{color:#4285f4;border-color:#4285f4}.auth-btn.apple{color:var(--ink);border-color:var(--ink)}.auth-err{font-size:12px;color:var(--no)}.mode-nav button{font-size:14px;font-weight:600}.mode-nav button.active{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.date-nav{display:flex;align-items:center;gap:8px}.date-nav button,.date-nav select,.controls button,.mode-nav button{border:1px solid var(--line);background:var(--panel);color:var(--ink);padding:7px 12px;border-radius:8px;cursor:pointer;font-size:14px}.date-nav input{cursor:text}.date-nav button:hover,.date-nav select:hover,.controls button:hover:not(:disabled),.mode-nav button:hover:not(.active){border-color:var(--accent);color:var(--accent)}.date-nav button:disabled,.date-nav select:disabled,.controls button:disabled,.mode-nav button:disabled{opacity:.4;cursor:default}.date-label{font-weight:600;padding:0 4px}.source-badge{flex:0 0 auto;color:var(--accent);border:1px solid var(--accent);background:var(--accent-soft);border-radius:999px;padding:3px 8px;font-size:11px;white-space:nowrap}.mobile-library-trigger,.mobile-library-backdrop,.mobile-library-close,.mobile-library-handle,.mobile-quick-actions{display:none}.source-nav{min-width:0}.source-nav .date-label{color:var(--muted);font-weight:500;font-size:13px}.date-nav .today{color:var(--accent)}.qid-search{display:flex;align-items:center;gap:6px}.qid-search input{border:1px solid var(--line);background:var(--panel);color:var(--ink);padding:7px 10px;border-radius:8px;font-size:14px;width:96px}.qid-search button{border:1px solid var(--line);background:var(--panel);color:var(--ink);padding:7px 12px;border-radius:8px;cursor:pointer;font-size:14px}.qid-search button:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.qid-search button:disabled,.qid-search input:disabled{opacity:.4}.status{text-align:center;color:var(--muted);padding:40px 0}.status.error{color:var(--no)}.storage-warn{background:var(--no-soft);color:var(--no);border:1px solid var(--no);border-radius:10px;padding:8px 12px;font-size:13px;margin:0 0 10px;text-align:center}.guide-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;background:#0000008c;display:flex;align-items:center;justify-content:center;padding:20px}.guide-card{background:var(--panel);color:var(--ink);border-radius:14px;padding:24px;max-width:420px;width:100%;max-height:80vh;overflow-y:auto;box-shadow:0 8px 40px #0000004d}.guide-card h2{margin:0 0 12px;font-size:18px}.guide-list{margin:0 0 18px;padding:0;list-style:none;display:grid;gap:10px}.guide-list li{font-size:14px;line-height:1.6}.guide-btn{width:100%;border:1px solid var(--accent);background:var(--accent);color:var(--on-accent);padding:10px;border-radius:10px;font-size:15px;cursor:pointer}.guide-btn:active{opacity:.85}.app-footer{margin-top:auto;padding-top:16px;text-align:center;color:var(--muted);font-size:12px}.app-footer a{color:var(--muted);text-decoration:underline}.layout{display:flex;gap:16px;flex:1;min-height:0}.problem-list{width:260px;flex-shrink:0;background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:12px;overflow-y:auto}.u12-problem-list,.fayanglun-problem-list{max-height:calc(100vh - 210px)}.problem-list .list-head{display:flex;align-items:center;gap:8px;margin-bottom:10px;flex-wrap:wrap}.problem-list h3{margin:0;font-size:14px;color:var(--muted);flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.problem-status-legend{color:var(--muted);font-size:11px;white-space:nowrap}.problem-status-legend i{font-style:normal;font-weight:800;margin-left:3px}.problem-status-legend .unstarted{color:var(--muted)}.problem-status-legend .solved{color:var(--ok)}.problem-status-legend .wrong{color:var(--no)}.shuffle-btn{border:1px solid var(--accent);color:var(--accent);background:var(--panel);padding:5px 12px;border-radius:8px;font-size:13px;cursor:pointer;flex-shrink:0}.shuffle-btn:disabled{opacity:.4;cursor:default}.page-nav{display:flex;align-items:center;gap:6px;margin-left:auto}.page-btn{border:1px solid var(--line);background:var(--panel);color:var(--ink);padding:4px 10px;border-radius:8px;font-size:13px;cursor:pointer}.page-btn:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.page-btn:disabled{opacity:.35;cursor:default}.page-label{font-size:13px;color:var(--muted);white-space:nowrap}.side-indicator{display:none;flex-shrink:0;font-size:12px;font-weight:700;color:var(--accent);border:1px solid var(--accent);border-radius:6px;padding:1px 6px;background:var(--accent-soft)}.problem-strip{display:contents}.u12-collections{display:flex;flex-direction:column;gap:12px}.u12-collection{border-top:1px solid var(--line);padding-top:9px}.u12-collection:first-child{border-top:0;padding-top:0}.u12-collection-toggle{width:100%;display:flex;align-items:baseline;justify-content:space-between;gap:8px;margin-bottom:3px;padding:0;border:0;background:transparent;color:var(--ink);text-align:left;cursor:pointer}.u12-collection-toggle:after{content:"›";color:var(--muted);font-size:18px;line-height:1;transform:rotate(0)}.u12-collection.open .u12-collection-toggle:after{transform:rotate(90deg)}.u12-collection-toggle strong{color:var(--accent);font-size:14px}.u12-collection-toggle span,.u12-collection-empty{color:var(--muted);font-size:12px}.u12-collection-progress,.course-progress-bar,.editor-lesson-progress-bar{height:4px;overflow:hidden;background:var(--panel-soft);border-radius:999px}.u12-collection-progress{margin:0 0 5px}.u12-collection-progress span,.course-progress-bar span,.editor-lesson-progress-bar span{display:block;height:100%;background:var(--accent);border-radius:inherit}.u12-collection-strip{display:flex;flex-direction:column;gap:1px}.problem-item{display:flex;align-items:center;gap:8px;width:100%;border:1px solid transparent;background:transparent;padding:9px 10px;border-radius:8px;cursor:pointer;font-size:14px;text-align:left}.problem-item:hover{background:var(--panel-soft)}.problem-item.active{background:var(--accent-soft);border-color:var(--accent)}.p-level{font-weight:700;color:var(--accent)}.p-type{color:var(--muted)}.p-tag{color:var(--accent);font-size:11px;font-weight:700}.p-num{margin-left:auto;color:var(--muted);font-size:12px}.p-status{width:16px;flex:0 0 16px;text-align:center;font-weight:800;color:var(--muted)}.p-status.solved{color:var(--ok)}.p-status.wrong{color:var(--no)}.u12-next-hint{margin-top:4px;color:var(--muted);font-size:11px;text-align:right}.fayanglun-library-tools{flex:0 0 100%;min-width:0}.fayanglun-difficulty-filter{display:flex;align-items:center;gap:7px;margin:0 0 6px;color:var(--muted);font-size:11px}.fayanglun-difficulty-filter select{min-width:0;padding:5px 8px;border:1px solid var(--line);border-radius:7px;background:var(--panel);color:var(--ink);font-size:12px}.fayanglun-difficulty-filter small{margin-left:auto;white-space:nowrap}.fayanglun-library-actions{display:grid;grid-template-columns:minmax(82px,.8fr) minmax(0,1.2fr);gap:6px}.fayanglun-continue,.fayanglun-jump button{min-width:0;min-height:38px;border:1px solid var(--line);border-radius:8px;background:var(--panel);color:var(--ink);cursor:pointer;font-size:12px}.fayanglun-continue{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;padding:4px 8px;color:var(--accent);border-color:var(--accent);text-align:left;font-weight:700}.fayanglun-continue:disabled{opacity:.5;cursor:default}.fayanglun-continue span{max-width:100%;overflow:hidden;color:var(--muted);font-size:10px;font-weight:500;text-overflow:ellipsis;white-space:nowrap}.fayanglun-jump{display:flex;min-width:0;gap:4px}.fayanglun-jump input{width:100%;min-width:0;border:1px solid var(--line);border-radius:8px;padding:6px 7px;background:var(--panel);color:var(--ink);font-size:12px}.fayanglun-jump button{padding:5px 8px;flex:0 0 auto}.fayanglun-jump button:hover,.fayanglun-range:hover{border-color:var(--accent);color:var(--accent)}.fayanglun-progress-summary{display:flex;justify-content:space-between;gap:8px;margin-top:5px;color:var(--muted);font-size:11px}.fayanglun-jump-error{margin:4px 0 0;color:var(--no);font-size:11px;line-height:1.4}.fayanglun-collections{display:flex;flex-direction:column;gap:7px}.fayanglun-section{padding-top:7px;border-top:1px solid var(--line)}.fayanglun-section:first-child{padding-top:0;border-top:0}.fayanglun-section-toggle{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;min-height:32px;padding:2px 0;border:0;background:transparent;color:var(--ink);text-align:left;cursor:pointer}.fayanglun-section-toggle strong{color:var(--accent);font-size:14px}.fayanglun-section-toggle span{color:var(--muted);font-size:11px;white-space:nowrap}.fayanglun-section-progress{height:3px;overflow:hidden;border-radius:99px;background:var(--panel-soft)}.fayanglun-section-progress span{display:block;height:100%;border-radius:inherit;background:var(--accent)}.fayanglun-range-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px;margin-top:7px}.fayanglun-range{display:flex;align-items:center;justify-content:space-between;gap:4px;min-width:0;min-height:36px;padding:5px 7px;border:1px solid var(--line);border-radius:7px;background:var(--panel);color:var(--ink);cursor:pointer}.fayanglun-range.active{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}.fayanglun-range strong{font-size:12px;white-space:nowrap}.fayanglun-range span{overflow:hidden;color:var(--muted);font-size:10px;text-overflow:ellipsis;white-space:nowrap}.fayanglun-section-empty{margin:8px 0 2px;color:var(--muted);font-size:12px}.fayanglun-range-problems{display:flex;flex-direction:column;gap:1px;margin-top:6px}.fayanglun-range-problems .problem-item{padding:7px 8px}.fayanglun-range-problems .p-num{flex:1;min-width:0;margin-left:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fayanglun-difficulty-badge{flex:0 0 auto;padding:2px 5px;border-radius:5px;background:var(--accent-soft);color:var(--accent);font-size:10px;white-space:nowrap}.fayanglun-difficulty-badge.difficulty-hard{background:var(--panel-soft);color:var(--star)}.fayanglun-difficulty-badge.difficulty-very-hard{background:var(--no-soft);color:var(--no)}.fayanglun-difficulty-badge.ungraded{background:var(--panel-soft);color:var(--muted)}.meta .difficulty-medium,.difficulty-medium{color:var(--accent)}.meta .difficulty-hard,.difficulty-hard{color:var(--star)}.meta .difficulty-very-hard,.difficulty-very-hard{color:var(--no)}.meta .difficulty-ungraded,.difficulty-ungraded{color:var(--muted)}.fayanglun-side{flex:0 0 auto;padding:2px 5px;border-radius:5px;background:var(--panel-soft);color:var(--muted);font-size:10px;white-space:nowrap}.fayanglun-range-problems .p-status{margin-left:auto}.wrong-item{position:relative}.wrong-item .problem-item{padding-right:26px}.wrong-del{position:absolute;top:7px;right:7px;width:22px;height:22px;border-radius:50%;border:1px solid var(--line);background:var(--panel);color:var(--muted);font-size:12px;cursor:pointer;z-index:2;display:flex;align-items:center;justify-content:center}.wrong-del:hover{color:var(--no);border-color:var(--no);background:var(--no-soft)}.solver-area{flex:1;min-width:0}.solver{display:flex;align-items:flex-start;gap:16px;height:100%}.board-wrap{flex:1 1 0;min-width:0;align-self:flex-start;aspect-ratio:1 / 1;background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:6px}.board-wrap canvas{border-radius:8px;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.panel{width:220px;flex-shrink:0;display:flex;flex-direction:column;gap:12px}.meta{display:flex;flex-wrap:wrap;gap:6px}.meta span{background:var(--panel);border:1px solid var(--line);border-radius:20px;padding:4px 10px;font-size:13px}.meta .level{font-weight:700;color:var(--accent)}.meta .qid{color:var(--muted)}.meta .fav-btn{margin-left:auto;border:1px solid var(--line);background:var(--panel);border-radius:50%;width:32px;height:32px;cursor:pointer;font-size:16px;color:var(--muted)}.meta .fav-btn.active{color:var(--star);border-color:var(--star)}.course-progress{padding:8px 10px;border-radius:8px;background:var(--accent-soft);color:var(--accent)}.course-progress-head{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:13px}.course-progress-head span{color:var(--muted);font-size:12px}.course-progress-bar{margin-top:6px;background:var(--panel)}.rec{font-size:12px;color:var(--muted);text-align:center}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:12px;padding:24px;max-width:720px;margin:0 auto;width:100%}.stat-card{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:18px;text-align:center}.stat-card .stat-num{font-size:28px;font-weight:800;color:var(--ink)}.stat-card .stat-label{font-size:13px;color:var(--muted);margin-top:4px}.stat-card.ok .stat-num{color:var(--ok)}.stat-card.no .stat-num{color:var(--no)}.stat-card.accent .stat-num{color:var(--accent)}.mine-nav button.active{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.settings-panel{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:24px;max-width:720px;margin:0 auto;width:100%}.settings-panel h3{margin:0 0 6px;font-size:16px}.settings-desc{color:var(--muted);font-size:13px;margin:0 0 18px;line-height:1.6}.settings-row{display:flex;align-items:center;gap:10px;margin-bottom:14px;flex-wrap:wrap}.settings-row select{border:1px solid var(--line);background:var(--panel);color:var(--ink);padding:8px 12px;border-radius:8px;font-size:14px;min-height:40px}.settings-save{border:1px solid var(--accent);background:var(--accent);color:var(--on-accent);padding:8px 28px;border-radius:8px;font-size:14px;cursor:pointer}.settings-save:active{opacity:.85}.settings-saved{color:var(--ok);font-size:13px}.fayanglun-editor{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:18px;width:100%}.locked-editor{max-width:620px;margin:0 auto;text-align:center}.locked-editor h2{margin:0 0 8px}.locked-editor p{color:var(--muted);margin:0 0 16px}.locked-editor button,.editor-head button,.editor-tools button,.editor-actions button,.editor-primary{border:1px solid var(--line);background:var(--panel);color:var(--ink);padding:7px 12px;border-radius:8px;cursor:pointer;font-size:13px}.editor-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:16px}.editor-head h2{margin:0 0 4px;font-size:18px}.editor-head p{margin:0;color:var(--muted);font-size:13px}.editor-stepper{display:flex;flex-wrap:wrap;gap:6px;margin-top:9px}.editor-stepper span{padding:4px 8px;border-radius:999px;background:var(--panel-soft);color:var(--muted);font-size:11px}.editor-stepper span.active{background:var(--accent-soft);color:var(--accent);font-weight:700}.editor-lesson-progress{margin-top:8px;color:var(--muted);font-size:12px}.editor-lesson-progress strong{color:var(--accent)}.editor-lesson-progress-bar{max-width:240px;margin-top:5px}.editor-lesson-progress small{display:block;margin-top:4px;color:var(--accent)}.editor-layout{display:flex;gap:18px;align-items:flex-start}.editor-board-wrap{flex:1;min-width:0;aspect-ratio:1 / 1;max-width:680px;background:var(--panel-soft);border:1px solid var(--line);border-radius:12px;padding:6px}.editor-board-wrap canvas{display:block;width:100%;height:100%;border-radius:8px;cursor:crosshair}.editor-panel{width:310px;flex-shrink:0;display:flex;flex-direction:column;gap:12px}.editor-problem-select{display:flex;flex-direction:column;gap:5px;color:var(--muted);font-size:12px}.editor-problem-select select{width:100%;border:1px solid var(--line);background:var(--panel);color:var(--ink);padding:8px 9px;border-radius:8px;font:inherit;font-size:13px}.editor-fields{display:grid;grid-template-columns:1fr 1fr;gap:10px}.editor-fields label,.editor-panel>label{display:flex;flex-direction:column;gap:5px;color:var(--muted);font-size:12px}.editor-fields input,.editor-fields select,.editor-panel textarea{width:100%;border:1px solid var(--line);background:var(--panel);color:var(--ink);padding:8px 9px;border-radius:8px;font:inherit;font-size:13px}.editor-panel textarea{min-height:64px;resize:vertical}.editor-tools,.editor-actions{display:flex;flex-wrap:wrap;align-items:center;gap:6px}.editor-tools>span,.editor-turn{color:var(--muted);font-size:13px}.editor-tools button.active{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.editor-primary{border-color:var(--accent);background:var(--accent);color:var(--on-accent)}.editor-primary:disabled{opacity:.45;cursor:default}.editor-turn{background:var(--accent-soft);border-radius:8px;padding:8px 10px;color:var(--accent);font-weight:600}.editor-moves{min-height:38px;padding:9px 10px;background:var(--panel-soft);border-radius:8px;color:var(--muted);font:12px ui-monospace,SFMono-Regular,Menlo,monospace;word-break:break-all}.editor-line-list{display:flex;flex-direction:column;gap:6px;max-height:220px;overflow-y:auto}.editor-line-list strong{font-size:13px}.editor-line{display:grid;grid-template-columns:38px 1fr auto;align-items:center;gap:5px;font-size:11px}.editor-line>span{color:var(--accent);font-weight:700}.editor-line code{color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.editor-line button{border:0;background:transparent;color:var(--no);cursor:pointer;font-size:11px;padding:2px 4px}.editor-message{border-radius:8px;padding:9px 10px;background:var(--accent-soft);color:var(--accent);font-size:13px;line-height:1.45}.solution-tree{border:1px solid var(--line);border-radius:8px;background:var(--panel-soft);overflow:hidden}.solution-tree-title{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 10px;font-size:13px;font-weight:700;border-bottom:1px solid var(--line)}.solution-tree-legend{display:inline-flex;align-items:center;gap:4px;color:var(--muted);font-size:10px;font-weight:400}.solution-tree-legend-dot{width:8px;height:8px;border-radius:50%;margin-left:6px}.solution-tree-legend-dot.good{background:#65a900}.solution-tree-legend-dot.fail{background:#e3382e}.solution-tree-body{max-width:100%;overflow:hidden;padding:0}.solution-tree-graph{max-width:100%;overflow-x:auto;overflow-y:hidden;background:#f5f5f5}.solution-tree-svg{display:block;min-width:100%}.solution-tree-edge{fill:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round}.solution-tree-edge.good{stroke:#65a900}.solution-tree-edge.fail{stroke:#e3382e}.solution-tree-svg-node{cursor:pointer;outline:none}.solution-tree-selected{fill:#65c7ed;opacity:.9}.solution-tree-svg-stone{stroke:#141414;stroke-width:1.5}.solution-tree-svg-stone.black{fill:#292929}.solution-tree-svg-stone.white{fill:#f5f5f5;stroke:#8b8b8b}.solution-tree-stone-number{text-anchor:middle;dominant-baseline:central;font:700 10px sans-serif}.solution-tree-stone-number.black{fill:#fff}.solution-tree-stone-number.white{fill:#222}.solution-tree-terminal{fill:none;stroke-width:4}.solution-tree-terminal.good{stroke:#65a900}.solution-tree-terminal.fail{stroke:#e3382e}.solution-tree-home path{fill:#111}.solution-tree-home rect{fill:#fff}.solution-tree-home circle{fill:#111}.solver-tree-wrap{display:flex;flex-direction:column;gap:8px}.solution-tree-toggle{width:100%;border:1px solid var(--line);background:var(--panel-soft);color:var(--ink);padding:8px 10px;border-radius:8px;cursor:pointer;font-size:13px}.solution-tree-toggle:hover{border-color:var(--accent);color:var(--accent)}.solution-tree-path{padding:7px 9px;border-radius:7px;background:var(--panel-soft);color:var(--muted);font:11px ui-monospace,SFMono-Regular,Menlo,monospace;word-break:break-all}.feedback{border-radius:10px;padding:12px;font-size:15px;text-align:center}.feedback.info{background:var(--accent-soft);color:var(--accent)}.feedback.ok{background:var(--ok-soft);color:var(--ok);font-weight:700}.feedback.no{background:var(--no-soft);color:var(--no);font-weight:700}.trial-error{margin-top:5px;color:var(--no);font-size:12px}.share-message{color:var(--muted);font-size:12px;text-align:center}.feedback.ok,.feedback.no{animation:feedback-pop .22s ease-out}@keyframes feedback-pop{0%{transform:scale(.98);opacity:.72}to{transform:scale(1);opacity:1}}.tip{margin-top:8px;border-radius:10px;padding:10px 12px;font-size:14px;background:var(--panel-soft);color:var(--ink);line-height:1.5}.tip-ok{background:var(--ok-soft);color:var(--ok)}.controls{display:flex;flex-wrap:wrap;gap:8px}.shortcuts{display:none;margin-top:2px;font-size:12px;color:var(--muted);text-align:center}.controls button{flex:1;min-width:70px}@media (max-width: 720px){.app{width:100%;overflow-x:hidden;padding:max(10px,env(safe-area-inset-top)) max(12px,env(safe-area-inset-right)) max(18px,env(safe-area-inset-bottom)) max(12px,env(safe-area-inset-left))}.app-header{gap:8px;margin-bottom:10px}.app-header h1{font-size:18px}.mode-nav,.date-nav{gap:6px}.mobile-nav-trigger{order:3;width:100%;display:flex;align-items:center;gap:8px;min-height:40px;padding:7px 11px;border:1px solid var(--line);border-radius:9px;background:var(--panel);color:var(--ink);text-align:left;cursor:pointer}.mobile-nav-trigger span:first-child{color:var(--muted);font-size:13px}.mobile-nav-trigger strong{color:var(--accent);font-size:14px}.mobile-nav-trigger span:last-child{margin-left:auto;color:var(--muted);font-size:18px;line-height:1}.mode-nav{order:4;width:100%;display:none;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px;overflow:visible;padding-bottom:0}.mode-nav.mobile-open{display:grid}.mode-nav button{min-width:0;padding:8px 5px}.date-nav.pool-nav{width:100%;flex-wrap:nowrap;justify-content:flex-start;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}.date-nav.pool-nav::-webkit-scrollbar{display:none}.date-nav.pool-nav>*{flex:0 0 auto}.date-nav.source-nav{width:100%;overflow:hidden}.date-nav.source-nav .date-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.date-nav button,.date-nav select,.mode-nav button,.controls button{min-height:42px;padding:8px 13px;font-size:15px}.date-nav .today,.date-nav select{min-height:40px}.layout{flex-direction:column;gap:10px}.mobile-library-trigger{width:100%;display:flex;align-items:center;gap:8px;min-height:44px;margin:0 0 8px;padding:8px 11px;border:1px solid var(--line);border-radius:10px;background:var(--panel);color:var(--ink);text-align:left;cursor:pointer;box-shadow:0 2px 8px #0000000f}.mobile-library-trigger>span:first-child{color:var(--accent);font-weight:700}.mobile-library-trigger strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px}.mobile-library-trigger-arrow{margin-left:auto;color:var(--muted);font-size:22px;line-height:1}.mobile-quick-actions{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin:-2px 0 8px}.mobile-quick-actions button{min-height:36px;border:1px solid var(--line);border-radius:8px;background:var(--panel);color:var(--accent);font-size:13px;cursor:pointer}.mobile-quick-actions button:disabled{opacity:.45;color:var(--muted);cursor:default}.problem-list{width:100%;max-height:none;overflow:visible;display:flex;flex-direction:column;gap:4px;padding:6px}.manual-problem-list{display:none;max-height:none;overflow:visible}.mobile-library-backdrop{display:block;position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;border:0;background:#00000061;cursor:pointer}.manual-problem-list.mobile-open{display:flex;position:fixed;z-index:50;left:0;right:0;bottom:0;max-height:min(76dvh,560px);overflow-y:auto;overscroll-behavior:contain;padding:8px 10px max(10px,env(safe-area-inset-bottom));border-radius:16px 16px 0 0;box-shadow:0 -8px 30px #0000002e}.manual-problem-list.mobile-open .mobile-library-handle{display:flex;flex:0 0 auto;position:sticky;top:-8px;z-index:4;align-items:center;justify-content:center;gap:7px;min-height:24px;margin:-8px -10px 0;padding:4px 10px 5px;background:var(--panel);color:var(--muted);font-size:11px;touch-action:none}.mobile-library-handle i{width:36px;height:4px;border-radius:999px;background:var(--line)}.manual-problem-list.mobile-open .list-head{position:sticky;top:24px;z-index:3;margin:0 -10px 6px;padding:8px 10px;background:var(--panel);border-bottom:1px solid var(--line)}.mobile-library-close{display:inline-flex;align-items:center;justify-content:center;margin-left:auto;border:1px solid var(--accent);border-radius:7px;padding:4px 8px;background:var(--accent-soft);color:var(--accent);font-size:12px;cursor:pointer}.problem-list .list-head{margin-bottom:6px}.side-indicator{display:inline-block}.problem-strip{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px;overflow:visible;padding-bottom:0}.manual-problem-list{overscroll-behavior:contain}.u12-collections{gap:6px}.u12-collection{padding-top:5px}.u12-collection-toggle{min-height:32px}.problem-status-legend{flex-basis:100%}.u12-collection-strip{grid-template-columns:repeat(2,minmax(0,1fr));overflow:visible}.u12-collection-strip .problem-item{width:100%;min-width:0}.fayanglun-library-tools{padding-top:4px}.fayanglun-library-actions{grid-template-columns:minmax(98px,.75fr) minmax(0,1.25fr)}.fayanglun-continue,.fayanglun-jump button{min-height:40px}.fayanglun-range-grid{gap:5px}.fayanglun-range{min-height:40px;padding:6px 8px}.fayanglun-range-problems{grid-template-columns:repeat(2,minmax(0,1fr))}.fayanglun-range-problems .problem-item{width:100%;min-width:0}.problem-item{width:100%;min-width:0;min-height:42px;border:1px solid var(--line);background:var(--panel);padding:5px 7px;font-size:12px;white-space:normal;-webkit-user-select:none;user-select:none;scroll-snap-align:start}.problem-item.active{border-color:var(--accent)}.p-num{margin-left:4px;font-size:11px}.p-num{min-width:0;overflow:hidden;text-overflow:ellipsis}.wrong-item{min-width:0}.wrong-item .problem-item{width:100%}.wrong-del{top:6px;right:6px;width:20px;height:20px;font-size:11px}.board-wrap{flex:none;width:100%;aspect-ratio:1 / 1;max-width:calc(100vh - 240px);max-width:calc(100svh - 240px);margin:0 auto;padding:4px}.solver{flex-direction:column;gap:12px}.panel{gap:6px}.meta{align-items:center;gap:0 8px}.meta span{display:inline-flex;align-items:center;padding:0;border:0;border-radius:0;background:transparent;font-size:11px;line-height:1.4;white-space:nowrap}.meta span+span:before{content:"·";margin-right:8px;color:var(--muted);font-weight:400}.meta .type,.meta .tag,.meta .size,.meta .side{color:var(--muted)}.course-progress{padding:7px 9px}.feedback{padding:10px;font-size:14px}.tip{margin-top:4px;padding:8px 10px;font-size:13px}.fayanglun-editor{padding:12px}.editor-head{align-items:center}.editor-layout{flex-direction:column;gap:12px}.editor-board-wrap{width:100%;max-width:none}.editor-panel{width:100%}.editor-fields{gap:8px}.editor-fields input,.editor-fields select,.editor-panel textarea{font-size:16px}.editor-tools button,.editor-actions button,.editor-head button{min-height:40px}.editor-stepper{margin-top:7px}.editor-save-actions{position:sticky;bottom:max(8px,env(safe-area-inset-bottom));z-index:20;padding:6px;margin:4px -6px -6px;border:1px solid var(--line);border-radius:10px;background:var(--panel);box-shadow:0 2px 14px #0000001f}.editor-save-actions .editor-primary{flex:1}.panel{width:100%;flex-direction:row;flex-wrap:wrap;align-items:center;gap:8px}.panel .feedback{order:-1;width:100%}.meta{flex:1;min-width:0}.meta .fav-btn{width:40px;height:40px;font-size:18px}.controls{width:100%;display:grid;grid-template-columns:repeat(4,minmax(0,1fr))}.controls{position:sticky;bottom:max(8px,env(safe-area-inset-bottom));z-index:20;padding:6px;border:1px solid var(--line);border-radius:11px;background:var(--panel);box-shadow:0 2px 14px #0000001f}.controls button{flex:none;min-width:0;min-height:44px;padding:7px 4px;font-size:14px}.controls .control-share,.controls .control-next{grid-column:span 2}.controls .control-share{background:var(--accent-soft);color:var(--accent)}.controls .control-next{border-color:var(--accent);background:var(--accent);color:var(--on-accent);font-weight:700}.controls .control-next:disabled{border-color:var(--line);background:var(--panel);color:var(--muted)}.controls .control-exit{grid-column:span 2}.solution-tree-title{min-height:40px;padding:7px 9px}.solution-tree-legend{gap:3px;font-size:9px}}@media (max-width: 440px){.date-nav .d-word{display:none}.date-nav button{min-width:40px;padding:8px 10px}.date-nav .today{flex:1}.app-header{justify-content:space-between}.date-nav{width:100%;justify-content:space-between}.date-label{flex-shrink:0}}@media (min-width: 721px){.shortcuts{display:block}}@media (orientation: landscape) and (max-height: 560px){.solver{flex-direction:row;align-items:flex-start}.board-wrap{flex:none;width:auto;height:calc(100vh - 150px);height:calc(100dvh - 150px);max-width:none;aspect-ratio:1 / 1}.panel{width:220px;flex-direction:column}.panel .feedback{order:0;width:100%}.controls{grid-template-columns:1fr 1fr}.meta{flex:none}}
