Skip to main content

max / goingson

feat(settings): update-check toggle + data-export documentation New commands::preferences module persists a small JSON file (preferences.json) in the Tauri app config dir for settings that need to be read before the database is up. First preference: update_check_on_launch (default true). Two commands wired: get_preferences, set_update_check_on_launch. main.rs setup hook gates the 10s-delayed updater check on this preference; the rest of the plugin config (pubkey, endpoints, createUpdaterArtifacts) is unchanged. Settings → About replaces the static "Updates are checked automatically on launch" line with a labeled toggle row. New .settings-toggle-row CSS primitive (label/desc on the left, control on the right) reusable for future preference rows. API wrapper: GoingsOn.api.preferences.{get, setUpdateCheckOnLaunch}. docs/data-export.md is new: documents the five export formats (JSON, gzipped backup, CSV, ICS, raw SQLite), the top-level JSON schema with version + exportedAt, per-entity field summaries that point at crates/core/src/ for the full shapes, denormalized-field caveats (*Name fields aren't authoritative on restore), restore semantics (replace vs merge, 1.x compatibility), a verification recipe a user can run with gunzip + a text editor, and the deliberately-not-exported list (OAuth tokens, TOTP secrets, sync state, window state). Source-of- truth pointer to backup.rs::FullExport at the bottom. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Author: Max Johnson <me@maxj.phd> · 2026-06-03 01:47 UTC
Commit: 9719e286e3dad0bb205da86d17507f32217dc076
Parent: 7421ead
9 files changed, +230 insertions, -11 deletions
@@ -0,0 +1,106 @@
1 + # Data Export
2 +
3 + GoingsOn stores everything in a SQLite database on your machine. You can take that data out at any time, in formats that other tools can read or that you can inspect yourself.
4 +
5 + ## Export formats
6 +
7 + | Format | Scope | File | What it's for |
8 + |---|---|---|---|
9 + | JSON (full) | Projects, tasks, events, emails, contacts | `.json` | Inspection, migration, scripted processing |
10 + | Backup | Same as JSON (full) | `.json.gz` | Round-trip restore into a fresh install |
11 + | CSV (tasks) | Tasks only | `.csv` | Spreadsheets |
12 + | ICS (calendar) | Events only | `.ics` | Apple Calendar, Google Calendar, Outlook |
13 + | Raw SQLite | Everything | `goingson.db` | Direct copy of the database file |
14 +
15 + JSON and Backup share one schema; Backup is the same JSON gzipped. CSV and ICS are lossy conversions for interop with other tools.
16 +
17 + The raw SQLite file lives in the Tauri app-data directory. You can copy it like any other file; this is the most complete export possible.
18 +
19 + ## JSON schema
20 +
21 + A JSON export is a single object with these top-level fields:
22 +
23 + ```json
24 + {
25 + "version": "1.1",
26 + "exportedAt": "2026-06-02T14:30:00Z",
27 + "projects": [ ... ],
28 + "tasks": [ ... ],
29 + "events": [ ... ],
30 + "emails": [ ... ],
31 + "contacts": [ ... ]
32 + }
33 + ```
34 +
35 + - `version` is the export-schema version, not the app version. Restore accepts any `1.x` file.
36 + - `exportedAt` is UTC, ISO 8601.
37 + - The five arrays are independent. An export with zero contacts but many tasks is well-formed.
38 +
39 + Field names use `camelCase`. Timestamps are UTC ISO 8601 (`2026-06-02T14:30:00Z`). IDs are UUIDs (`550e8400-e29b-41d4-a716-446655440000`).
40 +
41 + ### Entity shapes
42 +
43 + The full field list for each entity is the serde-serialized form of the Rust types in `crates/core/src/`. Below is the minimum every entity carries; consult the source for the complete list.
44 +
45 + **Project** (`crates/core/src/models/project.rs`)
46 + ```json
47 + {
48 + "id": "...",
49 + "name": "Q3 Launch",
50 + "description": "",
51 + "projectType": "work",
52 + "status": "active",
53 + "createdAt": "2026-04-01T10:00:00Z"
54 + }
55 + ```
56 +
57 + **Task** (`crates/core/src/models/task.rs`) — the densest entity. Required: `id`, `description`, `status`, `priority`, `tags`, `urgency`, `createdAt`. Optional fields cover scheduling (`due`, `scheduledStart`, `scheduledDuration`), recurrence (`recurrence`, `recurrenceRule`, `recurrenceParentId`), workflow (`snoozedUntil`, `waitingForResponse`), linkage (`projectId`, `milestoneId`, `contactId`, `sourceEmailId`), nested data (`annotations`, `subtasks`), and time tracking (`estimatedMinutes`, `actualMinutes`).
58 +
59 + **Event** (`crates/core/src/models/event.rs`) — calendar event with start/end times, optional project/contact links, recurrence rule.
60 +
61 + **Email** (`crates/core/src/models/email.rs`) — message metadata, addresses, body (text and html), attachments are stored by reference (path, mime, size) — attachment **contents** are not embedded in the JSON to keep file sizes sane. To export attachment payloads, copy the `attachments/` directory next to the SQLite file.
62 +
63 + **Contact** (`crates/core/src/contact.rs`) — name, multi-field emails/phones/socials, tags, notes.
64 +
65 + ### Denormalized display fields
66 +
67 + A few fields are duplicated for display convenience and are not authoritative:
68 +
69 + - `Task.projectName`, `Task.contactName` — copies of the linked project/contact name at export time. On restore, GoingsOn re-derives these from the linked IDs; if a linked project was deleted before export, the display name still appears but the link won't resolve.
70 +
71 + If you're processing exports programmatically, treat IDs as the source of truth and ignore the `*Name` fields.
72 +
73 + ## Restore
74 +
75 + Restoring a `.json.gz` backup goes through one of two modes:
76 +
77 + - **Replace all** — clears the existing database, then loads the backup. Use this when restoring onto a fresh install.
78 + - **Merge** — adds the backup's entities to whatever is already there. Useful for combining devices, but will create duplicates if the same entities exist on both sides (entities are matched by ID; a duplicate task on two devices created independently has two different IDs).
79 +
80 + Plain `.json` exports are not restorable through the UI. They are intended for inspection and migration to other tools. If you want a round-trip backup, use the `.json.gz` format.
81 +
82 + The restore version check accepts any export with `version` starting `1.`. Future major versions (`2.x`) will require an explicit conversion path.
83 +
84 + ## Verifying an export
85 +
86 + Open the `.json` file in a text editor. You should see:
87 +
88 + 1. The five top-level arrays match the counts shown in Settings → Data → Export summary.
89 + 2. Every `id` field is a UUID.
90 + 3. Every timestamp ends with `Z` (UTC).
91 + 4. Search for an entity you remember (a task title, a contact name) — it should appear verbatim.
92 +
93 + For a `.json.gz` backup, decompress first: `gunzip -k backup.json.gz` produces `backup.json` which you can inspect the same way.
94 +
95 + ## What's not exported
96 +
97 + - **OAuth tokens and email passwords.** Re-authenticate after restoring. This is intentional — credentials should not travel in a portable file.
98 + - **TOTP secrets.** Same reason.
99 + - **Cloud sync state.** A restored database starts as if sync had never been configured; re-enable it in Settings → Cloud sync.
100 + - **Plugin runtime state.** Plugins are loaded fresh from the plugin directory on next launch.
101 + - **Window state.** Sidebar widths, last view, etc.
102 + - **Theme files.** Bundled themes ship with the app; custom themes live as separate `.toml` files in the app config directory and can be copied alongside the database if needed.
103 +
104 + ## Source of truth
105 +
106 + The export schema is defined in `src-tauri/src/export/backup.rs::FullExport`. Entity field lists are the serde forms of the structs in `crates/core/src/`. Any drift between this document and the code is a bug in this document — open an issue or PR.
@@ -2193,6 +2193,16 @@ body {
2193 2193 font-size: var(--font-size-sm);
2194 2194 color: var(--text-secondary);
2195 2195 }
2196 + /* Preference row — label/description on the left, control (toggle, button) on the right. */
2197 + .settings-toggle-row {
2198 + display: flex;
2199 + justify-content: space-between;
2200 + align-items: center;
2201 + gap: var(--space-3);
2202 + margin: var(--space-3) 0;
2203 + }
2204 + .settings-toggle-row > div { flex: 1; }
2205 + .settings-toggle-row .settings-desc { margin-bottom: 0; }
2196 2206 .settings-section-block {
2197 2207 padding-top: var(--space-4);
2198 2208 border-top: var(--border-width-sm) solid var(--border-color);
@@ -1 +1 @@
1 - @font-face{font-family:Reglo;src:url('../fonts/Reglo-Bold.woff2') format('woff2');font-weight:700;font-style:normal;font-display:swap}*,::after,::before{box-sizing:border-box;margin:0;padding:0}:root{--timeline-slot-h:12px;--bg-primary:#E0E4FA;--bg-secondary:#CDD3F0;--bg-tertiary:#BAC2E6;--bg-card:#FFFFFF;--text-primary:#000000;--text-secondary:#2D2D2D;--text-muted:#6B6B6B;--accent-yellow:#F7D154;--accent-green:#5CB85C;--accent-blue:#6196FF;--accent-purple:#7B68EE;--accent-red:#DC3545;--accent-cyan:#17A2B8;--border-color:#000000;--border-width:2px;--border-width-sm:2px;--accent-color:var(--accent-blue);--accent-primary:var(--accent-blue);--bg-hover:var(--bg-tertiary);--border-light:var(--bg-tertiary);--text-on-accent:var(--bg-card);--shadow-offset-xs:1px;--shadow-offset-md:3px;--shadow-offset:4px;--shadow-offset-lg:6px;--shadow-offset-xl:8px;--shadow-brutal-xs:var(--shadow-offset-xs) var(--shadow-offset-xs) 0 var(--border-color);--shadow-brutal-md:var(--shadow-offset-md) var(--shadow-offset-md) 0 var(--border-color);--shadow-brutal-lg:var(--shadow-offset-lg) var(--shadow-offset-lg) 0 var(--border-color);--shadow-brutal-xl:var(--shadow-offset-xl) var(--shadow-offset-xl) 0 var(--border-color);--radius-xs:3px;--radius-sm:5px;--radius-md:5px;--radius-lg:10px;--radius-xl:20px;--radius-full:50%;--width-container:1400px;--width-modal:560px;--width-sidebar:280px;--space-1:0.25rem;--space-2:0.5rem;--space-3:0.75rem;--space-4:1rem;--space-5:1.25rem;--space-6:1.5rem;--font-sans:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,sans-serif;--font-serif:Georgia,'Times New Roman',serif;--font-mono:'SF Mono','Consolas','Liberation Mono',monospace;--font-display:'Reglo',var(--font-serif);--font-heading:var(--font-sans);--font-body:var(--font-sans);--font-size-xxs:0.65rem;--font-size-xs:0.7rem;--font-size-sm:0.75rem;--font-size-md:0.8rem;--font-size-base:0.875rem;--font-size-lg:1rem;--font-size-xl:1.1rem;--font-size-2xl:1.25rem;--font-size-3xl:1.5rem;--font-size-4xl:1.75rem;--line-height-tight:1.25;--line-height-normal:1.5;--line-height-relaxed:1.75;--transition-fast:0.1s;--transition-normal:0.15s;--transition-slow:0.3s;--overlay-color:color-mix(in srgb, var(--text-primary) 60%, transparent)}html{font-size:16px}.flex-1{flex:1}.row{display:flex}.text-sm-secondary{font-size:.875rem;color:var(--text-secondary)}.text-xs-secondary{font-size:.75rem;color:var(--text-secondary)}.text-accent-red{color:var(--accent-red)}.mb-1{margin-bottom:1rem}.mb-2{margin-bottom:var(--space-2)}.form-select--compact{width:auto;min-width:120px}.settings-divider{margin-top:1.5rem;padding-top:1.5rem;border-top:2px solid var(--border-color)}.settings-heading{margin-bottom:1rem;font-family:var(--font-heading)}.settings-desc{font-size:.875rem;color:var(--text-secondary);margin-bottom:1rem}.subtask-item{display:flex;align-items:center;gap:.5rem;padding:.5rem;background:var(--bg-secondary);border-radius:4px;margin-bottom:.5rem}.subtask-item--linked{background:var(--bg-tertiary);border-left:var(--border-width) solid var(--accent-color)}.subtask-checkbox{cursor:pointer;width:18px;height:18px}.subtask-checkbox-disabled{cursor:not-allowed;width:18px;height:18px;opacity:.5}.subtask-text-done{text-decoration:line-through;opacity:.6}body{font-family:var(--font-sans);background-color:var(--bg-primary);color:var(--text-primary);line-height:1.6;height:100vh;overflow:hidden;display:flex;flex-direction:column}.ui-mode-desktop .app-header{background:var(--bg-card);border-bottom:var(--border-width) solid var(--border-color);padding:.75rem 1.5rem;display:flex;justify-content:space-between;align-items:center}.ui-mode-desktop .header-content{display:flex;align-items:center;gap:.75rem}.ui-mode-desktop .header-actions{display:flex;align-items:center;gap:.5rem}.ui-mode-desktop .app-title{font-family:var(--font-display);font-size:1.75rem;font-weight:700;color:var(--text-primary);letter-spacing:-.02em}.ui-mode-desktop .app-subtitle{font-size:.875rem;color:var(--text-muted);font-weight:500;line-height:1}.mobile-view-title{display:none}.ui-mode-desktop .tab-navigation{display:flex;justify-content:center;gap:.5rem}.ui-mode-desktop .tab{display:flex;align-items:center;gap:.5rem;padding:.75rem 1.25rem;text-decoration:none;color:var(--text-primary);background:var(--bg-card);border:var(--border-width) solid var(--border-color);border-radius:var(--radius-md);font-weight:600;transition:background-color .15s ease}.ui-mode-desktop .tab:hover{background:var(--bg-secondary)}.ui-mode-desktop .tab.active{background-color:var(--accent-blue);color:var(--text-on-accent)}.ui-mode-desktop .tab-icon{font-size:1.1rem}.ui-mode-desktop .tab-label{font-weight:600;font-size:.9rem}.ui-mode-desktop .tab.tab-right{margin-left:auto}.tab-group .subview.hidden{display:none}.ui-mode-desktop .pill-nav{display:flex;align-items:center;gap:var(--space-1);padding:0;margin-bottom:1rem;min-height:2rem}.ui-mode-desktop .pill{padding:var(--space-1) var(--space-3);border-radius:var(--radius-xl);border:var(--border-width-sm) solid var(--border-color);background:var(--bg-card);font-family:var(--font-sans);font-size:var(--font-size-sm);font-weight:600;cursor:pointer;transition:background-color var(--transition-fast)}.ui-mode-desktop .pill:hover{background:var(--bg-tertiary)}.ui-mode-desktop .pill.active{background:var(--text-primary);color:var(--bg-card);border-color:var(--text-primary)}.main-content{flex:1;max-width:var(--width-container);width:100%;margin:0 auto;padding:1.5rem 1.75rem 2rem}.page-header{display:flex;justify-content:space-between;align-items:center;gap:.5rem;margin-bottom:1rem}.page-title{font-family:var(--font-heading);font-size:1.75rem;font-weight:700;color:var(--text-primary)}.tab-group{position:relative}.tab-group>.subview>.page-header{position:absolute;top:0;right:0;margin:0;z-index:1}.tab-group .page-header .page-title{display:none}#day-plan-view>.page-header,#project-dashboard-view>.page-header{position:static;margin-bottom:1rem}#project-dashboard-view .page-title{display:block}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.625rem 1.25rem;border:var(--border-width) solid var(--border-color);border-radius:var(--radius-sm);font-size:.9rem;font-weight:600;cursor:pointer;transition:background-color .15s ease;text-decoration:none;background:var(--bg-card);color:var(--text-primary)}.btn:hover{background:var(--bg-secondary)}.btn:active{background:var(--bg-tertiary)}.btn:disabled{background:var(--bg-tertiary);color:var(--text-muted);cursor:not-allowed;opacity:.7}.btn:disabled:hover{background:var(--bg-tertiary)}.btn-primary{background-color:var(--accent-blue);color:var(--text-on-accent)}.btn-primary:hover{background-color:color-mix(in srgb,var(--accent-blue) 85%,#000)}.btn-primary:active{background-color:color-mix(in srgb,var(--accent-blue) 70%,#000)}.btn-secondary{background-color:var(--bg-secondary);color:var(--text-primary)}.btn-danger{background-color:var(--accent-red);color:var(--text-on-accent)}.btn-danger:hover{background-color:color-mix(in srgb,var(--accent-red) 85%,#000)}.btn-danger:active{background-color:color-mix(in srgb,var(--accent-red) 70%,#000)}.btn-sm{padding:.375rem .75rem;font-size:.8rem}.cards-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:1.25rem}.card{background-color:var(--bg-card);border:var(--border-width) solid var(--border-color);border-radius:var(--radius-md);padding:1.25rem;box-shadow:var(--shadow-offset) var(--shadow-offset) 0 var(--border-color);transition:transform .15s ease,box-shadow .15s ease,background-color .15s ease;cursor:pointer}.card:hover{background-color:var(--bg-secondary);transform:translate(-2px,-2px);box-shadow:calc(var(--shadow-offset) + 2px) calc(var(--shadow-offset) + 2px) 0 var(--border-color)}.card--list-item{padding:.75rem;border-radius:0;margin-bottom:.5rem}.card--shell{padding:0;cursor:default;display:flex;flex-direction:column;overflow:hidden}.card--shell:hover{background-color:var(--bg-card);transform:none;box-shadow:var(--shadow-offset) var(--shadow-offset) 0 var(--border-color)}.card--muted{background:var(--bg-secondary);border:none;box-shadow:none;cursor:default}.card--muted:hover{background:var(--bg-secondary);transform:none;box-shadow:none}.card--static{cursor:default}.card--static:hover{background-color:var(--bg-card);transform:none;box-shadow:var(--shadow-offset) var(--shadow-offset) 0 var(--border-color)}.card-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:.75rem}.card-title{font-family:var(--font-heading);font-size:1.1rem;font-weight:700;color:var(--text-primary)}.card-description{font-size:.9rem;color:var(--text-secondary);margin-bottom:1rem}.markdown-content{font-size:.9rem;color:var(--text-secondary);line-height:1.5}.markdown-content p{margin:0 0 .5em 0}.markdown-content p:last-child{margin-bottom:0}.markdown-content ol,.markdown-content ul{margin:0 0 .5em 1.5em;padding:0}.markdown-content code{background:var(--bg-tertiary);padding:.1em .3em;border-radius:3px;font-size:.85em}.markdown-content pre{background:var(--bg-tertiary);padding:.5em;border-radius:4px;overflow-x:auto;margin:0 0 .5em 0}.markdown-content pre code{background:0 0;padding:0}.markdown-content a{color:var(--accent-color)}.markdown-content blockquote{border-left:3px solid var(--border-color);margin:0 0 .5em 0;padding-left:.75em;color:var(--text-secondary)}.markdown-content h1,.markdown-content h2,.markdown-content h3{margin:.5em 0 .25em 0;font-size:1em;font-weight:600;color:var(--text-primary)}.markdown-content table{border-collapse:collapse;margin:.5em 0}.markdown-content td,.markdown-content th{border:1px solid var(--border-color);padding:.25em .5em}.markdown-content img{max-width:100%}.card-meta{display:flex;gap:.5rem;flex-wrap:wrap}.badge,.tag{display:inline-flex;align-items:center;padding:.25rem .625rem;border:var(--border-width-sm) solid var(--border-color);border-radius:var(--radius-sm);font-size:.8125rem;font-weight:600;background:var(--bg-card);color:var(--text-primary)}.badge[data-color=green],.tag[data-color=green]{background-color:color-mix(in srgb,var(--accent-green) 20%,var(--bg-card));border-color:var(--accent-green)}.badge[data-color=yellow],.tag[data-color=yellow]{background-color:color-mix(in srgb,var(--accent-yellow) 20%,var(--bg-card));border-color:var(--accent-yellow)}.badge[data-color=red],.tag[data-color=red]{background-color:color-mix(in srgb,var(--accent-red) 20%,var(--bg-card));border-color:var(--accent-red)}.badge[data-color=cyan],.tag[data-color=cyan]{background-color:color-mix(in srgb,var(--accent-cyan) 20%,var(--bg-card));border-color:var(--accent-cyan)}.badge[data-color=purple],.tag[data-color=purple]{background-color:color-mix(in srgb,var(--accent-purple) 20%,var(--bg-card));border-color:var(--accent-purple)}.badge[data-color=muted],.tag[data-color=muted]{background-color:var(--bg-tertiary);border-color:var(--text-muted)}.badge[data-color=blue],.tag[data-color=blue]{background-color:color-mix(in srgb,var(--accent-blue) 20%,var(--bg-card));border-color:var(--accent-blue)}.badge--xs{padding:.1rem .5rem;font-size:.75rem}.badge--sm{padding:.15rem .55rem;font-size:.78rem}.badge--filled{border:none}.badge--filled[data-color=green]{background:var(--accent-green);color:var(--text-on-accent)}.badge--filled[data-color=yellow]{background:var(--accent-yellow);color:var(--text-primary)}.badge--filled[data-color=red]{background:var(--accent-red);color:var(--text-on-accent)}.badge--filled[data-color=cyan]{background:var(--accent-cyan);color:var(--text-on-accent)}.badge--filled[data-color=purple]{background:var(--accent-purple);color:var(--text-on-accent)}.badge--filled[data-color=blue]{background:var(--accent-blue);color:var(--text-on-accent)}.badge--filled[data-color=muted]{background:var(--bg-secondary);color:var(--text-primary)}.kbd-hint{display:inline-block;font-family:var(--font-mono, monospace);font-size:.65rem;font-weight:600;padding:.1rem .35rem;margin-left:.35rem;border:1px solid currentColor;border-radius:3px;opacity:.6;vertical-align:middle;line-height:1}.tag.status-active{background-color:color-mix(in srgb,var(--accent-green) 20%,var(--bg-card));border-color:var(--accent-green)}.tag.status-on_hold,.tag.status-onhold{background-color:color-mix(in srgb,var(--accent-yellow) 20%,var(--bg-card));border-color:var(--accent-yellow)}.tag.status-archived{background-color:var(--bg-tertiary);border-color:var(--text-muted)}.tag.status-inactive{background-color:color-mix(in srgb,var(--accent-red) 20%,var(--bg-card));border-color:var(--accent-red)}.tag.status-completed{background-color:color-mix(in srgb,var(--accent-cyan) 20%,var(--bg-card));border-color:var(--accent-cyan)}.data-table{width:100%;border-collapse:separate;border-spacing:0;background-color:var(--bg-card);border:var(--border-width) solid var(--border-color);border-radius:var(--radius-md);overflow:hidden;box-shadow:var(--shadow-offset) var(--shadow-offset) 0 var(--border-color)}.data-table td,.data-table th{padding:1rem 1.25rem;text-align:left;border-bottom:2px solid var(--border-color)}.data-table th{background-color:var(--bg-secondary);font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--text-primary)}.data-table tbody tr{transition:background-color .15s ease}.data-table tbody tr:hover{background-color:var(--bg-secondary)}.data-table tbody tr:last-child td{border-bottom:none}.data-table tbody tr.keyboard-selected,.data-table tbody tr.selected{background-color:color-mix(in srgb,var(--accent-blue) 25%,var(--bg-card))}.task-table{width:100%;background:var(--bg-card);border:var(--border-width) solid var(--border-color);border-radius:var(--radius-lg);overflow:hidden;display:flex;flex-direction:column;flex:1;min-height:0;box-shadow:var(--shadow-offset) var(--shadow-offset) 0 var(--border-color)}.task-header-row,.task-row{display:grid;grid-template-columns:1fr 140px 60px 110px 90px 100px 90px;align-items:center;gap:.75rem}.task-header-row{background-color:var(--bg-secondary);border-bottom:2px solid var(--border-color);padding:0 1.25rem}.task-header-row .task-cell{padding:.75rem 0;font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--text-primary)}.task-list-container{flex:1;min-height:0;overflow-y:auto;position:relative}.task-row{padding:.75rem 1.25rem;border-bottom:1px solid var(--border-color);transition:background-color .15s ease,opacity .25s ease,transform .25s ease;cursor:pointer}.task-row-removing{opacity:0;transform:translateX(20px)}.task-row:hover{background-color:var(--bg-secondary)}.task-row:last-child{border-bottom:none}.task-row.keyboard-selected,.task-row.selected{background-color:color-mix(in srgb,var(--accent-blue) 25%,var(--bg-card))}.task-cell{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.task-actions-header{text-align:right}.event-table tbody tr{cursor:pointer}.task-description{font-weight:600;white-space:normal;display:flex;flex-wrap:wrap;align-items:center;gap:.25rem .5rem}.task-description-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}.task-project{font-size:.85rem;color:var(--text-secondary);white-space:nowrap}.priority-high,.priority-low,.priority-medium{display:inline-block;padding:.25rem .5rem;border-radius:var(--radius-xs);font-weight:700;text-align:center}.priority-high{color:var(--accent-red);background:#fde8ea;background:color-mix(in srgb,var(--accent-red) 15%,var(--bg-card))}.priority-medium{color:var(--accent-yellow);background:#fef8e6;background:color-mix(in srgb,var(--accent-yellow) 15%,var(--bg-card))}.priority-low{color:var(--text-muted);background:var(--bg-secondary)}.sortable{cursor:pointer;user-select:none;white-space:nowrap}.sortable:hover{background:var(--bg-hover)}.sort-arrow{display:inline-block;width:.8em;margin-left:.25rem;opacity:.3}.sort-arrow::after{content:'\2195'}.sortable.sort-asc .sort-arrow::after{content:'\2191'}.sortable.sort-desc .sort-arrow::after{content:'\2193'}.sortable.sort-asc .sort-arrow,.sortable.sort-desc .sort-arrow{opacity:1}.task-overdue .task-description-text{color:var(--accent-red)}.task-overdue .task-due{color:var(--accent-red);font-weight:600}.task-tags{display:flex;gap:.25rem;flex-wrap:wrap}.task-tag{background-color:var(--bg-tertiary);color:var(--text-primary);padding:.125rem .5rem;border-radius:var(--radius-xs);font-size:.75rem;font-weight:600;border:1px solid var(--border-color)}.recurrence-icon{color:var(--accent-purple);font-size:.85rem;font-weight:700}.annotation-badge{background-color:var(--accent-yellow);color:var(--text-primary);padding:.125rem .5rem;border-radius:var(--radius-xs);font-size:.7rem;font-weight:700;border:var(--border-width-sm) solid var(--border-color)}.subtask-badge{background-color:var(--bg-secondary);color:var(--text-primary);padding:.125rem .5rem;border-radius:var(--radius-xs);font-size:.7rem;font-weight:700;border:var(--border-width-sm) solid var(--border-color);margin-left:.25rem}.task-started{border-left:4px solid var(--accent-green)}.task-completed{opacity:.5;text-decoration:line-through}.task-deleted{display:none}.due-overdue{color:var(--accent-red);font-weight:700;background:#fde8ea;background:color-mix(in srgb,var(--accent-red) 15%,var(--bg-card));padding:.25rem .5rem;border-radius:var(--radius-xs)}.due-today{color:var(--accent-yellow);font-weight:700;background:#fef8e6;background:color-mix(in srgb,var(--accent-yellow) 15%,var(--bg-card));padding:.25rem .5rem;border-radius:var(--radius-xs)}.due-soon{color:var(--text-secondary)}.due-future{color:var(--text-muted)}.events-list{display:flex;flex-direction:column;flex:1;min-height:0;gap:1rem}.event-table-virtual{width:100%;background:var(--bg-card);border:var(--border-width) solid var(--border-color);border-radius:var(--radius-lg);overflow:hidden;display:flex;flex-direction:column;flex:1;min-height:0;box-shadow:var(--shadow-offset) var(--shadow-offset) 0 var(--border-color)}.event-header-row,.event-row-virtual{display:grid;grid-template-columns:100px 80px 1fr 150px 40px;align-items:center;gap:.5rem}.event-header-row{background-color:var(--bg-secondary);border-bottom:2px solid var(--border-color);flex-shrink:0}.event-header-row .event-cell{padding:1rem 1.25rem;font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--text-primary)}.event-list-container{flex:1;min-height:0;overflow-y:auto;position:relative}.event-row-virtual{padding:.75rem 1.25rem;border-bottom:1px solid var(--border-color);transition:background-color .15s ease;cursor:pointer}.event-row-virtual:hover{background-color:var(--bg-secondary)}.event-row-virtual:last-child{border-bottom:none}.event-row-virtual.event-past{opacity:.7}.event-cell{overflow:hidden;text-overflow:ellipsis}.event-row{cursor:pointer}.event-cell-date{white-space:nowrap}.event-cell-date .event-date-num{font-weight:700;font-size:.9rem;color:var(--text-primary);margin-right:.5rem}.event-date-badge{display:inline-block;padding:.15rem .4rem;background:var(--accent-green);color:var(--text-on-accent);font-size:.7rem;font-weight:700;text-transform:uppercase;border-radius:var(--radius-xs);margin-right:.5rem}.event-cell-time{font-family:var(--font-mono);font-size:.85rem;color:var(--text-secondary)}.event-cell-title{font-weight:600}.event-cell-location{color:var(--text-secondary);font-size:.875rem}.event-date-badge.event-proximity-today{background:var(--accent-green)}.event-date-badge.event-proximity-tomorrow{background:var(--accent-yellow);color:var(--text-primary)}.event-date-badge.event-proximity-week{background:var(--accent-cyan)}.event-date-badge.event-proximity-future{background:var(--accent-blue)}.event-date-badge.event-proximity-past{background:var(--text-muted)}.event-row.event-past{opacity:.7}.no-upcoming-events{text-align:center;padding:2rem;color:var(--text-secondary);font-style:italic}.past-events-section{margin-top:.5rem}.past-events-toggle{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;background:var(--bg-secondary);border:var(--border-width-sm) solid var(--border-color);border-radius:var(--radius-sm);cursor:pointer;font-weight:600;color:var(--text-secondary);transition:background-color .15s ease,color .15s ease;list-style:none}.past-events-toggle::-webkit-details-marker{display:none}.past-events-toggle::before{content:'▶';font-size:.7rem;transition:transform .15s ease}.past-events-section[open] .past-events-toggle::before{transform:rotate(90deg)}.past-events-toggle:hover{background:var(--bg-tertiary);color:var(--text-primary)}.past-events-label{flex:1}.past-events-count{background:var(--text-muted);color:var(--text-on-accent);font-size:.75rem;padding:.15rem .5rem;border-radius:var(--radius-sm)}.past-events-section .event-table-past{margin-top:.75rem;opacity:.85}.past-events-section .event-list-container{max-height:300px}#recurring-events-section .event-table-virtual{opacity:1;margin-top:.75rem}#recurring-events-section .event-list-container{max-height:320px}.event-row-virtual.event-recurring .event-recurrence-pattern{font-weight:600;color:var(--accent-primary)}.events-section-heading{margin:1rem 0 .5rem;font-size:.95rem;font-weight:700;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em}.event-item{display:flex;gap:1rem;padding:1rem;background-color:var(--bg-card);border:var(--border-width) solid var(--border-color);border-radius:var(--radius-md);transition:background-color .15s ease;cursor:pointer}.event-item:hover{background-color:var(--bg-secondary)}.event-date{flex-shrink:0;width:80px;text-align:center;padding:.75rem;background-color:var(--accent-green);border-radius:var(--radius-sm);color:var(--text-on-accent)}.event-date-day{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em}.event-date-num{font-size:1.5rem;font-weight:700}.event-content{flex:1}.event-title{font-family:var(--font-heading);font-weight:700;font-size:1.1rem;color:var(--text-primary);margin-bottom:.25rem}.event-details{font-size:.875rem;color:var(--text-secondary);display:flex;gap:1rem}.event-location,.event-time{display:flex;align-items:center;gap:.25rem}.event-project{margin-top:.5rem}.email-list{flex:1;min-height:0}.email-list-container{flex:1;min-height:0;overflow-y:auto;position:relative}.email-item{display:flex;gap:1rem;padding:1rem;border-bottom:2px solid var(--border-color);transition:background-color .15s ease;cursor:pointer}.email-item:last-child{border-bottom:none}.email-item:hover{background-color:var(--bg-secondary)}.email-item.unread{background-color:color-mix(in srgb,var(--accent-blue) 20%,var(--bg-card));border-left:4px solid var(--accent-blue)}.email-item.unread .email-subject{font-weight:700}.email-item.unread .email-from{font-weight:700}.email-item.outgoing{border-left:4px solid var(--accent-green)}.email-checkbox{flex-shrink:0;margin-top:.25rem}.email-content{flex:1;min-width:0}.email-header{display:flex;justify-content:space-between;margin-bottom:.25rem;align-items:center;gap:.5rem}.thread-badge{background-color:var(--bg-tertiary);color:var(--text-secondary);font-size:.7rem;font-weight:600;padding:.1rem .4rem;border-radius:var(--radius-md);min-width:1.25rem;text-align:center}.email-from{color:var(--text-primary);font-size:.9rem;font-weight:600}.email-date{color:var(--text-muted);font-size:.8rem;flex-shrink:0;font-weight:600}.email-subject{color:var(--text-primary);font-size:.95rem;margin-bottom:.25rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.email-preview{color:var(--text-muted);font-size:.85rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@keyframes toastSlideIn{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.toast{position:fixed;bottom:var(--space-5);right:var(--space-5);padding:var(--space-3) var(--space-5);background:var(--bg-card);color:var(--text-primary);border:var(--border-width) solid var(--border-color);border-radius:var(--radius-md);box-shadow:var(--shadow-brutal-md);z-index:2000;font-weight:600;display:flex;align-items:center;gap:var(--space-3);animation:toastSlideIn .3s ease}.toast.toast-leaving{opacity:0;transform:translateY(10px);transition:opacity .3s ease,transform .3s ease}.toast-info{background:var(--bg-card);color:var(--text-primary)}.toast-success{background:var(--accent-green);color:var(--text-on-accent)}.toast-error{background:var(--accent-red);color:var(--text-on-accent)}.toast-action{background:0 0;border:1px solid currentColor;border-radius:var(--radius-sm);color:inherit;cursor:pointer;padding:.15rem .5rem;font-size:var(--font-size-sm);font-weight:600;font-family:inherit}.toast-undo{z-index:10000}.undo-message{flex:1}.undo-countdown{font-size:var(--font-size-sm);color:var(--text-muted);min-width:2.5rem;text-align:right}@keyframes modalFadeIn{from{opacity:0}to{opacity:1}}@keyframes modalSlideIn{from{opacity:0;transform:translateY(-20px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes modalFadeOut{from{opacity:1}to{opacity:0}}@keyframes modalSlideOut{from{opacity:1;transform:translateY(0) scale(1)}to{opacity:0;transform:translateY(-20px) scale(.95)}}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:var(--overlay-color);display:flex;align-items:center;justify-content:center;z-index:1000;animation:modalFadeIn .15s ease-out}.modal-overlay.hidden{display:none}.modal-overlay.closing{animation:modalFadeOut .15s ease-in forwards}.modal-container{background-color:var(--bg-card);border:var(--border-width) solid var(--border-color);border-radius:var(--radius-lg);box-shadow:var(--shadow-brutal-xl);max-width:var(--width-modal);width:90%;max-height:calc(100dvh - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px) - 2rem);overflow:auto;animation:modalSlideIn .2s ease-out}.modal-container.modal-large{max-width:calc(100vw - 4rem);width:calc(100vw - 4rem);max-height:calc(100vh - 4rem);height:calc(100vh - 4rem);display:flex;flex-direction:column}.modal-container.modal-large .modal-content{flex:1;overflow:auto;display:flex;flex-direction:column}.modal-overlay.closing .modal-container{animation:modalSlideOut .15s ease-in forwards}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:1rem 1.5rem;border-bottom:var(--border-width) solid var(--border-color);background:var(--bg-secondary)}.modal-header h2,.modal-title{font-family:var(--font-heading);font-size:1.25rem;font-weight:700}.modal-close{background:var(--bg-card);border:var(--border-width-sm) solid var(--border-color);border-radius:var(--radius-sm);font-size:1.25rem;color:var(--text-primary);cursor:pointer;line-height:1;width:36px;height:36px;display:flex;align-items:center;justify-content:center;transition:background-color .15s ease}.modal-close:hover{background:var(--accent-blue);color:var(--text-on-accent)}.modal-content{padding:1.5rem}.modal-content form>.form-actions:last-child,.modal-content>.form-actions:last-child{position:sticky;bottom:0;margin-top:1.5rem;padding-top:.75rem;padding-bottom:.25rem;background:var(--bg-card);border-top:var(--border-width-sm) solid var(--border-color);z-index:1}.form-group{margin-bottom:1.25rem}.form-more-toggle{display:block;background:0 0;border:none;cursor:pointer;font-size:.85rem;font-weight:600;color:var(--accent-blue);padding:.25rem 0;margin-bottom:.75rem}.form-more-toggle::before{content:'+ '}.form-more-toggle.expanded::before{content:'- '}.form-extended-fields.hidden{display:none}.recurrence-weekday-label{display:inline-flex;align-items:center;gap:.25rem;padding:.25rem .5rem;font-size:.8rem;border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer}.recurrence-weekday-label:has(input:checked){background:var(--accent-primary);color:var(--bg-primary);border-color:var(--accent-primary)}.recurrence-weekday-label input[type=checkbox]{display:none}.recurrence-config .form-input,.recurrence-config .form-select{font-size:.85rem;padding:.25rem .5rem}.form-label{display:block;font-size:.9rem;font-weight:700;color:var(--text-primary);margin-bottom:.5rem}.form-input,.form-select,.form-textarea{width:100%;padding:.75rem 1rem;border:var(--border-width-sm) solid var(--border-color);border-radius:var(--radius-sm);background-color:var(--bg-card);color:var(--text-primary);font-size:1rem;box-shadow:none}.form-input:focus,.form-select:focus,.form-textarea:focus{outline:0;background-color:var(--bg-card);box-shadow:0 0 0 2px var(--accent-blue)}.form-textarea{min-height:100px;resize:vertical}.form-input--ghost{background:0 0;border:none;padding:.5rem;font-size:.875rem}.form-input--ghost:focus{background:0 0;box-shadow:none}.form-select--ghost{background:var(--bg-primary);padding:.5rem;font-size:.875rem}.form-actions{display:flex;justify-content:flex-end;gap:.75rem;margin-top:1.5rem}.form-input[aria-invalid=true],.form-select[aria-invalid=true],.form-textarea[aria-invalid=true]{border-color:var(--accent-red);box-shadow:0 0 0 2px color-mix(in srgb,var(--accent-red) 30%,transparent)}.form-input[aria-invalid=true]:focus,.form-select[aria-invalid=true]:focus,.form-textarea[aria-invalid=true]:focus{box-shadow:0 0 0 2px var(--accent-red)}.form-error{color:var(--accent-red);font-size:.8rem;font-weight:600;margin-top:.25rem;display:none}.form-error.visible{display:block}.form-hint{font-size:var(--font-size-sm);color:var(--text-secondary);margin-top:var(--space-1)}.form-hint--preview{color:var(--accent-primary)}.form-checkbox-label{display:flex;align-items:center;gap:var(--space-2);cursor:pointer}.empty-state-action{margin-top:var(--space-3)}.stack{display:flex;flex-direction:column}.stack-2{gap:var(--space-2)}.stack-3{gap:var(--space-3)}.stack-4{gap:var(--space-4)}.row-flex{display:flex;align-items:center}.row-flex-2{gap:var(--space-2)}.row-flex-3{gap:var(--space-3)}.row-flex-4{gap:var(--space-4)}.text-center{text-align:center}.text-left{text-align:left}.w-full{width:100%}.text-muted{color:var(--text-muted)}.text-secondary{color:var(--text-secondary)}.text-danger{color:var(--accent-red)}.text-sm{font-size:var(--font-size-sm)}.text-xs{font-size:var(--font-size-xs, .75rem)}.section-divider{border-top:var(--border-width-sm) solid var(--border-color);padding-top:var(--space-4);margin-top:var(--space-4)}.sync-status-row{display:flex;align-items:center;gap:var(--space-3);margin-bottom:var(--space-5)}.sync-status-dot{width:10px;height:10px;border-radius:var(--radius-full);background:var(--accent-green);display:inline-block}.sync-stats-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-4);margin-bottom:var(--space-5)}.sync-stat{padding:var(--space-3);background:var(--bg-secondary);border-radius:var(--radius-md)}.sync-stat-label{font-size:var(--font-size-sm);color:var(--text-muted);margin-bottom:var(--space-1)}.sync-stat-value{font-size:var(--font-size-md, .9rem)}.sync-encryption-error{color:var(--accent-red);font-size:var(--font-size-sm);margin-top:var(--space-2);display:none}.sync-encryption-error.visible{display:block}.sync-section-actions{margin-bottom:var(--space-5)}.sync-banner{padding:var(--space-3);background:var(--bg-secondary);border-radius:var(--radius-md);margin-bottom:var(--space-4);font-size:var(--font-size-sm);color:var(--text-secondary)}.sync-banner--warning{background:var(--bg-secondary);border:1px solid var(--border-color);padding:var(--space-4)}.sync-empty{padding:var(--space-5) 0}.sync-empty-message{margin-bottom:var(--space-5)}.sync-hint{margin-bottom:var(--space-4)}.sync-status-label{font-weight:500}.sync-account-row{display:flex;align-items:baseline;gap:var(--space-3);margin-bottom:var(--space-5);font-size:var(--font-size-sm)}.sync-account-label{color:var(--text-muted)}.sync-account-value{color:var(--text-primary)}.sync-account-username{color:var(--text-muted)}.sync-banner-title{font-weight:500;margin:0 0 var(--space-3) 0}.sync-banner-body{margin:0 0 var(--space-2) 0;font-size:var(--font-size-sm);color:var(--text-secondary)}.sync-banner-tier-line{margin:0 0 var(--space-4) 0;font-size:var(--font-size-sm);color:var(--text-secondary)}.sync-banner-actions{display:flex;gap:var(--space-2);align-items:center}.settings-subheading{margin-bottom:var(--space-3);font-size:var(--font-size-md, .9rem)}.settings-desc-block{font-size:var(--font-size-sm);color:var(--text-secondary);margin-bottom:var(--space-4)}.settings-actions-row{display:flex;flex-wrap:wrap;gap:var(--space-3);margin-bottom:var(--space-4)}.settings-actions-row--center{align-items:center;flex-wrap:nowrap;margin-top:var(--space-3)}.settings-status-text{font-size:var(--font-size-sm);color:var(--text-secondary)}.settings-section-block{padding-top:var(--space-4);border-top:var(--border-width-sm) solid var(--border-color)}.form-hint--spaced{margin-top:var(--space-2)}.empty-italic{color:var(--text-secondary);font-style:italic}.form-grid-2{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-4)}.email-detect-status{font-size:var(--font-size-sm);color:var(--text-secondary);margin-top:var(--space-1)}.email-detect-note{font-size:var(--font-size-sm);margin-top:var(--space-2);padding:var(--space-3) var(--space-3);background:var(--bg-tertiary);border-left:3px solid var(--accent-primary);border-radius:var(--radius-sm);line-height:var(--line-height-normal)}.account-row{padding:var(--space-3);background:var(--bg-secondary);border-radius:var(--radius-sm);margin-bottom:var(--space-2)}.account-row-header{display:flex;justify-content:space-between;align-items:flex-start}.account-row-name{font-weight:600}.account-row-meta{font-size:var(--font-size-sm);color:var(--text-secondary)}.account-row-sync{font-size:var(--font-size-sm);color:var(--text-secondary)}.account-row-provider-badge{font-size:var(--font-size-xs, .7rem);padding:.125rem .375rem;background:var(--accent-blue);color:var(--text-on-accent);border-radius:var(--radius-xs);margin-left:var(--space-2)}.test-conn-result{padding:var(--space-2);background:var(--bg-secondary);border-radius:var(--radius-sm);margin-bottom:var(--space-2)}.test-conn-result--success{color:var(--accent-green)}.test-conn-result--error{color:var(--accent-red)}.folder-list{max-height:150px;overflow-y:auto;background:var(--bg-secondary);padding:var(--space-2);border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:var(--font-size-sm)}.folder-list-meta{font-size:var(--font-size-sm);color:var(--text-secondary);margin-top:var(--space-2)}.error-pre{background:var(--bg-secondary);padding:var(--space-2);border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:var(--font-size-sm);white-space:pre-wrap;max-height:150px;overflow-y:auto}.test-conn-section{border-top:var(--border-width-sm) solid var(--border-color);margin:var(--space-4) 0;padding-top:var(--space-4)}.oauth-waiting{text-align:center;padding:var(--space-5)}.oauth-waiting-title{font-size:var(--font-size-lg, 1.25rem);margin-bottom:var(--space-4)}.oauth-waiting-body{color:var(--text-secondary);margin-bottom:var(--space-5)}.oauth-waiting-spinner{margin:0 auto var(--space-5)}.contact-card-header{gap:var(--space-3)}.contact-card-body{flex:1;min-width:0}.contact-detail-header{display:flex;align-items:center;gap:var(--space-4);margin-bottom:var(--space-5)}.contact-detail-name{margin:0}.contact-detail-tags{margin-bottom:var(--space-4)}.form-actions--spaced{margin-top:var(--space-5)}.milestones-empty{color:var(--text-muted);font-size:var(--font-size-sm);margin-bottom:var(--space-4)}.bulk-modal-prompt{color:var(--text-secondary);margin-bottom:var(--space-2)}.bulk-modal-prompt--wide{margin-bottom:var(--space-3)}.bulk-modal-scroll{max-height:300px;overflow-y:auto;display:flex;flex-direction:column;gap:var(--space-1)}.bulk-priority-row{display:flex;gap:var(--space-2)}.snooze-hint{font-size:var(--font-size-sm);color:var(--text-secondary);margin:0 0 var(--space-3) 0}.time-tracking-empty{color:var(--text-secondary);padding:var(--space-4) 0}.backups-empty{color:var(--text-secondary);font-style:italic}.backup-item{display:flex;align-items:center;justify-content:space-between;padding:var(--space-3);border:1px solid var(--border-color);border-radius:var(--radius-md);margin-bottom:var(--space-2)}.backup-item-meta{font-size:var(--font-size-sm);color:var(--text-secondary)}.export-desc{font-size:var(--font-size-sm);color:var(--text-secondary);margin-bottom:var(--space-5)}.export-note{margin-top:var(--space-4);padding:var(--space-3);background:var(--bg-secondary);border-radius:var(--radius-sm)}.export-note-text{font-size:var(--font-size-sm);color:var(--text-secondary);margin:0}.paint-time-preview{font-weight:600;color:var(--accent-primary);margin-bottom:var(--space-2)}.recurrence-config{display:none;margin-top:var(--space-2);padding:var(--space-2);border:1px solid var(--border-color);border-radius:var(--radius-sm)}.recurrence-config:not(.hidden){display:block}.recurrence-preview{font-size:var(--font-size-sm);color:var(--accent-primary);font-weight:600;margin-bottom:var(--space-2)}.recurrence-sublabel{font-size:var(--font-size-xs, .75rem)}.recurrence-unit{font-size:var(--font-size-sm)}.recurrence-day-label{display:flex;align-items:center;gap:var(--space-2);font-size:var(--font-size-sm)}.recurrence-nth-toggle{font-size:var(--font-size-sm);margin:var(--space-1) 0}.recurrence-row{margin-bottom:var(--space-2)}.recurrence-row.recurrence-hidden{display:none}.recurrence-interval-row{display:flex;align-items:center;gap:var(--space-2)}.recurrence-num{width:4rem}.recurrence-weekdays{display:flex;gap:var(--space-1);flex-wrap:wrap}.recurrence-monthly{margin-bottom:0}.recurrence-monthly.recurrence-hidden{display:none}.recurrence-monthly-stack{display:flex;flex-direction:column;gap:var(--space-2)}.recurrence-monthly-week{width:auto}.confirm-message-wrap{margin-bottom:var(--space-5)}.confirm-message{color:var(--text-secondary);line-height:var(--line-height-normal)}.review-intro{color:var(--text-secondary);font-size:var(--font-size-sm);margin:0 0 var(--space-4)}.review-intro--weekly{margin:var(--space-2) 0 var(--space-4)}.no-events-day{color:var(--text-secondary)}.loading--error{color:var(--accent-red)}.project-dashboard-desc{color:var(--text-secondary);margin-bottom:var(--space-4)}.pending-key-hint{position:fixed;bottom:var(--space-5);left:50%;transform:translateX(-50%);padding:var(--space-2) var(--space-4);background:var(--bg-card);color:var(--text-primary);border:var(--border-width) solid var(--border-color);border-radius:var(--radius-md);box-shadow:var(--shadow-brutal-md);z-index:10000;font-size:var(--font-size-sm);white-space:nowrap;animation:toastSlideIn .15s ease}.pending-key-hint-label{opacity:.7}.pending-key-hint kbd{background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--radius-xs);padding:.125rem .4rem;font-family:inherit;font-size:var(--font-size-sm)}.shortcuts-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:var(--overlay-color);display:flex;align-items:center;justify-content:center;z-index:3000}.shortcuts-overlay-panel{background:var(--bg-card);border-radius:var(--radius-md);padding:var(--space-5);max-width:600px;max-height:80vh;overflow-y:auto}.shortcuts-title{margin-top:0;margin-bottom:var(--space-4);border-bottom:1px solid var(--border-color);padding-bottom:var(--space-2)}.shortcuts-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-5)}.shortcuts-group-heading{color:var(--text-secondary);font-size:var(--font-size-sm);margin-bottom:var(--space-2)}.shortcuts-group-heading+.shortcut-row{margin-top:0}.shortcuts-group-heading-spaced{color:var(--text-secondary);font-size:var(--font-size-sm);margin-bottom:var(--space-2);margin-top:var(--space-3)}.shortcuts-close{margin-top:var(--space-5);text-align:center}.shortcut-row{display:flex;align-items:center;gap:var(--space-2);margin-bottom:var(--space-2)}.shortcut-row kbd{background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--radius-xs);padding:.25rem .5rem;font-family:inherit;font-size:var(--font-size-sm);min-width:1.5rem;text-align:center}.shortcut-row span{color:var(--text-secondary);font-size:var(--font-size-sm);margin-left:auto}.quick-add-syntax{font-size:var(--font-size-sm);color:var(--text-secondary);margin-top:var(--space-2);line-height:var(--line-height-relaxed)}.quick-add-syntax>span{margin-right:var(--space-3)}.quick-add-syntax kbd{font-size:.7rem;padding:.1rem .3rem;border:1px solid var(--border-color);border-radius:var(--radius-xs);background:var(--bg-secondary)}.virtual-scroller-wrapper{position:relative;width:100%}.virtual-scroller-spacer{height:0;width:100%}.meta-text{font-size:var(--font-size-sm);color:var(--text-muted)}.meta-text--secondary{color:var(--text-secondary)}.subtasks-empty{color:var(--text-secondary);text-align:center;padding:var(--space-4)}.subtask-linked-tag{color:var(--accent-color);font-size:var(--font-size-sm)}.task-actions-bar{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-top:var(--space-4);padding-top:var(--space-3);border-top:1px solid var(--border-color)}.loading--error{color:var(--accent-red)}.error-state--padded{padding:var(--space-4)}.event-cell--shrink{flex:0 0 auto;padding-right:0}.hr-soft{border:none;border-top:1px solid var(--border-color);margin:var(--space-2) 0}.card-badge--success{background:var(--accent-green);color:var(--text-on-accent)}.card-badge--warning{background:var(--accent-yellow)}.card-badge--info{background:var(--accent-blue);color:var(--text-on-accent)}.card-badge--danger{background:var(--accent-red);color:var(--text-on-accent)}.card-badge--neutral{background:var(--bg-secondary)}.empty-italic--muted{color:var(--text-muted);font-style:italic}.review-history-block{margin-top:var(--space-5);padding-top:var(--space-4);border-top:1px dashed var(--border-color)}.review-history-heading{font-size:var(--font-size-sm);color:var(--text-muted);margin-bottom:var(--space-3)}.email-attachment-row{display:flex;align-items:center;gap:var(--space-2);padding:.375rem 0}.email-attachment-size{font-size:var(--font-size-sm);color:var(--text-muted);flex-shrink:0}.email-attachments-block{margin-bottom:var(--space-3);padding:var(--space-2) var(--space-3);background:var(--bg-secondary);border-radius:var(--radius-sm);border:1px solid var(--border-color)}.email-attachments-heading{font-size:var(--font-size-sm);font-weight:600;color:var(--text-secondary);margin-bottom:var(--space-1)}.email-thread-count{color:var(--text-muted);font-size:var(--font-size-sm)}.email-subject-line{font-weight:600;font-size:1.1rem}.email-meta-line{font-size:var(--font-size-sm);color:var(--text-secondary);margin-top:var(--space-1)}.email-snoozed-tag{color:var(--accent-yellow)}.email-actions-bar{border-top:1px solid var(--border-color);padding-top:var(--space-4);margin-top:auto}.email-attachment-tag{margin-right:var(--space-2)}.email-draft-item{cursor:pointer;padding:var(--space-3)}.email-draft-meta{font-size:var(--font-size-sm);color:var(--text-secondary)}.label-existing-line{font-size:var(--font-size-sm);color:var(--text-secondary);margin-top:var(--space-1)}.search-no-results{padding:var(--space-5);text-align:center;color:var(--text-secondary)}.email-attachment-name{flex:1;min-width:0}.email-draft-subject{font-weight:500}.header-row{display:flex;align-items:center;padding:.75rem 1rem;border-bottom:1px solid var(--border-color);gap:.5rem}.header-row--tight{padding:.25rem 1rem}.header-label{width:80px;color:var(--text-secondary);font-size:.875rem;flex-shrink:0}.autocomplete-wrapper{position:relative;flex:1;background:0 0;border-radius:var(--radius-sm)}.autocomplete-wrapper:focus-within{background:var(--bg-secondary)}.body-container{flex:1;display:flex;flex-direction:column;overflow:hidden}.body-textarea{flex:1;min-height:12rem;background:var(--bg-card);border:none;color:var(--text-primary);font-size:.9375rem;font-family:inherit;padding:1rem;resize:vertical;outline:0;line-height:1.6}.body-textarea::placeholder{color:var(--text-muted)}.reply-indicator{display:none;color:var(--text-secondary);font-size:.8125rem;align-self:center}.compose-attachments{padding:.5rem 1rem;border-top:1px solid var(--border-color);background:var(--bg-secondary);font-size:.8125rem}.compose-attachment-item{padding:.25rem 0}.compose-attachment-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.compose-attachment-size{color:var(--text-muted);flex-shrink:0}.compose-attachment-remove{background:0 0;border:none;color:var(--accent-red);cursor:pointer;font-size:1rem;padding:0 .25rem}.compose-attachment-total{display:flex;gap:var(--space-2);align-items:baseline;padding-top:var(--space-2);margin-top:var(--space-1);font-size:var(--font-size-sm);color:var(--text-muted);border-top:1px dashed var(--border-color)}.compose-attachment-total.over-warn{color:var(--accent-yellow)}.compose-attachment-total.over-cap{color:var(--accent-red)}.compose-attachment-warn{font-style:italic}.about-info-list{display:grid;grid-template-columns:max-content 1fr;column-gap:var(--space-4);row-gap:var(--space-2);margin:var(--space-4) 0;font-size:var(--font-size-sm)}.about-info-list dt{font-weight:600;color:var(--text-secondary)}.about-info-list dd{margin:0;font-family:var(--font-mono)}.about-updater-note{margin-top:var(--space-4)}.filter-count{font-size:var(--font-size-sm);color:var(--text-muted);margin-right:var(--space-2);white-space:nowrap}.filter-count--capped{color:var(--accent-yellow);font-weight:600}.ui-mode-mobile #task-view-toggle{display:none}.swipe-peek{position:absolute;top:0;bottom:0;display:flex;align-items:center;padding:0 var(--space-3);font-size:var(--font-size-sm);font-weight:600;color:var(--text-on-accent);pointer-events:none;opacity:0;transition:opacity .1s linear;z-index:0}.swipe-peek--right{left:0;background:var(--accent-blue);justify-content:flex-start}.swipe-peek--left{right:0;background:var(--accent-blue);justify-content:flex-end}.swipe-peek--success{background:var(--accent-green)}.swipe-peek--warn{background:var(--accent-yellow);color:var(--text-primary)}.swipe-peek--danger{background:var(--accent-red)}.swipe-peek--ready{box-shadow:inset 0 0 0 2px var(--text-on-accent)}.email-item,.event-row-virtual,.task-row{position:relative;overflow:hidden}.attachment-item{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) 0;border-bottom:1px solid var(--border-color)}.attachment-icon{font-size:1.2rem}.attachment-meta{font-size:var(--font-size-sm);color:var(--text-muted)}.attachment-sync-warning{font-size:var(--font-size-sm);color:var(--text-muted)}.attachment-info{flex:1;min-width:0}.attachment-filename{font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.attachment-actions{display:flex;gap:var(--space-1)}.attachment-attach-row{margin-top:var(--space-4)}.link-task-item{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2);background:var(--bg-secondary);border-radius:var(--radius-sm);margin-bottom:var(--space-2);cursor:pointer}.link-task-item:hover{background:var(--bg-tertiary)}.link-task-project{font-size:var(--font-size-sm);color:var(--text-secondary)}.link-task-prompt{color:var(--text-secondary);margin-bottom:var(--space-4)}.link-task-desc{flex:1}.link-task-list{max-height:400px;overflow-y:auto}.form-actions--top-spaced{margin-top:var(--space-4)}.about-panel{text-align:center;padding:var(--space-4)}.about-title{font-family:var(--font-display);margin-bottom:var(--space-4)}.about-tagline{color:var(--text-secondary);margin-bottom:var(--space-2)}.about-version{color:var(--text-muted);font-size:var(--font-size-sm)}.welcome-panel{line-height:var(--line-height-relaxed)}.welcome-intro{color:var(--text-secondary);margin-bottom:var(--space-4)}.welcome-section{margin-bottom:var(--space-4)}.welcome-subhead{font-size:var(--font-size-md, .9rem);margin-bottom:var(--space-2)}.welcome-subhead--tight{margin-bottom:var(--space-1)}.welcome-step-stack{display:flex;flex-direction:column;gap:var(--space-2)}.welcome-tabs-list{color:var(--text-secondary);font-size:var(--font-size-sm);padding-left:var(--space-4);margin:0}.review-more-line{color:var(--text-muted);font-size:var(--font-size-sm);margin-top:var(--space-2)}.modal-attachments{font-size:var(--font-size-sm);margin-top:var(--space-1)}.account-row-info{flex:1}.account-row-actions{display:flex;align-items:center;gap:var(--space-2);margin-bottom:var(--space-2)}.account-row-quick{display:flex;gap:var(--space-2)}.account-row-quick .btn{flex:1}.account-list{margin-bottom:var(--space-4);max-height:400px;overflow-y:auto}.form-actions-spacer{flex:1}.oauth-block{margin-bottom:var(--space-5)}.oauth-block-title{font-weight:500;margin-bottom:var(--space-3)}.oauth-buttons{display:flex;flex-wrap:wrap;gap:var(--space-2)}.oauth-buttons .btn{flex:1;min-width:120px}.oauth-helptext{font-size:var(--font-size-sm);color:var(--text-secondary);margin-top:var(--space-2)}.imap-block-divider{border-top:var(--border-width-sm) solid var(--border-color);margin:var(--space-4) 0;padding-top:var(--space-4)}.imap-block-title{font-weight:500;margin-bottom:var(--space-3)}.test-conn-results{margin-bottom:var(--space-4)}.sync-results{margin-bottom:var(--space-4)}.sync-result-banner{padding:var(--space-3);background:var(--bg-secondary);border-radius:var(--radius-sm);margin-bottom:var(--space-2)}.sync-result-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-2);margin-bottom:var(--space-2)}.sync-result-tile{padding:var(--space-2);background:var(--bg-secondary);border-radius:var(--radius-sm)}.app-footer{background-color:var(--bg-card);border-top:var(--border-width) solid var(--border-color);padding:.75rem 1.5rem}.footer-content{max-width:var(--width-container);margin:0 auto;display:flex;justify-content:space-between;align-items:center}.ui-mode-desktop .keyboard-hints{display:flex;gap:1rem;font-size:.8rem;color:var(--text-muted)}kbd{display:inline-block;padding:.2rem .5rem;background-color:var(--bg-secondary);border:var(--border-width-sm) solid var(--border-color);border-radius:var(--radius-xs);font-family:var(--font-mono);font-size:.75rem;font-weight:700}.welcome-hint{color:var(--text-secondary);font-size:var(--font-size-sm);margin-bottom:var(--space-2)}.version{font-size:.75rem;color:var(--text-muted);font-weight:600}.empty-state{text-align:center;padding:3rem;color:var(--text-secondary)}.empty-state--compact{padding:2rem 1rem;font-size:var(--font-size-sm)}.empty-state--dashboard{padding:2rem 1rem}.empty-state--error{color:var(--accent-red)}.empty-state-icon{font-size:4rem;margin-bottom:1rem}.empty-state-text{font-size:1.1rem;font-weight:600;margin-bottom:1rem}.error-state{text-align:center;padding:2rem;color:var(--accent-red);background:color-mix(in srgb,var(--accent-red) 10%,var(--bg-card));border:var(--border-width-sm) solid var(--accent-red);border-radius:var(--radius-sm);font-weight:600}.view{display:block}.view.hidden{display:none}.filter-bar{display:flex;flex-wrap:wrap;gap:.75rem;margin-bottom:1.5rem;padding:1rem;background-color:var(--bg-card);border:var(--border-width) solid var(--border-color);border-radius:var(--radius-md);box-shadow:var(--shadow-offset) var(--shadow-offset) 0 var(--border-color)}.filter-group{display:flex;align-items:center;gap:.5rem}.filter-label{font-size:.8rem;font-weight:700;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em}.filter-select{padding:.5rem .75rem;border:var(--border-width-sm) solid var(--border-color);border-radius:var(--radius-sm);background-color:var(--bg-card);color:var(--text-primary);font-size:.875rem;font-weight:600}.filter-select:focus{outline:0;background-color:var(--accent-blue);color:var(--text-on-accent)}.filter-checkbox{display:flex;align-items:center;gap:.4rem;font-size:.875rem;font-weight:600;color:var(--text-primary);cursor:pointer}.filter-checkbox input[type=checkbox]{width:1rem;height:1rem;cursor:pointer}.btn-link{background:0 0;border:none;box-shadow:none;color:var(--text-secondary);font-size:.875rem;cursor:pointer;text-decoration:underline;padding:.5rem}.btn-link:hover{box-shadow:none;transform:none;color:var(--text-primary)}@media (min-width:1400px){.ui-mode-desktop .main-content{max-width:1600px}.ui-mode-desktop .cards-grid{grid-template-columns:repeat(auto-fill,minmax(380px,1fr))}.ui-mode-desktop .project-dashboard-grid{gap:2rem}.ui-mode-desktop .day-plan-sidebar{width:320px}.ui-mode-desktop .modal-container{max-width:640px}}@media (max-width:1024px){.ui-mode-desktop .saved-views-sidebar{width:180px}.ui-mode-desktop .day-plan-sidebar{width:240px}.ui-mode-desktop .project-dashboard-grid{grid-template-columns:1fr 1fr;gap:1rem}.ui-mode-desktop .project-dashboard-grid .dashboard-column:last-child{grid-column:span 2}.ui-mode-desktop .filter-bar{flex-wrap:wrap}.ui-mode-desktop .filter-actions{width:100%;justify-content:flex-end;margin-top:.5rem}}.ui-mode-mobile .tab-navigation{flex-wrap:wrap;gap:.5rem}.ui-mode-mobile .tab{flex:1 1 auto;min-width:calc(33% - .5rem);justify-content:center;padding:.625rem .75rem}.ui-mode-mobile .tab-label{display:none}.ui-mode-mobile .tab-icon{font-size:1.25rem}.ui-mode-mobile .kbd-hint{display:none}.ui-mode-mobile .cards-grid{grid-template-columns:1fr}.ui-mode-mobile .task-table{font-size:.85rem}.ui-mode-mobile .task-header-row,.ui-mode-mobile .task-row{grid-template-columns:1fr 80px 40px 80px}.ui-mode-mobile .task-header-row .task-cell:nth-child(n+5),.ui-mode-mobile .task-row .task-cell:nth-child(n+5){display:none}.ui-mode-mobile .filter-bar{flex-direction:column}.ui-mode-mobile .keyboard-hints{display:none}.ui-mode-mobile .page-title{font-size:1.5rem}.ui-mode-mobile .saved-views-sidebar{display:none}.ui-mode-mobile .day-plan-content{flex-direction:column}.ui-mode-mobile .day-plan-sidebar{width:100%;max-height:200px}.ui-mode-mobile .project-dashboard-grid{grid-template-columns:1fr}.ui-mode-mobile .project-dashboard-grid .dashboard-column:last-child{grid-column:span 1}.ui-mode-mobile .modal-container{width:95%;max-height:95vh}.ui-mode-mobile .bulk-actions-bar{flex-wrap:wrap}.ui-mode-mobile .bulk-select-all{width:100%;margin-top:.5rem}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.pagination-controls{display:flex;align-items:center;justify-content:center;gap:1rem;padding:1rem;margin-top:1rem;background:var(--bg-card);border:var(--border-width) solid var(--border-color);border-radius:var(--radius-md)}.pagination-info{font-weight:600;color:var(--text-secondary);font-size:.9rem}.pagination-controls .btn:disabled{opacity:.5;cursor:not-allowed}.btn:focus-visible,.card:focus-visible,.email-item:focus-visible,.event-row-virtual:focus-visible,.filter-select:focus-visible,.form-input:focus-visible,.form-select:focus-visible,.form-textarea:focus-visible,.modal-close:focus-visible,.saved-view-item:focus-visible,.snooze-option:focus-visible,.tab:focus-visible,.task-row:focus-visible,.timeline-item:focus-visible,.unscheduled-task:focus-visible{outline:3px solid var(--accent-blue);outline-offset:2px}.event-row,.task-row-clickable{cursor:pointer}.skip-link{position:absolute;top:-100px;left:0;background:var(--accent-blue);color:var(--text-on-accent);padding:.75rem 1.5rem;z-index:9999;font-weight:700;border:var(--border-width) solid var(--border-color);text-decoration:none}.skip-link:focus{top:0}.source-email-link{padding:.75rem;background:var(--bg-secondary);border-radius:var(--radius-sm);border-left:4px solid var(--accent-blue)}.thread-message{margin-bottom:1rem;padding:.75rem;background:var(--bg-secondary);border-radius:var(--radius-sm)}.thread-message-latest{border-left:3px solid var(--accent-blue)}.thread-message-header{display:flex;justify-content:space-between;margin-bottom:.5rem;font-size:.8rem;color:var(--text-secondary)}.thread-message-from{font-weight:700}.email-reader-body{white-space:pre-wrap;font-size:.9rem;line-height:1.6;color:var(--text-primary);word-wrap:break-word;overflow-wrap:break-word}.email-reader-body .email-link{color:var(--accent-blue);text-decoration:underline;cursor:pointer;word-break:break-all}.email-reader-body .email-link:hover{color:var(--accent-cyan)}.email-reader-body hr{border:none;border-top:2px solid var(--border-color);margin:1rem 0}.email-reader-quote{border-left:3px solid var(--text-muted);padding-left:1rem;margin:.5rem 0;color:var(--text-secondary);font-style:italic}.email-quote-toggle{display:inline-block;color:var(--text-muted);font-size:.8125rem;cursor:pointer;padding:.25rem 0;user-select:none}.email-quote-toggle:hover{color:var(--accent-blue)}.email-quote-block{border-left:3px solid var(--text-muted);padding-left:1rem;margin:.25rem 0 .5rem;color:var(--text-secondary)}.email-quote-block.hidden{display:none}.autocomplete-dropdown{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-sm);box-shadow:var(--shadow-brutal);z-index:100;max-height:200px;overflow-y:auto}.autocomplete-item{padding:.5rem .75rem;cursor:pointer;font-size:.875rem}.autocomplete-item.active,.autocomplete-item:hover{background:var(--bg-secondary)}.autocomplete-name{font-weight:500}.autocomplete-email{color:var(--text-secondary);margin-left:.25rem}.email-reader-container{display:flex;flex-direction:column;height:100%;min-height:0}.email-reader-header{margin-bottom:1rem;padding-bottom:.75rem;border-bottom:1px solid var(--border-color)}.email-sender-contact{margin-top:.5rem;padding:.4rem .5rem;background:var(--bg-tertiary);border-radius:4px}.email-sender-info{display:flex;flex-direction:column;flex:1;min-width:0}.email-sender-name{font-weight:600;font-size:.85rem}.email-sender-company{font-size:.75rem;color:var(--text-secondary)}.email-reader-thread{flex:1;overflow-y:auto;margin-bottom:1rem;min-height:0}.dropdown{position:relative;display:inline-block}.dropdown-menu{display:none;position:absolute;bottom:100%;left:0;margin-bottom:.25rem;background:var(--bg-card);border:var(--border-width) solid var(--border-color);border-radius:var(--radius-md);box-shadow:var(--shadow-brutal-md);min-width:160px;z-index:100}.dropdown-menu.show{display:block}.dropdown-item{display:block;width:100%;padding:.5rem 1rem;text-align:left;background:0 0;border:none;cursor:pointer;font-size:.875rem;color:var(--text-primary)}.dropdown-item:hover{background:var(--bg-secondary)}.dropdown-item:first-child{border-radius:var(--radius-md) var(--radius-md) 0 0}.dropdown-item:last-child{border-radius:0 0 var(--radius-md) var(--radius-md)}.context-menu{position:fixed;z-index:10000;min-width:180px;max-width:280px;background:var(--bg-card);border:var(--border-width) solid var(--border-color);border-radius:var(--radius-sm);box-shadow:var(--shadow-brutal-lg);padding:.25rem 0;display:none}.context-menu.visible{display:block}.context-menu-item{display:flex;align-items:center;gap:.75rem;padding:.5rem 1rem;font-size:.875rem;font-weight:500;color:var(--text-primary);cursor:pointer;border:none;background:0 0;width:100%;text-align:left;transition:background .1s}.context-menu-item:focus,.context-menu-item:hover{background:var(--accent-blue);color:var(--text-on-accent);outline:0}.context-menu-item:focus-visible{outline:2px solid var(--accent-blue);outline-offset:-2px}.context-menu-header{font-size:.7rem;font-weight:700;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em;padding:.5rem 1rem .25rem}.context-menu-item-icon{width:1.25rem;text-align:center;flex-shrink:0}.context-menu-item-label{flex:1}.context-menu-item-subtitle{display:block;font-size:.7rem;color:var(--text-secondary);font-weight:400}.context-menu-item-shortcut{font-size:.75rem;color:var(--text-muted);font-family:var(--font-mono)}.context-menu-item--danger{color:var(--accent-red)}.context-menu-item--danger:hover{background:var(--accent-red);color:var(--text-on-accent)}.context-menu-separator{height:2px;background:var(--border-color);margin:.25rem .5rem}.context-menu-hint{padding:.35rem 1rem;font-size:.7rem;color:var(--text-muted);border-top:1px solid var(--border-color);margin-top:.25rem}::-webkit-scrollbar{width:12px;height:12px}::-webkit-scrollbar-track{background:var(--bg-secondary);border-left:2px solid var(--border-color)}::-webkit-scrollbar-thumb{background:var(--text-muted);border:var(--border-width-sm) solid var(--border-color);border-radius:var(--radius-sm)}::-webkit-scrollbar-thumb:hover{background:var(--text-secondary)}.loading{display:flex;justify-content:center;align-items:center;height:200px;color:var(--text-secondary);font-family:var(--font-heading)}.skeleton-shimmer{display:flex;flex-direction:column;gap:1rem;padding:1rem}.skeleton-shimmer .skeleton-row{display:flex;align-items:center;gap:.75rem;padding:.75rem;background:var(--bg-card);border-radius:var(--radius-md);border:var(--border-width) solid var(--border-color)}.skeleton-shimmer .skeleton-avatar{width:36px;height:36px;border-radius:var(--radius-full);background:linear-gradient(90deg,var(--bg-secondary) 25%,var(--bg-tertiary) 50%,var(--bg-secondary) 75%);background-size:200% 100%;animation:skeleton-pulse 1.5s ease-in-out infinite;flex-shrink:0}.skeleton-shimmer .skeleton-lines{flex:1;display:flex;flex-direction:column;gap:.4rem}.skeleton-shimmer .skeleton-line{height:.75rem;border-radius:var(--radius-sm);background:linear-gradient(90deg,var(--bg-secondary) 25%,var(--bg-tertiary) 50%,var(--bg-secondary) 75%);background-size:200% 100%;animation:skeleton-pulse 1.5s ease-in-out infinite}.skeleton-shimmer .skeleton-line.short{width:40%}.skeleton-shimmer .skeleton-line.medium{width:65%}.skeleton-shimmer .skeleton-line.long{width:90%}@keyframes skeleton-pulse{0%{background-position:200% 0}100%{background-position:-200% 0}}@keyframes spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}.spinner{display:inline-block;width:1em;height:1em;border:2px solid currentColor;border-top-color:transparent;border-radius:var(--radius-full);animation:spin .8s linear infinite}.btn-loading{position:relative;pointer-events:none;opacity:.8}.btn-loading .btn-text{visibility:hidden}.btn-loading::after{content:'';position:absolute;left:50%;top:50%;width:1em;height:1em;margin-left:-.5em;margin-top:-.5em;border:2px solid currentColor;border-top-color:transparent;border-radius:var(--radius-full);animation:spin .8s linear infinite}.hidden{display:none!important}.project-dashboard-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1.5rem;flex:1;min-height:0}.dashboard-column{background:var(--bg-card);border:var(--border-width) solid var(--border-color);padding:1rem;display:flex;flex-direction:column;overflow:hidden}.dashboard-column-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem;padding-bottom:.5rem;border-bottom:2px solid var(--border-color)}.dashboard-column-header h3{margin:0;font-size:1rem;font-family:var(--font-heading);font-weight:700}.dashboard-list{flex:1;overflow-y:auto}.dashboard-item-title{font-weight:600;margin-bottom:.25rem}.dashboard-item-meta{font-size:.75rem;color:var(--text-secondary)}.task-badges{display:flex;gap:.25rem;margin-top:.25rem}.task-badge{font-size:.65rem;padding:.15rem .4rem;border:var(--border-width-sm) solid var(--border-color);background:var(--bg-secondary);color:var(--text-primary);font-weight:600}.task-badge.has-items{background:var(--accent-blue);color:var(--text-on-accent)}.task-badge.recurrence{background:var(--accent-purple);color:var(--text-on-accent)}.task-row-clickable{cursor:pointer;transition:background .1s}.task-row-clickable:hover{background:var(--bg-secondary)}.progress-bar-container{width:100%;height:10px;background:var(--bg-secondary);border:var(--border-width-sm) solid var(--border-color);overflow:hidden}.progress-bar{height:100%;background:var(--accent-green);transition:width .3s ease}.no-subtasks{color:var(--text-secondary);font-size:.875rem}#day-plan-view{display:flex;flex-direction:column;flex:1;min-height:0}#day-plan-view .page-header{flex-shrink:0}.day-plan-nav{display:flex;align-items:center;gap:.5rem}.day-plan-date-picker{padding:.5rem;background:var(--bg-card);border:var(--border-width) solid var(--border-color);border-radius:var(--radius-sm);color:var(--text-primary);font-family:var(--font-body)}.day-plan-date-display{font-size:1.25rem;font-weight:700;margin-left:1rem;font-family:var(--font-heading);line-height:1}.day-plan-content{flex:1;min-height:0;display:flex;gap:1.5rem}.day-plan-main{flex:1;min-height:0;display:flex;flex-direction:column;background:var(--bg-card);border:var(--border-width) solid var(--border-color);border-radius:var(--radius-md);overflow:hidden;box-shadow:var(--shadow-offset) var(--shadow-offset) 0 var(--border-color)}.day-plan-sidebar{width:280px;flex-shrink:0;display:flex;flex-direction:column;background:var(--bg-card);border:var(--border-width) solid var(--border-color);border-radius:var(--radius-md);overflow:hidden;box-shadow:var(--shadow-offset) var(--shadow-offset) 0 var(--border-color)}.sidebar-header{padding:1rem;border-bottom:2px solid var(--border-color);flex-shrink:0}.sidebar-header h3{margin:0;font-size:1rem;font-family:var(--font-heading);font-weight:700}.sidebar-task-list{flex:1;overflow-y:auto;padding:.75rem;display:flex;flex-direction:column;gap:.5rem}.timeline-container{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden}.timeline-scroll-area{position:relative;padding:.5rem 1rem 3rem .5rem;min-height:min-content}#timeline-slots{position:relative}#timeline-items{position:absolute;top:.5rem;left:.5rem;right:1rem;bottom:0;pointer-events:none}#timeline-items .timeline-item{pointer-events:auto}.timeline-slot{display:grid;grid-template-columns:50px 1fr;height:var(--timeline-slot-h,12px);position:relative}.timeline-slot.hour-start .timeline-slot-area{border-top:1px dashed color-mix(in srgb,var(--border-color) 50%,transparent)}.timeline-time{font-size:.7rem;color:var(--text-secondary);padding-right:.5rem;text-align:right;font-weight:500;transform:translateY(-.5em)}.timeline-hint{text-align:center;color:var(--text-secondary);font-size:.85rem;font-weight:600;margin:0 0 .5rem;padding:.35rem .75rem;background:var(--bg-secondary);border-radius:var(--radius-sm)}.timeline-slot-area{position:relative;cursor:grab}.timeline-slot-area:hover{background:var(--bg-secondary)}.timeline-item{position:absolute;left:60px;right:10px;border:var(--border-width) solid var(--border-color);border-radius:var(--radius-sm);padding:.25rem .5rem;overflow:hidden;cursor:grab;z-index:10;transition:opacity .15s ease,box-shadow .15s ease}.timeline-item.task{background:var(--accent-green);color:var(--text-primary)}.timeline-item.event{background:var(--accent-blue);color:var(--text-on-accent)}.timeline-item.block{opacity:.85}.timeline-item.block-free_time{background:var(--accent-cyan);color:var(--text-primary)}.timeline-item.block-personal{background:var(--accent-yellow);color:var(--text-primary)}.timeline-item.block-vacation{background:var(--accent-purple);color:var(--text-on-accent)}.timeline-item.block-focus{background:var(--accent-red);color:var(--text-on-accent)}.timeline-item.conflict{box-shadow:0 0 0 3px var(--accent-red)}.timeline-item.selected{box-shadow:0 0 0 3px var(--bg-card),0 0 0 6px var(--accent-blue)}.timeline-item-title{font-weight:600;font-size:.75rem;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.timeline-item-meta{font-size:.65rem;opacity:.85;line-height:1.1}.timeline-current-time{position:absolute;left:50px;right:0;height:2px;background:var(--accent-red);z-index:20;pointer-events:none}.timeline-current-time::before{content:'';position:absolute;left:-4px;top:-3px;width:8px;height:8px;background:var(--accent-red);border-radius:var(--radius-full)}.timeline-paint-preview{position:absolute;left:70px;right:10px;background:var(--accent-blue);opacity:.4;border:var(--border-width-sm) dashed var(--border-color);border-radius:var(--radius-sm);z-index:5;pointer-events:none}.timeline-item.dragging{cursor:grabbing;opacity:.8;z-index:100;box-shadow:var(--shadow-brutal-md,4px 4px 0 var(--border-color))}.timeline-container.is-painting{cursor:crosshair;user-select:none}.timeline-container.is-painting .timeline-slot-area{pointer-events:none}.unscheduled-task{padding:.75rem;background:var(--bg-card);border:var(--border-width-sm) solid var(--border-color);border-left:6px solid var(--accent-green);border-radius:var(--radius-sm);cursor:grab;transition:background-color .1s}.unscheduled-task:hover{background:var(--bg-secondary)}.unscheduled-task.priority-high{border-left-color:var(--accent-red)}.unscheduled-task.priority-medium{border-left-color:var(--accent-yellow)}.unscheduled-task.priority-low{border-left-color:var(--accent-green)}.unscheduled-task-title{font-weight:600;margin-bottom:.25rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.unscheduled-task-meta{font-size:.75rem;color:var(--text-secondary)}.empty-unscheduled{text-align:center;color:var(--text-secondary);padding:2rem 1rem}.shortcut-hint-btn{font-family:var(--font-mono, monospace);font-weight:700;min-width:2rem;padding:.5rem}.settings-section h3{font-size:1rem;color:var(--text-primary)}.settings-section .form-hint{font-size:.75rem;color:var(--text-secondary)}.settings-overlay{position:fixed;inset:0;z-index:70;display:flex;align-items:center;justify-content:center;padding:var(--space-4)}.settings-overlay.hidden{display:none}.settings-overlay-backdrop{position:absolute;inset:0;background:rgba(0,0,0,.35)}.settings-overlay-card{position:relative;background:var(--bg-primary);border:1px solid var(--border-color);border-radius:var(--radius-lg,8px);box-shadow:0 12px 40px rgba(0,0,0,.25);width:min(960px,100%);height:min(720px,100%);max-height:calc(100vh - 2 * var(--space-4));overflow:hidden;display:flex;flex-direction:column}.settings-overlay-card.hidden{display:none}.ui-mode-mobile .settings-overlay{padding:0}.ui-mode-mobile .settings-overlay-card{width:100%;height:100%;max-height:100%;border-radius:0;border:none}.settings-page-layout{display:flex;min-height:100%}.settings-sidebar{width:200px;flex-shrink:0;border-right:1px solid var(--border-color);padding:1.5rem 0;display:flex;flex-direction:column;gap:.25rem}.settings-nav-items{display:flex;flex-direction:column;gap:.125rem}.settings-nav-item{background:0 0;border:none;text-align:left;padding:.5rem 1.25rem;font-size:.875rem;color:var(--text-secondary);cursor:pointer;border-radius:0;border-left:2px solid transparent}.settings-nav-item:hover{background:var(--bg-hover);color:var(--text-primary)}.settings-nav-item.active{color:var(--text-primary);font-weight:600;border-left-color:var(--accent-primary);background:var(--bg-secondary)}.settings-content{flex:1;padding:1.5rem 2rem;max-width:640px;overflow-y:auto}.contact-header-card{display:flex;align-items:center;gap:1.25rem;margin-bottom:1.5rem}.contact-info-section{display:flex;flex-direction:column;gap:.375rem;margin-bottom:1.5rem;padding:1rem}.contact-info-item{font-size:.875rem}.contact-dashboard-summary{display:flex;gap:1.5rem;margin-bottom:1.5rem}.contact-summary-stat{display:flex;flex-direction:column;align-items:center;padding:.75rem 1.25rem;background:var(--bg-secondary);border-radius:var(--radius-md);min-width:80px}.contact-summary-count{font-size:1.5rem;font-weight:700;color:var(--text-primary)}.contact-summary-label{font-size:.75rem;color:var(--text-secondary);margin-top:.25rem}.contact-timeline{display:flex;flex-direction:column;gap:.25rem}.contact-timeline-item{padding:.5rem .75rem;border-radius:var(--radius-sm);cursor:pointer;font-size:.875rem}.contact-timeline-item:hover{background:var(--bg-hover)}.contact-timeline-icon{flex-shrink:0;width:2rem;text-align:center;font-size:.8rem}.contact-timeline-title{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.contact-timeline-date{flex-shrink:0;font-size:.75rem;color:var(--text-secondary)}.address-highlight-mirror{position:absolute;top:0;left:0;right:0;bottom:0;pointer-events:none;white-space:nowrap;overflow:hidden;z-index:0;display:flex;align-items:center}.addr-malformed{color:var(--accent-red)}.addr-contact{color:var(--accent-blue)}.addr-verified{color:var(--accent-green)}.addr-ghost{color:var(--text-muted);opacity:.5}.sync-indicator{background:0 0;border:none;cursor:pointer;padding:.25rem .5rem;border-radius:var(--radius-sm);transition:background var(--transition-fast)}.sync-indicator:hover{background:var(--bg-hover)}.sync-dot{width:8px;height:8px;border-radius:var(--radius-full);background:var(--text-muted);transition:background var(--transition-slow);flex-shrink:0}.sync-dot.connected{background:var(--accent-green)}.sync-dot.syncing{background:var(--accent-blue);animation:sync-pulse 1s infinite}.sync-dot.warn{background:var(--accent-yellow)}.sync-dot.error{background:var(--accent-red)}.sync-label{font-size:var(--font-size-sm);color:var(--text-secondary);white-space:nowrap}.ui-mode-mobile .sync-label{display:none}@keyframes sync-pulse{0%,100%{opacity:1}50%{opacity:.4}}.snooze-options{display:flex;flex-direction:column;gap:.5rem}.snooze-option{display:flex;justify-content:space-between;align-items:center;padding:.75rem 1rem;background:var(--bg-secondary);border:var(--border-width-sm) solid var(--border-color);color:var(--text-primary);cursor:pointer;transition:background-color .1s;text-align:left;width:100%}.snooze-option:hover{background:var(--accent-blue);color:var(--text-on-accent)}.snooze-option-label{font-weight:600}.snooze-option-time{font-size:.75rem;color:var(--text-secondary)}.snooze-option:hover .snooze-option-time{color:var(--text-on-accent)}.snooze-custom{margin-top:.5rem;padding-top:.5rem;border-top:2px solid var(--border-color)}.snooze-badge{display:inline-block;font-size:.65rem;padding:.15rem .4rem;border:var(--border-width-sm) solid var(--border-color);background:var(--accent-yellow);color:var(--text-primary);font-weight:700;margin-top:.25rem}.contact-badge{display:inline-block;font-size:.65rem;padding:.15rem .4rem;border:var(--border-width-sm) solid var(--border-color);background:var(--accent-color);color:var(--bg-primary);font-weight:700;margin-top:.25rem}.bulk-checkbox{width:18px;height:18px;cursor:pointer;accent-color:var(--accent-blue);border:var(--border-width-sm) solid var(--border-color)}.task-actions-cell{text-align:right;white-space:nowrap;display:flex;align-items:center;justify-content:flex-end;gap:.5rem}.task-actions-cell .bulk-checkbox{margin-right:.5rem}.kebab-btn{font-size:1.1rem;padding:.2rem .4rem;border-radius:var(--radius-sm);color:var(--text-secondary);opacity:0;transition:opacity .15s ease}.email-item:focus-within .kebab-btn,.email-item:hover .kebab-btn,.event-row-virtual:focus-within .kebab-btn,.event-row-virtual:hover .kebab-btn,.task-row:focus-within .kebab-btn,.task-row:hover .kebab-btn{opacity:1}.kebab-btn:hover{background:var(--bg-hover)}.task-recurrence{font-size:.85rem;color:var(--text-secondary)}.task-due{white-space:nowrap}.bulk-actions-bar{display:flex;align-items:center;gap:.5rem;padding:.75rem 1rem;background:var(--accent-blue);color:var(--text-on-accent);border:var(--border-width) solid var(--border-color);box-shadow:var(--shadow-offset) var(--shadow-offset) 0 var(--border-color);margin-bottom:1rem}.bulk-actions-bar.hidden{display:none}.bulk-count{font-weight:700;margin-right:1rem;font-family:var(--font-heading)}.bulk-actions-bar .btn{background:var(--bg-card);border:var(--border-width-sm) solid var(--border-color);color:var(--text-primary)}.bulk-actions-bar .btn:hover{background:var(--bg-secondary)}.bulk-select-all{margin-left:auto}.email-checkbox-cell{padding:.75rem .5rem;display:flex;align-items:center}.email-item-with-checkbox{display:flex;align-items:flex-start}.email-item-with-checkbox .email-content{flex:1}.time-block-form{display:flex;flex-direction:column;gap:1rem}.time-block-quick-options{display:grid;grid-template-columns:repeat(3,1fr);gap:.5rem}.time-block-quick-btn.selected{background:var(--accent-blue);color:var(--text-on-accent);box-shadow:inset 0 0 0 2px var(--border-color)}.duration-presets{display:flex;gap:.5rem;flex-wrap:wrap}.duration-preset{padding:.35rem .75rem;background:var(--bg-secondary);border:var(--border-width-sm) solid var(--border-color);color:var(--text-primary);cursor:pointer;font-size:.75rem;font-weight:600;transition:background-color .1s}.duration-preset:hover{background:var(--bg-tertiary)}.duration-preset.selected{background:var(--accent-blue);color:var(--text-on-accent)}.conflict-warning{padding:.75rem;background:var(--accent-red);border:var(--border-width) solid var(--border-color);color:var(--text-on-accent);font-size:.875rem;font-weight:600;margin-top:.5rem}.app-body{display:flex;flex:1;min-height:0;overflow:hidden}.app-body .main-content{flex:1;min-width:0;display:flex;flex-direction:column;overflow-x:visible;overflow-y:auto}#emails-view,#events-view,#projects-view,#tasks-view{padding-bottom:2.5rem}#tasks-view{display:flex;flex-direction:column;flex:1;min-height:0}#tasks-view .bulk-actions-bar,#tasks-view .filter-bar,#tasks-view .page-header{flex-shrink:0}#events-view{display:flex;flex-direction:column;flex:1;min-height:0}#events-view .page-header{flex-shrink:0}#emails-view{display:flex;flex-direction:column;flex:1;min-height:0}.email-filter-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto auto;gap:var(--space-2);align-items:center}.email-filter-row>.form-input,.email-filter-row>.form-select{width:100%;min-width:0}.email-filter-row>.form-select{width:9rem}.contacts-filter-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:var(--space-2);align-items:center}.contacts-filter-row>.form-input{width:100%;min-width:0}.contacts-filter-row>.filter-select{width:9rem;min-width:0}.work-hours-row{display:grid;grid-template-columns:auto auto auto;gap:var(--space-2);align-items:center}.work-hours-row>.form-select{width:auto}#emails-view .bulk-actions-bar,#emails-view .page-header{flex-shrink:0}.ui-mode-desktop .saved-views-sidebar{width:200px;flex-shrink:0;background:var(--bg-card);border-right:var(--border-width) solid var(--border-color);display:flex;flex-direction:column;overflow:hidden}.sidebar-section{display:flex;flex-direction:column;flex:1;min-height:0}.sidebar-section-header{display:flex;justify-content:space-between;align-items:center;padding:.75rem 1rem;font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--text-secondary);border-bottom:2px solid var(--border-color);background:var(--bg-secondary)}.btn-icon{background:0 0;border:none;color:var(--text-muted);cursor:pointer;padding:.25rem;font-size:.875rem;line-height:1}.btn-icon:hover{color:var(--text-primary)}.pinned-views-list{flex:1;overflow-y:auto;padding:.5rem}.sidebar-empty{text-align:center;padding:1.5rem .5rem;color:var(--text-muted);font-size:.8rem}.saved-view-item{display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem;margin-bottom:.5rem;background:var(--bg-card);border:var(--border-width-sm) solid var(--border-color);border-radius:var(--radius-sm);cursor:pointer;font-size:.85rem;font-weight:600;color:var(--text-primary);box-shadow:var(--shadow-offset) var(--shadow-offset) 0 var(--border-color);transition:transform .15s ease,box-shadow .15s ease,background-color .15s ease,color .15s ease}.saved-view-item:hover{background:var(--accent-blue);color:var(--text-on-accent)}.saved-view-item.active{background:var(--accent-blue);color:var(--text-on-accent);box-shadow:inset 0 0 0 2px var(--border-color)}.saved-view-item .view-icon{font-size:.75rem}.saved-view-item .view-name{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.saved-view-item .view-actions{opacity:0;transition:opacity .1s}.saved-view-item:hover .view-actions{opacity:1}.filter-actions{display:flex;gap:.5rem;margin-left:auto}.avatar{width:40px;height:40px;min-width:40px;border-radius:50%;background-color:var(--accent-blue);color:var(--text-on-accent);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:.85rem;font-family:var(--font-heading);border:var(--border-width-sm) solid var(--border-color);flex-shrink:0}.avatar--sm{width:32px;height:32px;min-width:32px;font-size:.75rem;border:none}.avatar--lg{width:60px;height:60px;min-width:60px;font-size:1.2rem}.avatar--unknown{background:var(--bg-secondary);color:var(--text-secondary)}.contact-card .card-header{display:flex;align-items:center}.contact-nickname{display:block;font-size:.85rem;color:var(--text-secondary);font-style:italic}.contact-company{display:block;font-size:.85rem;color:var(--text-secondary)}.contact-email{font-size:.85rem;color:var(--text-secondary)}.contact-detail .detail-row{margin-bottom:.5rem;font-size:.9rem}.contact-detail .contact-info-section{margin-bottom:1rem;padding-bottom:1rem;border-bottom:1px solid var(--border-light)}.contact-detail .contact-notes{margin-bottom:1.5rem}.contact-detail .contact-notes p{margin-top:.25rem;white-space:pre-wrap;color:var(--text-secondary)}.sub-collection{margin-bottom:1.25rem}.sub-collection-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.sub-collection-header h4{margin:0;font-size:.95rem;font-weight:600}.sub-item{display:flex;justify-content:space-between;align-items:center;padding:.4rem 0;border-bottom:1px solid var(--border-light);font-size:.9rem}.sub-item:last-child{border-bottom:none}.sub-empty{font-size:.85rem;color:var(--text-secondary);font-style:italic;padding:.25rem 0}.edit-sub-collections{border-top:1px solid var(--border-color);padding-top:1rem;margin-bottom:.5rem}.edit-sub-section{margin-bottom:.75rem}.edit-sub-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.25rem}.sub-item-compact{font-size:.85rem;color:var(--text-secondary);padding:.125rem 0;display:flex;align-items:center;gap:var(--space-2);justify-content:space-between}.sub-item-actions{display:inline-flex;gap:var(--space-1);flex-shrink:0}.reminder-options{display:flex;flex-wrap:wrap;gap:var(--space-2) var(--space-4);margin-top:var(--space-2)}.reminder-option{display:inline-flex;align-items:center;gap:var(--space-2);font-size:var(--font-size-sm);color:var(--text-secondary);cursor:pointer}.task-drawer{position:fixed;top:0;right:0;bottom:0;width:min(480px,100vw);background:var(--bg-primary);border-left:1px solid var(--border-color);box-shadow:-4px 0 18px rgba(0,0,0,.18);transform:translateX(100%);transition:transform 180ms ease-out;z-index:60;display:flex;flex-direction:column;overflow:hidden}.task-drawer.visible{transform:translateX(0)}.task-drawer-header{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--border-color);background:var(--bg-secondary);flex-shrink:0}.task-drawer-title{flex:1;margin:0;font-size:var(--font-size-lg, 1.05rem);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.task-drawer-close{flex-shrink:0}.task-drawer-actions{display:flex;gap:var(--space-2);flex-shrink:0}.task-drawer-content{flex:1;overflow-y:auto;padding:var(--space-4)}.task-row--active{background:var(--bg-accent,var(--bg-secondary));box-shadow:inset 3px 0 0 var(--accent-color,var(--text-primary))}.ui-mode-mobile .task-drawer{width:100vw;border-left:none}@media print{.btn,.card-badge,.context-menu,.filter-bar,.focus-section .btn,.focus-slot .btn,.header,.keyboard-hints,.modal-overlay,.pagination,.review-actions-grid,.sidebar,.tab-badge,.tab-nav,.tab-status-dot,.tabs,.toast,.virtual-scroller-spacer{display:none!important}body{background:#fff;color:#000}.main-content,.weekly-review-content{margin:0;padding:0;max-width:100%;width:100%}.view{padding:0}a{color:#000;text-decoration:underline}.data-table,.task-table{border:1px solid #333;box-shadow:none}.data-table{page-break-inside:avoid}.data-table td,.data-table th{border:1px solid #ccc;padding:.5rem;display:table-cell!important}.data-table tbody tr:hover,.task-row:hover{background:0 0}.task-list-container{height:auto!important;overflow:visible!important}.task-header-row,.task-row{grid-template-columns:1fr 100px 40px 80px 60px 80px 60px!important}.task-header-row .task-cell,.task-row .task-cell{display:block!important;border:1px solid #ccc;padding:.25rem .5rem}.view-header{page-break-after:avoid}.event-item,.focus-slot,.project-health,.reflection-prompt,.review-card,.weekly-review-content,body{background:#fff!important;color:#000!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}.review-card{border:1px solid #ccc!important;box-shadow:none!important;page-break-inside:avoid;margin-bottom:1rem}.focus-slot{border:1px solid #999!important}.focus-slot.primary{border:2px solid #f7d154!important;background:#fffbea!important}.review-grid{display:block!important}.review-card{display:inline-block;vertical-align:top;width:48%;margin-right:2%}.focus-section.full-width,.reflection-section,.week-timeline,.week-timeline-events{width:100%!important;display:block!important}.weekly-review-header{border-bottom:2px solid #333;padding-bottom:1rem;margin-bottom:1.5rem}.week-dates{font-size:1.5rem;font-weight:700}.day-dot{-webkit-print-color-adjust:exact;print-color-adjust:exact}.day-dot.completed{background:#5cb85c!important}.day-dot.event{background:#9b59b6!important}.day-dot.overdue{background:#d9534f!important}.project-health{border-left:4px solid #337ab7!important}.project-health.warning{border-left-color:#f7d154!important}.project-health.danger{border-left-color:#d9534f!important}.focus-grid{display:flex!important;gap:1rem}.focus-slot{flex:1}.reflection-prompts{display:flex!important;gap:1rem}.reflection-prompt{flex:1}.prompt-input{border:1px solid #ccc!important;min-height:80px}.focus-section{page-break-before:auto}.reflection-section{page-break-before:always}}.weekly-review-content{max-width:900px;margin:0 auto;padding:1rem}.weekly-review-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem;padding-bottom:1rem;border-bottom:var(--border-width-sm) solid var(--border-color)}.week-dates{font-family:var(--font-heading);font-size:1.25rem;font-weight:700;color:var(--text-primary)}.review-status{padding:.25rem .75rem;border-radius:var(--radius-xs);font-size:.875rem;font-weight:600;border:var(--border-width-sm) solid var(--border-color)}.review-status.completed{background:var(--accent-green);color:var(--text-on-accent)}.review-status.pending{background:var(--accent-yellow);color:var(--text-primary)}.review-status.unreviewed{background:var(--bg-secondary);color:var(--text-muted)}.event-time{font-size:.875rem;font-weight:600;color:var(--text-muted);min-width:80px}.focus-section{background:linear-gradient(135deg,var(--bg-card) 0,color-mix(in srgb,var(--accent-yellow) 15%,var(--bg-card)) 100%)}.tab-badge{display:inline-block;width:8px;height:8px;background:var(--accent-red);border-radius:var(--radius-full);margin-left:.5rem;vertical-align:middle;animation:pulse-badge 2s infinite}@keyframes pulse-badge{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.6;transform:scale(.8)}}.tab-status-dot{width:8px;height:8px;border-radius:50%;display:inline-block;margin-left:.5rem;vertical-align:middle;transition:background-color .3s ease}.tab-status-dot.status-none{display:none}.tab-status-dot.status-green{background-color:var(--accent-green)}.tab-status-dot.status-yellow{background-color:var(--accent-yellow);animation:pulse-badge 2s ease-in-out infinite}.tab-status-dot.status-red{background-color:var(--accent-red);animation:pulse-badge 1.5s ease-in-out infinite}.review-grid{display:grid;grid-template-columns:1fr 1fr;gap:1.5rem;max-width:1200px;margin:0 auto}.review-card{padding:1.5rem}.review-card .card-header{align-items:center;padding-bottom:.75rem;border-bottom:var(--border-width-sm) solid var(--bg-secondary)}.review-card .card-title{display:flex;align-items:center;gap:.5rem}.review-card .card-icon{font-size:1.25rem}.review-card .card-badge{font-size:.8rem;padding:.25rem .75rem;border-radius:var(--radius-md);font-weight:600}.week-timeline{grid-column:1/-1}.timeline-visual{display:flex;gap:.5rem;margin-top:1rem}.timeline-day{flex:1;text-align:center;padding:.75rem .5rem;background:var(--bg-secondary);border-radius:var(--radius-md);border:1px solid var(--border-color);position:relative}.timeline-day.today{background:var(--accent-blue);color:var(--text-on-accent);border-width:2px;font-weight:700}.timeline-day.past{opacity:.7}.timeline-day.future{background:var(--bg-card)}.timeline-day .day-name{font-size:.7rem;font-weight:600;text-transform:uppercase;color:var(--text-muted)}.timeline-day .day-number{font-size:1.1rem;font-weight:700}.day-dots{display:flex;justify-content:center;gap:3px;margin-top:.5rem;min-height:8px}.day-dot{width:8px;height:8px;border-radius:var(--radius-full)}.day-dot.task{background:var(--accent-blue)}.day-dot.event{background:var(--accent-purple)}.day-dot.completed{background:var(--accent-green)}.day-dot.overdue{background:var(--accent-red)}.day-dot.vacation-off{background:var(--text-muted);opacity:.5;width:12px;height:4px;border-radius:2px}.day-events{display:flex;flex-direction:column;gap:2px;margin-top:.5rem;text-align:left}.day-event{font-size:.6rem;line-height:1.3;padding:1px 4px;border-left:2px solid var(--accent-purple);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--text-secondary)}.day-event .event-time{font-size:.55rem;font-weight:600;color:var(--accent-purple);margin-right:2px;min-width:auto}.day-event-more{font-size:.55rem;color:var(--text-muted);padding:1px 4px;font-style:italic}.week-timeline-events{grid-column:1/-1}.timeline-events-day{margin-bottom:.75rem}.timeline-events-day:last-child{margin-bottom:0}.timeline-events-day-label{font-family:var(--font-heading);font-size:.8rem;font-weight:700;color:var(--text-secondary);margin-bottom:.25rem;text-transform:uppercase}.vacation-toggles-section{margin-top:1rem;padding-top:1rem;border-top:2px solid var(--border-color)}.vacation-toggles-section h3{margin:0 0 .75rem 0;font-size:.9rem;font-family:var(--font-heading);font-weight:700}.vacation-toggles{display:flex;gap:.5rem}.vacation-toggle{width:2.5rem;height:2.5rem;border-radius:var(--radius-sm);border:var(--border-width) solid var(--border-color);background:var(--bg-secondary);font-family:var(--font-heading);font-weight:700;font-size:.8rem;cursor:pointer;transition:background var(--transition-fast),color var(--transition-fast),border-color var(--transition-fast);display:flex;align-items:center;justify-content:center}.vacation-toggle:hover{background:var(--bg-hover)}.vacation-toggle.active{background:var(--accent-purple);color:var(--text-on-accent);border-color:var(--accent-purple)}.timeline-day.vacation{opacity:.5}.timeline-day.vacation .day-name{text-decoration:line-through}.vacation-day-banner{text-align:center;padding:.5rem 1rem;background:color-mix(in srgb,var(--accent-purple) 15%,var(--bg-secondary));border:var(--border-width-sm) solid var(--accent-purple);border-radius:var(--radius-sm);font-family:var(--font-heading);font-weight:700;font-size:.85rem;color:var(--accent-purple);margin-bottom:.75rem}.stats-row{display:flex;gap:1rem;margin-bottom:1rem}.stat-box{flex:1;text-align:center;padding:1rem;background:var(--bg-secondary);border-radius:var(--radius-md)}.stat-box .stat-number{font-family:var(--font-heading);font-size:2rem;font-weight:800;line-height:1}.stat-box .stat-number.green{color:var(--accent-green)}.stat-box .stat-number.red{color:var(--accent-red)}.stat-box .stat-number.blue{color:var(--accent-blue)}.stat-box .stat-number.purple{color:var(--accent-purple)}.stat-box .stat-label{font-size:.75rem;text-transform:uppercase;color:var(--text-muted);font-weight:600;margin-top:.25rem}.task-list{list-style:none;max-height:200px;overflow-y:auto}.task-item{display:flex;align-items:center;gap:.75rem;padding:.75rem;margin-bottom:.5rem;background:var(--bg-secondary);border-radius:var(--radius-md);cursor:pointer;transition:background-color var(--transition-normal)}.task-item:hover{background:var(--accent-blue);color:var(--text-on-accent)}.task-item.completed{opacity:.6;text-decoration:line-through}.task-checkbox{width:20px;height:20px;border:2px solid var(--border-color);border-radius:var(--radius-xs);display:flex;align-items:center;justify-content:center;flex-shrink:0}.task-checkbox.checked{background:var(--accent-green);color:var(--text-on-accent)}.task-text{flex:1;font-size:.9rem}.task-project{font-size:.75rem;padding:.2rem .5rem;background:var(--bg-card);border-radius:var(--radius-xs);color:var(--text-muted)}.task-due{font-size:.75rem;color:var(--text-muted)}.task-due.overdue{color:var(--accent-red);font-weight:600}.focus-section.full-width{grid-column:1/-1}.scope-slots{display:grid;grid-template-columns:1fr 1fr 1fr;gap:1rem;margin-top:1rem}.scope-slot{padding:1.25rem;background:var(--bg-secondary);border:2px dashed var(--border-color);border-radius:var(--radius-md);min-height:100px;display:flex;flex-direction:column;gap:.5rem;transition:background .15s,border-color .15s}.scope-slot.filled{border-style:solid;background:var(--bg-card)}.scope-slot.empty{cursor:pointer}.scope-slot.empty:hover{border-color:var(--accent-primary);background:var(--bg-tertiary)}.scope-slot-label{font-size:.7rem;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);font-weight:600}.scope-slot-title{font-weight:600;font-size:.95rem}.scope-slot-meta{font-size:.8rem;color:var(--text-secondary)}.scope-slot-empty{color:var(--text-muted);font-style:italic;font-size:.9rem}.focus-slot.primary{border-color:var(--accent-yellow);background:linear-gradient(135deg,var(--bg-card) 0,color-mix(in srgb,var(--accent-yellow) 10%,var(--bg-card)) 100%)}.projects-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:.75rem;margin-top:.5rem}.project-health{padding:.75rem;background:var(--bg-secondary);border-radius:var(--radius-md);border-left:4px solid var(--accent-blue)}.project-health.warning{border-left-color:var(--accent-yellow)}.project-health.danger{border-left-color:var(--accent-red)}.project-name{font-weight:600;font-size:.85rem;margin-bottom:.25rem}.project-stats{font-size:.75rem;color:var(--text-muted)}.reflection-section{grid-column:1/-1}.reflection-prompts{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-top:1rem}.reflection-prompt{padding:1rem;background:var(--bg-secondary);border-radius:var(--radius-md)}.prompt-label{font-size:.8rem;font-weight:600;color:var(--text-secondary);margin-bottom:.5rem}.prompt-input,.reflection-textarea{width:100%;padding:.75rem;border:var(--border-width-sm) solid var(--border-color);border-radius:var(--radius-md);font-size:.9rem;font-family:inherit;resize:none;background:var(--bg-card)}.prompt-input:focus,.reflection-textarea:focus{outline:0;border-color:var(--accent-blue)}.review-actions-grid{grid-column:1/-1;display:flex;justify-content:flex-end;gap:1rem;padding-top:1rem}.event-item{display:flex;align-items:center;gap:.75rem;padding:.75rem;margin-bottom:.5rem;background:var(--bg-secondary);border-radius:var(--radius-md);border-left:3px solid var(--accent-purple)}.event-item .event-time{font-size:.8rem;font-weight:600;color:var(--accent-purple);min-width:100px}.event-item .event-title{flex:1;font-size:.9rem}.accomplishment-highlight{background:linear-gradient(135deg,color-mix(in srgb,var(--accent-green) 10%,var(--bg-card)) 0,color-mix(in srgb,var(--accent-green) 5%,var(--bg-card)) 100%);border:2px solid var(--accent-green);padding:1rem;border-radius:var(--radius-md);margin-bottom:1rem;display:flex;align-items:center;gap:1rem}.accomplishment-icon{font-size:2rem}.accomplishment-text{font-size:1rem}.accomplishment-text strong{color:var(--accent-green)}.task-list::-webkit-scrollbar{width:6px}.task-list::-webkit-scrollbar-track{background:var(--bg-secondary);border-radius:var(--radius-xs)}.task-list::-webkit-scrollbar-thumb{background:var(--border-color);border-radius:var(--radius-xs)}.ui-mode-mobile .review-grid{grid-template-columns:1fr}.ui-mode-mobile .focus-section.full-width,.ui-mode-mobile .reflection-section,.ui-mode-mobile .week-timeline,.ui-mode-mobile .week-timeline-events{grid-column:1}.ui-mode-mobile .focus-grid{grid-template-columns:1fr}.ui-mode-mobile .reflection-prompts{grid-template-columns:1fr}.ui-mode-mobile .projects-grid{grid-template-columns:1fr 1fr}.ui-mode-mobile .stat-cards{flex-direction:column}.ui-mode-mobile .stat-card{max-width:none}.ui-mode-mobile .week-info{flex-direction:column;align-items:flex-start;gap:.5rem}.ui-mode-mobile .projects-grid{grid-template-columns:1fr}.focus-slot{transition:background-color .2s ease-out,border-color .2s ease-out}.focus-slot.filled{animation:focusSlotFill .3s ease-out}@keyframes focusSlotFill{0%{transform:scale(.95);opacity:.7}100%{transform:scale(1);opacity:1}}.focus-slot:focus,.focus-slot:focus-within{outline:2px solid var(--accent-blue);outline-offset:2px}.focus-slot[tabindex]:focus{outline:2px solid var(--accent-blue);outline-offset:2px}.focus-section .btn{transition:transform .15s ease-out,opacity .15s ease-out}.focus-section .btn:active{transform:scale(.97)}.monthly-review-nav,.weekly-review-nav{display:flex;align-items:center;gap:.5rem}.weekly-review-nav .week-dates{font-family:var(--font-heading);font-size:1.25rem;font-weight:700;color:var(--text-primary);margin-left:.5rem}.monthly-review-month-display{font-family:var(--font-heading);font-size:1.25rem;font-weight:700;color:var(--text-primary);margin-left:.5rem}.monthly-review-content{max-width:900px;margin:0 auto;padding:1rem}.month-heatmap{margin-bottom:1.5rem;border:var(--border-width-sm) solid var(--border-color);border-radius:var(--radius-md);padding:1rem;background:var(--bg-secondary)}.month-heatmap-header{display:grid;grid-template-columns:repeat(7,1fr);text-align:center;margin-bottom:.5rem}.month-heatmap-day-header{font-family:var(--font-heading);font-size:.75rem;font-weight:600;color:var(--text-secondary);text-transform:uppercase}.month-heatmap-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:3px}.month-heatmap-cell{aspect-ratio:1;display:flex;flex-direction:column;align-items:center;justify-content:center;border-radius:var(--radius-xs);cursor:pointer;transition:transform .1s ease;border:var(--border-width-sm) solid transparent;position:relative;min-height:40px}.month-heatmap-cell:not(.empty):hover{transform:scale(1.1);border-color:var(--border-color);z-index:1}.month-heatmap-cell.empty{cursor:default;background:0 0}.month-heatmap-cell.intensity-0{background:var(--bg-primary)}.month-heatmap-cell.intensity-1{background:color-mix(in srgb,var(--accent-green) 20%,var(--bg-primary))}.month-heatmap-cell.intensity-2{background:color-mix(in srgb,var(--accent-green) 40%,var(--bg-primary))}.month-heatmap-cell.intensity-3{background:color-mix(in srgb,var(--accent-green) 60%,var(--bg-primary))}.month-heatmap-cell.vacation{background:var(--bg-tertiary);opacity:.6}.month-heatmap-cell.today{border-color:var(--accent-primary);border-width:2px}.month-heatmap-cell.past.intensity-0{background:var(--bg-tertiary)}.month-heatmap-day-number{font-family:var(--font-heading);font-size:.8rem;font-weight:600;color:var(--text-primary)}.month-heatmap-dots{display:flex;gap:2px;margin-top:2px}.month-dot{font-size:.6rem;font-weight:700;border-radius:var(--radius-xs);padding:0 3px;line-height:1.3}.month-dot.completed{color:var(--accent-green)}.month-dot.event{color:var(--accent-purple)}.monthly-review-cards{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.review-card.month-stats-card{grid-column:span 1}.review-card.month-goals-card{margin-bottom:1rem}.review-card.month-patterns-card,.review-card.month-pulse-card{grid-column:span 1}.review-card.month-reflection-card{grid-column:1/-1}.review-card-title{font-family:var(--font-heading);font-size:1rem;font-weight:700;margin-bottom:.75rem;color:var(--text-primary)}.month-stats-grid{display:grid;grid-template-columns:1fr 1fr;gap:.5rem}.month-stat-item{display:flex;flex-direction:column;align-items:center;padding:.5rem;border-radius:var(--radius-xs);background:var(--bg-primary);border:var(--border-width-sm) solid var(--border-color)}.month-stat-value{font-family:var(--font-heading);font-size:1.5rem;font-weight:700;color:var(--text-primary)}.month-stat-label{font-size:.75rem;color:var(--text-secondary);text-transform:uppercase;font-weight:600}.month-stats-highlights{display:flex;gap:1rem;margin-top:.5rem;justify-content:center}.stat-highlight{font-size:.8rem;color:var(--text-secondary)}.month-pulse-list{display:flex;flex-direction:column;gap:.5rem}.month-pulse-item{display:flex;align-items:center;gap:.5rem;padding:.5rem;border-radius:var(--radius-xs);background:var(--bg-primary);border:var(--border-width-sm) solid var(--border-color)}.pulse-name{font-weight:600;flex:1;font-size:.875rem}.pulse-stats{font-size:.75rem;color:var(--text-secondary)}.pulse-arrow{font-size:1rem;font-weight:700}.month-pulse-item.positive .pulse-arrow{color:var(--accent-green)}.month-pulse-item.negative .pulse-arrow{color:var(--accent-red)}.month-pulse-item.neutral .pulse-arrow{color:var(--text-secondary)}.month-goal-body{display:flex;align-items:center;gap:.5rem;flex:1}.month-goal-item.done{opacity:.7}.month-goal-item.done .month-goal-text{text-decoration:line-through}.month-goal-item.abandoned{opacity:.5}.month-goal-item.abandoned .month-goal-text{text-decoration:line-through}.month-goal-status-btn{font-size:1rem;padding:0;color:var(--text-secondary);width:24px;text-align:center}.month-goal-item.done .month-goal-status-btn{color:var(--accent-green)}.month-goal-item.abandoned .month-goal-status-btn{color:var(--accent-red)}.month-goal-text{flex:1;font-size:.875rem}.month-goal-delete-btn{color:var(--text-tertiary);padding:0 4px;font-size:.75rem;opacity:0;transition:opacity .15s}.month-goal-item:hover .month-goal-delete-btn{opacity:1}.month-goal-placeholder{color:var(--text-tertiary);font-size:.875rem}.month-reflection-fields{display:flex;flex-direction:column;gap:.5rem}.month-reflection-label{font-size:.875rem;font-weight:600;color:var(--text-secondary)}.month-reflection-textarea{width:100%;padding:.5rem;border:var(--border-width-sm) solid var(--border-color);border-radius:var(--radius-xs);background:var(--bg-primary);color:var(--text-primary);font-family:var(--font-body);font-size:.875rem;resize:vertical}.month-reflection-textarea:focus{outline:2px solid var(--accent-primary);outline-offset:-1px}.month-patterns-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.5rem}.month-pattern-item{font-size:.875rem;color:var(--text-secondary);padding:.5rem;background:var(--bg-primary);border-radius:var(--radius-xs);border:var(--border-width-sm) solid var(--border-color)}.ui-mode-mobile .monthly-review-cards{grid-template-columns:1fr}.ui-mode-mobile .review-card.month-goals-card,.ui-mode-mobile .review-card.month-patterns-card,.ui-mode-mobile .review-card.month-pulse-card,.ui-mode-mobile .review-card.month-stats-card{grid-column:span 1}.ui-mode-mobile .month-heatmap-cell{min-height:32px}.ui-mode-mobile .month-heatmap-day-number{font-size:.7rem}.ui-mode-mobile .month-heatmap-dots{display:none}.import-wizard{display:flex;flex-direction:column;gap:1.5rem}.import-step{padding:1rem;background:var(--bg-secondary);border:var(--border-width) solid var(--border-color);border-radius:var(--radius-md)}.import-step h3{margin:0 0 1rem 0;font-size:var(--font-size-md);font-weight:600}.plugin-selector{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:.75rem}.plugin-option{display:flex;flex-direction:column;align-items:flex-start;padding:.75rem 1rem;background:var(--bg-card);border:var(--border-width) solid var(--border-color);border-radius:var(--radius-sm);cursor:pointer;text-align:left;transition:border-color var(--transition-fast),background var(--transition-fast)}.plugin-option:hover{border-color:var(--accent-primary);background:var(--bg-hover)}.plugin-option.selected{border-color:var(--accent-primary);background:color-mix(in srgb,var(--accent-primary) 10%,var(--bg-card));box-shadow:0 0 0 2px color-mix(in srgb,var(--accent-primary) 30%,transparent)}.plugin-option .plugin-name{font-weight:600;margin-bottom:.25rem}.plugin-option .plugin-meta{display:flex;gap:.5rem;font-size:var(--font-size-sm);color:var(--text-muted);margin-bottom:.25rem}.plugin-option .plugin-extensions{color:var(--accent-cyan)}.plugin-option .plugin-types{color:var(--text-secondary)}.plugin-option .plugin-description{font-size:var(--font-size-sm);color:var(--text-secondary);line-height:1.4}.file-selector{display:flex;align-items:center;gap:1rem}.selected-file-name{color:var(--text-secondary);font-family:monospace;font-size:var(--font-size-sm)}.import-preview-container{min-height:100px}.import-preview-table-wrapper{max-height:300px;overflow:auto;border:1px solid var(--border-color);border-radius:var(--radius-sm)}.import-preview-table{font-size:var(--font-size-sm);margin:0}.import-preview-table th{position:sticky;top:0;background:var(--bg-secondary);z-index:1}.import-preview-table td{max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.import-summary{margin:0 0 .75rem 0;color:var(--text-primary)}.import-more{margin:.5rem 0 0 0;color:var(--text-muted);font-style:italic;font-size:var(--font-size-sm)}.import-empty,.import-error{padding:2rem;text-align:center;color:var(--text-muted)}.import-error{color:var(--accent-red)}.import-warnings{margin-top:1rem;padding:.75rem;background:color-mix(in srgb,var(--accent-yellow) 10%,var(--bg-card));border:1px solid var(--accent-yellow);border-radius:var(--radius-sm);font-size:var(--font-size-sm)}.import-warnings ul{margin:.5rem 0 0 1.25rem;padding:0}.import-warnings li{margin-bottom:.25rem}.import-external-types{display:flex;gap:1rem;margin-bottom:1.5rem}.import-type-card{flex:1;display:flex;flex-direction:column;align-items:center;gap:.5rem;padding:1.5rem 1rem;background:var(--bg-card);border:2px solid var(--border-color);border-radius:var(--radius-md);cursor:pointer;transition:border-color .15s,background .15s}.import-type-card:hover{border-color:var(--accent-primary);background:var(--bg-secondary)}.import-type-icon{font-size:2rem}.import-type-label{font-weight:600;color:var(--text-primary)}.import-type-desc{font-size:var(--font-size-sm);color:var(--text-muted)}.plugin-list{display:flex;flex-direction:column;gap:.75rem}.plugin-item{display:flex;justify-content:space-between;align-items:center;padding:1rem;background:var(--bg-card);border:var(--border-width) solid var(--border-color);border-radius:var(--radius-md)}.plugin-item .plugin-info{flex:1}.plugin-item .plugin-name{font-weight:600}.plugin-item .plugin-version{color:var(--text-muted);font-size:var(--font-size-sm);margin-left:.5rem}.plugin-item .plugin-description{margin:.25rem 0;color:var(--text-secondary);font-size:var(--font-size-sm)}.plugin-item .plugin-extensions{font-size:var(--font-size-xs);color:var(--text-muted)}.plugin-item .plugin-actions{margin-left:1rem}.toggle-switch{position:relative;display:inline-block;width:44px;height:24px}.toggle-switch input{opacity:0;width:0;height:0}.toggle-slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:var(--bg-tertiary);border:2px solid var(--border-color);border-radius:var(--radius-xl);transition:background-color var(--transition-fast),border-color var(--transition-fast)}.toggle-slider:before{position:absolute;content:"";height:16px;width:16px;left:2px;bottom:2px;background-color:var(--text-muted);border-radius:var(--radius-full);transition:transform var(--transition-fast),background-color var(--transition-fast)}.toggle-switch input:checked+.toggle-slider{background-color:var(--accent-primary);border-color:var(--accent-primary)}.toggle-switch input:checked+.toggle-slider:before{transform:translateX(20px);background-color:var(--bg-card)}.toggle-switch input:focus+.toggle-slider{box-shadow:0 0 0 2px color-mix(in srgb,var(--accent-primary) 30%,transparent)}.milestones-section{margin-bottom:1.5rem}.milestones-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem;padding-bottom:.5rem;border-bottom:2px solid var(--border-color)}.milestones-header h3{margin:0;font-size:1rem;font-family:var(--font-heading);font-weight:700}.milestone-card{background:var(--bg-card);border:var(--border-width) solid var(--border-color);border-radius:var(--radius-md);padding:1rem;margin-bottom:.75rem;transition:background-color .1s;box-shadow:var(--shadow-offset) var(--shadow-offset) 0 var(--border-color)}.milestone-card:hover{background:var(--bg-secondary)}.milestone-card-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:.5rem}.milestone-card-header h4{margin:0;font-size:.95rem;font-family:var(--font-heading);font-weight:700}.milestone-card-header .milestone-status{font-size:.7rem;font-weight:700;text-transform:uppercase;padding:.15rem .4rem;border-radius:var(--radius-sm);background:var(--bg-secondary);color:var(--text-muted)}.milestone-card-header .milestone-status.completed{background:color-mix(in srgb,var(--accent-green) 15%,var(--bg-secondary));color:var(--accent-green)}.milestone-meta{display:flex;gap:1rem;font-size:.8rem;color:var(--text-muted);margin-bottom:.5rem}.milestone-progress{height:6px;background:var(--bg-secondary);border-radius:var(--radius-full);overflow:hidden;border:var(--border-width-sm) solid var(--border-color)}.milestone-progress-fill{height:100%;background:var(--accent-green);border-radius:var(--radius-full);transition:width var(--transition-fast)}.milestone-actions{display:flex;gap:.5rem;margin-top:.5rem}.milestone-actions button{font-size:.75rem;padding:.2rem .5rem;background:var(--bg-secondary);border:var(--border-width-sm) solid var(--border-color);border-radius:var(--radius-sm);cursor:pointer;color:var(--text-secondary);transition:background var(--transition-fast)}.milestone-actions button:hover{background:var(--bg-hover)}.milestone-actions button.danger:hover{background:color-mix(in srgb,var(--accent-red) 15%,var(--bg-secondary));color:var(--accent-red)}button.milestone-reorder-btn.btn{font-size:.65rem;padding:.15rem .35rem;line-height:1;min-width:1.5rem;text-align:center}.milestones-completed-section{margin-top:.75rem}.milestones-completed-toggle{font-size:.8rem;color:var(--text-secondary);padding:.25rem 0}.milestone-card-summary{padding:.5rem .75rem;opacity:.7}.milestone-card-summary .milestone-info{display:flex;align-items:center;gap:.5rem}.milestone-complete-badge{font-size:.7rem;font-weight:700;padding:.1rem .4rem;border-radius:var(--radius-sm);background:color-mix(in srgb,var(--accent-green) 15%,var(--bg-secondary));color:var(--accent-green)}.mobile-tab-bar{display:none;position:fixed;bottom:0;left:0;right:0;z-index:1100;background:var(--bg-card);border-top:var(--border-width) solid var(--border-color);padding-bottom:env(safe-area-inset-bottom,0);height:calc(52px + env(safe-area-inset-bottom,0px))}.mobile-tab{flex:1;display:flex;align-items:center;justify-content:center;height:52px;background:0 0;border:none;color:var(--text-muted);font-size:.7rem;font-weight:700;font-family:var(--font-sans);text-transform:uppercase;letter-spacing:.05em;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:color .15s ease}.mobile-tab.active{color:var(--accent-blue)}.mobile-tab:active{background:var(--bg-secondary)}.mobile-tab-create{font-size:1.4rem;font-weight:400;color:var(--accent-green);letter-spacing:0;text-transform:none}.mobile-tab-slide-menu{position:fixed;z-index:1102;min-width:140px;background:var(--bg-card);border:var(--border-width) solid var(--border-color);border-radius:var(--radius-md);box-shadow:var(--shadow-brutal-md);padding:.25rem;display:flex;flex-direction:column;opacity:0;transform:scale(.92);transform-origin:50% 100%;transition:opacity 120ms ease-out,transform 120ms ease-out}.mobile-tab-slide-menu.is-open{opacity:1;transform:scale(1)}.mobile-tab-slide-item{padding:.7rem .9rem;min-height:44px;display:flex;align-items:center;justify-content:center;font-size:var(--font-size-sm);font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--text-primary);border-radius:var(--radius-sm);transition:background 80ms ease,transform 80ms ease}.mobile-tab-slide-item.is-highlighted{background:var(--accent-blue);color:var(--text-on-accent);transform:scale(1.03)}.action-sheet{position:fixed;inset:0;z-index:10001;display:flex;flex-direction:column;justify-content:flex-end}.action-sheet.hidden{display:none}.action-sheet-backdrop{position:absolute;inset:0;background:rgba(0,0,0,.4)}.action-sheet-container{position:relative;background:var(--bg-card);border-top:var(--border-width) solid var(--border-color);border-radius:var(--radius-lg) var(--radius-lg) 0 0;padding:.5rem 1rem calc(.5rem + env(safe-area-inset-bottom,0px));max-height:60vh;overflow-y:auto;animation:sheetSlideUp .25s ease-out}.action-sheet-handle{width:36px;height:4px;border-radius:2px;background:var(--text-muted);margin:0 auto .75rem;opacity:.4}.action-sheet-content button{display:flex;align-items:center;gap:.75rem;width:100%;padding:.875rem .5rem;background:0 0;border:none;border-bottom:1px solid var(--bg-secondary);font-size:var(--font-size-base);font-weight:600;color:var(--text-primary);text-align:left;cursor:pointer}.action-sheet-content button:last-child{border-bottom:none}.action-sheet-content button:active{background:var(--bg-secondary)}.action-sheet-content button.danger{color:var(--accent-red)}.action-sheet-cancel{display:block;width:100%;padding:.875rem;margin-top:.5rem;background:var(--bg-secondary);border:var(--border-width-sm) solid var(--border-color);border-radius:var(--radius-md);font-size:var(--font-size-base);font-weight:700;color:var(--text-primary);text-align:center;cursor:pointer}.action-sheet-cancel:active{background:var(--bg-tertiary)}.modal-drag-handle{display:none;width:36px;height:4px;border-radius:2px;background:var(--text-muted);margin:.5rem auto 0;opacity:.4}.mobile-sort-bar{display:none;gap:.5rem;padding:.5rem 0;align-items:center}.mobile-sort-bar select{flex:1;font-size:var(--font-size-sm)}.mobile-filter-toggle{display:none}.swipe-actions-container{position:relative;overflow:hidden}.swipe-actions-bg{position:absolute;top:0;bottom:0;display:flex;align-items:center;padding:0 1rem;font-weight:700;font-size:var(--font-size-sm);color:var(--text-on-accent)}.swipe-actions-bg.swipe-left{right:0;background:var(--accent-green)}.swipe-actions-bg.swipe-right{left:0;background:var(--accent-red)}.swipe-content{position:relative;background:var(--bg-card);transition:transform .15s ease}.pull-to-refresh-indicator{display:none;text-align:center;padding:.75rem;font-size:var(--font-size-sm);color:var(--text-muted);font-weight:600}.pull-to-refresh-indicator.visible{display:block}.event-date-group-header{display:none}.day-plan-sidebar-toggle{display:none}@keyframes sheetSlideUp{from{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes sheetSlideDown{from{transform:translateY(0)}to{transform:translateY(100%)}}@keyframes dialFadeIn{from{opacity:0}to{opacity:1}}.ui-mode-mobile body,html.ui-mode-mobile{overflow-x:hidden;max-width:100vw;touch-action:pan-y;overscroll-behavior-x:none}.ui-mode-mobile body{padding-top:env(safe-area-inset-top,0);padding-bottom:calc(52px + env(safe-area-inset-bottom,0px));padding-left:env(safe-area-inset-left,0);padding-right:env(safe-area-inset-right,0)}.ui-mode-mobile .mobile-tab-bar,.ui-mode-mobile .timer-widget{padding-left:env(safe-area-inset-left,0);padding-right:env(safe-area-inset-right,0)}.ui-mode-mobile .mobile-tab-bar{display:flex}.ui-mode-mobile .tab-navigation{display:none!important}.ui-mode-mobile .app-header{display:none}.ui-mode-mobile .pill-nav{display:none}.ui-mode-mobile #contacts-view .page-header>.row-flex,.ui-mode-mobile #emails-view>div.row-flex.mb-2,.ui-mode-mobile #tasks-view .mobile-sort-bar,.ui-mode-mobile #tasks-view .page-header>.row-flex{display:grid;grid-auto-flow:row;grid-template-columns:repeat(2,1fr);gap:var(--space-2);align-items:center}.ui-mode-mobile #tasks-view .page-header>.row-flex{grid-template-columns:1fr}.ui-mode-mobile .mobile-hide{display:none!important}.ui-mode-mobile #day-review-status-badge,.ui-mode-mobile #month-review-status-badge,.ui-mode-mobile #week-review-status-badge{display:none!important}.ui-mode-mobile #day-plan-view .timeline-hint{display:none}.ui-mode-mobile #day-plan-view .timeline-slot-area{cursor:default}.ui-mode-mobile #day-plan-view .timeline-slot-area:hover{background:0 0}.ui-mode-mobile #day-plan-view .day-plan-nav{display:flex;flex-wrap:wrap;column-gap:var(--space-2);row-gap:var(--space-3);align-items:center}.ui-mode-mobile #day-plan-view .day-plan-nav .btn{flex:0 0 auto;border-radius:var(--radius-sm);border-right-width:var(--border-width)}.ui-mode-mobile #day-plan-view .day-plan-nav .day-plan-date-picker{flex:1 1 120px;min-width:0}.ui-mode-mobile #day-plan-view .day-plan-date-display{display:none}.ui-mode-mobile #contacts-search,.ui-mode-mobile #email-search{grid-column:1/-1;width:100%;min-width:0}.ui-mode-mobile #email-count{display:none}.ui-mode-mobile #contacts-view .page-header>.row-flex .btn,.ui-mode-mobile #tasks-view .page-header>.row-flex .btn{border-radius:var(--radius-sm);border-right-width:var(--border-width)}.ui-mode-mobile #tasks-view .page-header .view-toggle{display:flex;width:100%}.ui-mode-mobile #tasks-view .page-header .view-toggle .view-toggle-btn{flex:1 1 0}.ui-mode-mobile .tab-group>.subview>.page-header{position:static}.ui-mode-mobile .main-content{padding:.75rem}.ui-mode-mobile .page-header{flex-wrap:wrap;gap:.5rem}.ui-mode-mobile .page-header .btn-primary{display:none}.ui-mode-mobile .page-title{display:none}.ui-mode-mobile #contacts-view .page-header>div,.ui-mode-mobile #emails-view .page-header>div,.ui-mode-mobile .page-header>div{gap:0!important;flex-wrap:wrap}.ui-mode-mobile #contacts-view .page-header>div .btn,.ui-mode-mobile #emails-view .page-header>div .btn,.ui-mode-mobile .bulk-actions-bar .btn,.ui-mode-mobile .page-header>div .btn{flex:1 1 0;min-width:0;padding:.4rem .5rem;font-size:.75rem;border-radius:0;border-right-width:0;white-space:nowrap}.ui-mode-mobile #contacts-view .page-header>div .btn:first-child,.ui-mode-mobile #emails-view .page-header>div .btn:first-child,.ui-mode-mobile .bulk-actions-bar .btn:first-of-type,.ui-mode-mobile .page-header>div .btn:first-child{border-top-left-radius:var(--radius-sm);border-bottom-left-radius:var(--radius-sm)}.ui-mode-mobile #contacts-view .page-header>div .btn:has(+ .btn-primary),.ui-mode-mobile #contacts-view .page-header>div .btn:last-child,.ui-mode-mobile #emails-view .page-header>div .btn:has(+ .btn-primary),.ui-mode-mobile #emails-view .page-header>div .btn:last-child,.ui-mode-mobile .page-header>div .btn:has(+ .btn-primary),.ui-mode-mobile .page-header>div .btn:last-child{border-top-right-radius:var(--radius-sm);border-bottom-right-radius:var(--radius-sm);border-right-width:var(--border-width)}.ui-mode-mobile .bulk-actions-bar{gap:0}.ui-mode-mobile .bulk-actions-bar .bulk-count{margin-right:.5rem}.ui-mode-mobile .bulk-actions-bar .btn:not(.bulk-select-all)+.bulk-select-all{border-right-width:var(--border-width);border-radius:var(--radius-sm)}.ui-mode-mobile .bulk-actions-bar .btn:not(.bulk-select-all):nth-last-of-type(2){border-top-right-radius:var(--radius-sm);border-bottom-right-radius:var(--radius-sm);border-right-width:var(--border-width)}.ui-mode-mobile .bulk-select-all{margin-left:auto}.ui-mode-mobile #emails-view .form-select[id^=email-]{min-width:0!important;flex:1}.ui-mode-mobile .form-input,.ui-mode-mobile .form-select,.ui-mode-mobile .form-textarea{padding:.45rem .65rem}.ui-mode-mobile .form-textarea{min-height:72px}.ui-mode-mobile .form-group{margin-bottom:.75rem}.ui-mode-mobile .form-label{margin-bottom:.25rem}.ui-mode-mobile .form-actions{gap:.5rem;margin-top:1rem}.ui-mode-mobile .quick-add-input{padding:.55rem .75rem}.ui-mode-mobile .quick-add{gap:.5rem;margin-bottom:1rem}.ui-mode-mobile .bulk-modal-option-btn,.ui-mode-mobile .snooze-option{padding:.55rem .75rem}.ui-mode-mobile .snooze-options{gap:.35rem}.ui-mode-mobile .modal-header{padding:.6rem .9rem}.ui-mode-mobile .modal-header h2,.ui-mode-mobile .modal-title{font-size:1.05rem}.ui-mode-mobile .modal-content{padding:.9rem}.ui-mode-mobile .modal-content form>.form-actions:last-child,.ui-mode-mobile .modal-content>.form-actions:last-child{margin-top:.9rem;padding-top:.5rem}.ui-mode-mobile .modal-overlay{align-items:flex-end;bottom:calc(52px + env(safe-area-inset-bottom,0px))}.ui-mode-mobile .modal-container{width:100%!important;max-width:100%!important;max-height:calc(100vh - 52px - env(safe-area-inset-bottom,0px) - env(safe-area-inset-top,0px));border-radius:var(--radius-lg) var(--radius-lg) 0 0;margin:0;border-bottom:none;padding-bottom:0}.ui-mode-mobile .modal-container.modal-large{max-width:100%!important;width:100%!important;max-height:calc(100vh - 52px - env(safe-area-inset-bottom,0px) - env(safe-area-inset-top,0px));border-radius:var(--radius-lg) var(--radius-lg) 0 0}.ui-mode-mobile .modal-drag-handle{display:block}.ui-mode-mobile .modal-header{padding:.75rem 1rem}.ui-mode-mobile .modal-content{padding:1rem}@keyframes modalSlideInMobile{from{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes modalSlideOutMobile{from{transform:translateY(0)}to{transform:translateY(100%)}}.ui-mode-mobile .modal-container{animation-name:modalSlideInMobile}.ui-mode-mobile .modal-overlay.closing .modal-container{animation-name:modalSlideOutMobile}.ui-mode-mobile .toast,.ui-mode-mobile .toast-undo{bottom:calc(env(safe-area-inset-bottom,0px) + 4.5rem)!important;left:1rem!important;right:1rem!important;max-width:none!important}.ui-mode-mobile .task-table{border:none;box-shadow:none;background:0 0}.ui-mode-mobile .task-header-row{display:none!important}.ui-mode-mobile .task-row{display:flex!important;flex-direction:column;gap:.25rem;padding:.75rem 1rem;margin-bottom:.5rem;background:var(--bg-card);border:var(--border-width-sm) solid var(--border-color);border-radius:var(--radius-md);border-left:4px solid var(--text-muted)}.ui-mode-mobile .task-row.task-pending{border-left-color:var(--text-muted)}.ui-mode-mobile .task-row .task-cell.priority-h~.task-cell:first-child,.ui-mode-mobile .task-row:has(.priority-h){border-left-color:var(--accent-red)}.ui-mode-mobile .task-row:has(.priority-m){border-left-color:var(--accent-yellow)}.ui-mode-mobile .task-row:has(.priority-l){border-left-color:var(--text-muted)}.ui-mode-mobile .task-row .task-cell{display:flex!important;overflow:visible;padding:0}.ui-mode-mobile .task-cell.task-description{font-weight:600;font-size:var(--font-size-base)}.ui-mode-mobile .task-cell.task-due,.ui-mode-mobile .task-cell.task-project{font-size:var(--font-size-sm);color:var(--text-secondary)}.ui-mode-mobile .task-row .task-cell.task-project::before{content:none}.ui-mode-mobile .task-cell.task-progress,.ui-mode-mobile .task-cell.task-recurrence,.ui-mode-mobile .task-row .task-cell:nth-child(3){display:none!important}.ui-mode-mobile .task-cell.task-project{order:2}.ui-mode-mobile .task-cell.task-due{order:3}.ui-mode-mobile .task-cell.task-description{order:1}.ui-mode-mobile .task-cell.task-actions-cell{order:4;justify-content:flex-end}.ui-mode-mobile .task-cell.task-progress:has(.progress-bar-container){display:flex!important;order:5}.ui-mode-mobile .task-actions-cell .bulk-checkbox{display:none}.ui-mode-mobile .kebab-btn{opacity:1}.ui-mode-mobile .mobile-sort-bar{display:flex}.ui-mode-mobile .mobile-filter-toggle{display:inline-flex;align-items:center;gap:.25rem;padding:.5rem .75rem;background:var(--bg-card);border:var(--border-width-sm) solid var(--border-color);border-radius:var(--radius-sm);font-size:var(--font-size-sm);font-weight:600;cursor:pointer}.ui-mode-mobile .filter-bar{display:none!important}.ui-mode-mobile .filter-bar.mobile-visible{display:flex!important;flex-direction:column;position:fixed;bottom:calc(52px + env(safe-area-inset-bottom,0px));left:0;right:0;background:var(--bg-card);border-top:var(--border-width) solid var(--border-color);border-radius:var(--radius-lg) var(--radius-lg) 0 0;padding:1rem;z-index:1050;box-shadow:0 -4px 12px rgba(0,0,0,.1)}.ui-mode-mobile .event-header-row{display:none!important}.ui-mode-mobile .event-row-virtual{display:flex!important;flex-direction:column;gap:.125rem;padding:.75rem 1rem;border-bottom:1px solid var(--bg-secondary)}.ui-mode-mobile .event-cell-date{font-weight:700;font-size:var(--font-size-sm);color:var(--text-secondary)}.ui-mode-mobile .event-cell-time{font-size:var(--font-size-sm);color:var(--text-muted)}.ui-mode-mobile .event-cell-title{font-weight:600;font-size:var(--font-size-base)}.ui-mode-mobile .event-cell-location{font-size:var(--font-size-sm);color:var(--text-secondary)}.ui-mode-mobile .event-date-group-header{display:flex;position:sticky;top:0;z-index:5;padding:.5rem 1rem;background:var(--bg-secondary);font-weight:700;font-size:var(--font-size-sm);text-transform:uppercase;letter-spacing:.05em;color:var(--text-primary);border-bottom:var(--border-width-sm) solid var(--border-color)}.ui-mode-mobile .email-item{padding:.625rem .75rem}.ui-mode-mobile .email-from{font-size:var(--font-size-sm)}.ui-mode-mobile .email-subject{font-size:var(--font-size-base)}.ui-mode-mobile .email-preview{display:none}.ui-mode-mobile .email-date{font-size:var(--font-size-xs)}.ui-mode-mobile .email-item .bulk-checkbox{display:none}.ui-mode-mobile .day-plan-content{flex-direction:column}.ui-mode-mobile .day-plan-sidebar{width:100%;max-height:none;border-top:var(--border-width-sm) solid var(--border-color);order:2}.ui-mode-mobile .day-plan-sidebar.collapsed .sidebar-task-list{display:none}.ui-mode-mobile .day-plan-sidebar-toggle{display:flex;align-items:center;justify-content:space-between;width:100%;padding:.625rem .75rem;background:var(--bg-secondary);border:none;border-bottom:1px solid var(--border-color);font-size:var(--font-size-sm);font-weight:700;cursor:pointer;color:var(--text-primary)}.ui-mode-mobile .day-plan-main{order:1}.ui-mode-mobile .day-plan-nav{flex-wrap:wrap;gap:.25rem}.ui-mode-mobile .weekly-review-content{padding:0}.ui-mode-mobile .monthly-review-content{padding:0}.ui-mode-mobile .month-reflection-textarea,.ui-mode-mobile .prompt-input{resize:none;overflow:hidden}.ui-mode-mobile .monthly-review-nav{flex-wrap:wrap;gap:.25rem}.ui-mode-mobile .monthly-review-month-display{font-size:1rem}.ui-mode-mobile .day-summary-sheet{padding:.5rem 0}.ui-mode-mobile .day-summary-date{font-size:1rem;font-weight:700;margin-bottom:.75rem;color:var(--text-primary)}.ui-mode-mobile .day-summary-stats{display:flex;gap:.5rem;margin-bottom:1rem}.ui-mode-mobile .day-summary-chip{padding:.25rem .75rem;background:var(--bg-secondary);border-radius:var(--radius-sm);font-size:var(--font-size-sm);font-weight:600;color:var(--text-secondary)}.ui-mode-mobile .day-summary-list{list-style:none;padding:0;margin:0 0 1rem 0}.ui-mode-mobile .day-summary-item{padding:.5rem 0;border-bottom:1px solid var(--bg-secondary);font-size:var(--font-size-sm);color:var(--text-primary)}.ui-mode-mobile .day-summary-time{font-weight:600;color:var(--text-secondary);margin-right:.5rem}.ui-mode-mobile .day-summary-more{color:var(--text-muted);font-style:italic}.ui-mode-mobile .day-summary-empty{color:var(--text-muted);font-size:var(--font-size-sm);margin:.5rem 0 1rem}.ui-mode-mobile .day-summary-go-btn{width:100%;margin-top:.5rem}.ui-mode-mobile .bulk-actions-bar{position:fixed;bottom:calc(52px + env(safe-area-inset-bottom,0px));left:0;right:0;z-index:1050;border-radius:var(--radius-lg) var(--radius-lg) 0 0;box-shadow:0 -4px 12px rgba(0,0,0,.15)}.ui-mode-mobile .pagination-controls{padding:.5rem}.ui-mode-mobile .pagination-controls .btn{padding:.5rem .75rem;font-size:var(--font-size-sm)}@media (hover:none){.task-row:hover{background-color:transparent}.task-row-clickable:hover{background:0 0}.event-row-virtual:hover{background-color:transparent}.email-item:hover{background-color:transparent}.card:hover{background-color:var(--bg-card);transform:none;box-shadow:var(--shadow-offset) var(--shadow-offset) 0 var(--border-color)}.btn:hover{background:var(--bg-card)}.btn-primary:hover{background-color:var(--accent-blue)}.btn-danger:hover{background-color:var(--accent-red)}.card:hover{background-color:var(--bg-card);transform:none;box-shadow:var(--shadow-offset) var(--shadow-offset) 0 var(--border-color)}.kanban-card:hover{background:var(--bg-card);transform:none;box-shadow:var(--shadow-offset) var(--shadow-offset) 0 var(--border-color)}.saved-view-item:hover{background:var(--bg-card);color:var(--text-primary);transform:none;box-shadow:var(--shadow-offset) var(--shadow-offset) 0 var(--border-color)}.context-menu-item:hover{background:0 0;color:var(--text-primary)}.modal-close:hover{background:var(--bg-card);color:var(--text-primary)}.month-heatmap-cell:hover{background:0 0;transform:none}.email-item .kebab-btn,.event-row-virtual .kebab-btn,.task-row .kebab-btn{opacity:1}.shortcut-hint-btn{display:none}.time-block-quick-options{grid-template-columns:1fr}.duration-preset,.time-block-quick-btn{min-height:44px;padding:.75rem;font-size:1rem}}body.is-touch .email-item .kebab-btn,body.is-touch .event-row-virtual .kebab-btn,body.is-touch .task-row .kebab-btn{opacity:1}body.is-touch .shortcut-hint-btn{display:none}.view-toggle{display:flex;gap:0;margin-left:auto}.view-toggle-btn{padding:.35rem .75rem;border:var(--border-width-sm) solid var(--border-color);background:var(--bg-secondary);font-family:var(--font-body);font-size:var(--font-size-md);cursor:pointer;transition:background var(--transition-fast),box-shadow var(--transition-fast)}.view-toggle-btn.active{background:var(--bg-card);font-weight:600}.view-toggle-btn:first-child{border-radius:var(--radius-xs) 0 0 var(--radius-xs)}.view-toggle-btn:last-child{border-radius:0 var(--radius-xs) var(--radius-xs) 0;border-left:none}.kanban-board{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;padding:.5rem 0;min-height:400px}.kanban-column{background:var(--bg-card);border:var(--border-width) solid var(--border-color);display:flex;flex-direction:column;min-height:300px;max-height:calc(100vh - 200px)}.kanban-column-header{padding:.75rem 1rem;border-bottom:2px solid var(--border-color);font-family:var(--font-heading);font-weight:700;display:flex;justify-content:space-between;align-items:center}.kanban-column-count{font-family:var(--font-body);font-size:var(--font-size-sm);color:var(--text-secondary)}.kanban-column-body{flex:1;overflow-y:auto;padding:.5rem;display:flex;flex-direction:column;gap:.5rem}.kanban-column.drag-over{background-color:var(--bg-tertiary)}.kanban-card{padding:.75rem;border-width:var(--border-width-sm);border-radius:0;cursor:grab;border-left:4px solid transparent}.kanban-card.dragging{opacity:.5;cursor:grabbing}.kanban-card.priority-high{border-left-color:var(--accent-red)}.kanban-card.priority-medium{border-left-color:var(--accent-yellow)}.kanban-card.priority-low{border-left-color:var(--accent-green)}.kanban-card-title{font-weight:600;margin-bottom:.25rem}.kanban-card-meta{font-size:var(--font-size-sm);color:var(--text-secondary);display:flex;gap:.5rem;flex-wrap:wrap}.kanban-card-due.overdue{color:var(--accent-red);font-weight:600}.progress-bar-mini{height:3px;background:var(--bg-tertiary);border-radius:2px;margin-top:.5rem}.progress-bar-mini .progress-fill{height:100%;background:var(--accent-green);border-radius:2px}.ui-mode-mobile .kanban-board{grid-template-columns:1fr}.ui-mode-mobile .kanban-column{max-height:none}.timer-widget{position:fixed;bottom:0;left:0;right:0;z-index:900;background:var(--bg-primary);border-top:var(--border-width) solid var(--border-color);box-shadow:0 -2px 8px rgba(0,0,0,.1);padding:.5rem 1rem;transition:transform .2s ease}.timer-widget.hidden{transform:translateY(100%);pointer-events:none}.timer-widget-inner{display:flex;align-items:center;gap:1rem;max-width:800px;margin:0 auto}.timer-task-name{flex:1;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.timer-elapsed{font-family:var(--font-mono, monospace);font-size:1.125rem;font-weight:700;color:var(--accent-color);min-width:5rem;text-align:center}.timer-actions{display:flex;gap:.5rem}.focus-overlay{position:fixed;inset:0;z-index:1000;background:var(--bg-primary);display:flex;align-items:center;justify-content:center;transition:opacity .3s ease}.focus-overlay.hidden{opacity:0;pointer-events:none}.focus-overlay-content{text-align:center;max-width:400px;width:100%;padding:2rem}.focus-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:2rem}.focus-label{font-family:var(--font-heading);font-size:1.25rem;font-weight:700}.focus-presets{display:flex;gap:.5rem}.focus-preset-btn.active{background:var(--accent-color);color:var(--bg-primary);border-color:var(--accent-color)}.focus-countdown{font-family:var(--font-mono, monospace);font-size:4rem;font-weight:700;line-height:1;margin-bottom:1.5rem;color:var(--text-primary)}.focus-progress-bar{height:6px;background:var(--bg-tertiary);border-radius:3px;margin-bottom:1.5rem;overflow:hidden}.focus-progress-fill{height:100%;background:var(--accent-color);border-radius:3px;transition:width 1s linear}.focus-task-name{color:var(--text-secondary);margin-bottom:2rem;font-size:.9rem}.focus-actions{display:flex;gap:1rem;justify-content:center}.time-summary-section{margin-bottom:1rem}.time-summary-toggle{display:flex;align-items:center;gap:.5rem;width:100%;padding:.5rem;background:0 0;border:none;font-family:var(--font-heading);font-size:.875rem;font-weight:700;color:var(--text-primary);cursor:pointer;text-align:left}.time-summary-toggle:hover{color:var(--accent-color)}.time-summary-toggle-icon{font-size:.625rem;transition:transform .15s ease}.time-summary-body{padding:.5rem;overflow:hidden;transition:max-height .2s ease;max-height:500px}.time-summary-body.collapsed{max-height:0;padding:0 .5rem}.time-summary-today{display:flex;justify-content:space-between;align-items:center;padding:.5rem 0;border-bottom:1px solid var(--border-color);margin-bottom:.5rem}.time-summary-today-label{font-weight:600;font-size:.875rem}.time-summary-today-value{font-family:var(--font-mono, monospace);font-weight:700;font-size:1rem;color:var(--accent-color)}.time-summary-week-header{font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--text-secondary);margin-bottom:.5rem}.time-summary-project{margin-bottom:.5rem}.time-summary-project-info{display:flex;justify-content:space-between;align-items:center;font-size:.8125rem;margin-bottom:.25rem}.time-summary-project-name{color:var(--text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}.time-summary-project-time{font-family:var(--font-mono, monospace);font-weight:600;font-size:.75rem;color:var(--text-secondary);margin-left:.5rem;flex-shrink:0}.time-summary-bar{height:4px;background:var(--bg-tertiary);border-radius:2px;overflow:hidden}.time-summary-bar-fill{height:100%;background:var(--accent-color);border-radius:2px}.unscheduled-task-actions{display:flex;gap:.25rem;margin-top:.375rem}.unscheduled-task-actions .btn{font-size:.7rem;padding:.125rem .375rem;min-height:auto;line-height:1.4}.task-time-badge{display:inline-block;font-family:var(--font-mono, monospace);font-size:.7rem;font-weight:600;color:var(--text-secondary);background:var(--bg-secondary);border:var(--border-width-sm) solid var(--border-color);border-radius:var(--radius-sm);padding:.05rem .35rem;margin-left:.375rem;vertical-align:middle;white-space:nowrap}.task-time-badge.over-estimate{color:var(--accent-red);border-color:var(--accent-red)}.task-started-icon{display:inline-block;width:0;height:0;border-style:solid;border-width:5px 0 5px 8px;border-color:transparent transparent transparent var(--accent-green);margin-right:.375rem;vertical-align:middle;cursor:pointer;opacity:.8;flex-shrink:0}.task-started-icon:hover{opacity:1}.task-timer-active{display:inline-block;width:8px;height:8px;background:var(--accent-red);border-radius:var(--radius-full);margin-left:.375rem;vertical-align:middle;animation:timer-pulse 1.5s ease-in-out infinite}@keyframes timer-pulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(.8)}}.ui-mode-mobile .timer-widget{bottom:calc(52px + env(safe-area-inset-bottom,0px))}.ui-mode-mobile .focus-countdown{font-size:3rem}.timer-active-banner{display:flex;align-items:center;gap:1rem;padding:.875rem 1rem;background:var(--bg-secondary);border:var(--border-width) solid var(--accent-color);border-radius:var(--radius-md);margin-bottom:1.5rem}.timer-active-info{flex:1;min-width:0}.timer-active-label{display:block;font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--accent-color);margin-bottom:.125rem}.timer-active-task{display:block;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.timer-active-elapsed{font-family:var(--font-mono, monospace);font-size:1.25rem;font-weight:700;color:var(--accent-color);min-width:5rem;text-align:center}.timer-active-actions{display:flex;gap:.5rem}.timer-focus-split{display:flex;align-items:center;gap:.375rem;padding:.5rem 0;margin-bottom:.5rem}.timer-focus-split-label{font-size:.8125rem;color:var(--text-secondary);font-weight:600;margin-right:.25rem}.timer-split-input{width:3.5rem;padding:.25rem .375rem;font-size:.875rem;font-family:var(--font-mono, monospace);text-align:center;border:var(--border-width) solid var(--border-color);border-radius:var(--radius-sm);background:var(--bg-primary);color:var(--text-primary)}.timer-focus-split-sep{font-size:.8125rem;color:var(--text-secondary)}.timer-task-list{display:flex;flex-direction:column;gap:0}.timer-task-item{display:flex;align-items:center;gap:1rem;padding:.75rem .5rem;border-bottom:1px solid var(--border-color)}.timer-task-item:last-child{border-bottom:none}.timer-task-info{flex:1;min-width:0}.timer-task-desc{display:block;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.timer-task-meta{display:flex;gap:.5rem;flex-wrap:wrap;margin-top:.25rem;font-size:.8125rem;color:var(--text-secondary)}.timer-task-project{font-weight:600}.timer-task-priority{font-weight:600}.timer-task-priority.priority-h,.timer-task-priority.priority-high{color:var(--accent-red)}.timer-task-priority.priority-m,.timer-task-priority.priority-medium{color:var(--accent-yellow,var(--accent-color))}.timer-task-estimate,.timer-task-tracked{font-family:var(--font-mono, monospace);font-size:.75rem}.timer-task-actions{display:flex;gap:.375rem;flex-shrink:0}.ui-mode-mobile .timer-active-banner{flex-wrap:wrap}.ui-mode-mobile .timer-active-elapsed{font-size:1rem}.ui-mode-mobile .timer-task-item{flex-wrap:wrap}.ui-mode-mobile .timer-task-actions{width:100%;justify-content:flex-end}.task-overview-section{margin-bottom:1.5rem;padding:1rem;background:var(--bg-card);border:var(--border-width) solid var(--border-color);box-shadow:var(--shadow-offset) var(--shadow-offset) 0 var(--border-color)}.task-overview-section-title{font-family:var(--font-heading);font-size:1rem;font-weight:700;margin-bottom:.75rem;display:flex;align-items:center;gap:.5rem}.task-overview-count{font-weight:400;font-size:.85rem;color:var(--text-secondary)}.task-overview-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:.75rem;margin-bottom:1rem}.task-overview-stat{text-align:center;padding:.5rem;background:var(--bg-secondary);border:var(--border-width-sm) solid var(--border-color)}.task-overview-stat-value{font-family:var(--font-heading);font-size:1.25rem;font-weight:700}.task-overview-stat-label{font-size:.75rem;color:var(--text-secondary);margin-top:.25rem}.task-overview-heatmap-nav{display:flex;align-items:center;justify-content:center;gap:1rem;margin-bottom:.75rem;font-family:var(--font-heading);font-weight:700}.task-overview-meta{display:flex;flex-direction:column;gap:.5rem}.task-overview-badges{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:.25rem}.task-overview-details{display:flex;flex-direction:column;gap:.25rem;color:var(--text-secondary);font-size:.9rem}.task-overview-subtask-list{display:flex;flex-direction:column;gap:.25rem;margin-bottom:.75rem}.task-overview-subtask{display:flex;align-items:center;gap:.5rem;padding:.25rem 0}.completed-text{text-decoration:line-through;color:var(--text-secondary)}.task-overview-add-form{display:flex;gap:.5rem;margin-top:.5rem}.task-overview-add-form .form-input{flex:1}.task-overview-sessions{display:flex;flex-direction:column;gap:.25rem;font-size:.9rem;color:var(--text-secondary)}.task-overview-session{padding:.25rem 0;border-bottom:var(--border-width-sm) solid var(--border-color)}.task-overview-annotations{display:flex;flex-direction:column;gap:.5rem;margin-bottom:.75rem}.task-overview-annotation{padding:.5rem;background:var(--bg-secondary);border:var(--border-width-sm) solid var(--border-color)}.task-overview-annotation-date{font-size:.75rem;color:var(--text-secondary);margin-bottom:.25rem}.task-overview-completion-list{margin-top:.75rem;font-size:.9rem;color:var(--text-secondary)}.task-overview-completion-item{padding:.25rem 0;border-bottom:var(--border-width-sm) solid var(--border-color)}.progress-bar{height:6px;background:var(--bg-secondary);border:var(--border-width-sm) solid var(--border-color);margin-bottom:.75rem;overflow:hidden}.progress-fill{height:100%;background:var(--accent-green);transition:width .3s ease}.progress-bar.over-estimate .progress-fill{background:var(--accent-red)}.ui-mode-mobile .task-overview-stats{grid-template-columns:repeat(2,1fr)}.toggle-nudge-dot{display:inline-block;width:7px;height:7px;background:var(--accent-red);border-radius:var(--radius-full);margin-left:.35rem;vertical-align:middle;animation:pulse-badge 2s infinite}.view-toggle-btn{position:relative}.finish-review-bar{display:flex;justify-content:flex-end;padding:1.5rem 0 1rem;margin-top:1.5rem;border-top:1px dashed var(--border-color)}.finish-review-btn{position:relative;font-size:var(--font-size-lg);padding:.65rem 1.5rem}.finish-review-modal-content{display:flex;flex-direction:column;gap:1.25rem}.past-review-banner{padding:.75rem 1rem;border:var(--border-width-sm) dashed var(--border-color);border-radius:var(--radius-md);background:var(--bg-secondary);color:var(--text-secondary);font-size:.9rem}.day-accomplished-inline{margin-top:1.5rem}.day-accomplished-inline:empty{display:none}.day-accomplished-stats{font-size:.8rem;color:var(--text-secondary);margin-bottom:.5rem}.events-calendar-container{padding:0}.calendar-nav{display:flex;align-items:center;gap:.5rem;margin-bottom:1rem}.calendar-nav-label{font-family:var(--font-heading);font-size:1.1rem;font-weight:700;margin-left:.5rem}.cal-month-grid{border:var(--border-width) solid var(--border-color);overflow:hidden;background:var(--bg-card);box-shadow:var(--shadow-offset) var(--shadow-offset) 0 var(--border-color)}.cal-month-cells,.cal-month-header{display:grid;grid-template-columns:repeat(7,1fr)}.cal-month-day-header{font-family:var(--font-heading);font-size:.75rem;font-weight:600;text-align:center;padding:.5rem;text-transform:uppercase;background:var(--bg-secondary);border-bottom:var(--border-width-sm) solid var(--border-color)}.cal-month-cell{min-height:90px;border:var(--border-width-sm) solid var(--border-color);padding:.25rem;cursor:pointer;transition:background var(--transition-fast)}.cal-month-cell:hover{background:var(--bg-secondary)}.cal-month-cell.other-month{opacity:.4}.cal-month-cell.today{border-color:var(--accent-primary);border-width:2px}.cal-month-cell-header{margin-bottom:.15rem}.cal-day-number{font-family:var(--font-heading);font-size:.8rem;font-weight:600}.cal-event-chip{font-size:.7rem;padding:1px 4px;margin-top:2px;border-radius:var(--radius-xs);background:var(--accent-blue);color:var(--text-on-accent);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer}.cal-event-chip:hover{opacity:.85}.cal-event-chip.block-focus{background:var(--accent-red)}.cal-event-chip.block-personal{background:var(--accent-yellow);color:var(--text-primary)}.cal-event-chip.block-free_time{background:var(--accent-green);color:var(--text-primary)}.cal-event-more{font-size:.65rem;color:var(--text-secondary);padding:1px 4px}.month-day-detail{margin-top:1rem;border:var(--border-width) solid var(--border-color);padding:1rem;background:var(--bg-card);box-shadow:var(--shadow-offset) var(--shadow-offset) 0 var(--border-color)}.cal-day-detail-event{display:flex;gap:.75rem;padding:.5rem 0;border-bottom:1px solid var(--border-color);cursor:pointer}.cal-day-detail-event:hover{background:var(--bg-secondary)}.cal-detail-time{font-weight:600;white-space:nowrap;min-width:100px}.cal-detail-location{color:var(--text-secondary);font-size:.85rem}.cal-week-grid{border:var(--border-width) solid var(--border-color);overflow:hidden;background:var(--bg-card);box-shadow:var(--shadow-offset) var(--shadow-offset) 0 var(--border-color)}.cal-week-header{display:grid;grid-template-columns:60px repeat(7,1fr);border-bottom:var(--border-width-sm) solid var(--border-color);background:var(--bg-secondary)}.cal-week-day-header{text-align:center;padding:.5rem;font-family:var(--font-heading)}.cal-week-day-header.today{background:color-mix(in srgb,var(--accent-primary) 15%,transparent)}.cal-week-day-name{font-size:.75rem;text-transform:uppercase;font-weight:600}.cal-week-day-num{font-size:1rem;font-weight:700;display:block}.cal-week-allday-row{display:grid;grid-template-columns:60px repeat(7,1fr);border-bottom:var(--border-width-sm) solid var(--border-color);min-height:28px}.cal-allday-label{font-size:.7rem;color:var(--text-secondary);display:flex;align-items:center;justify-content:center}.cal-week-allday-cell{padding:2px;border-left:1px solid var(--border-color)}.cal-week-body{display:grid;grid-template-columns:60px repeat(7,1fr);position:relative;overflow-y:auto;max-height:70vh}.cal-week-time-gutter{position:relative}.cal-week-hour-label{position:absolute;right:.5rem;font-size:.7rem;color:var(--text-secondary);transform:translateY(-.5em)}.cal-week-day-col{position:relative;border-left:1px solid var(--border-color)}.cal-week-day-col.today{background:color-mix(in srgb,var(--accent-primary) 5%,transparent)}.cal-week-hour-line{position:absolute;left:0;right:0;border-top:1px dashed color-mix(in srgb,var(--border-color) 50%,transparent)}.cal-week-event{position:absolute;left:2px;right:2px;border:var(--border-width-sm) solid var(--border-color);border-radius:var(--radius-sm);padding:2px 4px;background:var(--accent-blue);color:var(--text-on-accent);overflow:hidden;cursor:pointer;z-index:10;font-size:.7rem}.cal-week-event:hover{opacity:.85}.cal-week-event-title{font-weight:600}.cal-week-event-time{font-size:.65rem;opacity:.85}.cal-week-event.block-focus{background:var(--accent-red)}.cal-week-event.block-personal{background:var(--accent-yellow);color:var(--text-primary)}.cal-week-event.block-free_time{background:var(--accent-green);color:var(--text-primary)}html.ui-mode-mobile{--timeline-slot-h:22px}.ui-mode-mobile .cal-month-cell{min-height:64px;padding:4px}.ui-mode-mobile .cal-day-number{font-size:.95rem;font-weight:600}.ui-mode-mobile .cal-event-chip{font-size:.65rem}.ui-mode-mobile .cal-week-body{max-height:60vh}.ui-mode-mobile .cal-mobile-day{display:flex;flex-direction:column;height:70vh;user-select:none}.ui-mode-mobile .cal-mobile-day-header{padding:.75rem;font-weight:600;text-align:center;border-bottom:1px solid var(--border-color)}.ui-mode-mobile .cal-mobile-day-header.today{color:var(--accent-primary)}.ui-mode-mobile .cal-mobile-allday{padding:.5rem;display:flex;flex-direction:column;gap:.25rem;border-bottom:1px solid var(--border-color)}.ui-mode-mobile .cal-mobile-day-body{position:relative;flex:1;overflow-y:auto;display:grid;grid-template-columns:48px 1fr}.ui-mode-mobile .cal-mobile-day-col{position:relative;border-left:1px solid var(--border-color)}.ui-mode-mobile .settings-page-layout{flex-direction:column}.ui-mode-mobile .settings-sidebar{width:100%;border-right:none;border-bottom:1px solid var(--border-color);padding:.75rem;flex-direction:row;flex-wrap:wrap;align-items:center}.ui-mode-mobile .settings-back{margin-bottom:0;margin-right:.5rem;padding:.5rem}.ui-mode-mobile .settings-nav-items{flex-direction:row;flex-wrap:wrap;gap:.25rem}.ui-mode-mobile .settings-nav-item{padding:.5rem .75rem;border-left:none;border-radius:var(--radius-sm)}.ui-mode-mobile .settings-nav-item.active{border-left-color:transparent}.ui-mode-mobile .settings-content{padding:1rem}body.compose-window{height:100vh;display:flex;flex-direction:column;overflow:hidden}body.compose-window .compose-toolbar{display:flex;gap:.5rem;padding:.75rem 1rem;background:var(--bg-secondary);border-bottom:1px solid var(--border-color)}body.compose-window .toolbar-spacer{flex:1}body.compose-window .compose-form{flex:1;display:flex;flex-direction:column;overflow:hidden;background:var(--bg-card)}body.compose-window .status-bar{padding:.5rem 1rem;background:var(--bg-secondary);border-top:1px solid var(--border-color);font-size:.8125rem;color:var(--text-secondary)}body.compose-window .status-bar.error{color:var(--accent-red)}body.compose-window .status-bar.success{color:var(--accent-green)}body.compose-window .compose-loading{opacity:.6;pointer-events:none}
1 > \ No newline at end of file
1 + @font-face{font-family:Reglo;src:url('../fonts/Reglo-Bold.woff2') format('woff2');font-weight:700;font-style:normal;font-display:swap}*,::after,::before{box-sizing:border-box;margin:0;padding:0}:root{--timeline-slot-h:12px;--bg-primary:#E0E4FA;--bg-secondary:#CDD3F0;--bg-tertiary:#BAC2E6;--bg-card:#FFFFFF;--text-primary:#000000;--text-secondary:#2D2D2D;--text-muted:#6B6B6B;--accent-yellow:#F7D154;--accent-green:#5CB85C;--accent-blue:#6196FF;--accent-purple:#7B68EE;--accent-red:#DC3545;--accent-cyan:#17A2B8;--border-color:#000000;--border-width:2px;--border-width-sm:2px;--accent-color:var(--accent-blue);--accent-primary:var(--accent-blue);--bg-hover:var(--bg-tertiary);--border-light:var(--bg-tertiary);--text-on-accent:var(--bg-card);--shadow-offset-xs:1px;--shadow-offset-md:3px;--shadow-offset:4px;--shadow-offset-lg:6px;--shadow-offset-xl:8px;--shadow-brutal-xs:var(--shadow-offset-xs) var(--shadow-offset-xs) 0 var(--border-color);--shadow-brutal-md:var(--shadow-offset-md) var(--shadow-offset-md) 0 var(--border-color);--shadow-brutal-lg:var(--shadow-offset-lg) var(--shadow-offset-lg) 0 var(--border-color);--shadow-brutal-xl:var(--shadow-offset-xl) var(--shadow-offset-xl) 0 var(--border-color);--radius-xs:3px;--radius-sm:5px;--radius-md:5px;--radius-lg:10px;--radius-xl:20px;--radius-full:50%;--width-container:1400px;--width-modal:560px;--width-sidebar:280px;--space-1:0.25rem;--space-2:0.5rem;--space-3:0.75rem;--space-4:1rem;--space-5:1.25rem;--space-6:1.5rem;--font-sans:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,sans-serif;--font-serif:Georgia,'Times New Roman',serif;--font-mono:'SF Mono','Consolas','Liberation Mono',monospace;--font-display:'Reglo',var(--font-serif);--font-heading:var(--font-sans);--font-body:var(--font-sans);--font-size-xxs:0.65rem;--font-size-xs:0.7rem;--font-size-sm:0.75rem;--font-size-md:0.8rem;--font-size-base:0.875rem;--font-size-lg:1rem;--font-size-xl:1.1rem;--font-size-2xl:1.25rem;--font-size-3xl:1.5rem;--font-size-4xl:1.75rem;--line-height-tight:1.25;--line-height-normal:1.5;--line-height-relaxed:1.75;--transition-fast:0.1s;--transition-normal:0.15s;--transition-slow:0.3s;--overlay-color:color-mix(in srgb, var(--text-primary) 60%, transparent)}html{font-size:16px}.flex-1{flex:1}.row{display:flex}.text-sm-secondary{font-size:.875rem;color:var(--text-secondary)}.text-xs-secondary{font-size:.75rem;color:var(--text-secondary)}.text-accent-red{color:var(--accent-red)}.mb-1{margin-bottom:1rem}.mb-2{margin-bottom:var(--space-2)}.form-select--compact{width:auto;min-width:120px}.settings-divider{margin-top:1.5rem;padding-top:1.5rem;border-top:2px solid var(--border-color)}.settings-heading{margin-bottom:1rem;font-family:var(--font-heading)}.settings-desc{font-size:.875rem;color:var(--text-secondary);margin-bottom:1rem}.subtask-item{display:flex;align-items:center;gap:.5rem;padding:.5rem;background:var(--bg-secondary);border-radius:4px;margin-bottom:.5rem}.subtask-item--linked{background:var(--bg-tertiary);border-left:var(--border-width) solid var(--accent-color)}.subtask-checkbox{cursor:pointer;width:18px;height:18px}.subtask-checkbox-disabled{cursor:not-allowed;width:18px;height:18px;opacity:.5}.subtask-text-done{text-decoration:line-through;opacity:.6}body{font-family:var(--font-sans);background-color:var(--bg-primary);color:var(--text-primary);line-height:1.6;height:100vh;overflow:hidden;display:flex;flex-direction:column}.ui-mode-desktop .app-header{background:var(--bg-card);border-bottom:var(--border-width) solid var(--border-color);padding:.75rem 1.5rem;display:flex;justify-content:space-between;align-items:center}.ui-mode-desktop .header-content{display:flex;align-items:center;gap:.75rem}.ui-mode-desktop .header-actions{display:flex;align-items:center;gap:.5rem}.ui-mode-desktop .app-title{font-family:var(--font-display);font-size:1.75rem;font-weight:700;color:var(--text-primary);letter-spacing:-.02em}.ui-mode-desktop .app-subtitle{font-size:.875rem;color:var(--text-muted);font-weight:500;line-height:1}.mobile-view-title{display:none}.ui-mode-desktop .tab-navigation{display:flex;justify-content:center;gap:.5rem}.ui-mode-desktop .tab{display:flex;align-items:center;gap:.5rem;padding:.75rem 1.25rem;text-decoration:none;color:var(--text-primary);background:var(--bg-card);border:var(--border-width) solid var(--border-color);border-radius:var(--radius-md);font-weight:600;transition:background-color .15s ease}.ui-mode-desktop .tab:hover{background:var(--bg-secondary)}.ui-mode-desktop .tab.active{background-color:var(--accent-blue);color:var(--text-on-accent);box-shadow:var(--shadow-brutal-xs)}.ui-mode-desktop .tab-icon{font-size:1.1rem}.ui-mode-desktop .tab-label{font-weight:600;font-size:.9rem}.ui-mode-desktop .tab.tab-right{margin-left:auto}.tab-group .subview.hidden{display:none}.ui-mode-desktop .pill-nav{display:flex;align-items:center;gap:var(--space-1);padding:0;margin-bottom:1rem;min-height:2rem}.ui-mode-desktop .pill{padding:var(--space-1) var(--space-3);border-radius:var(--radius-xl);border:var(--border-width-sm) solid var(--border-color);background:var(--bg-card);font-family:var(--font-sans);font-size:var(--font-size-sm);font-weight:600;cursor:pointer;transition:background-color var(--transition-fast)}.ui-mode-desktop .pill:hover{background:var(--bg-tertiary)}.ui-mode-desktop .pill.active{background:var(--text-primary);color:var(--bg-card);border-color:var(--text-primary);box-shadow:var(--shadow-brutal-xs)}.main-content{flex:1;max-width:var(--width-container);width:100%;margin:0 auto;padding:1.5rem 1.75rem 2rem}.page-header{display:flex;justify-content:space-between;align-items:center;gap:.5rem;margin-bottom:1rem}.page-title{font-family:var(--font-heading);font-size:1.75rem;font-weight:700;color:var(--text-primary)}.tab-group{position:relative}.tab-group>.subview>.page-header{position:absolute;top:0;right:0;margin:0;z-index:1}.tab-group .page-header .page-title{display:none}#day-plan-view>.page-header,#project-dashboard-view>.page-header{position:static;margin-bottom:1rem}#project-dashboard-view .page-title{display:block}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.625rem 1.25rem;border:var(--border-width) solid var(--border-color);border-radius:var(--radius-sm);font-size:.9rem;font-weight:600;cursor:pointer;transition:background-color .15s ease,transform .1s ease,box-shadow .1s ease;text-decoration:none;background:var(--bg-card);color:var(--text-primary);box-shadow:var(--shadow-brutal-xs)}.btn:hover{background:var(--bg-secondary);transform:translate(-1px,-1px);box-shadow:var(--shadow-offset-md) var(--shadow-offset-md) 0 var(--border-color)}.btn:active{background:var(--bg-tertiary);transform:translate(1px,1px);box-shadow:none}.btn:disabled{background:0 0;color:var(--text-muted);border-color:var(--text-muted);cursor:not-allowed;box-shadow:none}.btn:disabled:hover{background:0 0;transform:none;box-shadow:none}.btn-primary{background-color:var(--accent-blue);color:var(--text-on-accent)}.btn-primary:hover{background-color:color-mix(in srgb,var(--accent-blue) 85%,#000)}.btn-primary:active{background-color:color-mix(in srgb,var(--accent-blue) 70%,#000)}.btn-secondary{background-color:var(--bg-secondary);color:var(--text-primary)}.btn-danger{background-color:var(--accent-red);color:var(--text-on-accent)}.btn-danger:hover{background-color:color-mix(in srgb,var(--accent-red) 85%,#000)}.btn-danger:active{background-color:color-mix(in srgb,var(--accent-red) 70%,#000)}.btn-sm{padding:.375rem .75rem;font-size:.8rem}.cards-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:1.25rem}.card{background-color:var(--bg-card);border:var(--border-width) solid var(--border-color);border-radius:var(--radius-md);padding:1.25rem;box-shadow:var(--shadow-offset) var(--shadow-offset) 0 var(--border-color);transition:transform .15s ease,box-shadow .15s ease,background-color .15s ease;cursor:pointer}.card:hover{background-color:var(--bg-secondary);transform:translate(-2px,-2px);box-shadow:calc(var(--shadow-offset) + 2px) calc(var(--shadow-offset) + 2px) 0 var(--border-color)}.card--list-item{padding:.75rem;border-radius:0;margin-bottom:.5rem}.card--shell{padding:0;cursor:default;display:flex;flex-direction:column;overflow:hidden}.card--shell:hover{background-color:var(--bg-card);transform:none;box-shadow:var(--shadow-offset) var(--shadow-offset) 0 var(--border-color)}.card--muted{background:var(--bg-secondary);border:none;box-shadow:none;cursor:default}.card--muted:hover{background:var(--bg-secondary);transform:none;box-shadow:none}.card--static{cursor:default}.card--static:hover{background-color:var(--bg-card);transform:none;box-shadow:var(--shadow-offset) var(--shadow-offset) 0 var(--border-color)}.card-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:.75rem}.card-title{font-family:var(--font-heading);font-size:1.1rem;font-weight:700;color:var(--text-primary)}.card-description{font-size:.9rem;color:var(--text-secondary);margin-bottom:1rem}.markdown-content{font-size:.9rem;color:var(--text-secondary);line-height:1.5}.markdown-content p{margin:0 0 .5em 0}.markdown-content p:last-child{margin-bottom:0}.markdown-content ol,.markdown-content ul{margin:0 0 .5em 1.5em;padding:0}.markdown-content code{background:var(--bg-tertiary);padding:.1em .3em;border-radius:3px;font-size:.85em}.markdown-content pre{background:var(--bg-tertiary);padding:.5em;border-radius:4px;overflow-x:auto;margin:0 0 .5em 0}.markdown-content pre code{background:0 0;padding:0}.markdown-content a{color:var(--accent-color)}.markdown-content blockquote{border-left:3px solid var(--border-color);margin:0 0 .5em 0;padding-left:.75em;color:var(--text-secondary)}.markdown-content h1,.markdown-content h2,.markdown-content h3{margin:.5em 0 .25em 0;font-size:1em;font-weight:600;color:var(--text-primary)}.markdown-content table{border-collapse:collapse;margin:.5em 0}.markdown-content td,.markdown-content th{border:1px solid var(--border-color);padding:.25em .5em}.markdown-content img{max-width:100%}.card-meta{display:flex;gap:.5rem;flex-wrap:wrap}.badge,.tag{display:inline-flex;align-items:center;padding:.25rem .625rem;border:var(--border-width-sm) solid var(--border-color);border-radius:var(--radius-sm);font-size:.8125rem;font-weight:600;background:var(--bg-card);color:var(--text-primary)}.badge[data-color=green],.tag[data-color=green]{background-color:color-mix(in srgb,var(--accent-green) 20%,var(--bg-card));border-color:var(--accent-green)}.badge[data-color=yellow],.tag[data-color=yellow]{background-color:color-mix(in srgb,var(--accent-yellow) 20%,var(--bg-card));border-color:var(--accent-yellow)}.badge[data-color=red],.tag[data-color=red]{background-color:color-mix(in srgb,var(--accent-red) 20%,var(--bg-card));border-color:var(--accent-red)}.badge[data-color=cyan],.tag[data-color=cyan]{background-color:color-mix(in srgb,var(--accent-cyan) 20%,var(--bg-card));border-color:var(--accent-cyan)}.badge[data-color=purple],.tag[data-color=purple]{background-color:color-mix(in srgb,var(--accent-purple) 20%,var(--bg-card));border-color:var(--accent-purple)}.badge[data-color=muted],.tag[data-color=muted]{background-color:var(--bg-tertiary);border-color:var(--text-muted)}.badge[data-color=blue],.tag[data-color=blue]{background-color:color-mix(in srgb,var(--accent-blue) 20%,var(--bg-card));border-color:var(--accent-blue)}.badge--xs{padding:.1rem .5rem;font-size:.75rem}.badge--sm{padding:.15rem .55rem;font-size:.78rem}.badge--filled{border:none}.badge--filled[data-color=green]{background:var(--accent-green);color:var(--text-on-accent)}.badge--filled[data-color=yellow]{background:var(--accent-yellow);color:var(--text-primary)}.badge--filled[data-color=red]{background:var(--accent-red);color:var(--text-on-accent)}.badge--filled[data-color=cyan]{background:var(--accent-cyan);color:var(--text-on-accent)}.badge--filled[data-color=purple]{background:var(--accent-purple);color:var(--text-on-accent)}.badge--filled[data-color=blue]{background:var(--accent-blue);color:var(--text-on-accent)}.badge--filled[data-color=muted]{background:var(--bg-secondary);color:var(--text-primary)}.kbd-hint{display:inline-block;font-family:var(--font-mono, monospace);font-size:.65rem;font-weight:600;padding:.1rem .35rem;margin-left:.35rem;border:1px solid currentColor;border-radius:3px;opacity:.6;vertical-align:middle;line-height:1}.tag.status-active{background-color:color-mix(in srgb,var(--accent-green) 20%,var(--bg-card));border-color:var(--accent-green)}.tag.status-on_hold,.tag.status-onhold{background-color:color-mix(in srgb,var(--accent-yellow) 20%,var(--bg-card));border-color:var(--accent-yellow)}.tag.status-archived{background-color:var(--bg-tertiary);border-color:var(--text-muted)}.tag.status-inactive{background-color:color-mix(in srgb,var(--accent-red) 20%,var(--bg-card));border-color:var(--accent-red)}.tag.status-completed{background-color:color-mix(in srgb,var(--accent-cyan) 20%,var(--bg-card));border-color:var(--accent-cyan)}.data-table{width:100%;border-collapse:separate;border-spacing:0;background-color:var(--bg-card);border:var(--border-width) solid var(--border-color);border-radius:var(--radius-md);overflow:hidden;box-shadow:var(--shadow-offset) var(--shadow-offset) 0 var(--border-color)}.data-table td,.data-table th{padding:1rem 1.25rem;text-align:left;border-bottom:2px solid var(--border-color)}.data-table th{background-color:var(--bg-secondary);font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--text-primary)}.data-table tbody tr{transition:background-color .15s ease}.data-table tbody tr:hover{background-color:var(--bg-secondary)}.data-table tbody tr:last-child td{border-bottom:none}.data-table tbody tr.keyboard-selected,.data-table tbody tr.selected{background-color:color-mix(in srgb,var(--accent-blue) 25%,var(--bg-card))}.task-table{width:100%;background:var(--bg-card);border:var(--border-width) solid var(--border-color);border-radius:var(--radius-lg);overflow:hidden;display:flex;flex-direction:column;flex:1;min-height:0;box-shadow:var(--shadow-offset) var(--shadow-offset) 0 var(--border-color)}.task-header-row,.task-row{display:grid;grid-template-columns:1fr 140px 60px 110px 90px 100px 90px;align-items:center;gap:.75rem}.task-header-row{background-color:var(--bg-secondary);border-bottom:2px solid var(--border-color);padding:0 1.25rem}.task-header-row .task-cell{padding:.75rem 0;font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--text-primary)}.task-list-container{flex:1;min-height:0;overflow-y:auto;position:relative}.task-row{padding:.75rem 1.25rem;border-bottom:1px solid var(--border-color);transition:background-color .15s ease,opacity .25s ease,transform .25s ease;cursor:pointer}.task-row-removing{opacity:0;transform:translateX(20px)}.task-row:hover{background-color:var(--bg-secondary)}.task-row:last-child{border-bottom:none}.task-row.keyboard-selected,.task-row.selected{background-color:color-mix(in srgb,var(--accent-blue) 25%,var(--bg-card))}.task-cell{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.task-actions-header{text-align:right}.event-table tbody tr{cursor:pointer}.task-description{font-weight:600;white-space:normal;display:flex;flex-wrap:wrap;align-items:center;gap:.25rem .5rem}.task-description-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}.task-project{font-size:.85rem;color:var(--text-secondary);white-space:nowrap}.priority-high,.priority-low,.priority-medium{display:inline-block;padding:.25rem .5rem;border-radius:var(--radius-xs);font-weight:700;text-align:center}.priority-high{color:var(--accent-red);background:#fde8ea;background:color-mix(in srgb,var(--accent-red) 15%,var(--bg-card))}.priority-medium{color:var(--accent-yellow);background:#fef8e6;background:color-mix(in srgb,var(--accent-yellow) 15%,var(--bg-card))}.priority-low{color:var(--text-muted);background:var(--bg-secondary)}.sortable{cursor:pointer;user-select:none;white-space:nowrap}.sortable:hover{background:var(--bg-hover)}.sort-arrow{display:inline-block;width:.8em;margin-left:.25rem;opacity:.3}.sort-arrow::after{content:'\2195'}.sortable.sort-asc .sort-arrow::after{content:'\2191'}.sortable.sort-desc .sort-arrow::after{content:'\2193'}.sortable.sort-asc .sort-arrow,.sortable.sort-desc .sort-arrow{opacity:1}.task-overdue .task-description-text{color:var(--accent-red)}.task-overdue .task-due{color:var(--accent-red);font-weight:600}.task-tags{display:flex;gap:.25rem;flex-wrap:wrap}.task-tag{background-color:var(--bg-tertiary);color:var(--text-primary);padding:.125rem .5rem;border-radius:var(--radius-xs);font-size:.75rem;font-weight:600;border:1px solid var(--border-color)}.recurrence-icon{color:var(--accent-purple);font-size:.85rem;font-weight:700}.annotation-badge{background-color:var(--accent-yellow);color:var(--text-primary);padding:.125rem .5rem;border-radius:var(--radius-xs);font-size:.7rem;font-weight:700;border:var(--border-width-sm) solid var(--border-color)}.subtask-badge{background-color:var(--bg-secondary);color:var(--text-primary);padding:.125rem .5rem;border-radius:var(--radius-xs);font-size:.7rem;font-weight:700;border:var(--border-width-sm) solid var(--border-color);margin-left:.25rem}.task-started{border-left:4px solid var(--accent-green)}.task-completed{opacity:.5;text-decoration:line-through}.task-deleted{display:none}.due-overdue{color:var(--accent-red);font-weight:700;background:#fde8ea;background:color-mix(in srgb,var(--accent-red) 15%,var(--bg-card));padding:.25rem .5rem;border-radius:var(--radius-xs)}.due-today{color:var(--accent-yellow);font-weight:700;background:#fef8e6;background:color-mix(in srgb,var(--accent-yellow) 15%,var(--bg-card));padding:.25rem .5rem;border-radius:var(--radius-xs)}.due-soon{color:var(--text-secondary)}.due-future{color:var(--text-muted)}.events-list{display:flex;flex-direction:column;flex:1;min-height:0;gap:1rem}.event-table-virtual{width:100%;background:var(--bg-card);border:var(--border-width) solid var(--border-color);border-radius:var(--radius-lg);overflow:hidden;display:flex;flex-direction:column;flex:1;min-height:0;box-shadow:var(--shadow-offset) var(--shadow-offset) 0 var(--border-color)}.event-header-row,.event-row-virtual{display:grid;grid-template-columns:100px 80px 1fr 150px 40px;align-items:center;gap:.5rem}.event-header-row{background-color:var(--bg-secondary);border-bottom:2px solid var(--border-color);flex-shrink:0}.event-header-row .event-cell{padding:1rem 1.25rem;font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--text-primary)}.event-list-container{flex:1;min-height:0;overflow-y:auto;position:relative}.event-row-virtual{padding:.75rem 1.25rem;border-bottom:1px solid var(--border-color);transition:background-color .15s ease;cursor:pointer}.event-row-virtual:hover{background-color:var(--bg-secondary)}.event-row-virtual:last-child{border-bottom:none}.event-row-virtual.event-past{opacity:.7}.event-cell{overflow:hidden;text-overflow:ellipsis}.event-row{cursor:pointer}.event-cell-date{white-space:nowrap}.event-cell-date .event-date-num{font-weight:700;font-size:.9rem;color:var(--text-primary);margin-right:.5rem}.event-date-badge{display:inline-block;padding:.15rem .4rem;background:var(--accent-green);color:var(--text-on-accent);font-size:.7rem;font-weight:700;text-transform:uppercase;border-radius:var(--radius-xs);margin-right:.5rem}.event-cell-time{font-family:var(--font-mono);font-size:.85rem;color:var(--text-secondary)}.event-cell-title{font-weight:600}.event-cell-location{color:var(--text-secondary);font-size:.875rem}.event-date-badge.event-proximity-today{background:var(--accent-green)}.event-date-badge.event-proximity-tomorrow{background:var(--accent-yellow);color:var(--text-primary)}.event-date-badge.event-proximity-week{background:var(--accent-cyan)}.event-date-badge.event-proximity-future{background:var(--accent-blue)}.event-date-badge.event-proximity-past{background:var(--text-muted)}.event-row.event-past{opacity:.7}.no-upcoming-events{text-align:center;padding:2rem;color:var(--text-secondary);font-style:italic}.past-events-section{margin-top:.5rem}.past-events-toggle{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;background:var(--bg-secondary);border:var(--border-width-sm) solid var(--border-color);border-radius:var(--radius-sm);cursor:pointer;font-weight:600;color:var(--text-secondary);transition:background-color .15s ease,color .15s ease;list-style:none}.past-events-toggle::-webkit-details-marker{display:none}.past-events-toggle::before{content:'▶';font-size:.7rem;transition:transform .15s ease}.past-events-section[open] .past-events-toggle::before{transform:rotate(90deg)}.past-events-toggle:hover{background:var(--bg-tertiary);color:var(--text-primary)}.past-events-label{flex:1}.past-events-count{background:var(--text-muted);color:var(--text-on-accent);font-size:.75rem;padding:.15rem .5rem;border-radius:var(--radius-sm)}.past-events-section .event-table-past{margin-top:.75rem;opacity:.85}.past-events-section .event-list-container{max-height:300px}#recurring-events-section .event-table-virtual{opacity:1;margin-top:.75rem}#recurring-events-section .event-list-container{max-height:320px}.event-row-virtual.event-recurring .event-recurrence-pattern{font-weight:600;color:var(--accent-primary)}.events-section-heading{margin:1rem 0 .5rem;font-size:.95rem;font-weight:700;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em}.event-item{display:flex;gap:1rem;padding:1rem;background-color:var(--bg-card);border:var(--border-width) solid var(--border-color);border-radius:var(--radius-md);transition:background-color .15s ease;cursor:pointer}.event-item:hover{background-color:var(--bg-secondary)}.event-date{flex-shrink:0;width:80px;text-align:center;padding:.75rem;background-color:var(--accent-green);border-radius:var(--radius-sm);color:var(--text-on-accent)}.event-date-day{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em}.event-date-num{font-size:1.5rem;font-weight:700}.event-content{flex:1}.event-title{font-family:var(--font-heading);font-weight:700;font-size:1.1rem;color:var(--text-primary);margin-bottom:.25rem}.event-details{font-size:.875rem;color:var(--text-secondary);display:flex;gap:1rem}.event-location,.event-time{display:flex;align-items:center;gap:.25rem}.event-project{margin-top:.5rem}.email-list{flex:1;min-height:0}.email-list-container{flex:1;min-height:0;overflow-y:auto;position:relative}.email-item{display:flex;gap:1rem;padding:1rem;border-bottom:2px solid var(--border-color);transition:background-color .15s ease;cursor:pointer}.email-item:last-child{border-bottom:none}.email-item:hover{background-color:var(--bg-secondary)}.email-item.unread{background-color:color-mix(in srgb,var(--accent-blue) 20%,var(--bg-card));border-left:4px solid var(--accent-blue)}.email-item.unread .email-subject{font-weight:700}.email-item.unread .email-from{font-weight:700}.email-item.outgoing{border-left:4px solid var(--accent-green)}.email-checkbox{flex-shrink:0;margin-top:.25rem}.email-content{flex:1;min-width:0}.email-header{display:flex;justify-content:space-between;margin-bottom:.25rem;align-items:center;gap:.5rem}.thread-badge{background-color:var(--bg-tertiary);color:var(--text-secondary);font-size:.7rem;font-weight:600;padding:.1rem .4rem;border-radius:var(--radius-md);min-width:1.25rem;text-align:center}.email-from{color:var(--text-primary);font-size:.9rem;font-weight:600}.email-date{color:var(--text-muted);font-size:.8rem;flex-shrink:0;font-weight:600}.email-subject{color:var(--text-primary);font-size:.95rem;margin-bottom:.25rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.email-preview{color:var(--text-muted);font-size:.85rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@keyframes toastSlideIn{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.toast{position:fixed;bottom:var(--space-5);right:var(--space-5);padding:var(--space-3) var(--space-5);background:var(--bg-card);color:var(--text-primary);border:var(--border-width) solid var(--border-color);border-radius:var(--radius-md);box-shadow:var(--shadow-brutal-md);z-index:2000;font-weight:600;display:flex;align-items:center;gap:var(--space-3);animation:toastSlideIn .3s ease}.toast.toast-leaving{opacity:0;transform:translateY(10px);transition:opacity .3s ease,transform .3s ease}.toast-info{background:var(--bg-card);color:var(--text-primary)}.toast-success{background:var(--accent-green);color:var(--text-on-accent)}.toast-error{background:var(--accent-red);color:var(--text-on-accent)}.toast-action{background:0 0;border:1px solid currentColor;border-radius:var(--radius-sm);color:inherit;cursor:pointer;padding:.15rem .5rem;font-size:var(--font-size-sm);font-weight:600;font-family:inherit}.toast-undo{z-index:10000}.undo-message{flex:1}.undo-countdown{font-size:var(--font-size-sm);color:var(--text-muted);min-width:2.5rem;text-align:right}@keyframes modalFadeIn{from{opacity:0}to{opacity:1}}@keyframes modalSlideIn{from{opacity:0;transform:translateY(-20px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes modalFadeOut{from{opacity:1}to{opacity:0}}@keyframes modalSlideOut{from{opacity:1;transform:translateY(0) scale(1)}to{opacity:0;transform:translateY(-20px) scale(.95)}}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:var(--overlay-color);display:flex;align-items:center;justify-content:center;z-index:1000;animation:modalFadeIn .15s ease-out}.modal-overlay.hidden{display:none}.modal-overlay.closing{animation:modalFadeOut .15s ease-in forwards}.modal-container{background-color:var(--bg-card);border:var(--border-width) solid var(--border-color);border-radius:var(--radius-lg);box-shadow:var(--shadow-brutal-xl);max-width:var(--width-modal);width:90%;max-height:calc(100dvh - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px) - 2rem);overflow:auto;animation:modalSlideIn .2s ease-out}.modal-container.modal-large{max-width:calc(100vw - 4rem);width:calc(100vw - 4rem);max-height:calc(100vh - 4rem);height:calc(100vh - 4rem);display:flex;flex-direction:column}.modal-container.modal-large .modal-content{flex:1;overflow:auto;display:flex;flex-direction:column}.modal-overlay.closing .modal-container{animation:modalSlideOut .15s ease-in forwards}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:1rem 1.5rem;border-bottom:var(--border-width) solid var(--border-color);background:var(--bg-secondary)}.modal-header h2,.modal-title{font-family:var(--font-heading);font-size:1.25rem;font-weight:700}.modal-close{background:var(--bg-card);border:var(--border-width-sm) solid var(--border-color);border-radius:var(--radius-sm);font-size:1.25rem;color:var(--text-primary);cursor:pointer;line-height:1;width:36px;height:36px;display:flex;align-items:center;justify-content:center;transition:background-color .15s ease}.modal-close:hover{background:var(--accent-blue);color:var(--text-on-accent)}.modal-content{padding:1.5rem}.modal-content form>.form-actions:last-child,.modal-content>.form-actions:last-child{position:sticky;bottom:0;margin-top:1.5rem;padding-top:.75rem;padding-bottom:.25rem;background:var(--bg-card);border-top:var(--border-width-sm) solid var(--border-color);z-index:1}.form-group{margin-bottom:1.25rem}.form-more-toggle{display:block;background:0 0;border:none;cursor:pointer;font-size:.85rem;font-weight:600;color:var(--accent-blue);padding:.25rem 0;margin-bottom:.75rem}.form-more-toggle::before{content:'+ '}.form-more-toggle.expanded::before{content:'- '}.form-extended-fields.hidden{display:none}.recurrence-weekday-label{display:inline-flex;align-items:center;gap:.25rem;padding:.25rem .5rem;font-size:.8rem;border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer}.recurrence-weekday-label:has(input:checked){background:var(--accent-primary);color:var(--bg-primary);border-color:var(--accent-primary)}.recurrence-weekday-label input[type=checkbox]{display:none}.recurrence-config .form-input,.recurrence-config .form-select{font-size:.85rem;padding:.25rem .5rem}.form-label{display:block;font-size:.9rem;font-weight:700;color:var(--text-primary);margin-bottom:.5rem}.form-input,.form-select,.form-textarea{width:100%;padding:.75rem 1rem;border:var(--border-width-sm) solid var(--border-color);border-radius:var(--radius-sm);background-color:var(--bg-card);color:var(--text-primary);font-size:1rem;box-shadow:none}.form-input:focus,.form-select:focus,.form-textarea:focus{outline:0;background-color:var(--bg-card);box-shadow:0 0 0 2px var(--accent-blue)}.form-textarea{min-height:100px;resize:vertical}.form-input--ghost{background:0 0;border:none;padding:.5rem;font-size:.875rem}.form-input--ghost:focus{background:0 0;box-shadow:none}.form-select--ghost{background:var(--bg-primary);padding:.5rem;font-size:.875rem}.form-actions{display:flex;justify-content:flex-end;gap:.75rem;margin-top:1.5rem}.form-input[aria-invalid=true],.form-select[aria-invalid=true],.form-textarea[aria-invalid=true]{border-color:var(--accent-red);box-shadow:0 0 0 2px color-mix(in srgb,var(--accent-red) 30%,transparent)}.form-input[aria-invalid=true]:focus,.form-select[aria-invalid=true]:focus,.form-textarea[aria-invalid=true]:focus{box-shadow:0 0 0 2px var(--accent-red)}.form-error{color:var(--accent-red);font-size:.8rem;font-weight:600;margin-top:.25rem;display:none}.form-error.visible{display:block}.form-hint{font-size:var(--font-size-sm);color:var(--text-secondary);margin-top:var(--space-1)}.form-hint--preview{color:var(--accent-primary)}.form-checkbox-label{display:flex;align-items:center;gap:var(--space-2);cursor:pointer}.empty-state-action{margin-top:var(--space-3)}.stack{display:flex;flex-direction:column}.stack-2{gap:var(--space-2)}.stack-3{gap:var(--space-3)}.stack-4{gap:var(--space-4)}.row-flex{display:flex;align-items:center}.row-flex-2{gap:var(--space-2)}.row-flex-3{gap:var(--space-3)}.row-flex-4{gap:var(--space-4)}.text-center{text-align:center}.text-left{text-align:left}.w-full{width:100%}.text-muted{color:var(--text-muted)}.text-secondary{color:var(--text-secondary)}.text-danger{color:var(--accent-red)}.text-sm{font-size:var(--font-size-sm)}.text-xs{font-size:var(--font-size-xs, .75rem)}.section-divider{border-top:var(--border-width-sm) solid var(--border-color);padding-top:var(--space-4);margin-top:var(--space-4)}.sync-status-row{display:flex;align-items:center;gap:var(--space-3);margin-bottom:var(--space-5)}.sync-status-dot{width:10px;height:10px;border-radius:var(--radius-full);background:var(--accent-green);display:inline-block}.sync-stats-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-4);margin-bottom:var(--space-5)}.sync-stat{padding:var(--space-3);background:var(--bg-secondary);border-radius:var(--radius-md)}.sync-stat-label{font-size:var(--font-size-sm);color:var(--text-muted);margin-bottom:var(--space-1)}.sync-stat-value{font-size:var(--font-size-md, .9rem)}.sync-encryption-error{color:var(--accent-red);font-size:var(--font-size-sm);margin-top:var(--space-2);display:none}.sync-encryption-error.visible{display:block}.sync-section-actions{margin-bottom:var(--space-5)}.sync-banner{padding:var(--space-3);background:var(--bg-secondary);border-radius:var(--radius-md);margin-bottom:var(--space-4);font-size:var(--font-size-sm);color:var(--text-secondary)}.sync-banner--warning{background:var(--bg-secondary);border:1px solid var(--border-color);padding:var(--space-4)}.sync-empty{padding:var(--space-5) 0}.sync-empty-message{margin-bottom:var(--space-5)}.sync-hint{margin-bottom:var(--space-4)}.sync-status-label{font-weight:500}.sync-account-row{display:flex;align-items:baseline;gap:var(--space-3);margin-bottom:var(--space-5);font-size:var(--font-size-sm)}.sync-account-label{color:var(--text-muted)}.sync-account-value{color:var(--text-primary)}.sync-account-username{color:var(--text-muted)}.sync-banner-title{font-weight:500;margin:0 0 var(--space-3) 0}.sync-banner-body{margin:0 0 var(--space-2) 0;font-size:var(--font-size-sm);color:var(--text-secondary)}.sync-banner-tier-line{margin:0 0 var(--space-4) 0;font-size:var(--font-size-sm);color:var(--text-secondary)}.sync-banner-actions{display:flex;gap:var(--space-2);align-items:center}.settings-subheading{margin-bottom:var(--space-3);font-size:var(--font-size-md, .9rem)}.settings-desc-block{font-size:var(--font-size-sm);color:var(--text-secondary);margin-bottom:var(--space-4)}.settings-actions-row{display:flex;flex-wrap:wrap;gap:var(--space-3);margin-bottom:var(--space-4)}.settings-actions-row--center{align-items:center;flex-wrap:nowrap;margin-top:var(--space-3)}.settings-status-text{font-size:var(--font-size-sm);color:var(--text-secondary)}.settings-toggle-row{display:flex;justify-content:space-between;align-items:center;gap:var(--space-3);margin:var(--space-3) 0}.settings-toggle-row>div{flex:1}.settings-toggle-row .settings-desc{margin-bottom:0}.settings-section-block{padding-top:var(--space-4);border-top:var(--border-width-sm) solid var(--border-color)}.form-hint--spaced{margin-top:var(--space-2)}.empty-italic{color:var(--text-secondary);font-style:italic}.form-grid-2{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-4)}.email-detect-status{font-size:var(--font-size-sm);color:var(--text-secondary);margin-top:var(--space-1)}.email-detect-note{font-size:var(--font-size-sm);margin-top:var(--space-2);padding:var(--space-3) var(--space-3);background:var(--bg-tertiary);border-left:3px solid var(--accent-primary);border-radius:var(--radius-sm);line-height:var(--line-height-normal)}.account-row{padding:var(--space-3);background:var(--bg-secondary);border-radius:var(--radius-sm);margin-bottom:var(--space-2)}.account-row-header{display:flex;justify-content:space-between;align-items:flex-start}.account-row-name{font-weight:600}.account-row-meta{font-size:var(--font-size-sm);color:var(--text-secondary)}.account-row-sync{font-size:var(--font-size-sm);color:var(--text-secondary)}.account-row-provider-badge{font-size:var(--font-size-xs, .7rem);padding:.125rem .375rem;background:var(--accent-blue);color:var(--text-on-accent);border-radius:var(--radius-xs);margin-left:var(--space-2)}.test-conn-result{padding:var(--space-2);background:var(--bg-secondary);border-radius:var(--radius-sm);margin-bottom:var(--space-2)}.test-conn-result--success{color:var(--accent-green)}.test-conn-result--error{color:var(--accent-red)}.folder-list{max-height:150px;overflow-y:auto;background:var(--bg-secondary);padding:var(--space-2);border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:var(--font-size-sm)}.folder-list-meta{font-size:var(--font-size-sm);color:var(--text-secondary);margin-top:var(--space-2)}.error-pre{background:var(--bg-secondary);padding:var(--space-2);border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:var(--font-size-sm);white-space:pre-wrap;max-height:150px;overflow-y:auto}.test-conn-section{border-top:var(--border-width-sm) solid var(--border-color);margin:var(--space-4) 0;padding-top:var(--space-4)}.oauth-waiting{text-align:center;padding:var(--space-5)}.oauth-waiting-title{font-size:var(--font-size-lg, 1.25rem);margin-bottom:var(--space-4)}.oauth-waiting-body{color:var(--text-secondary);margin-bottom:var(--space-5)}.oauth-waiting-spinner{margin:0 auto var(--space-5)}.contact-card-header{gap:var(--space-3)}.contact-card-body{flex:1;min-width:0}.contact-detail-header{display:flex;align-items:center;gap:var(--space-4);margin-bottom:var(--space-5)}.contact-detail-name{margin:0}.contact-detail-tags{margin-bottom:var(--space-4)}.form-actions--spaced{margin-top:var(--space-5)}.milestones-empty{color:var(--text-muted);font-size:var(--font-size-sm);margin-bottom:var(--space-4)}.bulk-modal-prompt{color:var(--text-secondary);margin-bottom:var(--space-2)}.bulk-modal-prompt--wide{margin-bottom:var(--space-3)}.bulk-modal-scroll{max-height:300px;overflow-y:auto;display:flex;flex-direction:column;gap:var(--space-1)}.bulk-priority-row{display:flex;gap:var(--space-2)}.snooze-hint{font-size:var(--font-size-sm);color:var(--text-secondary);margin:0 0 var(--space-3) 0}.time-tracking-empty{color:var(--text-secondary);padding:var(--space-4) 0}.backups-empty{color:var(--text-secondary);font-style:italic}.backup-item{display:flex;align-items:center;justify-content:space-between;padding:var(--space-3);border:1px solid var(--border-color);border-radius:var(--radius-md);margin-bottom:var(--space-2)}.backup-item-meta{font-size:var(--font-size-sm);color:var(--text-secondary)}.export-desc{font-size:var(--font-size-sm);color:var(--text-secondary);margin-bottom:var(--space-5)}.export-note{margin-top:var(--space-4);padding:var(--space-3);background:var(--bg-secondary);border-radius:var(--radius-sm)}.export-note-text{font-size:var(--font-size-sm);color:var(--text-secondary);margin:0}.paint-time-preview{font-weight:600;color:var(--accent-primary);margin-bottom:var(--space-2)}.recurrence-config{display:none;margin-top:var(--space-2);padding:var(--space-2);border:1px solid var(--border-color);border-radius:var(--radius-sm)}.recurrence-config:not(.hidden){display:block}.recurrence-preview{font-size:var(--font-size-sm);color:var(--accent-primary);font-weight:600;margin-bottom:var(--space-2)}.recurrence-sublabel{font-size:var(--font-size-xs, .75rem)}.recurrence-unit{font-size:var(--font-size-sm)}.recurrence-day-label{display:flex;align-items:center;gap:var(--space-2);font-size:var(--font-size-sm)}.recurrence-nth-toggle{font-size:var(--font-size-sm);margin:var(--space-1) 0}.recurrence-row{margin-bottom:var(--space-2)}.recurrence-row.recurrence-hidden{display:none}.recurrence-interval-row{display:flex;align-items:center;gap:var(--space-2)}.recurrence-num{width:4rem}.recurrence-weekdays{display:flex;gap:var(--space-1);flex-wrap:wrap}.recurrence-monthly{margin-bottom:0}.recurrence-monthly.recurrence-hidden{display:none}.recurrence-monthly-stack{display:flex;flex-direction:column;gap:var(--space-2)}.recurrence-monthly-week{width:auto}.confirm-message-wrap{margin-bottom:var(--space-5)}.confirm-message{color:var(--text-secondary);line-height:var(--line-height-normal)}.review-intro{color:var(--text-secondary);font-size:var(--font-size-sm);margin:0 0 var(--space-4)}.review-intro--weekly{margin:var(--space-2) 0 var(--space-4)}.no-events-day{color:var(--text-secondary)}.loading--error{color:var(--accent-red)}.project-dashboard-desc{color:var(--text-secondary);margin-bottom:var(--space-4)}.pending-key-hint{position:fixed;bottom:var(--space-5);left:50%;transform:translateX(-50%);padding:var(--space-2) var(--space-4);background:var(--bg-card);color:var(--text-primary);border:var(--border-width) solid var(--border-color);border-radius:var(--radius-md);box-shadow:var(--shadow-brutal-md);z-index:10000;font-size:var(--font-size-sm);white-space:nowrap;animation:toastSlideIn .15s ease}.pending-key-hint-label{opacity:.7}.pending-key-hint kbd{background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--radius-xs);padding:.125rem .4rem;font-family:inherit;font-size:var(--font-size-sm)}.shortcuts-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:var(--overlay-color);display:flex;align-items:center;justify-content:center;z-index:3000}.shortcuts-overlay-panel{background:var(--bg-card);border-radius:var(--radius-md);padding:var(--space-5);max-width:600px;max-height:80vh;overflow-y:auto}.shortcuts-title{margin-top:0;margin-bottom:var(--space-4);border-bottom:1px solid var(--border-color);padding-bottom:var(--space-2)}.shortcuts-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-5)}.shortcuts-group-heading{color:var(--text-secondary);font-size:var(--font-size-sm);margin-bottom:var(--space-2)}.shortcuts-group-heading+.shortcut-row{margin-top:0}.shortcuts-group-heading-spaced{color:var(--text-secondary);font-size:var(--font-size-sm);margin-bottom:var(--space-2);margin-top:var(--space-3)}.shortcuts-close{margin-top:var(--space-5);text-align:center}.shortcut-row{display:flex;align-items:center;gap:var(--space-2);margin-bottom:var(--space-2)}.shortcut-row kbd{background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--radius-xs);padding:.25rem .5rem;font-family:inherit;font-size:var(--font-size-sm);min-width:1.5rem;text-align:center}.shortcut-row span{color:var(--text-secondary);font-size:var(--font-size-sm);margin-left:auto}.quick-add-syntax{font-size:var(--font-size-sm);color:var(--text-secondary);margin-top:var(--space-2);line-height:var(--line-height-relaxed)}.quick-add-syntax>span{margin-right:var(--space-3)}.quick-add-syntax kbd{font-size:.7rem;padding:.1rem .3rem;border:1px solid var(--border-color);border-radius:var(--radius-xs);background:var(--bg-secondary)}.virtual-scroller-wrapper{position:relative;width:100%}.virtual-scroller-spacer{height:0;width:100%}.meta-text{font-size:var(--font-size-sm);color:var(--text-muted)}.meta-text--secondary{color:var(--text-secondary)}.subtasks-empty{color:var(--text-secondary);text-align:center;padding:var(--space-4)}.subtask-linked-tag{color:var(--accent-color);font-size:var(--font-size-sm)}.task-actions-bar{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-top:var(--space-4);padding-top:var(--space-3);border-top:1px solid var(--border-color)}.loading--error{color:var(--accent-red)}.error-state--padded{padding:var(--space-4)}.event-cell--shrink{flex:0 0 auto;padding-right:0}.hr-soft{border:none;border-top:1px solid var(--border-color);margin:var(--space-2) 0}.card-badge--success{background:var(--accent-green);color:var(--text-on-accent)}.card-badge--warning{background:var(--accent-yellow)}.card-badge--info{background:var(--accent-blue);color:var(--text-on-accent)}.card-badge--danger{background:var(--accent-red);color:var(--text-on-accent)}.card-badge--neutral{background:var(--bg-secondary)}.empty-italic--muted{color:var(--text-muted);font-style:italic}.review-history-block{margin-top:var(--space-5);padding-top:var(--space-4);border-top:1px dashed var(--border-color)}.review-history-heading{font-size:var(--font-size-sm);color:var(--text-muted);margin-bottom:var(--space-3)}.email-attachment-row{display:flex;align-items:center;gap:var(--space-2);padding:.375rem 0}.email-attachment-size{font-size:var(--font-size-sm);color:var(--text-muted);flex-shrink:0}.email-attachments-block{margin-bottom:var(--space-3);padding:var(--space-2) var(--space-3);background:var(--bg-secondary);border-radius:var(--radius-sm);border:1px solid var(--border-color)}.email-attachments-heading{font-size:var(--font-size-sm);font-weight:600;color:var(--text-secondary);margin-bottom:var(--space-1)}.email-thread-count{color:var(--text-muted);font-size:var(--font-size-sm)}.email-subject-line{font-weight:600;font-size:1.1rem}.email-meta-line{font-size:var(--font-size-sm);color:var(--text-secondary);margin-top:var(--space-1)}.email-snoozed-tag{color:var(--accent-yellow)}.email-actions-bar{border-top:1px solid var(--border-color);padding-top:var(--space-4);margin-top:auto}.email-attachment-tag{margin-right:var(--space-2)}.email-draft-item{cursor:pointer;padding:var(--space-3)}.email-draft-meta{font-size:var(--font-size-sm);color:var(--text-secondary)}.label-existing-line{font-size:var(--font-size-sm);color:var(--text-secondary);margin-top:var(--space-1)}.search-no-results{padding:var(--space-5);text-align:center;color:var(--text-secondary)}.email-attachment-name{flex:1;min-width:0}.email-draft-subject{font-weight:500}.header-row{display:flex;align-items:center;padding:.75rem 1rem;border-bottom:1px solid var(--border-color);gap:.5rem}.header-row--tight{padding:.25rem 1rem}.header-label{width:80px;color:var(--text-secondary);font-size:.875rem;flex-shrink:0}.autocomplete-wrapper{position:relative;flex:1;background:0 0;border-radius:var(--radius-sm)}.autocomplete-wrapper:focus-within{background:var(--bg-secondary)}.body-container{flex:1;display:flex;flex-direction:column;overflow:hidden}.body-textarea{flex:1;min-height:12rem;background:var(--bg-card);border:none;color:var(--text-primary);font-size:.9375rem;font-family:inherit;padding:1rem;resize:vertical;outline:0;line-height:1.6}.body-textarea::placeholder{color:var(--text-muted)}.reply-indicator{display:none;color:var(--text-secondary);font-size:.8125rem;align-self:center}.compose-attachments{padding:.5rem 1rem;border-top:1px solid var(--border-color);background:var(--bg-secondary);font-size:.8125rem}.compose-attachment-item{padding:.25rem 0}.compose-attachment-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.compose-attachment-size{color:var(--text-muted);flex-shrink:0}.compose-attachment-remove{background:0 0;border:none;color:var(--accent-red);cursor:pointer;font-size:1rem;padding:0 .25rem}.compose-attachment-total{display:flex;gap:var(--space-2);align-items:baseline;padding-top:var(--space-2);margin-top:var(--space-1);font-size:var(--font-size-sm);color:var(--text-muted);border-top:1px dashed var(--border-color)}.compose-attachment-total.over-warn{color:var(--accent-yellow)}.compose-attachment-total.over-cap{color:var(--accent-red)}.compose-attachment-warn{font-style:italic}.about-info-list{display:grid;grid-template-columns:max-content 1fr;column-gap:var(--space-4);row-gap:var(--space-2);margin:var(--space-4) 0;font-size:var(--font-size-sm)}.about-info-list dt{font-weight:600;color:var(--text-secondary)}.about-info-list dd{margin:0;font-family:var(--font-mono)}.about-updater-note{margin-top:var(--space-4)}.filter-count{font-size:var(--font-size-sm);color:var(--text-muted);margin-right:var(--space-2);white-space:nowrap}.filter-count--capped{color:var(--accent-yellow);font-weight:600}.ui-mode-mobile #task-view-toggle{display:none}.swipe-peek{position:absolute;top:0;bottom:0;display:flex;align-items:center;padding:0 var(--space-3);font-size:var(--font-size-sm);font-weight:600;color:var(--text-on-accent);pointer-events:none;opacity:0;transition:opacity .1s linear;z-index:0}.swipe-peek--right{left:0;background:var(--accent-blue);justify-content:flex-start}.swipe-peek--left{right:0;background:var(--accent-blue);justify-content:flex-end}.swipe-peek--success{background:var(--accent-green)}.swipe-peek--warn{background:var(--accent-yellow);color:var(--text-primary)}.swipe-peek--danger{background:var(--accent-red)}.swipe-peek--ready{box-shadow:inset 0 0 0 2px var(--text-on-accent)}.email-item,.event-row-virtual,.task-row{position:relative;overflow:hidden}.attachment-item{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) 0;border-bottom:1px solid var(--border-color)}.attachment-icon{font-size:1.2rem}.attachment-meta{font-size:var(--font-size-sm);color:var(--text-muted)}.attachment-sync-warning{font-size:var(--font-size-sm);color:var(--text-muted)}.attachment-info{flex:1;min-width:0}.attachment-filename{font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.attachment-actions{display:flex;gap:var(--space-1)}.attachment-attach-row{margin-top:var(--space-4)}.link-task-item{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2);background:var(--bg-secondary);border-radius:var(--radius-sm);margin-bottom:var(--space-2);cursor:pointer}.link-task-item:hover{background:var(--bg-tertiary)}.link-task-project{font-size:var(--font-size-sm);color:var(--text-secondary)}.link-task-prompt{color:var(--text-secondary);margin-bottom:var(--space-4)}.link-task-desc{flex:1}.link-task-list{max-height:400px;overflow-y:auto}.form-actions--top-spaced{margin-top:var(--space-4)}.about-panel{text-align:center;padding:var(--space-4)}.about-title{font-family:var(--font-display);margin-bottom:var(--space-4)}.about-tagline{color:var(--text-secondary);margin-bottom:var(--space-2)}.about-version{color:var(--text-muted);font-size:var(--font-size-sm)}.welcome-panel{line-height:var(--line-height-relaxed)}.welcome-intro{color:var(--text-secondary);margin-bottom:var(--space-4)}.welcome-section{margin-bottom:var(--space-4)}.welcome-subhead{font-size:var(--font-size-md, .9rem);margin-bottom:var(--space-2)}.welcome-subhead--tight{margin-bottom:var(--space-1)}.welcome-step-stack{display:flex;flex-direction:column;gap:var(--space-2)}.welcome-tabs-list{color:var(--text-secondary);font-size:var(--font-size-sm);padding-left:var(--space-4);margin:0}.review-more-line{color:var(--text-muted);font-size:var(--font-size-sm);margin-top:var(--space-2)}.modal-attachments{font-size:var(--font-size-sm);margin-top:var(--space-1)}.account-row-info{flex:1}.account-row-actions{display:flex;align-items:center;gap:var(--space-2);margin-bottom:var(--space-2)}.account-row-quick{display:flex;gap:var(--space-2)}.account-row-quick .btn{flex:1}.account-list{margin-bottom:var(--space-4);max-height:400px;overflow-y:auto}.form-actions-spacer{flex:1}.oauth-block{margin-bottom:var(--space-5)}.oauth-block-title{font-weight:500;margin-bottom:var(--space-3)}.oauth-buttons{display:flex;flex-wrap:wrap;gap:var(--space-2)}.oauth-buttons .btn{flex:1;min-width:120px}.oauth-helptext{font-size:var(--font-size-sm);color:var(--text-secondary);margin-top:var(--space-2)}.imap-block-divider{border-top:var(--border-width-sm) solid var(--border-color);margin:var(--space-4) 0;padding-top:var(--space-4)}.imap-block-title{font-weight:500;margin-bottom:var(--space-3)}.test-conn-results{margin-bottom:var(--space-4)}.sync-results{margin-bottom:var(--space-4)}.sync-result-banner{padding:var(--space-3);background:var(--bg-secondary);border-radius:var(--radius-sm);margin-bottom:var(--space-2)}.sync-result-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-2);margin-bottom:var(--space-2)}.sync-result-tile{padding:var(--space-2);background:var(--bg-secondary);border-radius:var(--radius-sm)}.app-footer{background-color:var(--bg-card);border-top:var(--border-width) solid var(--border-color);padding:.75rem 1.5rem}.footer-content{max-width:var(--width-container);margin:0 auto;display:flex;justify-content:space-between;align-items:center}.ui-mode-desktop .keyboard-hints{display:flex;gap:1rem;font-size:.8rem;color:var(--text-muted)}kbd{display:inline-block;padding:.2rem .5rem;background-color:var(--bg-secondary);border:var(--border-width-sm) solid var(--border-color);border-radius:var(--radius-xs);font-family:var(--font-mono);font-size:.75rem;font-weight:700}.welcome-hint{color:var(--text-secondary);font-size:var(--font-size-sm);margin-bottom:var(--space-2)}.version{font-size:.75rem;color:var(--text-muted);font-weight:600}.empty-state{text-align:center;padding:3rem;color:var(--text-secondary)}.empty-state--compact{padding:2rem 1rem;font-size:var(--font-size-sm)}.empty-state--dashboard{padding:2rem 1rem}.empty-state--error{color:var(--accent-red)}.empty-state-icon{font-size:4rem;margin-bottom:1rem}.empty-state-text{font-size:1.1rem;font-weight:600;margin-bottom:1rem}.error-state{text-align:center;padding:2rem;color:var(--accent-red);background:color-mix(in srgb,var(--accent-red) 10%,var(--bg-card));border:var(--border-width-sm) solid var(--accent-red);border-radius:var(--radius-sm);font-weight:600}.view{display:block}.view.hidden{display:none}.filter-bar{display:flex;flex-wrap:wrap;gap:.75rem;margin-bottom:1.5rem;padding:1rem;background-color:var(--bg-card);border:var(--border-width) solid var(--border-color);border-radius:var(--radius-md);box-shadow:var(--shadow-offset) var(--shadow-offset) 0 var(--border-color)}.filter-group{display:flex;align-items:center;gap:.5rem}.filter-label{font-size:.8rem;font-weight:700;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em}.filter-select{padding:.5rem .75rem;border:var(--border-width-sm) solid var(--border-color);border-radius:var(--radius-sm);background-color:var(--bg-card);color:var(--text-primary);font-size:.875rem;font-weight:600}.filter-select:focus{outline:0;background-color:var(--accent-blue);color:var(--text-on-accent)}.filter-checkbox{display:flex;align-items:center;gap:.4rem;font-size:.875rem;font-weight:600;color:var(--text-primary);cursor:pointer}.filter-checkbox input[type=checkbox]{width:1rem;height:1rem;cursor:pointer}.btn-link{background:0 0;border:none;box-shadow:none;color:var(--text-secondary);font-size:.875rem;cursor:pointer;text-decoration:underline;padding:.5rem}.btn-link:hover{box-shadow:none;transform:none;color:var(--text-primary)}@media (min-width:1400px){.ui-mode-desktop .main-content{max-width:1600px}.ui-mode-desktop .cards-grid{grid-template-columns:repeat(auto-fill,minmax(380px,1fr))}.ui-mode-desktop .project-dashboard-grid{gap:2rem}.ui-mode-desktop .day-plan-sidebar{width:320px}.ui-mode-desktop .modal-container{max-width:640px}}@media (max-width:1024px){.ui-mode-desktop .saved-views-sidebar{width:180px}.ui-mode-desktop .day-plan-sidebar{width:240px}.ui-mode-desktop .project-dashboard-grid{grid-template-columns:1fr 1fr;gap:1rem}.ui-mode-desktop .project-dashboard-grid .dashboard-column:last-child{grid-column:span 2}.ui-mode-desktop .filter-bar{flex-wrap:wrap}.ui-mode-desktop .filter-actions{width:100%;justify-content:flex-end;margin-top:.5rem}}.ui-mode-mobile .tab-navigation{flex-wrap:wrap;gap:.5rem}.ui-mode-mobile .tab{flex:1 1 auto;min-width:calc(33% - .5rem);justify-content:center;padding:.625rem .75rem}.ui-mode-mobile .tab-label{display:none}.ui-mode-mobile .tab-icon{font-size:1.25rem}.ui-mode-mobile .kbd-hint{display:none}.ui-mode-mobile .cards-grid{grid-template-columns:1fr}.ui-mode-mobile .task-table{font-size:.85rem}.ui-mode-mobile .task-header-row,.ui-mode-mobile .task-row{grid-template-columns:1fr 80px 40px 80px}.ui-mode-mobile .task-header-row .task-cell:nth-child(n+5),.ui-mode-mobile .task-row .task-cell:nth-child(n+5){display:none}.ui-mode-mobile .filter-bar{flex-direction:column}.ui-mode-mobile .keyboard-hints{display:none}.ui-mode-mobile .page-title{font-size:1.5rem}.ui-mode-mobile .saved-views-sidebar{display:none}.ui-mode-mobile .day-plan-content{flex-direction:column}.ui-mode-mobile .day-plan-sidebar{width:100%;max-height:200px}.ui-mode-mobile .project-dashboard-grid{grid-template-columns:1fr}.ui-mode-mobile .project-dashboard-grid .dashboard-column:last-child{grid-column:span 1}.ui-mode-mobile .modal-container{width:95%;max-height:95vh}.ui-mode-mobile .bulk-actions-bar{flex-wrap:wrap}.ui-mode-mobile .bulk-select-all{width:100%;margin-top:.5rem}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.pagination-controls{display:flex;align-items:center;justify-content:center;gap:1rem;padding:1rem;margin-top:1rem;background:var(--bg-card);border:var(--border-width) solid var(--border-color);border-radius:var(--radius-md)}.pagination-info{font-weight:600;color:var(--text-secondary);font-size:.9rem}.pagination-controls .btn:disabled{opacity:.5;cursor:not-allowed}.btn:focus-visible,.card:focus-visible,.email-item:focus-visible,.event-row-virtual:focus-visible,.filter-select:focus-visible,.form-input:focus-visible,.form-select:focus-visible,.form-textarea:focus-visible,.modal-close:focus-visible,.saved-view-item:focus-visible,.snooze-option:focus-visible,.tab:focus-visible,.task-row:focus-visible,.timeline-item:focus-visible,.unscheduled-task:focus-visible{outline:3px solid var(--accent-blue);outline-offset:2px}.event-row,.task-row-clickable{cursor:pointer}.skip-link{position:absolute;top:-100px;left:0;background:var(--accent-blue);color:var(--text-on-accent);padding:.75rem 1.5rem;z-index:9999;font-weight:700;border:var(--border-width) solid var(--border-color);text-decoration:none}.skip-link:focus{top:0}.source-email-link{padding:.75rem;background:var(--bg-secondary);border-radius:var(--radius-sm);border-left:4px solid var(--accent-blue)}.thread-message{margin-bottom:1rem;padding:.75rem;background:var(--bg-secondary);border-radius:var(--radius-sm)}.thread-message-latest{border-left:3px solid var(--accent-blue)}.thread-message-header{display:flex;justify-content:space-between;margin-bottom:.5rem;font-size:.8rem;color:var(--text-secondary)}.thread-message-from{font-weight:700}.email-reader-body{white-space:pre-wrap;font-size:.9rem;line-height:1.6;color:var(--text-primary);word-wrap:break-word;overflow-wrap:break-word}.email-reader-body .email-link{color:var(--accent-blue);text-decoration:underline;cursor:pointer;word-break:break-all}.email-reader-body .email-link:hover{color:var(--accent-cyan)}.email-reader-body hr{border:none;border-top:2px solid var(--border-color);margin:1rem 0}.email-reader-quote{border-left:3px solid var(--text-muted);padding-left:1rem;margin:.5rem 0;color:var(--text-secondary);font-style:italic}.email-quote-toggle{display:inline-block;color:var(--text-muted);font-size:.8125rem;cursor:pointer;padding:.25rem 0;user-select:none}.email-quote-toggle:hover{color:var(--accent-blue)}.email-quote-block{border-left:3px solid var(--text-muted);padding-left:1rem;margin:.25rem 0 .5rem;color:var(--text-secondary)}.email-quote-block.hidden{display:none}.autocomplete-dropdown{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-sm);box-shadow:var(--shadow-brutal);z-index:100;max-height:200px;overflow-y:auto}.autocomplete-item{padding:.5rem .75rem;cursor:pointer;font-size:.875rem}.autocomplete-item.active,.autocomplete-item:hover{background:var(--bg-secondary)}.autocomplete-name{font-weight:500}.autocomplete-email{color:var(--text-secondary);margin-left:.25rem}.email-reader-container{display:flex;flex-direction:column;height:100%;min-height:0}.email-reader-header{margin-bottom:1rem;padding-bottom:.75rem;border-bottom:1px solid var(--border-color)}.email-sender-contact{margin-top:.5rem;padding:.4rem .5rem;background:var(--bg-tertiary);border-radius:4px}.email-sender-info{display:flex;flex-direction:column;flex:1;min-width:0}.email-sender-name{font-weight:600;font-size:.85rem}.email-sender-company{font-size:.75rem;color:var(--text-secondary)}.email-reader-thread{flex:1;overflow-y:auto;margin-bottom:1rem;min-height:0}.dropdown{position:relative;display:inline-block}.dropdown-menu{display:none;position:absolute;bottom:100%;left:0;margin-bottom:.25rem;background:var(--bg-card);border:var(--border-width) solid var(--border-color);border-radius:var(--radius-md);box-shadow:var(--shadow-brutal-md);min-width:160px;z-index:100}.dropdown-menu.show{display:block}.dropdown-item{display:block;width:100%;padding:.5rem 1rem;text-align:left;background:0 0;border:none;cursor:pointer;font-size:.875rem;color:var(--text-primary)}.dropdown-item:hover{background:var(--bg-secondary)}.dropdown-item:first-child{border-radius:var(--radius-md) var(--radius-md) 0 0}.dropdown-item:last-child{border-radius:0 0 var(--radius-md) var(--radius-md)}.context-menu{position:fixed;z-index:10000;min-width:180px;max-width:280px;background:var(--bg-card);border:var(--border-width) solid var(--border-color);border-radius:var(--radius-sm);box-shadow:var(--shadow-brutal-lg);padding:.25rem 0;display:none}.context-menu.visible{display:block}.context-menu-item{display:flex;align-items:center;gap:.75rem;padding:.5rem 1rem;font-size:.875rem;font-weight:500;color:var(--text-primary);cursor:pointer;border:none;background:0 0;width:100%;text-align:left;transition:background .1s}.context-menu-item:focus,.context-menu-item:hover{background:var(--accent-blue);color:var(--text-on-accent);outline:0}.context-menu-item:focus-visible{outline:2px solid var(--accent-blue);outline-offset:-2px}.context-menu-header{font-size:.7rem;font-weight:700;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em;padding:.5rem 1rem .25rem}.context-menu-item-icon{width:1.25rem;text-align:center;flex-shrink:0}.context-menu-item-label{flex:1}.context-menu-item-subtitle{display:block;font-size:.7rem;color:var(--text-secondary);font-weight:400}.context-menu-item-shortcut{font-size:.75rem;color:var(--text-muted);font-family:var(--font-mono)}.context-menu-item--danger{color:var(--accent-red)}.context-menu-item--danger:hover{background:var(--accent-red);color:var(--text-on-accent)}.context-menu-separator{height:2px;background:var(--border-color);margin:.25rem .5rem}.context-menu-hint{padding:.35rem 1rem;font-size:.7rem;color:var(--text-muted);border-top:1px solid var(--border-color);margin-top:.25rem}::-webkit-scrollbar{width:12px;height:12px}::-webkit-scrollbar-track{background:var(--bg-secondary);border-left:2px solid var(--border-color)}::-webkit-scrollbar-thumb{background:var(--text-muted);border:var(--border-width-sm) solid var(--border-color);border-radius:var(--radius-sm)}::-webkit-scrollbar-thumb:hover{background:var(--text-secondary)}.loading{display:flex;justify-content:center;align-items:center;height:200px;color:var(--text-secondary);font-family:var(--font-heading)}.skeleton-shimmer{display:flex;flex-direction:column;gap:1rem;padding:1rem}.skeleton-shimmer .skeleton-row{display:flex;align-items:center;gap:.75rem;padding:.75rem;background:var(--bg-card);border-radius:var(--radius-md);border:var(--border-width) solid var(--border-color)}.skeleton-shimmer .skeleton-avatar{width:36px;height:36px;border-radius:var(--radius-full);background:linear-gradient(90deg,var(--bg-secondary) 25%,var(--bg-tertiary) 50%,var(--bg-secondary) 75%);background-size:200% 100%;animation:skeleton-pulse 1.5s ease-in-out infinite;flex-shrink:0}.skeleton-shimmer .skeleton-lines{flex:1;display:flex;flex-direction:column;gap:.4rem}.skeleton-shimmer .skeleton-line{height:.75rem;border-radius:var(--radius-sm);background:linear-gradient(90deg,var(--bg-secondary) 25%,var(--bg-tertiary) 50%,var(--bg-secondary) 75%);background-size:200% 100%;animation:skeleton-pulse 1.5s ease-in-out infinite}.skeleton-shimmer .skeleton-line.short{width:40%}.skeleton-shimmer .skeleton-line.medium{width:65%}.skeleton-shimmer .skeleton-line.long{width:90%}@keyframes skeleton-pulse{0%{background-position:200% 0}100%{background-position:-200% 0}}@keyframes spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}.spinner{display:inline-block;width:1em;height:1em;border:2px solid currentColor;border-top-color:transparent;border-radius:var(--radius-full);animation:spin .8s linear infinite}.btn-loading{position:relative;pointer-events:none;opacity:.8}.btn-loading .btn-text{visibility:hidden}.btn-loading::after{content:'';position:absolute;left:50%;top:50%;width:1em;height:1em;margin-left:-.5em;margin-top:-.5em;border:2px solid currentColor;border-top-color:transparent;border-radius:var(--radius-full);animation:spin .8s linear infinite}.hidden{display:none!important}.project-dashboard-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1.5rem;flex:1;min-height:0}.dashboard-column{background:var(--bg-card);border:var(--border-width) solid var(--border-color);padding:1rem;display:flex;flex-direction:column;overflow:hidden}.dashboard-column-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem;padding-bottom:.5rem;border-bottom:2px solid var(--border-color)}.dashboard-column-header h3{margin:0;font-size:1rem;font-family:var(--font-heading);font-weight:700}.dashboard-list{flex:1;overflow-y:auto}.dashboard-item-title{font-weight:600;margin-bottom:.25rem}.dashboard-item-meta{font-size:.75rem;color:var(--text-secondary)}.task-badges{display:flex;gap:.25rem;margin-top:.25rem}.task-badge{font-size:.65rem;padding:.15rem .4rem;border:var(--border-width-sm) solid var(--border-color);background:var(--bg-secondary);color:var(--text-primary);font-weight:600}.task-badge.has-items{background:var(--accent-blue);color:var(--text-on-accent)}.task-badge.recurrence{background:var(--accent-purple);color:var(--text-on-accent)}.task-row-clickable{cursor:pointer;transition:background .1s}.task-row-clickable:hover{background:var(--bg-secondary)}.progress-bar-container{width:100%;height:10px;background:var(--bg-secondary);border:var(--border-width-sm) solid var(--border-color);overflow:hidden}.progress-bar{height:100%;background:var(--accent-green);transition:width .3s ease}.no-subtasks{color:var(--text-secondary);font-size:.875rem}#day-plan-view{display:flex;flex-direction:column;flex:1;min-height:0}#day-plan-view .page-header{flex-shrink:0}.day-plan-nav{display:flex;align-items:center;gap:.5rem}.day-plan-date-picker{padding:.5rem;background:var(--bg-card);border:var(--border-width) solid var(--border-color);border-radius:var(--radius-sm);color:var(--text-primary);font-family:var(--font-body)}.day-plan-date-display{font-size:1.25rem;font-weight:700;margin-left:1rem;font-family:var(--font-heading);line-height:1}.day-plan-content{flex:1;min-height:0;display:flex;gap:1.5rem}.day-plan-main{flex:1;min-height:0;display:flex;flex-direction:column;background:var(--bg-card);border:var(--border-width) solid var(--border-color);border-radius:var(--radius-md);overflow:hidden;box-shadow:var(--shadow-offset) var(--shadow-offset) 0 var(--border-color)}.day-plan-sidebar{width:280px;flex-shrink:0;display:flex;flex-direction:column;background:var(--bg-card);border:var(--border-width) solid var(--border-color);border-radius:var(--radius-md);overflow:hidden;box-shadow:var(--shadow-offset) var(--shadow-offset) 0 var(--border-color)}.sidebar-header{padding:1rem;border-bottom:2px solid var(--border-color);flex-shrink:0}.sidebar-header h3{margin:0;font-size:1rem;font-family:var(--font-heading);font-weight:700}.sidebar-task-list{flex:1;overflow-y:auto;padding:.75rem;display:flex;flex-direction:column;gap:.5rem}.timeline-container{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden}.timeline-scroll-area{position:relative;padding:.5rem 1rem 3rem .5rem;min-height:min-content}#timeline-slots{position:relative}#timeline-items{position:absolute;top:.5rem;left:.5rem;right:1rem;bottom:0;pointer-events:none}#timeline-items .timeline-item{pointer-events:auto}.timeline-slot{display:grid;grid-template-columns:50px 1fr;height:var(--timeline-slot-h,12px);position:relative}.timeline-slot.hour-start .timeline-slot-area{border-top:1px dashed color-mix(in srgb,var(--border-color) 50%,transparent)}.timeline-time{font-size:.7rem;color:var(--text-secondary);padding-right:.5rem;text-align:right;font-weight:500;transform:translateY(-.5em)}.timeline-hint{text-align:center;color:var(--text-secondary);font-size:.85rem;font-weight:600;margin:0 0 .5rem;padding:.35rem .75rem;background:var(--bg-secondary);border-radius:var(--radius-sm)}.timeline-slot-area{position:relative;cursor:grab}.timeline-slot-area:hover{background:var(--bg-secondary)}.timeline-item{position:absolute;left:60px;right:10px;border:var(--border-width) solid var(--border-color);border-radius:var(--radius-sm);padding:.25rem .5rem;overflow:hidden;cursor:grab;z-index:10;transition:opacity .15s ease,box-shadow .15s ease}.timeline-item.task{background:var(--accent-green);color:var(--text-primary)}.timeline-item.event{background:var(--accent-blue);color:var(--text-on-accent)}.timeline-item.block{opacity:.85}.timeline-item.block-free_time{background:var(--accent-cyan);color:var(--text-primary)}.timeline-item.block-personal{background:var(--accent-yellow);color:var(--text-primary)}.timeline-item.block-vacation{background:var(--accent-purple);color:var(--text-on-accent)}.timeline-item.block-focus{background:var(--accent-red);color:var(--text-on-accent)}.timeline-item.conflict{box-shadow:0 0 0 3px var(--accent-red)}.timeline-item.selected{box-shadow:0 0 0 3px var(--bg-card),0 0 0 6px var(--accent-blue)}.timeline-item-title{font-weight:600;font-size:.75rem;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.timeline-item-meta{font-size:.65rem;opacity:.85;line-height:1.1}.timeline-current-time{position:absolute;left:50px;right:0;height:2px;background:var(--accent-red);z-index:20;pointer-events:none}.timeline-current-time::before{content:'';position:absolute;left:-4px;top:-3px;width:8px;height:8px;background:var(--accent-red);border-radius:var(--radius-full)}.timeline-paint-preview{position:absolute;left:70px;right:10px;background:var(--accent-blue);opacity:.4;border:var(--border-width-sm) dashed var(--border-color);border-radius:var(--radius-sm);z-index:5;pointer-events:none}.timeline-item.dragging{cursor:grabbing;opacity:.8;z-index:100;box-shadow:var(--shadow-brutal-md,4px 4px 0 var(--border-color))}.timeline-container.is-painting{cursor:crosshair;user-select:none}.timeline-container.is-painting .timeline-slot-area{pointer-events:none}.unscheduled-task{padding:.75rem;background:var(--bg-card);border:var(--border-width-sm) solid var(--border-color);border-left:6px solid var(--accent-green);border-radius:var(--radius-sm);cursor:grab;transition:background-color .1s}.unscheduled-task:hover{background:var(--bg-secondary)}.unscheduled-task.priority-high{border-left-color:var(--accent-red)}.unscheduled-task.priority-medium{border-left-color:var(--accent-yellow)}.unscheduled-task.priority-low{border-left-color:var(--accent-green)}.unscheduled-task-title{font-weight:600;margin-bottom:.25rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.unscheduled-task-meta{font-size:.75rem;color:var(--text-secondary)}.empty-unscheduled{text-align:center;color:var(--text-secondary);padding:2rem 1rem}.shortcut-hint-btn{font-family:var(--font-mono, monospace);font-weight:700;min-width:2rem;padding:.5rem}.settings-section h3{font-size:1rem;color:var(--text-primary)}.settings-section .form-hint{font-size:.75rem;color:var(--text-secondary)}.settings-overlay{position:fixed;inset:0;z-index:70;display:flex;align-items:center;justify-content:center;padding:var(--space-4)}.settings-overlay.hidden{display:none}.settings-overlay-backdrop{position:absolute;inset:0;background:rgba(0,0,0,.35)}.settings-overlay-card{position:relative;background:var(--bg-primary);border:1px solid var(--border-color);border-radius:var(--radius-lg,8px);box-shadow:0 12px 40px rgba(0,0,0,.25);width:min(960px,100%);height:min(720px,100%);max-height:calc(100vh - 2 * var(--space-4));overflow:hidden;display:flex;flex-direction:column}.settings-overlay-card.hidden{display:none}.ui-mode-mobile .settings-overlay{padding:0}.ui-mode-mobile .settings-overlay-card{width:100%;height:100%;max-height:100%;border-radius:0;border:none}.settings-page-layout{display:flex;min-height:100%}.settings-sidebar{width:200px;flex-shrink:0;border-right:1px solid var(--border-color);padding:1.5rem 0;display:flex;flex-direction:column;gap:.25rem}.settings-nav-items{display:flex;flex-direction:column;gap:.125rem}.settings-nav-item{background:0 0;border:none;text-align:left;padding:.5rem 1.25rem;font-size:.875rem;color:var(--text-secondary);cursor:pointer;border-radius:0;border-left:2px solid transparent}.settings-nav-item:hover{background:var(--bg-hover);color:var(--text-primary)}.settings-nav-item.active{color:var(--text-primary);font-weight:600;border-left-color:var(--accent-primary);background:var(--bg-secondary)}.settings-content{flex:1;padding:1.5rem 2rem;max-width:640px;overflow-y:auto}.contact-header-card{display:flex;align-items:center;gap:1.25rem;margin-bottom:1.5rem}.contact-info-section{display:flex;flex-direction:column;gap:.375rem;margin-bottom:1.5rem;padding:1rem}.contact-info-item{font-size:.875rem}.contact-dashboard-summary{display:flex;gap:1.5rem;margin-bottom:1.5rem}.contact-summary-stat{display:flex;flex-direction:column;align-items:center;padding:.75rem 1.25rem;background:var(--bg-secondary);border-radius:var(--radius-md);min-width:80px}.contact-summary-count{font-size:1.5rem;font-weight:700;color:var(--text-primary)}.contact-summary-label{font-size:.75rem;color:var(--text-secondary);margin-top:.25rem}.contact-timeline{display:flex;flex-direction:column;gap:.25rem}.contact-timeline-item{padding:.5rem .75rem;border-radius:var(--radius-sm);cursor:pointer;font-size:.875rem}.contact-timeline-item:hover{background:var(--bg-hover)}.contact-timeline-icon{flex-shrink:0;width:2rem;text-align:center;font-size:.8rem}.contact-timeline-title{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.contact-timeline-date{flex-shrink:0;font-size:.75rem;color:var(--text-secondary)}.address-highlight-mirror{position:absolute;top:0;left:0;right:0;bottom:0;pointer-events:none;white-space:nowrap;overflow:hidden;z-index:0;display:flex;align-items:center}.addr-malformed{color:var(--accent-red)}.addr-contact{color:var(--accent-blue)}.addr-verified{color:var(--accent-green)}.addr-ghost{color:var(--text-muted);opacity:.5}.sync-indicator{background:0 0;border:none;cursor:pointer;padding:.25rem .5rem;border-radius:var(--radius-sm);transition:background var(--transition-fast)}.sync-indicator:hover{background:var(--bg-hover)}.sync-dot{width:8px;height:8px;border-radius:var(--radius-full);background:var(--text-muted);transition:background var(--transition-slow);flex-shrink:0}.sync-dot.connected{background:var(--accent-green)}.sync-dot.syncing{background:var(--accent-blue);animation:sync-pulse 1s infinite}.sync-dot.warn{background:var(--accent-yellow);border-radius:0;transform:rotate(45deg)}.sync-dot.error{background:var(--accent-red);border-radius:0}.sync-label{font-size:var(--font-size-sm);color:var(--text-secondary);white-space:nowrap}.ui-mode-mobile .sync-label{display:none}@keyframes sync-pulse{0%,100%{opacity:1}50%{opacity:.4}}.snooze-options{display:flex;flex-direction:column;gap:.5rem}.snooze-option{display:flex;justify-content:space-between;align-items:center;padding:.75rem 1rem;background:var(--bg-secondary);border:var(--border-width-sm) solid var(--border-color);color:var(--text-primary);cursor:pointer;transition:background-color .1s;text-align:left;width:100%}.snooze-option:hover{background:var(--accent-blue);color:var(--text-on-accent)}.snooze-option-label{font-weight:600}.snooze-option-time{font-size:.75rem;color:var(--text-secondary)}.snooze-option:hover .snooze-option-time{color:var(--text-on-accent)}.snooze-custom{margin-top:.5rem;padding-top:.5rem;border-top:2px solid var(--border-color)}.snooze-badge{display:inline-block;font-size:.65rem;padding:.15rem .4rem;border:var(--border-width-sm) solid var(--border-color);background:var(--accent-yellow);color:var(--text-primary);font-weight:700;margin-top:.25rem}.contact-badge{display:inline-block;font-size:.65rem;padding:.15rem .4rem;border:var(--border-width-sm) solid var(--border-color);background:var(--accent-color);color:var(--bg-primary);font-weight:700;margin-top:.25rem}.bulk-checkbox{width:18px;height:18px;cursor:pointer;accent-color:var(--accent-blue);border:var(--border-width-sm) solid var(--border-color)}.task-actions-cell{text-align:right;white-space:nowrap;display:flex;align-items:center;justify-content:flex-end;gap:.5rem}.task-actions-cell .bulk-checkbox{margin-right:.5rem}.kebab-btn{font-size:1.1rem;padding:.2rem .4rem;border-radius:var(--radius-sm);color:var(--text-secondary);opacity:0;transition:opacity .15s ease}.email-item:focus-within .kebab-btn,.email-item:hover .kebab-btn,.event-row-virtual:focus-within .kebab-btn,.event-row-virtual:hover .kebab-btn,.task-row:focus-within .kebab-btn,.task-row:hover .kebab-btn{opacity:1}.kebab-btn:hover{background:var(--bg-hover)}.task-recurrence{font-size:.85rem;color:var(--text-secondary)}.task-due{white-space:nowrap}.bulk-actions-bar{display:flex;align-items:center;gap:.5rem;padding:.75rem 1rem;background:var(--accent-blue);color:var(--text-on-accent);border:var(--border-width) solid var(--border-color);box-shadow:var(--shadow-offset) var(--shadow-offset) 0 var(--border-color);margin-bottom:1rem}.bulk-actions-bar.hidden{display:none}.bulk-count{font-weight:700;margin-right:1rem;font-family:var(--font-heading)}.bulk-actions-bar .btn{background:var(--bg-card);border:var(--border-width-sm) solid var(--border-color);color:var(--text-primary)}.bulk-actions-bar .btn:hover{background:var(--bg-secondary)}.bulk-select-all{margin-left:auto}.email-checkbox-cell{padding:.75rem .5rem;display:flex;align-items:center}.email-item-with-checkbox{display:flex;align-items:flex-start}.email-item-with-checkbox .email-content{flex:1}.time-block-form{display:flex;flex-direction:column;gap:1rem}.time-block-quick-options{display:grid;grid-template-columns:repeat(3,1fr);gap:.5rem}.time-block-quick-btn.selected{background:var(--accent-blue);color:var(--text-on-accent);box-shadow:inset 0 0 0 2px var(--border-color)}.duration-presets{display:flex;gap:.5rem;flex-wrap:wrap}.duration-preset{padding:.35rem .75rem;background:var(--bg-secondary);border:var(--border-width-sm) solid var(--border-color);color:var(--text-primary);cursor:pointer;font-size:.75rem;font-weight:600;transition:background-color .1s}.duration-preset:hover{background:var(--bg-tertiary)}.duration-preset.selected{background:var(--accent-blue);color:var(--text-on-accent)}.conflict-warning{padding:.75rem;background:var(--accent-red);border:var(--border-width) solid var(--border-color);color:var(--text-on-accent);font-size:.875rem;font-weight:600;margin-top:.5rem}.app-body{display:flex;flex:1;min-height:0;overflow:hidden}.app-body .main-content{flex:1;min-width:0;display:flex;flex-direction:column;overflow-x:visible;overflow-y:auto}#emails-view,#events-view,#projects-view,#tasks-view{padding-bottom:2.5rem}#tasks-view{display:flex;flex-direction:column;flex:1;min-height:0}#tasks-view .bulk-actions-bar,#tasks-view .filter-bar,#tasks-view .page-header{flex-shrink:0}#events-view{display:flex;flex-direction:column;flex:1;min-height:0}#events-view .page-header{flex-shrink:0}#emails-view{display:flex;flex-direction:column;flex:1;min-height:0}.email-filter-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto auto;gap:var(--space-2);align-items:center}.email-filter-row>.form-input,.email-filter-row>.form-select{width:100%;min-width:0}.email-filter-row>.form-select{width:9rem}.contacts-filter-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:var(--space-2);align-items:center}.contacts-filter-row>.form-input{width:100%;min-width:0}.contacts-filter-row>.filter-select{width:9rem;min-width:0}.work-hours-row{display:grid;grid-template-columns:auto auto auto;gap:var(--space-2);align-items:center}.work-hours-row>.form-select{width:auto}#emails-view .bulk-actions-bar,#emails-view .page-header{flex-shrink:0}.ui-mode-desktop .saved-views-sidebar{width:200px;flex-shrink:0;background:var(--bg-card);border-right:var(--border-width) solid var(--border-color);display:flex;flex-direction:column;overflow:hidden}.sidebar-section{display:flex;flex-direction:column;flex:1;min-height:0}.sidebar-section-header{display:flex;justify-content:space-between;align-items:center;padding:.75rem 1rem;font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--text-secondary);border-bottom:2px solid var(--border-color);background:var(--bg-secondary)}.btn-icon{background:0 0;border:none;color:var(--text-muted);cursor:pointer;padding:.25rem;font-size:.875rem;line-height:1}.btn-icon:hover{color:var(--text-primary)}.pinned-views-list{flex:1;overflow-y:auto;padding:.5rem}.sidebar-empty{text-align:center;padding:1.5rem .5rem;color:var(--text-muted);font-size:.8rem}.saved-view-item{display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem;margin-bottom:.5rem;background:var(--bg-card);border:var(--border-width-sm) solid var(--border-color);border-radius:var(--radius-sm);cursor:pointer;font-size:.85rem;font-weight:600;color:var(--text-primary);box-shadow:var(--shadow-offset) var(--shadow-offset) 0 var(--border-color);transition:transform .15s ease,box-shadow .15s ease,background-color .15s ease,color .15s ease}.saved-view-item:hover{background:var(--accent-blue);color:var(--text-on-accent)}.saved-view-item.active{background:var(--accent-blue);color:var(--text-on-accent);box-shadow:inset 0 0 0 2px var(--border-color)}.saved-view-item .view-icon{font-size:.75rem}.saved-view-item .view-name{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.saved-view-item .view-actions{opacity:0;transition:opacity .1s}.saved-view-item:hover .view-actions{opacity:1}.filter-actions{display:flex;gap:.5rem;margin-left:auto}.avatar{width:40px;height:40px;min-width:40px;border-radius:50%;background-color:var(--accent-blue);color:var(--text-on-accent);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:.85rem;font-family:var(--font-heading);border:var(--border-width-sm) solid var(--border-color);flex-shrink:0}.avatar--sm{width:32px;height:32px;min-width:32px;font-size:.75rem;border:none}.avatar--lg{width:60px;height:60px;min-width:60px;font-size:1.2rem}.avatar--unknown{background:var(--bg-secondary);color:var(--text-secondary)}.contact-card .card-header{display:flex;align-items:center}.contact-nickname{display:block;font-size:.85rem;color:var(--text-secondary);font-style:italic}.contact-company{display:block;font-size:.85rem;color:var(--text-secondary)}.contact-email{font-size:.85rem;color:var(--text-secondary)}.contact-detail .detail-row{margin-bottom:.5rem;font-size:.9rem}.contact-detail .contact-info-section{margin-bottom:1rem;padding-bottom:1rem;border-bottom:1px solid var(--border-light)}.contact-detail .contact-notes{margin-bottom:1.5rem}.contact-detail .contact-notes p{margin-top:.25rem;white-space:pre-wrap;color:var(--text-secondary)}.sub-collection{margin-bottom:1.25rem}.sub-collection-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.sub-collection-header h4{margin:0;font-size:.95rem;font-weight:600}.sub-item{display:flex;justify-content:space-between;align-items:center;padding:.4rem 0;border-bottom:1px solid var(--border-light);font-size:.9rem}.sub-item:last-child{border-bottom:none}.sub-empty{font-size:.85rem;color:var(--text-secondary);font-style:italic;padding:.25rem 0}.edit-sub-collections{border-top:1px solid var(--border-color);padding-top:1rem;margin-bottom:.5rem}.edit-sub-section{margin-bottom:.75rem}.edit-sub-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.25rem}.sub-item-compact{font-size:.85rem;color:var(--text-secondary);padding:.125rem 0;display:flex;align-items:center;gap:var(--space-2);justify-content:space-between}.sub-item-actions{display:inline-flex;gap:var(--space-1);flex-shrink:0}.reminder-options{display:flex;flex-wrap:wrap;gap:var(--space-2) var(--space-4);margin-top:var(--space-2)}.reminder-option{display:inline-flex;align-items:center;gap:var(--space-2);font-size:var(--font-size-sm);color:var(--text-secondary);cursor:pointer}.task-drawer{position:fixed;top:0;right:0;bottom:0;width:min(480px,100vw);background:var(--bg-primary);border-left:1px solid var(--border-color);box-shadow:-4px 0 18px rgba(0,0,0,.18);transform:translateX(100%);transition:transform 180ms ease-out;z-index:60;display:flex;flex-direction:column;overflow:hidden}.task-drawer.visible{transform:translateX(0)}.task-drawer-header{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--border-color);background:var(--bg-secondary);flex-shrink:0}.task-drawer-title{flex:1;margin:0;font-size:var(--font-size-lg, 1.05rem);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.task-drawer-close{flex-shrink:0}.task-drawer-actions{display:flex;gap:var(--space-2);flex-shrink:0}.task-drawer-content{flex:1;overflow-y:auto;padding:var(--space-4)}.task-row--active{background:var(--bg-accent,var(--bg-secondary));box-shadow:inset 3px 0 0 var(--accent-color,var(--text-primary))}.ui-mode-mobile .task-drawer{width:100vw;border-left:none}@media print{.btn,.card-badge,.context-menu,.filter-bar,.focus-section .btn,.focus-slot .btn,.header,.keyboard-hints,.modal-overlay,.pagination,.review-actions-grid,.sidebar,.tab-badge,.tab-nav,.tab-status-dot,.tabs,.toast,.virtual-scroller-spacer{display:none!important}body{background:#fff;color:#000}.main-content,.weekly-review-content{margin:0;padding:0;max-width:100%;width:100%}.view{padding:0}a{color:#000;text-decoration:underline}.data-table,.task-table{border:1px solid #333;box-shadow:none}.data-table{page-break-inside:avoid}.data-table td,.data-table th{border:1px solid #ccc;padding:.5rem;display:table-cell!important}.data-table tbody tr:hover,.task-row:hover{background:0 0}.task-list-container{height:auto!important;overflow:visible!important}.task-header-row,.task-row{grid-template-columns:1fr 100px 40px 80px 60px 80px 60px!important}.task-header-row .task-cell,.task-row .task-cell{display:block!important;border:1px solid #ccc;padding:.25rem .5rem}.view-header{page-break-after:avoid}.event-item,.focus-slot,.project-health,.reflection-prompt,.review-card,.weekly-review-content,body{background:#fff!important;color:#000!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}.review-card{border:1px solid #ccc!important;box-shadow:none!important;page-break-inside:avoid;margin-bottom:1rem}.focus-slot{border:1px solid #999!important}.focus-slot.primary{border:2px solid #f7d154!important;background:#fffbea!important}.review-grid{display:block!important}.review-card{display:inline-block;vertical-align:top;width:48%;margin-right:2%}.focus-section.full-width,.reflection-section,.week-timeline,.week-timeline-events{width:100%!important;display:block!important}.weekly-review-header{border-bottom:2px solid #333;padding-bottom:1rem;margin-bottom:1.5rem}.week-dates{font-size:1.5rem;font-weight:700}.day-dot{-webkit-print-color-adjust:exact;print-color-adjust:exact}.day-dot.completed{background:#5cb85c!important}.day-dot.event{background:#9b59b6!important}.day-dot.overdue{background:#d9534f!important}.project-health{border-left:4px solid #337ab7!important}.project-health.warning{border-left-color:#f7d154!important}.project-health.danger{border-left-color:#d9534f!important}.focus-grid{display:flex!important;gap:1rem}.focus-slot{flex:1}.reflection-prompts{display:flex!important;gap:1rem}.reflection-prompt{flex:1}.prompt-input{border:1px solid #ccc!important;min-height:80px}.focus-section{page-break-before:auto}.reflection-section{page-break-before:always}}.weekly-review-content{max-width:900px;margin:0 auto;padding:1rem}.weekly-review-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem;padding-bottom:1rem;border-bottom:var(--border-width-sm) solid var(--border-color)}.week-dates{font-family:var(--font-heading);font-size:1.25rem;font-weight:700;color:var(--text-primary)}.review-status{padding:.25rem .75rem;border-radius:var(--radius-xs);font-size:.875rem;font-weight:600;border:var(--border-width-sm) solid var(--border-color)}.review-status.completed{background:var(--accent-green);color:var(--text-on-accent)}.review-status.pending{background:var(--accent-yellow);color:var(--text-primary)}.review-status.unreviewed{background:var(--bg-secondary);color:var(--text-muted)}.event-time{font-size:.875rem;font-weight:600;color:var(--text-muted);min-width:80px}.focus-section{background:linear-gradient(135deg,var(--bg-card) 0,color-mix(in srgb,var(--accent-yellow) 15%,var(--bg-card)) 100%)}.tab-badge{display:inline-block;width:8px;height:8px;background:var(--accent-red);border-radius:var(--radius-full);margin-left:.5rem;vertical-align:middle;animation:pulse-badge 2s infinite}@keyframes pulse-badge{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.6;transform:scale(.8)}}.tab-status-dot{width:8px;height:8px;border-radius:50%;display:inline-block;margin-left:.5rem;vertical-align:middle;transition:background-color .3s ease}.tab-status-dot.status-none{display:none}.tab-status-dot.status-green{background-color:var(--accent-green)}.tab-status-dot.status-yellow{background-color:var(--accent-yellow);animation:pulse-badge 2s ease-in-out infinite}.tab-status-dot.status-red{background-color:var(--accent-red);animation:pulse-badge 1.5s ease-in-out infinite}.review-grid{display:grid;grid-template-columns:1fr 1fr;gap:1.5rem;max-width:1200px;margin:0 auto}.review-card{padding:1.5rem}.review-card .card-header{align-items:center;padding-bottom:.75rem;border-bottom:var(--border-width-sm) solid var(--bg-secondary)}.review-card .card-title{display:flex;align-items:center;gap:.5rem}.review-card .card-icon{font-size:1.25rem}.review-card .card-badge{font-size:.8rem;padding:.25rem .75rem;border-radius:var(--radius-md);font-weight:600}.week-timeline{grid-column:1/-1}.timeline-visual{display:flex;gap:.5rem;margin-top:1rem}.timeline-day{flex:1;text-align:center;padding:.75rem .5rem;background:var(--bg-secondary);border-radius:var(--radius-md);border:1px solid var(--border-color);position:relative}.timeline-day.today{background:var(--accent-blue);color:var(--text-on-accent);border-width:2px;font-weight:700}.timeline-day.past{opacity:.7}.timeline-day.future{background:var(--bg-card)}.timeline-day .day-name{font-size:.7rem;font-weight:600;text-transform:uppercase;color:var(--text-muted)}.timeline-day .day-number{font-size:1.1rem;font-weight:700}.day-dots{display:flex;justify-content:center;gap:3px;margin-top:.5rem;min-height:8px}.day-dot{width:8px;height:8px;border-radius:var(--radius-full)}.day-dot.task{background:var(--accent-blue)}.day-dot.event{background:var(--accent-purple)}.day-dot.completed{background:var(--accent-green)}.day-dot.overdue{background:var(--accent-red)}.day-dot.vacation-off{background:var(--text-muted);opacity:.5;width:12px;height:4px;border-radius:2px}.day-events{display:flex;flex-direction:column;gap:2px;margin-top:.5rem;text-align:left}.day-event{font-size:.6rem;line-height:1.3;padding:1px 4px;border-left:2px solid var(--accent-purple);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--text-secondary)}.day-event .event-time{font-size:.55rem;font-weight:600;color:var(--accent-purple);margin-right:2px;min-width:auto}.day-event-more{font-size:.55rem;color:var(--text-muted);padding:1px 4px;font-style:italic}.week-timeline-events{grid-column:1/-1}.timeline-events-day{margin-bottom:.75rem}.timeline-events-day:last-child{margin-bottom:0}.timeline-events-day-label{font-family:var(--font-heading);font-size:.8rem;font-weight:700;color:var(--text-secondary);margin-bottom:.25rem;text-transform:uppercase}.vacation-toggles-section{margin-top:1rem;padding-top:1rem;border-top:2px solid var(--border-color)}.vacation-toggles-section h3{margin:0 0 .75rem 0;font-size:.9rem;font-family:var(--font-heading);font-weight:700}.vacation-toggles{display:flex;gap:.5rem}.vacation-toggle{width:2.5rem;height:2.5rem;border-radius:var(--radius-sm);border:var(--border-width) solid var(--border-color);background:var(--bg-secondary);font-family:var(--font-heading);font-weight:700;font-size:.8rem;cursor:pointer;transition:background var(--transition-fast),color var(--transition-fast),border-color var(--transition-fast);display:flex;align-items:center;justify-content:center}.vacation-toggle:hover{background:var(--bg-hover)}.vacation-toggle.active{background:var(--accent-purple);color:var(--text-on-accent);border-color:var(--accent-purple)}.timeline-day.vacation{opacity:.5}.timeline-day.vacation .day-name{text-decoration:line-through}.vacation-day-banner{text-align:center;padding:.5rem 1rem;background:color-mix(in srgb,var(--accent-purple) 15%,var(--bg-secondary));border:var(--border-width-sm) solid var(--accent-purple);border-radius:var(--radius-sm);font-family:var(--font-heading);font-weight:700;font-size:.85rem;color:var(--accent-purple);margin-bottom:.75rem}.stats-row{display:flex;gap:1rem;margin-bottom:1rem}.stat-box{flex:1;text-align:center;padding:1rem;background:var(--bg-secondary);border-radius:var(--radius-md)}.stat-box .stat-number{font-family:var(--font-heading);font-size:2rem;font-weight:800;line-height:1}.stat-box .stat-number.green{color:var(--accent-green)}.stat-box .stat-number.red{color:var(--accent-red)}.stat-box .stat-number.blue{color:var(--accent-blue)}.stat-box .stat-number.purple{color:var(--accent-purple)}.stat-box .stat-label{font-size:.75rem;text-transform:uppercase;color:var(--text-muted);font-weight:600;margin-top:.25rem}.task-list{list-style:none;max-height:200px;overflow-y:auto}.task-item{display:flex;align-items:center;gap:.75rem;padding:.75rem;margin-bottom:.5rem;background:var(--bg-secondary);border-radius:var(--radius-md);cursor:pointer;transition:background-color var(--transition-normal)}.task-item:hover{background:var(--accent-blue);color:var(--text-on-accent)}.task-item.completed{opacity:.6;text-decoration:line-through}.task-checkbox{width:20px;height:20px;border:2px solid var(--border-color);border-radius:var(--radius-xs);display:flex;align-items:center;justify-content:center;flex-shrink:0}.task-checkbox.checked{background:var(--accent-green);color:var(--text-on-accent)}.task-text{flex:1;font-size:.9rem}.task-project{font-size:.75rem;padding:.2rem .5rem;background:var(--bg-card);border-radius:var(--radius-xs);color:var(--text-muted)}.task-due{font-size:.75rem;color:var(--text-muted)}.task-due.overdue{color:var(--accent-red);font-weight:600}.focus-section.full-width{grid-column:1/-1}.scope-slots{display:grid;grid-template-columns:1fr 1fr 1fr;gap:1rem;margin-top:1rem}.scope-slot{padding:1.25rem;background:var(--bg-secondary);border:2px dashed var(--border-color);border-radius:var(--radius-md);min-height:100px;display:flex;flex-direction:column;gap:.5rem;transition:background .15s,border-color .15s}.scope-slot.filled{border-style:solid;background:var(--bg-card)}.scope-slot.empty{cursor:pointer}.scope-slot.empty:hover{border-color:var(--accent-primary);background:var(--bg-tertiary)}.scope-slot-label{font-size:.7rem;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);font-weight:600}.scope-slot-title{font-weight:600;font-size:.95rem}.scope-slot-meta{font-size:.8rem;color:var(--text-secondary)}.scope-slot-empty{color:var(--text-muted);font-style:italic;font-size:.9rem}.focus-slot.primary{border-color:var(--accent-yellow);background:linear-gradient(135deg,var(--bg-card) 0,color-mix(in srgb,var(--accent-yellow) 10%,var(--bg-card)) 100%)}.projects-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:.75rem;margin-top:.5rem}.project-health{padding:.75rem;background:var(--bg-secondary);border-radius:var(--radius-md);border-left:4px solid var(--accent-blue)}.project-health.warning{border-left-color:var(--accent-yellow)}.project-health.danger{border-left-color:var(--accent-red)}.project-name{font-weight:600;font-size:.85rem;margin-bottom:.25rem}.project-stats{font-size:.75rem;color:var(--text-muted)}.reflection-section{grid-column:1/-1}.reflection-prompts{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-top:1rem}.reflection-prompt{padding:1rem;background:var(--bg-secondary);border-radius:var(--radius-md)}.prompt-label{font-size:.8rem;font-weight:600;color:var(--text-secondary);margin-bottom:.5rem}.prompt-input,.reflection-textarea{width:100%;padding:.75rem;border:var(--border-width-sm) solid var(--border-color);border-radius:var(--radius-md);font-size:.9rem;font-family:inherit;resize:none;background:var(--bg-card)}.prompt-input:focus,.reflection-textarea:focus{outline:0;border-color:var(--accent-blue)}.review-actions-grid{grid-column:1/-1;display:flex;justify-content:flex-end;gap:1rem;padding-top:1rem}.event-item{display:flex;align-items:center;gap:.75rem;padding:.75rem;margin-bottom:.5rem;background:var(--bg-secondary);border-radius:var(--radius-md);border-left:3px solid var(--accent-purple)}.event-item .event-time{font-size:.8rem;font-weight:600;color:var(--accent-purple);min-width:100px}.event-item .event-title{flex:1;font-size:.9rem}.accomplishment-highlight{background:linear-gradient(135deg,color-mix(in srgb,var(--accent-green) 10%,var(--bg-card)) 0,color-mix(in srgb,var(--accent-green) 5%,var(--bg-card)) 100%);border:2px solid var(--accent-green);padding:1rem;border-radius:var(--radius-md);margin-bottom:1rem;display:flex;align-items:center;gap:1rem}.accomplishment-icon{font-size:2rem}.accomplishment-text{font-size:1rem}.accomplishment-text strong{color:var(--accent-green)}.task-list::-webkit-scrollbar{width:6px}.task-list::-webkit-scrollbar-track{background:var(--bg-secondary);border-radius:var(--radius-xs)}.task-list::-webkit-scrollbar-thumb{background:var(--border-color);border-radius:var(--radius-xs)}.ui-mode-mobile .review-grid{grid-template-columns:1fr}.ui-mode-mobile .focus-section.full-width,.ui-mode-mobile .reflection-section,.ui-mode-mobile .week-timeline,.ui-mode-mobile .week-timeline-events{grid-column:1}.ui-mode-mobile .focus-grid{grid-template-columns:1fr}.ui-mode-mobile .reflection-prompts{grid-template-columns:1fr}.ui-mode-mobile .projects-grid{grid-template-columns:1fr 1fr}.ui-mode-mobile .stat-cards{flex-direction:column}.ui-mode-mobile .stat-card{max-width:none}.ui-mode-mobile .week-info{flex-direction:column;align-items:flex-start;gap:.5rem}.ui-mode-mobile .projects-grid{grid-template-columns:1fr}.focus-slot{transition:background-color .2s ease-out,border-color .2s ease-out}.focus-slot.filled{animation:focusSlotFill .3s ease-out}@keyframes focusSlotFill{0%{transform:scale(.95);opacity:.7}100%{transform:scale(1);opacity:1}}.focus-slot:focus,.focus-slot:focus-within{outline:2px solid var(--accent-blue);outline-offset:2px}.focus-slot[tabindex]:focus{outline:2px solid var(--accent-blue);outline-offset:2px}.focus-section .btn{transition:transform .15s ease-out,opacity .15s ease-out}.focus-section .btn:active{transform:scale(.97)}.monthly-review-nav,.weekly-review-nav{display:flex;align-items:center;gap:.5rem}.weekly-review-nav .week-dates{font-family:var(--font-heading);font-size:1.25rem;font-weight:700;color:var(--text-primary);margin-left:.5rem}.monthly-review-month-display{font-family:var(--font-heading);font-size:1.25rem;font-weight:700;color:var(--text-primary);margin-left:.5rem}.monthly-review-content{max-width:900px;margin:0 auto;padding:1rem}.month-heatmap{margin-bottom:1.5rem;border:var(--border-width-sm) solid var(--border-color);border-radius:var(--radius-md);padding:1rem;background:var(--bg-secondary)}.month-heatmap-header{display:grid;grid-template-columns:repeat(7,1fr);text-align:center;margin-bottom:.5rem}.month-heatmap-day-header{font-family:var(--font-heading);font-size:.75rem;font-weight:600;color:var(--text-secondary);text-transform:uppercase}.month-heatmap-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:3px}.month-heatmap-cell{aspect-ratio:1;display:flex;flex-direction:column;align-items:center;justify-content:center;border-radius:var(--radius-xs);cursor:pointer;transition:transform .1s ease;border:var(--border-width-sm) solid transparent;position:relative;min-height:40px}.month-heatmap-cell:not(.empty):hover{transform:scale(1.1);border-color:var(--border-color);z-index:1}.month-heatmap-cell.empty{cursor:default;background:0 0}.month-heatmap-cell.intensity-0{background:var(--bg-primary)}.month-heatmap-cell.intensity-1{background:color-mix(in srgb,var(--accent-green) 20%,var(--bg-primary))}.month-heatmap-cell.intensity-2{background:color-mix(in srgb,var(--accent-green) 40%,var(--bg-primary))}.month-heatmap-cell.intensity-3{background:color-mix(in srgb,var(--accent-green) 60%,var(--bg-primary))}.month-heatmap-cell.vacation{background:var(--bg-tertiary);opacity:.6}.month-heatmap-cell.today{border-color:var(--accent-primary);border-width:2px}.month-heatmap-cell.past.intensity-0{background:var(--bg-tertiary)}.month-heatmap-day-number{font-family:var(--font-heading);font-size:.8rem;font-weight:600;color:var(--text-primary)}.month-heatmap-dots{display:flex;gap:2px;margin-top:2px}.month-dot{font-size:.6rem;font-weight:700;border-radius:var(--radius-xs);padding:0 3px;line-height:1.3}.month-dot.completed{color:var(--accent-green)}.month-dot.event{color:var(--accent-purple)}.monthly-review-cards{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.review-card.month-stats-card{grid-column:span 1}.review-card.month-goals-card{margin-bottom:1rem}.review-card.month-patterns-card,.review-card.month-pulse-card{grid-column:span 1}.review-card.month-reflection-card{grid-column:1/-1}.review-card-title{font-family:var(--font-heading);font-size:1rem;font-weight:700;margin-bottom:.75rem;color:var(--text-primary)}.month-stats-grid{display:grid;grid-template-columns:1fr 1fr;gap:.5rem}.month-stat-item{display:flex;flex-direction:column;align-items:center;padding:.5rem;border-radius:var(--radius-xs);background:var(--bg-primary);border:var(--border-width-sm) solid var(--border-color)}.month-stat-value{font-family:var(--font-heading);font-size:1.5rem;font-weight:700;color:var(--text-primary)}.month-stat-label{font-size:.75rem;color:var(--text-secondary);text-transform:uppercase;font-weight:600}.month-stats-highlights{display:flex;gap:1rem;margin-top:.5rem;justify-content:center}.stat-highlight{font-size:.8rem;color:var(--text-secondary)}.month-pulse-list{display:flex;flex-direction:column;gap:.5rem}.month-pulse-item{display:flex;align-items:center;gap:.5rem;padding:.5rem;border-radius:var(--radius-xs);background:var(--bg-primary);border:var(--border-width-sm) solid var(--border-color)}.pulse-name{font-weight:600;flex:1;font-size:.875rem}.pulse-stats{font-size:.75rem;color:var(--text-secondary)}.pulse-arrow{font-size:1rem;font-weight:700}.month-pulse-item.positive .pulse-arrow{color:var(--accent-green)}.month-pulse-item.negative .pulse-arrow{color:var(--accent-red)}.month-pulse-item.neutral .pulse-arrow{color:var(--text-secondary)}.month-goal-body{display:flex;align-items:center;gap:.5rem;flex:1}.month-goal-item.done{opacity:.7}.month-goal-item.done .month-goal-text{text-decoration:line-through}.month-goal-item.abandoned{opacity:.5}.month-goal-item.abandoned .month-goal-text{text-decoration:line-through}.month-goal-status-btn{font-size:1rem;padding:0;color:var(--text-secondary);width:24px;text-align:center}.month-goal-item.done .month-goal-status-btn{color:var(--accent-green)}.month-goal-item.abandoned .month-goal-status-btn{color:var(--accent-red)}.month-goal-text{flex:1;font-size:.875rem}.month-goal-delete-btn{color:var(--text-tertiary);padding:0 4px;font-size:.75rem;opacity:0;transition:opacity .15s}.month-goal-item:hover .month-goal-delete-btn{opacity:1}.month-goal-placeholder{color:var(--text-tertiary);font-size:.875rem}.month-reflection-fields{display:flex;flex-direction:column;gap:.5rem}.month-reflection-label{font-size:.875rem;font-weight:600;color:var(--text-secondary)}.month-reflection-textarea{width:100%;padding:.5rem;border:var(--border-width-sm) solid var(--border-color);border-radius:var(--radius-xs);background:var(--bg-primary);color:var(--text-primary);font-family:var(--font-body);font-size:.875rem;resize:vertical}.month-reflection-textarea:focus{outline:2px solid var(--accent-primary);outline-offset:-1px}.month-patterns-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.5rem}.month-pattern-item{font-size:.875rem;color:var(--text-secondary);padding:.5rem;background:var(--bg-primary);border-radius:var(--radius-xs);border:var(--border-width-sm) solid var(--border-color)}.ui-mode-mobile .monthly-review-cards{grid-template-columns:1fr}.ui-mode-mobile .review-card.month-goals-card,.ui-mode-mobile .review-card.month-patterns-card,.ui-mode-mobile .review-card.month-pulse-card,.ui-mode-mobile .review-card.month-stats-card{grid-column:span 1}.ui-mode-mobile .month-heatmap-cell{min-height:32px}.ui-mode-mobile .month-heatmap-day-number{font-size:.7rem}.ui-mode-mobile .month-heatmap-dots{display:none}.import-wizard{display:flex;flex-direction:column;gap:1.5rem}.import-step{padding:1rem;background:var(--bg-secondary);border:var(--border-width) solid var(--border-color);border-radius:var(--radius-md)}.import-step h3{margin:0 0 1rem 0;font-size:var(--font-size-md);font-weight:600}.plugin-selector{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:.75rem}.plugin-option{display:flex;flex-direction:column;align-items:flex-start;padding:.75rem 1rem;background:var(--bg-card);border:var(--border-width) solid var(--border-color);border-radius:var(--radius-sm);cursor:pointer;text-align:left;transition:border-color var(--transition-fast),background var(--transition-fast)}.plugin-option:hover{border-color:var(--accent-primary);background:var(--bg-hover)}.plugin-option.selected{border-color:var(--accent-primary);background:color-mix(in srgb,var(--accent-primary) 10%,var(--bg-card));box-shadow:0 0 0 2px color-mix(in srgb,var(--accent-primary) 30%,transparent)}.plugin-option .plugin-name{font-weight:600;margin-bottom:.25rem}.plugin-option .plugin-meta{display:flex;gap:.5rem;font-size:var(--font-size-sm);color:var(--text-muted);margin-bottom:.25rem}.plugin-option .plugin-extensions{color:var(--accent-cyan)}.plugin-option .plugin-types{color:var(--text-secondary)}.plugin-option .plugin-description{font-size:var(--font-size-sm);color:var(--text-secondary);line-height:1.4}.file-selector{display:flex;align-items:center;gap:1rem}.selected-file-name{color:var(--text-secondary);font-family:monospace;font-size:var(--font-size-sm)}.import-preview-container{min-height:100px}.import-preview-table-wrapper{max-height:300px;overflow:auto;border:1px solid var(--border-color);border-radius:var(--radius-sm)}.import-preview-table{font-size:var(--font-size-sm);margin:0}.import-preview-table th{position:sticky;top:0;background:var(--bg-secondary);z-index:1}.import-preview-table td{max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.import-summary{margin:0 0 .75rem 0;color:var(--text-primary)}.import-more{margin:.5rem 0 0 0;color:var(--text-muted);font-style:italic;font-size:var(--font-size-sm)}.import-empty,.import-error{padding:2rem;text-align:center;color:var(--text-muted)}.import-error{color:var(--accent-red)}.import-warnings{margin-top:1rem;padding:.75rem;background:color-mix(in srgb,var(--accent-yellow) 10%,var(--bg-card));border:1px solid var(--accent-yellow);border-radius:var(--radius-sm);font-size:var(--font-size-sm)}.import-warnings ul{margin:.5rem 0 0 1.25rem;padding:0}.import-warnings li{margin-bottom:.25rem}.import-external-types{display:flex;gap:1rem;margin-bottom:1.5rem}.import-type-card{flex:1;display:flex;flex-direction:column;align-items:center;gap:.5rem;padding:1.5rem 1rem;background:var(--bg-card);border:2px solid var(--border-color);border-radius:var(--radius-md);cursor:pointer;transition:border-color .15s,background .15s}.import-type-card:hover{border-color:var(--accent-primary);background:var(--bg-secondary)}.import-type-icon{font-size:2rem}.import-type-label{font-weight:600;color:var(--text-primary)}.import-type-desc{font-size:var(--font-size-sm);color:var(--text-muted)}.plugin-list{display:flex;flex-direction:column;gap:.75rem}.plugin-item{display:flex;justify-content:space-between;align-items:center;padding:1rem;background:var(--bg-card);border:var(--border-width) solid var(--border-color);border-radius:var(--radius-md)}.plugin-item .plugin-info{flex:1}.plugin-item .plugin-name{font-weight:600}.plugin-item .plugin-version{color:var(--text-muted);font-size:var(--font-size-sm);margin-left:.5rem}.plugin-item .plugin-description{margin:.25rem 0;color:var(--text-secondary);font-size:var(--font-size-sm)}.plugin-item .plugin-extensions{font-size:var(--font-size-xs);color:var(--text-muted)}.plugin-item .plugin-actions{margin-left:1rem}.toggle-switch{position:relative;display:inline-block;width:44px;height:24px}.toggle-switch input{opacity:0;width:0;height:0}.toggle-slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:var(--bg-tertiary);border:2px solid var(--border-color);border-radius:var(--radius-xl);transition:background-color var(--transition-fast),border-color var(--transition-fast)}.toggle-slider:before{position:absolute;content:"";height:16px;width:16px;left:2px;bottom:2px;background-color:var(--text-muted);border-radius:var(--radius-full);transition:transform var(--transition-fast),background-color var(--transition-fast)}.toggle-switch input:checked+.toggle-slider{background-color:var(--accent-primary);border-color:var(--accent-primary)}.toggle-switch input:checked+.toggle-slider:before{transform:translateX(20px);background-color:var(--bg-card)}.toggle-switch input:focus+.toggle-slider{box-shadow:0 0 0 2px color-mix(in srgb,var(--accent-primary) 30%,transparent)}.milestones-section{margin-bottom:1.5rem}.milestones-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem;padding-bottom:.5rem;border-bottom:2px solid var(--border-color)}.milestones-header h3{margin:0;font-size:1rem;font-family:var(--font-heading);font-weight:700}.milestone-card{background:var(--bg-card);border:var(--border-width) solid var(--border-color);border-radius:var(--radius-md);padding:1rem;margin-bottom:.75rem;transition:background-color .1s;box-shadow:var(--shadow-offset) var(--shadow-offset) 0 var(--border-color)}.milestone-card:hover{background:var(--bg-secondary)}.milestone-card-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:.5rem}.milestone-card-header h4{margin:0;font-size:.95rem;font-family:var(--font-heading);font-weight:700}.milestone-card-header .milestone-status{font-size:.7rem;font-weight:700;text-transform:uppercase;padding:.15rem .4rem;border-radius:var(--radius-sm);background:var(--bg-secondary);color:var(--text-muted)}.milestone-card-header .milestone-status.completed{background:color-mix(in srgb,var(--accent-green) 15%,var(--bg-secondary));color:var(--accent-green)}.milestone-meta{display:flex;gap:1rem;font-size:.8rem;color:var(--text-muted);margin-bottom:.5rem}.milestone-progress{height:6px;background:var(--bg-secondary);border-radius:var(--radius-full);overflow:hidden;border:var(--border-width-sm) solid var(--border-color)}.milestone-progress-fill{height:100%;background:var(--accent-green);border-radius:var(--radius-full);transition:width var(--transition-fast)}.milestone-actions{display:flex;gap:.5rem;margin-top:.5rem}.milestone-actions button{font-size:.75rem;padding:.2rem .5rem;background:var(--bg-secondary);border:var(--border-width-sm) solid var(--border-color);border-radius:var(--radius-sm);cursor:pointer;color:var(--text-secondary);transition:background var(--transition-fast)}.milestone-actions button:hover{background:var(--bg-hover)}.milestone-actions button.danger:hover{background:color-mix(in srgb,var(--accent-red) 15%,var(--bg-secondary));color:var(--accent-red)}button.milestone-reorder-btn.btn{font-size:.65rem;padding:.15rem .35rem;line-height:1;min-width:1.5rem;text-align:center}.milestones-completed-section{margin-top:.75rem}.milestones-completed-toggle{font-size:.8rem;color:var(--text-secondary);padding:.25rem 0}.milestone-card-summary{padding:.5rem .75rem;opacity:.7}.milestone-card-summary .milestone-info{display:flex;align-items:center;gap:.5rem}.milestone-complete-badge{font-size:.7rem;font-weight:700;padding:.1rem .4rem;border-radius:var(--radius-sm);background:color-mix(in srgb,var(--accent-green) 15%,var(--bg-secondary));color:var(--accent-green)}.mobile-tab-bar{display:none;position:fixed;bottom:0;left:0;right:0;z-index:1100;background:var(--bg-card);border-top:var(--border-width) solid var(--border-color);padding-bottom:env(safe-area-inset-bottom,0);height:calc(52px + env(safe-area-inset-bottom,0px))}.mobile-tab{flex:1;display:flex;align-items:center;justify-content:center;height:52px;background:0 0;border:none;color:var(--text-muted);font-size:.7rem;font-weight:700;font-family:var(--font-sans);text-transform:uppercase;letter-spacing:.05em;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:color .15s ease}.mobile-tab.active{color:var(--accent-blue)}.mobile-tab:active{background:var(--bg-secondary)}.mobile-tab-create{font-size:1.4rem;font-weight:400;color:var(--accent-green);letter-spacing:0;text-transform:none}.mobile-tab-slide-menu{position:fixed;z-index:1102;min-width:140px;background:var(--bg-card);border:var(--border-width) solid var(--border-color);border-radius:var(--radius-md);box-shadow:var(--shadow-brutal-md);padding:.25rem;display:flex;flex-direction:column;opacity:0;transform:scale(.92);transform-origin:50% 100%;transition:opacity 120ms ease-out,transform 120ms ease-out}.mobile-tab-slide-menu.is-open{opacity:1;transform:scale(1)}.mobile-tab-slide-item{padding:.7rem .9rem;min-height:44px;display:flex;align-items:center;justify-content:center;font-size:var(--font-size-sm);font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--text-primary);border-radius:var(--radius-sm);transition:background 80ms ease,transform 80ms ease}.mobile-tab-slide-item.is-highlighted{background:var(--accent-blue);color:var(--text-on-accent);transform:scale(1.03)}.action-sheet{position:fixed;inset:0;z-index:10001;display:flex;flex-direction:column;justify-content:flex-end}.action-sheet.hidden{display:none}.action-sheet-backdrop{position:absolute;inset:0;background:rgba(0,0,0,.4)}.action-sheet-container{position:relative;background:var(--bg-card);border-top:var(--border-width) solid var(--border-color);border-radius:var(--radius-lg) var(--radius-lg) 0 0;padding:.5rem 1rem calc(.5rem + env(safe-area-inset-bottom,0px));max-height:60vh;overflow-y:auto;animation:sheetSlideUp .25s ease-out}.action-sheet-handle{width:36px;height:4px;border-radius:2px;background:var(--text-muted);margin:0 auto .75rem;opacity:.4}.action-sheet-content button{display:flex;align-items:center;gap:.75rem;width:100%;padding:.875rem .5rem;background:0 0;border:none;border-bottom:1px solid var(--bg-secondary);font-size:var(--font-size-base);font-weight:600;color:var(--text-primary);text-align:left;cursor:pointer}.action-sheet-content button:last-child{border-bottom:none}.action-sheet-content button:active{background:var(--bg-secondary)}.action-sheet-content button.danger{color:var(--accent-red)}.action-sheet-cancel{display:block;width:100%;padding:.875rem;margin-top:.5rem;background:var(--bg-secondary);border:var(--border-width-sm) solid var(--border-color);border-radius:var(--radius-md);font-size:var(--font-size-base);font-weight:700;color:var(--text-primary);text-align:center;cursor:pointer}.action-sheet-cancel:active{background:var(--bg-tertiary)}.modal-drag-handle{display:none;width:36px;height:4px;border-radius:2px;background:var(--text-muted);margin:.5rem auto 0;opacity:.4}.mobile-sort-bar{display:none;gap:.5rem;padding:.5rem 0;align-items:center}.mobile-sort-bar select{flex:1;font-size:var(--font-size-sm)}.mobile-filter-toggle{display:none}.swipe-actions-container{position:relative;overflow:hidden}.swipe-actions-bg{position:absolute;top:0;bottom:0;display:flex;align-items:center;padding:0 1rem;font-weight:700;font-size:var(--font-size-sm);color:var(--text-on-accent)}.swipe-actions-bg.swipe-left{right:0;background:var(--accent-green)}.swipe-actions-bg.swipe-right{left:0;background:var(--accent-red)}.swipe-content{position:relative;background:var(--bg-card);transition:transform .15s ease}.pull-to-refresh-indicator{display:none;text-align:center;padding:.75rem;font-size:var(--font-size-sm);color:var(--text-muted);font-weight:600}.pull-to-refresh-indicator.visible{display:block}.event-date-group-header{display:none}.day-plan-sidebar-toggle{display:none}@keyframes sheetSlideUp{from{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes sheetSlideDown{from{transform:translateY(0)}to{transform:translateY(100%)}}@keyframes dialFadeIn{from{opacity:0}to{opacity:1}}.ui-mode-mobile body,html.ui-mode-mobile{overflow-x:hidden;max-width:100vw;touch-action:pan-y;overscroll-behavior-x:none}.ui-mode-mobile body{padding-top:env(safe-area-inset-top,0);padding-bottom:calc(52px + env(safe-area-inset-bottom,0px));padding-left:env(safe-area-inset-left,0);padding-right:env(safe-area-inset-right,0)}.ui-mode-mobile .mobile-tab-bar,.ui-mode-mobile .timer-widget{padding-left:env(safe-area-inset-left,0);padding-right:env(safe-area-inset-right,0)}.ui-mode-mobile .mobile-tab-bar{display:flex}.ui-mode-mobile .tab-navigation{display:none!important}.ui-mode-mobile .app-header{display:none}.ui-mode-mobile .pill-nav{display:none}.ui-mode-mobile #contacts-view .page-header>.row-flex,.ui-mode-mobile #emails-view>div.row-flex.mb-2,.ui-mode-mobile #tasks-view .mobile-sort-bar,.ui-mode-mobile #tasks-view .page-header>.row-flex{display:grid;grid-auto-flow:row;grid-template-columns:repeat(2,1fr);gap:var(--space-2);align-items:center}.ui-mode-mobile #tasks-view .page-header>.row-flex{grid-template-columns:1fr}.ui-mode-mobile .mobile-hide{display:none!important}.ui-mode-mobile #day-review-status-badge,.ui-mode-mobile #month-review-status-badge,.ui-mode-mobile #week-review-status-badge{display:none!important}.ui-mode-mobile #day-plan-view .timeline-hint{display:none}.ui-mode-mobile #day-plan-view .timeline-slot-area{cursor:default}.ui-mode-mobile #day-plan-view .timeline-slot-area:hover{background:0 0}.ui-mode-mobile #day-plan-view .day-plan-nav{display:flex;flex-wrap:wrap;column-gap:var(--space-2);row-gap:var(--space-3);align-items:center}.ui-mode-mobile #day-plan-view .day-plan-nav .btn{flex:0 0 auto;border-radius:var(--radius-sm);border-right-width:var(--border-width)}.ui-mode-mobile #day-plan-view .day-plan-nav .day-plan-date-picker{flex:1 1 120px;min-width:0}.ui-mode-mobile #day-plan-view .day-plan-date-display{display:none}.ui-mode-mobile #contacts-search,.ui-mode-mobile #email-search{grid-column:1/-1;width:100%;min-width:0}.ui-mode-mobile #email-count{display:none}.ui-mode-mobile #contacts-view .page-header>.row-flex .btn,.ui-mode-mobile #tasks-view .page-header>.row-flex .btn{border-radius:var(--radius-sm);border-right-width:var(--border-width)}.ui-mode-mobile #tasks-view .page-header .view-toggle{display:flex;width:100%}.ui-mode-mobile #tasks-view .page-header .view-toggle .view-toggle-btn{flex:1 1 0}.ui-mode-mobile .tab-group>.subview>.page-header{position:static}.ui-mode-mobile .main-content{padding:.75rem}.ui-mode-mobile .page-header{flex-wrap:wrap;gap:.5rem}.ui-mode-mobile .page-header .btn-primary{display:none}.ui-mode-mobile .page-title{display:none}.ui-mode-mobile #contacts-view .page-header>div,.ui-mode-mobile #emails-view .page-header>div,.ui-mode-mobile .page-header>div{gap:0!important;flex-wrap:wrap}.ui-mode-mobile #contacts-view .page-header>div .btn,.ui-mode-mobile #emails-view .page-header>div .btn,.ui-mode-mobile .bulk-actions-bar .btn,.ui-mode-mobile .page-header>div .btn{flex:1 1 0;min-width:0;padding:.4rem .5rem;font-size:.75rem;border-radius:0;border-right-width:0;white-space:nowrap}.ui-mode-mobile #contacts-view .page-header>div .btn:first-child,.ui-mode-mobile #emails-view .page-header>div .btn:first-child,.ui-mode-mobile .bulk-actions-bar .btn:first-of-type,.ui-mode-mobile .page-header>div .btn:first-child{border-top-left-radius:var(--radius-sm);border-bottom-left-radius:var(--radius-sm)}.ui-mode-mobile #contacts-view .page-header>div .btn:has(+ .btn-primary),.ui-mode-mobile #contacts-view .page-header>div .btn:last-child,.ui-mode-mobile #emails-view .page-header>div .btn:has(+ .btn-primary),.ui-mode-mobile #emails-view .page-header>div .btn:last-child,.ui-mode-mobile .page-header>div .btn:has(+ .btn-primary),.ui-mode-mobile .page-header>div .btn:last-child{border-top-right-radius:var(--radius-sm);border-bottom-right-radius:var(--radius-sm);border-right-width:var(--border-width)}.ui-mode-mobile .bulk-actions-bar{gap:0}.ui-mode-mobile .bulk-actions-bar .bulk-count{margin-right:.5rem}.ui-mode-mobile .bulk-actions-bar .btn:not(.bulk-select-all)+.bulk-select-all{border-right-width:var(--border-width);border-radius:var(--radius-sm)}.ui-mode-mobile .bulk-actions-bar .btn:not(.bulk-select-all):nth-last-of-type(2){border-top-right-radius:var(--radius-sm);border-bottom-right-radius:var(--radius-sm);border-right-width:var(--border-width)}.ui-mode-mobile .bulk-select-all{margin-left:auto}.ui-mode-mobile #emails-view .form-select[id^=email-]{min-width:0!important;flex:1}.ui-mode-mobile .form-input,.ui-mode-mobile .form-select,.ui-mode-mobile .form-textarea{padding:.45rem .65rem}.ui-mode-mobile .form-textarea{min-height:72px}.ui-mode-mobile .form-group{margin-bottom:.75rem}.ui-mode-mobile .form-label{margin-bottom:.25rem}.ui-mode-mobile .form-actions{gap:.5rem;margin-top:1rem}.ui-mode-mobile .quick-add-input{padding:.55rem .75rem}.ui-mode-mobile .quick-add{gap:.5rem;margin-bottom:1rem}.ui-mode-mobile .bulk-modal-option-btn,.ui-mode-mobile .snooze-option{padding:.55rem .75rem}.ui-mode-mobile .snooze-options{gap:.35rem}.ui-mode-mobile .modal-header{padding:.6rem .9rem}.ui-mode-mobile .modal-header h2,.ui-mode-mobile .modal-title{font-size:1.05rem}.ui-mode-mobile .modal-content{padding:.9rem}.ui-mode-mobile .modal-content form>.form-actions:last-child,.ui-mode-mobile .modal-content>.form-actions:last-child{margin-top:.9rem;padding-top:.5rem}.ui-mode-mobile .modal-overlay{align-items:flex-end;bottom:calc(52px + env(safe-area-inset-bottom,0px))}.ui-mode-mobile .modal-container{width:100%!important;max-width:100%!important;max-height:calc(100vh - 52px - env(safe-area-inset-bottom,0px) - env(safe-area-inset-top,0px));border-radius:var(--radius-lg) var(--radius-lg) 0 0;margin:0;border-bottom:none;padding-bottom:0}.ui-mode-mobile .modal-container.modal-large{max-width:100%!important;width:100%!important;max-height:calc(100vh - 52px - env(safe-area-inset-bottom,0px) - env(safe-area-inset-top,0px));border-radius:var(--radius-lg) var(--radius-lg) 0 0}.ui-mode-mobile .modal-drag-handle{display:block}.ui-mode-mobile .modal-header{padding:.75rem 1rem}.ui-mode-mobile .modal-content{padding:1rem}@keyframes modalSlideInMobile{from{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes modalSlideOutMobile{from{transform:translateY(0)}to{transform:translateY(100%)}}.ui-mode-mobile .modal-container{animation-name:modalSlideInMobile}.ui-mode-mobile .modal-overlay.closing .modal-container{animation-name:modalSlideOutMobile}.ui-mode-mobile .toast,.ui-mode-mobile .toast-undo{bottom:calc(env(safe-area-inset-bottom,0px) + 4.5rem)!important;left:1rem!important;right:1rem!important;max-width:none!important}.ui-mode-mobile .task-table{border:none;box-shadow:none;background:0 0}.ui-mode-mobile .task-header-row{display:none!important}.ui-mode-mobile .task-row{display:flex!important;flex-direction:column;gap:.25rem;padding:.75rem 1rem;margin-bottom:.5rem;background:var(--bg-card);border:var(--border-width-sm) solid var(--border-color);border-radius:var(--radius-md);border-left:4px solid var(--text-muted)}.ui-mode-mobile .task-row.task-pending{border-left-color:var(--text-muted)}.ui-mode-mobile .task-row .task-cell.priority-h~.task-cell:first-child,.ui-mode-mobile .task-row:has(.priority-h){border-left-color:var(--accent-red)}.ui-mode-mobile .task-row:has(.priority-m){border-left-color:var(--accent-yellow)}.ui-mode-mobile .task-row:has(.priority-l){border-left-color:var(--text-muted)}.ui-mode-mobile .task-row .task-cell{display:flex!important;overflow:visible;padding:0}.ui-mode-mobile .task-cell.task-description{font-weight:600;font-size:var(--font-size-base)}.ui-mode-mobile .task-cell.task-due,.ui-mode-mobile .task-cell.task-project{font-size:var(--font-size-sm);color:var(--text-secondary)}.ui-mode-mobile .task-row .task-cell.task-project::before{content:none}.ui-mode-mobile .task-cell.task-progress,.ui-mode-mobile .task-cell.task-recurrence,.ui-mode-mobile .task-row .task-cell:nth-child(3){display:none!important}.ui-mode-mobile .task-cell.task-project{order:2}.ui-mode-mobile .task-cell.task-due{order:3}.ui-mode-mobile .task-cell.task-description{order:1}.ui-mode-mobile .task-cell.task-actions-cell{order:4;justify-content:flex-end}.ui-mode-mobile .task-cell.task-progress:has(.progress-bar-container){display:flex!important;order:5}.ui-mode-mobile .task-actions-cell .bulk-checkbox{display:none}.ui-mode-mobile .kebab-btn{opacity:1}.ui-mode-mobile .mobile-sort-bar{display:flex}.ui-mode-mobile .mobile-filter-toggle{display:inline-flex;align-items:center;gap:.25rem;padding:.5rem .75rem;background:var(--bg-card);border:var(--border-width-sm) solid var(--border-color);border-radius:var(--radius-sm);font-size:var(--font-size-sm);font-weight:600;cursor:pointer}.ui-mode-mobile .filter-bar{display:none!important}.ui-mode-mobile .filter-bar.mobile-visible{display:flex!important;flex-direction:column;position:fixed;bottom:calc(52px + env(safe-area-inset-bottom,0px));left:0;right:0;background:var(--bg-card);border-top:var(--border-width) solid var(--border-color);border-radius:var(--radius-lg) var(--radius-lg) 0 0;padding:1rem;z-index:1050;box-shadow:0 -4px 12px rgba(0,0,0,.1)}.ui-mode-mobile .event-header-row{display:none!important}.ui-mode-mobile .event-row-virtual{display:flex!important;flex-direction:column;gap:.125rem;padding:.75rem 1rem;border-bottom:1px solid var(--bg-secondary)}.ui-mode-mobile .event-cell-date{font-weight:700;font-size:var(--font-size-sm);color:var(--text-secondary)}.ui-mode-mobile .event-cell-time{font-size:var(--font-size-sm);color:var(--text-muted)}.ui-mode-mobile .event-cell-title{font-weight:600;font-size:var(--font-size-base)}.ui-mode-mobile .event-cell-location{font-size:var(--font-size-sm);color:var(--text-secondary)}.ui-mode-mobile .event-date-group-header{display:flex;position:sticky;top:0;z-index:5;padding:.5rem 1rem;background:var(--bg-secondary);font-weight:700;font-size:var(--font-size-sm);text-transform:uppercase;letter-spacing:.05em;color:var(--text-primary);border-bottom:var(--border-width-sm) solid var(--border-color)}.ui-mode-mobile .email-item{padding:.625rem .75rem}.ui-mode-mobile .email-from{font-size:var(--font-size-sm)}.ui-mode-mobile .email-subject{font-size:var(--font-size-base)}.ui-mode-mobile .email-preview{display:none}.ui-mode-mobile .email-date{font-size:var(--font-size-xs)}.ui-mode-mobile .email-item .bulk-checkbox{display:none}.ui-mode-mobile .day-plan-content{flex-direction:column}.ui-mode-mobile .day-plan-sidebar{width:100%;max-height:none;border-top:var(--border-width-sm) solid var(--border-color);order:2}.ui-mode-mobile .day-plan-sidebar.collapsed .sidebar-task-list{display:none}.ui-mode-mobile .day-plan-sidebar-toggle{display:flex;align-items:center;justify-content:space-between;width:100%;padding:.625rem .75rem;background:var(--bg-secondary);border:none;border-bottom:1px solid var(--border-color);font-size:var(--font-size-sm);font-weight:700;cursor:pointer;color:var(--text-primary)}.ui-mode-mobile .day-plan-main{order:1}.ui-mode-mobile .day-plan-nav{flex-wrap:wrap;gap:.25rem}.ui-mode-mobile .weekly-review-content{padding:0}.ui-mode-mobile .monthly-review-content{padding:0}.ui-mode-mobile .month-reflection-textarea,.ui-mode-mobile .prompt-input{resize:none;overflow:hidden}.ui-mode-mobile .monthly-review-nav{flex-wrap:wrap;gap:.25rem}.ui-mode-mobile .monthly-review-month-display{font-size:1rem}.ui-mode-mobile .day-summary-sheet{padding:.5rem 0}.ui-mode-mobile .day-summary-date{font-size:1rem;font-weight:700;margin-bottom:.75rem;color:var(--text-primary)}.ui-mode-mobile .day-summary-stats{display:flex;gap:.5rem;margin-bottom:1rem}.ui-mode-mobile .day-summary-chip{padding:.25rem .75rem;background:var(--bg-secondary);border-radius:var(--radius-sm);font-size:var(--font-size-sm);font-weight:600;color:var(--text-secondary)}.ui-mode-mobile .day-summary-list{list-style:none;padding:0;margin:0 0 1rem 0}.ui-mode-mobile .day-summary-item{padding:.5rem 0;border-bottom:1px solid var(--bg-secondary);font-size:var(--font-size-sm);color:var(--text-primary)}.ui-mode-mobile .day-summary-time{font-weight:600;color:var(--text-secondary);margin-right:.5rem}.ui-mode-mobile .day-summary-more{color:var(--text-muted);font-style:italic}.ui-mode-mobile .day-summary-empty{color:var(--text-muted);font-size:var(--font-size-sm);margin:.5rem 0 1rem}.ui-mode-mobile .day-summary-go-btn{width:100%;margin-top:.5rem}.ui-mode-mobile .bulk-actions-bar{position:fixed;bottom:calc(52px + env(safe-area-inset-bottom,0px));left:0;right:0;z-index:1050;border-radius:var(--radius-lg) var(--radius-lg) 0 0;box-shadow:0 -4px 12px rgba(0,0,0,.15)}.ui-mode-mobile .pagination-controls{padding:.5rem}.ui-mode-mobile .pagination-controls .btn{padding:.5rem .75rem;font-size:var(--font-size-sm)}@media (hover:none){.task-row:hover{background-color:transparent}.task-row-clickable:hover{background:0 0}.event-row-virtual:hover{background-color:transparent}.email-item:hover{background-color:transparent}.card:hover{background-color:var(--bg-card);transform:none;box-shadow:var(--shadow-offset) var(--shadow-offset) 0 var(--border-color)}.btn:hover{background:var(--bg-card)}.btn-primary:hover{background-color:var(--accent-blue)}.btn-danger:hover{background-color:var(--accent-red)}.card:hover{background-color:var(--bg-card);transform:none;box-shadow:var(--shadow-offset) var(--shadow-offset) 0 var(--border-color)}.kanban-card:hover{background:var(--bg-card);transform:none;box-shadow:var(--shadow-offset) var(--shadow-offset) 0 var(--border-color)}.saved-view-item:hover{background:var(--bg-card);color:var(--text-primary);transform:none;box-shadow:var(--shadow-offset) var(--shadow-offset) 0 var(--border-color)}.context-menu-item:hover{background:0 0;color:var(--text-primary)}.modal-close:hover{background:var(--bg-card);color:var(--text-primary)}.month-heatmap-cell:hover{background:0 0;transform:none}.email-item .kebab-btn,.event-row-virtual .kebab-btn,.task-row .kebab-btn{opacity:1}.shortcut-hint-btn{display:none}.time-block-quick-options{grid-template-columns:1fr}.duration-preset,.time-block-quick-btn{min-height:44px;padding:.75rem;font-size:1rem}}body.is-touch .email-item .kebab-btn,body.is-touch .event-row-virtual .kebab-btn,body.is-touch .task-row .kebab-btn{opacity:1}body.is-touch .shortcut-hint-btn{display:none}.view-toggle{display:flex;gap:0;margin-left:auto}.view-toggle-btn{padding:.35rem .75rem;border:var(--border-width-sm) solid var(--border-color);background:var(--bg-secondary);font-family:var(--font-body);font-size:var(--font-size-md);cursor:pointer;transition:background var(--transition-fast),box-shadow var(--transition-fast)}.view-toggle-btn.active{background:var(--bg-card);font-weight:600}.view-toggle-btn:first-child{border-radius:var(--radius-xs) 0 0 var(--radius-xs)}.view-toggle-btn:last-child{border-radius:0 var(--radius-xs) var(--radius-xs) 0;border-left:none}.kanban-board{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;padding:.5rem 0;min-height:400px}.kanban-column{background:var(--bg-card);border:var(--border-width) solid var(--border-color);display:flex;flex-direction:column;min-height:300px;max-height:calc(100vh - 200px)}.kanban-column-header{padding:.75rem 1rem;border-bottom:2px solid var(--border-color);font-family:var(--font-heading);font-weight:700;display:flex;justify-content:space-between;align-items:center}.kanban-column-count{font-family:var(--font-body);font-size:var(--font-size-sm);color:var(--text-secondary)}.kanban-column-body{flex:1;overflow-y:auto;padding:.5rem;display:flex;flex-direction:column;gap:.5rem}.kanban-column.drag-over{background-color:var(--bg-tertiary)}.kanban-card{padding:.75rem;border-width:var(--border-width-sm);border-radius:0;cursor:grab;border-left:4px solid transparent}.kanban-card.dragging{opacity:.5;cursor:grabbing}.kanban-card.priority-high{border-left-color:var(--accent-red)}.kanban-card.priority-medium{border-left-color:var(--accent-yellow)}.kanban-card.priority-low{border-left-color:var(--accent-green)}.kanban-card-title{font-weight:600;margin-bottom:.25rem}.kanban-card-meta{font-size:var(--font-size-sm);color:var(--text-secondary);display:flex;gap:.5rem;flex-wrap:wrap}.kanban-card-due.overdue{color:var(--accent-red);font-weight:600}.progress-bar-mini{height:3px;background:var(--bg-tertiary);border-radius:2px;margin-top:.5rem}.progress-bar-mini .progress-fill{height:100%;background:var(--accent-green);border-radius:2px}.ui-mode-mobile .kanban-board{grid-template-columns:1fr}.ui-mode-mobile .kanban-column{max-height:none}.timer-widget{position:fixed;bottom:0;left:0;right:0;z-index:900;background:var(--bg-primary);border-top:var(--border-width) solid var(--border-color);box-shadow:0 -2px 8px rgba(0,0,0,.1);padding:.5rem 1rem;transition:transform .2s ease}.timer-widget.hidden{transform:translateY(100%);pointer-events:none}.timer-widget-inner{display:flex;align-items:center;gap:1rem;max-width:800px;margin:0 auto}.timer-task-name{flex:1;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.timer-elapsed{font-family:var(--font-mono, monospace);font-size:1.125rem;font-weight:700;color:var(--accent-color);min-width:5rem;text-align:center}.timer-actions{display:flex;gap:.5rem}.focus-overlay{position:fixed;inset:0;z-index:1000;background:var(--bg-primary);display:flex;align-items:center;justify-content:center;transition:opacity .3s ease}.focus-overlay.hidden{opacity:0;pointer-events:none}.focus-overlay-content{text-align:center;max-width:400px;width:100%;padding:2rem}.focus-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:2rem}.focus-label{font-family:var(--font-heading);font-size:1.25rem;font-weight:700}.focus-presets{display:flex;gap:.5rem}.focus-preset-btn.active{background:var(--accent-color);color:var(--bg-primary);border-color:var(--accent-color)}.focus-countdown{font-family:var(--font-mono, monospace);font-size:4rem;font-weight:700;line-height:1;margin-bottom:1.5rem;color:var(--text-primary)}.focus-progress-bar{height:6px;background:var(--bg-tertiary);border-radius:3px;margin-bottom:1.5rem;overflow:hidden}.focus-progress-fill{height:100%;background:var(--accent-color);border-radius:3px;transition:width 1s linear}.focus-task-name{color:var(--text-secondary);margin-bottom:2rem;font-size:.9rem}.focus-actions{display:flex;gap:1rem;justify-content:center}.time-summary-section{margin-bottom:1rem}.time-summary-toggle{display:flex;align-items:center;gap:.5rem;width:100%;padding:.5rem;background:0 0;border:none;font-family:var(--font-heading);font-size:.875rem;font-weight:700;color:var(--text-primary);cursor:pointer;text-align:left}.time-summary-toggle:hover{color:var(--accent-color)}.time-summary-toggle-icon{font-size:.625rem;transition:transform .15s ease}.time-summary-body{padding:.5rem;overflow:hidden;transition:max-height .2s ease;max-height:500px}.time-summary-body.collapsed{max-height:0;padding:0 .5rem}.time-summary-today{display:flex;justify-content:space-between;align-items:center;padding:.5rem 0;border-bottom:1px solid var(--border-color);margin-bottom:.5rem}.time-summary-today-label{font-weight:600;font-size:.875rem}.time-summary-today-value{font-family:var(--font-mono, monospace);font-weight:700;font-size:1rem;color:var(--accent-color)}.time-summary-week-header{font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--text-secondary);margin-bottom:.5rem}.time-summary-project{margin-bottom:.5rem}.time-summary-project-info{display:flex;justify-content:space-between;align-items:center;font-size:.8125rem;margin-bottom:.25rem}.time-summary-project-name{color:var(--text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}.time-summary-project-time{font-family:var(--font-mono, monospace);font-weight:600;font-size:.75rem;color:var(--text-secondary);margin-left:.5rem;flex-shrink:0}.time-summary-bar{height:4px;background:var(--bg-tertiary);border-radius:2px;overflow:hidden}.time-summary-bar-fill{height:100%;background:var(--accent-color);border-radius:2px}.unscheduled-task-actions{display:flex;gap:.25rem;margin-top:.375rem}.unscheduled-task-actions .btn{font-size:.7rem;padding:.125rem .375rem;min-height:auto;line-height:1.4}.task-time-badge{display:inline-block;font-family:var(--font-mono, monospace);font-size:.7rem;font-weight:600;color:var(--text-secondary);background:var(--bg-secondary);border:var(--border-width-sm) solid var(--border-color);border-radius:var(--radius-sm);padding:.05rem .35rem;margin-left:.375rem;vertical-align:middle;white-space:nowrap}.task-time-badge.over-estimate{color:var(--accent-red);border-color:var(--accent-red)}.task-started-icon{display:inline-block;width:0;height:0;border-style:solid;border-width:5px 0 5px 8px;border-color:transparent transparent transparent var(--accent-green);margin-right:.375rem;vertical-align:middle;cursor:pointer;opacity:.8;flex-shrink:0}.task-started-icon:hover{opacity:1}.task-timer-active{display:inline-block;width:8px;height:8px;background:var(--accent-red);border-radius:var(--radius-full);margin-left:.375rem;vertical-align:middle;animation:timer-pulse 1.5s ease-in-out infinite}@keyframes timer-pulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(.8)}}.ui-mode-mobile .timer-widget{bottom:calc(52px + env(safe-area-inset-bottom,0px))}.ui-mode-mobile .focus-countdown{font-size:3rem}.timer-active-banner{display:flex;align-items:center;gap:1rem;padding:.875rem 1rem;background:var(--bg-secondary);border:var(--border-width) solid var(--accent-color);border-radius:var(--radius-md);margin-bottom:1.5rem}.timer-active-info{flex:1;min-width:0}.timer-active-label{display:block;font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--accent-color);margin-bottom:.125rem}.timer-active-task{display:block;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.timer-active-elapsed{font-family:var(--font-mono, monospace);font-size:1.25rem;font-weight:700;color:var(--accent-color);min-width:5rem;text-align:center}.timer-active-actions{display:flex;gap:.5rem}.timer-focus-split{display:flex;align-items:center;gap:.375rem;padding:.5rem 0;margin-bottom:.5rem}.timer-focus-split-label{font-size:.8125rem;color:var(--text-secondary);font-weight:600;margin-right:.25rem}.timer-split-input{width:3.5rem;padding:.25rem .375rem;font-size:.875rem;font-family:var(--font-mono, monospace);text-align:center;border:var(--border-width) solid var(--border-color);border-radius:var(--radius-sm);background:var(--bg-primary);color:var(--text-primary)}.timer-focus-split-sep{font-size:.8125rem;color:var(--text-secondary)}.timer-task-list{display:flex;flex-direction:column;gap:0}.timer-task-item{display:flex;align-items:center;gap:1rem;padding:.75rem .5rem;border-bottom:1px solid var(--border-color)}.timer-task-item:last-child{border-bottom:none}.timer-task-info{flex:1;min-width:0}.timer-task-desc{display:block;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.timer-task-meta{display:flex;gap:.5rem;flex-wrap:wrap;margin-top:.25rem;font-size:.8125rem;color:var(--text-secondary)}.timer-task-project{font-weight:600}.timer-task-priority{font-weight:600}.timer-task-priority.priority-h,.timer-task-priority.priority-high{color:var(--accent-red)}.timer-task-priority.priority-m,.timer-task-priority.priority-medium{color:var(--accent-yellow,var(--accent-color))}.timer-task-estimate,.timer-task-tracked{font-family:var(--font-mono, monospace);font-size:.75rem}.timer-task-actions{display:flex;gap:.375rem;flex-shrink:0}.ui-mode-mobile .timer-active-banner{flex-wrap:wrap}.ui-mode-mobile .timer-active-elapsed{font-size:1rem}.ui-mode-mobile .timer-task-item{flex-wrap:wrap}.ui-mode-mobile .timer-task-actions{width:100%;justify-content:flex-end}.task-overview-section{margin-bottom:1.5rem;padding:1rem;background:var(--bg-card);border:var(--border-width) solid var(--border-color);box-shadow:var(--shadow-offset) var(--shadow-offset) 0 var(--border-color)}.task-overview-section-title{font-family:var(--font-heading);font-size:1rem;font-weight:700;margin-bottom:.75rem;display:flex;align-items:center;gap:.5rem}.task-overview-count{font-weight:400;font-size:.85rem;color:var(--text-secondary)}.task-overview-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:.75rem;margin-bottom:1rem}.task-overview-stat{text-align:center;padding:.5rem;background:var(--bg-secondary);border:var(--border-width-sm) solid var(--border-color)}.task-overview-stat-value{font-family:var(--font-heading);font-size:1.25rem;font-weight:700}.task-overview-stat-label{font-size:.75rem;color:var(--text-secondary);margin-top:.25rem}.task-overview-heatmap-nav{display:flex;align-items:center;justify-content:center;gap:1rem;margin-bottom:.75rem;font-family:var(--font-heading);font-weight:700}.task-overview-meta{display:flex;flex-direction:column;gap:.5rem}.task-overview-badges{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:.25rem}.task-overview-details{display:flex;flex-direction:column;gap:.25rem;color:var(--text-secondary);font-size:.9rem}.task-overview-subtask-list{display:flex;flex-direction:column;gap:.25rem;margin-bottom:.75rem}.task-overview-subtask{display:flex;align-items:center;gap:.5rem;padding:.25rem 0}.completed-text{text-decoration:line-through;color:var(--text-secondary)}.task-overview-add-form{display:flex;gap:.5rem;margin-top:.5rem}.task-overview-add-form .form-input{flex:1}.task-overview-sessions{display:flex;flex-direction:column;gap:.25rem;font-size:.9rem;color:var(--text-secondary)}.task-overview-session{padding:.25rem 0;border-bottom:var(--border-width-sm) solid var(--border-color)}.task-overview-annotations{display:flex;flex-direction:column;gap:.5rem;margin-bottom:.75rem}.task-overview-annotation{padding:.5rem;background:var(--bg-secondary);border:var(--border-width-sm) solid var(--border-color)}.task-overview-annotation-date{font-size:.75rem;color:var(--text-secondary);margin-bottom:.25rem}.task-overview-completion-list{margin-top:.75rem;font-size:.9rem;color:var(--text-secondary)}.task-overview-completion-item{padding:.25rem 0;border-bottom:var(--border-width-sm) solid var(--border-color)}.progress-bar{height:6px;background:var(--bg-secondary);border:var(--border-width-sm) solid var(--border-color);margin-bottom:.75rem;overflow:hidden}.progress-fill{height:100%;background:var(--accent-green);transition:width .3s ease}.progress-bar.over-estimate .progress-fill{background:var(--accent-red)}.ui-mode-mobile .task-overview-stats{grid-template-columns:repeat(2,1fr)}.toggle-nudge-dot{display:inline-block;width:7px;height:7px;background:var(--accent-red);border-radius:var(--radius-full);margin-left:.35rem;vertical-align:middle;animation:pulse-badge 2s infinite}.view-toggle-btn{position:relative}.finish-review-bar{display:flex;justify-content:flex-end;padding:1.5rem 0 1rem;margin-top:1.5rem;border-top:1px dashed var(--border-color)}.finish-review-btn{position:relative;font-size:var(--font-size-lg);padding:.65rem 1.5rem}.finish-review-modal-content{display:flex;flex-direction:column;gap:1.25rem}.past-review-banner{padding:.75rem 1rem;border:var(--border-width-sm) dashed var(--border-color);border-radius:var(--radius-md);background:var(--bg-secondary);color:var(--text-secondary);font-size:.9rem}.day-accomplished-inline{margin-top:1.5rem}.day-accomplished-inline:empty{display:none}.day-accomplished-stats{font-size:.8rem;color:var(--text-secondary);margin-bottom:.5rem}.events-calendar-container{padding:0}.calendar-nav{display:flex;align-items:center;gap:.5rem;margin-bottom:1rem}.calendar-nav-label{font-family:var(--font-heading);font-size:1.1rem;font-weight:700;margin-left:.5rem}.cal-month-grid{border:var(--border-width) solid var(--border-color);overflow:hidden;background:var(--bg-card);box-shadow:var(--shadow-offset) var(--shadow-offset) 0 var(--border-color)}.cal-month-cells,.cal-month-header{display:grid;grid-template-columns:repeat(7,1fr)}.cal-month-day-header{font-family:var(--font-heading);font-size:.75rem;font-weight:600;text-align:center;padding:.5rem;text-transform:uppercase;background:var(--bg-secondary);border-bottom:var(--border-width-sm) solid var(--border-color)}.cal-month-cell{min-height:90px;border:var(--border-width-sm) solid var(--border-color);padding:.25rem;cursor:pointer;transition:background var(--transition-fast)}.cal-month-cell:hover{background:var(--bg-secondary)}.cal-month-cell.other-month{opacity:.4}.cal-month-cell.today{border-color:var(--accent-primary);border-width:2px}.cal-month-cell-header{margin-bottom:.15rem}.cal-day-number{font-family:var(--font-heading);font-size:.8rem;font-weight:600}.cal-event-chip{font-size:.7rem;padding:1px 4px;margin-top:2px;border-radius:var(--radius-xs);background:var(--accent-blue);color:var(--text-on-accent);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer}.cal-event-chip:hover{opacity:.85}.cal-event-chip.block-focus{background:var(--accent-red)}.cal-event-chip.block-personal{background:var(--accent-yellow);color:var(--text-primary)}.cal-event-chip.block-free_time{background:var(--accent-green);color:var(--text-primary)}.cal-event-more{font-size:.65rem;color:var(--text-secondary);padding:1px 4px}.month-day-detail{margin-top:1rem;border:var(--border-width) solid var(--border-color);padding:1rem;background:var(--bg-card);box-shadow:var(--shadow-offset) var(--shadow-offset) 0 var(--border-color)}.cal-day-detail-event{display:flex;gap:.75rem;padding:.5rem 0;border-bottom:1px solid var(--border-color);cursor:pointer}.cal-day-detail-event:hover{background:var(--bg-secondary)}.cal-detail-time{font-weight:600;white-space:nowrap;min-width:100px}.cal-detail-location{color:var(--text-secondary);font-size:.85rem}.cal-week-grid{border:var(--border-width) solid var(--border-color);overflow:hidden;background:var(--bg-card);box-shadow:var(--shadow-offset) var(--shadow-offset) 0 var(--border-color)}.cal-week-header{display:grid;grid-template-columns:60px repeat(7,1fr);border-bottom:var(--border-width-sm) solid var(--border-color);background:var(--bg-secondary)}.cal-week-day-header{text-align:center;padding:.5rem;font-family:var(--font-heading)}.cal-week-day-header.today{background:color-mix(in srgb,var(--accent-primary) 15%,transparent)}.cal-week-day-name{font-size:.75rem;text-transform:uppercase;font-weight:600}.cal-week-day-num{font-size:1rem;font-weight:700;display:block}.cal-week-allday-row{display:grid;grid-template-columns:60px repeat(7,1fr);border-bottom:var(--border-width-sm) solid var(--border-color);min-height:28px}.cal-allday-label{font-size:.7rem;color:var(--text-secondary);display:flex;align-items:center;justify-content:center}.cal-week-allday-cell{padding:2px;border-left:1px solid var(--border-color)}.cal-week-body{display:grid;grid-template-columns:60px repeat(7,1fr);position:relative;overflow-y:auto;max-height:70vh}.cal-week-time-gutter{position:relative}.cal-week-hour-label{position:absolute;right:.5rem;font-size:.7rem;color:var(--text-secondary);transform:translateY(-.5em)}.cal-week-day-col{position:relative;border-left:1px solid var(--border-color)}.cal-week-day-col.today{background:color-mix(in srgb,var(--accent-primary) 5%,transparent)}.cal-week-hour-line{position:absolute;left:0;right:0;border-top:1px dashed color-mix(in srgb,var(--border-color) 50%,transparent)}.cal-week-event{position:absolute;left:2px;right:2px;border:var(--border-width-sm) solid var(--border-color);border-radius:var(--radius-sm);padding:2px 4px;background:var(--accent-blue);color:var(--text-on-accent);overflow:hidden;cursor:pointer;z-index:10;font-size:.7rem}.cal-week-event:hover{opacity:.85}.cal-week-event-title{font-weight:600}.cal-week-event-time{font-size:.65rem;opacity:.85}.cal-week-event.block-focus{background:var(--accent-red)}.cal-week-event.block-personal{background:var(--accent-yellow);color:var(--text-primary)}.cal-week-event.block-free_time{background:var(--accent-green);color:var(--text-primary)}html.ui-mode-mobile{--timeline-slot-h:22px}.ui-mode-mobile .cal-month-cell{min-height:64px;padding:4px}.ui-mode-mobile .cal-day-number{font-size:.95rem;font-weight:600}.ui-mode-mobile .cal-event-chip{font-size:.65rem}.ui-mode-mobile .cal-week-body{max-height:60vh}.ui-mode-mobile .cal-mobile-day{display:flex;flex-direction:column;height:70vh;user-select:none}.ui-mode-mobile .cal-mobile-day-header{padding:.75rem;font-weight:600;text-align:center;border-bottom:1px solid var(--border-color)}.ui-mode-mobile .cal-mobile-day-header.today{color:var(--accent-primary)}.ui-mode-mobile .cal-mobile-allday{padding:.5rem;display:flex;flex-direction:column;gap:.25rem;border-bottom:1px solid var(--border-color)}.ui-mode-mobile .cal-mobile-day-body{position:relative;flex:1;overflow-y:auto;display:grid;grid-template-columns:48px 1fr}.ui-mode-mobile .cal-mobile-day-col{position:relative;border-left:1px solid var(--border-color)}.ui-mode-mobile .settings-page-layout{flex-direction:column}.ui-mode-mobile .settings-sidebar{width:100%;border-right:none;border-bottom:1px solid var(--border-color);padding:.75rem;flex-direction:row;flex-wrap:wrap;align-items:center}.ui-mode-mobile .settings-back{margin-bottom:0;margin-right:.5rem;padding:.5rem}.ui-mode-mobile .settings-nav-items{flex-direction:row;flex-wrap:wrap;gap:.25rem}.ui-mode-mobile .settings-nav-item{padding:.5rem .75rem;border-left:none;border-radius:var(--radius-sm)}.ui-mode-mobile .settings-nav-item.active{border-left-color:transparent}.ui-mode-mobile .settings-content{padding:1rem}body.compose-window{height:100vh;display:flex;flex-direction:column;overflow:hidden}body.compose-window .compose-toolbar{display:flex;gap:.5rem;padding:.75rem 1rem;background:var(--bg-secondary);border-bottom:1px solid var(--border-color)}body.compose-window .toolbar-spacer{flex:1}body.compose-window .compose-form{flex:1;display:flex;flex-direction:column;overflow:hidden;background:var(--bg-card)}body.compose-window .status-bar{padding:.5rem 1rem;background:var(--bg-secondary);border-top:1px solid var(--border-color);font-size:.8125rem;color:var(--text-secondary)}body.compose-window .status-bar.error{color:var(--accent-red)}body.compose-window .status-bar.success{color:var(--accent-green)}body.compose-window .compose-loading{opacity:.6;pointer-events:none}
1 < \ No newline at end of file
@@ -287,6 +287,12 @@ const api = {
287 287 accountInfo: () => invoke('sync_account_info'),
288 288 },
289 289
290 + // Preferences — small JSON file in the app config dir for settings read before the DB is up
291 + preferences: {
292 + get: () => invoke('get_preferences'),
293 + setUpdateCheckOnLaunch: (enabled) => invoke('set_update_check_on_launch', { enabled }),
294 + },
295 +
290 296 // Plugins — Rhai-based import plugin management
291 297 plugins: {
292 298 listImport: () => invoke('list_import_plugins'), // All available (enabled + disabled)
@@ -335,12 +335,27 @@
335 335 * Phase 7 Tier 2 #7 — surface the version + support info in Settings rather
336 336 * than only in the one-shot welcome modal. Required for support flows.
337 337 */
338 + async function setUpdateCheckOnLaunch(enabled) {
339 + try {
340 + await GoingsOn.api.preferences.setUpdateCheckOnLaunch(enabled);
341 + GoingsOn.ui.showToast(enabled ? 'Update checks enabled' : 'Update checks disabled');
342 + } catch (err) {
343 + GoingsOn.ui.showToast('Failed to save preference: ' + GoingsOn.utils.getErrorMessage(err), 'error');
344 + }
345 + }
346 +
338 347 async function renderAbout(container) {
339 348 let appVersion = 'unknown';
340 349 try { appVersion = await window.__TAURI__.app.getVersion(); } catch (_) {}
341 350
342 351 const platform = (navigator.userAgentData?.platform || navigator.platform || 'unknown');
343 352
353 + let updateCheckOnLaunch = true;
354 + try {
355 + const prefs = await GoingsOn.api.preferences.get();
356 + updateCheckOnLaunch = prefs.updateCheckOnLaunch !== false;
357 + } catch (_) {}
358 +
344 359 container.innerHTML = `
345 360 <div class="settings-section">
346 361 <h3 class="settings-heading">About GoingsOn</h3>
@@ -356,9 +371,18 @@
356 371 <dt>Privacy</dt><dd><a href="https://makenot.work/policy" target="_blank" rel="noopener">makenot.work/policy</a></dd>
357 372 </dl>
358 373
359 - <p class="settings-desc-block about-updater-note">
360 - Updates are checked automatically on launch. A banner appears when a new signed release is available.
361 - </p>
374 + <div class="settings-toggle-row">
375 + <div>
376 + <p class="settings-subheading">Check for updates on launch</p>
377 + <p class="settings-desc">When a new signed release is available, a banner appears in the app. Install is always user-initiated.</p>
378 + </div>
379 + <label class="toggle-switch">
380 + <input type="checkbox" ${updateCheckOnLaunch ? 'checked' : ''}
381 + onchange="GoingsOn.settings.setUpdateCheckOnLaunch(this.checked)">
382 + <span class="toggle-slider"></span>
383 + </label>
384 + </div>
385 +
362 386 <p class="settings-desc-block about-copyright">&copy; 2026 Make Creative, LLC</p>
363 387 </div>
364 388 `;
@@ -445,6 +469,7 @@
445 469 togglePlugin,
446 470 onEventLeadTimeChange,
447 471 onWorkHoursChange,
472 + setUpdateCheckOnLaunch,
448 473 };
449 474
450 475 })();
@@ -1 +1 @@
1 - {"core":{"default_permission":{"identifier":"default","description":"Default core plugins set.","permissions":["core:path:default","core:event:default","core:window:default","core:webview:default","core:app:default","core:image:default","core:resources:default","core:menu:default","core:tray:default"]},"permissions":{},"permission_sets":{},"global_scope_schema":null},"core:app":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-version","allow-name","allow-tauri-version","allow-identifier","allow-bundle-type","allow-register-listener","allow-remove-listener"]},"permissions":{"allow-app-hide":{"identifier":"allow-app-hide","description":"Enables the app_hide command without any pre-configured scope.","commands":{"allow":["app_hide"],"deny":[]}},"allow-app-show":{"identifier":"allow-app-show","description":"Enables the app_show command without any pre-configured scope.","commands":{"allow":["app_show"],"deny":[]}},"allow-bundle-type":{"identifier":"allow-bundle-type","description":"Enables the bundle_type command without any pre-configured scope.","commands":{"allow":["bundle_type"],"deny":[]}},"allow-default-window-icon":{"identifier":"allow-default-window-icon","description":"Enables the default_window_icon command without any pre-configured scope.","commands":{"allow":["default_window_icon"],"deny":[]}},"allow-fetch-data-store-identifiers":{"identifier":"allow-fetch-data-store-identifiers","description":"Enables the fetch_data_store_identifiers command without any pre-configured scope.","commands":{"allow":["fetch_data_store_identifiers"],"deny":[]}},"allow-identifier":{"identifier":"allow-identifier","description":"Enables the identifier command without any pre-configured scope.","commands":{"allow":["identifier"],"deny":[]}},"allow-name":{"identifier":"allow-name","description":"Enables the name command without any pre-configured scope.","commands":{"allow":["name"],"deny":[]}},"allow-register-listener":{"identifier":"allow-register-listener","description":"Enables the register_listener command without any pre-configured scope.","commands":{"allow":["register_listener"],"deny":[]}},"allow-remove-data-store":{"identifier":"allow-remove-data-store","description":"Enables the remove_data_store command without any pre-configured scope.","commands":{"allow":["remove_data_store"],"deny":[]}},"allow-remove-listener":{"identifier":"allow-remove-listener","description":"Enables the remove_listener command without any pre-configured scope.","commands":{"allow":["remove_listener"],"deny":[]}},"allow-set-app-theme":{"identifier":"allow-set-app-theme","description":"Enables the set_app_theme command without any pre-configured scope.","commands":{"allow":["set_app_theme"],"deny":[]}},"allow-set-dock-visibility":{"identifier":"allow-set-dock-visibility","description":"Enables the set_dock_visibility command without any pre-configured scope.","commands":{"allow":["set_dock_visibility"],"deny":[]}},"allow-tauri-version":{"identifier":"allow-tauri-version","description":"Enables the tauri_version command without any pre-configured scope.","commands":{"allow":["tauri_version"],"deny":[]}},"allow-version":{"identifier":"allow-version","description":"Enables the version command without any pre-configured scope.","commands":{"allow":["version"],"deny":[]}},"deny-app-hide":{"identifier":"deny-app-hide","description":"Denies the app_hide command without any pre-configured scope.","commands":{"allow":[],"deny":["app_hide"]}},"deny-app-show":{"identifier":"deny-app-show","description":"Denies the app_show command without any pre-configured scope.","commands":{"allow":[],"deny":["app_show"]}},"deny-bundle-type":{"identifier":"deny-bundle-type","description":"Denies the bundle_type command without any pre-configured scope.","commands":{"allow":[],"deny":["bundle_type"]}},"deny-default-window-icon":{"identifier":"deny-default-window-icon","description":"Denies the default_window_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["default_window_icon"]}},"deny-fetch-data-store-identifiers":{"identifier":"deny-fetch-data-store-identifiers","description":"Denies the fetch_data_store_identifiers command without any pre-configured scope.","commands":{"allow":[],"deny":["fetch_data_store_identifiers"]}},"deny-identifier":{"identifier":"deny-identifier","description":"Denies the identifier command without any pre-configured scope.","commands":{"allow":[],"deny":["identifier"]}},"deny-name":{"identifier":"deny-name","description":"Denies the name command without any pre-configured scope.","commands":{"allow":[],"deny":["name"]}},"deny-register-listener":{"identifier":"deny-register-listener","description":"Denies the register_listener command without any pre-configured scope.","commands":{"allow":[],"deny":["register_listener"]}},"deny-remove-data-store":{"identifier":"deny-remove-data-store","description":"Denies the remove_data_store command without any pre-configured scope.","commands":{"allow":[],"deny":["remove_data_store"]}},"deny-remove-listener":{"identifier":"deny-remove-listener","description":"Denies the remove_listener command without any pre-configured scope.","commands":{"allow":[],"deny":["remove_listener"]}},"deny-set-app-theme":{"identifier":"deny-set-app-theme","description":"Denies the set_app_theme command without any pre-configured scope.","commands":{"allow":[],"deny":["set_app_theme"]}},"deny-set-dock-visibility":{"identifier":"deny-set-dock-visibility","description":"Denies the set_dock_visibility command without any pre-configured scope.","commands":{"allow":[],"deny":["set_dock_visibility"]}},"deny-tauri-version":{"identifier":"deny-tauri-version","description":"Denies the tauri_version command without any pre-configured scope.","commands":{"allow":[],"deny":["tauri_version"]}},"deny-version":{"identifier":"deny-version","description":"Denies the version command without any pre-configured scope.","commands":{"allow":[],"deny":["version"]}}},"permission_sets":{},"global_scope_schema":null},"core:event":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin, which enables all commands.","permissions":["allow-listen","allow-unlisten","allow-emit","allow-emit-to"]},"permissions":{"allow-emit":{"identifier":"allow-emit","description":"Enables the emit command without any pre-configured scope.","commands":{"allow":["emit"],"deny":[]}},"allow-emit-to":{"identifier":"allow-emit-to","description":"Enables the emit_to command without any pre-configured scope.","commands":{"allow":["emit_to"],"deny":[]}},"allow-listen":{"identifier":"allow-listen","description":"Enables the listen command without any pre-configured scope.","commands":{"allow":["listen"],"deny":[]}},"allow-unlisten":{"identifier":"allow-unlisten","description":"Enables the unlisten command without any pre-configured scope.","commands":{"allow":["unlisten"],"deny":[]}},"deny-emit":{"identifier":"deny-emit","description":"Denies the emit command without any pre-configured scope.","commands":{"allow":[],"deny":["emit"]}},"deny-emit-to":{"identifier":"deny-emit-to","description":"Denies the emit_to command without any pre-configured scope.","commands":{"allow":[],"deny":["emit_to"]}},"deny-listen":{"identifier":"deny-listen","description":"Denies the listen command without any pre-configured scope.","commands":{"allow":[],"deny":["listen"]}},"deny-unlisten":{"identifier":"deny-unlisten","description":"Denies the unlisten command without any pre-configured scope.","commands":{"allow":[],"deny":["unlisten"]}}},"permission_sets":{},"global_scope_schema":null},"core:image":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin, which enables all commands.","permissions":["allow-new","allow-from-bytes","allow-from-path","allow-rgba","allow-size"]},"permissions":{"allow-from-bytes":{"identifier":"allow-from-bytes","description":"Enables the from_bytes command without any pre-configured scope.","commands":{"allow":["from_bytes"],"deny":[]}},"allow-from-path":{"identifier":"allow-from-path","description":"Enables the from_path command without any pre-configured scope.","commands":{"allow":["from_path"],"deny":[]}},"allow-new":{"identifier":"allow-new","description":"Enables the new command without any pre-configured scope.","commands":{"allow":["new"],"deny":[]}},"allow-rgba":{"identifier":"allow-rgba","description":"Enables the rgba command without any pre-configured scope.","commands":{"allow":["rgba"],"deny":[]}},"allow-size":{"identifier":"allow-size","description":"Enables the size command without any pre-configured scope.","commands":{"allow":["size"],"deny":[]}},"deny-from-bytes":{"identifier":"deny-from-bytes","description":"Denies the from_bytes command without any pre-configured scope.","commands":{"allow":[],"deny":["from_bytes"]}},"deny-from-path":{"identifier":"deny-from-path","description":"Denies the from_path command without any pre-configured scope.","commands":{"allow":[],"deny":["from_path"]}},"deny-new":{"identifier":"deny-new","description":"Denies the new command without any pre-configured scope.","commands":{"allow":[],"deny":["new"]}},"deny-rgba":{"identifier":"deny-rgba","description":"Denies the rgba command without any pre-configured scope.","commands":{"allow":[],"deny":["rgba"]}},"deny-size":{"identifier":"deny-size","description":"Denies the size command without any pre-configured scope.","commands":{"allow":[],"deny":["size"]}}},"permission_sets":{},"global_scope_schema":null},"core:menu":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin, which enables all commands.","permissions":["allow-new","allow-append","allow-prepend","allow-insert","allow-remove","allow-remove-at","allow-items","allow-get","allow-popup","allow-create-default","allow-set-as-app-menu","allow-set-as-window-menu","allow-text","allow-set-text","allow-is-enabled","allow-set-enabled","allow-set-accelerator","allow-set-as-windows-menu-for-nsapp","allow-set-as-help-menu-for-nsapp","allow-is-checked","allow-set-checked","allow-set-icon"]},"permissions":{"allow-append":{"identifier":"allow-append","description":"Enables the append command without any pre-configured scope.","commands":{"allow":["append"],"deny":[]}},"allow-create-default":{"identifier":"allow-create-default","description":"Enables the create_default command without any pre-configured scope.","commands":{"allow":["create_default"],"deny":[]}},"allow-get":{"identifier":"allow-get","description":"Enables the get command without any pre-configured scope.","commands":{"allow":["get"],"deny":[]}},"allow-insert":{"identifier":"allow-insert","description":"Enables the insert command without any pre-configured scope.","commands":{"allow":["insert"],"deny":[]}},"allow-is-checked":{"identifier":"allow-is-checked","description":"Enables the is_checked command without any pre-configured scope.","commands":{"allow":["is_checked"],"deny":[]}},"allow-is-enabled":{"identifier":"allow-is-enabled","description":"Enables the is_enabled command without any pre-configured scope.","commands":{"allow":["is_enabled"],"deny":[]}},"allow-items":{"identifier":"allow-items","description":"Enables the items command without any pre-configured scope.","commands":{"allow":["items"],"deny":[]}},"allow-new":{"identifier":"allow-new","description":"Enables the new command without any pre-configured scope.","commands":{"allow":["new"],"deny":[]}},"allow-popup":{"identifier":"allow-popup","description":"Enables the popup command without any pre-configured scope.","commands":{"allow":["popup"],"deny":[]}},"allow-prepend":{"identifier":"allow-prepend","description":"Enables the prepend command without any pre-configured scope.","commands":{"allow":["prepend"],"deny":[]}},"allow-remove":{"identifier":"allow-remove","description":"Enables the remove command without any pre-configured scope.","commands":{"allow":["remove"],"deny":[]}},"allow-remove-at":{"identifier":"allow-remove-at","description":"Enables the remove_at command without any pre-configured scope.","commands":{"allow":["remove_at"],"deny":[]}},"allow-set-accelerator":{"identifier":"allow-set-accelerator","description":"Enables the set_accelerator command without any pre-configured scope.","commands":{"allow":["set_accelerator"],"deny":[]}},"allow-set-as-app-menu":{"identifier":"allow-set-as-app-menu","description":"Enables the set_as_app_menu command without any pre-configured scope.","commands":{"allow":["set_as_app_menu"],"deny":[]}},"allow-set-as-help-menu-for-nsapp":{"identifier":"allow-set-as-help-menu-for-nsapp","description":"Enables the set_as_help_menu_for_nsapp command without any pre-configured scope.","commands":{"allow":["set_as_help_menu_for_nsapp"],"deny":[]}},"allow-set-as-window-menu":{"identifier":"allow-set-as-window-menu","description":"Enables the set_as_window_menu command without any pre-configured scope.","commands":{"allow":["set_as_window_menu"],"deny":[]}},"allow-set-as-windows-menu-for-nsapp":{"identifier":"allow-set-as-windows-menu-for-nsapp","description":"Enables the set_as_windows_menu_for_nsapp command without any pre-configured scope.","commands":{"allow":["set_as_windows_menu_for_nsapp"],"deny":[]}},"allow-set-checked":{"identifier":"allow-set-checked","description":"Enables the set_checked command without any pre-configured scope.","commands":{"allow":["set_checked"],"deny":[]}},"allow-set-enabled":{"identifier":"allow-set-enabled","description":"Enables the set_enabled command without any pre-configured scope.","commands":{"allow":["set_enabled"],"deny":[]}},"allow-set-icon":{"identifier":"allow-set-icon","description":"Enables the set_icon command without any pre-configured scope.","commands":{"allow":["set_icon"],"deny":[]}},"allow-set-text":{"identifier":"allow-set-text","description":"Enables the set_text command without any pre-configured scope.","commands":{"allow":["set_text"],"deny":[]}},"allow-text":{"identifier":"allow-text","description":"Enables the text command without any pre-configured scope.","commands":{"allow":["text"],"deny":[]}},"deny-append":{"identifier":"deny-append","description":"Denies the append command without any pre-configured scope.","commands":{"allow":[],"deny":["append"]}},"deny-create-default":{"identifier":"deny-create-default","description":"Denies the create_default command without any pre-configured scope.","commands":{"allow":[],"deny":["create_default"]}},"deny-get":{"identifier":"deny-get","description":"Denies the get command without any pre-configured scope.","commands":{"allow":[],"deny":["get"]}},"deny-insert":{"identifier":"deny-insert","description":"Denies the insert command without any pre-configured scope.","commands":{"allow":[],"deny":["insert"]}},"deny-is-checked":{"identifier":"deny-is-checked","description":"Denies the is_checked command without any pre-configured scope.","commands":{"allow":[],"deny":["is_checked"]}},"deny-is-enabled":{"identifier":"deny-is-enabled","description":"Denies the is_enabled command without any pre-configured scope.","commands":{"allow":[],"deny":["is_enabled"]}},"deny-items":{"identifier":"deny-items","description":"Denies the items command without any pre-configured scope.","commands":{"allow":[],"deny":["items"]}},"deny-new":{"identifier":"deny-new","description":"Denies the new command without any pre-configured scope.","commands":{"allow":[],"deny":["new"]}},"deny-popup":{"identifier":"deny-popup","description":"Denies the popup command without any pre-configured scope.","commands":{"allow":[],"deny":["popup"]}},"deny-prepend":{"identifier":"deny-prepend","description":"Denies the prepend command without any pre-configured scope.","commands":{"allow":[],"deny":["prepend"]}},"deny-remove":{"identifier":"deny-remove","description":"Denies the remove command without any pre-configured scope.","commands":{"allow":[],"deny":["remove"]}},"deny-remove-at":{"identifier":"deny-remove-at","description":"Denies the remove_at command without any pre-configured scope.","commands":{"allow":[],"deny":["remove_at"]}},"deny-set-accelerator":{"identifier":"deny-set-accelerator","description":"Denies the set_accelerator command without any pre-configured scope.","commands":{"allow":[],"deny":["set_accelerator"]}},"deny-set-as-app-menu":{"identifier":"deny-set-as-app-menu","description":"Denies the set_as_app_menu command without any pre-configured scope.","commands":{"allow":[],"deny":["set_as_app_menu"]}},"deny-set-as-help-menu-for-nsapp":{"identifier":"deny-set-as-help-menu-for-nsapp","description":"Denies the set_as_help_menu_for_nsapp command without any pre-configured scope.","commands":{"allow":[],"deny":["set_as_help_menu_for_nsapp"]}},"deny-set-as-window-menu":{"identifier":"deny-set-as-window-menu","description":"Denies the set_as_window_menu command without any pre-configured scope.","commands":{"allow":[],"deny":["set_as_window_menu"]}},"deny-set-as-windows-menu-for-nsapp":{"identifier":"deny-set-as-windows-menu-for-nsapp","description":"Denies the set_as_windows_menu_for_nsapp command without any pre-configured scope.","commands":{"allow":[],"deny":["set_as_windows_menu_for_nsapp"]}},"deny-set-checked":{"identifier":"deny-set-checked","description":"Denies the set_checked command without any pre-configured scope.","commands":{"allow":[],"deny":["set_checked"]}},"deny-set-enabled":{"identifier":"deny-set-enabled","description":"Denies the set_enabled command without any pre-configured scope.","commands":{"allow":[],"deny":["set_enabled"]}},"deny-set-icon":{"identifier":"deny-set-icon","description":"Denies the set_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_icon"]}},"deny-set-text":{"identifier":"deny-set-text","description":"Denies the set_text command without any pre-configured scope.","commands":{"allow":[],"deny":["set_text"]}},"deny-text":{"identifier":"deny-text","description":"Denies the text command without any pre-configured scope.","commands":{"allow":[],"deny":["text"]}}},"permission_sets":{},"global_scope_schema":null},"core:path":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin, which enables all commands.","permissions":["allow-resolve-directory","allow-resolve","allow-normalize","allow-join","allow-dirname","allow-extname","allow-basename","allow-is-absolute"]},"permissions":{"allow-basename":{"identifier":"allow-basename","description":"Enables the basename command without any pre-configured scope.","commands":{"allow":["basename"],"deny":[]}},"allow-dirname":{"identifier":"allow-dirname","description":"Enables the dirname command without any pre-configured scope.","commands":{"allow":["dirname"],"deny":[]}},"allow-extname":{"identifier":"allow-extname","description":"Enables the extname command without any pre-configured scope.","commands":{"allow":["extname"],"deny":[]}},"allow-is-absolute":{"identifier":"allow-is-absolute","description":"Enables the is_absolute command without any pre-configured scope.","commands":{"allow":["is_absolute"],"deny":[]}},"allow-join":{"identifier":"allow-join","description":"Enables the join command without any pre-configured scope.","commands":{"allow":["join"],"deny":[]}},"allow-normalize":{"identifier":"allow-normalize","description":"Enables the normalize command without any pre-configured scope.","commands":{"allow":["normalize"],"deny":[]}},"allow-resolve":{"identifier":"allow-resolve","description":"Enables the resolve command without any pre-configured scope.","commands":{"allow":["resolve"],"deny":[]}},"allow-resolve-directory":{"identifier":"allow-resolve-directory","description":"Enables the resolve_directory command without any pre-configured scope.","commands":{"allow":["resolve_directory"],"deny":[]}},"deny-basename":{"identifier":"deny-basename","description":"Denies the basename command without any pre-configured scope.","commands":{"allow":[],"deny":["basename"]}},"deny-dirname":{"identifier":"deny-dirname","description":"Denies the dirname command without any pre-configured scope.","commands":{"allow":[],"deny":["dirname"]}},"deny-extname":{"identifier":"deny-extname","description":"Denies the extname command without any pre-configured scope.","commands":{"allow":[],"deny":["extname"]}},"deny-is-absolute":{"identifier":"deny-is-absolute","description":"Denies the is_absolute command without any pre-configured scope.","commands":{"allow":[],"deny":["is_absolute"]}},"deny-join":{"identifier":"deny-join","description":"Denies the join command without any pre-configured scope.","commands":{"allow":[],"deny":["join"]}},"deny-normalize":{"identifier":"deny-normalize","description":"Denies the normalize command without any pre-configured scope.","commands":{"allow":[],"deny":["normalize"]}},"deny-resolve":{"identifier":"deny-resolve","description":"Denies the resolve command without any pre-configured scope.","commands":{"allow":[],"deny":["resolve"]}},"deny-resolve-directory":{"identifier":"deny-resolve-directory","description":"Denies the resolve_directory command without any pre-configured scope.","commands":{"allow":[],"deny":["resolve_directory"]}}},"permission_sets":{},"global_scope_schema":null},"core:resources":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin, which enables all commands.","permissions":["allow-close"]},"permissions":{"allow-close":{"identifier":"allow-close","description":"Enables the close command without any pre-configured scope.","commands":{"allow":["close"],"deny":[]}},"deny-close":{"identifier":"deny-close","description":"Denies the close command without any pre-configured scope.","commands":{"allow":[],"deny":["close"]}}},"permission_sets":{},"global_scope_schema":null},"core:tray":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin, which enables all commands.","permissions":["allow-new","allow-get-by-id","allow-remove-by-id","allow-set-icon","allow-set-menu","allow-set-tooltip","allow-set-title","allow-set-visible","allow-set-temp-dir-path","allow-set-icon-as-template","allow-set-show-menu-on-left-click"]},"permissions":{"allow-get-by-id":{"identifier":"allow-get-by-id","description":"Enables the get_by_id command without any pre-configured scope.","commands":{"allow":["get_by_id"],"deny":[]}},"allow-new":{"identifier":"allow-new","description":"Enables the new command without any pre-configured scope.","commands":{"allow":["new"],"deny":[]}},"allow-remove-by-id":{"identifier":"allow-remove-by-id","description":"Enables the remove_by_id command without any pre-configured scope.","commands":{"allow":["remove_by_id"],"deny":[]}},"allow-set-icon":{"identifier":"allow-set-icon","description":"Enables the set_icon command without any pre-configured scope.","commands":{"allow":["set_icon"],"deny":[]}},"allow-set-icon-as-template":{"identifier":"allow-set-icon-as-template","description":"Enables the set_icon_as_template command without any pre-configured scope.","commands":{"allow":["set_icon_as_template"],"deny":[]}},"allow-set-menu":{"identifier":"allow-set-menu","description":"Enables the set_menu command without any pre-configured scope.","commands":{"allow":["set_menu"],"deny":[]}},"allow-set-show-menu-on-left-click":{"identifier":"allow-set-show-menu-on-left-click","description":"Enables the set_show_menu_on_left_click command without any pre-configured scope.","commands":{"allow":["set_show_menu_on_left_click"],"deny":[]}},"allow-set-temp-dir-path":{"identifier":"allow-set-temp-dir-path","description":"Enables the set_temp_dir_path command without any pre-configured scope.","commands":{"allow":["set_temp_dir_path"],"deny":[]}},"allow-set-title":{"identifier":"allow-set-title","description":"Enables the set_title command without any pre-configured scope.","commands":{"allow":["set_title"],"deny":[]}},"allow-set-tooltip":{"identifier":"allow-set-tooltip","description":"Enables the set_tooltip command without any pre-configured scope.","commands":{"allow":["set_tooltip"],"deny":[]}},"allow-set-visible":{"identifier":"allow-set-visible","description":"Enables the set_visible command without any pre-configured scope.","commands":{"allow":["set_visible"],"deny":[]}},"deny-get-by-id":{"identifier":"deny-get-by-id","description":"Denies the get_by_id command without any pre-configured scope.","commands":{"allow":[],"deny":["get_by_id"]}},"deny-new":{"identifier":"deny-new","description":"Denies the new command without any pre-configured scope.","commands":{"allow":[],"deny":["new"]}},"deny-remove-by-id":{"identifier":"deny-remove-by-id","description":"Denies the remove_by_id command without any pre-configured scope.","commands":{"allow":[],"deny":["remove_by_id"]}},"deny-set-icon":{"identifier":"deny-set-icon","description":"Denies the set_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_icon"]}},"deny-set-icon-as-template":{"identifier":"deny-set-icon-as-template","description":"Denies the set_icon_as_template command without any pre-configured scope.","commands":{"allow":[],"deny":["set_icon_as_template"]}},"deny-set-menu":{"identifier":"deny-set-menu","description":"Denies the set_menu command without any pre-configured scope.","commands":{"allow":[],"deny":["set_menu"]}},"deny-set-show-menu-on-left-click":{"identifier":"deny-set-show-menu-on-left-click","description":"Denies the set_show_menu_on_left_click command without any pre-configured scope.","commands":{"allow":[],"deny":["set_show_menu_on_left_click"]}},"deny-set-temp-dir-path":{"identifier":"deny-set-temp-dir-path","description":"Denies the set_temp_dir_path command without any pre-configured scope.","commands":{"allow":[],"deny":["set_temp_dir_path"]}},"deny-set-title":{"identifier":"deny-set-title","description":"Denies the set_title command without any pre-configured scope.","commands":{"allow":[],"deny":["set_title"]}},"deny-set-tooltip":{"identifier":"deny-set-tooltip","description":"Denies the set_tooltip command without any pre-configured scope.","commands":{"allow":[],"deny":["set_tooltip"]}},"deny-set-visible":{"identifier":"deny-set-visible","description":"Denies the set_visible command without any pre-configured scope.","commands":{"allow":[],"deny":["set_visible"]}}},"permission_sets":{},"global_scope_schema":null},"core:webview":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-get-all-webviews","allow-webview-position","allow-webview-size","allow-internal-toggle-devtools"]},"permissions":{"allow-clear-all-browsing-data":{"identifier":"allow-clear-all-browsing-data","description":"Enables the clear_all_browsing_data command without any pre-configured scope.","commands":{"allow":["clear_all_browsing_data"],"deny":[]}},"allow-create-webview":{"identifier":"allow-create-webview","description":"Enables the create_webview command without any pre-configured scope.","commands":{"allow":["create_webview"],"deny":[]}},"allow-create-webview-window":{"identifier":"allow-create-webview-window","description":"Enables the create_webview_window command without any pre-configured scope.","commands":{"allow":["create_webview_window"],"deny":[]}},"allow-get-all-webviews":{"identifier":"allow-get-all-webviews","description":"Enables the get_all_webviews command without any pre-configured scope.","commands":{"allow":["get_all_webviews"],"deny":[]}},"allow-internal-toggle-devtools":{"identifier":"allow-internal-toggle-devtools","description":"Enables the internal_toggle_devtools command without any pre-configured scope.","commands":{"allow":["internal_toggle_devtools"],"deny":[]}},"allow-print":{"identifier":"allow-print","description":"Enables the print command without any pre-configured scope.","commands":{"allow":["print"],"deny":[]}},"allow-reparent":{"identifier":"allow-reparent","description":"Enables the reparent command without any pre-configured scope.","commands":{"allow":["reparent"],"deny":[]}},"allow-set-webview-auto-resize":{"identifier":"allow-set-webview-auto-resize","description":"Enables the set_webview_auto_resize command without any pre-configured scope.","commands":{"allow":["set_webview_auto_resize"],"deny":[]}},"allow-set-webview-background-color":{"identifier":"allow-set-webview-background-color","description":"Enables the set_webview_background_color command without any pre-configured scope.","commands":{"allow":["set_webview_background_color"],"deny":[]}},"allow-set-webview-focus":{"identifier":"allow-set-webview-focus","description":"Enables the set_webview_focus command without any pre-configured scope.","commands":{"allow":["set_webview_focus"],"deny":[]}},"allow-set-webview-position":{"identifier":"allow-set-webview-position","description":"Enables the set_webview_position command without any pre-configured scope.","commands":{"allow":["set_webview_position"],"deny":[]}},"allow-set-webview-size":{"identifier":"allow-set-webview-size","description":"Enables the set_webview_size command without any pre-configured scope.","commands":{"allow":["set_webview_size"],"deny":[]}},"allow-set-webview-zoom":{"identifier":"allow-set-webview-zoom","description":"Enables the set_webview_zoom command without any pre-configured scope.","commands":{"allow":["set_webview_zoom"],"deny":[]}},"allow-webview-close":{"identifier":"allow-webview-close","description":"Enables the webview_close command without any pre-configured scope.","commands":{"allow":["webview_close"],"deny":[]}},"allow-webview-hide":{"identifier":"allow-webview-hide","description":"Enables the webview_hide command without any pre-configured scope.","commands":{"allow":["webview_hide"],"deny":[]}},"allow-webview-position":{"identifier":"allow-webview-position","description":"Enables the webview_position command without any pre-configured scope.","commands":{"allow":["webview_position"],"deny":[]}},"allow-webview-show":{"identifier":"allow-webview-show","description":"Enables the webview_show command without any pre-configured scope.","commands":{"allow":["webview_show"],"deny":[]}},"allow-webview-size":{"identifier":"allow-webview-size","description":"Enables the webview_size command without any pre-configured scope.","commands":{"allow":["webview_size"],"deny":[]}},"deny-clear-all-browsing-data":{"identifier":"deny-clear-all-browsing-data","description":"Denies the clear_all_browsing_data command without any pre-configured scope.","commands":{"allow":[],"deny":["clear_all_browsing_data"]}},"deny-create-webview":{"identifier":"deny-create-webview","description":"Denies the create_webview command without any pre-configured scope.","commands":{"allow":[],"deny":["create_webview"]}},"deny-create-webview-window":{"identifier":"deny-create-webview-window","description":"Denies the create_webview_window command without any pre-configured scope.","commands":{"allow":[],"deny":["create_webview_window"]}},"deny-get-all-webviews":{"identifier":"deny-get-all-webviews","description":"Denies the get_all_webviews command without any pre-configured scope.","commands":{"allow":[],"deny":["get_all_webviews"]}},"deny-internal-toggle-devtools":{"identifier":"deny-internal-toggle-devtools","description":"Denies the internal_toggle_devtools command without any pre-configured scope.","commands":{"allow":[],"deny":["internal_toggle_devtools"]}},"deny-print":{"identifier":"deny-print","description":"Denies the print command without any pre-configured scope.","commands":{"allow":[],"deny":["print"]}},"deny-reparent":{"identifier":"deny-reparent","description":"Denies the reparent command without any pre-configured scope.","commands":{"allow":[],"deny":["reparent"]}},"deny-set-webview-auto-resize":{"identifier":"deny-set-webview-auto-resize","description":"Denies the set_webview_auto_resize command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_auto_resize"]}},"deny-set-webview-background-color":{"identifier":"deny-set-webview-background-color","description":"Denies the set_webview_background_color command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_background_color"]}},"deny-set-webview-focus":{"identifier":"deny-set-webview-focus","description":"Denies the set_webview_focus command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_focus"]}},"deny-set-webview-position":{"identifier":"deny-set-webview-position","description":"Denies the set_webview_position command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_position"]}},"deny-set-webview-size":{"identifier":"deny-set-webview-size","description":"Denies the set_webview_size command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_size"]}},"deny-set-webview-zoom":{"identifier":"deny-set-webview-zoom","description":"Denies the set_webview_zoom command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_zoom"]}},"deny-webview-close":{"identifier":"deny-webview-close","description":"Denies the webview_close command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_close"]}},"deny-webview-hide":{"identifier":"deny-webview-hide","description":"Denies the webview_hide command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_hide"]}},"deny-webview-position":{"identifier":"deny-webview-position","description":"Denies the webview_position command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_position"]}},"deny-webview-show":{"identifier":"deny-webview-show","description":"Denies the webview_show command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_show"]}},"deny-webview-size":{"identifier":"deny-webview-size","description":"Denies the webview_size command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_size"]}}},"permission_sets":{},"global_scope_schema":null},"core:window":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-get-all-windows","allow-scale-factor","allow-inner-position","allow-outer-position","allow-inner-size","allow-outer-size","allow-is-fullscreen","allow-is-minimized","allow-is-maximized","allow-is-focused","allow-is-decorated","allow-is-resizable","allow-is-maximizable","allow-is-minimizable","allow-is-closable","allow-is-visible","allow-is-enabled","allow-title","allow-current-monitor","allow-primary-monitor","allow-monitor-from-point","allow-available-monitors","allow-cursor-position","allow-theme","allow-is-always-on-top","allow-internal-toggle-maximize"]},"permissions":{"allow-available-monitors":{"identifier":"allow-available-monitors","description":"Enables the available_monitors command without any pre-configured scope.","commands":{"allow":["available_monitors"],"deny":[]}},"allow-center":{"identifier":"allow-center","description":"Enables the center command without any pre-configured scope.","commands":{"allow":["center"],"deny":[]}},"allow-close":{"identifier":"allow-close","description":"Enables the close command without any pre-configured scope.","commands":{"allow":["close"],"deny":[]}},"allow-create":{"identifier":"allow-create","description":"Enables the create command without any pre-configured scope.","commands":{"allow":["create"],"deny":[]}},"allow-current-monitor":{"identifier":"allow-current-monitor","description":"Enables the current_monitor command without any pre-configured scope.","commands":{"allow":["current_monitor"],"deny":[]}},"allow-cursor-position":{"identifier":"allow-cursor-position","description":"Enables the cursor_position command without any pre-configured scope.","commands":{"allow":["cursor_position"],"deny":[]}},"allow-destroy":{"identifier":"allow-destroy","description":"Enables the destroy command without any pre-configured scope.","commands":{"allow":["destroy"],"deny":[]}},"allow-get-all-windows":{"identifier":"allow-get-all-windows","description":"Enables the get_all_windows command without any pre-configured scope.","commands":{"allow":["get_all_windows"],"deny":[]}},"allow-hide":{"identifier":"allow-hide","description":"Enables the hide command without any pre-configured scope.","commands":{"allow":["hide"],"deny":[]}},"allow-inner-position":{"identifier":"allow-inner-position","description":"Enables the inner_position command without any pre-configured scope.","commands":{"allow":["inner_position"],"deny":[]}},"allow-inner-size":{"identifier":"allow-inner-size","description":"Enables the inner_size command without any pre-configured scope.","commands":{"allow":["inner_size"],"deny":[]}},"allow-internal-toggle-maximize":{"identifier":"allow-internal-toggle-maximize","description":"Enables the internal_toggle_maximize command without any pre-configured scope.","commands":{"allow":["internal_toggle_maximize"],"deny":[]}},"allow-is-always-on-top":{"identifier":"allow-is-always-on-top","description":"Enables the is_always_on_top command without any pre-configured scope.","commands":{"allow":["is_always_on_top"],"deny":[]}},"allow-is-closable":{"identifier":"allow-is-closable","description":"Enables the is_closable command without any pre-configured scope.","commands":{"allow":["is_closable"],"deny":[]}},"allow-is-decorated":{"identifier":"allow-is-decorated","description":"Enables the is_decorated command without any pre-configured scope.","commands":{"allow":["is_decorated"],"deny":[]}},"allow-is-enabled":{"identifier":"allow-is-enabled","description":"Enables the is_enabled command without any pre-configured scope.","commands":{"allow":["is_enabled"],"deny":[]}},"allow-is-focused":{"identifier":"allow-is-focused","description":"Enables the is_focused command without any pre-configured scope.","commands":{"allow":["is_focused"],"deny":[]}},"allow-is-fullscreen":{"identifier":"allow-is-fullscreen","description":"Enables the is_fullscreen command without any pre-configured scope.","commands":{"allow":["is_fullscreen"],"deny":[]}},"allow-is-maximizable":{"identifier":"allow-is-maximizable","description":"Enables the is_maximizable command without any pre-configured scope.","commands":{"allow":["is_maximizable"],"deny":[]}},"allow-is-maximized":{"identifier":"allow-is-maximized","description":"Enables the is_maximized command without any pre-configured scope.","commands":{"allow":["is_maximized"],"deny":[]}},"allow-is-minimizable":{"identifier":"allow-is-minimizable","description":"Enables the is_minimizable command without any pre-configured scope.","commands":{"allow":["is_minimizable"],"deny":[]}},"allow-is-minimized":{"identifier":"allow-is-minimized","description":"Enables the is_minimized command without any pre-configured scope.","commands":{"allow":["is_minimized"],"deny":[]}},"allow-is-resizable":{"identifier":"allow-is-resizable","description":"Enables the is_resizable command without any pre-configured scope.","commands":{"allow":["is_resizable"],"deny":[]}},"allow-is-visible":{"identifier":"allow-is-visible","description":"Enables the is_visible command without any pre-configured scope.","commands":{"allow":["is_visible"],"deny":[]}},"allow-maximize":{"identifier":"allow-maximize","description":"Enables the maximize command without any pre-configured scope.","commands":{"allow":["maximize"],"deny":[]}},"allow-minimize":{"identifier":"allow-minimize","description":"Enables the minimize command without any pre-configured scope.","commands":{"allow":["minimize"],"deny":[]}},"allow-monitor-from-point":{"identifier":"allow-monitor-from-point","description":"Enables the monitor_from_point command without any pre-configured scope.","commands":{"allow":["monitor_from_point"],"deny":[]}},"allow-outer-position":{"identifier":"allow-outer-position","description":"Enables the outer_position command without any pre-configured scope.","commands":{"allow":["outer_position"],"deny":[]}},"allow-outer-size":{"identifier":"allow-outer-size","description":"Enables the outer_size command without any pre-configured scope.","commands":{"allow":["outer_size"],"deny":[]}},"allow-primary-monitor":{"identifier":"allow-primary-monitor","description":"Enables the primary_monitor command without any pre-configured scope.","commands":{"allow":["primary_monitor"],"deny":[]}},"allow-request-user-attention":{"identifier":"allow-request-user-attention","description":"Enables the request_user_attention command without any pre-configured scope.","commands":{"allow":["request_user_attention"],"deny":[]}},"allow-scale-factor":{"identifier":"allow-scale-factor","description":"Enables the scale_factor command without any pre-configured scope.","commands":{"allow":["scale_factor"],"deny":[]}},"allow-set-always-on-bottom":{"identifier":"allow-set-always-on-bottom","description":"Enables the set_always_on_bottom command without any pre-configured scope.","commands":{"allow":["set_always_on_bottom"],"deny":[]}},"allow-set-always-on-top":{"identifier":"allow-set-always-on-top","description":"Enables the set_always_on_top command without any pre-configured scope.","commands":{"allow":["set_always_on_top"],"deny":[]}},"allow-set-background-color":{"identifier":"allow-set-background-color","description":"Enables the set_background_color command without any pre-configured scope.","commands":{"allow":["set_background_color"],"deny":[]}},"allow-set-badge-count":{"identifier":"allow-set-badge-count","description":"Enables the set_badge_count command without any pre-configured scope.","commands":{"allow":["set_badge_count"],"deny":[]}},"allow-set-badge-label":{"identifier":"allow-set-badge-label","description":"Enables the set_badge_label command without any pre-configured scope.","commands":{"allow":["set_badge_label"],"deny":[]}},"allow-set-closable":{"identifier":"allow-set-closable","description":"Enables the set_closable command without any pre-configured scope.","commands":{"allow":["set_closable"],"deny":[]}},"allow-set-content-protected":{"identifier":"allow-set-content-protected","description":"Enables the set_content_protected command without any pre-configured scope.","commands":{"allow":["set_content_protected"],"deny":[]}},"allow-set-cursor-grab":{"identifier":"allow-set-cursor-grab","description":"Enables the set_cursor_grab command without any pre-configured scope.","commands":{"allow":["set_cursor_grab"],"deny":[]}},"allow-set-cursor-icon":{"identifier":"allow-set-cursor-icon","description":"Enables the set_cursor_icon command without any pre-configured scope.","commands":{"allow":["set_cursor_icon"],"deny":[]}},"allow-set-cursor-position":{"identifier":"allow-set-cursor-position","description":"Enables the set_cursor_position command without any pre-configured scope.","commands":{"allow":["set_cursor_position"],"deny":[]}},"allow-set-cursor-visible":{"identifier":"allow-set-cursor-visible","description":"Enables the set_cursor_visible command without any pre-configured scope.","commands":{"allow":["set_cursor_visible"],"deny":[]}},"allow-set-decorations":{"identifier":"allow-set-decorations","description":"Enables the set_decorations command without any pre-configured scope.","commands":{"allow":["set_decorations"],"deny":[]}},"allow-set-effects":{"identifier":"allow-set-effects","description":"Enables the set_effects command without any pre-configured scope.","commands":{"allow":["set_effects"],"deny":[]}},"allow-set-enabled":{"identifier":"allow-set-enabled","description":"Enables the set_enabled command without any pre-configured scope.","commands":{"allow":["set_enabled"],"deny":[]}},"allow-set-focus":{"identifier":"allow-set-focus","description":"Enables the set_focus command without any pre-configured scope.","commands":{"allow":["set_focus"],"deny":[]}},"allow-set-focusable":{"identifier":"allow-set-focusable","description":"Enables the set_focusable command without any pre-configured scope.","commands":{"allow":["set_focusable"],"deny":[]}},"allow-set-fullscreen":{"identifier":"allow-set-fullscreen","description":"Enables the set_fullscreen command without any pre-configured scope.","commands":{"allow":["set_fullscreen"],"deny":[]}},"allow-set-icon":{"identifier":"allow-set-icon","description":"Enables the set_icon command without any pre-configured scope.","commands":{"allow":["set_icon"],"deny":[]}},"allow-set-ignore-cursor-events":{"identifier":"allow-set-ignore-cursor-events","description":"Enables the set_ignore_cursor_events command without any pre-configured scope.","commands":{"allow":["set_ignore_cursor_events"],"deny":[]}},"allow-set-max-size":{"identifier":"allow-set-max-size","description":"Enables the set_max_size command without any pre-configured scope.","commands":{"allow":["set_max_size"],"deny":[]}},"allow-set-maximizable":{"identifier":"allow-set-maximizable","description":"Enables the set_maximizable command without any pre-configured scope.","commands":{"allow":["set_maximizable"],"deny":[]}},"allow-set-min-size":{"identifier":"allow-set-min-size","description":"Enables the set_min_size command without any pre-configured scope.","commands":{"allow":["set_min_size"],"deny":[]}},"allow-set-minimizable":{"identifier":"allow-set-minimizable","description":"Enables the set_minimizable command without any pre-configured scope.","commands":{"allow":["set_minimizable"],"deny":[]}},"allow-set-overlay-icon":{"identifier":"allow-set-overlay-icon","description":"Enables the set_overlay_icon command without any pre-configured scope.","commands":{"allow":["set_overlay_icon"],"deny":[]}},"allow-set-position":{"identifier":"allow-set-position","description":"Enables the set_position command without any pre-configured scope.","commands":{"allow":["set_position"],"deny":[]}},"allow-set-progress-bar":{"identifier":"allow-set-progress-bar","description":"Enables the set_progress_bar command without any pre-configured scope.","commands":{"allow":["set_progress_bar"],"deny":[]}},"allow-set-resizable":{"identifier":"allow-set-resizable","description":"Enables the set_resizable command without any pre-configured scope.","commands":{"allow":["set_resizable"],"deny":[]}},"allow-set-shadow":{"identifier":"allow-set-shadow","description":"Enables the set_shadow command without any pre-configured scope.","commands":{"allow":["set_shadow"],"deny":[]}},"allow-set-simple-fullscreen":{"identifier":"allow-set-simple-fullscreen","description":"Enables the set_simple_fullscreen command without any pre-configured scope.","commands":{"allow":["set_simple_fullscreen"],"deny":[]}},"allow-set-size":{"identifier":"allow-set-size","description":"Enables the set_size command without any pre-configured scope.","commands":{"allow":["set_size"],"deny":[]}},"allow-set-size-constraints":{"identifier":"allow-set-size-constraints","description":"Enables the set_size_constraints command without any pre-configured scope.","commands":{"allow":["set_size_constraints"],"deny":[]}},"allow-set-skip-taskbar":{"identifier":"allow-set-skip-taskbar","description":"Enables the set_skip_taskbar command without any pre-configured scope.","commands":{"allow":["set_skip_taskbar"],"deny":[]}},"allow-set-theme":{"identifier":"allow-set-theme","description":"Enables the set_theme command without any pre-configured scope.","commands":{"allow":["set_theme"],"deny":[]}},"allow-set-title":{"identifier":"allow-set-title","description":"Enables the set_title command without any pre-configured scope.","commands":{"allow":["set_title"],"deny":[]}},"allow-set-title-bar-style":{"identifier":"allow-set-title-bar-style","description":"Enables the set_title_bar_style command without any pre-configured scope.","commands":{"allow":["set_title_bar_style"],"deny":[]}},"allow-set-visible-on-all-workspaces":{"identifier":"allow-set-visible-on-all-workspaces","description":"Enables the set_visible_on_all_workspaces command without any pre-configured scope.","commands":{"allow":["set_visible_on_all_workspaces"],"deny":[]}},"allow-show":{"identifier":"allow-show","description":"Enables the show command without any pre-configured scope.","commands":{"allow":["show"],"deny":[]}},"allow-start-dragging":{"identifier":"allow-start-dragging","description":"Enables the start_dragging command without any pre-configured scope.","commands":{"allow":["start_dragging"],"deny":[]}},"allow-start-resize-dragging":{"identifier":"allow-start-resize-dragging","description":"Enables the start_resize_dragging command without any pre-configured scope.","commands":{"allow":["start_resize_dragging"],"deny":[]}},"allow-theme":{"identifier":"allow-theme","description":"Enables the theme command without any pre-configured scope.","commands":{"allow":["theme"],"deny":[]}},"allow-title":{"identifier":"allow-title","description":"Enables the title command without any pre-configured scope.","commands":{"allow":["title"],"deny":[]}},"allow-toggle-maximize":{"identifier":"allow-toggle-maximize","description":"Enables the toggle_maximize command without any pre-configured scope.","commands":{"allow":["toggle_maximize"],"deny":[]}},"allow-unmaximize":{"identifier":"allow-unmaximize","description":"Enables the unmaximize command without any pre-configured scope.","commands":{"allow":["unmaximize"],"deny":[]}},"allow-unminimize":{"identifier":"allow-unminimize","description":"Enables the unminimize command without any pre-configured scope.","commands":{"allow":["unminimize"],"deny":[]}},"deny-available-monitors":{"identifier":"deny-available-monitors","description":"Denies the available_monitors command without any pre-configured scope.","commands":{"allow":[],"deny":["available_monitors"]}},"deny-center":{"identifier":"deny-center","description":"Denies the center command without any pre-configured scope.","commands":{"allow":[],"deny":["center"]}},"deny-close":{"identifier":"deny-close","description":"Denies the close command without any pre-configured scope.","commands":{"allow":[],"deny":["close"]}},"deny-create":{"identifier":"deny-create","description":"Denies the create command without any pre-configured scope.","commands":{"allow":[],"deny":["create"]}},"deny-current-monitor":{"identifier":"deny-current-monitor","description":"Denies the current_monitor command without any pre-configured scope.","commands":{"allow":[],"deny":["current_monitor"]}},"deny-cursor-position":{"identifier":"deny-cursor-position","description":"Denies the cursor_position command without any pre-configured scope.","commands":{"allow":[],"deny":["cursor_position"]}},"deny-destroy":{"identifier":"deny-destroy","description":"Denies the destroy command without any pre-configured scope.","commands":{"allow":[],"deny":["destroy"]}},"deny-get-all-windows":{"identifier":"deny-get-all-windows","description":"Denies the get_all_windows command without any pre-configured scope.","commands":{"allow":[],"deny":["get_all_windows"]}},"deny-hide":{"identifier":"deny-hide","description":"Denies the hide command without any pre-configured scope.","commands":{"allow":[],"deny":["hide"]}},"deny-inner-position":{"identifier":"deny-inner-position","description":"Denies the inner_position command without any pre-configured scope.","commands":{"allow":[],"deny":["inner_position"]}},"deny-inner-size":{"identifier":"deny-inner-size","description":"Denies the inner_size command without any pre-configured scope.","commands":{"allow":[],"deny":["inner_size"]}},"deny-internal-toggle-maximize":{"identifier":"deny-internal-toggle-maximize","description":"Denies the internal_toggle_maximize command without any pre-configured scope.","commands":{"allow":[],"deny":["internal_toggle_maximize"]}},"deny-is-always-on-top":{"identifier":"deny-is-always-on-top","description":"Denies the is_always_on_top command without any pre-configured scope.","commands":{"allow":[],"deny":["is_always_on_top"]}},"deny-is-closable":{"identifier":"deny-is-closable","description":"Denies the is_closable command without any pre-configured scope.","commands":{"allow":[],"deny":["is_closable"]}},"deny-is-decorated":{"identifier":"deny-is-decorated","description":"Denies the is_decorated command without any pre-configured scope.","commands":{"allow":[],"deny":["is_decorated"]}},"deny-is-enabled":{"identifier":"deny-is-enabled","description":"Denies the is_enabled command without any pre-configured scope.","commands":{"allow":[],"deny":["is_enabled"]}},"deny-is-focused":{"identifier":"deny-is-focused","description":"Denies the is_focused command without any pre-configured scope.","commands":{"allow":[],"deny":["is_focused"]}},"deny-is-fullscreen":{"identifier":"deny-is-fullscreen","description":"Denies the is_fullscreen command without any pre-configured scope.","commands":{"allow":[],"deny":["is_fullscreen"]}},"deny-is-maximizable":{"identifier":"deny-is-maximizable","description":"Denies the is_maximizable command without any pre-configured scope.","commands":{"allow":[],"deny":["is_maximizable"]}},"deny-is-maximized":{"identifier":"deny-is-maximized","description":"Denies the is_maximized command without any pre-configured scope.","commands":{"allow":[],"deny":["is_maximized"]}},"deny-is-minimizable":{"identifier":"deny-is-minimizable","description":"Denies the is_minimizable command without any pre-configured scope.","commands":{"allow":[],"deny":["is_minimizable"]}},"deny-is-minimized":{"identifier":"deny-is-minimized","description":"Denies the is_minimized command without any pre-configured scope.","commands":{"allow":[],"deny":["is_minimized"]}},"deny-is-resizable":{"identifier":"deny-is-resizable","description":"Denies the is_resizable command without any pre-configured scope.","commands":{"allow":[],"deny":["is_resizable"]}},"deny-is-visible":{"identifier":"deny-is-visible","description":"Denies the is_visible command without any pre-configured scope.","commands":{"allow":[],"deny":["is_visible"]}},"deny-maximize":{"identifier":"deny-maximize","description":"Denies the maximize command without any pre-configured scope.","commands":{"allow":[],"deny":["maximize"]}},"deny-minimize":{"identifier":"deny-minimize","description":"Denies the minimize command without any pre-configured scope.","commands":{"allow":[],"deny":["minimize"]}},"deny-monitor-from-point":{"identifier":"deny-monitor-from-point","description":"Denies the monitor_from_point command without any pre-configured scope.","commands":{"allow":[],"deny":["monitor_from_point"]}},"deny-outer-position":{"identifier":"deny-outer-position","description":"Denies the outer_position command without any pre-configured scope.","commands":{"allow":[],"deny":["outer_position"]}},"deny-outer-size":{"identifier":"deny-outer-size","description":"Denies the outer_size command without any pre-configured scope.","commands":{"allow":[],"deny":["outer_size"]}},"deny-primary-monitor":{"identifier":"deny-primary-monitor","description":"Denies the primary_monitor command without any pre-configured scope.","commands":{"allow":[],"deny":["primary_monitor"]}},"deny-request-user-attention":{"identifier":"deny-request-user-attention","description":"Denies the request_user_attention command without any pre-configured scope.","commands":{"allow":[],"deny":["request_user_attention"]}},"deny-scale-factor":{"identifier":"deny-scale-factor","description":"Denies the scale_factor command without any pre-configured scope.","commands":{"allow":[],"deny":["scale_factor"]}},"deny-set-always-on-bottom":{"identifier":"deny-set-always-on-bottom","description":"Denies the set_always_on_bottom command without any pre-configured scope.","commands":{"allow":[],"deny":["set_always_on_bottom"]}},"deny-set-always-on-top":{"identifier":"deny-set-always-on-top","description":"Denies the set_always_on_top command without any pre-configured scope.","commands":{"allow":[],"deny":["set_always_on_top"]}},"deny-set-background-color":{"identifier":"deny-set-background-color","description":"Denies the set_background_color command without any pre-configured scope.","commands":{"allow":[],"deny":["set_background_color"]}},"deny-set-badge-count":{"identifier":"deny-set-badge-count","description":"Denies the set_badge_count command without any pre-configured scope.","commands":{"allow":[],"deny":["set_badge_count"]}},"deny-set-badge-label":{"identifier":"deny-set-badge-label","description":"Denies the set_badge_label command without any pre-configured scope.","commands":{"allow":[],"deny":["set_badge_label"]}},"deny-set-closable":{"identifier":"deny-set-closable","description":"Denies the set_closable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_closable"]}},"deny-set-content-protected":{"identifier":"deny-set-content-protected","description":"Denies the set_content_protected command without any pre-configured scope.","commands":{"allow":[],"deny":["set_content_protected"]}},"deny-set-cursor-grab":{"identifier":"deny-set-cursor-grab","description":"Denies the set_cursor_grab command without any pre-configured scope.","commands":{"allow":[],"deny":["set_cursor_grab"]}},"deny-set-cursor-icon":{"identifier":"deny-set-cursor-icon","description":"Denies the set_cursor_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_cursor_icon"]}},"deny-set-cursor-position":{"identifier":"deny-set-cursor-position","description":"Denies the set_cursor_position command without any pre-configured scope.","commands":{"allow":[],"deny":["set_cursor_position"]}},"deny-set-cursor-visible":{"identifier":"deny-set-cursor-visible","description":"Denies the set_cursor_visible command without any pre-configured scope.","commands":{"allow":[],"deny":["set_cursor_visible"]}},"deny-set-decorations":{"identifier":"deny-set-decorations","description":"Denies the set_decorations command without any pre-configured scope.","commands":{"allow":[],"deny":["set_decorations"]}},"deny-set-effects":{"identifier":"deny-set-effects","description":"Denies the set_effects command without any pre-configured scope.","commands":{"allow":[],"deny":["set_effects"]}},"deny-set-enabled":{"identifier":"deny-set-enabled","description":"Denies the set_enabled command without any pre-configured scope.","commands":{"allow":[],"deny":["set_enabled"]}},"deny-set-focus":{"identifier":"deny-set-focus","description":"Denies the set_focus command without any pre-configured scope.","commands":{"allow":[],"deny":["set_focus"]}},"deny-set-focusable":{"identifier":"deny-set-focusable","description":"Denies the set_focusable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_focusable"]}},"deny-set-fullscreen":{"identifier":"deny-set-fullscreen","description":"Denies the set_fullscreen command without any pre-configured scope.","commands":{"allow":[],"deny":["set_fullscreen"]}},"deny-set-icon":{"identifier":"deny-set-icon","description":"Denies the set_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_icon"]}},"deny-set-ignore-cursor-events":{"identifier":"deny-set-ignore-cursor-events","description":"Denies the set_ignore_cursor_events command without any pre-configured scope.","commands":{"allow":[],"deny":["set_ignore_cursor_events"]}},"deny-set-max-size":{"identifier":"deny-set-max-size","description":"Denies the set_max_size command without any pre-configured scope.","commands":{"allow":[],"deny":["set_max_size"]}},"deny-set-maximizable":{"identifier":"deny-set-maximizable","description":"Denies the set_maximizable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_maximizable"]}},"deny-set-min-size":{"identifier":"deny-set-min-size","description":"Denies the set_min_size command without any pre-configured scope.","commands":{"allow":[],"deny":["set_min_size"]}},"deny-set-minimizable":{"identifier":"deny-set-minimizable","description":"Denies the set_minimizable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_minimizable"]}},"deny-set-overlay-icon":{"identifier":"deny-set-overlay-icon","description":"Denies the set_overlay_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_overlay_icon"]}},"deny-set-position":{"identifier":"deny-set-position","description":"Denies the set_position command without any pre-configured scope.","commands":{"allow":[],"deny":["set_position"]}},"deny-set-progress-bar":{"identifier":"deny-set-progress-bar","description":"Denies the set_progress_bar command without any pre-configured scope.","commands":{"allow":[],"deny":["set_progress_bar"]}},"deny-set-resizable":{"identifier":"deny-set-resizable","description":"Denies the set_resizable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_resizable"]}},"deny-set-shadow":{"identifier":"deny-set-shadow","description":"Denies the set_shadow command without any pre-configured scope.","commands":{"allow":[],"deny":["set_shadow"]}},"deny-set-simple-fullscreen":{"identifier":"deny-set-simple-fullscreen","description":"Denies the set_simple_fullscreen command without any pre-configured scope.","commands":{"allow":[],"deny":["set_simple_fullscreen"]}},"deny-set-size":{"identifier":"deny-set-size","description":"Denies the set_size command without any pre-configured scope.","commands":{"allow":[],"deny":["set_size"]}},"deny-set-size-constraints":{"identifier":"deny-set-size-constraints","description":"Denies the set_size_constraints command without any pre-configured scope.","commands":{"allow":[],"deny":["set_size_constraints"]}},"deny-set-skip-taskbar":{"identifier":"deny-set-skip-taskbar","description":"Denies the set_skip_taskbar command without any pre-configured scope.","commands":{"allow":[],"deny":["set_skip_taskbar"]}},"deny-set-theme":{"identifier":"deny-set-theme","description":"Denies the set_theme command without any pre-configured scope.","commands":{"allow":[],"deny":["set_theme"]}},"deny-set-title":{"identifier":"deny-set-title","description":"Denies the set_title command without any pre-configured scope.","commands":{"allow":[],"deny":["set_title"]}},"deny-set-title-bar-style":{"identifier":"deny-set-title-bar-style","description":"Denies the set_title_bar_style command without any pre-configured scope.","commands":{"allow":[],"deny":["set_title_bar_style"]}},"deny-set-visible-on-all-workspaces":{"identifier":"deny-set-visible-on-all-workspaces","description":"Denies the set_visible_on_all_workspaces command without any pre-configured scope.","commands":{"allow":[],"deny":["set_visible_on_all_workspaces"]}},"deny-show":{"identifier":"deny-show","description":"Denies the show command without any pre-configured scope.","commands":{"allow":[],"deny":["show"]}},"deny-start-dragging":{"identifier":"deny-start-dragging","description":"Denies the start_dragging command without any pre-configured scope.","commands":{"allow":[],"deny":["start_dragging"]}},"deny-start-resize-dragging":{"identifier":"deny-start-resize-dragging","description":"Denies the start_resize_dragging command without any pre-configured scope.","commands":{"allow":[],"deny":["start_resize_dragging"]}},"deny-theme":{"identifier":"deny-theme","description":"Denies the theme command without any pre-configured scope.","commands":{"allow":[],"deny":["theme"]}},"deny-title":{"identifier":"deny-title","description":"Denies the title command without any pre-configured scope.","commands":{"allow":[],"deny":["title"]}},"deny-toggle-maximize":{"identifier":"deny-toggle-maximize","description":"Denies the toggle_maximize command without any pre-configured scope.","commands":{"allow":[],"deny":["toggle_maximize"]}},"deny-unmaximize":{"identifier":"deny-unmaximize","description":"Denies the unmaximize command without any pre-configured scope.","commands":{"allow":[],"deny":["unmaximize"]}},"deny-unminimize":{"identifier":"deny-unminimize","description":"Denies the unminimize command without any pre-configured scope.","commands":{"allow":[],"deny":["unminimize"]}}},"permission_sets":{},"global_scope_schema":null},"dialog":{"default_permission":{"identifier":"default","description":"This permission set configures the types of dialogs\navailable from the dialog plugin.\n\n#### Granted Permissions\n\nAll dialog types are enabled.\n\n\n","permissions":["allow-ask","allow-confirm","allow-message","allow-save","allow-open"]},"permissions":{"allow-ask":{"identifier":"allow-ask","description":"Enables the ask command without any pre-configured scope.","commands":{"allow":["ask"],"deny":[]}},"allow-confirm":{"identifier":"allow-confirm","description":"Enables the confirm command without any pre-configured scope.","commands":{"allow":["confirm"],"deny":[]}},"allow-message":{"identifier":"allow-message","description":"Enables the message command without any pre-configured scope.","commands":{"allow":["message"],"deny":[]}},"allow-open":{"identifier":"allow-open","description":"Enables the open command without any pre-configured scope.","commands":{"allow":["open"],"deny":[]}},"allow-save":{"identifier":"allow-save","description":"Enables the save command without any pre-configured scope.","commands":{"allow":["save"],"deny":[]}},"deny-ask":{"identifier":"deny-ask","description":"Denies the ask command without any pre-configured scope.","commands":{"allow":[],"deny":["ask"]}},"deny-confirm":{"identifier":"deny-confirm","description":"Denies the confirm command without any pre-configured scope.","commands":{"allow":[],"deny":["confirm"]}},"deny-message":{"identifier":"deny-message","description":"Denies the message command without any pre-configured scope.","commands":{"allow":[],"deny":["message"]}},"deny-open":{"identifier":"deny-open","description":"Denies the open command without any pre-configured scope.","commands":{"allow":[],"deny":["open"]}},"deny-save":{"identifier":"deny-save","description":"Denies the save command without any pre-configured scope.","commands":{"allow":[],"deny":["save"]}}},"permission_sets":{},"global_scope_schema":null}}
1 > \ No newline at end of file
1 + {"core":{"default_permission":{"identifier":"default","description":"Default core plugins set.","permissions":["core:path:default","core:event:default","core:window:default","core:webview:default","core:app:default","core:image:default","core:resources:default","core:menu:default","core:tray:default"]},"permissions":{},"permission_sets":{},"global_scope_schema":null},"core:app":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-version","allow-name","allow-tauri-version","allow-identifier","allow-bundle-type","allow-register-listener","allow-remove-listener"]},"permissions":{"allow-app-hide":{"identifier":"allow-app-hide","description":"Enables the app_hide command without any pre-configured scope.","commands":{"allow":["app_hide"],"deny":[]}},"allow-app-show":{"identifier":"allow-app-show","description":"Enables the app_show command without any pre-configured scope.","commands":{"allow":["app_show"],"deny":[]}},"allow-bundle-type":{"identifier":"allow-bundle-type","description":"Enables the bundle_type command without any pre-configured scope.","commands":{"allow":["bundle_type"],"deny":[]}},"allow-default-window-icon":{"identifier":"allow-default-window-icon","description":"Enables the default_window_icon command without any pre-configured scope.","commands":{"allow":["default_window_icon"],"deny":[]}},"allow-fetch-data-store-identifiers":{"identifier":"allow-fetch-data-store-identifiers","description":"Enables the fetch_data_store_identifiers command without any pre-configured scope.","commands":{"allow":["fetch_data_store_identifiers"],"deny":[]}},"allow-identifier":{"identifier":"allow-identifier","description":"Enables the identifier command without any pre-configured scope.","commands":{"allow":["identifier"],"deny":[]}},"allow-name":{"identifier":"allow-name","description":"Enables the name command without any pre-configured scope.","commands":{"allow":["name"],"deny":[]}},"allow-register-listener":{"identifier":"allow-register-listener","description":"Enables the register_listener command without any pre-configured scope.","commands":{"allow":["register_listener"],"deny":[]}},"allow-remove-data-store":{"identifier":"allow-remove-data-store","description":"Enables the remove_data_store command without any pre-configured scope.","commands":{"allow":["remove_data_store"],"deny":[]}},"allow-remove-listener":{"identifier":"allow-remove-listener","description":"Enables the remove_listener command without any pre-configured scope.","commands":{"allow":["remove_listener"],"deny":[]}},"allow-set-app-theme":{"identifier":"allow-set-app-theme","description":"Enables the set_app_theme command without any pre-configured scope.","commands":{"allow":["set_app_theme"],"deny":[]}},"allow-set-dock-visibility":{"identifier":"allow-set-dock-visibility","description":"Enables the set_dock_visibility command without any pre-configured scope.","commands":{"allow":["set_dock_visibility"],"deny":[]}},"allow-tauri-version":{"identifier":"allow-tauri-version","description":"Enables the tauri_version command without any pre-configured scope.","commands":{"allow":["tauri_version"],"deny":[]}},"allow-version":{"identifier":"allow-version","description":"Enables the version command without any pre-configured scope.","commands":{"allow":["version"],"deny":[]}},"deny-app-hide":{"identifier":"deny-app-hide","description":"Denies the app_hide command without any pre-configured scope.","commands":{"allow":[],"deny":["app_hide"]}},"deny-app-show":{"identifier":"deny-app-show","description":"Denies the app_show command without any pre-configured scope.","commands":{"allow":[],"deny":["app_show"]}},"deny-bundle-type":{"identifier":"deny-bundle-type","description":"Denies the bundle_type command without any pre-configured scope.","commands":{"allow":[],"deny":["bundle_type"]}},"deny-default-window-icon":{"identifier":"deny-default-window-icon","description":"Denies the default_window_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["default_window_icon"]}},"deny-fetch-data-store-identifiers":{"identifier":"deny-fetch-data-store-identifiers","description":"Denies the fetch_data_store_identifiers command without any pre-configured scope.","commands":{"allow":[],"deny":["fetch_data_store_identifiers"]}},"deny-identifier":{"identifier":"deny-identifier","description":"Denies the identifier command without any pre-configured scope.","commands":{"allow":[],"deny":["identifier"]}},"deny-name":{"identifier":"deny-name","description":"Denies the name command without any pre-configured scope.","commands":{"allow":[],"deny":["name"]}},"deny-register-listener":{"identifier":"deny-register-listener","description":"Denies the register_listener command without any pre-configured scope.","commands":{"allow":[],"deny":["register_listener"]}},"deny-remove-data-store":{"identifier":"deny-remove-data-store","description":"Denies the remove_data_store command without any pre-configured scope.","commands":{"allow":[],"deny":["remove_data_store"]}},"deny-remove-listener":{"identifier":"deny-remove-listener","description":"Denies the remove_listener command without any pre-configured scope.","commands":{"allow":[],"deny":["remove_listener"]}},"deny-set-app-theme":{"identifier":"deny-set-app-theme","description":"Denies the set_app_theme command without any pre-configured scope.","commands":{"allow":[],"deny":["set_app_theme"]}},"deny-set-dock-visibility":{"identifier":"deny-set-dock-visibility","description":"Denies the set_dock_visibility command without any pre-configured scope.","commands":{"allow":[],"deny":["set_dock_visibility"]}},"deny-tauri-version":{"identifier":"deny-tauri-version","description":"Denies the tauri_version command without any pre-configured scope.","commands":{"allow":[],"deny":["tauri_version"]}},"deny-version":{"identifier":"deny-version","description":"Denies the version command without any pre-configured scope.","commands":{"allow":[],"deny":["version"]}}},"permission_sets":{},"global_scope_schema":null},"core:event":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin, which enables all commands.","permissions":["allow-listen","allow-unlisten","allow-emit","allow-emit-to"]},"permissions":{"allow-emit":{"identifier":"allow-emit","description":"Enables the emit command without any pre-configured scope.","commands":{"allow":["emit"],"deny":[]}},"allow-emit-to":{"identifier":"allow-emit-to","description":"Enables the emit_to command without any pre-configured scope.","commands":{"allow":["emit_to"],"deny":[]}},"allow-listen":{"identifier":"allow-listen","description":"Enables the listen command without any pre-configured scope.","commands":{"allow":["listen"],"deny":[]}},"allow-unlisten":{"identifier":"allow-unlisten","description":"Enables the unlisten command without any pre-configured scope.","commands":{"allow":["unlisten"],"deny":[]}},"deny-emit":{"identifier":"deny-emit","description":"Denies the emit command without any pre-configured scope.","commands":{"allow":[],"deny":["emit"]}},"deny-emit-to":{"identifier":"deny-emit-to","description":"Denies the emit_to command without any pre-configured scope.","commands":{"allow":[],"deny":["emit_to"]}},"deny-listen":{"identifier":"deny-listen","description":"Denies the listen command without any pre-configured scope.","commands":{"allow":[],"deny":["listen"]}},"deny-unlisten":{"identifier":"deny-unlisten","description":"Denies the unlisten command without any pre-configured scope.","commands":{"allow":[],"deny":["unlisten"]}}},"permission_sets":{},"global_scope_schema":null},"core:image":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin, which enables all commands.","permissions":["allow-new","allow-from-bytes","allow-from-path","allow-rgba","allow-size"]},"permissions":{"allow-from-bytes":{"identifier":"allow-from-bytes","description":"Enables the from_bytes command without any pre-configured scope.","commands":{"allow":["from_bytes"],"deny":[]}},"allow-from-path":{"identifier":"allow-from-path","description":"Enables the from_path command without any pre-configured scope.","commands":{"allow":["from_path"],"deny":[]}},"allow-new":{"identifier":"allow-new","description":"Enables the new command without any pre-configured scope.","commands":{"allow":["new"],"deny":[]}},"allow-rgba":{"identifier":"allow-rgba","description":"Enables the rgba command without any pre-configured scope.","commands":{"allow":["rgba"],"deny":[]}},"allow-size":{"identifier":"allow-size","description":"Enables the size command without any pre-configured scope.","commands":{"allow":["size"],"deny":[]}},"deny-from-bytes":{"identifier":"deny-from-bytes","description":"Denies the from_bytes command without any pre-configured scope.","commands":{"allow":[],"deny":["from_bytes"]}},"deny-from-path":{"identifier":"deny-from-path","description":"Denies the from_path command without any pre-configured scope.","commands":{"allow":[],"deny":["from_path"]}},"deny-new":{"identifier":"deny-new","description":"Denies the new command without any pre-configured scope.","commands":{"allow":[],"deny":["new"]}},"deny-rgba":{"identifier":"deny-rgba","description":"Denies the rgba command without any pre-configured scope.","commands":{"allow":[],"deny":["rgba"]}},"deny-size":{"identifier":"deny-size","description":"Denies the size command without any pre-configured scope.","commands":{"allow":[],"deny":["size"]}}},"permission_sets":{},"global_scope_schema":null},"core:menu":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin, which enables all commands.","permissions":["allow-new","allow-append","allow-prepend","allow-insert","allow-remove","allow-remove-at","allow-items","allow-get","allow-popup","allow-create-default","allow-set-as-app-menu","allow-set-as-window-menu","allow-text","allow-set-text","allow-is-enabled","allow-set-enabled","allow-set-accelerator","allow-set-as-windows-menu-for-nsapp","allow-set-as-help-menu-for-nsapp","allow-is-checked","allow-set-checked","allow-set-icon"]},"permissions":{"allow-append":{"identifier":"allow-append","description":"Enables the append command without any pre-configured scope.","commands":{"allow":["append"],"deny":[]}},"allow-create-default":{"identifier":"allow-create-default","description":"Enables the create_default command without any pre-configured scope.","commands":{"allow":["create_default"],"deny":[]}},"allow-get":{"identifier":"allow-get","description":"Enables the get command without any pre-configured scope.","commands":{"allow":["get"],"deny":[]}},"allow-insert":{"identifier":"allow-insert","description":"Enables the insert command without any pre-configured scope.","commands":{"allow":["insert"],"deny":[]}},"allow-is-checked":{"identifier":"allow-is-checked","description":"Enables the is_checked command without any pre-configured scope.","commands":{"allow":["is_checked"],"deny":[]}},"allow-is-enabled":{"identifier":"allow-is-enabled","description":"Enables the is_enabled command without any pre-configured scope.","commands":{"allow":["is_enabled"],"deny":[]}},"allow-items":{"identifier":"allow-items","description":"Enables the items command without any pre-configured scope.","commands":{"allow":["items"],"deny":[]}},"allow-new":{"identifier":"allow-new","description":"Enables the new command without any pre-configured scope.","commands":{"allow":["new"],"deny":[]}},"allow-popup":{"identifier":"allow-popup","description":"Enables the popup command without any pre-configured scope.","commands":{"allow":["popup"],"deny":[]}},"allow-prepend":{"identifier":"allow-prepend","description":"Enables the prepend command without any pre-configured scope.","commands":{"allow":["prepend"],"deny":[]}},"allow-remove":{"identifier":"allow-remove","description":"Enables the remove command without any pre-configured scope.","commands":{"allow":["remove"],"deny":[]}},"allow-remove-at":{"identifier":"allow-remove-at","description":"Enables the remove_at command without any pre-configured scope.","commands":{"allow":["remove_at"],"deny":[]}},"allow-set-accelerator":{"identifier":"allow-set-accelerator","description":"Enables the set_accelerator command without any pre-configured scope.","commands":{"allow":["set_accelerator"],"deny":[]}},"allow-set-as-app-menu":{"identifier":"allow-set-as-app-menu","description":"Enables the set_as_app_menu command without any pre-configured scope.","commands":{"allow":["set_as_app_menu"],"deny":[]}},"allow-set-as-help-menu-for-nsapp":{"identifier":"allow-set-as-help-menu-for-nsapp","description":"Enables the set_as_help_menu_for_nsapp command without any pre-configured scope.","commands":{"allow":["set_as_help_menu_for_nsapp"],"deny":[]}},"allow-set-as-window-menu":{"identifier":"allow-set-as-window-menu","description":"Enables the set_as_window_menu command without any pre-configured scope.","commands":{"allow":["set_as_window_menu"],"deny":[]}},"allow-set-as-windows-menu-for-nsapp":{"identifier":"allow-set-as-windows-menu-for-nsapp","description":"Enables the set_as_windows_menu_for_nsapp command without any pre-configured scope.","commands":{"allow":["set_as_windows_menu_for_nsapp"],"deny":[]}},"allow-set-checked":{"identifier":"allow-set-checked","description":"Enables the set_checked command without any pre-configured scope.","commands":{"allow":["set_checked"],"deny":[]}},"allow-set-enabled":{"identifier":"allow-set-enabled","description":"Enables the set_enabled command without any pre-configured scope.","commands":{"allow":["set_enabled"],"deny":[]}},"allow-set-icon":{"identifier":"allow-set-icon","description":"Enables the set_icon command without any pre-configured scope.","commands":{"allow":["set_icon"],"deny":[]}},"allow-set-text":{"identifier":"allow-set-text","description":"Enables the set_text command without any pre-configured scope.","commands":{"allow":["set_text"],"deny":[]}},"allow-text":{"identifier":"allow-text","description":"Enables the text command without any pre-configured scope.","commands":{"allow":["text"],"deny":[]}},"deny-append":{"identifier":"deny-append","description":"Denies the append command without any pre-configured scope.","commands":{"allow":[],"deny":["append"]}},"deny-create-default":{"identifier":"deny-create-default","description":"Denies the create_default command without any pre-configured scope.","commands":{"allow":[],"deny":["create_default"]}},"deny-get":{"identifier":"deny-get","description":"Denies the get command without any pre-configured scope.","commands":{"allow":[],"deny":["get"]}},"deny-insert":{"identifier":"deny-insert","description":"Denies the insert command without any pre-configured scope.","commands":{"allow":[],"deny":["insert"]}},"deny-is-checked":{"identifier":"deny-is-checked","description":"Denies the is_checked command without any pre-configured scope.","commands":{"allow":[],"deny":["is_checked"]}},"deny-is-enabled":{"identifier":"deny-is-enabled","description":"Denies the is_enabled command without any pre-configured scope.","commands":{"allow":[],"deny":["is_enabled"]}},"deny-items":{"identifier":"deny-items","description":"Denies the items command without any pre-configured scope.","commands":{"allow":[],"deny":["items"]}},"deny-new":{"identifier":"deny-new","description":"Denies the new command without any pre-configured scope.","commands":{"allow":[],"deny":["new"]}},"deny-popup":{"identifier":"deny-popup","description":"Denies the popup command without any pre-configured scope.","commands":{"allow":[],"deny":["popup"]}},"deny-prepend":{"identifier":"deny-prepend","description":"Denies the prepend command without any pre-configured scope.","commands":{"allow":[],"deny":["prepend"]}},"deny-remove":{"identifier":"deny-remove","description":"Denies the remove command without any pre-configured scope.","commands":{"allow":[],"deny":["remove"]}},"deny-remove-at":{"identifier":"deny-remove-at","description":"Denies the remove_at command without any pre-configured scope.","commands":{"allow":[],"deny":["remove_at"]}},"deny-set-accelerator":{"identifier":"deny-set-accelerator","description":"Denies the set_accelerator command without any pre-configured scope.","commands":{"allow":[],"deny":["set_accelerator"]}},"deny-set-as-app-menu":{"identifier":"deny-set-as-app-menu","description":"Denies the set_as_app_menu command without any pre-configured scope.","commands":{"allow":[],"deny":["set_as_app_menu"]}},"deny-set-as-help-menu-for-nsapp":{"identifier":"deny-set-as-help-menu-for-nsapp","description":"Denies the set_as_help_menu_for_nsapp command without any pre-configured scope.","commands":{"allow":[],"deny":["set_as_help_menu_for_nsapp"]}},"deny-set-as-window-menu":{"identifier":"deny-set-as-window-menu","description":"Denies the set_as_window_menu command without any pre-configured scope.","commands":{"allow":[],"deny":["set_as_window_menu"]}},"deny-set-as-windows-menu-for-nsapp":{"identifier":"deny-set-as-windows-menu-for-nsapp","description":"Denies the set_as_windows_menu_for_nsapp command without any pre-configured scope.","commands":{"allow":[],"deny":["set_as_windows_menu_for_nsapp"]}},"deny-set-checked":{"identifier":"deny-set-checked","description":"Denies the set_checked command without any pre-configured scope.","commands":{"allow":[],"deny":["set_checked"]}},"deny-set-enabled":{"identifier":"deny-set-enabled","description":"Denies the set_enabled command without any pre-configured scope.","commands":{"allow":[],"deny":["set_enabled"]}},"deny-set-icon":{"identifier":"deny-set-icon","description":"Denies the set_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_icon"]}},"deny-set-text":{"identifier":"deny-set-text","description":"Denies the set_text command without any pre-configured scope.","commands":{"allow":[],"deny":["set_text"]}},"deny-text":{"identifier":"deny-text","description":"Denies the text command without any pre-configured scope.","commands":{"allow":[],"deny":["text"]}}},"permission_sets":{},"global_scope_schema":null},"core:path":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin, which enables all commands.","permissions":["allow-resolve-directory","allow-resolve","allow-normalize","allow-join","allow-dirname","allow-extname","allow-basename","allow-is-absolute"]},"permissions":{"allow-basename":{"identifier":"allow-basename","description":"Enables the basename command without any pre-configured scope.","commands":{"allow":["basename"],"deny":[]}},"allow-dirname":{"identifier":"allow-dirname","description":"Enables the dirname command without any pre-configured scope.","commands":{"allow":["dirname"],"deny":[]}},"allow-extname":{"identifier":"allow-extname","description":"Enables the extname command without any pre-configured scope.","commands":{"allow":["extname"],"deny":[]}},"allow-is-absolute":{"identifier":"allow-is-absolute","description":"Enables the is_absolute command without any pre-configured scope.","commands":{"allow":["is_absolute"],"deny":[]}},"allow-join":{"identifier":"allow-join","description":"Enables the join command without any pre-configured scope.","commands":{"allow":["join"],"deny":[]}},"allow-normalize":{"identifier":"allow-normalize","description":"Enables the normalize command without any pre-configured scope.","commands":{"allow":["normalize"],"deny":[]}},"allow-resolve":{"identifier":"allow-resolve","description":"Enables the resolve command without any pre-configured scope.","commands":{"allow":["resolve"],"deny":[]}},"allow-resolve-directory":{"identifier":"allow-resolve-directory","description":"Enables the resolve_directory command without any pre-configured scope.","commands":{"allow":["resolve_directory"],"deny":[]}},"deny-basename":{"identifier":"deny-basename","description":"Denies the basename command without any pre-configured scope.","commands":{"allow":[],"deny":["basename"]}},"deny-dirname":{"identifier":"deny-dirname","description":"Denies the dirname command without any pre-configured scope.","commands":{"allow":[],"deny":["dirname"]}},"deny-extname":{"identifier":"deny-extname","description":"Denies the extname command without any pre-configured scope.","commands":{"allow":[],"deny":["extname"]}},"deny-is-absolute":{"identifier":"deny-is-absolute","description":"Denies the is_absolute command without any pre-configured scope.","commands":{"allow":[],"deny":["is_absolute"]}},"deny-join":{"identifier":"deny-join","description":"Denies the join command without any pre-configured scope.","commands":{"allow":[],"deny":["join"]}},"deny-normalize":{"identifier":"deny-normalize","description":"Denies the normalize command without any pre-configured scope.","commands":{"allow":[],"deny":["normalize"]}},"deny-resolve":{"identifier":"deny-resolve","description":"Denies the resolve command without any pre-configured scope.","commands":{"allow":[],"deny":["resolve"]}},"deny-resolve-directory":{"identifier":"deny-resolve-directory","description":"Denies the resolve_directory command without any pre-configured scope.","commands":{"allow":[],"deny":["resolve_directory"]}}},"permission_sets":{},"global_scope_schema":null},"core:resources":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin, which enables all commands.","permissions":["allow-close"]},"permissions":{"allow-close":{"identifier":"allow-close","description":"Enables the close command without any pre-configured scope.","commands":{"allow":["close"],"deny":[]}},"deny-close":{"identifier":"deny-close","description":"Denies the close command without any pre-configured scope.","commands":{"allow":[],"deny":["close"]}}},"permission_sets":{},"global_scope_schema":null},"core:tray":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin, which enables all commands.","permissions":["allow-new","allow-get-by-id","allow-remove-by-id","allow-set-icon","allow-set-menu","allow-set-tooltip","allow-set-title","allow-set-visible","allow-set-temp-dir-path","allow-set-icon-as-template","allow-set-show-menu-on-left-click"]},"permissions":{"allow-get-by-id":{"identifier":"allow-get-by-id","description":"Enables the get_by_id command without any pre-configured scope.","commands":{"allow":["get_by_id"],"deny":[]}},"allow-new":{"identifier":"allow-new","description":"Enables the new command without any pre-configured scope.","commands":{"allow":["new"],"deny":[]}},"allow-remove-by-id":{"identifier":"allow-remove-by-id","description":"Enables the remove_by_id command without any pre-configured scope.","commands":{"allow":["remove_by_id"],"deny":[]}},"allow-set-icon":{"identifier":"allow-set-icon","description":"Enables the set_icon command without any pre-configured scope.","commands":{"allow":["set_icon"],"deny":[]}},"allow-set-icon-as-template":{"identifier":"allow-set-icon-as-template","description":"Enables the set_icon_as_template command without any pre-configured scope.","commands":{"allow":["set_icon_as_template"],"deny":[]}},"allow-set-menu":{"identifier":"allow-set-menu","description":"Enables the set_menu command without any pre-configured scope.","commands":{"allow":["set_menu"],"deny":[]}},"allow-set-show-menu-on-left-click":{"identifier":"allow-set-show-menu-on-left-click","description":"Enables the set_show_menu_on_left_click command without any pre-configured scope.","commands":{"allow":["set_show_menu_on_left_click"],"deny":[]}},"allow-set-temp-dir-path":{"identifier":"allow-set-temp-dir-path","description":"Enables the set_temp_dir_path command without any pre-configured scope.","commands":{"allow":["set_temp_dir_path"],"deny":[]}},"allow-set-title":{"identifier":"allow-set-title","description":"Enables the set_title command without any pre-configured scope.","commands":{"allow":["set_title"],"deny":[]}},"allow-set-tooltip":{"identifier":"allow-set-tooltip","description":"Enables the set_tooltip command without any pre-configured scope.","commands":{"allow":["set_tooltip"],"deny":[]}},"allow-set-visible":{"identifier":"allow-set-visible","description":"Enables the set_visible command without any pre-configured scope.","commands":{"allow":["set_visible"],"deny":[]}},"deny-get-by-id":{"identifier":"deny-get-by-id","description":"Denies the get_by_id command without any pre-configured scope.","commands":{"allow":[],"deny":["get_by_id"]}},"deny-new":{"identifier":"deny-new","description":"Denies the new command without any pre-configured scope.","commands":{"allow":[],"deny":["new"]}},"deny-remove-by-id":{"identifier":"deny-remove-by-id","description":"Denies the remove_by_id command without any pre-configured scope.","commands":{"allow":[],"deny":["remove_by_id"]}},"deny-set-icon":{"identifier":"deny-set-icon","description":"Denies the set_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_icon"]}},"deny-set-icon-as-template":{"identifier":"deny-set-icon-as-template","description":"Denies the set_icon_as_template command without any pre-configured scope.","commands":{"allow":[],"deny":["set_icon_as_template"]}},"deny-set-menu":{"identifier":"deny-set-menu","description":"Denies the set_menu command without any pre-configured scope.","commands":{"allow":[],"deny":["set_menu"]}},"deny-set-show-menu-on-left-click":{"identifier":"deny-set-show-menu-on-left-click","description":"Denies the set_show_menu_on_left_click command without any pre-configured scope.","commands":{"allow":[],"deny":["set_show_menu_on_left_click"]}},"deny-set-temp-dir-path":{"identifier":"deny-set-temp-dir-path","description":"Denies the set_temp_dir_path command without any pre-configured scope.","commands":{"allow":[],"deny":["set_temp_dir_path"]}},"deny-set-title":{"identifier":"deny-set-title","description":"Denies the set_title command without any pre-configured scope.","commands":{"allow":[],"deny":["set_title"]}},"deny-set-tooltip":{"identifier":"deny-set-tooltip","description":"Denies the set_tooltip command without any pre-configured scope.","commands":{"allow":[],"deny":["set_tooltip"]}},"deny-set-visible":{"identifier":"deny-set-visible","description":"Denies the set_visible command without any pre-configured scope.","commands":{"allow":[],"deny":["set_visible"]}}},"permission_sets":{},"global_scope_schema":null},"core:webview":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-get-all-webviews","allow-webview-position","allow-webview-size","allow-internal-toggle-devtools"]},"permissions":{"allow-clear-all-browsing-data":{"identifier":"allow-clear-all-browsing-data","description":"Enables the clear_all_browsing_data command without any pre-configured scope.","commands":{"allow":["clear_all_browsing_data"],"deny":[]}},"allow-create-webview":{"identifier":"allow-create-webview","description":"Enables the create_webview command without any pre-configured scope.","commands":{"allow":["create_webview"],"deny":[]}},"allow-create-webview-window":{"identifier":"allow-create-webview-window","description":"Enables the create_webview_window command without any pre-configured scope.","commands":{"allow":["create_webview_window"],"deny":[]}},"allow-get-all-webviews":{"identifier":"allow-get-all-webviews","description":"Enables the get_all_webviews command without any pre-configured scope.","commands":{"allow":["get_all_webviews"],"deny":[]}},"allow-internal-toggle-devtools":{"identifier":"allow-internal-toggle-devtools","description":"Enables the internal_toggle_devtools command without any pre-configured scope.","commands":{"allow":["internal_toggle_devtools"],"deny":[]}},"allow-print":{"identifier":"allow-print","description":"Enables the print command without any pre-configured scope.","commands":{"allow":["print"],"deny":[]}},"allow-reparent":{"identifier":"allow-reparent","description":"Enables the reparent command without any pre-configured scope.","commands":{"allow":["reparent"],"deny":[]}},"allow-set-webview-auto-resize":{"identifier":"allow-set-webview-auto-resize","description":"Enables the set_webview_auto_resize command without any pre-configured scope.","commands":{"allow":["set_webview_auto_resize"],"deny":[]}},"allow-set-webview-background-color":{"identifier":"allow-set-webview-background-color","description":"Enables the set_webview_background_color command without any pre-configured scope.","commands":{"allow":["set_webview_background_color"],"deny":[]}},"allow-set-webview-focus":{"identifier":"allow-set-webview-focus","description":"Enables the set_webview_focus command without any pre-configured scope.","commands":{"allow":["set_webview_focus"],"deny":[]}},"allow-set-webview-position":{"identifier":"allow-set-webview-position","description":"Enables the set_webview_position command without any pre-configured scope.","commands":{"allow":["set_webview_position"],"deny":[]}},"allow-set-webview-size":{"identifier":"allow-set-webview-size","description":"Enables the set_webview_size command without any pre-configured scope.","commands":{"allow":["set_webview_size"],"deny":[]}},"allow-set-webview-zoom":{"identifier":"allow-set-webview-zoom","description":"Enables the set_webview_zoom command without any pre-configured scope.","commands":{"allow":["set_webview_zoom"],"deny":[]}},"allow-webview-close":{"identifier":"allow-webview-close","description":"Enables the webview_close command without any pre-configured scope.","commands":{"allow":["webview_close"],"deny":[]}},"allow-webview-hide":{"identifier":"allow-webview-hide","description":"Enables the webview_hide command without any pre-configured scope.","commands":{"allow":["webview_hide"],"deny":[]}},"allow-webview-position":{"identifier":"allow-webview-position","description":"Enables the webview_position command without any pre-configured scope.","commands":{"allow":["webview_position"],"deny":[]}},"allow-webview-show":{"identifier":"allow-webview-show","description":"Enables the webview_show command without any pre-configured scope.","commands":{"allow":["webview_show"],"deny":[]}},"allow-webview-size":{"identifier":"allow-webview-size","description":"Enables the webview_size command without any pre-configured scope.","commands":{"allow":["webview_size"],"deny":[]}},"deny-clear-all-browsing-data":{"identifier":"deny-clear-all-browsing-data","description":"Denies the clear_all_browsing_data command without any pre-configured scope.","commands":{"allow":[],"deny":["clear_all_browsing_data"]}},"deny-create-webview":{"identifier":"deny-create-webview","description":"Denies the create_webview command without any pre-configured scope.","commands":{"allow":[],"deny":["create_webview"]}},"deny-create-webview-window":{"identifier":"deny-create-webview-window","description":"Denies the create_webview_window command without any pre-configured scope.","commands":{"allow":[],"deny":["create_webview_window"]}},"deny-get-all-webviews":{"identifier":"deny-get-all-webviews","description":"Denies the get_all_webviews command without any pre-configured scope.","commands":{"allow":[],"deny":["get_all_webviews"]}},"deny-internal-toggle-devtools":{"identifier":"deny-internal-toggle-devtools","description":"Denies the internal_toggle_devtools command without any pre-configured scope.","commands":{"allow":[],"deny":["internal_toggle_devtools"]}},"deny-print":{"identifier":"deny-print","description":"Denies the print command without any pre-configured scope.","commands":{"allow":[],"deny":["print"]}},"deny-reparent":{"identifier":"deny-reparent","description":"Denies the reparent command without any pre-configured scope.","commands":{"allow":[],"deny":["reparent"]}},"deny-set-webview-auto-resize":{"identifier":"deny-set-webview-auto-resize","description":"Denies the set_webview_auto_resize command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_auto_resize"]}},"deny-set-webview-background-color":{"identifier":"deny-set-webview-background-color","description":"Denies the set_webview_background_color command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_background_color"]}},"deny-set-webview-focus":{"identifier":"deny-set-webview-focus","description":"Denies the set_webview_focus command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_focus"]}},"deny-set-webview-position":{"identifier":"deny-set-webview-position","description":"Denies the set_webview_position command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_position"]}},"deny-set-webview-size":{"identifier":"deny-set-webview-size","description":"Denies the set_webview_size command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_size"]}},"deny-set-webview-zoom":{"identifier":"deny-set-webview-zoom","description":"Denies the set_webview_zoom command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_zoom"]}},"deny-webview-close":{"identifier":"deny-webview-close","description":"Denies the webview_close command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_close"]}},"deny-webview-hide":{"identifier":"deny-webview-hide","description":"Denies the webview_hide command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_hide"]}},"deny-webview-position":{"identifier":"deny-webview-position","description":"Denies the webview_position command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_position"]}},"deny-webview-show":{"identifier":"deny-webview-show","description":"Denies the webview_show command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_show"]}},"deny-webview-size":{"identifier":"deny-webview-size","description":"Denies the webview_size command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_size"]}}},"permission_sets":{},"global_scope_schema":null},"core:window":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-get-all-windows","allow-scale-factor","allow-inner-position","allow-outer-position","allow-inner-size","allow-outer-size","allow-is-fullscreen","allow-is-minimized","allow-is-maximized","allow-is-focused","allow-is-decorated","allow-is-resizable","allow-is-maximizable","allow-is-minimizable","allow-is-closable","allow-is-visible","allow-is-enabled","allow-title","allow-current-monitor","allow-primary-monitor","allow-monitor-from-point","allow-available-monitors","allow-cursor-position","allow-theme","allow-is-always-on-top","allow-internal-toggle-maximize"]},"permissions":{"allow-available-monitors":{"identifier":"allow-available-monitors","description":"Enables the available_monitors command without any pre-configured scope.","commands":{"allow":["available_monitors"],"deny":[]}},"allow-center":{"identifier":"allow-center","description":"Enables the center command without any pre-configured scope.","commands":{"allow":["center"],"deny":[]}},"allow-close":{"identifier":"allow-close","description":"Enables the close command without any pre-configured scope.","commands":{"allow":["close"],"deny":[]}},"allow-create":{"identifier":"allow-create","description":"Enables the create command without any pre-configured scope.","commands":{"allow":["create"],"deny":[]}},"allow-current-monitor":{"identifier":"allow-current-monitor","description":"Enables the current_monitor command without any pre-configured scope.","commands":{"allow":["current_monitor"],"deny":[]}},"allow-cursor-position":{"identifier":"allow-cursor-position","description":"Enables the cursor_position command without any pre-configured scope.","commands":{"allow":["cursor_position"],"deny":[]}},"allow-destroy":{"identifier":"allow-destroy","description":"Enables the destroy command without any pre-configured scope.","commands":{"allow":["destroy"],"deny":[]}},"allow-get-all-windows":{"identifier":"allow-get-all-windows","description":"Enables the get_all_windows command without any pre-configured scope.","commands":{"allow":["get_all_windows"],"deny":[]}},"allow-hide":{"identifier":"allow-hide","description":"Enables the hide command without any pre-configured scope.","commands":{"allow":["hide"],"deny":[]}},"allow-inner-position":{"identifier":"allow-inner-position","description":"Enables the inner_position command without any pre-configured scope.","commands":{"allow":["inner_position"],"deny":[]}},"allow-inner-size":{"identifier":"allow-inner-size","description":"Enables the inner_size command without any pre-configured scope.","commands":{"allow":["inner_size"],"deny":[]}},"allow-internal-toggle-maximize":{"identifier":"allow-internal-toggle-maximize","description":"Enables the internal_toggle_maximize command without any pre-configured scope.","commands":{"allow":["internal_toggle_maximize"],"deny":[]}},"allow-is-always-on-top":{"identifier":"allow-is-always-on-top","description":"Enables the is_always_on_top command without any pre-configured scope.","commands":{"allow":["is_always_on_top"],"deny":[]}},"allow-is-closable":{"identifier":"allow-is-closable","description":"Enables the is_closable command without any pre-configured scope.","commands":{"allow":["is_closable"],"deny":[]}},"allow-is-decorated":{"identifier":"allow-is-decorated","description":"Enables the is_decorated command without any pre-configured scope.","commands":{"allow":["is_decorated"],"deny":[]}},"allow-is-enabled":{"identifier":"allow-is-enabled","description":"Enables the is_enabled command without any pre-configured scope.","commands":{"allow":["is_enabled"],"deny":[]}},"allow-is-focused":{"identifier":"allow-is-focused","description":"Enables the is_focused command without any pre-configured scope.","commands":{"allow":["is_focused"],"deny":[]}},"allow-is-fullscreen":{"identifier":"allow-is-fullscreen","description":"Enables the is_fullscreen command without any pre-configured scope.","commands":{"allow":["is_fullscreen"],"deny":[]}},"allow-is-maximizable":{"identifier":"allow-is-maximizable","description":"Enables the is_maximizable command without any pre-configured scope.","commands":{"allow":["is_maximizable"],"deny":[]}},"allow-is-maximized":{"identifier":"allow-is-maximized","description":"Enables the is_maximized command without any pre-configured scope.","commands":{"allow":["is_maximized"],"deny":[]}},"allow-is-minimizable":{"identifier":"allow-is-minimizable","description":"Enables the is_minimizable command without any pre-configured scope.","commands":{"allow":["is_minimizable"],"deny":[]}},"allow-is-minimized":{"identifier":"allow-is-minimized","description":"Enables the is_minimized command without any pre-configured scope.","commands":{"allow":["is_minimized"],"deny":[]}},"allow-is-resizable":{"identifier":"allow-is-resizable","description":"Enables the is_resizable command without any pre-configured scope.","commands":{"allow":["is_resizable"],"deny":[]}},"allow-is-visible":{"identifier":"allow-is-visible","description":"Enables the is_visible command without any pre-configured scope.","commands":{"allow":["is_visible"],"deny":[]}},"allow-maximize":{"identifier":"allow-maximize","description":"Enables the maximize command without any pre-configured scope.","commands":{"allow":["maximize"],"deny":[]}},"allow-minimize":{"identifier":"allow-minimize","description":"Enables the minimize command without any pre-configured scope.","commands":{"allow":["minimize"],"deny":[]}},"allow-monitor-from-point":{"identifier":"allow-monitor-from-point","description":"Enables the monitor_from_point command without any pre-configured scope.","commands":{"allow":["monitor_from_point"],"deny":[]}},"allow-outer-position":{"identifier":"allow-outer-position","description":"Enables the outer_position command without any pre-configured scope.","commands":{"allow":["outer_position"],"deny":[]}},"allow-outer-size":{"identifier":"allow-outer-size","description":"Enables the outer_size command without any pre-configured scope.","commands":{"allow":["outer_size"],"deny":[]}},"allow-primary-monitor":{"identifier":"allow-primary-monitor","description":"Enables the primary_monitor command without any pre-configured scope.","commands":{"allow":["primary_monitor"],"deny":[]}},"allow-request-user-attention":{"identifier":"allow-request-user-attention","description":"Enables the request_user_attention command without any pre-configured scope.","commands":{"allow":["request_user_attention"],"deny":[]}},"allow-scale-factor":{"identifier":"allow-scale-factor","description":"Enables the scale_factor command without any pre-configured scope.","commands":{"allow":["scale_factor"],"deny":[]}},"allow-set-always-on-bottom":{"identifier":"allow-set-always-on-bottom","description":"Enables the set_always_on_bottom command without any pre-configured scope.","commands":{"allow":["set_always_on_bottom"],"deny":[]}},"allow-set-always-on-top":{"identifier":"allow-set-always-on-top","description":"Enables the set_always_on_top command without any pre-configured scope.","commands":{"allow":["set_always_on_top"],"deny":[]}},"allow-set-background-color":{"identifier":"allow-set-background-color","description":"Enables the set_background_color command without any pre-configured scope.","commands":{"allow":["set_background_color"],"deny":[]}},"allow-set-badge-count":{"identifier":"allow-set-badge-count","description":"Enables the set_badge_count command without any pre-configured scope.","commands":{"allow":["set_badge_count"],"deny":[]}},"allow-set-badge-label":{"identifier":"allow-set-badge-label","description":"Enables the set_badge_label command without any pre-configured scope.","commands":{"allow":["set_badge_label"],"deny":[]}},"allow-set-closable":{"identifier":"allow-set-closable","description":"Enables the set_closable command without any pre-configured scope.","commands":{"allow":["set_closable"],"deny":[]}},"allow-set-content-protected":{"identifier":"allow-set-content-protected","description":"Enables the set_content_protected command without any pre-configured scope.","commands":{"allow":["set_content_protected"],"deny":[]}},"allow-set-cursor-grab":{"identifier":"allow-set-cursor-grab","description":"Enables the set_cursor_grab command without any pre-configured scope.","commands":{"allow":["set_cursor_grab"],"deny":[]}},"allow-set-cursor-icon":{"identifier":"allow-set-cursor-icon","description":"Enables the set_cursor_icon command without any pre-configured scope.","commands":{"allow":["set_cursor_icon"],"deny":[]}},"allow-set-cursor-position":{"identifier":"allow-set-cursor-position","description":"Enables the set_cursor_position command without any pre-configured scope.","commands":{"allow":["set_cursor_position"],"deny":[]}},"allow-set-cursor-visible":{"identifier":"allow-set-cursor-visible","description":"Enables the set_cursor_visible command without any pre-configured scope.","commands":{"allow":["set_cursor_visible"],"deny":[]}},"allow-set-decorations":{"identifier":"allow-set-decorations","description":"Enables the set_decorations command without any pre-configured scope.","commands":{"allow":["set_decorations"],"deny":[]}},"allow-set-effects":{"identifier":"allow-set-effects","description":"Enables the set_effects command without any pre-configured scope.","commands":{"allow":["set_effects"],"deny":[]}},"allow-set-enabled":{"identifier":"allow-set-enabled","description":"Enables the set_enabled command without any pre-configured scope.","commands":{"allow":["set_enabled"],"deny":[]}},"allow-set-focus":{"identifier":"allow-set-focus","description":"Enables the set_focus command without any pre-configured scope.","commands":{"allow":["set_focus"],"deny":[]}},"allow-set-focusable":{"identifier":"allow-set-focusable","description":"Enables the set_focusable command without any pre-configured scope.","commands":{"allow":["set_focusable"],"deny":[]}},"allow-set-fullscreen":{"identifier":"allow-set-fullscreen","description":"Enables the set_fullscreen command without any pre-configured scope.","commands":{"allow":["set_fullscreen"],"deny":[]}},"allow-set-icon":{"identifier":"allow-set-icon","description":"Enables the set_icon command without any pre-configured scope.","commands":{"allow":["set_icon"],"deny":[]}},"allow-set-ignore-cursor-events":{"identifier":"allow-set-ignore-cursor-events","description":"Enables the set_ignore_cursor_events command without any pre-configured scope.","commands":{"allow":["set_ignore_cursor_events"],"deny":[]}},"allow-set-max-size":{"identifier":"allow-set-max-size","description":"Enables the set_max_size command without any pre-configured scope.","commands":{"allow":["set_max_size"],"deny":[]}},"allow-set-maximizable":{"identifier":"allow-set-maximizable","description":"Enables the set_maximizable command without any pre-configured scope.","commands":{"allow":["set_maximizable"],"deny":[]}},"allow-set-min-size":{"identifier":"allow-set-min-size","description":"Enables the set_min_size command without any pre-configured scope.","commands":{"allow":["set_min_size"],"deny":[]}},"allow-set-minimizable":{"identifier":"allow-set-minimizable","description":"Enables the set_minimizable command without any pre-configured scope.","commands":{"allow":["set_minimizable"],"deny":[]}},"allow-set-overlay-icon":{"identifier":"allow-set-overlay-icon","description":"Enables the set_overlay_icon command without any pre-configured scope.","commands":{"allow":["set_overlay_icon"],"deny":[]}},"allow-set-position":{"identifier":"allow-set-position","description":"Enables the set_position command without any pre-configured scope.","commands":{"allow":["set_position"],"deny":[]}},"allow-set-progress-bar":{"identifier":"allow-set-progress-bar","description":"Enables the set_progress_bar command without any pre-configured scope.","commands":{"allow":["set_progress_bar"],"deny":[]}},"allow-set-resizable":{"identifier":"allow-set-resizable","description":"Enables the set_resizable command without any pre-configured scope.","commands":{"allow":["set_resizable"],"deny":[]}},"allow-set-shadow":{"identifier":"allow-set-shadow","description":"Enables the set_shadow command without any pre-configured scope.","commands":{"allow":["set_shadow"],"deny":[]}},"allow-set-simple-fullscreen":{"identifier":"allow-set-simple-fullscreen","description":"Enables the set_simple_fullscreen command without any pre-configured scope.","commands":{"allow":["set_simple_fullscreen"],"deny":[]}},"allow-set-size":{"identifier":"allow-set-size","description":"Enables the set_size command without any pre-configured scope.","commands":{"allow":["set_size"],"deny":[]}},"allow-set-size-constraints":{"identifier":"allow-set-size-constraints","description":"Enables the set_size_constraints command without any pre-configured scope.","commands":{"allow":["set_size_constraints"],"deny":[]}},"allow-set-skip-taskbar":{"identifier":"allow-set-skip-taskbar","description":"Enables the set_skip_taskbar command without any pre-configured scope.","commands":{"allow":["set_skip_taskbar"],"deny":[]}},"allow-set-theme":{"identifier":"allow-set-theme","description":"Enables the set_theme command without any pre-configured scope.","commands":{"allow":["set_theme"],"deny":[]}},"allow-set-title":{"identifier":"allow-set-title","description":"Enables the set_title command without any pre-configured scope.","commands":{"allow":["set_title"],"deny":[]}},"allow-set-title-bar-style":{"identifier":"allow-set-title-bar-style","description":"Enables the set_title_bar_style command without any pre-configured scope.","commands":{"allow":["set_title_bar_style"],"deny":[]}},"allow-set-visible-on-all-workspaces":{"identifier":"allow-set-visible-on-all-workspaces","description":"Enables the set_visible_on_all_workspaces command without any pre-configured scope.","commands":{"allow":["set_visible_on_all_workspaces"],"deny":[]}},"allow-show":{"identifier":"allow-show","description":"Enables the show command without any pre-configured scope.","commands":{"allow":["show"],"deny":[]}},"allow-start-dragging":{"identifier":"allow-start-dragging","description":"Enables the start_dragging command without any pre-configured scope.","commands":{"allow":["start_dragging"],"deny":[]}},"allow-start-resize-dragging":{"identifier":"allow-start-resize-dragging","description":"Enables the start_resize_dragging command without any pre-configured scope.","commands":{"allow":["start_resize_dragging"],"deny":[]}},"allow-theme":{"identifier":"allow-theme","description":"Enables the theme command without any pre-configured scope.","commands":{"allow":["theme"],"deny":[]}},"allow-title":{"identifier":"allow-title","description":"Enables the title command without any pre-configured scope.","commands":{"allow":["title"],"deny":[]}},"allow-toggle-maximize":{"identifier":"allow-toggle-maximize","description":"Enables the toggle_maximize command without any pre-configured scope.","commands":{"allow":["toggle_maximize"],"deny":[]}},"allow-unmaximize":{"identifier":"allow-unmaximize","description":"Enables the unmaximize command without any pre-configured scope.","commands":{"allow":["unmaximize"],"deny":[]}},"allow-unminimize":{"identifier":"allow-unminimize","description":"Enables the unminimize command without any pre-configured scope.","commands":{"allow":["unminimize"],"deny":[]}},"deny-available-monitors":{"identifier":"deny-available-monitors","description":"Denies the available_monitors command without any pre-configured scope.","commands":{"allow":[],"deny":["available_monitors"]}},"deny-center":{"identifier":"deny-center","description":"Denies the center command without any pre-configured scope.","commands":{"allow":[],"deny":["center"]}},"deny-close":{"identifier":"deny-close","description":"Denies the close command without any pre-configured scope.","commands":{"allow":[],"deny":["close"]}},"deny-create":{"identifier":"deny-create","description":"Denies the create command without any pre-configured scope.","commands":{"allow":[],"deny":["create"]}},"deny-current-monitor":{"identifier":"deny-current-monitor","description":"Denies the current_monitor command without any pre-configured scope.","commands":{"allow":[],"deny":["current_monitor"]}},"deny-cursor-position":{"identifier":"deny-cursor-position","description":"Denies the cursor_position command without any pre-configured scope.","commands":{"allow":[],"deny":["cursor_position"]}},"deny-destroy":{"identifier":"deny-destroy","description":"Denies the destroy command without any pre-configured scope.","commands":{"allow":[],"deny":["destroy"]}},"deny-get-all-windows":{"identifier":"deny-get-all-windows","description":"Denies the get_all_windows command without any pre-configured scope.","commands":{"allow":[],"deny":["get_all_windows"]}},"deny-hide":{"identifier":"deny-hide","description":"Denies the hide command without any pre-configured scope.","commands":{"allow":[],"deny":["hide"]}},"deny-inner-position":{"identifier":"deny-inner-position","description":"Denies the inner_position command without any pre-configured scope.","commands":{"allow":[],"deny":["inner_position"]}},"deny-inner-size":{"identifier":"deny-inner-size","description":"Denies the inner_size command without any pre-configured scope.","commands":{"allow":[],"deny":["inner_size"]}},"deny-internal-toggle-maximize":{"identifier":"deny-internal-toggle-maximize","description":"Denies the internal_toggle_maximize command without any pre-configured scope.","commands":{"allow":[],"deny":["internal_toggle_maximize"]}},"deny-is-always-on-top":{"identifier":"deny-is-always-on-top","description":"Denies the is_always_on_top command without any pre-configured scope.","commands":{"allow":[],"deny":["is_always_on_top"]}},"deny-is-closable":{"identifier":"deny-is-closable","description":"Denies the is_closable command without any pre-configured scope.","commands":{"allow":[],"deny":["is_closable"]}},"deny-is-decorated":{"identifier":"deny-is-decorated","description":"Denies the is_decorated command without any pre-configured scope.","commands":{"allow":[],"deny":["is_decorated"]}},"deny-is-enabled":{"identifier":"deny-is-enabled","description":"Denies the is_enabled command without any pre-configured scope.","commands":{"allow":[],"deny":["is_enabled"]}},"deny-is-focused":{"identifier":"deny-is-focused","description":"Denies the is_focused command without any pre-configured scope.","commands":{"allow":[],"deny":["is_focused"]}},"deny-is-fullscreen":{"identifier":"deny-is-fullscreen","description":"Denies the is_fullscreen command without any pre-configured scope.","commands":{"allow":[],"deny":["is_fullscreen"]}},"deny-is-maximizable":{"identifier":"deny-is-maximizable","description":"Denies the is_maximizable command without any pre-configured scope.","commands":{"allow":[],"deny":["is_maximizable"]}},"deny-is-maximized":{"identifier":"deny-is-maximized","description":"Denies the is_maximized command without any pre-configured scope.","commands":{"allow":[],"deny":["is_maximized"]}},"deny-is-minimizable":{"identifier":"deny-is-minimizable","description":"Denies the is_minimizable command without any pre-configured scope.","commands":{"allow":[],"deny":["is_minimizable"]}},"deny-is-minimized":{"identifier":"deny-is-minimized","description":"Denies the is_minimized command without any pre-configured scope.","commands":{"allow":[],"deny":["is_minimized"]}},"deny-is-resizable":{"identifier":"deny-is-resizable","description":"Denies the is_resizable command without any pre-configured scope.","commands":{"allow":[],"deny":["is_resizable"]}},"deny-is-visible":{"identifier":"deny-is-visible","description":"Denies the is_visible command without any pre-configured scope.","commands":{"allow":[],"deny":["is_visible"]}},"deny-maximize":{"identifier":"deny-maximize","description":"Denies the maximize command without any pre-configured scope.","commands":{"allow":[],"deny":["maximize"]}},"deny-minimize":{"identifier":"deny-minimize","description":"Denies the minimize command without any pre-configured scope.","commands":{"allow":[],"deny":["minimize"]}},"deny-monitor-from-point":{"identifier":"deny-monitor-from-point","description":"Denies the monitor_from_point command without any pre-configured scope.","commands":{"allow":[],"deny":["monitor_from_point"]}},"deny-outer-position":{"identifier":"deny-outer-position","description":"Denies the outer_position command without any pre-configured scope.","commands":{"allow":[],"deny":["outer_position"]}},"deny-outer-size":{"identifier":"deny-outer-size","description":"Denies the outer_size command without any pre-configured scope.","commands":{"allow":[],"deny":["outer_size"]}},"deny-primary-monitor":{"identifier":"deny-primary-monitor","description":"Denies the primary_monitor command without any pre-configured scope.","commands":{"allow":[],"deny":["primary_monitor"]}},"deny-request-user-attention":{"identifier":"deny-request-user-attention","description":"Denies the request_user_attention command without any pre-configured scope.","commands":{"allow":[],"deny":["request_user_attention"]}},"deny-scale-factor":{"identifier":"deny-scale-factor","description":"Denies the scale_factor command without any pre-configured scope.","commands":{"allow":[],"deny":["scale_factor"]}},"deny-set-always-on-bottom":{"identifier":"deny-set-always-on-bottom","description":"Denies the set_always_on_bottom command without any pre-configured scope.","commands":{"allow":[],"deny":["set_always_on_bottom"]}},"deny-set-always-on-top":{"identifier":"deny-set-always-on-top","description":"Denies the set_always_on_top command without any pre-configured scope.","commands":{"allow":[],"deny":["set_always_on_top"]}},"deny-set-background-color":{"identifier":"deny-set-background-color","description":"Denies the set_background_color command without any pre-configured scope.","commands":{"allow":[],"deny":["set_background_color"]}},"deny-set-badge-count":{"identifier":"deny-set-badge-count","description":"Denies the set_badge_count command without any pre-configured scope.","commands":{"allow":[],"deny":["set_badge_count"]}},"deny-set-badge-label":{"identifier":"deny-set-badge-label","description":"Denies the set_badge_label command without any pre-configured scope.","commands":{"allow":[],"deny":["set_badge_label"]}},"deny-set-closable":{"identifier":"deny-set-closable","description":"Denies the set_closable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_closable"]}},"deny-set-content-protected":{"identifier":"deny-set-content-protected","description":"Denies the set_content_protected command without any pre-configured scope.","commands":{"allow":[],"deny":["set_content_protected"]}},"deny-set-cursor-grab":{"identifier":"deny-set-cursor-grab","description":"Denies the set_cursor_grab command without any pre-configured scope.","commands":{"allow":[],"deny":["set_cursor_grab"]}},"deny-set-cursor-icon":{"identifier":"deny-set-cursor-icon","description":"Denies the set_cursor_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_cursor_icon"]}},"deny-set-cursor-position":{"identifier":"deny-set-cursor-position","description":"Denies the set_cursor_position command without any pre-configured scope.","commands":{"allow":[],"deny":["set_cursor_position"]}},"deny-set-cursor-visible":{"identifier":"deny-set-cursor-visible","description":"Denies the set_cursor_visible command without any pre-configured scope.","commands":{"allow":[],"deny":["set_cursor_visible"]}},"deny-set-decorations":{"identifier":"deny-set-decorations","description":"Denies the set_decorations command without any pre-configured scope.","commands":{"allow":[],"deny":["set_decorations"]}},"deny-set-effects":{"identifier":"deny-set-effects","description":"Denies the set_effects command without any pre-configured scope.","commands":{"allow":[],"deny":["set_effects"]}},"deny-set-enabled":{"identifier":"deny-set-enabled","description":"Denies the set_enabled command without any pre-configured scope.","commands":{"allow":[],"deny":["set_enabled"]}},"deny-set-focus":{"identifier":"deny-set-focus","description":"Denies the set_focus command without any pre-configured scope.","commands":{"allow":[],"deny":["set_focus"]}},"deny-set-focusable":{"identifier":"deny-set-focusable","description":"Denies the set_focusable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_focusable"]}},"deny-set-fullscreen":{"identifier":"deny-set-fullscreen","description":"Denies the set_fullscreen command without any pre-configured scope.","commands":{"allow":[],"deny":["set_fullscreen"]}},"deny-set-icon":{"identifier":"deny-set-icon","description":"Denies the set_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_icon"]}},"deny-set-ignore-cursor-events":{"identifier":"deny-set-ignore-cursor-events","description":"Denies the set_ignore_cursor_events command without any pre-configured scope.","commands":{"allow":[],"deny":["set_ignore_cursor_events"]}},"deny-set-max-size":{"identifier":"deny-set-max-size","description":"Denies the set_max_size command without any pre-configured scope.","commands":{"allow":[],"deny":["set_max_size"]}},"deny-set-maximizable":{"identifier":"deny-set-maximizable","description":"Denies the set_maximizable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_maximizable"]}},"deny-set-min-size":{"identifier":"deny-set-min-size","description":"Denies the set_min_size command without any pre-configured scope.","commands":{"allow":[],"deny":["set_min_size"]}},"deny-set-minimizable":{"identifier":"deny-set-minimizable","description":"Denies the set_minimizable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_minimizable"]}},"deny-set-overlay-icon":{"identifier":"deny-set-overlay-icon","description":"Denies the set_overlay_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_overlay_icon"]}},"deny-set-position":{"identifier":"deny-set-position","description":"Denies the set_position command without any pre-configured scope.","commands":{"allow":[],"deny":["set_position"]}},"deny-set-progress-bar":{"identifier":"deny-set-progress-bar","description":"Denies the set_progress_bar command without any pre-configured scope.","commands":{"allow":[],"deny":["set_progress_bar"]}},"deny-set-resizable":{"identifier":"deny-set-resizable","description":"Denies the set_resizable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_resizable"]}},"deny-set-shadow":{"identifier":"deny-set-shadow","description":"Denies the set_shadow command without any pre-configured scope.","commands":{"allow":[],"deny":["set_shadow"]}},"deny-set-simple-fullscreen":{"identifier":"deny-set-simple-fullscreen","description":"Denies the set_simple_fullscreen command without any pre-configured scope.","commands":{"allow":[],"deny":["set_simple_fullscreen"]}},"deny-set-size":{"identifier":"deny-set-size","description":"Denies the set_size command without any pre-configured scope.","commands":{"allow":[],"deny":["set_size"]}},"deny-set-size-constraints":{"identifier":"deny-set-size-constraints","description":"Denies the set_size_constraints command without any pre-configured scope.","commands":{"allow":[],"deny":["set_size_constraints"]}},"deny-set-skip-taskbar":{"identifier":"deny-set-skip-taskbar","description":"Denies the set_skip_taskbar command without any pre-configured scope.","commands":{"allow":[],"deny":["set_skip_taskbar"]}},"deny-set-theme":{"identifier":"deny-set-theme","description":"Denies the set_theme command without any pre-configured scope.","commands":{"allow":[],"deny":["set_theme"]}},"deny-set-title":{"identifier":"deny-set-title","description":"Denies the set_title command without any pre-configured scope.","commands":{"allow":[],"deny":["set_title"]}},"deny-set-title-bar-style":{"identifier":"deny-set-title-bar-style","description":"Denies the set_title_bar_style command without any pre-configured scope.","commands":{"allow":[],"deny":["set_title_bar_style"]}},"deny-set-visible-on-all-workspaces":{"identifier":"deny-set-visible-on-all-workspaces","description":"Denies the set_visible_on_all_workspaces command without any pre-configured scope.","commands":{"allow":[],"deny":["set_visible_on_all_workspaces"]}},"deny-show":{"identifier":"deny-show","description":"Denies the show command without any pre-configured scope.","commands":{"allow":[],"deny":["show"]}},"deny-start-dragging":{"identifier":"deny-start-dragging","description":"Denies the start_dragging command without any pre-configured scope.","commands":{"allow":[],"deny":["start_dragging"]}},"deny-start-resize-dragging":{"identifier":"deny-start-resize-dragging","description":"Denies the start_resize_dragging command without any pre-configured scope.","commands":{"allow":[],"deny":["start_resize_dragging"]}},"deny-theme":{"identifier":"deny-theme","description":"Denies the theme command without any pre-configured scope.","commands":{"allow":[],"deny":["theme"]}},"deny-title":{"identifier":"deny-title","description":"Denies the title command without any pre-configured scope.","commands":{"allow":[],"deny":["title"]}},"deny-toggle-maximize":{"identifier":"deny-toggle-maximize","description":"Denies the toggle_maximize command without any pre-configured scope.","commands":{"allow":[],"deny":["toggle_maximize"]}},"deny-unmaximize":{"identifier":"deny-unmaximize","description":"Denies the unmaximize command without any pre-configured scope.","commands":{"allow":[],"deny":["unmaximize"]}},"deny-unminimize":{"identifier":"deny-unminimize","description":"Denies the unminimize command without any pre-configured scope.","commands":{"allow":[],"deny":["unminimize"]}}},"permission_sets":{},"global_scope_schema":null},"dialog":{"default_permission":{"identifier":"default","description":"This permission set configures the types of dialogs\navailable from the dialog plugin.\n\n#### Granted Permissions\n\nAll dialog types are enabled.\n\n\n","permissions":["allow-ask","allow-confirm","allow-message","allow-save","allow-open"]},"permissions":{"allow-ask":{"identifier":"allow-ask","description":"Enables the ask command without any pre-configured scope.","commands":{"allow":["ask"],"deny":[]}},"allow-confirm":{"identifier":"allow-confirm","description":"Enables the confirm command without any pre-configured scope.","commands":{"allow":["confirm"],"deny":[]}},"allow-message":{"identifier":"allow-message","description":"Enables the message command without any pre-configured scope.","commands":{"allow":["message"],"deny":[]}},"allow-open":{"identifier":"allow-open","description":"Enables the open command without any pre-configured scope.","commands":{"allow":["open"],"deny":[]}},"allow-save":{"identifier":"allow-save","description":"Enables the save command without any pre-configured scope.","commands":{"allow":["save"],"deny":[]}},"deny-ask":{"identifier":"deny-ask","description":"Denies the ask command without any pre-configured scope.","commands":{"allow":[],"deny":["ask"]}},"deny-confirm":{"identifier":"deny-confirm","description":"Denies the confirm command without any pre-configured scope.","commands":{"allow":[],"deny":["confirm"]}},"deny-message":{"identifier":"deny-message","description":"Denies the message command without any pre-configured scope.","commands":{"allow":[],"deny":["message"]}},"deny-open":{"identifier":"deny-open","description":"Denies the open command without any pre-configured scope.","commands":{"allow":[],"deny":["open"]}},"deny-save":{"identifier":"deny-save","description":"Denies the save command without any pre-configured scope.","commands":{"allow":[],"deny":["save"]}}},"permission_sets":{},"global_scope_schema":null},"notification":{"default_permission":{"identifier":"default","description":"This permission set configures which\nnotification features are by default exposed.\n\n#### Granted Permissions\n\nIt allows all notification related features.\n\n","permissions":["allow-is-permission-granted","allow-request-permission","allow-notify","allow-register-action-types","allow-register-listener","allow-cancel","allow-get-pending","allow-remove-active","allow-get-active","allow-check-permissions","allow-show","allow-batch","allow-list-channels","allow-delete-channel","allow-create-channel","allow-permission-state"]},"permissions":{"allow-batch":{"identifier":"allow-batch","description":"Enables the batch command without any pre-configured scope.","commands":{"allow":["batch"],"deny":[]}},"allow-cancel":{"identifier":"allow-cancel","description":"Enables the cancel command without any pre-configured scope.","commands":{"allow":["cancel"],"deny":[]}},"allow-check-permissions":{"identifier":"allow-check-permissions","description":"Enables the check_permissions command without any pre-configured scope.","commands":{"allow":["check_permissions"],"deny":[]}},"allow-create-channel":{"identifier":"allow-create-channel","description":"Enables the create_channel command without any pre-configured scope.","commands":{"allow":["create_channel"],"deny":[]}},"allow-delete-channel":{"identifier":"allow-delete-channel","description":"Enables the delete_channel command without any pre-configured scope.","commands":{"allow":["delete_channel"],"deny":[]}},"allow-get-active":{"identifier":"allow-get-active","description":"Enables the get_active command without any pre-configured scope.","commands":{"allow":["get_active"],"deny":[]}},"allow-get-pending":{"identifier":"allow-get-pending","description":"Enables the get_pending command without any pre-configured scope.","commands":{"allow":["get_pending"],"deny":[]}},"allow-is-permission-granted":{"identifier":"allow-is-permission-granted","description":"Enables the is_permission_granted command without any pre-configured scope.","commands":{"allow":["is_permission_granted"],"deny":[]}},"allow-list-channels":{"identifier":"allow-list-channels","description":"Enables the list_channels command without any pre-configured scope.","commands":{"allow":["list_channels"],"deny":[]}},"allow-notify":{"identifier":"allow-notify","description":"Enables the notify command without any pre-configured scope.","commands":{"allow":["notify"],"deny":[]}},"allow-permission-state":{"identifier":"allow-permission-state","description":"Enables the permission_state command without any pre-configured scope.","commands":{"allow":["permission_state"],"deny":[]}},"allow-register-action-types":{"identifier":"allow-register-action-types","description":"Enables the register_action_types command without any pre-configured scope.","commands":{"allow":["register_action_types"],"deny":[]}},"allow-register-listener":{"identifier":"allow-register-listener","description":"Enables the register_listener command without any pre-configured scope.","commands":{"allow":["register_listener"],"deny":[]}},"allow-remove-active":{"identifier":"allow-remove-active","description":"Enables the remove_active command without any pre-configured scope.","commands":{"allow":["remove_active"],"deny":[]}},"allow-request-permission":{"identifier":"allow-request-permission","description":"Enables the request_permission command without any pre-configured scope.","commands":{"allow":["request_permission"],"deny":[]}},"allow-show":{"identifier":"allow-show","description":"Enables the show command without any pre-configured scope.","commands":{"allow":["show"],"deny":[]}},"deny-batch":{"identifier":"deny-batch","description":"Denies the batch command without any pre-configured scope.","commands":{"allow":[],"deny":["batch"]}},"deny-cancel":{"identifier":"deny-cancel","description":"Denies the cancel command without any pre-configured scope.","commands":{"allow":[],"deny":["cancel"]}},"deny-check-permissions":{"identifier":"deny-check-permissions","description":"Denies the check_permissions command without any pre-configured scope.","commands":{"allow":[],"deny":["check_permissions"]}},"deny-create-channel":{"identifier":"deny-create-channel","description":"Denies the create_channel command without any pre-configured scope.","commands":{"allow":[],"deny":["create_channel"]}},"deny-delete-channel":{"identifier":"deny-delete-channel","description":"Denies the delete_channel command without any pre-configured scope.","commands":{"allow":[],"deny":["delete_channel"]}},"deny-get-active":{"identifier":"deny-get-active","description":"Denies the get_active command without any pre-configured scope.","commands":{"allow":[],"deny":["get_active"]}},"deny-get-pending":{"identifier":"deny-get-pending","description":"Denies the get_pending command without any pre-configured scope.","commands":{"allow":[],"deny":["get_pending"]}},"deny-is-permission-granted":{"identifier":"deny-is-permission-granted","description":"Denies the is_permission_granted command without any pre-configured scope.","commands":{"allow":[],"deny":["is_permission_granted"]}},"deny-list-channels":{"identifier":"deny-list-channels","description":"Denies the list_channels command without any pre-configured scope.","commands":{"allow":[],"deny":["list_channels"]}},"deny-notify":{"identifier":"deny-notify","description":"Denies the notify command without any pre-configured scope.","commands":{"allow":[],"deny":["notify"]}},"deny-permission-state":{"identifier":"deny-permission-state","description":"Denies the permission_state command without any pre-configured scope.","commands":{"allow":[],"deny":["permission_state"]}},"deny-register-action-types":{"identifier":"deny-register-action-types","description":"Denies the register_action_types command without any pre-configured scope.","commands":{"allow":[],"deny":["register_action_types"]}},"deny-register-listener":{"identifier":"deny-register-listener","description":"Denies the register_listener command without any pre-configured scope.","commands":{"allow":[],"deny":["register_listener"]}},"deny-remove-active":{"identifier":"deny-remove-active","description":"Denies the remove_active command without any pre-configured scope.","commands":{"allow":[],"deny":["remove_active"]}},"deny-request-permission":{"identifier":"deny-request-permission","description":"Denies the request_permission command without any pre-configured scope.","commands":{"allow":[],"deny":["request_permission"]}},"deny-show":{"identifier":"deny-show","description":"Denies the show command without any pre-configured scope.","commands":{"allow":[],"deny":["show"]}}},"permission_sets":{},"global_scope_schema":null},"shell":{"default_permission":{"identifier":"default","description":"This permission set configures which\nshell functionality is exposed by default.\n\n#### Granted Permissions\n\nIt allows to use the `open` functionality with a reasonable\nscope pre-configured. It will allow opening `http(s)://`,\n`tel:` and `mailto:` links.\n","permissions":["allow-open"]},"permissions":{"allow-execute":{"identifier":"allow-execute","description":"Enables the execute command without any pre-configured scope.","commands":{"allow":["execute"],"deny":[]}},"allow-kill":{"identifier":"allow-kill","description":"Enables the kill command without any pre-configured scope.","commands":{"allow":["kill"],"deny":[]}},"allow-open":{"identifier":"allow-open","description":"Enables the open command without any pre-configured scope.","commands":{"allow":["open"],"deny":[]}},"allow-spawn":{"identifier":"allow-spawn","description":"Enables the spawn command without any pre-configured scope.","commands":{"allow":["spawn"],"deny":[]}},"allow-stdin-write":{"identifier":"allow-stdin-write","description":"Enables the stdin_write command without any pre-configured scope.","commands":{"allow":["stdin_write"],"deny":[]}},"deny-execute":{"identifier":"deny-execute","description":"Denies the execute command without any pre-configured scope.","commands":{"allow":[],"deny":["execute"]}},"deny-kill":{"identifier":"deny-kill","description":"Denies the kill command without any pre-configured scope.","commands":{"allow":[],"deny":["kill"]}},"deny-open":{"identifier":"deny-open","description":"Denies the open command without any pre-configured scope.","commands":{"allow":[],"deny":["open"]}},"deny-spawn":{"identifier":"deny-spawn","description":"Denies the spawn command without any pre-configured scope.","commands":{"allow":[],"deny":["spawn"]}},"deny-stdin-write":{"identifier":"deny-stdin-write","description":"Denies the stdin_write command without any pre-configured scope.","commands":{"allow":[],"deny":["stdin_write"]}}},"permission_sets":{},"global_scope_schema":{"$schema":"http://json-schema.org/draft-07/schema#","anyOf":[{"additionalProperties":false,"properties":{"args":{"allOf":[{"$ref":"#/definitions/ShellScopeEntryAllowedArgs"}],"description":"The allowed arguments for the command execution."},"cmd":{"description":"The command name. It can start with a variable that resolves to a system base directory. The variables are: `$AUDIO`, `$CACHE`, `$CONFIG`, `$DATA`, `$LOCALDATA`, `$DESKTOP`, `$DOCUMENT`, `$DOWNLOAD`, `$EXE`, `$FONT`, `$HOME`, `$PICTURE`, `$PUBLIC`, `$RUNTIME`, `$TEMPLATE`, `$VIDEO`, `$RESOURCE`, `$LOG`, `$TEMP`, `$APPCONFIG`, `$APPDATA`, `$APPLOCALDATA`, `$APPCACHE`, `$APPLOG`.","type":"string"},"name":{"description":"The name for this allowed shell command configuration.\n\nThis name will be used inside of the webview API to call this command along with any specified arguments.","type":"string"}},"required":["cmd","name"],"type":"object"},{"additionalProperties":false,"properties":{"args":{"allOf":[{"$ref":"#/definitions/ShellScopeEntryAllowedArgs"}],"description":"The allowed arguments for the command execution."},"name":{"description":"The name for this allowed shell command configuration.\n\nThis name will be used inside of the webview API to call this command along with any specified arguments.","type":"string"},"sidecar":{"description":"If this command is a sidecar command.","type":"boolean"}},"required":["name","sidecar"],"type":"object"}],"definitions":{"ShellScopeEntryAllowedArg":{"anyOf":[{"description":"A non-configurable argument that is passed to the command in the order it was specified.","type":"string"},{"additionalProperties":false,"description":"A variable that is set while calling the command from the webview API.","properties":{"raw":{"default":false,"description":"Marks the validator as a raw regex, meaning the plugin should not make any modification at runtime.\n\nThis means the regex will not match on the entire string by default, which might be exploited if your regex allow unexpected input to be considered valid. When using this option, make sure your regex is correct.","type":"boolean"},"validator":{"description":"[regex] validator to require passed values to conform to an expected input.\n\nThis will require the argument value passed to this variable to match the `validator` regex before it will be executed.\n\nThe regex string is by default surrounded by `^...$` to match the full string. For example the `https?://\\w+` regex would be registered as `^https?://\\w+$`.\n\n[regex]: <https://docs.rs/regex/latest/regex/#syntax>","type":"string"}},"required":["validator"],"type":"object"}],"description":"A command argument allowed to be executed by the webview API."},"ShellScopeEntryAllowedArgs":{"anyOf":[{"description":"Use a simple boolean to allow all or disable all arguments to this command configuration.","type":"boolean"},{"description":"A specific set of [`ShellScopeEntryAllowedArg`] that are valid to call for the command configuration.","items":{"$ref":"#/definitions/ShellScopeEntryAllowedArg"},"type":"array"}],"description":"A set of command arguments allowed to be executed by the webview API.\n\nA value of `true` will allow any arguments to be passed to the command. `false` will disable all arguments. A list of [`ShellScopeEntryAllowedArg`] will set those arguments as the only valid arguments to be passed to the attached command configuration."}},"description":"Shell scope entry.","title":"ShellScopeEntry"}},"updater":{"default_permission":{"identifier":"default","description":"This permission set configures which kind of\nupdater functions are exposed to the frontend.\n\n#### Granted Permissions\n\nThe full workflow from checking for updates to installing them\nis enabled.\n\n","permissions":["allow-check","allow-download","allow-install","allow-download-and-install"]},"permissions":{"allow-check":{"identifier":"allow-check","description":"Enables the check command without any pre-configured scope.","commands":{"allow":["check"],"deny":[]}},"allow-download":{"identifier":"allow-download","description":"Enables the download command without any pre-configured scope.","commands":{"allow":["download"],"deny":[]}},"allow-download-and-install":{"identifier":"allow-download-and-install","description":"Enables the download_and_install command without any pre-configured scope.","commands":{"allow":["download_and_install"],"deny":[]}},"allow-install":{"identifier":"allow-install","description":"Enables the install command without any pre-configured scope.","commands":{"allow":["install"],"deny":[]}},"deny-check":{"identifier":"deny-check","description":"Denies the check command without any pre-configured scope.","commands":{"allow":[],"deny":["check"]}},"deny-download":{"identifier":"deny-download","description":"Denies the download command without any pre-configured scope.","commands":{"allow":[],"deny":["download"]}},"deny-download-and-install":{"identifier":"deny-download-and-install","description":"Denies the download_and_install command without any pre-configured scope.","commands":{"allow":[],"deny":["download_and_install"]}},"deny-install":{"identifier":"deny-install","description":"Denies the install command without any pre-configured scope.","commands":{"allow":[],"deny":["install"]}}},"permission_sets":{},"global_scope_schema":null},"window-state":{"default_permission":{"identifier":"default","description":"This permission set configures what kind of\noperations are available from the window state plugin.\n\n#### Granted Permissions\n\nAll operations are enabled by default.\n\n","permissions":["allow-filename","allow-restore-state","allow-save-window-state"]},"permissions":{"allow-filename":{"identifier":"allow-filename","description":"Enables the filename command without any pre-configured scope.","commands":{"allow":["filename"],"deny":[]}},"allow-restore-state":{"identifier":"allow-restore-state","description":"Enables the restore_state command without any pre-configured scope.","commands":{"allow":["restore_state"],"deny":[]}},"allow-save-window-state":{"identifier":"allow-save-window-state","description":"Enables the save_window_state command without any pre-configured scope.","commands":{"allow":["save_window_state"],"deny":[]}},"deny-filename":{"identifier":"deny-filename","description":"Denies the filename command without any pre-configured scope.","commands":{"allow":[],"deny":["filename"]}},"deny-restore-state":{"identifier":"deny-restore-state","description":"Denies the restore_state command without any pre-configured scope.","commands":{"allow":[],"deny":["restore_state"]}},"deny-save-window-state":{"identifier":"deny-save-window-state","description":"Denies the save_window_state command without any pre-configured scope.","commands":{"allow":[],"deny":["save_window_state"]}}},"permission_sets":{},"global_scope_schema":null}}
1 < \ No newline at end of file
@@ -31,6 +31,7 @@ mod milestone;
31 31 mod monthly_review;
32 32 mod oauth;
33 33 mod plugin;
34 + mod preferences;
34 35 mod project;
35 36 mod saved_views;
36 37 mod search;
@@ -78,6 +79,8 @@ pub use themes::*;
78 79 pub use weekly_review::*;
79 80 pub use window::*;
80 81 pub use plugin::*;
82 + pub use preferences::*;
83 + pub use preferences::load as load_preferences;
81 84
82 85 // ============ Shared Types ============
83 86
@@ -0,0 +1,63 @@
1 + //! User preferences stored as a small JSON file in the Tauri app config dir.
2 + //!
3 + //! Used for settings that need to be read before the database is available
4 + //! (e.g. the launch-time update check). Heavier user state lives in SQLite.
5 +
6 + use std::path::PathBuf;
7 +
8 + use serde::{Deserialize, Serialize};
9 + use tauri::{AppHandle, Manager};
10 + use tracing::instrument;
11 +
12 + use super::ApiError;
13 +
14 + const PREFERENCES_FILE: &str = "preferences.json";
15 +
16 + #[derive(Debug, Clone, Serialize, Deserialize)]
17 + #[serde(rename_all = "camelCase")]
18 + pub struct Preferences {
19 + pub update_check_on_launch: bool,
20 + }
21 +
22 + impl Default for Preferences {
23 + fn default() -> Self {
24 + Self { update_check_on_launch: true }
25 + }
26 + }
27 +
28 + fn preferences_path(app: &AppHandle) -> Result<PathBuf, ApiError> {
29 + let dir = app.path().app_config_dir()
30 + .map_err(|e| ApiError::internal(format!("Resolve app config dir: {e}")))?;
31 + std::fs::create_dir_all(&dir)
32 + .map_err(|e| ApiError::internal(format!("Create app config dir: {e}")))?;
33 + Ok(dir.join(PREFERENCES_FILE))
34 + }
35 +
36 + pub fn load(app: &AppHandle) -> Preferences {
37 + let Ok(path) = preferences_path(app) else { return Preferences::default(); };
38 + let Ok(bytes) = std::fs::read(&path) else { return Preferences::default(); };
39 + serde_json::from_slice(&bytes).unwrap_or_default()
40 + }
41 +
42 + fn save(app: &AppHandle, prefs: &Preferences) -> Result<(), ApiError> {
43 + let path = preferences_path(app)?;
44 + let json = serde_json::to_vec_pretty(prefs)
45 + .map_err(|e| ApiError::internal(format!("Serialize preferences: {e}")))?;
46 + std::fs::write(&path, json)
47 + .map_err(|e| ApiError::internal(format!("Write preferences: {e}")))?;
48 + Ok(())
49 + }
50 +
51 + #[tauri::command]
52 + #[instrument(skip_all)]
53 + pub fn get_preferences(app: AppHandle) -> Result<Preferences, ApiError> {
54 + Ok(load(&app))
55 + }
56 +
57 + #[tauri::command]
58 + #[instrument(skip_all)]
59 + pub fn set_update_check_on_launch(app: AppHandle, enabled: bool) -> Result<(), ApiError> {
60 + let mut prefs = load(&app);
61 + prefs.update_check_on_launch = enabled;
62 + save(&app, &prefs)
63 + }
@@ -369,15 +369,18 @@ fn main() {
369 369 sync_scheduler::start_sync_scheduler(cloud_sync_handle, cloud_cancel).await;
370 370 });
371 371
372 - // Check for OTA updates after a short delay (desktop only)
372 + // Check for OTA updates after a short delay (desktop only).
373 + // Gated on the user's preference (default true).
373 374 #[cfg(not(any(target_os = "ios", target_os = "android")))]
374 375 {
375 376 let update_handle = app.handle().clone();
376 - tauri::async_runtime::spawn(async move {
377 - // Wait before checking to let the app finish starting
378 - tokio::time::sleep(std::time::Duration::from_secs(10)).await;
379 - check_for_updates(update_handle).await;
380 - });
377 + if commands::load_preferences(&update_handle).update_check_on_launch {
378 + tauri::async_runtime::spawn(async move {
379 + // Wait before checking to let the app finish starting
380 + tokio::time::sleep(std::time::Duration::from_secs(10)).await;
381 + check_for_updates(update_handle).await;
382 + });
383 + }
381 384 }
382 385
383 386 Ok(())
@@ -616,6 +619,9 @@ fn main() {
616 619 commands::list_time_sessions,
617 620 commands::log_manual_time,
618 621 commands::get_time_summary,
622 + // Preferences
623 + commands::get_preferences,
624 + commands::set_update_check_on_launch,
619 625 ])
620 626 .build(tauri::generate_context!())
621 627 .expect("error while building tauri application")