
@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Manrope:wght@500;600;700;800&display=swap');
:root{
  color-scheme:light;
  --ink:#20343a;--muted:#71848a;--line:#e1eceb;--paper:#f4f9f8;--surface:#fff;
  --surface-soft:#f8fbfa;--teal:#4f9f98;--teal-deep:#317b76;--teal-soft:#e3f2ef;
  --yellow:#e8cf7c;--blue:#a8cce0;--danger:#c77970;--success:#508d71;
  --shadow:0 12px 34px rgba(34,72,74,.055);--radius:16px;
}
:root[data-theme="dark"]{
  color-scheme:dark;
  --ink:#e2eeee;--muted:#9aafb2;--line:#2d4549;--paper:#142327;--surface:#1b3035;
  --surface-soft:#20383d;--teal:#76bdb4;--teal-deep:#8acbc3;--teal-soft:#274642;
  --yellow:#d9c477;--blue:#93bcd1;--danger:#d28d84;--success:#82b69a;
  --shadow:0 12px 34px rgba(0,0,0,.16);
}
*{box-sizing:border-box}
[hidden]{display:none!important}
body{margin:0;background:var(--paper);color:var(--ink);font-family:'DM Sans',sans-serif;transition:background .2s,color .2s}
button,input,select,textarea{font:inherit}
button{cursor:pointer}
.app-shell{min-height:100vh;display:flex}
.sidebar{position:sticky;top:0;width:250px;height:100vh;background:var(--surface);border-right:1px solid var(--line);padding:28px 18px 20px;display:flex;flex-direction:column;flex-shrink:0;z-index:20}
.brand{display:flex;align-items:center;gap:12px;padding:2px 10px 38px}
.brand-mark{width:39px;height:39px;border-radius:13px;background:var(--teal-soft);color:var(--teal-deep);display:grid;place-items:center;font-size:25px}
.brand strong{display:block;font:800 20px Manrope,sans-serif;letter-spacing:-.8px}
.brand small{font-size:9px;letter-spacing:1.4px;color:var(--muted)}
.main-nav{display:grid;gap:6px}
.nav-link{width:100%;border:0;background:transparent;text-align:left;padding:13px 14px;border-radius:11px;color:var(--muted);font-weight:650;font-size:13px;transition:.18s}
.nav-link span{display:inline-grid;place-items:center;width:27px;font-size:16px;color:inherit}
.nav-link:hover,.nav-link.active{background:var(--teal-soft);color:var(--teal-deep)}
.sidebar-bottom{margin-top:auto;border-top:1px solid var(--line);padding:17px 9px 0}
.sync-state{display:flex;gap:8px;align-items:center;color:var(--muted);font-size:10px}
.status-dot{width:7px;height:7px;border-radius:50%;background:var(--yellow);flex-shrink:0}
.sync-state.online .status-dot{background:var(--success)}
.sync-state.offline .status-dot{background:var(--danger)}
.sidebar-note{margin-top:10px;color:var(--muted);font-size:10px}
.main-content{max-width:1500px;width:100%;padding:34px 46px 70px;margin:0 auto;min-width:0}
.topbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:28px;gap:20px}
.topbar-title{display:flex;align-items:center;gap:12px}
.eyebrow{font-size:9px;letter-spacing:1.55px;color:var(--teal-deep);font-weight:800;margin:0 0 6px}
.topbar h1{font:800 27px Manrope;margin:0;letter-spacing:-.9px}
.topbar-meta{display:flex;align-items:center;gap:12px;color:var(--muted);font-size:11px;text-align:right}
.semester-pill,.period-tag,.subtle-label{font-size:9px;letter-spacing:.4px;font-weight:800;color:var(--muted);background:var(--surface-soft);border:1px solid var(--line);border-radius:30px;padding:7px 10px;white-space:nowrap}
.mobile-menu{display:none;border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:9px;padding:8px 10px}
.view{display:none;animation:fadein .2s ease}.view.active{display:block}
@keyframes fadein{from{opacity:.4;transform:translateY(3px)}to{opacity:1;transform:none}}
.page-intro-row{display:flex;align-items:center;justify-content:space-between;gap:18px;margin:0 0 21px}
.page-intro-row h2,.section-intro h2{font:750 21px Manrope;letter-spacing:-.55px;margin:0 0 6px}
.page-intro-row p,.section-intro p,.card-heading p,.content-card>div>p{color:var(--muted);font-size:12px;margin:0;line-height:1.5}
.section-intro{margin:0 0 22px}
.button{border:1px solid transparent;border-radius:10px;padding:11px 16px;font-size:12px;font-weight:750;transition:.16s;display:inline-flex;align-items:center;justify-content:center;gap:6px}
.button-primary{background:var(--teal);color:#fff}.button-primary:hover{background:var(--teal-deep);transform:translateY(-1px)}
.button-secondary{background:var(--teal-soft);color:var(--teal-deep);border-color:transparent}
.button-secondary:hover{filter:brightness(.97)}
.button-danger{background:#fbefed;color:var(--danger);border-color:#f1d9d6}
:root[data-theme="dark"] .button-danger{background:#432c2a;border-color:#60403c}
.text-button{border:0;background:none;color:var(--teal-deep);font-size:11px;font-weight:800;padding:7px 5px}
.icon-button{width:34px;height:34px;border:1px solid var(--line);border-radius:10px;background:var(--surface);color:var(--ink);font-size:20px;line-height:1}
.icon-button:hover{border-color:var(--teal);color:var(--teal-deep)}
.content-card,.stat-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}
.content-card{padding:22px;margin-bottom:18px}
.card-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:17px}
.card-heading h3,.content-card h3{font:750 15px Manrope;margin:0 0 5px;letter-spacing:-.25px}
.week-toolbar{display:flex;align-items:center;gap:11px;background:var(--surface);border:1px solid var(--line);border-radius:13px;padding:9px 12px;margin:0 0 18px;width:max-content;max-width:100%}
.week-toolbar>div{display:grid;gap:3px;min-width:170px;text-align:center}
.week-toolbar strong{font:750 12px Manrope}.week-toolbar small{font-size:10px;color:var(--muted)}
.week-toolbar .text-button{margin-left:7px}
.dashboard-overview{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(260px,1fr);gap:17px;align-items:stretch;margin-bottom:18px}
.progress-card{margin:0;min-width:0}
.progress-card .card-heading{align-items:flex-start}
.progress-visual{display:grid;grid-template-columns:minmax(190px,1.1fr) minmax(170px,1fr);align-items:center;gap:14px}
.semi-chart-wrap{width:100%;max-width:315px;margin:0 auto}
.semi-chart{display:block;width:100%;height:auto;overflow:visible}
.semi-track,.semi-segment{fill:none;stroke-width:16;stroke-linecap:round}
.semi-track{stroke:var(--line)}
.semi-segment{transition:stroke-dasharray .35s ease,stroke-dashoffset .35s ease}
.chart-value{font:800 28px Manrope;fill:var(--ink);letter-spacing:-1px}
.chart-caption{font:700 9px 'DM Sans';fill:var(--muted);letter-spacing:.5px}
.progress-legend{display:grid;gap:9px}
.legend-row{display:grid;grid-template-columns:10px 1fr auto;gap:8px;align-items:center}
.legend-dot{width:9px;height:9px;border-radius:50%}
.legend-copy{display:grid;gap:2px}.legend-copy strong{font-size:11px}.legend-copy small{font-size:9px;color:var(--muted)}
.legend-percent{font:800 12px Manrope;color:var(--ink)}
.legend-total{border-top:1px solid var(--line);padding-top:9px;margin-top:3px;display:flex;align-items:center;justify-content:space-between;font-size:10px;color:var(--muted)}
.legend-total strong{font:800 15px Manrope;color:var(--ink)}
.chart-footnote{margin-top:13px;color:var(--muted);font-size:9px}
.dashboard-indicators{display:grid;grid-template-rows:1fr 1fr auto;gap:12px;min-width:0}
.indicator-card{padding:18px;display:flex;flex-direction:column;justify-content:center;margin:0}
.indicator-heading{display:flex;align-items:center;justify-content:space-between;font-size:12px;font-weight:800}
.indicator-mark{width:27px;height:27px;border-radius:9px;display:grid;place-items:center;font-size:10px;font-weight:900}
.activity-mark{background:#e1f0ec;color:#4c968c}.assessment-mark{background:#f6efd9;color:#ac8f3f}
.indicator-values{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:13px}
.indicator-values div{display:grid;gap:4px}.indicator-values small{font-size:9px;color:var(--muted)}
.indicator-values strong{font:800 24px Manrope;color:var(--ink)}
.dashboard-total{display:flex;align-items:center;justify-content:space-between;padding:2px 4px;color:var(--muted);font-size:10px}
.dashboard-total strong{font:800 18px Manrope;color:var(--ink)}
.upcoming-card{padding-bottom:14px}
.upcoming-list{display:grid}
.upcoming-item{display:grid;grid-template-columns:44px minmax(0,1fr) auto;gap:11px;align-items:center;padding:11px 0;border-top:1px solid var(--line);cursor:pointer}
.upcoming-item:first-child{border-top:0}
.upcoming-date{border-radius:10px;background:var(--teal-soft);color:var(--teal-deep);padding:7px 3px;text-align:center;font-size:9px;font-weight:850;line-height:1.35}
.upcoming-info{min-width:0}.upcoming-info strong{display:block;font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.upcoming-info small{display:block;margin-top:3px;color:var(--muted);font-size:9px}
.upcoming-status{font-size:9px;font-weight:800;color:var(--muted);text-align:right}
.upcoming-status.overdue{color:var(--danger)}
.weekly-grid-section{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:22px;margin:0 0 20px;box-shadow:var(--shadow)}
.weekly-grid-wrap{overflow-x:auto}
.weekly-grid{width:100%;min-width:780px;border-collapse:separate;border-spacing:6px 7px;table-layout:fixed}
.weekly-grid th{font-size:10px;color:var(--muted);font-weight:800;text-align:center;padding:7px 4px}
.weekly-grid th:first-child{width:115px;text-align:left}
.weekly-grid td{vertical-align:top;background:var(--surface-soft);border:1px solid var(--line);border-radius:11px;padding:8px;min-height:86px}
.weekly-grid td.time-cell{background:var(--teal-soft);color:var(--teal-deep);font-size:10px;font-weight:850;text-align:center;vertical-align:middle;white-space:nowrap;line-height:1.6}
.schedule-subject{font-size:10px;font-weight:850;color:var(--ink);margin:0 0 6px;line-height:1.35}
.schedule-empty{font-size:9px;color:var(--muted);font-style:italic;padding:5px 2px}
.no-class{display:flex;align-items:center;gap:5px;color:var(--muted);font-size:9px;margin:7px 0 2px}
.no-class-symbol{width:16px;height:16px;border-radius:5px;background:#edf0f1;color:#788b91;display:grid;place-items:center;font-size:10px}
.event-chip{display:block;width:100%;text-align:left;border:0;padding:5px 7px;margin-top:5px;border-radius:6px;font-size:9px;line-height:1.35;font-weight:750;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background:#e4f1ef;color:#447f78}
.event-chip.prova{background:#e5f0f7;color:#527f9b}.event-chip.trabalho{background:#f7f0d9;color:#927c3f}.event-chip.atividade{background:#e0f1ed;color:#427f75}
.event-chip.completed{opacity:.53;text-decoration:line-through}.event-chip.vacancy{background:#eef1f2;color:#788b91}
.event-chip.custom{background:#e9edf2;color:#687c8a}
.grid-empty,.empty-state{padding:25px 12px;text-align:center;color:var(--muted);font-size:11px;line-height:1.6}
.empty-state strong{display:block;color:var(--ink);font:750 13px Manrope;margin:6px 0}
.form-card{max-width:870px}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.field{display:grid;gap:7px;min-width:0}
.field.full{grid-column:1/-1}
.field>span{font-size:11px;font-weight:800;color:var(--muted)}
.field input,.field select,.field textarea,.inline-form input{width:100%;min-width:0;border:1px solid var(--line);border-radius:9px;padding:11px 12px;font-size:12px;color:var(--ink);background:var(--surface-soft);outline:none}
.field input:focus,.field select:focus,.field textarea:focus,.inline-form input:focus{border-color:var(--teal);box-shadow:0 0 0 3px var(--teal-soft)}
.field textarea{resize:vertical}
.date-picker{position:relative}
.date-picker-trigger{width:100%;min-height:42px;text-align:left;border:1px solid var(--line);border-radius:9px;padding:11px 12px;font-size:12px;color:var(--ink);background:var(--surface-soft);cursor:pointer}
.date-picker-trigger:disabled{color:var(--muted);opacity:.75;cursor:not-allowed}
.date-picker-panel{position:absolute;z-index:25;top:calc(100% + 7px);left:0;width:min(440px,calc(100vw - 44px));padding:13px;background:var(--surface);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow)}
.date-picker-toolbar{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}
.date-picker-toolbar strong{font-size:11px;text-transform:capitalize}
.date-picker-grid{display:grid;gap:9px}
.date-picker-column>strong{display:block;text-align:center;font-size:10px;color:var(--muted);padding:5px;border-bottom:1px solid var(--line);margin-bottom:7px}
.date-picker-column>div{display:grid;gap:5px}
.date-option{border:1px solid var(--line);border-radius:7px;padding:7px 3px;background:var(--surface-soft);color:var(--ink);font-size:10px;font-weight:800}
.date-option:hover,.date-option.selected{background:var(--teal-soft);border-color:var(--teal);color:var(--teal-deep)}
.date-picker-help,.date-picker-empty{font-size:9px;color:var(--muted);line-height:1.5;margin:10px 0 0}
@media(max-width:700px){.date-picker-panel{position:relative;top:auto;width:100%;margin-top:7px}.date-picker-column>div{grid-template-columns:repeat(2,minmax(0,1fr))}}
.form-actions{display:flex;align-items:center;justify-content:flex-end;gap:14px;border-top:1px solid var(--line);padding-top:17px;margin-top:19px}
.form-message{font-size:10px;color:var(--danger)}
.form-hint{font-size:10px;color:var(--muted);padding:10px 12px;background:var(--surface-soft);border-radius:9px;margin-top:14px}
.category-create-card{display:flex;align-items:center;justify-content:space-between;gap:20px}
.category-create-card p,.semester-card p{font-size:10px;color:var(--muted);margin:4px 0 0;line-height:1.5}
.inline-form{display:flex;gap:9px;align-items:center;min-width:min(380px,52%)}
.inline-form input{flex:1}
.schedule-form{grid-template-columns:1.3fr 1fr 1fr auto;align-items:end}
.schedule-submit{display:flex;align-items:end}
.schedule-list{display:grid;gap:8px}
.schedule-row{display:grid;grid-template-columns:minmax(130px,1.2fr) 1fr 1fr auto;gap:10px;align-items:center;padding:11px 12px;border:1px solid var(--line);border-radius:10px;background:var(--surface-soft)}
.schedule-row strong{font-size:11px}.schedule-row span{font-size:10px;color:var(--muted)}
.remove-button{border:0;background:transparent;color:var(--danger);font-size:10px;font-weight:800;padding:7px}
.semester-card{display:flex;align-items:center;justify-content:space-between;gap:20px}
.calendar-card{padding:20px}
.calendar-toolbar{display:flex;align-items:center;justify-content:center;gap:12px;margin-bottom:18px}
.calendar-toolbar strong{font:800 14px Manrope;min-width:150px;text-align:center}
.month-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}
.month-weekday{text-align:center;color:var(--muted);font-size:9px;font-weight:850;padding:5px}
.month-day{border:1px solid var(--line);background:var(--surface-soft);border-radius:10px;min-height:88px;text-align:left;padding:7px;display:flex;flex-direction:column;gap:5px;color:var(--ink);min-width:0}
.month-day.outside{opacity:.35}.month-day.selected{outline:2px solid var(--teal);background:var(--teal-soft)}
.month-day.today .day-number{background:var(--teal);color:white}
.day-number{width:22px;height:22px;border-radius:7px;display:grid;place-items:center;font-size:9px;font-weight:850}
.day-events{display:grid;gap:3px;overflow:hidden}
.day-event{font-size:8px;line-height:1.25;padding:3px 4px;border-radius:4px;background:#e4f1ef;color:#447f78;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.day-event.prova{background:#e5f0f7;color:#527f9b}.day-event.trabalho{background:#f7f0d9;color:#927c3f}
.day-event.vacancy{background:#eef1f2;color:#788b91}
.day-more{font-size:8px;color:var(--muted)}
.selected-day-list{display:grid}
.day-record-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 0;border-top:1px solid var(--line);cursor:pointer}
.day-record-row:first-child{border-top:0}
.day-record-main{min-width:0}.day-record-main strong{display:block;font-size:11px}.day-record-main small{display:block;color:var(--muted);font-size:9px;margin-top:3px}
.status-pill{font-size:8px;padding:5px 8px;border-radius:20px;background:var(--surface-soft);color:var(--muted);font-weight:800;white-space:nowrap}
.status-pill.done{background:#e3f0e7;color:#4d8965}.status-pill.late{background:#f7e9e6;color:var(--danger)}
.notes-list{display:grid;gap:16px}
.notes-subject{border:1px solid var(--line);border-radius:12px;overflow:hidden}
.notes-subject-heading{padding:12px 14px;background:var(--surface-soft);font:800 12px Manrope}
.note-row{display:grid;grid-template-columns:1fr auto auto;gap:12px;align-items:center;padding:10px 14px;border-top:1px solid var(--line)}
.note-row strong{font-size:11px}.note-row small{font-size:9px;color:var(--muted)}
.note-grade{font:800 12px Manrope;padding:5px 9px;border-radius:8px;background:#f8e9e7;color:#b66f68}
.note-grade.pass{background:#e2f1e8;color:#4e8b68}
.note-delete{border:0;background:none;color:var(--danger);font-size:10px}
.settings-section{display:flex;align-items:center;justify-content:space-between;gap:20px}
.settings-section p{color:var(--muted);font-size:10px;line-height:1.5;margin:4px 0 0;max-width:640px}
.theme-options,.settings-actions{display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.theme-choice{border:1px solid var(--line);background:var(--surface-soft);color:var(--ink);border-radius:10px;padding:9px 13px;font-size:10px;font-weight:800}
.theme-choice.active{background:var(--teal-soft);border-color:var(--teal);color:var(--teal-deep)}
.settings-warning{flex-basis:100%;margin:8px 0 0!important;color:var(--danger)!important}
.offline-note{font-size:10px;color:var(--muted)}
.global-message{position:fixed;right:22px;bottom:20px;background:#20383d;color:#fff;padding:12px 16px;border-radius:10px;font-size:11px;opacity:0;transform:translateY(8px);transition:.2s;pointer-events:none;z-index:100}
.global-message.show{opacity:1;transform:translateY(0)}
.modal-backdrop{position:fixed;inset:0;background:rgba(17,35,38,.46);z-index:50;display:grid;place-items:center;padding:18px}
.record-dialog{position:relative;background:var(--surface);border:1px solid var(--line);border-radius:18px;box-shadow:0 25px 80px rgba(0,0,0,.2);width:min(520px,100%);max-height:90vh;overflow:auto;padding:26px}
.modal-close{position:absolute;top:14px;right:15px;border:0;background:var(--surface-soft);color:var(--muted);border-radius:8px;font-size:20px;width:30px;height:30px}
.modal-category{font-size:9px;font-weight:850;letter-spacing:.7px;text-transform:uppercase;color:var(--teal-deep)}
.modal-title{font:800 20px Manrope;margin:8px 38px 6px 0}
.modal-meta{font-size:10px;color:var(--muted);line-height:1.7}
.modal-description{font-size:11px;color:var(--ink);background:var(--surface-soft);border-radius:10px;padding:12px;margin:17px 0;white-space:pre-wrap}
.modal-status{display:flex;align-items:center;gap:9px;font-size:11px;font-weight:750;margin:16px 0}
.modal-status input{accent-color:var(--teal);width:16px;height:16px}
.modal-actions{display:flex;gap:8px;justify-content:flex-end;border-top:1px solid var(--line);padding-top:16px;margin-top:17px}
.modal-form{display:grid;gap:13px;margin-top:15px}
.modal-form .field.full{grid-column:auto}
@media(max-width:1100px){
  .main-content{padding:30px 28px 60px}
  .dashboard-overview{grid-template-columns:1fr}
  .dashboard-indicators{grid-template-columns:1fr 1fr;grid-template-rows:auto auto}
  .dashboard-total{grid-column:1/-1}
  .progress-visual{max-width:730px}
}
@media(max-width:700px){
  .app-shell{display:block}
  .sidebar{position:fixed;top:0;left:0;bottom:0;width:min(285px,86vw);height:100dvh;transform:translateX(-105%);transition:transform .22s ease;box-shadow:var(--shadow)}
  .sidebar.open{transform:translateX(0)}
  .mobile-menu{display:inline-block}
  .main-content{padding:22px 15px 46px}
  .topbar{align-items:flex-start;margin-bottom:22px}
  .topbar h1{font-size:22px}
  .topbar-meta{display:grid;gap:5px;font-size:9px}
  .topbar-meta .semester-pill{justify-self:end}
  .page-intro-row{align-items:flex-start;flex-direction:column}
  .dashboard-overview .progress-visual{grid-template-columns:1fr;gap:8px}
  .semi-chart-wrap{max-width:290px}
  .progress-legend{max-width:340px;width:100%;margin:0 auto}
  .dashboard-indicators{grid-template-columns:1fr 1fr;gap:8px}
  .indicator-card{padding:13px}
  .indicator-values{gap:7px;margin-top:10px}
  .indicator-values strong{font-size:21px}
  .weekly-grid-section,.content-card{padding:16px}
  .weekly-grid{min-width:730px}
  .form-grid{grid-template-columns:1fr}
  .field.full{grid-column:auto}
  .schedule-form{grid-template-columns:1fr 1fr}
  .schedule-form .field:first-child{grid-column:1/-1}
  .schedule-submit{grid-column:1/-1}
  .category-create-card,.semester-card,.settings-section{align-items:flex-start;flex-direction:column}
  .inline-form{width:100%;min-width:0}
  .schedule-row{grid-template-columns:1fr 1fr}
  .schedule-row strong{grid-column:1/-1}
  .month-day{min-height:65px;padding:4px;border-radius:7px}
  .month-grid{gap:3px}
  .month-day .day-events{display:none}
  .month-day.has-events:after{content:'';width:5px;height:5px;border-radius:50%;background:var(--teal);margin:0 auto}
  .calendar-toolbar{gap:7px}
  .calendar-toolbar strong{min-width:110px;font-size:12px}
  .week-toolbar{width:100%;justify-content:center;gap:7px;padding:8px}
  .week-toolbar>div{min-width:0;flex:1}
  .week-toolbar .text-button{font-size:9px;margin-left:0}
  .record-dialog{padding:22px 17px}
}


/* Tela de autenticação da versão PWA. */
.pwa-auth-gate{position:fixed;inset:0;z-index:200;display:grid;place-items:center;padding:22px;background:var(--page);background:rgba(245,250,249,.97)}
.pwa-auth-gate[hidden]{display:none}
.pwa-auth-panel{width:min(420px,100%);padding:30px 24px;text-align:center;background:var(--surface);border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow)}
.pwa-auth-panel h1{font:800 22px Manrope,sans-serif;color:var(--ink);margin:12px 0}
.pwa-auth-panel p{font-size:12px;line-height:1.6;color:var(--muted);margin:0 0 18px}
.pwa-auth-panel button{width:100%;margin-top:9px;justify-content:center}
.pwa-auth-mark{width:48px;height:48px;margin:auto;border-radius:14px;background:var(--teal);color:white;display:grid;place-items:center;font-size:26px}
.pwa-auth-panel .pwa-auth-message{min-height:18px;margin:14px 0 0;color:var(--danger);font-size:11px}
html.pwa-auth-pending .app-shell{visibility:hidden}
@media(display-mode:standalone){body{min-height:100dvh}}
