:root{--bg:#f5f7fb;--card:#fff;--text:#101828;--muted:#667085;--primary:#2563eb;--danger:#dc2626;--ok:#16a34a;--warn:#f59e0b;--border:#d0d5dd;--shadow:0 12px 32px rgba(16,24,40,.08)}*{box-sizing:border-box}body{margin:0;font-family:Inter,system-ui,-apple-system,Segoe UI,sans-serif;background:var(--bg);color:var(--text)}button,input,select,textarea{font:inherit}input[type=checkbox]{width:auto}button{border:0;border-radius:12px;background:var(--primary);color:white;padding:.7rem 1rem;cursor:pointer;font-weight:700}button.secondary{background:#e5e7eb;color:var(--text)}button.danger{background:var(--danger)}button:disabled{opacity:.5;cursor:not-allowed}input,select,textarea{width:100%;padding:.7rem;border:1px solid var(--border);border-radius:12px;background:#fff}textarea{min-height:110px}.app-loading{display:grid;min-height:100vh;place-items:center;font-size:1.5rem;font-weight:800}.layout{display:grid;grid-template-columns:260px 1fr;min-height:100vh}.sidebar{background:#0f172a;color:#fff;padding:1rem;display:flex;flex-direction:column;gap:.75rem}.brand{font-size:1.25rem;font-weight:900;padding:.5rem}.nav{display:grid;gap:.35rem}.nav a{color:#cbd5e1;text-decoration:none;padding:.75rem;border-radius:12px}.nav a.active,.nav a:hover{background:#1e293b;color:#fff}.main{padding:1.25rem;max-width:1440px;width:100%;margin:0 auto}.topbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:1rem;gap:1rem}.cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1rem}.card{background:var(--card);border:1px solid #eef2f7;border-radius:20px;padding:1rem;box-shadow:var(--shadow)}.card h3{margin:.1rem 0 .5rem}.metric{font-size:2rem;font-weight:900}.muted{color:var(--muted)}.grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.toolbar{display:flex;gap:.75rem;align-items:center;flex-wrap:wrap;margin-bottom:1rem}.table-wrap{overflow:auto;background:#fff;border:1px solid #eef2f7;border-radius:20px;box-shadow:var(--shadow)}table{border-collapse:collapse;width:100%;min-width:700px}th,td{text-align:left;padding:.8rem;border-bottom:1px solid #eef2f7;vertical-align:top}th{font-size:.8rem;text-transform:uppercase;color:var(--muted);background:#f8fafc}.badge{display:inline-flex;border-radius:999px;padding:.2rem .55rem;font-weight:700;font-size:.8rem;background:#e5e7eb}.urgent{background:#fee2e2;color:#991b1b}.high{background:#ffedd5;color:#9a3412}.normal{background:#dbeafe;color:#1d4ed8}.low{background:#dcfce7;color:#166534}.form{display:grid;gap:.75rem}.form-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem}.login{min-height:100vh;display:grid;place-items:center;padding:1rem}.login-card{width:min(440px,100%);background:#fff;border-radius:24px;padding:1.5rem;box-shadow:var(--shadow)}.notice{padding:.8rem;border-radius:14px;background:#eff6ff;color:#1d4ed8;margin:.75rem 0}.error{padding:.8rem;border-radius:14px;background:#fee2e2;color:#991b1b;margin:.75rem 0}.split{display:grid;grid-template-columns:1.2fr .8fr;gap:1rem}.right{display:flex;gap:.5rem;align-items:center}.hidden{display:none!important}@media(max-width:900px){.layout{grid-template-columns:1fr}.sidebar{position:sticky;top:0;z-index:5}.nav{grid-template-columns:repeat(3,1fr)}.cards,.grid,.split,.form-row{grid-template-columns:1fr}.main{padding:.8rem}.topbar{align-items:flex-start;flex-direction:column}table{min-width:600px}}
.app-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1rem;background:#fff;border:1px solid #eef2f7;border-radius:18px;padding:.65rem 1rem;box-shadow:var(--shadow)}.header-user{display:flex;align-items:center;gap:.6rem;font-weight:800}.avatar{width:38px;height:38px;border-radius:999px;object-fit:cover;display:inline-grid;place-items:center;vertical-align:middle}.avatar-fallback{background:#dbeafe;color:#1d4ed8;font-weight:900}.icon-button{position:relative;background:#eef2ff;color:#1e293b;padding:.55rem .8rem}.notif-count{position:absolute;top:-8px;right:-8px;background:var(--danger);color:#fff;border-radius:999px;min-width:22px;height:22px;font-size:.75rem;display:inline-flex;align-items:center;justify-content:center;border:2px solid #fff}.notification-wrap{position:relative}.notification-menu{position:absolute;right:0;top:calc(100% + .5rem);width:min(380px,calc(100vw - 2rem));background:#fff;border:1px solid #e5e7eb;border-radius:18px;box-shadow:0 18px 48px rgba(16,24,40,.2);z-index:20;overflow:hidden}.notification-menu-title{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.8rem;border-bottom:1px solid #eef2f7}.notification-item{display:grid;gap:.2rem;padding:.8rem;text-decoration:none;color:var(--text);border-bottom:1px solid #f1f5f9}.notification-item.unread{background:#eff6ff}.notification-item span{color:var(--muted);font-size:.9rem}.notification-item small{color:#94a3b8}.notification-empty{padding:1rem;color:var(--muted)}.link-button{background:transparent;color:var(--primary);padding:.25rem;font-size:.85rem}.toast-zone{position:fixed;right:1rem;bottom:1rem;z-index:50}.toast{display:grid;gap:.25rem;min-width:260px;max-width:380px;background:#0f172a;color:white;border-radius:18px;padding:1rem;box-shadow:0 18px 48px rgba(16,24,40,.35)}.toast span{color:#cbd5e1}.small{font-size:.85rem}.subtle{background:#f8fafc;box-shadow:none}.card-actions{display:flex;gap:.5rem;flex-wrap:wrap;margin-top:.75rem}.profile-line{display:flex;gap:.75rem;align-items:center;margin-bottom:1rem}.meta-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem;margin:.75rem 0}.v2-task-form fieldset{border:1px solid #e5e7eb;border-radius:18px;padding:1rem;margin:0}.v2-task-form legend{font-weight:900;color:#334155}.type-grid{display:flex;gap:.5rem;flex-wrap:wrap;margin:.5rem 0}.type-button{background:#dbeafe;color:#1d4ed8}.type-button.selected{background:#16a34a;color:#fff}.type-panel{border-left:4px solid #2563eb;margin:.7rem 0;padding:.75rem;background:#f8fafc;border-radius:14px}.toolbar input{max-width:320px}.toolbar select{max-width:220px}@media(max-width:900px){.app-header{position:sticky;top:0;z-index:10}.notification-menu{right:-.5rem}.meta-grid{grid-template-columns:1fr}.toast-zone{left:1rem;right:1rem}.toast{max-width:none}}
.task-section{margin:1.1rem 0}.section-title{display:flex;align-items:center;justify-content:space-between;gap:.75rem;margin:.5rem 0}.section-title h2{font-size:1.1rem;margin:0}.section-title span{display:inline-flex;align-items:center;justify-content:center;min-width:32px;height:32px;border-radius:999px;background:#e5e7eb;font-weight:900}.task-section .table-wrap{box-shadow:none}.task-section + .task-section{margin-top:1.5rem}

.brand{display:flex;align-items:center;gap:.65rem}
.site-logo{width:34px;height:34px;object-fit:contain;border-radius:10px;background:#fff}
.site-logo-fallback{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:10px;background:#2563eb;color:#fff;font-weight:800;font-size:.85rem}
.brand-preview{display:flex;align-items:center;gap:.75rem;padding:1rem;border:1px solid #e5e7eb;border-radius:1rem;background:#f8fafc}
.grid.two{grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}
.check-row{display:flex!important;align-items:center;gap:.5rem}
.check-row input{width:auto!important}
.task-assign-select{min-width:180px}.task-done-button{white-space:nowrap}.task-timer{font-variant-numeric:tabular-nums;font-weight:800}.upload-help{font-size:.85rem;color:var(--muted);margin-top:-.4rem}.avatar{background:#fff;border:1px solid #e5e7eb}

.task-section { border-radius: 1rem; padding: .75rem; margin: 1rem 0; }
.task-section-planned { background: rgba(59,130,246,.08); }
.task-section-waiting { background: rgba(245,158,11,.12); }
.task-section-inProgress { background: rgba(16,185,129,.10); }
.task-section-done { background: rgba(107,114,128,.10); }
.task-row-planned td { background: rgba(59,130,246,.045); }
.task-row-waiting td { background: rgba(245,158,11,.065); }
.task-row-inProgress td { background: rgba(16,185,129,.055); }
.task-row-done td { background: rgba(107,114,128,.05); }
.task-actions { display:flex; gap:.4rem; flex-wrap:wrap; align-items:center; }
.stay-group { margin-bottom: 1rem; }
.site-logo { object-fit: contain; }

.notif-count.danger{background:#dc2626;color:#fff;animation:notifPulse 1.4s infinite}
.pill{display:inline-flex;align-items:center;justify-content:center;min-width:1.5rem;padding:.15rem .5rem;border-radius:999px;font-size:.8rem;font-weight:700;background:#e5e7eb;color:#111827}
.pill.danger{background:#dc2626;color:#fff}
.button-row{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap}
.check-row{display:flex;align-items:center;gap:.5rem}
@keyframes notifPulse{0%{transform:scale(1)}50%{transform:scale(1.15)}100%{transform:scale(1)}}

.login-brand{display:flex;align-items:center;gap:.75rem;margin-bottom:.5rem}.login-brand .site-logo{width:48px;height:48px}.login-brand h1{margin:0}.login-card h2{margin:.25rem 0 1rem}.app-loading{gap:.75rem}.loading-logo{width:64px;height:64px;object-fit:contain}

@media(max-width:700px){
  .sidebar{padding:.75rem}.brand{font-size:1rem}.nav{grid-template-columns:repeat(2,1fr);gap:.25rem}.nav a{padding:.55rem;font-size:.9rem}.main{padding:.6rem}.topbar h1{font-size:1.35rem;margin:.25rem 0}.toolbar{gap:.5rem}.toolbar input,.toolbar select{max-width:none;width:100%}
  .task-section{padding:.5rem;border-radius:16px}.task-section .table-wrap{background:transparent;border:0;box-shadow:none;overflow:visible}.tasks-table{min-width:0;border-collapse:separate;border-spacing:0 .6rem}.tasks-table thead{display:none}.tasks-table tbody,.tasks-table tr,.tasks-table td{display:block;width:100%}.tasks-table tr{background:#fff;border:1px solid #e5e7eb;border-radius:16px;padding:.75rem;box-shadow:0 8px 22px rgba(16,24,40,.08)}.tasks-table td{border:0;background:transparent!important;padding:.25rem 0}.tasks-table td::before{content:attr(data-label);display:block;font-size:.72rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-weight:800;margin-bottom:.1rem}.tasks-table .optional-mobile{display:none}.tasks-table .col-title a{font-size:1.05rem;font-weight:900}.tasks-table .col-action{padding-top:.6rem}.tasks-table .task-assign-select{min-width:0;width:100%}.tasks-table .button-row button{width:100%}.tasks-table .col-room:empty,.tasks-table .col-client:empty,.tasks-table .col-assignee:empty,.tasks-table .col-start:empty,.tasks-table .col-end:empty{display:none}
}


.notification-actions{padding:.7rem;border-bottom:1px solid #eef2f7;background:#f8fafc}
.notification-actions button{width:100%}
.notification-item.muted-task{background:#f3f4f6;opacity:.72}
.muted-pill{margin-left:.45rem;background:#f3f4f6;color:#475569;border:1px solid #e5e7eb}
.task-mute-button,.task-clone-waiting-button{white-space:nowrap}


.menu-toggle{display:none;margin-left:auto;padding:.45rem .65rem;background:#1e293b;color:#fff;border:1px solid rgba(255,255,255,.15)}
.notification-actions{padding:.65rem .8rem;border-bottom:1px solid #eef2f7;background:#f8fafc;display:flex;gap:.5rem;flex-wrap:wrap}.muted-task{opacity:.6}.muted-pill{background:#e5e7eb;color:#475569;margin-top:.35rem}.audio-preview{width:100%;margin:.5rem 0}.logs-details summary{cursor:pointer;list-style:none;display:flex;align-items:center;justify-content:space-between;gap:.75rem}.logs-details summary::-webkit-details-marker{display:none}.logs-details summary:after{content:'▾';font-weight:900;color:var(--muted)}.logs-details[open] summary{margin-bottom:1rem}.logs-details[open] summary:after{content:'▴'}
@media(max-width:700px){
  .layout{display:block;min-height:100vh}.app-header{position:fixed;top:0;left:0;right:0;z-index:30;border-radius:0;margin:0;border-left:0;border-right:0;padding:.55rem .75rem}.header-user span{max-width:45vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.notification-wrap{margin-left:auto}.notification-menu{position:fixed;top:58px;right:.5rem;left:.5rem;width:auto;max-height:calc(100vh - 70px);overflow:auto}.sidebar{position:fixed;top:58px;left:0;right:0;z-index:25;padding:.45rem .6rem;border-bottom:1px solid rgba(255,255,255,.12)}.sidebar .brand{padding:.25rem}.menu-toggle{display:inline-flex;align-items:center;justify-content:center}.sidebar .nav{display:none;grid-template-columns:1fr;max-height:calc(100vh - 116px);overflow:auto;padding:.4rem 0}.sidebar.nav-open .nav{display:grid}.main{padding-top:118px}.topbar{margin-top:.25rem}.brand .site-logo,.brand .site-logo-fallback{width:28px;height:28px}.brand span{font-size:.95rem}
}

/* v3.00.15 */
.icon-only{min-width:2.4rem;padding:.55rem .7rem;font-size:1.05rem;line-height:1}.task-filter-details{margin-bottom:1rem}.task-filter-details summary{cursor:pointer;font-weight:900;margin-bottom:.6rem;display:none}.token-box{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap;background:#f8fafc;border:1px solid #e5e7eb;border-radius:14px;padding:.7rem}.token-box code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.85rem;word-break:break-all;flex:1}.task-clone-waiting-button::before{content:'👥 ';}.task-back-waiting-button::before{content:'↩ ';}
@media(max-width:700px){.task-filter-details{background:#fff;border:1px solid #e5e7eb;border-radius:16px;padding:.75rem;box-shadow:var(--shadow)}.task-filter-details summary{display:block;margin-bottom:0}.task-filter-details[open] summary{margin-bottom:.75rem}.task-filter-details:not([open]) .toolbar{display:none}.task-filter-details .toolbar{margin-bottom:0}.icon-only{width:auto!important}}
/* v3.00.16 */
.task-list-comment{margin-top:.35rem;padding:.35rem .5rem;border-left:3px solid #94a3b8;background:rgba(148,163,184,.12);border-radius:8px;font-size:.85rem;color:#475569}
.task-countdown{font-variant-numeric:tabular-nums;font-weight:900;color:#1d4ed8}
.countdown-action{display:grid;gap:.35rem;align-items:start}.plugins-list{display:grid;gap:.75rem}.plugin-card{border:1px solid #e5e7eb;border-radius:16px;padding:1rem;background:#fff}
/* v3.00.17 points plugin */
.grade-badge{display:inline-flex;align-items:center;gap:.4rem;border-radius:999px;background:#0f172a;color:#fff;padding:.45rem .8rem;font-weight:900;margin:.25rem 0 .5rem}
.score-line{display:grid;grid-template-columns:1fr auto;gap:.25rem .75rem;align-items:center;border-bottom:1px solid #eef2f7;padding:.45rem 0}.score-line small{grid-column:1 / -1;color:var(--muted)}.score-pre{white-space:pre-wrap;word-break:break-word;background:#f8fafc;border:1px solid #e5e7eb;border-radius:12px;padding:.75rem;max-height:320px;overflow:auto}
/* v3.00.19 */
.app-footer{margin-top:2rem;padding:1rem 0;color:var(--muted);font-size:.9rem}.app-footer a{color:var(--primary);font-weight:800}.login-link{margin:.5rem 0 0;color:var(--muted);font-size:.95rem}.login-link a{font-weight:900}.success{background:#dcfce7;color:#166534;border-radius:12px;padding:.75rem;margin:.75rem 0}.small{font-size:.85rem}.profile-line h2{margin:.1rem 0}.score-pre table{font-size:.9rem}

/* v3.00.20 */
a{ text-decoration:none; }
a:hover{ text-decoration:none; }
.brand{justify-content:space-between}.brand-home{display:flex;align-items:center;gap:.65rem;color:#fff;font-weight:900}.brand-home:visited{color:#fff}.room-move-target{margin-top:.75rem;padding:.75rem;border:1px dashed var(--border);border-radius:14px;background:#f8fafc}.room-move-meta{margin-top:.25rem}.type-panel summary{cursor:pointer;font-weight:900}.theme-sound-list{display:grid;gap:.75rem}.theme-sound-row{display:grid;grid-template-columns:1fr minmax(220px,.8fr);gap:.75rem;align-items:center;border:1px solid #e5e7eb;border-radius:14px;background:#f8fafc;padding:.75rem}.audio-preview.compact{width:100%;max-width:260px;height:34px}
@media(max-width:700px){.brand-home{gap:.45rem}.brand{display:flex}.theme-sound-row{grid-template-columns:1fr}.sidebar .brand{justify-content:space-between}.sidebar .brand-home span{font-size:.95rem}}


/* v3.00.21 refinements */
.app-footer{margin-top:2.5rem;padding:1rem 1.25rem;border-top:1px solid #e5e7eb;background:rgba(255,255,255,.72);border-radius:18px;color:var(--muted);display:flex;justify-content:center;align-items:center;box-shadow:0 8px 24px rgba(16,24,40,.04)}
.app-footer a{display:inline-flex;align-items:center;gap:.45rem;padding:.5rem .85rem;border-radius:999px;background:#eef2ff;color:var(--primary);font-weight:900;text-decoration:none}.app-footer a::before{content:'📘'}
.wheel-overlay{position:fixed;inset:0;z-index:9999;background:rgba(15,23,42,.55);display:grid;place-items:center;padding:1rem}.wheel-modal{width:min(520px,100%);background:var(--card);border-radius:28px;padding:1.25rem;text-align:center;box-shadow:0 24px 80px rgba(0,0,0,.28)}.wheel-disc{width:220px;height:220px;border-radius:50%;margin:0 auto 1rem;position:relative;display:grid;place-items:center;background:conic-gradient(#2563eb 0 60deg,#16a34a 60deg 120deg,#f59e0b 120deg 180deg,#dc2626 180deg 240deg,#7c3aed 240deg 300deg,#06b6d4 300deg 360deg);border:8px solid #fff;box-shadow:0 14px 38px rgba(16,24,40,.25);animation:wheel-spin 1.35s cubic-bezier(.14,.7,.22,1) infinite}.wheel-disc.wheel-done{animation:wheel-stop .8s ease-out forwards}.wheel-pointer{position:absolute;top:-22px;left:50%;transform:translateX(-50%);font-size:1.75rem;color:#111827;text-shadow:0 2px 4px rgba(255,255,255,.7)}.wheel-center{width:72px;height:72px;border-radius:50%;background:#fff;display:grid;place-items:center;font-size:2rem;box-shadow:inset 0 0 0 1px #e5e7eb}.wheel-labels{position:absolute;inset:14px;display:grid;place-items:center;pointer-events:none}.wheel-labels span{position:absolute;max-width:92px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.72rem;font-weight:900;color:#fff;text-shadow:0 1px 4px rgba(0,0,0,.45)}.wheel-labels span:nth-child(1){transform:translateY(-82px)}.wheel-labels span:nth-child(2){transform:rotate(60deg) translateY(-82px) rotate(-60deg)}.wheel-labels span:nth-child(3){transform:rotate(120deg) translateY(-82px) rotate(-120deg)}.wheel-labels span:nth-child(4){transform:rotate(180deg) translateY(-82px) rotate(-180deg)}.wheel-labels span:nth-child(5){transform:rotate(240deg) translateY(-82px) rotate(-240deg)}.wheel-labels span:nth-child(6){transform:rotate(300deg) translateY(-82px) rotate(-300deg)}.wheel-result{margin:1rem 0;padding:.9rem;border-radius:16px;background:#f8fafc;text-align:left}.wheel-result.success{background:#ecfdf5;color:#065f46}.wheel-result.error{background:#fee2e2;color:#991b1b}@keyframes wheel-spin{from{transform:rotate(0)}to{transform:rotate(1080deg)}}@keyframes wheel-stop{from{transform:rotate(1080deg)}to{transform:rotate(1170deg)}}


/* v3.00.23 professional motion refinements */
body{
  background:
    radial-gradient(circle at 15% 10%, rgba(37,99,235,.10), transparent 28rem),
    radial-gradient(circle at 85% 0%, rgba(16,185,129,.09), transparent 24rem),
    var(--bg);
}
button,.card,.nav a,.notification-item,.app-footer a,.type-button{
  transition:transform .18s ease, box-shadow .18s ease, background-color .18s ease, border-color .18s ease;
}
button:hover:not(:disabled),.app-footer a:hover{transform:translateY(-1px);box-shadow:0 10px 26px rgba(37,99,235,.15)}
.card:hover{box-shadow:0 16px 42px rgba(16,24,40,.10)}
.login{
  position:relative;
  overflow:hidden;
  background:
    linear-gradient(120deg, rgba(37,99,235,.12), rgba(16,185,129,.10), rgba(124,58,237,.10)),
    var(--bg);
}
.login::before,.login::after{
  content:'';
  position:absolute;
  width:34rem;
  height:34rem;
  border-radius:999px;
  filter:blur(4px);
  opacity:.55;
  animation:login-orb 14s ease-in-out infinite alternate;
  pointer-events:none;
}
.login::before{left:-12rem;top:-10rem;background:radial-gradient(circle, rgba(37,99,235,.35), transparent 65%)}
.login::after{right:-14rem;bottom:-12rem;background:radial-gradient(circle, rgba(16,185,129,.28), transparent 65%);animation-delay:-5s}
.login-card{position:relative;z-index:1;backdrop-filter:blur(14px);background:rgba(255,255,255,.88);border:1px solid rgba(255,255,255,.65)}
@keyframes login-orb{from{transform:translate3d(0,0,0) scale(1)}to{transform:translate3d(3rem,2rem,0) scale(1.08)}}
.admin-grid{grid-template-columns:minmax(0,2.1fr) minmax(220px,.65fr)!important;align-items:start}
.admin-grid .brand-preview{padding:.75rem;gap:.5rem}
.admin-grid .brand-preview .site-logo{width:30px;height:30px}
.admin-grid .brand-preview strong{font-size:.95rem}
.task-list-comment summary{cursor:pointer;font-weight:800}
.task-comments-list{display:grid;gap:.4rem;margin-top:.45rem}
.task-comments-list p{margin:.2rem 0;padding:.45rem .55rem;border-radius:10px;background:rgba(255,255,255,.62)}
.wheel-modal{overflow:hidden;position:relative}.wheel-modal::before{content:'';position:absolute;inset:-50%;background:conic-gradient(from 90deg, transparent, rgba(37,99,235,.08), transparent 30%);animation:wheel-glow 3s linear infinite;pointer-events:none}.wheel-modal>*{position:relative;z-index:1}
@keyframes wheel-glow{to{transform:rotate(360deg)}}
@media(max-width:700px){.admin-grid{grid-template-columns:1fr!important}.login::before,.login::after{width:24rem;height:24rem}.login-card{padding:1.25rem}}

/* v3.00.23 navigation/API-doc and compact task-create refinements */
.header-user{display:flex;align-items:center;gap:.6rem;text-decoration:none;color:inherit}
.header-user:visited{color:inherit}
.nav a[target="_blank"]::after{content:"↗";font-size:.75em;margin-left:.35rem;opacity:.7}
.app-footer{display:flex;justify-content:center;align-items:center;color:var(--muted);font-size:.85rem;padding:1rem 0}
.v2-task-form .room-move-target{display:grid;gap:.5rem}
.v2-task-form .room-move-target.hidden{display:none!important}

/* v3.00.24 hierarchy, wheel suspense and header refinements */
.header-user span{text-transform:none;font-weight:900;letter-spacing:.01em}
.hierarchy-note{font-size:.9rem;color:var(--muted)}
.service-card .card-actions{display:flex;gap:.5rem;flex-wrap:wrap;margin-top:.75rem}
.wheel-disc{animation:none}
.wheel-disc.wheel-spinning{animation:wheel-suspense 5.6s cubic-bezier(.06,.74,.09,1) forwards}
.wheel-disc.wheel-done{animation:none;transform:rotate(1885deg)}
@keyframes wheel-suspense{
  0%{transform:rotate(0deg)}
  45%{transform:rotate(1260deg)}
  70%{transform:rotate(1660deg)}
  86%{transform:rotate(1810deg)}
  94%{transform:rotate(1860deg)}
  100%{transform:rotate(1885deg)}
}
.notification-menu-title .pill{margin-left:auto}.notification-item strong{line-height:1.2}

/* v3.00.25 two-wheel bonus/malus and client search refinements */
.client-suggest{display:grid;gap:.35rem;margin-top:.45rem}.client-suggestion{width:100%;text-align:left;background:rgba(255,255,255,.86);color:var(--text);border:1px solid var(--border);border-radius:12px;padding:.55rem .7rem}.client-suggestion:hover{transform:translateY(-1px);box-shadow:var(--shadow)}.client-suggestion span{float:right;color:var(--muted);font-size:.85rem}.wheel-modal-duo{width:min(880px,100%)}.wheel-duo{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;align-items:start}.wheel-box{border:1px solid var(--border);border-radius:22px;padding:1rem;background:rgba(255,255,255,.78);box-shadow:0 14px 36px rgba(15,23,42,.08)}.wheel-box h4{margin:.1rem 0 .35rem}.wheel-user{font-weight:900;font-size:1.05rem;margin-bottom:.65rem;color:var(--text)}.wheel-stage{position:relative;width:236px;height:250px;margin:0 auto}.wheel-stage .wheel-disc{position:absolute;left:8px;top:22px;margin:0}.wheel-pointer-fixed{position:absolute;top:-2px;left:50%;transform:translateX(-50%);z-index:3;font-size:2rem;color:#111827;text-shadow:0 2px 5px rgba(255,255,255,.85)}.wheel-action-text{font-size:.88rem;color:var(--muted);min-height:2.4em;margin:.4rem 0 0}.wheel-bonus .wheel-user{color:#047857}.wheel-malus .wheel-user{color:#b45309}.wheel-disc.wheel-spinning{animation:wheel-suspense-long 8.2s cubic-bezier(.04,.86,.08,1) forwards}.wheel-disc.wheel-done{animation:none;transform:rotate(2868deg)}.wheel-malus .wheel-disc.wheel-done{transform:rotate(2926deg)}@keyframes wheel-suspense-long{0%{transform:rotate(0deg)}35%{transform:rotate(1540deg)}58%{transform:rotate(2260deg)}74%{transform:rotate(2620deg)}87%{transform:rotate(2790deg)}94%{transform:rotate(2842deg)}100%{transform:rotate(2868deg)}}@media(max-width:760px){.wheel-modal-duo{max-height:92vh;overflow:auto}.wheel-duo{grid-template-columns:1fr}.wheel-stage{width:210px;height:224px}.wheel-stage .wheel-disc{transform-origin:center}.wheel-box{padding:.8rem}.wheel-labels span{font-size:.64rem}}


/* v3.00.27 custom access/header refinements */
.sidebar-user{display:flex;align-items:center;gap:.65rem;color:#fff;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.12);border-radius:16px;padding:.65rem .75rem;font-weight:900}
.sidebar-user span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sidebar-user:hover{background:rgba(255,255,255,.14);color:#fff;text-decoration:none}
.header-stays{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap}
.header-stay-pill{display:inline-flex;gap:.45rem;align-items:center;border:1px solid #e5e7eb;background:#f8fafc;color:var(--text);border-radius:999px;padding:.45rem .75rem;font-weight:800}
.header-stay-pill b{display:inline-grid;place-items:center;min-width:1.6rem;height:1.6rem;border-radius:999px;background:#dbeafe;color:#1d4ed8}
select[multiple]{min-height:8.5rem}
@media(max-width:700px){
  .sidebar-user{padding:.45rem .55rem;font-size:.9rem}
  .header-stays{gap:.35rem}
  .header-stay-pill{padding:.35rem .55rem;font-size:.85rem}
  .header-stay-pill b{min-width:1.35rem;height:1.35rem}
}

/* v3.00.27 mobile menu: user identity collapses with nav */
@media(max-width:700px){
  .sidebar .sidebar-user{display:none}
  .sidebar.nav-open .sidebar-user{display:flex}
  .sidebar.nav-open .nav{display:grid}
}

/* v3.02 task list, recurring plugin, parking plugin and login picture wall */
.task-card.is-future,.task-row.is-future{opacity:.58;filter:grayscale(.35)}
.task-pagination{display:flex;gap:.5rem;align-items:center;justify-content:flex-end;margin-top:.75rem;flex-wrap:wrap}.task-pagination button{min-width:2.4rem}.room-move-number{display:flex;gap:.35rem;align-items:center}.room-move-number .arrow{opacity:.65;font-weight:900}
/* Fast login word: avatars clipped inside the Met-Tasks lettering */
.picture-wall{position:relative;z-index:1;width:min(760px,92vw);margin:0 auto 1.15rem;padding:0;border:0;background:transparent;box-shadow:none;backdrop-filter:none}
.picture-wall::before{display:none}
.picture-wall-text-only{height:auto}
.picture-wall-svg{display:block;width:100%;height:auto;overflow:visible;filter:drop-shadow(0 18px 36px rgba(15,23,42,.18))}
.picture-wall-svg-text,.picture-wall-outline{font-family:Inter,Arial,Helvetica,sans-serif;font-size:148px;font-weight:950;letter-spacing:-8px;dominant-baseline:auto}
.picture-wall-avatar-grid{width:1000px;height:220px;display:grid;grid-template-columns:repeat(24,1fr);grid-template-rows:repeat(5,1fr);gap:5px;background:#e0f2fe}
.picture-wall-avatar{display:grid;place-items:center;min-width:0;min-height:0;border-radius:12px;overflow:hidden;background:linear-gradient(135deg,#dbeafe,#bfdbfe);color:#1d4ed8;font-size:14px;font-weight:900;line-height:1;box-shadow:inset 0 0 0 1px rgba(255,255,255,.65)}
.picture-wall-avatar img{width:100%;height:100%;object-fit:cover;display:block}
.picture-wall-outline{fill:none;pointer-events:none;paint-order:stroke}
.picture-wall-outline-light{stroke:rgba(255,255,255,.96);stroke-width:18px;stroke-linejoin:round}
.picture-wall-outline-dark{stroke:rgba(15,23,42,.72);stroke-width:4.5px;stroke-linejoin:round}
.picture-wall-outline-gloss{stroke:rgba(255,255,255,.55);stroke-width:1.25px;stroke-linejoin:round}
.parking-summary .big-number{font-size:2rem;font-weight:900;margin:.2rem 0}.parking-settings summary{cursor:pointer}.nowrap{white-space:nowrap}.compact-form .form-row{align-items:end}.audio-preview.compact{width:100%;max-width:260px;height:32px}.theme-sound-list{display:grid;gap:.75rem}.theme-sound-row{display:grid;grid-template-columns:1fr minmax(220px,.6fr);gap:.75rem;align-items:center;padding:.75rem;border:1px solid var(--border);border-radius:14px;background:var(--bg)}
@media(max-width:700px){.picture-wall{width:min(430px,94vw);margin-bottom:.85rem}.picture-wall-svg-text,.picture-wall-outline{font-size:138px;letter-spacing:-8px}.picture-wall-avatar-grid{grid-template-columns:repeat(18,1fr);grid-template-rows:repeat(4,1fr);gap:4px}.picture-wall-avatar{border-radius:9px;font-size:10px}.task-pagination{justify-content:center}.theme-sound-row{grid-template-columns:1fr}}

/* v3.02 login refinements */
.login-brand-logo-only{justify-content:center;text-align:center}
.login-brand-logo-only .site-logo{margin:0 auto}
.picture-wall-outline-light{stroke-width:14px}
.picture-wall-outline-dark{stroke-width:5.5px}
@media(max-width:700px){.picture-wall{width:min(620px,99vw);margin-bottom:1.6rem}.picture-wall-svg{transform:scale(1.16);transform-origin:center center}.picture-wall-svg-text,.picture-wall-outline{font-size:164px;letter-spacing:-9px}.picture-wall-avatar-grid{grid-template-columns:repeat(20,1fr);grid-template-rows:repeat(4,1fr);gap:4px}.login-brand-logo-only{justify-content:center}.login-brand-logo-only .site-logo{width:58px;height:58px}}
@media(max-width:700px){.picture-wall-svg{transform:none}.picture-wall-svg-text,.picture-wall-outline{font-size:188px;letter-spacing:-10px}}


.service-button-grid,.status-buttons{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.35rem}.service-choice,.status-choice{background:#eef4ff;color:var(--text);border:1px solid var(--border)}.service-choice.selected,.status-choice.selected,.type-button.selected{background:var(--primary);color:white;border-color:var(--primary)}.task-type-groups{display:grid;gap:1rem}.task-type-service-group{border:1px solid var(--border);border-radius:18px;padding:.9rem;background:rgba(255,255,255,.72)}.task-type-service-group h4{margin:.1rem 0 .7rem}.danger-notice{border-color:#fecaca;background:#fff1f2;color:#7f1d1d}.room-clean-state{display:inline-block;border-radius:999px;padding:.18rem .55rem;font-weight:800;font-size:.82rem}.room-clean-clean{background:#dcfce7;color:#166534}.room-clean-dirty{background:#fee2e2;color:#991b1b}.room-clean-cleaning{background:#fef3c7;color:#92400e}.wheel-disc{width:220px;height:220px;border-radius:50%;margin:0 auto 1rem;position:relative;display:block;background:conic-gradient(#22c55e 0 52deg,#16a34a 52deg 106deg,#84cc16 106deg 158deg,#f59e0b 158deg 212deg,#ef4444 212deg 266deg,#dc2626 266deg 320deg,#22c55e 320deg 360deg);border:8px solid #fff;box-shadow:0 14px 38px rgba(16,24,40,.25);will-change:transform}.wheel-malus .wheel-disc{background:conic-gradient(#f97316 0 60deg,#ef4444 60deg 125deg,#b91c1c 125deg 190deg,#f59e0b 190deg 250deg,#dc2626 250deg 315deg,#fb923c 315deg 360deg)}.wheel-disc.wheel-spinning{animation:wheel-smooth-spin var(--wheel-duration,7800ms) cubic-bezier(.08,.72,.05,1) forwards}.wheel-disc.wheel-done{animation:none;transform:rotate(2520deg)}.wheel-malus .wheel-disc.wheel-done{transform:rotate(2584deg)}.wheel-labels,.wheel-center{display:none!important}.wheel-legend{display:flex;align-items:center;gap:.55rem;justify-content:center;margin:.55rem auto 0;max-width:260px;text-align:left;color:var(--text)}.wheel-chip{width:1rem;height:1rem;border-radius:999px;display:inline-block;box-shadow:inset 0 0 0 1px rgba(0,0,0,.18)}.wheel-chip-bonus{background:#22c55e}.wheel-chip-malus{background:#ef4444}@keyframes wheel-smooth-spin{0%{transform:rotate(0deg)}100%{transform:rotate(2520deg)}}

/* v3.02 notification channel event filters */
.notification-events{border:1px solid var(--border);border-radius:14px;padding:.75rem .9rem;margin:.5rem 0;background:rgba(255,255,255,.58)}
.notification-events legend{font-weight:800;padding:0 .35rem;color:var(--text)}
.notification-events .check-row{margin:.25rem 0}

/* v3.02 profile service discussion links */
.channel-link-row{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.65rem 0;border-bottom:1px solid var(--border)}
.channel-link-row:last-child{border-bottom:0}.channel-link-row span{display:flex;gap:.45rem;flex-wrap:wrap;justify-content:flex-end}.pill-link{display:inline-flex;align-items:center;border-radius:999px;padding:.35rem .65rem;background:var(--primary);color:#fff;font-weight:800;text-decoration:none}.pill-link:hover{filter:brightness(.95);transform:translateY(-1px)}
@media(max-width:700px){.channel-link-row{align-items:flex-start;flex-direction:column}.channel-link-row span{justify-content:flex-start}}

/* v3.02 task visibility: requested red/orange/green sections and key fields emphasis */
.task-section-waiting{background:rgba(239,68,68,.16)!important;border:1px solid rgba(239,68,68,.28)}
.task-section-inProgress{background:rgba(245,158,11,.18)!important;border:1px solid rgba(245,158,11,.32)}
.task-section-done{background:rgba(34,197,94,.16)!important;border:1px solid rgba(34,197,94,.28)}
.task-row-waiting td{background:rgba(254,226,226,.72)!important}
.task-row-inProgress td{background:rgba(254,243,199,.74)!important}
.task-row-done td{background:rgba(220,252,231,.72)!important}
.tasks-table .col-title a,.tasks-table .col-room,.tasks-table .col-client,.tasks-table .col-clientStatus{font-weight:900;color:var(--text)}
.tasks-table .col-room,.tasks-table .col-client,.tasks-table .col-clientStatus{box-shadow:inset 0 0 0 999px rgba(255,255,255,.34)}
.tasks-table .col-title a{display:inline-flex;align-items:center;gap:.35rem;padding:.12rem .42rem;border-radius:.65rem;background:rgba(255,255,255,.52);text-decoration:none}
.tasks-table .col-room:not(:empty)::before,.tasks-table .col-client:not(:empty)::before,.tasks-table .col-clientStatus:not(:empty)::before{font-weight:800}

/* v3.02 client-status and plugin-cards refinements */
.task-key-info{display:inline-flex;align-items:center;font-weight:950;color:#0f172a}.task-room-info,.task-client-info{padding:.18rem .48rem;border-radius:999px;background:rgba(15,23,42,.06);border:1px solid rgba(15,23,42,.14)}
.client-status-badge{display:inline-flex;align-items:center;gap:.35rem;width:max-content;padding:.25rem .58rem;border-radius:999px;font-weight:950;letter-spacing:.01em;border:2px solid #111827;box-shadow:0 2px 0 rgba(17,24,39,.92);background:#fff;color:#111827;white-space:nowrap}.client-status-badge .client-status-icon{font-weight:1000;line-height:1}.client-status-check_in{color:#15803d;background:#dcfce7}.client-status-check_in .client-status-icon{animation:client-status-up-blink .85s ease-in-out infinite}.client-status-check_out{color:#b91c1c;background:#fee2e2}.client-status-present{color:#c2410c;background:#ffedd5}.client-status-present .client-status-icon{font-size:1.15rem;transform:translateY(-1px)}
@keyframes client-status-up-blink{0%,100%{opacity:1;transform:translateY(0)}45%{opacity:.25;transform:translateY(-4px)}}
.tasks-table .col-room,.tasks-table .col-client,.tasks-table .col-clientStatus,.tasks-table .col-title{font-weight:850}.tasks-table .col-clientStatus{min-width:132px}
.plugin-card-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1rem;margin-top:1rem}.plugins-page{display:grid;gap:1rem}.plugins-intro{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap}.plugins-intro .notice{margin:.25rem 0;max-width:820px}.plugin-card{display:grid;gap:.9rem;border:1px solid var(--border);border-radius:22px;padding:1rem;background:linear-gradient(180deg,rgba(255,255,255,.96),rgba(248,250,252,.94));box-shadow:0 10px 30px rgba(15,23,42,.08)}.plugin-card.enabled{border-color:rgba(37,99,235,.28);box-shadow:0 16px 42px rgba(37,99,235,.11)}.plugin-card.disabled{opacity:.78}.plugin-card-head{display:flex;justify-content:space-between;align-items:flex-start;gap:.75rem}.plugin-card h3{margin:.05rem 0 .35rem}.plugin-toggle{display:flex;align-items:center;gap:.55rem;font-weight:900;background:#f8fafc;border:1px solid var(--border);border-radius:14px;padding:.65rem .75rem}.plugin-card-actions{display:flex;gap:.5rem;flex-wrap:wrap}.plugin-config-grid{display:grid;gap:1rem;margin-top:1rem}.plugin-config-grid>details.card{margin-top:0!important;border-radius:22px}.pill.success{background:#dcfce7;color:#166534;border:1px solid #86efac}
@media(max-width:700px){.plugin-card-grid{grid-template-columns:1fr}.plugins-intro{display:grid}.plugins-intro button{width:100%}.client-status-badge{white-space:normal}.task-room-info,.task-client-info{border-radius:12px}}


/* v3.02 dynamic plugins and GitHub admin */
.plugin-switch{display:flex;align-items:center;gap:.7rem;justify-content:flex-start;border:1px solid var(--border);border-radius:999px;padding:.55rem .75rem;background:#f8fafc;cursor:pointer;font-weight:900;max-width:220px;transition:.18s ease}.plugin-switch.on{background:linear-gradient(90deg,#dcfce7,#eff6ff);border-color:#86efac;color:#14532d}.plugin-switch.off{background:#f1f5f9;color:#475569}.plugin-switch-knob{width:1.65rem;height:1.65rem;border-radius:999px;background:#94a3b8;box-shadow:inset 0 0 0 2px rgba(255,255,255,.65)}.plugin-switch.on .plugin-switch-knob{background:#22c55e}.plugin-switch em{font-style:normal;font-size:.78rem;color:inherit;opacity:.78}.plugin-card-config{border-top:1px solid var(--border);padding-top:.85rem}.plugin-card-config details.card{box-shadow:none;margin-top:0!important;border-radius:16px;background:rgba(248,250,252,.72)}.github-admin-card{margin-top:1rem}.github-status{display:grid;gap:.25rem;margin:.5rem 0 1rem}.github-actions{margin-top:1rem}.github-output{margin-top:1rem;max-height:280px;overflow:auto;background:#0f172a;color:#d1fae5;border-radius:14px;padding:1rem;white-space:pre-wrap;font-size:.85rem}

/* v3.02 favorites, API navigation and glossy login */
.login{
  background-image:
    linear-gradient(135deg, rgba(15,23,42,.72), rgba(37,99,235,.32) 44%, rgba(248,250,252,.42)),
    url('/assets/login-background.svg');
  background-size:cover;
  background-position:center;
  background-attachment:fixed;
}
.login-card{
  background:linear-gradient(145deg, rgba(255,255,255,.88), rgba(255,255,255,.66))!important;
  border:1px solid rgba(255,255,255,.72)!important;
  box-shadow:0 28px 75px rgba(15,23,42,.30), inset 0 1px 0 rgba(255,255,255,.75)!important;
  backdrop-filter:blur(20px) saturate(1.25);
  position:relative;
  overflow:hidden;
}
.login-card::before{
  content:'';
  position:absolute;
  inset:0 0 auto 0;
  height:42%;
  background:linear-gradient(180deg, rgba(255,255,255,.42), transparent);
  pointer-events:none;
}
.login-card>*{position:relative;z-index:1}
.picture-wall-svg{filter:drop-shadow(0 20px 38px rgba(15,23,42,.36)) drop-shadow(0 0 18px rgba(255,255,255,.28))}
.favorite-page{display:grid;gap:1rem}.favorite-form{display:grid;gap:.8rem}.favorite-recent-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:.75rem}.favorite-mini-card{border:1px solid var(--border);border-radius:18px;padding:.8rem;background:rgba(255,255,255,.78);box-shadow:0 10px 25px rgba(15,23,42,.08)}.favorite-mini-card strong{display:block;margin-bottom:.25rem}.favorite-actions{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center}.favorite-badge{display:inline-flex;align-items:center;gap:.35rem;border-radius:999px;padding:.2rem .55rem;font-weight:900;background:#eff6ff;color:#1d4ed8;border:1px solid #bfdbfe}.room-link,.client-link{font-weight:900;text-decoration:none;color:var(--primary)}.room-link:hover,.client-link:hover{text-decoration:underline}
@media(max-width:700px){.login{background-attachment:scroll}.login-card{width:min(460px,96vw)}}
.favorite-mini-card{text-decoration:none;color:inherit;display:block}.favorite-mini-card:hover{transform:translateY(-2px);box-shadow:0 16px 34px rgba(37,99,235,.14)}

/* V3.02 favorites/plugins polish */
.favorite-list-card{margin-top:0}.favorite-config-card summary{cursor:pointer;list-style:none;display:flex;align-items:center;justify-content:space-between;gap:.75rem}.favorite-config-card summary::-webkit-details-marker{display:none}.favorite-config-card summary:after{content:'▾';font-weight:900;color:var(--muted)}.favorite-config-card[open] summary{margin-bottom:1rem}.favorite-config-card[open] summary:after{content:'▴'}.favorite-create-fields{display:grid;grid-template-columns:minmax(130px,1fr) minmax(110px,.75fr) auto auto;gap:.45rem;align-items:center;min-width:420px}.favorite-create-fields input{min-height:38px}.plugin-switch{justify-content:center;min-width:112px;max-width:132px}.plugin-switch.on{background:linear-gradient(90deg,#16a34a,#22c55e);border-color:#15803d;color:#fff;box-shadow:0 10px 24px rgba(34,197,94,.22)}.plugin-switch.off{background:linear-gradient(90deg,#dc2626,#ef4444);border-color:#b91c1c;color:#fff;box-shadow:0 10px 24px rgba(239,68,68,.18)}.plugin-switch.off .plugin-switch-knob{background:#fee2e2}.plugin-switch.on .plugin-switch-knob{background:#dcfce7}@media(max-width:720px){.favorite-create-fields{grid-template-columns:1fr;min-width:0}.plugin-card-head{align-items:stretch}.plugin-switch{width:100%;max-width:none}}

/* V3.02 favorites dynamic lookup polish */
.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
.favorite-dynamic-row{display:flex;gap:.45rem;align-items:center;flex-wrap:wrap}
.favorite-dynamic-row input{min-width:8.5rem;flex:1 1 9rem}
.favorite-lookup-info,.favorite-client-suggest{margin-top:.35rem}
.favorite-client-suggest .client-suggestion{margin:.2rem .25rem .2rem 0}

.user-list-row { cursor: pointer; }
.user-list-row:hover { background: rgba(37, 99, 235, 0.06); }
.user-consult-link { color: inherit; text-decoration: none; }
.user-consult-link:hover { color: var(--primary); text-decoration: underline; }
.muted-link { color: var(--muted); }
.row-actions { cursor: default; white-space: nowrap; }

.luggage-info{margin:.45rem 0;padding:.55rem .7rem;border:1px solid rgba(37,99,235,.22);border-radius:14px;background:rgba(219,234,254,.65);color:#0f172a;font-size:.92rem}.task-list-comment+.luggage-info{margin-top:.4rem}

.client-name-block{display:inline-grid;gap:.2rem;text-decoration:none}.client-name-line{display:block;line-height:1.15}.client-name-label{display:block;font-size:.68rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-weight:800}.client-name-block strong{font-size:.95rem}
.danger-text{color:#b91c1c;font-weight:800}

/* Messaging plugin */
.messages-layout{display:grid;grid-template-columns:minmax(280px,360px) 1fr;gap:1rem;align-items:start}
.messages-sidebar{display:flex;flex-direction:column;gap:1rem;min-width:0}
.message-new summary{cursor:pointer}
.message-recipient-list{display:flex;flex-direction:column;gap:.4rem;max-height:260px;overflow:auto;padding:.5rem;border:1px solid var(--border,#d8e1ef);border-radius:14px;background:rgba(255,255,255,.5)}
.message-recipient{display:flex;gap:.5rem;align-items:flex-start;padding:.35rem .45rem;border-radius:10px}
.message-recipient:hover{background:rgba(37,99,235,.08)}
.conversation-list{display:flex;flex-direction:column;gap:.55rem}
.conversation-item{position:relative;display:flex;flex-direction:column;gap:.22rem;padding:.8rem .95rem;border:1px solid var(--border,#d8e1ef);border-radius:18px;background:rgba(255,255,255,.75);box-shadow:0 8px 24px rgba(15,23,42,.05);text-decoration:none;color:inherit;transition:transform .16s ease,box-shadow .16s ease,border-color .16s ease}
.conversation-item:hover,.conversation-item.active{transform:translateY(-1px);border-color:rgba(37,99,235,.45);box-shadow:0 12px 30px rgba(37,99,235,.12)}
.conversation-item.unread strong{color:#1d4ed8}
.conversation-item span,.conversation-item small{display:block;color:var(--muted,#64748b);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.conversation-item .notif-count{position:absolute;right:.65rem;top:.65rem;min-width:1.45rem;height:1.45rem;display:inline-flex;align-items:center;justify-content:center;border-radius:999px;background:#dc2626;color:#fff;font-size:.75rem}
.messages-thread{min-height:65vh;display:flex;flex-direction:column;gap:1rem}
.messages-thread-header{display:flex;justify-content:space-between;gap:1rem;align-items:flex-start;border-bottom:1px solid var(--border,#d8e1ef);padding-bottom:.75rem}
.messages-thread-header h3{margin:0}
.messages-list{flex:1;display:flex;flex-direction:column;gap:.7rem;max-height:62vh;overflow:auto;padding:.25rem .15rem .5rem}
.message-bubble{max-width:min(76%,720px);padding:.75rem .9rem;border-radius:18px;background:#f1f5f9;border:1px solid rgba(148,163,184,.25);box-shadow:0 6px 18px rgba(15,23,42,.04)}
.message-bubble.mine{align-self:flex-end;background:linear-gradient(135deg,#dbeafe,#eff6ff);border-color:rgba(37,99,235,.25)}
.message-bubble.theirs{align-self:flex-start}
.message-meta{display:flex;justify-content:space-between;gap:1rem;align-items:center;margin-bottom:.35rem;color:var(--muted,#64748b);font-size:.82rem}
.message-body{white-space:pre-wrap;line-height:1.42;color:var(--text,#0f172a)}
.message-send-form{display:grid;grid-template-columns:1fr auto;gap:.75rem;align-items:end;border-top:1px solid var(--border,#d8e1ef);padding-top:.85rem}
.message-send-form textarea{resize:vertical;min-height:74px}
.hidden{display:none!important}
@media (max-width: 860px){.messages-layout{grid-template-columns:1fr}.messages-thread{min-height:55vh}.messages-list{max-height:55vh}.message-bubble{max-width:92%}.message-send-form{grid-template-columns:1fr}}

/* v3.02 unified animated client status badges */
.client-status-badge{position:relative;overflow:hidden;isolation:isolate;display:inline-flex;align-items:center;gap:.42rem;width:max-content;padding:.27rem .66rem;border-radius:999px;font-weight:950;letter-spacing:.01em;border:2px solid rgba(15,23,42,.95);box-shadow:0 2px 0 rgba(15,23,42,.92),0 10px 22px rgba(15,23,42,.10);white-space:nowrap;animation:client-status-breathe 2.8s ease-in-out infinite}
.client-status-badge:before{content:'';position:absolute;inset:-60% -30%;background:linear-gradient(120deg,transparent 35%,rgba(255,255,255,.38) 48%,transparent 62%);transform:translateX(-120%);animation:client-status-shine 3.6s ease-in-out infinite;z-index:-1}
.client-status-icon{display:inline-flex;align-items:center;justify-content:center;min-width:1em;font-weight:1000;line-height:1;animation:client-status-icon-pulse 1.25s ease-in-out infinite}
.client-status-expected{color:#1d4ed8;background:linear-gradient(135deg,#dbeafe,#eff6ff)}
.client-status-check_in{color:#15803d;background:linear-gradient(135deg,#bbf7d0,#dcfce7)}
.client-status-present{color:#92400e;background:linear-gradient(135deg,#fed7aa,#fffbeb)}
.client-status-check_out{color:#b91c1c;background:linear-gradient(135deg,#fecaca,#fee2e2)}
.client-status-room_move{color:#6d28d9;background:linear-gradient(135deg,#ddd6fe,#f5f3ff)}
.client-status-out{color:#334155;background:linear-gradient(135deg,#e2e8f0,#f8fafc)}
.client-status-check_in .client-status-icon{animation:client-status-up-blink .85s ease-in-out infinite}
.client-status-check_out .client-status-icon{animation:client-status-down-blink .85s ease-in-out infinite}
.client-status-room_move .client-status-icon{animation:client-status-roommove 1s ease-in-out infinite}
.client-status-expected .client-status-icon{animation:client-status-waiting 1.6s linear infinite}
.client-status-out .client-status-icon{animation:none}
.task-icon-actions{gap:.35rem}.task-icon-action{min-width:2.5rem!important;width:2.5rem;height:2.5rem;padding:.45rem!important;display:inline-flex!important;align-items:center;justify-content:center;border-radius:14px}.task-icon-action:hover:after{content:attr(title);position:absolute;transform:translateY(-2.7rem);background:#0f172a;color:#fff;border-radius:999px;padding:.32rem .55rem;font-size:.75rem;white-space:nowrap;box-shadow:0 10px 24px rgba(15,23,42,.22);z-index:40}.task-clone-waiting-button::before,.task-back-waiting-button::before{content:''!important}
@keyframes client-status-breathe{0%,100%{filter:saturate(1)}50%{filter:saturate(1.22)}}
@keyframes client-status-shine{0%,55%{transform:translateX(-120%)}78%,100%{transform:translateX(120%)}}
@keyframes client-status-icon-pulse{0%,100%{transform:scale(1);opacity:1}50%{transform:scale(1.15);opacity:.78}}
@keyframes client-status-down-blink{0%,100%{opacity:1;transform:translateY(0)}45%{opacity:.25;transform:translateY(4px)}}
@keyframes client-status-roommove{0%,100%{transform:translateX(-2px)}50%{transform:translateX(2px)}}
@keyframes client-status-waiting{from{transform:rotate(0)}to{transform:rotate(360deg)}}
@media(max-width:700px){.client-status-badge{white-space:normal}.task-icon-action:hover:after{display:none}}
.task-icon-action{position:relative}

/* V3.02 — Points validation feedback */
.task-points-feedback-overlay{position:fixed;inset:0;z-index:10050;display:grid;place-items:center;background:rgba(15,23,42,.35);backdrop-filter:blur(3px);animation:taskPointsFadeIn .07s ease-out both;pointer-events:none;padding:1rem}
.task-points-feedback-overlay.closing{animation:taskPointsFadeOut .11s ease-in both}
.task-points-feedback-card{width:min(420px,92vw);border-radius:32px;padding:1.4rem;text-align:center;background:linear-gradient(135deg,#ecfdf5 0%,#dbeafe 48%,#fef3c7 100%);border:1px solid rgba(255,255,255,.75);box-shadow:0 28px 90px rgba(15,23,42,.35);color:#0f172a;animation:taskPointsPop .29s cubic-bezier(.2,.9,.2,1) both;position:relative;overflow:hidden}
.task-points-feedback-card::before{content:"";position:absolute;inset:-30%;background:conic-gradient(from 0deg,rgba(37,99,235,.18),rgba(22,163,74,.2),rgba(245,158,11,.2),rgba(124,58,237,.18),rgba(37,99,235,.18));animation:taskPointsSpin .65s linear infinite;z-index:0}
.task-points-feedback-card>*{position:relative;z-index:1}
.task-points-feedback-burst{width:96px;height:96px;margin:0 auto .5rem;border-radius:999px;display:grid;place-items:center;background:#16a34a;color:white;font-weight:1000;font-size:1.8rem;box-shadow:0 14px 34px rgba(22,163,74,.35);animation:taskPointsPulse .35s ease-in-out infinite alternate}
.task-points-feedback-card h3{margin:.25rem 0 .35rem;font-size:1.35rem;color:#0f172a}
.task-points-feedback-score{display:inline-flex;align-items:center;justify-content:center;padding:.45rem .9rem;margin:.4rem auto;border-radius:999px;background:#0f172a;color:#fff;font-weight:1000;font-size:1.25rem;box-shadow:0 10px 24px rgba(15,23,42,.2)}
@keyframes taskPointsFadeIn{from{opacity:0}to{opacity:1}}
@keyframes taskPointsFadeOut{from{opacity:1}to{opacity:0}}
@keyframes taskPointsPop{0%{transform:scale(.78) translateY(18px);opacity:0}60%{transform:scale(1.05) translateY(0);opacity:1}100%{transform:scale(1)}}
@keyframes taskPointsPulse{from{transform:scale(1)}to{transform:scale(1.08)}}
@keyframes taskPointsSpin{to{transform:rotate(360deg)}}

/* v3.02 task action single overlay + responsive tasks */
.task-action-feedback-overlay{position:fixed;inset:0;z-index:2147483000;display:grid;place-items:center;background:rgba(15,23,42,.18);backdrop-filter:blur(2px);opacity:0;transition:opacity .025s ease-out;pointer-events:none;padding:1rem}
.task-action-feedback-overlay.visible{opacity:1}.task-action-feedback-overlay.closing{opacity:0}
.task-action-feedback-card{width:min(390px,92vw);border-radius:30px;padding:1.25rem 1.15rem;text-align:center;background:linear-gradient(135deg,#dbeafe,#ecfdf5,#fef3c7);border:1px solid rgba(255,255,255,.78);box-shadow:0 26px 80px rgba(15,23,42,.34);color:#0f172a;animation:taskActionPop .04s cubic-bezier(.2,.9,.2,1) both;position:relative;overflow:hidden}
.task-action-feedback-card:before{content:"";position:absolute;inset:-45%;background:conic-gradient(from 0deg,rgba(37,99,235,.18),rgba(22,163,74,.18),rgba(245,158,11,.18),rgba(124,58,237,.18),rgba(37,99,235,.18));animation:taskActionSpin .25s linear infinite;z-index:0}.task-action-feedback-card>*{position:relative;z-index:1}.task-action-feedback-icon{width:82px;height:82px;margin:0 auto .45rem;border-radius:999px;display:grid;place-items:center;background:#2563eb;color:#fff;font-size:2.15rem;font-weight:1000;box-shadow:0 14px 34px rgba(37,99,235,.34);animation:taskActionPulse .1s ease-in-out infinite alternate}.task-action-feedback-done .task-action-feedback-icon{background:#16a34a;box-shadow:0 14px 34px rgba(22,163,74,.34)}.task-action-feedback-waiting .task-action-feedback-icon{background:#f59e0b;box-shadow:0 14px 34px rgba(245,158,11,.32)}.task-action-feedback-progress .task-action-feedback-icon{background:#7c3aed;box-shadow:0 14px 34px rgba(124,58,237,.32)}.task-action-feedback-muted .task-action-feedback-icon,.task-action-feedback-mute .task-action-feedback-icon{background:#64748b;box-shadow:0 14px 34px rgba(100,116,139,.3)}.task-action-feedback-points .task-action-feedback-card{width:min(430px,92vw);padding:1.35rem 1.25rem}.task-action-feedback-card h3{margin:.25rem 0 .35rem;font-size:1.35rem;color:#0f172a}.task-action-feedback-score{display:inline-flex;align-items:center;justify-content:center;padding:.42rem .9rem;margin:.35rem auto;border-radius:999px;background:#0f172a;color:#fff;font-weight:1000;font-size:1.25rem;box-shadow:0 10px 24px rgba(15,23,42,.2)}@keyframes taskActionPop{0%{transform:translateY(14px) scale(.88);opacity:0}70%{transform:translateY(-2px) scale(1.02);opacity:1}100%{transform:translateY(0) scale(1);opacity:1}}@keyframes taskActionPulse{from{transform:scale(.98)}to{transform:scale(1.08)}}@keyframes taskActionSpin{to{transform:rotate(360deg)}}
@media(max-width:1100px){#app.route-tasks .layout{display:block;min-height:100vh}#app.route-tasks .sidebar{position:sticky;top:0;z-index:35;border-bottom:1px solid rgba(255,255,255,.12);padding:.55rem .7rem}#app.route-tasks .sidebar .brand{display:flex;align-items:center;gap:.5rem;padding:.25rem}#app.route-tasks .menu-toggle{display:inline-flex;align-items:center;justify-content:center}#app.route-tasks .sidebar .nav,#app.route-tasks .sidebar .sidebar-user{display:none}#app.route-tasks .sidebar.nav-open .nav{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.3rem;max-height:55vh;overflow:auto;padding:.5rem 0}#app.route-tasks .sidebar.nav-open .sidebar-user{display:flex}#app.route-tasks .main{max-width:100%;padding:.75rem}#app.route-tasks .app-header{position:sticky;top:0;z-index:25}#app.route-tasks .task-section .table-wrap{background:transparent;border:0;box-shadow:none;overflow:visible}#app.route-tasks .tasks-table{min-width:0;width:100%;border-collapse:separate;border-spacing:0 .65rem}#app.route-tasks .tasks-table thead{display:none}#app.route-tasks .tasks-table tbody,#app.route-tasks .tasks-table tr,#app.route-tasks .tasks-table td{display:block;width:100%}#app.route-tasks .tasks-table tr{background:#fff;border:1px solid #e5e7eb;border-radius:18px;padding:.75rem;box-shadow:0 8px 22px rgba(16,24,40,.08);overflow:hidden}#app.route-tasks .tasks-table td{border:0;background:transparent!important;padding:.25rem 0}#app.route-tasks .tasks-table td::before{content:attr(data-label);display:block;font-size:.72rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-weight:850;margin-bottom:.08rem}#app.route-tasks .tasks-table .col-title a{font-size:1.05rem;font-weight:950}#app.route-tasks .tasks-table .col-action{padding-top:.65rem}#app.route-tasks .tasks-table .task-assign-select{min-width:0;width:100%}#app.route-tasks .tasks-table .button-row{width:100%;justify-content:flex-start;flex-wrap:wrap}#app.route-tasks .tasks-table .button-row button:not(.icon-only){width:auto}#app.route-tasks .tasks-table .task-icon-actions button{flex:0 0 auto}#app.route-tasks .task-filter-details .toolbar input,#app.route-tasks .task-filter-details .toolbar select{max-width:none;width:100%}}

/* v3.02 waiting sound de-duplication + adaptive sidebar collapse */
.layout.layout-width-collapsed{display:block;min-height:100vh}
.layout.layout-width-collapsed .sidebar{position:sticky;top:0;z-index:35;border-bottom:1px solid rgba(255,255,255,.12);padding:.55rem .7rem}
.layout.layout-width-collapsed .sidebar .brand{display:flex;align-items:center;gap:.5rem;padding:.25rem}
.layout.layout-width-collapsed .menu-toggle{display:inline-flex;align-items:center;justify-content:center}
.layout.layout-width-collapsed .sidebar .nav,
.layout.layout-width-collapsed .sidebar .sidebar-user{display:none}
.layout.layout-width-collapsed .sidebar.nav-open .nav{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:.3rem;max-height:60vh;overflow:auto;padding:.5rem 0}
.layout.layout-width-collapsed .sidebar.nav-open .sidebar-user{display:flex}
.layout.layout-width-collapsed .main{max-width:100%;width:100%;padding:.75rem}
.layout.layout-width-collapsed .app-header{position:sticky;top:0;z-index:25}
.layout.layout-width-collapsed .table-wrap{max-width:100%;overflow:auto}
#app.route-tasks .layout.layout-width-collapsed .task-section .table-wrap{background:transparent;border:0;box-shadow:none;overflow:visible}
#app.route-tasks .layout.layout-width-collapsed .tasks-table{min-width:0;width:100%;border-collapse:separate;border-spacing:0 .65rem}
#app.route-tasks .layout.layout-width-collapsed .tasks-table thead{display:none}
#app.route-tasks .layout.layout-width-collapsed .tasks-table tbody,
#app.route-tasks .layout.layout-width-collapsed .tasks-table tr,
#app.route-tasks .layout.layout-width-collapsed .tasks-table td{display:block;width:100%}
#app.route-tasks .layout.layout-width-collapsed .tasks-table tr{background:#fff;border:1px solid #e5e7eb;border-radius:18px;padding:.75rem;box-shadow:0 8px 22px rgba(16,24,40,.08);overflow:hidden}
#app.route-tasks .layout.layout-width-collapsed .tasks-table td{border:0;background:transparent!important;padding:.25rem 0}
#app.route-tasks .layout.layout-width-collapsed .tasks-table td::before{content:attr(data-label);display:block;font-size:.72rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-weight:850;margin-bottom:.08rem}
#app.route-tasks .layout.layout-width-collapsed .tasks-table .task-assign-select{min-width:0;width:100%}
#app.route-tasks .layout.layout-width-collapsed .task-filter-details .toolbar input,
#app.route-tasks .layout.layout-width-collapsed .task-filter-details .toolbar select{max-width:none;width:100%}

/* v3.02 fast feedback + collapsed menu tap-to-open */
.layout.layout-width-collapsed .sidebar,
#app.route-tasks .layout .sidebar{cursor:pointer}
.layout.layout-width-collapsed .sidebar.nav-open,
#app.route-tasks .layout .sidebar.nav-open{cursor:default}
.layout.layout-width-collapsed .menu-toggle,
#app.route-tasks .menu-toggle{display:inline-flex;align-items:center;justify-content:center;min-width:38px;min-height:38px}
.layout.layout-width-collapsed .brand,
#app.route-tasks .layout .brand{cursor:pointer}

/* V3.02 — generic sortable tables */
th.sortable-th{cursor:pointer;user-select:none;position:relative;padding-right:1.35rem!important}
th.sortable-th::after{content:'↕';position:absolute;right:.45rem;top:50%;transform:translateY(-50%);font-size:.75rem;opacity:.35}
th.sortable-th[data-sort-dir="asc"]::after{content:'↑';opacity:.9}
th.sortable-th[data-sort-dir="desc"]::after{content:'↓';opacity:.9}
th.sortable-th:focus{outline:2px solid rgba(37,99,235,.45);outline-offset:2px;border-radius:8px}
@media(max-width:1100px){#app.route-tasks .tasks-table th.sortable-th::after{display:none}}

.mt-1{margin-top:1rem;}
.plain-inner-card{box-shadow:none;border:1px solid var(--border);background:var(--bg);}
