papilot 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -9,8 +9,8 @@
9
9
  rel="icon"
10
10
  href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Crect width='16' height='16' rx='3' fill='%232b6e5c'/%3E%3Cpath d='M4 8.5l2.5 2.5L12 5' stroke='white' stroke-width='2' fill='none'/%3E%3C/svg%3E"
11
11
  />
12
- <script type="module" crossorigin src="/assets/index-DqkrTw0t.js"></script>
13
- <link rel="stylesheet" crossorigin href="/assets/index-Db7pq4Cj.css">
12
+ <script type="module" crossorigin src="/assets/index-xLeqYBJt.js"></script>
13
+ <link rel="stylesheet" crossorigin href="/assets/index-Bg-VqnPa.css">
14
14
  </head>
15
15
  <body>
16
16
  <div id="root"></div>
@@ -667,9 +667,7 @@ export function ReviewApp({
667
667
  {actionBar(index)}
668
668
  {kindLabel && <span className="change-kind">{kindLabel}</span>}
669
669
  {status !== "pending" && (
670
- <span className="badge">
671
- {t(STATE[status] ?? status)}
672
- </span>
670
+ <span className="badge">{t(STATE[status] ?? status)}</span>
673
671
  )}
674
672
  <button
675
673
  className="link copy-reference"
@@ -855,10 +853,12 @@ export function ReviewApp({
855
853
  "Accept the {n} undecided changes in this round. Decided and commented changes stay as they are. Undo reverses the whole batch.",
856
854
  )
857
855
  }
856
+ aria-label={t("Accept all ({n})", { n: count.pending })}
858
857
  aria-describedby={state?.decisionLock ? "review-lock" : undefined}
859
858
  onClick={() => void decide("accept", undecided)}
860
859
  >
861
- {t("Accept all ({n})", { n: count.pending })}
860
+ <span className="batch-label">{t("Accept all")}</span>
861
+ <span className="batch-count">{count.pending}</span>
862
862
  </button>
863
863
  )}
864
864
  {count.pending > 1 && (
@@ -878,10 +878,12 @@ export function ReviewApp({
878
878
  "Reject the {n} undecided changes in this round. Decided and commented changes stay as they are. Undo reverses the whole batch.",
879
879
  )
880
880
  }
881
+ aria-label={t("Reject all ({n})", { n: count.pending })}
881
882
  aria-describedby={state?.decisionLock ? "review-lock" : undefined}
882
883
  onClick={() => void decide("reject", undecided)}
883
884
  >
884
- {t("Reject all ({n})", { n: count.pending })}
885
+ <span className="batch-label">{t("Reject all")}</span>
886
+ <span className="batch-count">{count.pending}</span>
885
887
  </button>
886
888
  )}
887
889
  {/* "All decided" would repeat the meter's "N of N decided". */}
