:root{color-scheme:light;font-family:Inter,Noto Sans TC,PingFang TC,Microsoft JhengHei,system-ui,sans-serif;color:#1f2937;background:#f5f7fb;font-synthesis:none;text-rendering:optimizeLegibility}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;overflow:hidden}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.55}.appShell{height:100vh;min-height:0;display:grid;grid-template-rows:auto 1fr;overflow:hidden}.topBar{height:68px;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:0 20px;background:#fff;border-bottom:1px solid #d8dee9}.topBar h1,.viewerHeader h2,.paneHeader h2,.versionPane h3,.loginPanel h1{margin:0;letter-spacing:0}.topBar h1{font-size:20px}.versionBadge{display:inline-flex;align-items:center;min-height:22px;padding:0 7px;border:1px solid #cbd5e1;background:#f8fafc;color:#475569;font-size:12px;font-weight:600;vertical-align:middle}.topBar p,.viewerHeader p{margin:4px 0 0;color:#64748b;font-size:13px}.topActions,.viewerActions,.paneHeader,.paneHeaderActions,.versionPaneHeader,.toolBar{display:flex;align-items:center;gap:8px}.workspace{min-height:0;display:grid;grid-template-columns:minmax(280px,340px) minmax(0,1fr);position:relative;overflow:hidden}.workspace.libraryCollapsed{grid-template-columns:52px minmax(0,1fr)}.workspace.hasSelectedScore.libraryCollapsed{grid-template-columns:minmax(0,1fr)}.workspace.hasSelectedScore.libraryCollapsed .libraryPane.collapsed{display:none}.workspace.hasSelectedScore .libraryPane.expanded{grid-template-columns:minmax(0,1fr)}.workspace.hasSelectedScore .libraryPane.expanded>.paneRailButton{display:none}.libraryPane,.memberPane,.versionPane{background:#fff;border-right:1px solid #d8dee9}.libraryPane{min-height:0;display:flex;flex-direction:column;padding:0}.libraryPane.collapsed{align-items:center;padding:8px;overflow:hidden}.libraryPane.expanded{display:grid;grid-template-columns:minmax(0,1fr) 52px}.libraryPaneContent{min-width:0;min-height:0;display:flex;flex-direction:column;overflow:hidden;padding:14px}.paneHeader{justify-content:space-between;margin-bottom:12px}.paneHeaderActions{margin-left:auto}.paneHeader h2,.versionPane h3{font-size:16px}.searchBox{height:40px;display:flex;align-items:center;gap:8px;padding:0 10px;border:1px solid #cbd5e1;background:#f8fafc}.searchBox input,.devLogin input,.devLogin select,.uploadPanel input,.memberForm input,.memberForm select{width:100%;min-width:0;border:1px solid #cbd5e1;background:#fff;padding:9px 10px;color:#111827}.searchBox input{border:0;background:transparent;padding:0;outline:0}.scoreList{min-height:0;overflow:auto;padding-top:12px;display:grid;align-content:start;gap:8px}.scoreItem{width:100%;display:grid;gap:5px;text-align:left;padding:12px;border:1px solid #d8dee9;background:#fff}.scoreItem.active{border-color:#2563eb;background:#eff6ff}.scoreItem strong,.memberItem strong{font-size:15px;color:#111827}.scoreItem span,.memberItem span,.versionItem span{color:#475569;font-size:13px}.scoreItem small,.memberItem small,.versionItem small{color:#64748b;font-size:12px}.scoreItem em{width:fit-content;padding:2px 6px;border:1px solid #cbd5e1;color:#475569;background:#f8fafc;font-size:12px;font-style:normal}.viewerPane{min-width:0;min-height:0;display:grid;grid-template-rows:auto auto 1fr;position:relative;overflow:hidden}.viewerPane:fullscreen{width:100vw;height:100vh;background:#f5f7fb}.viewerPane.fullscreenViewer{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;width:100vw;height:100vh;grid-template-rows:1fr;background:#f5f7fb}.viewerHeader{min-height:68px;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 16px;background:#fff;border-bottom:1px solid #d8dee9}.viewerHeader h2{font-size:18px}.toolBar{position:sticky;top:0;z-index:16;min-height:52px;flex-wrap:wrap;padding:8px 12px;background:#f8fafc;border-bottom:1px solid #d8dee9;box-shadow:0 3px 10px #0f172a1a}.viewerBody{min-height:0;display:grid;grid-template-columns:minmax(0,1fr) 260px;overflow:hidden}.viewerPane.versionsCollapsed .viewerBody{grid-template-columns:minmax(0,1fr) 52px}.viewerPane.libraryRailVisible .viewerBody{grid-template-columns:52px minmax(0,1fr) 260px}.viewerPane.libraryRailVisible.versionsCollapsed .viewerBody{grid-template-columns:52px minmax(0,1fr) 52px}.documentScroller{min-width:0;min-height:0;overflow:auto;padding:18px;display:grid;align-content:start;justify-items:center;gap:18px;background:#e8edf5}.fullscreenViewer .viewerHeader,.fullscreenViewer .toolBar,.fullscreenViewer .libraryRail,.fullscreenViewer .versionPane{display:none}.fullscreenViewer .viewerBody{grid-template-columns:minmax(0,1fr)}.fullscreenViewer .documentScroller{align-content:center;justify-items:center;gap:0;padding:10px;background:#111827}.pageSurface{width:100%;position:relative;background:#fff;box-shadow:0 2px 12px #0f172a2e}.pageSurface canvas,.pageSurface img,.annotationLayer{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%}.pageSurface img{object-fit:contain;-webkit-user-select:none;user-select:none}.annotationLayer{touch-action:none}.annotationTextEditor{position:absolute;z-index:25;display:flex;gap:6px;transform:translate(-8px,-100%);padding:6px;background:#fff;box-shadow:0 8px 18px #0f172a33;border:1px solid #cbd5e1}.annotationTextEditor input,.annotationTextEditor select{width:140px;min-height:34px;padding:6px 8px;border:1px solid #94a3b8;background:#fff}.annotationTextEditor.choiceEditor select{width:86px;font-size:18px;text-align:center}.annotationTextEditor button{padding:6px 8px;border:1px solid #cbd5e1;background:#fff}.annotation{pointer-events:auto}.annotation.selected{filter:drop-shadow(0 0 5px rgb(37 99 235 / 95%)) drop-shadow(0 0 2px #ffffff)}.resizeHandle{fill:#2563eb;stroke:#fff;stroke-width:1px;vector-effect:non-scaling-stroke;cursor:grab;pointer-events:auto}.selectionBadgeOuter{fill:#2563eb;stroke:#fff;stroke-width:1.3px;vector-effect:non-scaling-stroke;pointer-events:none}.selectionBadgeInner{fill:#fff;pointer-events:none}.orderText{fill:#fff;font-weight:700;pointer-events:none}.labelText{fill:#111827;font-weight:700;pointer-events:none}.tableText{fill:#111827;font-weight:600;pointer-events:none}.tableTextHeader{font-weight:800}.tableEditorOverlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:80;display:grid;place-items:center;padding:18px;background:#0f172a47}.tableEditorDialog{width:min(420px,100%);max-height:min(80vh,680px);overflow:auto;display:grid;gap:12px;padding:14px;background:#fff;border:1px solid #cbd5e1;box-shadow:0 18px 46px #0f172a38}.tableEditorGrid{display:grid;min-width:260px;overflow:auto;border-top:1px solid #9ca3af;border-left:1px solid #9ca3af}.tableEditorLabelCell,.tableEditorCell,.tableEditorDeleteButton,.tableEditorDeleteSpacer{min-width:0;min-height:32px;border:0;border-right:1px solid #9ca3af;border-bottom:1px solid #9ca3af;background:#fff}.tableEditorLabelCell{display:grid;place-items:center;color:#111827;font-weight:800}.tableEditorCell{width:100%;height:100%;padding:3px 5px;text-align:center;line-height:1.35}.tableEditorNoteCell{min-height:42px;resize:vertical}.tableEditorDeleteButton,.tableEditorDeleteSpacer{min-height:34px}.tableEditorDeleteButton{color:#991b1b}.tableEditorActions button{min-height:36px;padding:0 10px;border:1px solid #cbd5e1;background:#fff}.tableEditorActions{display:flex;justify-content:flex-end;gap:8px}.fullscreenControls{position:fixed;left:50%;bottom:14px;z-index:120;display:inline-flex;align-items:center;gap:6px;padding:7px;transform:translate(-50%);background:#0f172ac2;color:#fff;box-shadow:0 10px 24px #00000047;opacity:1;transition:opacity .18s ease,transform .18s ease}.fullscreenControls.hidden{pointer-events:none;opacity:0;transform:translate(-50%) translateY(12px)}.fullscreenControls button,.fullscreenNav{min-height:36px;border:1px solid rgb(255 255 255 / 24%);background:#ffffff1f;color:#fff}.fullscreenControls button{display:inline-flex;align-items:center;gap:4px;padding:0 9px}.fullscreenControls span{min-width:54px;text-align:center;font-weight:700}.fullscreenNav{position:fixed;top:50%;z-index:120;width:44px;transform:translateY(-50%);opacity:1;transition:opacity .18s ease}.fullscreenNav.hidden{pointer-events:none;opacity:0}.fullscreenNavPrev{left:12px}.fullscreenNavNext{right:12px}.versionPane{border-right:0;border-left:1px solid #d8dee9;padding:0;overflow:hidden}.versionPane:not(.collapsed){display:grid;grid-template-columns:52px minmax(0,1fr)}.libraryRail{display:flex;justify-content:center;padding:8px;overflow:hidden;background:#fff;border-right:1px solid #d8dee9}.versionPane.collapsed{display:flex;justify-content:center;padding:8px;overflow:hidden}.versionPaneContent{min-width:0;min-height:0;display:grid;align-content:start;gap:10px;overflow:auto;padding:14px}.versionPaneHeader{justify-content:space-between}.versionList,.memberList{display:grid;gap:8px}.versionItem,.memberItem{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px;border:1px solid #d8dee9;background:#fff}.versionItem div,.memberItem{min-width:0;display:grid;gap:4px}.memberPane{position:absolute;top:0;right:0;bottom:0;width:min(380px,100%);z-index:20;padding:14px;box-shadow:-8px 0 18px #0f172a29;overflow:auto}.memberForm,.uploadPanel,.devLogin{display:grid;gap:10px}.memberForm,.uploadPanel{margin-bottom:14px;padding:12px;border:1px solid #d8dee9;background:#f8fafc}.formGrid{display:grid;grid-template-columns:1fr 1fr;gap:8px}label{display:grid;gap:5px;font-size:13px;color:#334155}.primaryButton,.secondaryButton,.iconButton,.toolButton{position:relative}.toolButton:after{content:attr(data-tooltip);position:absolute;z-index:30;left:50%;bottom:calc(100% + 8px);transform:translate(-50%);white-space:nowrap;pointer-events:none;opacity:0;padding:6px 8px;background:#111827;color:#fff;font-size:12px;box-shadow:0 6px 14px #0f172a38}.toolButton:hover:after,.toolButton:focus-visible:after{opacity:1}.toolButton{min-width:40px;min-height:36px;display:inline-flex;align-items:center;justify-content:center;gap:7px;border:1px solid transparent;text-decoration:none}.toolButton span{display:none}.viewerActions button{min-width:40px;padding:0 10px}.viewerActions button[aria-label]:after{content:attr(aria-label);position:absolute;top:calc(100% + 8px);left:50%;z-index:40;transform:translate(-50%);white-space:nowrap;pointer-events:none;opacity:0;padding:6px 8px;background:#111827;color:#fff;font-size:12px;box-shadow:0 6px 14px #0f172a38}.viewerActions button[aria-label]:hover:after,.viewerActions button[aria-label]:focus-visible:after{opacity:1}.viewerActions .actionLabel{display:none}.primaryButton{background:#2563eb;color:#fff;padding:0 12px}.secondaryButton,.toolButton{background:#fff;color:#1f2937;border-color:#cbd5e1;padding:0 11px}.iconButton{width:36px;background:#fff;color:#1f2937;border-color:#cbd5e1}.toolButton.active{border-color:#2563eb;background:#dbeafe;color:#1d4ed8}.toolButton.danger{color:#b91c1c}.libraryBackButton{display:none}.libraryToggleButton.active{border-color:#15803d;background:#dcfce7;color:#166534}.paneRailButton{min-height:36px;display:inline-flex;align-items:center;justify-content:center;gap:6px;border:1px solid #cbd5e1;background:#fff;color:#1f2937;padding:0 9px}.libraryPane .paneRailButton,.libraryRail .paneRailButton,.versionPane .paneRailButton{width:35px;min-height:120px;padding:8px 0;flex-direction:column}.libraryPane.expanded>.paneRailButton,.versionPane:not(.collapsed)>.paneRailButton{margin:8px}.libraryPane .paneRailButton span,.libraryRail .paneRailButton span,.versionPane .paneRailButton span{writing-mode:vertical-rl;white-space:nowrap;font-size:12px}.segmentedControl{display:grid;grid-template-columns:1fr 1fr;gap:0;margin-bottom:10px;border:1px solid #cbd5e1}.segmentedControl button{min-height:34px;border:0;background:#fff;color:#334155}.segmentedControl button+button{border-left:1px solid #cbd5e1}.segmentedControl button.active{background:#dbeafe;color:#1d4ed8;font-weight:700}.permissionSelect{min-height:36px;border:1px solid #cbd5e1;background:#fff;color:#1f2937;padding:0 10px}.wakeLockButton.active{border-color:#15803d;background:#dcfce7;color:#166534}.activeVersionIcon,.statusText{color:#15803d}.errorText{color:#b91c1c;margin:0;font-size:13px}.errorText.inline,.statusText,.dirtyState{padding:0 6px;font-size:13px}.dirtyState{color:#b45309}.centerState,.emptyState{display:grid;place-items:center;color:#64748b;min-height:160px}.centerState.compact,.emptyState.compact{min-height:56px}.emptyViewer{place-items:center;color:#64748b;font-size:18px}.loginScreen{min-height:100vh;display:grid;place-items:center;padding:18px;background:#e8edf5}.loginPanel{width:min(420px,100%);display:grid;gap:18px;padding:24px;background:#fff;border:1px solid #d8dee9;box-shadow:0 14px 36px #0f172a24}.loginButton{min-height:44px}.loginNotice{margin:0;color:#475569;font-size:14px}@media(max-width:980px){.workspace{grid-template-columns:260px minmax(0,1fr)}.viewerBody,.viewerPane.libraryRailVisible .viewerBody,.viewerPane.libraryRailVisible.versionsCollapsed .viewerBody{grid-template-columns:minmax(0,1fr)}.libraryRail,.versionPane,.toolButton span{display:none}.appShell.scoreOpen{grid-template-rows:1fr}.appShell.scoreOpen .topBar,.workspace.hasSelectedScore .libraryPane,.workspace.hasSelectedScore .viewerHeader{display:none}.workspace.hasSelectedScore{grid-template-columns:minmax(0,1fr)}.workspace.hasSelectedScore .viewerPane{grid-template-rows:auto minmax(0,1fr)}.workspace.hasSelectedScore .toolBar{position:sticky;top:0;min-height:44px;flex-wrap:nowrap;overflow-x:auto;padding:6px}.workspace.hasSelectedScore .toolButton{min-width:40px;min-height:34px;padding:0 9px}.workspace.hasSelectedScore .libraryBackButton{display:inline-flex;min-width:92px;border-color:#2563eb;color:#1d4ed8;background:#eff6ff}.workspace.hasSelectedScore .libraryBackButton span{display:inline}.workspace.hasSelectedScore .permissionSelect{min-width:64px;min-height:34px}.workspace.hasSelectedScore .documentScroller{padding:8px;gap:12px}}@media(max-width:720px){.topBar,.viewerHeader{height:auto;align-items:flex-start;flex-direction:column}.workspace{grid-template-columns:1fr;grid-template-rows:auto minmax(0,1fr)}.libraryPane{max-height:48vh;overflow:auto}.libraryPane{border-right:0;border-bottom:1px solid #d8dee9}.tableEditorDialog{padding:10px}.tableEditorGrid{min-width:260px}.fullscreenControls{max-width:calc(100vw - 18px);overflow-x:auto;bottom:8px}.fullscreenNav{width:38px}}
