.portal{background:var(--color-bg);color:var(--color-fg)}.portal[data-auth=pending] .portal-main,.portal[data-auth=pending] .portal-user,.portal .portal-user[data-portal-user-pending]{visibility:hidden}.portal .portal-start-error{display:none}.portal[data-auth=error] .portal-start-error{display:block}.portal[data-auth=error] .portal-main{display:none}.portal[data-auth=ended] .portal-main>:not([data-portal-banners]),.portal[data-auth=ended] .portal-user{visibility:hidden}.portal[data-auth=ended] .portal-dialog[open]{visibility:visible}.portal p{color:inherit}.portal [hidden]{display:none!important}.portal [tabindex="-1"]:focus,.portal [tabindex="-1"]:focus-visible{outline:none}.portal .portal-header{background:var(--color-card);border-bottom:1px solid var(--color-border)}.portal .portal-header-inner{display:flex;align-items:center;gap:1.5rem;height:64px}.portal .portal-brand{display:inline-flex;align-items:center;gap:.75rem;flex-shrink:0;min-height:44px;border-radius:var(--radius)}.portal .portal-brand img{height:32px;width:auto;max-width:none}.portal .portal-brand-label{font-family:var(--font-heading);font-weight:600;font-size:.9375rem;color:var(--color-fg);border-left:1px solid var(--color-border);padding-left:.75rem;white-space:nowrap}.portal .portal-nav{display:flex;gap:.25rem;flex-shrink:0}.portal .portal-tab{position:relative;display:inline-flex;align-items:center;justify-content:center;min-height:44px;font-family:var(--font-heading);font-weight:500;font-size:.975rem;padding:.5rem .875rem;border-radius:var(--radius);color:var(--color-fg);white-space:nowrap;transition:background var(--transition),color var(--transition)}.portal .portal-tab:hover{background:var(--color-muted);color:var(--color-accent)}.portal .portal-tab[aria-current=page]{color:var(--color-accent)}.portal .portal-tab[aria-current=page]:after{content:"";position:absolute;left:.875rem;right:.875rem;bottom:4px;height:2px;border-radius:2px;background:var(--brand-gradient)}.portal .portal-user{display:flex;align-items:center;gap:.75rem;margin-left:auto;min-width:0}.portal .portal-user-link{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;min-height:44px;min-width:44px;padding-inline:.375rem;border-radius:var(--radius);color:var(--color-fg);transition:background var(--transition),color var(--transition)}.portal .portal-user-link:hover{background:var(--color-muted);color:var(--color-accent)}.portal .portal-user-link:focus-visible{border-radius:var(--radius)}.portal .portal-user-name{font-size:.9375rem;font-weight:600;color:inherit;min-width:0;max-width:16rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media(min-width:960px){.portal .portal-header{position:sticky;top:0;z-index:50}}@media(max-width:959.98px){.portal .portal-header-inner{display:grid;grid-template-columns:1fr auto;grid-template-areas:"brand user" "nav nav";grid-template-rows:56px auto;height:auto;gap:0 1rem}.portal .portal-brand{grid-area:brand}.portal .portal-brand img{height:28px}.portal .portal-brand-label{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.portal .portal-user{grid-area:user;margin-left:0;justify-content:flex-end}.portal .portal-user-name{max-width:9rem}.portal .portal-nav{grid-area:nav;display:flex;gap:0;border-top:1px solid var(--color-border);margin-inline:calc(var(--space-3) * -1);padding-inline:1rem}.portal .portal-tab{flex:0 1 auto;min-height:48px;border-radius:0;padding-inline:.5rem;white-space:normal;text-align:center;line-height:1.2}.portal .portal-tab[aria-current=page]:after{left:.5rem;right:.5rem}}@media(max-width:359.98px){.portal .portal-user-name{position:absolute;width:1px;height:1px;max-width:none;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}}.portal .portal-main{padding-block:2rem 4rem}@media(max-width:759.98px){.portal .portal-main{padding-block:1.5rem 3rem}}.portal .portal-page-head{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:1rem;margin-bottom:1.5rem}.portal .portal-page-title{font-size:clamp(1.5rem,3vw,1.875rem);line-height:1.2;margin:0}.portal .portal-intro{color:var(--color-muted-fg);font-size:1rem;max-width:60ch;margin-top:.5rem}.portal .portal-link{color:var(--color-accent);font-weight:600;border-radius:4px}.portal .portal-link:hover{color:var(--color-accent-hover);text-decoration:underline}.portal .portal-link.is-standalone{display:inline-flex;align-items:center;min-height:44px}.portal .portal-start-error,.portal .portal-noscript{width:calc(100% - 3rem);max-width:27.5rem;margin:4rem auto 0;text-align:center}.portal .portal-start-error p,.portal .portal-noscript p{color:var(--color-fg);margin-bottom:1rem}.portal .portal-field{display:flex;flex-direction:column;gap:.4rem;margin-bottom:1.25rem}.portal .portal-label{font-family:var(--font-heading);font-weight:500;font-size:.9rem;color:var(--color-fg)}.portal .portal-opt{font-family:var(--font-body);font-weight:400;color:var(--color-muted-fg)}.portal .portal-hint{font-size:.875rem;line-height:1.45;color:var(--color-muted-fg);margin:0}.portal .portal-input{width:100%;font-family:var(--font-body);font-size:1rem;color:var(--color-fg);background:var(--color-bg);border:1.5px solid var(--color-muted-fg);border-radius:var(--radius);padding:.75rem .9rem;min-height:44px;transition:border-color var(--transition)}.portal .portal-input:focus{border-color:var(--color-accent)}.portal .portal-input:focus-visible{outline:2px solid var(--color-ring);outline-offset:2px;border-radius:var(--radius)}.portal .portal-input[aria-invalid=true]{border-color:var(--color-danger)}.portal textarea.portal-input{resize:vertical;line-height:1.5}.portal .portal-input-code{font-family:var(--font-heading);font-weight:600;font-size:1.25rem;letter-spacing:.3em;font-variant-numeric:tabular-nums;max-width:12rem}.portal .portal-pw{position:relative}.portal .portal-pw .portal-input{padding-right:4.75rem}.portal .portal-pw-toggle{position:absolute;right:2px;top:50%;transform:translateY(-50%);height:44px;padding-inline:.875rem;font-family:var(--font-heading);font-weight:600;font-size:.875rem;color:var(--color-accent);background:transparent;border:0;border-radius:var(--radius);cursor:pointer}.portal .portal-field-row{display:grid;gap:0 1rem}@media(min-width:560px){.portal .portal-field-row{grid-template-columns:1fr 1fr}}.portal .portal-check{display:flex;align-items:center;gap:.65rem;min-height:44px;margin-bottom:1rem;font-size:1rem;cursor:pointer}.portal .portal-check input{width:1.25rem;height:1.25rem;accent-color:var(--color-accent);flex-shrink:0}.portal .portal-check input:focus-visible{outline:2px solid var(--color-ring);outline-offset:2px;border-radius:4px}.portal .portal-field-error{display:flex;align-items:flex-start;gap:.4rem;font-size:.875rem;font-weight:600;color:var(--color-danger);margin:0}.portal .portal-field-error svg{flex-shrink:0;width:16px;height:16px;margin-top:.15rem}.portal .portal-form-error{display:flex;align-items:flex-start;gap:.5rem;padding:.75rem 1rem;border-radius:var(--radius);border:1.5px solid var(--color-danger);background:var(--color-card);color:var(--color-fg);margin-bottom:1rem}.portal .portal-form-error svg{flex-shrink:0;width:20px;height:20px;color:var(--color-danger)}.portal .portal-form-error>div{min-width:0}.portal .portal-form-error p{margin:0;overflow-wrap:anywhere}.portal .portal-form-error-actions{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.75rem}.portal .portal-form-error:empty{padding:0;border:0;margin:0}.portal .portal-form-actions{display:flex;gap:.75rem;flex-wrap:wrap;align-items:center}@media(max-width:559.98px){.portal .portal-form-actions .btn-primary{width:100%;justify-content:center;order:-1}}.portal .btn-primary[data-astro-cid-vnzlvqnm]{background:var(--color-accent)}.portal .btn-primary[data-astro-cid-vnzlvqnm]:hover{background:var(--color-accent-hover)}.portal .btn[data-astro-cid-vnzlvqnm]:focus-visible{border-radius:var(--radius)}.portal .btn[data-astro-cid-vnzlvqnm][disabled],.portal .btn[data-astro-cid-vnzlvqnm][aria-busy=true]{cursor:progress;opacity:.75;transform:none}.portal .portal-btn-block{width:100%;justify-content:center}.portal .portal-btn-sm{padding:.625rem 1rem;font-size:.9375rem;min-height:44px}.portal .portal-btn-danger{background:var(--color-danger);color:#fff;border-color:transparent}.portal .portal-btn-danger:hover{background:#b91c1c}.portal .portal-text-danger{color:var(--color-danger)}.portal .portal-text-danger:hover{color:#b91c1c;border-color:var(--color-danger)}.portal .portal-iconbtn{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;flex-shrink:0;border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-card);color:var(--color-fg);cursor:pointer;transition:border-color var(--transition),color var(--transition)}.portal .portal-iconbtn svg{width:20px;height:20px}.portal .portal-iconbtn:hover{border-color:var(--color-accent);color:var(--color-accent)}.portal .portal-iconbtn[aria-disabled=true]{color:var(--color-muted-fg);cursor:default}.portal .portal-iconbtn[aria-disabled=true]:hover{border-color:var(--color-border);color:var(--color-muted-fg)}.portal .portal-iconbtn:focus-visible{border-radius:var(--radius)}.portal .portal-segmented{display:inline-flex;border:1px solid var(--color-border);border-radius:var(--radius);padding:2px;background:var(--color-card)}.portal .portal-segmented button{border:0;background:transparent;font-family:var(--font-heading);font-weight:600;font-size:.9375rem;color:var(--color-fg);padding:.5rem 1rem;min-height:44px;border-radius:calc(var(--radius) - 2px);cursor:pointer}.portal .portal-segmented button[aria-pressed=true]{background:var(--color-accent-soft);color:var(--color-accent)}.portal .portal-card{background:var(--color-card);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);padding:1.5rem}@media(max-width:559.98px){.portal .portal-card{padding:1.25rem}}.portal .portal-banner{display:flex;align-items:center;flex-wrap:wrap;gap:.75rem;padding:.875rem 1rem;border-radius:var(--radius);background:var(--color-card);border:1.5px solid var(--color-accent);color:var(--color-fg);margin-bottom:1.5rem}.portal .portal-banner svg{width:20px;height:20px;flex-shrink:0;color:var(--color-accent)}.portal .portal-banner.is-error{border-color:var(--color-danger)}.portal .portal-banner.is-error svg{color:var(--color-danger)}.portal .portal-banner p{margin:0;color:var(--color-fg);flex:1;min-width:12rem}.portal .portal-toast{position:fixed;left:50%;bottom:calc(1.5rem + env(safe-area-inset-bottom));transform:translate(-50%);z-index:60;width:max-content;max-width:calc(100vw - 2rem);pointer-events:none}.portal .portal-toast-inner{display:flex;align-items:center;gap:.6rem;background:var(--color-primary);color:#fff;border-radius:var(--radius);padding:.75rem 1rem;box-shadow:var(--shadow-lg);font-weight:600;font-size:.9375rem;pointer-events:auto}.portal .portal-toast-inner svg{width:20px;height:20px;color:var(--color-teal);flex-shrink:0}.portal .portal-empty{text-align:center;padding:2.5rem 1.5rem}.portal .portal-empty-title{font-family:var(--font-heading);font-weight:600;font-size:1.0625rem;color:var(--color-fg);margin:0 0 .35rem}.portal .portal-empty p:not(.portal-empty-title){color:var(--color-muted-fg)}.portal .portal-empty .btn{margin-top:1rem}.portal .portal-skeleton{display:block;background:linear-gradient(90deg,var(--color-muted),var(--color-bg),var(--color-muted));background-size:200% 100%;border-radius:var(--radius);animation:portal-shimmer 1.2s linear infinite}@keyframes portal-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.portal .portal-badge{display:inline-flex;align-items:center;font-family:var(--font-heading);font-weight:600;font-size:.75rem;padding:.2rem .6rem;border-radius:var(--radius-full);background:var(--color-accent-soft);color:var(--color-accent);white-space:nowrap}.portal .portal-section-title{font-family:var(--font-heading);font-weight:600;font-size:1.25rem;line-height:1.3;margin:2rem 0 .75rem;color:var(--color-fg)}.portal .portal-status{gap:.3rem;padding:.2rem .6rem .2rem .45rem;border:1px solid transparent}.portal .portal-status svg{width:14px;height:14px;flex-shrink:0}.portal .portal-status.is-not-started{background:var(--color-muted);color:#475569}.portal .portal-status.is-complete{background:var(--color-card);border-color:var(--color-success);color:var(--color-fg)}.portal .portal-status.is-complete svg{color:var(--color-success)}.portal .portal-due{display:inline-flex;align-items:center;flex-wrap:wrap;gap:.25rem .5rem;vertical-align:middle}.portal .portal-due-flag{gap:.3rem;padding:.15rem .55rem .15rem .4rem;border:1px solid transparent}.portal .portal-due-flag svg{width:14px;height:14px;flex-shrink:0}.portal .portal-due-flag.is-overdue{background:var(--color-card);color:var(--color-danger);border-color:var(--color-danger)}.portal .portal-due-date{font-size:.875rem;line-height:1.45;color:var(--color-muted-fg);white-space:nowrap}.portal .portal-dirty{font-size:.875rem;color:var(--color-muted-fg);margin:0 0 .75rem}.portal .portal-agenda-date{display:flex;align-items:center;flex-wrap:wrap;gap:.6rem;width:fit-content;max-width:100%;font-family:var(--font-heading);font-weight:600;font-size:1rem;line-height:1.4;letter-spacing:0;margin:0 0 .5rem;scroll-margin-top:80px}.portal .portal-agenda-list{list-style:none;padding:0;background:var(--color-card);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);overflow:hidden}.portal .portal-agenda-list>li+li{border-top:1px solid var(--color-border)}.portal .portal-agenda-item{display:flex;flex-direction:column;gap:.15rem;width:100%;min-height:44px;padding:.875rem 1rem;border:0;background:transparent;font-family:var(--font-body);font-size:1rem;line-height:1.45;color:var(--color-fg);text-align:left;cursor:pointer;transition:background var(--transition)}.portal .portal-agenda-item:hover{background:var(--color-bg)}.portal .portal-agenda-item:focus-visible{outline-offset:-3px;border-radius:var(--radius-lg)}@media(min-width:760px){.portal .portal-agenda-item{display:grid;grid-template-columns:11rem 1fr;gap:1rem;align-items:start}}.portal .portal-agenda-time{font-size:.9375rem;font-variant-numeric:tabular-nums;color:var(--color-muted-fg)}.portal .portal-agenda-main{display:flex;flex-direction:column;gap:.15rem;min-width:0}.portal .portal-agenda-title{font-family:var(--font-heading);font-weight:600;font-size:1rem;color:var(--color-fg);overflow-wrap:anywhere}.portal .portal-agenda-meta{font-size:.875rem;color:var(--color-muted-fg);overflow-wrap:anywhere}.portal .portal-agenda-none{background:var(--color-card);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);padding:.875rem 1rem;color:var(--color-muted-fg)}.portal .portal-pw-rules{list-style:none;margin:.25rem 0 0;padding:0;display:grid;gap:.05rem .75rem}@media(min-width:560px){.portal .portal-pw-rules{grid-template-columns:1fr 1fr}}.portal .portal-pw-rules li{display:flex;align-items:center;gap:.4rem;color:var(--color-muted-fg)}.portal .portal-pw-mark{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;flex-shrink:0}.portal .portal-pw-mark:empty:before{content:"";width:5px;height:5px;border-radius:50%;background:currentColor}.portal .portal-pw-mark svg{width:16px;height:16px}.portal .portal-pw-rules li.is-unmet{color:var(--color-danger);font-weight:600}.portal .portal-pw-rules li.is-met .portal-pw-mark{color:var(--color-success)}.portal .portal-avatar{display:inline-grid;place-items:center;flex-shrink:0;width:2rem;height:2rem;border-radius:var(--radius-full);overflow:hidden;border:1px solid var(--color-border);background:var(--color-accent-soft);color:var(--color-accent);font-family:var(--font-heading);font-weight:600;font-size:.75rem;line-height:1;letter-spacing:.02em;user-select:none}.portal .portal-avatar img{width:100%;height:100%;object-fit:cover}.portal .portal-avatar svg{width:1.125rem;height:1.125rem}.portal .portal-avatar-lg{width:8rem;height:8rem;font-size:2.75rem;letter-spacing:.01em}.portal .portal-avatar-lg svg{width:4rem;height:4rem}.portal .portal-avatar.is-pending{background:var(--color-muted)}.portal .portal-spinner{display:inline-block;width:16px;height:16px;border-radius:50%;border:2px solid var(--color-border);border-top-color:var(--color-accent);animation:portal-spin .8s linear infinite;flex-shrink:0}@keyframes portal-spin{to{transform:rotate(360deg)}}.portal .portal-loading{display:flex;align-items:center;gap:.6rem;font-size:.9375rem;color:var(--color-muted-fg)}.portal .portal-toolbar{display:flex;align-items:center;flex-wrap:wrap;gap:.75rem;margin-bottom:1rem}.portal .portal-toolbar-end{margin-left:auto}.portal .portal-period{font-family:var(--font-heading);font-weight:600;font-size:1.25rem;min-width:11ch;margin:0}@media(max-width:759.98px){.portal .portal-period{font-size:1.125rem}}.portal .portal-dialog{margin:auto;width:min(35rem,calc(100vw - 2rem));max-height:calc(100dvh - 4rem);padding:0;border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-card);color:var(--color-fg);box-shadow:var(--shadow-lg);overscroll-behavior:contain}.portal .portal-dialog[open]{display:flex;flex-direction:column}.portal .portal-dialog::backdrop{background:#02061780}.portal .portal-dialog-head{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:1rem 1rem 1rem 1.5rem;border-bottom:1px solid var(--color-border)}.portal .portal-dialog-head h2{font-family:var(--font-heading);font-weight:600;font-size:1.25rem;line-height:1.3;margin:0;overflow-wrap:anywhere}.portal .portal-dialog-head .portal-iconbtn{border-color:transparent}.portal .portal-dialog-body{padding:1.5rem;overflow-y:auto;flex:1;overscroll-behavior:contain}.portal .portal-dialog-foot{display:flex;gap:.75rem;justify-content:flex-end;flex-wrap:wrap;padding:1rem 1.5rem;border-top:1px solid var(--color-border)}.portal .portal-dialog-foot>.portal-text-danger{margin-right:auto}.portal .portal-confirm{display:flex;flex-direction:column;gap:.75rem;width:100%}.portal .portal-confirm-prompt{font-family:var(--font-heading);font-weight:600;font-size:1rem;color:var(--color-fg);margin:0;overflow-wrap:anywhere}.portal .portal-confirm-sub{font-size:.9375rem;color:var(--color-muted-fg);margin:0}.portal .portal-confirm-actions{display:flex;gap:.75rem;justify-content:flex-end;flex-wrap:wrap}@media(max-width:559.98px){.portal .portal-dialog{width:100vw;height:100dvh;max-height:none;max-width:none;margin:0;border-radius:0;border:0}.portal .portal-dialog-foot{position:sticky;bottom:0;background:var(--color-card);padding-bottom:calc(1rem + env(safe-area-inset-bottom))}.portal .portal-dialog-foot .btn,.portal .portal-confirm-actions .btn{flex:1;justify-content:center}}html.portal-modal-open{overflow:hidden}