@@ -958,7 +960,9 @@ export function ReviewApp({
958
960
  title={
959
961
  state.decisionLock ||
960
962
  t("Undo {action} · {changes}", {
961
- action: t(ACTION[state.undo.kind] ?? state.undo.kind).toLowerCase(),
963
+ action: t(
964
+ ACTION[state.undo.kind] ?? state.undo.kind,
965
+ ).toLowerCase(),
962
966
  changes: tn(
963
967
  undoChanges.length,
964
968
  "Change {list}",
@@ -976,7 +980,9 @@ export function ReviewApp({
976
980
  className="ghost"
977
981
  onClick={() => {
978
982
  if (pinned)
979
- location.href = withLanguage(`?task=${encodeURIComponent(task)}`);
983
+ location.href = withLanguage(
984
+ `?task=${encodeURIComponent(task)}`,
985
+ );
980
986
  else {
981
987
  setHistory(false);
982
988
  setCurrent(nextPending(stops, decisions));
@@ -1074,6 +1080,8 @@ export function ReviewApp({
1074
1080
  : "There are no new changes to review. Previous decisions are available in History.",
1075
1081
  )}
1076
1082
  </span>
1083
+ {/* A host such as Papilot puts its next step here, for example a commit. */}
1084
+ <div className="review-complete-actions" />
1077
1085
  </div>
1078
1086
  )}
1079
1087
  <div className="document">
@@ -1113,7 +1121,9 @@ export function ReviewApp({
1113
1121
  {detail.loose.length > 0 && (
1114
1122
  <section className="part">
1115
1123
  <h2 className="part-title">
1116
- {detail.sections.length ? t("Other changes") : t("Changes")}
1124
+ {detail.sections.length
1125
+ ? t("Other changes")
1126
+ : t("Changes")}
1117
1127
  </h2>
1118
1128
  {detail.loose.map((block) => change(block, index++, false))}
1119
1129
  </section>
@@ -205,6 +205,20 @@ kbd {
205
205
  border-radius: 999px;
206
206
  box-shadow: 0 1px 3px rgb(0 0 0 / 0.05);
207
207
  }
208
+ /* How many undecided changes the batch decides. */
209
+ .batch-count {
210
+ display: inline-block;
211
+ min-width: 18px;
212
+ margin-left: 6px;
213
+ padding: 0 5px;
214
+ border-radius: 999px;
215
+ background: rgb(0 0 0 / 0.06);
216
+ font-size: 11.5px;
217
+ line-height: 18px;
218
+ text-align: center;
219
+ font-variant-numeric: tabular-nums;
220
+ color: var(--muted);
221
+ }
208
222
  .overview-link {
209
223
  flex: none;
210
224
  text-decoration: none;
@@ -1339,6 +1353,16 @@ body {
1339
1353
  .review-complete span {
1340
1354
  color: var(--muted);
1341
1355
  }
1356
+ /* A host's next step, such as a commit, at the end of the card. */
1357
+ .review-complete-actions {
1358
+ display: flex;
1359
+ align-items: center;
1360
+ gap: 8px;
1361
+ margin-left: auto;
1362
+ }
1363
+ .review-complete-actions:empty {
1364
+ display: none;
1365
+ }
1342
1366
  @media (max-width: 680px) {
1343
1367
  .review-mode {
1344
1368
  padding: 5px 8px;
@@ -50,6 +50,8 @@ export const zhCN: Record<string, string> = {
50
50
  "{decided} of {total} decided": "已决定 {decided}/{total}",
51
51
  "Accept all ({n})": "全部接受({n})",
52
52
  "Reject all ({n})": "全部拒绝({n})",
53
+ "Accept all": "全部接受",
54
+ "Reject all": "全部拒绝",
53
55
  "Accept the {n} undecided change in this round. Decided and commented changes stay as they are. Undo reverses the whole batch.":
54
56
  "接受本轮 {n} 处待定修改。已决定和已评论的修改保持不变。撤销会还原整批操作。",
55
57
  "Accept the {n} undecided changes in this round. Decided and commented changes stay as they are. Undo reverses the whole batch.":
@@ -1 +0,0 @@
1
- :root{--bg:#fff;--sidebar:#f9f9f9;--bg-subtle:#fafafa;--bg-muted:#f4f4f4;--bg-hover:#efefef;--bg-active:#e7e7e7;--canvas:#f3f3f3;--line:#e8e8e8;--line-strong:#d6d6d6;--text:#171717;--text-2:#525252;--text-3:#8a8a8a;--accent:#2563eb;--accent-hover:#1d4ed8;--accent-soft:#eff6ff;--accent-line:#bfdbfe;--primary:#2563eb;--primary-hover:#1d4ed8;--green:#15803d;--green-soft:#f0fdf4;--purple:#7c3aed;--purple-soft:#f5f3ff;--red:#dc2626;--red-soft:#fef2f2;--red-line:#fecaca;--amber-soft:#fffbeb;--amber-line:#fde68a;--amber-text:#92400e;--shadow-xs:0 1px 2px #0000000f;--shadow-sm:0 1px 2px #0000000d,0 3px 8px #0000000d;--float:0 2px 4px #0000000a,0 14px 36px #00000021;--ring:0 0 0 3px #2563eb2e;--line-hover:#c4c4c4;--danger:#dc2626;--danger-hover:#b91c1c;--scroll-thumb:#0000001f;--scroll-hover:#0003;--scroll-active:#00000057;--pdf-filter:none;--pdf-page:#fff;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-theme=dark]{--bg:#26272b;--sidebar:#202124;--bg-subtle:#2a2b2f;--bg-muted:#303135;--bg-hover:#37383c;--bg-active:#404145;--canvas:#1e1f22;--line:#38393e;--line-strong:#4b4c52;--line-hover:#63646b;--text:#ececee;--text-2:#c2c3c9;--text-3:#9c9da5;--accent:#8ab4ff;--accent-hover:#b2ceff;--accent-soft:#2b3651;--accent-line:#445c85;--primary:#2563eb;--primary-hover:#1d4ed8;--green:#7bd5a0;--green-soft:#243a2f;--purple:#bfa1ff;--purple-soft:#372d48;--red:#ff9696;--red-soft:#46292e;--red-line:#733b45;--amber-soft:#3e3424;--amber-line:#6d5631;--amber-text:#eac584;--shadow-xs:0 1px 2px #0003;--shadow-sm:0 1px 2px #0000002e,0 3px 8px #0003;--float:0 2px 4px #0003,0 14px 36px #0006;--ring:0 0 0 3px #8ab4ff38;--scroll-thumb:#ffffff29;--scroll-hover:#ffffff40;--scroll-active:#ffffff61;--pdf-filter:invert(.84) hue-rotate(180deg);--pdf-page:#292929;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}@font-face{font-family:Paper Serif;src:url(/assets/TeXGyrePagellaX-Regular-DQJjZE_L.otf)format("opentype");font-weight:400;font-display:swap}@font-face{font-family:Paper Serif;src:url(/assets/TeXGyrePagellaX-Bold-CEtYdOXj.otf)format("opentype");font-weight:700;font-display:swap}@font-face{font-family:Paper Serif;src:url(/assets/TeXGyrePagellaX-Italic-CSuYIstn.otf)format("opentype");font-style:italic;font-display:swap}@font-face{font-family:Paper Mono;src:url(/assets/Inconsolatazi4-Regular-Dbtq7t_r.otf)format("opentype");font-weight:400;font-display:swap}:root{--serif:"Paper Serif","TeX Gyre Pagella",Palatino,"Palatino Linotype","Songti SC","Noto Serif CJK SC",Georgia,serif;--sans:-apple-system,BlinkMacSystemFont,"SF Pro Text","Segoe UI","PingFang SC","Hiragino Sans GB","Noto Sans SC",system-ui,sans-serif;--mono:"Paper Mono",ui-monospace,SFMono-Regular,Menlo,monospace;--r-sm:6px;--r:8px;--r-md:10px;--r-lg:14px;--r-xl:18px;--ease:cubic-bezier(.2,.8,.2,1);font:14px/1.5 var(--sans);color:var(--text);background:var(--bg);font-synthesis:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-kerning:normal}*{box-sizing:border-box}body{background:var(--bg);margin:0}button,input,select,textarea{font:inherit;color:inherit}button,a,input,textarea,select{-webkit-tap-highlight-color:transparent}button{cursor:pointer;background:0 0;border:0;padding:0}button:disabled{opacity:.45;cursor:default}a{color:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}input:focus-visible,textarea:focus-visible,select:focus-visible{outline:none}::selection{background:#2563eb2e}svg{flex-shrink:0}h1,h2,h3,p{margin-top:0}code{font-family:var(--mono);font-variant-ligatures:none}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.muted{color:var(--text-3);font-size:13px;line-height:1.6}.inline-error{color:var(--red);white-space:pre-wrap;overflow-wrap:anywhere;font-size:13px;line-height:1.6}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-corner{background:0 0}::-webkit-scrollbar-thumb{background-color:var(--scroll-thumb);background-clip:padding-box;border:3px solid #0000;border-radius:999px}:hover::-webkit-scrollbar-thumb{background-color:var(--scroll-hover)}::-webkit-scrollbar-thumb:hover{background-color:var(--scroll-active);border-width:2px}@supports not selector(::-webkit-scrollbar){*{scrollbar-width:thin;scrollbar-color:var(--scroll-hover) transparent}}.button{border-radius:var(--r);white-space:nowrap;border:1px solid #0000;justify-content:center;align-items:center;gap:7px;height:34px;padding:0 14px;font-size:14px;font-weight:500;text-decoration:none;transition:background-color .15s,border-color .15s,box-shadow .15s;display:inline-flex}.button.compact{border-radius:7px;height:30px;padding:0 11px;font-size:13px}.primary{background:var(--primary);color:#fff;box-shadow:var(--shadow-xs)}.primary:hover:not(:disabled){background:var(--primary-hover)}.secondary{background:var(--bg);border-color:var(--line-strong);color:var(--text);box-shadow:var(--shadow-xs)}.secondary:hover:not(:disabled){background:var(--bg-subtle);border-color:var(--line-hover)}.ghost{color:var(--text-2)}.ghost:hover{background:var(--bg-hover);color:var(--text)}.danger{background:var(--danger);color:#fff;box-shadow:var(--shadow-xs)}.danger:hover:not(:disabled){background:var(--danger-hover)}.icon-button{border-radius:var(--r);width:32px;height:32px;color:var(--text-2);flex-shrink:0;justify-content:center;align-items:center;text-decoration:none;transition:background-color .15s,color .15s;display:inline-flex}.icon-button:hover:not(:disabled),.icon-button[aria-expanded=true]{background:var(--bg-hover);color:var(--text)}.spinner{border:2px solid var(--line-strong);border-top-color:var(--text-2);border-radius:50%;flex-shrink:0;width:14px;height:14px;animation:.8s linear infinite spin;display:inline-block}.spinner.light{border-color:#fff #ffffff59 #ffffff59}.spinner.large{width:22px;height:22px}.app-shell{background:var(--bg);height:100dvh;display:flex;overflow:hidden}.main{background:var(--bg);flex-direction:column;flex:1;min-width:0;height:100dvh;min-height:0;display:flex;overflow:hidden}.sidebar{background:var(--sidebar);border-right:1px solid var(--line);flex-direction:column;flex-shrink:0;width:272px;height:100dvh;padding:0 10px 10px;display:flex}.sidebar-collapsed>.sidebar{display:none}.sidebar-header{flex-shrink:0;justify-content:space-between;align-items:center;height:58px;padding:0 2px 0 8px;display:flex}.brand{color:var(--text);font:400 20px/1 var(--serif);letter-spacing:-.005em;align-items:center;gap:10px;text-decoration:none;display:flex}.brand-mark{width:24px;height:24px;display:block}.sidebar-section{color:var(--text-3);align-items:center;gap:6px;margin:0 0 4px;padding:0 10px;font-size:12px;font-weight:500;display:flex}.count{font-variant-numeric:tabular-nums;color:var(--text-3);font-size:11.5px;font-weight:500}.sidebar-actions{flex-direction:column;gap:1px;margin-bottom:16px;display:flex}.sidebar-actions>.menu-anchor{display:flex}.project-switcher{border-radius:var(--r-md);width:100%;min-height:40px;font:400 17px/1.3 var(--serif);text-align:left;color:var(--text);align-items:center;gap:8px;margin-bottom:6px;padding:6px 10px;transition:background-color .15s;display:flex}.project-switcher:hover,.project-switcher[aria-expanded=true]{background:var(--bg-hover)}.project-switcher>svg{color:var(--text-3)}.project-switcher-name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.nav-link,.add-project{border-radius:var(--r);width:100%;min-height:34px;color:var(--text);text-align:left;align-items:center;gap:10px;padding:0 10px;font-size:14px;transition:background-color .12s,box-shadow .12s;display:flex}.nav-link>svg,.add-project>svg{color:var(--text-3)}.nav-link:hover:not(:disabled),.add-project:hover:not(:disabled){background:var(--bg-hover)}.nav-link.active{background:var(--bg);box-shadow:var(--shadow-xs),0 0 0 1px var(--line);font-weight:500}.nav-link.active>svg{color:var(--accent)}.nav-label{flex-shrink:0}.nav-meta{text-align:right;min-width:0;color:var(--text-3);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:12px;font-weight:400;overflow:hidden}.add-project{border:1px dashed var(--line-strong);min-height:40px;margin-bottom:6px}.task-list{flex:1;margin:0 -4px;padding:2px 4px;overflow:auto}.task-row{border-radius:var(--r-md);align-items:center;gap:2px;min-width:0;margin-bottom:2px;transition:background-color .12s,box-shadow .12s;display:flex;position:relative}.task-row:hover{background:var(--bg-hover)}.task-row.active{background:var(--bg);box-shadow:var(--shadow-xs),0 0 0 1px var(--line)}.task-link{text-align:left;border-radius:var(--r-md);flex-direction:column;flex:1;gap:2px;min-width:0;padding:8px 4px 8px 10px;display:flex}.task-title{color:var(--text);text-overflow:ellipsis;white-space:nowrap;font-size:14px;line-height:1.35;overflow:hidden}.task-row.active .task-title{font-weight:500}.task-meta{align-items:center;gap:6px;min-width:0;font-size:12.5px;display:flex}.task-meta .status{text-overflow:ellipsis;min-width:0;overflow:hidden}.task-time{color:var(--text-3);font-variant-numeric:tabular-nums;flex-shrink:0;font-size:12px}.task-time:before{content:"·";margin-right:6px}.task-badge{background:var(--accent-soft);min-width:20px;height:20px;color:var(--accent);text-align:center;font-variant-numeric:tabular-nums;border-radius:999px;flex-shrink:0;padding:0 6px;font-size:11.5px;font-weight:600;line-height:20px}.task-row>.menu-anchor{margin-right:3px}.menu-anchor{flex-shrink:0;align-items:center;display:inline-flex}.task-row .more-button{opacity:0;width:28px;height:28px;transition:opacity .12s,background-color .12s}.task-row:hover .more-button,.task-row:focus-within .more-button,.task-row .more-button[aria-expanded=true]{opacity:1}@media (hover:none){.task-row .more-button{opacity:1}}.task-list-empty{color:var(--text-3);padding:8px 10px;font-size:13px;line-height:1.6}.task-rename{flex:1;min-width:0;padding:5px 4px 5px 6px}.task-rename input{border:1px solid var(--accent);border-radius:var(--r);background:var(--bg);width:100%;height:34px;box-shadow:var(--ring);outline:none;padding:0 9px;font-size:14px}.sidebar-preferences{border-top:1px solid var(--line);margin-top:8px;padding-top:8px}.settings-link{min-height:40px;color:var(--text-2)}.sidebar-footer{border-top:1px solid var(--line);margin-top:8px;padding:10px 10px 2px}.host-status{color:var(--text-2);align-items:center;gap:8px;font-size:13px;display:flex}.connection-dot{background:var(--text-3);border-radius:50%;width:7px;height:7px}.connection-dot.connected{background:#22c55e;box-shadow:0 0 0 3px #22c55e2e}.host-state{color:var(--text-3);margin-left:auto;font-size:12px}.host-caption{color:var(--text-3);margin-top:3px;padding-left:15px;font-size:12px}.sidebar-scrim{display:none}.status{color:var(--text-2);white-space:nowrap;align-items:center;gap:6px;font-size:12.5px;display:inline-flex}.status i{background:currentColor;border-radius:50%;flex-shrink:0;width:6px;height:6px;display:block}.status.running,.status.building,.status.queued{color:var(--accent)}.status.running i,.status.building i{animation:1.4s ease-in-out infinite pulse}.status.reviewing{color:var(--green)}.status.reviewing.done,.status.idle,.status.interrupted{color:var(--text-3)}.status.waiting_input{color:var(--purple)}.status.failed,.status.uncertain,.status.deleting{color:var(--red)}.topbar{border-bottom:1px solid var(--line);background:var(--bg);flex-shrink:0;align-items:center;gap:10px;height:56px;padding:0 14px;display:flex}.breadcrumb{flex:1;align-items:center;gap:10px;min-width:0;display:flex}.project-name{font:400 15px/1.3 var(--serif);color:var(--text-3);white-space:nowrap;text-overflow:ellipsis;flex-shrink:1;max-width:240px;overflow:hidden}.slash{color:var(--line-strong);font-size:14px}button.project-name{border-radius:var(--r);text-align:left;margin:0 -6px;padding:3px 6px;transition:background-color .15s,color .15s}button.project-name:hover{background:var(--bg-hover);color:var(--text-2)}.paper-rename{flex-shrink:1;min-width:0;display:flex}.paper-rename input{field-sizing:content;border:1px solid var(--accent);border-radius:var(--r);background:var(--bg);min-width:10ch;max-width:min(360px,40vw);height:30px;font:400 15px/1.3 var(--serif);color:var(--text);box-shadow:var(--ring);outline:none;margin:0 -7px;padding:0 6px}.task-identity{align-items:center;gap:12px;min-width:0;display:flex;overflow:hidden}.task-identity h1{font:400 19px/1.3 var(--serif);white-space:nowrap;text-overflow:ellipsis;letter-spacing:-.005em;min-width:0;margin:0;overflow:hidden}.task-identity>.status{background:var(--bg-muted);border-radius:999px;flex-shrink:0;padding:2px 9px 2px 8px;font-size:12px;font-weight:500}.task-identity>.status.running,.task-identity>.status.building,.task-identity>.status.queued{background:var(--accent-soft)}.task-identity>.status.reviewing:not(.done):not(.commit){background:var(--green-soft)}.task-identity>.status.reviewing.commit{background:var(--accent-soft)}.task-identity>.status.waiting_input{background:var(--purple-soft)}.task-identity>.status.failed,.task-identity>.status.uncertain,.task-identity>.status.deleting{background:var(--red-soft)}.task-state-actions{flex-shrink:0;align-items:center;gap:2px;display:flex}.view-selector{border-radius:var(--r-md);background:var(--bg-muted);flex-shrink:0;align-items:center;gap:2px;padding:3px;display:flex}.view-selector>button{height:28px;color:var(--text-2);border-radius:7px;align-items:center;gap:6px;padding:0 10px;font-size:13px;font-weight:500;transition:background-color .15s,color .15s,box-shadow .15s;display:flex;position:relative}.view-selector>button:hover{color:var(--text)}.view-selector>button[aria-pressed=true]{background:var(--bg);color:var(--text);box-shadow:0 1px 2px #0000001a,0 0 0 .5px #0000000f}.view-count{background:var(--primary);color:#fff;text-align:center;font-variant-numeric:tabular-nums;border-radius:999px;min-width:17px;height:17px;padding:0 5px;font-size:10.5px;font-weight:600;line-height:17px}.attention-dot{background:var(--purple);width:7px;height:7px;box-shadow:0 0 0 2px var(--bg-muted);border-radius:50%}.connection-banner,.runtime-banner,.review-build-error{border-bottom:1px solid var(--amber-line);background:var(--amber-soft);color:var(--amber-text);flex-shrink:0;align-items:center;gap:8px;padding:8px 14px;font-size:13px;display:flex}.runtime-banner{background:var(--bg-subtle);color:var(--text-2);border-bottom-color:var(--line)}.connection-banner>span,.runtime-banner>span,.review-build-error>span{overflow-wrap:anywhere;flex:1;min-width:0}.connection-banner>button,.runtime-banner>button{border-radius:var(--r-sm);white-space:nowrap;color:var(--accent);padding:4px 8px;font-size:13px;font-weight:500}.connection-banner>button:hover,.runtime-banner>button:hover{background:var(--bg-hover)}.toast{z-index:40;border:1px solid var(--red-line);border-radius:var(--r-lg);background:var(--bg);width:max-content;max-width:min(540px,100vw - 24px);box-shadow:var(--float);color:var(--red);animation:toast-in .2s var(--ease);align-items:flex-start;gap:10px;padding:10px 8px 10px 14px;font-size:13.5px;line-height:1.5;display:flex;position:fixed;top:68px;left:50%;transform:translate(-50%)}.toast>svg{margin-top:2px}.toast>span{overflow-wrap:anywhere;min-width:0;color:var(--text);flex:1}.toast>.icon-button{width:24px;height:24px;margin-top:-1px}.task-grid{--chat-width:clamp(340px,30vw,440px);grid-template-columns:minmax(0,1fr) clamp(300px,var(--chat-width),calc(100% - 360px));flex:1;min-height:0;display:grid;position:relative}.review-panel{background:var(--canvas);flex-direction:column;min-width:0;min-height:0;display:flex;position:relative;container-type:inline-size}.review-viewport{flex:1;min-width:0;min-height:0;display:flex;position:relative}.review-frame{background:var(--canvas);border:0;flex:1;width:100%;height:100%;min-height:0;display:block}.review-pending>.review-frame{visibility:hidden}.review-tools{z-index:2;align-items:center;gap:4px;height:44px;padding:0 8px;display:flex;position:absolute;top:0;right:0}.review-tools .full-pdf-link{border-radius:7px;height:28px;padding:0 9px;font-size:13px}.review-tools .icon-button{width:30px;height:30px}.review-tools .review-notes-toggle{gap:6px;height:28px;padding:0 7px;font-size:13px}.review-tools [aria-pressed=true]{background:var(--accent-soft);color:var(--accent)}@container (width<=620px){.review-tools .full-pdf-link span{display:none}.review-tools .full-pdf-link{width:30px;padding:0}}.review-loading{text-align:center;color:var(--text-2);background:var(--canvas);flex-direction:column;justify-content:center;align-items:center;gap:4px;padding:24px;font-size:14px;line-height:1.6;display:flex;position:absolute;inset:0;overflow:auto}.review-loading p{max-width:340px}.review-placeholder{text-align:center;color:var(--text-2);flex-direction:column;flex:1;justify-content:center;align-items:center;padding:32px;display:flex;overflow:auto}.placeholder-icon{border-radius:var(--r-lg);background:var(--bg);border:1px solid var(--line);width:48px;height:48px;box-shadow:var(--shadow-xs);color:var(--text-3);justify-content:center;align-items:center;margin-bottom:16px;display:flex}.review-placeholder h2{font:400 21px/1.3 var(--serif);color:var(--text);margin:0 0 6px}.review-placeholder p{max-width:360px;color:var(--text-2);margin:0;font-size:14px;line-height:1.6}.review-placeholder>.button{margin-top:18px}.review-build-error{border-bottom-color:var(--red-line);background:var(--red-soft);color:var(--red)}.review-build-error>span{color:var(--text)}.review-feedback{border-top:1px solid var(--line);background:var(--bg);flex-shrink:0;justify-content:space-between;align-items:center;gap:12px;min-width:0;padding:8px 10px 8px 14px;display:flex}.review-feedback>span{min-width:0;color:var(--text-2);align-items:center;gap:8px;font-size:14px;display:flex}.review-feedback>span>svg{color:var(--accent);flex-shrink:0}.review-feedback .button{flex-shrink:0}.review-feedback.card{border:1px solid var(--line);border-radius:var(--r-lg);background:var(--bg-subtle);flex-wrap:wrap;margin:4px 0 14px}.panel-resizer{z-index:3;top:0;bottom:0;left:calc(100% - clamp(300px,var(--chat-width),calc(100% - 360px)) - 4px);cursor:col-resize;touch-action:none;outline:none;width:8px;position:absolute}.panel-resizer:after{content:"";background:0 0;width:2px;transition:background-color .15s .1s;position:absolute;top:0;bottom:0;left:3px}.panel-resizer:hover:after,.panel-resizer:focus-visible:after,body.resizing .panel-resizer:after{background:var(--accent)}body.resizing{cursor:col-resize;-webkit-user-select:none;user-select:none}body.resizing iframe{pointer-events:none}.activity-panel{background:var(--bg);border-left:1px solid var(--line);flex-direction:column;min-width:0;min-height:0;display:flex}.panel-heading{border-bottom:1px solid var(--line);flex-shrink:0;justify-content:space-between;align-items:center;gap:8px;height:44px;padding:0 14px;display:flex}.panel-title{font-size:13.5px;font-weight:600}.model-chip{color:var(--text-2);background:var(--bg-muted);border-radius:var(--r-sm);white-space:nowrap;text-overflow:ellipsis;max-width:60%;padding:2px 8px;font-size:12px;overflow:hidden}.conversation-history{flex-direction:column;flex:1;min-height:0;display:flex;position:relative}.messages{overscroll-behavior:contain;flex:1;min-height:0;padding:18px 18px 12px;overflow:auto}.thread{flex-direction:column;max-width:760px;margin:0 auto;display:flex}.message{min-width:0;margin:0 0 16px}.message.user{align-self:flex-end;max-width:88%}.message.user .message-body{background:var(--bg-muted);white-space:pre-wrap;overflow-wrap:anywhere;border-radius:18px 18px 6px;padding:9px 14px;font-size:15px;line-height:1.55}.message.assistant{align-self:stretch}.message-body{color:var(--text);overflow-wrap:anywhere;font-size:15px;line-height:1.6}.markdown>:first-child{margin-top:0}.markdown>:last-child{margin-bottom:0}.markdown p{margin:0 0 10px}.markdown h3,.markdown h4,.markdown h5,.markdown h6{margin:16px 0 6px;font-size:15px;font-weight:600}.markdown h3{font-size:16px}.markdown ul,.markdown ol{margin:0 0 10px;padding-left:22px}.markdown li{margin:3px 0}.markdown li::marker{color:var(--text-3)}.markdown code{background:var(--bg-muted);border-radius:4px;padding:1px 5px;font-size:.9em}.markdown pre{background:var(--bg-subtle);border:1px solid var(--line);border-radius:var(--r-md);margin:0 0 10px;padding:10px 12px;font-size:13px;line-height:1.5;overflow:auto}.markdown pre code{font-size:inherit;background:0 0;padding:0}.markdown blockquote{border-left:3px solid var(--line-strong);color:var(--text-2);margin:0 0 10px;padding-left:12px}.markdown hr{border:0;border-top:1px solid var(--line);margin:14px 0}.markdown a{color:var(--accent);text-underline-offset:.2em}.markdown .file-reference{background:var(--bg-muted);color:var(--accent);font:inherit;text-align:left;overflow-wrap:anywhere;cursor:pointer;border-radius:4px;padding:1px 5px;font-size:.9em;display:inline}.markdown .file-reference:hover{text-decoration:underline}.markdown .markdown-table{max-width:100%;margin:0 0 12px;overflow:auto}.markdown table{border-collapse:collapse;min-width:100%;font-size:14px}.markdown th,.markdown td{border:1px solid var(--line);text-align:left;min-width:90px;padding:6px 10px}.markdown th{background:var(--bg-muted);font-weight:600}.markdown ul ul,.markdown ul ol,.markdown ol ul,.markdown ol ol{margin-bottom:0}.markdown .task-list-item{list-style:none}.markdown .task-list-item input{accent-color:var(--accent);margin-right:6px}.markdown .katex{font-size:1.08em}.markdown .katex-display{margin:0 0 10px;padding:2px 0;overflow:auto hidden}.markdown .katex-error{font-family:var(--mono);font-size:.9em;color:inherit!important}.message-actions{opacity:0;align-items:center;gap:8px;min-height:26px;margin-top:4px;transition:opacity .15s;display:flex}.message.assistant:hover .message-actions,.message-actions:focus-within{opacity:1}.message-actions time{color:var(--text-3);font-variant-numeric:tabular-nums;font-size:12px}.message-action{border-radius:var(--r-sm);height:26px;color:var(--text-2);align-items:center;gap:5px;margin-left:-8px;padding:0 8px;font-size:13px;display:inline-flex}.message-action:hover{background:var(--bg-hover);color:var(--text)}@media (hover:none){.message-actions{opacity:1}}.tool-item{color:var(--text-2);align-self:stretch;max-width:100%;margin:0 0 4px}.tool-item summary{border-radius:var(--r);cursor:pointer;align-items:center;gap:8px;min-height:28px;margin:0 -8px;padding:3px 8px;font-size:13px;list-style:none;transition:background-color .12s;display:flex}.tool-item summary::-webkit-details-marker{display:none}.tool-item summary:hover{background:var(--bg-muted)}.tool-item summary>svg{color:var(--text-3)}.tool-label{white-space:nowrap;text-overflow:ellipsis;min-width:0;font-family:var(--mono);flex:1;font-size:12.5px;overflow:hidden}.tool-item .spinner{border-width:1.5px;width:12px;height:12px}.tool-status{color:var(--red);font-size:12px;font-weight:500}.tool-item pre{border:1px solid var(--line);border-radius:var(--r-md);background:var(--bg-subtle);white-space:pre-wrap;overflow-wrap:anywhere;max-height:240px;font:13px/1.55 var(--mono);color:var(--text-2);margin:4px 0 8px;padding:10px 12px;overflow:auto}.tool-item+.message,.tool-group+.message{margin-top:10px}.tool-group{color:var(--text-2);align-self:stretch;max-width:100%;margin:0 0 4px}.tool-group>summary{border-radius:var(--r);cursor:pointer;align-items:center;gap:8px;min-height:28px;margin:0 -8px;padding:3px 8px;font-size:13px;list-style:none;transition:background-color .12s;display:flex}.tool-group>summary::-webkit-details-marker{display:none}.tool-group>summary:hover{background:var(--bg-muted)}.tool-group>summary>svg{color:var(--text-3);flex-shrink:0}.tool-group>summary>svg:last-child{transition:transform .15s}.tool-group[open]>summary>svg:last-child{transform:rotate(180deg)}.tool-group-label{white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;overflow:hidden}.tool-group .spinner{border-width:1.5px;width:12px;height:12px}.tool-group-items{border-left:1px solid var(--line);margin:4px 0 8px 6px;padding-left:12px}.notes-message .message-body{white-space:normal;padding:10px 14px 12px}.sent-notes-head{color:var(--text-2);align-items:center;gap:6px;margin-bottom:6px;font-size:12.5px;font-weight:500;display:flex}.sent-notes-head>svg{color:var(--text-3)}.sent-notes{margin:0;padding:0;list-style:none}.sent-notes li+li{border-top:1px solid var(--line-strong);margin-top:10px;padding-top:10px}.sent-note-where{font:12px/1.4 var(--mono);color:var(--text-3);margin-bottom:4px;display:block}.sent-notes blockquote{border-left:3px solid var(--line-strong);color:var(--text-2);white-space:pre-wrap;margin:0 0 4px;padding-left:10px;font-size:13px;font-style:italic;line-height:1.5}.sent-note-region{color:var(--text-3);margin-bottom:4px;font-size:13px;font-style:italic;display:block}.sent-notes p{white-space:pre-wrap;margin:0}.feedback-counts{flex-wrap:wrap;gap:6px;margin-bottom:6px;display:flex}.feedback-counts span{background:var(--bg);color:var(--text-2);border-radius:999px;padding:1px 8px;font-size:12.5px;font-weight:500}.feedback-counts .accepted{color:var(--green)}.feedback-counts .rejected,.feedback-counts .failed{color:var(--red)}.feedback-counts .commented{color:var(--accent)}.feedback-counts+.sent-notes{margin-top:8px}.feedback-attachment{white-space:normal;margin-top:8px}.feedback-attachment>summary{color:var(--text-2);cursor:pointer;align-items:center;gap:5px;font-size:12.5px;list-style:none;display:inline-flex}.feedback-attachment>summary::-webkit-details-marker{display:none}.feedback-attachment[open]>summary{margin-bottom:6px}.message-body>.skill-chip{vertical-align:1px}.skill-chip{background:var(--accent-soft);height:24px;color:var(--accent);white-space:nowrap;border-radius:999px;align-items:center;gap:5px;padding:0 4px 0 8px;font-size:13px;font-weight:500;display:inline-flex}.skill-chip:not(:has(button)){padding-right:9px}.skill-chip button{width:18px;height:18px;color:inherit;opacity:.7;border-radius:50%;place-items:center;display:inline-grid}.skill-chip button:hover{opacity:1;background:#2563eb1f}.composer{position:relative}.composer-skill{align-items:center;gap:8px;min-width:0;padding:10px 14px 0;display:flex}.composer.large .composer-skill{padding:14px 18px 0}.composer-skill-description{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--text-3);font-size:12.5px;overflow:hidden}.skill-menu{z-index:30;border:1px solid var(--line-strong);border-radius:var(--r-lg);background:var(--bg);max-height:min(320px,50dvh);box-shadow:var(--float);padding:5px;position:absolute;bottom:calc(100% + 6px);left:0;right:0;overflow-y:auto}.composer.large .skill-menu{top:calc(100% + 6px);bottom:auto}.skill-option{border-radius:var(--r);cursor:pointer;grid-template-columns:auto 1fr auto;align-items:baseline;gap:10px;padding:7px 10px;display:grid}.skill-option.active{background:var(--bg-hover)}.skill-name{color:var(--text);white-space:nowrap;align-items:center;gap:7px;font-size:14px;font-weight:500;display:inline-flex}.skill-name>svg{color:var(--accent);align-self:center}.skill-description{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--text-3);font-size:13px;overflow:hidden}.skill-source{color:var(--text-3);white-space:nowrap;font-size:11.5px}.skill-empty{color:var(--text-3);margin:0;padding:8px 10px;font-size:13px}.skill-suggestions{flex-wrap:wrap;justify-content:center;gap:8px;margin-top:14px;display:flex}.skill-suggestions button{border:1px solid var(--line);background:var(--bg);height:32px;color:var(--text-2);border-radius:999px;align-items:center;gap:6px;padding:0 13px;font-size:13.5px;transition:border-color .15s,background-color .15s,color .15s;display:inline-flex}.skill-suggestions button>svg{color:var(--text-3)}.skill-suggestions button:hover:not(:disabled){border-color:var(--line-strong);background:var(--bg-subtle);color:var(--text)}.skill-suggestions button[aria-pressed=true]{border-color:var(--accent-line);background:var(--accent-soft);color:var(--accent)}.skill-suggestions button[aria-pressed=true]>svg{color:var(--accent)}.skill-suggestions button:disabled{opacity:.6}.working{color:var(--text-2);align-items:center;gap:10px;margin:4px 0 12px;font-size:14px;display:flex}.working-dots{gap:3px;display:inline-flex}.working-dots i{background:var(--text-3);border-radius:50%;width:5px;height:5px;animation:1.2s ease-in-out infinite bounce}.working-dots i:nth-child(2){animation-delay:.15s}.working-dots i:nth-child(3){animation-delay:.3s}.task-error{background:var(--red-soft);border:1px solid var(--red-line);border-radius:var(--r-md);color:var(--red);gap:10px;margin:8px 0 14px;padding:12px 14px;font-size:14px;display:flex}.task-error>svg{margin-top:3px}.task-error>div{min-width:0}.task-error strong{font-weight:600}.task-error p{white-space:pre-wrap;overflow-wrap:anywhere;max-height:240px;color:var(--text);line-height:1.55;font:13px/1.55 var(--mono);margin:4px 0 0;overflow:auto}.conversation-error{border-radius:var(--r-md);background:var(--amber-soft);border:1px solid var(--amber-line);color:var(--amber-text);justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px;padding:10px 12px;font-size:14px;line-height:1.5;display:flex}.conversation-error p{overflow-wrap:anywhere;margin:0}.jump-latest{white-space:nowrap;border:1px solid var(--line);background:var(--bg);height:32px;color:var(--text);box-shadow:var(--float);border-radius:999px;align-items:center;gap:6px;padding:0 14px;font-size:13px;font-weight:500;display:flex;position:absolute;bottom:12px;left:50%;transform:translate(-50%)}.jump-latest:hover{background:var(--bg-subtle)}.review-ready{border:1px solid var(--line);border-radius:var(--r-lg);background:var(--bg-subtle);color:var(--text-2);align-items:center;gap:10px;margin:4px 0 14px;padding:10px 10px 10px 14px;font-size:14px;display:flex}.review-ready>svg{color:var(--green)}.review-ready>span{flex:1;min-width:0}.request-card{border:1px solid var(--amber-line);border-radius:var(--r-lg);background:var(--amber-soft);box-shadow:var(--shadow-xs);margin-bottom:16px;padding:14px 16px}.request-card h3{color:var(--text);align-items:center;gap:8px;margin:0 0 10px;font-size:14px;font-weight:600;display:flex}.request-card h3>svg{color:var(--purple)}.request-card p{color:var(--text-2);font-size:14px;line-height:1.6}.request-card pre{white-space:pre-wrap;overflow-wrap:anywhere;font:13px/1.55 var(--mono);background:var(--bg);border:1px solid var(--line);border-radius:var(--r);max-height:180px;padding:8px 10px;overflow:auto}.button-row{justify-content:flex-end;gap:8px;display:flex}.question{border:0;min-width:0;margin:12px 0;padding:0;font-size:14px;line-height:1.6;display:block}.question legend{padding:0;font-weight:500}.question input{background:var(--bg);border:1px solid var(--line-strong);border-radius:var(--r);width:100%;margin-top:8px;padding:7px 10px;font-size:14px}.question input:focus{border-color:var(--accent);box-shadow:var(--ring)}.answer-options{flex-direction:column;gap:6px;margin-top:8px;display:flex}.answer-options button{text-align:left;border:1px solid var(--line);border-radius:var(--r-md);background:var(--bg);padding:9px 12px;font-size:14px;transition:border-color .12s,background-color .12s}.answer-options button:hover:not(:disabled){border-color:var(--line-strong)}.answer-options button.selected{border-color:var(--accent);background:var(--accent-soft);box-shadow:0 0 0 1px var(--accent)}.answer-options small{color:var(--text-2);margin-top:2px;font-size:13px;display:block}.composer-wrap{background:var(--bg);padding:8px 14px 14px}.composer{border:1px solid var(--line-strong);border-radius:var(--r-xl);background:var(--bg);max-width:760px;box-shadow:var(--shadow-sm);cursor:text;margin:0 auto;transition:border-color .15s,box-shadow .15s}.composer:focus-within{border-color:var(--line-hover);box-shadow:0 1px 2px #0000000d,0 6px 20px #00000014}.composer textarea{resize:none;width:100%;min-height:48px;max-height:200px;color:var(--text);background:0 0;border:0;outline:none;padding:12px 16px 4px;font-size:15px;line-height:1.5;display:block;overflow-y:auto}.composer textarea::placeholder{color:var(--text-3)}.composer textarea[readonly]{color:var(--text-2)}.composer-footer{cursor:default;justify-content:space-between;align-items:center;gap:8px;padding:4px 8px 8px 16px;display:flex}.composer-hint{color:var(--text-3);text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:12.5px;overflow:hidden}.composer-actions{flex-shrink:0;gap:6px;margin-left:auto;display:flex}.send-button{background:var(--primary);color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:32px;height:32px;transition:background-color .15s,transform .1s;display:flex}.send-button:hover:not(:disabled){background:var(--primary-hover)}.send-button:active:not(:disabled){transform:scale(.94)}.send-button:disabled{opacity:1;background:var(--bg-active);color:var(--text-3)}.send-button.stop{background:var(--bg);color:var(--text);border:1px solid var(--line-strong)}.send-button.stop:hover:not(:disabled){background:var(--bg-hover)}.composer.large{border-radius:22px}.composer.large textarea{min-height:92px;max-height:min(320px,40dvh);padding:16px 20px 6px;font-size:16px}.composer.large .composer-footer{padding:6px 10px 10px 14px}.composer.large .send-button{width:36px;height:36px}.composer-options{flex-wrap:wrap;gap:6px;min-width:0;display:flex}.chip-select{border:1px solid var(--line);min-width:0;max-width:240px;height:30px;color:var(--text);background:var(--bg) 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='%238a8a8a' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") no-repeat right 9px center;cursor:pointer;border-radius:999px;align-items:center;gap:6px;padding:0 26px 0 11px;font-size:13px;font-weight:500;transition:border-color .15s,background-color .15s;display:inline-flex;position:relative}.chip-select:hover{border-color:var(--line-strong);background-color:var(--bg-subtle)}.chip-select:focus-within{border-color:var(--accent);box-shadow:var(--ring)}.chip-select>svg{color:var(--text-3)}.chip-value{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.chip-select select{opacity:0;appearance:none;cursor:pointer;border:0;width:100%;height:100%;margin:0;padding:0;font-size:16px;position:absolute;inset:0}.chip-select:has(select:disabled){opacity:.6;cursor:default}.effort-chip .effort-level{color:var(--text-2);flex:none}.effort-chip:disabled{opacity:.6;cursor:default}.effort-panel{border:1px solid var(--line);background:var(--bg);width:min(280px,100vw - 16px);color:var(--text);box-shadow:var(--float);animation:menu-in .14s var(--ease);border-radius:16px;margin:0;padding:12px 14px 14px;position:fixed;inset:auto}.effort-head{justify-content:space-between;align-items:center;gap:8px;min-height:24px;display:flex}.effort-default{background:var(--bg-muted);color:var(--text-2);border-radius:999px;padding:1px 7px;font-size:11px}.effort-name{letter-spacing:-.01em;font-size:15px;font-weight:600}.effort-track{background:var(--bg-active);border-radius:999px;height:30px;margin-top:12px;transition:box-shadow .15s;position:relative}.effort-fill{background:var(--accent);pointer-events:none;border-radius:999px;position:absolute;top:0;bottom:0;left:0}.effort-track.unset .effort-fill{display:none}.effort-track:has(input:focus-visible){box-shadow:0 0 0 3px #2563eb38}.effort-stop{background:var(--scroll-hover);pointer-events:none;border-radius:50%;width:4px;height:4px;margin:-2px 0 0 -2px;position:absolute;top:50%}.effort-stop.on{background:#fff9}.effort-track input{appearance:none;cursor:pointer;background:0 0;outline:none;width:calc(100% - 4px);height:100%;margin:0;position:absolute;inset:0 2px}.effort-track input::-webkit-slider-runnable-track{background:0 0;height:30px}.effort-track input::-webkit-slider-thumb{-webkit-appearance:none;width:26px;height:26px;transition:transform .12s var(--ease);background:#fff;border-radius:50%;margin-top:2px;box-shadow:0 1px 2px #0000002e,0 2px 6px #0000001f}.effort-track input:active::-webkit-slider-thumb{transform:scale(.94)}.effort-track input::-moz-range-track{background:0 0;height:30px}.effort-track input::-moz-range-thumb{background:#fff;border:0;border-radius:50%;width:26px;height:26px;box-shadow:0 1px 2px #0000002e,0 2px 6px #0000001f}.usage{color:var(--text-3);flex-wrap:wrap;justify-content:center;align-items:center;gap:8px 18px;margin-top:14px;font-size:12.5px;display:flex}.usage-account{color:var(--text-2);align-items:center;gap:6px;font-weight:500;display:inline-flex}.usage-plan{background:var(--bg-muted);color:var(--text-2);border-radius:999px;padding:1px 7px;font-size:11px;font-weight:500}.usage-limit{white-space:nowrap;align-items:center;gap:8px;display:inline-flex}.usage-name{color:var(--text-2)}.usage-bar{background:var(--bg-active);border-radius:999px;width:88px;height:5px;position:relative;overflow:hidden}.usage-bar>span{border-radius:inherit;background:var(--accent);position:absolute;inset:0 auto 0 0}.usage-limit.warning .usage-bar>span{background:#f59e0b}.usage-limit.critical .usage-bar>span{background:var(--red)}.usage-limit.critical .usage-value{color:var(--red)}.usage-value{font-variant-numeric:tabular-nums;color:var(--text-2)}.usage-credits{font-variant-numeric:tabular-nums}@media (width<=680px){.usage{gap:6px 14px;font-size:12px}.usage-credits{order:1}.usage-limit{order:2}.usage-bar{width:64px}}.chip-select.zoom-chip{border-color:var(--line-strong);height:28px;color:var(--text-2);box-shadow:var(--shadow-xs);background-position:right 7px center;border-radius:7px;padding:0 24px 0 10px;font-size:13px}.home{background:radial-gradient(120% 70% at 50% 0%,var(--bg) 40%,var(--bg-subtle) 100%);flex:1;min-height:0;padding:24px;display:flex;overflow:auto}.home-inner{text-align:center;flex-direction:column;align-items:center;width:100%;max-width:720px;margin:auto;padding-bottom:8vh;display:flex}.home-logo{width:52px;height:52px;margin-bottom:16px}.home-mark{justify-content:center;align-items:center;width:44px;height:44px;margin-bottom:16px;display:flex}.home h1{font:400 34px/1.2 var(--serif);letter-spacing:-.01em;text-wrap:balance;margin:0 0 26px}.home-copy{color:var(--text-2);max-width:480px;margin:-12px 0 22px;font-size:15px;line-height:1.65}.home .composer{text-align:left;width:100%}.home-error{text-align:left;align-self:stretch;margin:12px 0 0;padding:0 4px}.manuscript{flex:1;grid-template-columns:minmax(0,1fr) 340px;min-height:0;display:grid}.manuscript-pages{background:var(--canvas);flex-direction:column;min-width:0;min-height:0;display:flex;position:relative;overflow:hidden}.manuscript-note{z-index:1;background:color-mix(in srgb,var(--bg) 90%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--line);color:var(--text-2);margin:0;padding:8px 16px;font-size:13px;position:sticky;top:0}.manuscript-note.error{color:var(--red);background:var(--red-soft);border-bottom-color:var(--red-line)}.manuscript-note pre{white-space:pre-wrap;max-height:200px;color:var(--text);font:13px/1.5 var(--mono);margin:6px 0 0;overflow:auto}.manuscript-side{border-left:1px solid var(--line);background:var(--bg);flex-direction:column;min-width:0;min-height:0;display:flex}.side-tabs{border-bottom:1px solid var(--line);flex-shrink:0;gap:4px;padding:8px 12px;display:flex}.side-tabs>button{border-radius:var(--r);height:30px;color:var(--text-2);align-items:center;gap:6px;padding:0 10px;font-size:13px;font-weight:500;transition:background-color .15s,color .15s;display:flex}.side-tabs>button:hover{background:var(--bg-hover);color:var(--text)}.side-tabs>button[aria-selected=true]{background:var(--bg-muted);color:var(--text)}.contents-panel{flex:1;min-height:0;padding:8px;overflow:auto}.contents-panel>p{margin:8px 12px;font-size:13px;line-height:1.5}.contents-panel ol{margin:0;padding:0;list-style:none}.contents-panel button{border-radius:var(--r);text-align:left;width:100%;color:var(--text-2);align-items:baseline;gap:12px;padding:9px 12px;font-size:13px;line-height:1.5;display:flex}.contents-panel button>span:first-child{overflow-wrap:anywhere;flex:1;min-width:0}.contents-panel button:hover{background:var(--bg-hover);color:var(--text)}.contents-panel button[aria-current]{background:var(--accent-soft);color:var(--accent)}.contents-page{color:var(--text-3);font-variant-numeric:tabular-nums;flex-shrink:0}.git-panel{flex:1;min-height:0;padding:4px 0 24px;overflow:auto}.notes-panel{flex-direction:column;flex:1;min-height:0;display:flex}.note-list{flex:1;min-height:0;margin:0;padding:8px;list-style:none;overflow:auto}.note-list li{border:1px solid var(--line);border-radius:var(--r-lg);background:var(--bg);margin-bottom:6px;padding:10px 10px 12px 12px;transition:border-color .15s,box-shadow .15s}.note-list li:hover{border-color:var(--line-strong)}.note-list li.active{border-color:var(--accent-line);box-shadow:0 0 0 3px var(--accent-soft)}.note-list li.stale{background:var(--bg-subtle)}.note-head{align-items:center;gap:8px;margin-bottom:6px;display:flex}.note-number{background:var(--primary);color:#fff;text-align:center;border-radius:999px;min-width:20px;height:20px;padding:0 6px;font-size:11.5px;font-weight:600;line-height:20px}.note-where{min-width:0;font:12px/1.4 var(--mono);color:var(--text-3);text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.note-head .icon-button{border-radius:var(--r-sm);width:26px;height:26px}.note-list blockquote{border-left:3px solid var(--line-strong);color:var(--text-2);-webkit-line-clamp:3;-webkit-box-orient:vertical;margin:0 0 6px;padding-left:10px;font-size:13px;font-style:italic;line-height:1.5;display:-webkit-box;overflow:hidden}.note-source{background:var(--bg-subtle);border:1px solid var(--line);border-radius:var(--r);max-height:7.5em;font:12px/1.5 var(--mono);color:var(--text-2);white-space:pre-wrap;overflow-wrap:anywhere;margin:0 0 8px;padding:7px 9px;overflow:auto}.note-list p{white-space:pre-wrap;overflow-wrap:anywhere;margin:0;font-size:14px;line-height:1.5}.notes-empty{flex:1;margin:0;padding:16px 20px}.notes-send{border-top:1px solid var(--line);background:var(--bg);flex-direction:column;gap:8px;padding:12px 14px 14px;display:flex}.notes-send .button{width:100%;height:38px}.pdf-view{flex-direction:column;flex:1;min-height:0;display:flex}.pdf-toolbar{border-bottom:1px solid var(--line);background:var(--bg);flex-shrink:0;align-items:center;gap:6px;height:46px;padding:0 8px;display:flex}.pdf-section{min-width:0;height:32px;color:var(--text);text-align:left;flex:1;align-items:center;padding:0 10px;display:flex}.pdf-section-title{text-overflow:ellipsis;white-space:nowrap;min-width:0;font:400 15px/1.3 var(--serif);overflow:hidden}.pdf-pager,.pdf-zoom{flex-shrink:0;align-items:center;gap:2px;display:flex}.pdf-pager{color:var(--text-2);font-size:13px}.pdf-pager input{text-align:center;border:1px solid var(--line-strong);font-variant-numeric:tabular-nums;border-radius:7px;outline:none;width:44px;height:28px;padding:0 4px;font-size:13px}.pdf-pager input:focus{border-color:var(--accent);box-shadow:var(--ring)}.pdf-pages{min-width:34px;color:var(--text-3);font-variant-numeric:tabular-nums;padding-left:4px}.pdf-zoom{border-left:1px solid var(--line);border-right:1px solid var(--line);padding:0 4px}.pdf-toolbar .icon-button{width:30px;height:30px}.pdf-toolbar .icon-button.active,.pdf-find .icon-button.active{background:var(--accent-soft);color:var(--accent)}.pdf-find{border-bottom:1px solid var(--line);background:var(--bg-subtle);flex-shrink:0;align-items:center;gap:6px;height:44px;padding:0 8px 0 14px;display:flex}.pdf-find>svg{color:var(--text-3)}.pdf-find input{border:1px solid var(--line-strong);border-radius:var(--r);background:var(--bg);outline:none;flex:1;min-width:0;height:30px;padding:0 10px;font-size:13.5px}.pdf-find input:focus{border-color:var(--accent);box-shadow:var(--ring)}.pdf-find-count{text-align:right;min-width:72px;color:var(--text-3);white-space:nowrap;font-variant-numeric:tabular-nums;font-size:12.5px}.pdf-hint{color:var(--accent);background:var(--accent-soft);border-bottom:1px solid var(--accent-line);flex-shrink:0;padding:7px 14px;font-size:13px}.pdf-scroll-host{flex:1;min-height:0;position:relative}.pdf-container{background:var(--canvas);touch-action:pan-x pan-y;outline:none;position:absolute;inset:0;overflow:auto}.pdf-container .pdfViewer{padding:20px 0 56px}.pdf-container .pdfViewer.removePageBorders .page{background-color:var(--pdf-page);border-radius:2px;margin:0 auto 20px;box-shadow:0 1px 2px #0000000f,0 8px 24px #00000014}.pdf-container .pdfViewer .canvasWrapper{filter:var(--pdf-filter)}.marking .pdf-container .textLayer{pointer-events:none}.note-layer{z-index:10;pointer-events:none;position:absolute;inset:0}.note-mark{mix-blend-mode:multiply;background:#2563eb2e;border-radius:2px;position:absolute}.note-mark.active{background:#2563eb52}.note-mark.draft{background:#2563eb3d}.note-box{border:1.5px solid var(--accent);background:#2563eb12;border-radius:3px;position:absolute}.note-box.active{background:#2563eb26;box-shadow:0 0 0 4px #2563eb2e}.note-box.draft{border-style:dashed}.note-tag{z-index:1;background:var(--primary);color:#fff;text-align:center;min-width:20px;height:20px;box-shadow:var(--shadow-xs);pointer-events:auto;cursor:pointer;border-radius:999px;padding:0 6px;font-size:11.5px;font-weight:600;line-height:20px;position:absolute;transform:translateY(-50%)}.note-tag.active{box-shadow:0 0 0 3px #2563eb40}.add-note{z-index:2;background:var(--primary);color:#fff;white-space:nowrap;height:32px;box-shadow:var(--float);pointer-events:auto;animation:menu-in .14s var(--ease);border-radius:999px;align-items:center;gap:6px;padding:0 13px;font-size:13px;font-weight:500;display:inline-flex;position:absolute;transform:translate(-100%,8px)}.add-note:hover{background:var(--primary-hover)}.region-capture{pointer-events:auto;cursor:crosshair;touch-action:none;position:absolute;inset:0}.menu-hint{color:var(--text-3);font-variant-numeric:tabular-nums;flex-shrink:0;margin-left:12px;font-size:12px}.note-editor{pointer-events:auto;z-index:3;background:var(--bg);border:1px solid var(--line);border-radius:var(--r-lg);width:min(340px,100%);box-shadow:var(--float);cursor:default;animation:menu-in .14s var(--ease);padding:10px;position:absolute}.note-editor textarea{background:var(--bg);resize:none;border:1px solid var(--line-strong);border-radius:var(--r);outline:none;width:100%;padding:8px 10px;font-size:14px;line-height:1.5;display:block}.note-editor textarea:focus{border-color:var(--accent);box-shadow:var(--ring)}.note-editor .inline-error{margin:6px 0 0}.note-editor .button-row{margin-top:8px}.panel-label{color:var(--text-3);align-items:center;gap:8px;margin:0 0 10px;font-size:12px;font-weight:600;display:flex}.git-branch{align-items:center;gap:8px;padding:14px 20px 2px;font-size:14px;display:flex}.git-branch>svg,.git-commit>svg{color:var(--text-3);flex-shrink:0}.git-branch code{color:var(--text);text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:14px;overflow:hidden}.git-sync{background:var(--bg-muted);color:var(--text-2);white-space:nowrap;border-radius:999px;gap:8px;padding:2px 8px;font-size:12px;font-weight:500;display:flex}.git-upstream{color:var(--text-3);margin:0;padding:0 20px 0 44px;font-size:12.5px}.git-upstream code{font-size:12.5px}.git-commit{border:1px solid var(--line);border-radius:var(--r-lg);background:var(--bg-subtle);gap:8px;margin:12px 12px 4px;padding:10px 12px;display:flex}.git-commit>div{min-width:0}.git-commit p{overflow-wrap:anywhere;margin:0;font-size:14px;line-height:1.4}.git-commit small{color:var(--text-3);margin-top:2px;font-size:12px;display:block}.git-commit code{font-size:12px}.git-section{color:var(--text-3);align-items:center;gap:8px;margin:0;padding:16px 20px 6px;font-size:12px;font-weight:600;display:flex}.git-total{font:12px/1 var(--mono);margin-left:auto}.git-remote{align-items:center;gap:4px;margin-left:auto;display:flex}.git-remote .button.compact{height:28px;padding:0 10px}.git-remote .icon-button{width:28px;height:28px}.git-panel input[type=checkbox]{width:15px;height:15px;accent-color:var(--accent);cursor:pointer;flex:none;margin:0}.git-message{margin:10px 20px 0;font-size:13px}.git-notice{color:var(--green);align-items:center;gap:6px;display:flex}.git-commit-form{flex-direction:column;gap:8px;padding:2px 20px 10px;display:flex}.git-commit-form textarea{resize:vertical;border:1px solid var(--line-strong);border-radius:var(--r);background:var(--bg);width:100%;min-height:58px;font:inherit;color:var(--text);outline:none;padding:8px 10px;font-size:13.5px;line-height:1.45;display:block}.git-commit-form textarea:focus{border-color:var(--accent);box-shadow:var(--ring)}.git-commit-form .button{width:100%}.git-files{margin:0;padding:0 8px;list-style:none}.git-files li{border-radius:var(--r)}.git-row{border-radius:var(--r);align-items:center;gap:10px;min-height:34px;padding:4px 12px;display:flex}.git-row:hover,.git-files li.open .git-row{background:var(--bg-hover)}.git-file{min-width:0;font:inherit;text-align:left;color:inherit;cursor:pointer;background:0 0;border:0;flex:1;align-items:baseline;gap:8px;padding:0;display:flex;overflow:hidden}.git-diff-wrap{border:1px solid var(--line);border-radius:var(--r);background:var(--bg);max-height:420px;margin:4px 4px 10px 37px;overflow:auto}.git-diff{font:12px/1.55 var(--mono);white-space:pre-wrap;overflow-wrap:anywhere;color:var(--text-2);margin:0;padding:6px 0}.git-diff span{text-indent:-12px;padding:0 12px 0 24px;display:block}.git-diff .add{background:var(--green-soft);color:var(--green)}.git-diff .del{background:var(--red-soft);color:var(--red)}.git-diff .hunk{background:var(--bg-subtle);color:var(--text-3);margin:4px 0}.git-diff .note{color:var(--text-3)}.git-diff-wrap .inline-error{margin:8px 10px}.git-diff-note{color:var(--text-3);margin:0;padding:8px 12px;font-size:12.5px}.git-name{max-width:100%;color:var(--text);text-overflow:ellipsis;white-space:nowrap;flex-shrink:0;font-size:13.5px;overflow:hidden}.git-dir{min-width:0;color:var(--text-3);text-overflow:ellipsis;white-space:nowrap;font-size:12.5px;overflow:hidden}.git-lines,.git-total{white-space:nowrap}.git-lines{font:12px/1 var(--mono);flex-shrink:0}.git-lines ins,.git-total ins{color:var(--green);text-decoration:none}.git-lines del,.git-total del{color:var(--red);text-decoration:none}.git-code{width:18px;height:18px;font:700 11px/18px var(--mono);text-align:center;color:var(--text-3);background:var(--bg-muted);border-radius:5px;flex-shrink:0}.git-code.s-m{color:var(--accent);background:var(--accent-soft)}.git-code.s-a{color:var(--green);background:var(--green-soft)}.git-code.s-d{color:var(--red);background:var(--red-soft)}.git-code.s-r{color:var(--purple);background:var(--purple-soft)}.git-clean{color:var(--text-3);align-items:center;gap:8px;margin:0;padding:8px 20px;font-size:13.5px;display:flex}.git-clean>svg{color:var(--green)}.action-menu{border:1px solid var(--line);border-radius:var(--r-lg);background:var(--bg);min-width:210px;max-width:min(380px,100vw - 16px);color:var(--text);box-shadow:var(--float);margin:0;padding:5px;font-size:14px;position:fixed;inset:auto}.action-menu:popover-open{animation:menu-in .14s var(--ease);flex-direction:column;gap:1px;display:flex}.action-menu>button,.action-menu>a{border-radius:var(--r);text-align:left;min-height:34px;color:inherit;align-items:center;gap:10px;padding:5px 10px;text-decoration:none;display:flex}.action-menu>button:hover:not(:disabled),.action-menu>a:hover,.action-menu>button:focus-visible,.action-menu>a:focus-visible{background:var(--bg-hover);outline:none}.action-menu>button>svg,.action-menu>a>svg{color:var(--text-3)}.action-menu>.danger-text{color:var(--red)}.action-menu>.danger-text>svg{color:currentColor}.menu-check{width:16px;color:var(--accent);display:inline-flex}.menu-label{flex-direction:column;flex:1;min-width:0;display:flex;overflow:hidden}.menu-label,.menu-detail{white-space:nowrap;text-overflow:ellipsis}.menu-detail{font:12px/1.4 var(--mono);color:var(--text-3);overflow:hidden}.paper-menu [role=menuitemradio] .menu-label{font:400 15.5px/1.35 var(--serif)}.menu-separator{background:var(--line);height:1px;margin:4px 6px}.modal-backdrop{z-index:30;width:100%;max-width:none;height:100%;max-height:none;color:inherit;background:0 0;border:0;justify-content:center;align-items:center;margin:0;padding:24px;display:flex;position:fixed;inset:0}.modal-backdrop:not([open]){display:none}.modal-backdrop::backdrop{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#0000004d}.modal{background:var(--bg);border:1px solid var(--line);border-radius:var(--r-xl);width:480px;max-width:100%;max-height:92dvh;box-shadow:var(--float);animation:dialog-in .18s var(--ease);padding:26px 26px 22px;position:relative;overflow:auto}.modal-close{position:absolute;top:12px;right:12px}.modal h2{font:400 23px/1.3 var(--serif);letter-spacing:-.005em;margin:0 36px 6px 0}.modal-description{color:var(--text-2);margin-bottom:20px;font-size:14px;line-height:1.6}.modal form>label{color:var(--text);margin-bottom:16px;font-size:13.5px;font-weight:500;display:block}.modal input,.modal textarea,.modal select{border:1px solid var(--line-strong);border-radius:var(--r);background:var(--bg);width:100%;height:38px;color:var(--text);box-shadow:var(--shadow-xs);margin-top:6px;padding:0 11px;font-size:14px;font-weight:400;transition:border-color .15s,box-shadow .15s;display:block}.modal input:focus,.modal textarea:focus,.modal select:focus{border-color:var(--accent);box-shadow:var(--ring)}.modal input::placeholder{color:var(--text-3)}.modal .button-row{margin-top:22px}.delete-dialog>p{overflow-wrap:anywhere;color:var(--text-2);font-size:14px;line-height:1.65}.delete-dialog .delete-task-name{color:var(--text);border-radius:var(--r-md);background:var(--bg-muted);padding:10px 12px;font-weight:500}.delete-dialog .button-row{margin-top:22px}.settings-dialog .modal-description{margin-bottom:8px}.settings-row{border-top:1px solid var(--line);justify-content:space-between;align-items:center;gap:16px;padding:14px 0;display:flex}.settings-row:first-of-type{border-top:0}.settings-name{color:var(--text);font-size:14px;font-weight:500}.settings-dialog select{width:auto;min-width:180px;margin-top:0}.segmented{border-radius:var(--r-md);background:var(--bg-muted);gap:2px;padding:3px;display:inline-flex}.segmented label{height:30px;color:var(--text-2);cursor:pointer;border-radius:7px;align-items:center;gap:6px;padding:0 11px;font-size:13px;transition:background-color .12s,color .12s;display:inline-flex;position:relative}.segmented label:hover{color:var(--text)}.segmented label.checked{background:var(--bg);color:var(--text);box-shadow:var(--shadow-xs);font-weight:500}.segmented label:has(input:focus-visible){outline:2px solid var(--accent);outline-offset:1px}.settings-dialog .segmented input{opacity:0;cursor:pointer;width:100%;height:100%;margin:0;position:absolute;inset:0}.settings-notifications{align-items:flex-start}.settings-text p{color:var(--text-3);margin-top:4px;font-size:13px;line-height:1.55}.settings-dialog input.switch{appearance:none;background:var(--line-strong);width:38px;height:22px;box-shadow:none;cursor:pointer;border:0;border-radius:999px;flex:none;margin:0;padding:0;transition:background-color .15s;position:relative}.settings-dialog input.switch:before{content:"";width:18px;height:18px;transition:transform .15s var(--ease);background:#fff;border-radius:50%;position:absolute;top:2px;left:2px;box-shadow:0 1px 2px #0003}.settings-dialog input.switch:checked{background:var(--primary)}.settings-dialog input.switch:checked:before{transform:translate(16px)}.settings-dialog input.switch:focus-visible{box-shadow:var(--ring)}.settings-dialog input.switch:disabled{opacity:.45;cursor:not-allowed}.settings-test{color:var(--text-2);flex-wrap:wrap;align-items:center;gap:8px 12px;padding-bottom:4px;font-size:13px;display:flex}.settings-test .button{align-items:center;gap:6px;display:inline-flex}@media (width<=480px){.settings-row:not(.settings-notifications){flex-direction:column;align-items:stretch;gap:8px}.segmented{display:flex}.segmented label{flex:1;justify-content:center}.settings-dialog select{width:100%}}@media (width>=681px){.task-grid.layout-review,.task-grid.layout-conversation{grid-template-columns:minmax(0,1fr)}.layout-review>.activity-panel,.layout-conversation>.review-panel{display:none}.layout-conversation>.activity-panel{border-left:0}.layout-conversation .messages{padding-top:28px}}@media (width<=1150px){.project-name{max-width:160px}.task-grid{--chat-width:330px}.manuscript{grid-template-columns:minmax(0,1fr) 300px}}@media (width<=1020px){.view-selector>button>span{display:none}.view-selector>button{padding:0 9px}}@media (width<=900px){.sidebar,.sidebar-collapsed>.sidebar{z-index:25;width:min(310px,86vw);box-shadow:var(--float);visibility:hidden;transition:transform .22s var(--ease),visibility 0s linear .22s;display:flex;position:fixed;inset:0 auto 0 0;transform:translate(-102%)}.sidebar.is-open,.sidebar-collapsed>.sidebar.is-open{visibility:visible;transition:transform .22s var(--ease);transform:none}.sidebar-scrim{z-index:24;background:#0000004d;border:0;animation:.2s fade-in;display:block;position:fixed;inset:0}.manuscript{grid-template-columns:minmax(0,1fr)}.manuscript-side{border-left:0;border-top:1px solid var(--line)}.manuscript{grid-template-rows:minmax(0,1fr) auto}.manuscript-side{max-height:45dvh}}@media (width<=680px){.git-commit-form textarea{font-size:16px}.git-row{min-height:44px}.app-shell{inset:auto 0;top:var(--viewport-top,0px);height:var(--viewport-height,100dvh);position:fixed}.main{height:100%;padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right)}.sidebar,.sidebar-collapsed>.sidebar{height:var(--viewport-height,100dvh);padding-bottom:max(10px,env(safe-area-inset-bottom))}.topbar{gap:6px;height:54px;padding:0 6px 0 4px}.topbar .icon-button{width:44px;height:44px}.breadcrumb{gap:6px}.paper-rename input{height:36px;font-size:16px}.task-identity{flex-direction:column;align-items:flex-start;gap:0}.task-identity h1{max-width:100%;font-size:17px}.task-identity>.status{text-overflow:ellipsis;max-width:100%;padding:0;font-size:12px;overflow:hidden;background:0 0!important}.task-state-actions .button{height:36px;padding:0 10px}.view-selector>button{gap:5px;height:36px;padding:0 10px}.view-selector>button>span{display:inline}.task-grid{flex:1;min-height:0;display:flex}.task-grid>.review-panel,.task-grid>.activity-panel{width:100%}.show-conversation>.review-panel,.show-review>.activity-panel{display:none}.activity-panel{border-left:0}.activity-panel>.panel-heading{display:none}.messages{padding:14px 14px 10px}.message-body,.message.user .message-body{font-size:16px}.composer-wrap{padding:6px 10px max(10px,env(safe-area-inset-bottom));flex-shrink:0}.composer textarea{min-height:46px;max-height:min(140px,28dvh);font-size:16px}.composer .send-button{width:36px;height:36px}.chip-select{flex-shrink:1;min-width:0;height:36px}.composer-options{flex-wrap:nowrap;min-width:0}.composer-options>.chip-select:nth-child(2){flex-shrink:3}.home{padding:18px 14px}.home h1{margin-bottom:18px;font-size:26px}.home:has(.compose){padding:0}.home-inner.compose{max-width:none;padding:16px 10px max(10px,env(safe-area-inset-bottom));flex:1;margin:0}.compose .home-logo{width:44px;height:44px;margin-top:auto}.compose h1{margin-bottom:auto}.compose .home-error{order:3;margin:0 0 8px}.compose .composer{order:4;margin-top:16px}.composer.large{border-radius:var(--r-xl)}.composer.large textarea{min-height:52px;max-height:min(200px,30dvh);padding:12px 16px 4px;font-size:16px}.composer.large .composer-footer{padding:4px 8px 8px 12px}.action-menu{border-radius:var(--r-xl);width:auto;max-width:none;padding:6px;top:auto!important;left:8px!important;right:8px!important;bottom:calc(8px + env(safe-area-inset-bottom))!important;min-width:0!important}.action-menu:popover-open{animation:sheet-in .22s var(--ease)}.action-menu::backdrop{background:#0000004d}.action-menu:before{content:attr(aria-label);color:var(--text-3);text-overflow:ellipsis;white-space:nowrap;padding:8px 12px 6px;font-size:13px;font-weight:500;overflow:hidden}.action-menu>button,.action-menu>a{border-radius:var(--r-md);gap:12px;min-height:50px;padding:4px 12px;font-size:16px}.review-tools{height:48px;padding-right:4px}.chip-select.zoom-chip{height:36px}.review-tools .icon-button,.review-tools .full-pdf-link{width:44px;height:44px}.review-panel{padding-bottom:env(safe-area-inset-bottom)}.review-feedback{padding:6px 8px 6px 14px}.review-feedback .button{height:40px}.skill-description{display:none}.review-placeholder{padding:24px 20px}.review-ready .button{height:40px}.manuscript{flex-direction:column;display:flex}.manuscript-side{max-height:none;padding-bottom:env(safe-area-inset-bottom);border-top:0;flex:1}.side-tabs,.manuscript.show-pdf .manuscript-side,.manuscript.show-contents .manuscript-pages,.manuscript.show-notes .manuscript-pages,.manuscript.show-git .manuscript-pages{display:none}.contents-panel button{min-height:44px;font-size:15px}.note-editor textarea{font-size:16px}.note-editor .button{min-height:40px}.notes-send .button{min-height:44px}.manuscript-pages{flex-direction:column;flex:1;display:flex}.pdf-toolbar{gap:2px;padding:0 4px}.pdf-zoom{display:none}.pdf-toolbar .icon-button{width:40px;height:40px}.pdf-pager input{width:38px;height:34px;font-size:16px}.pdf-find input{font-size:16px}.pdf-container .pdfViewer{padding:10px 0 40px}.pdf-container .pdfViewer.removePageBorders .page{margin-bottom:10px}.add-note{height:40px;font-size:14px}.sidebar-header{height:58px}.sidebar .icon-button{width:44px;height:44px}.project-switcher{min-height:44px}.nav-link,.add-project{min-height:44px;font-size:15px}.task-link{min-height:56px;padding:10px 4px 10px 10px}.task-title{font-size:15px}.task-row .more-button{width:44px;height:44px}.task-rename input{height:44px;font-size:16px}.message-action{height:36px}.tool-item summary{min-height:40px}.request-card button,.question input,.connection-banner>button,.runtime-banner>button,.jump-latest,.delete-dialog .button,.modal .button{min-height:44px}.question input,.modal input{font-size:16px}.modal-backdrop{top:var(--viewport-top,0px);height:var(--viewport-height,100dvh);align-items:flex-end;padding:12px;bottom:auto}.modal{max-height:100%;padding:22px 18px}.modal-close{width:44px;height:44px;top:6px;right:6px}.toast{top:60px}}@media (width<=400px){.view-selector>button>span{display:none}.view-selector>button{padding:0 11px}.task-state-actions .button-label{display:none}}@keyframes pulse{50%{opacity:.35}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes bounce{0%,80%,to{opacity:.5;transform:translateY(0)}40%{opacity:1;transform:translateY(-3px)}}@keyframes menu-in{0%{opacity:0;transform:translateY(-4px)scale(.98)}}@keyframes dialog-in{0%{opacity:0;transform:translateY(8px)scale(.98)}}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,-6px)}}@keyframes fade-in{0%{opacity:0}}@keyframes sheet-in{0%{opacity:0;transform:translateY(16px)}}@media (hover:none){.task-row:active,.nav-link:active,.add-project:active,.project-switcher:active,.action-menu>button:active,.action-menu>a:active,.answer-options button:active,.icon-button:active,.view-selector>button:active,.tool-item summary:active{background:var(--bg-hover)}.button:active:not(:disabled){transform:scale(.98)}}@media (prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important;animation:none!important}}