:root{--primary:#247dbd;--primary-active:#1d6497;--primary-bg:#eaf4fb;--success:#27c24c;--success-bg:#f6ffed;--warning:#e8b84b;--warning-bg:#fdf6e7;--danger:#f05050;--danger-bg:#fff1f0;--text:#3a3e63;--muted:#8186b5;--border:#ced4da;--layout:#e4ebf2;--container:#fff;--fill:#f6f9fc;color:var(--text);background:var(--layout);font-family:system-ui,-apple-system,Segoe UI,Tahoma,sans-serif}*{box-sizing:border-box}body{margin:0}.app{min-height:100vh;padding-bottom:72px}.screen{max-width:560px;margin:0 auto;padding:16px}h1{margin:4px 0 12px;font-size:20px}h2{margin:0 0 8px;font-size:16px}p{margin:6px 0;line-height:1.6}.muted{color:var(--muted);font-size:14px}.big{font-size:19px;font-weight:700}.card{background:var(--container);border:1px solid var(--border);border-radius:12px;margin:10px 0;padding:14px}.card.tone-success{border-inline-start:6px solid var(--success)}.card.tone-warning{border-inline-start:6px solid var(--warning)}.card.tone-danger{border-inline-start:6px solid var(--danger)}.card.tone-info{border-inline-start:6px solid var(--primary)}.chip{background:var(--fill);border-radius:999px;margin:2px 4px;padding:2px 10px;font-size:13px;font-weight:600;display:inline-block}.chip.tone-success{background:var(--success-bg);color:#1a7f37}.chip.tone-warning{background:var(--warning-bg);color:#8a6100}.chip.tone-danger{background:var(--danger-bg);color:#b42318}.chip.tone-info{background:var(--primary-bg);color:var(--primary-active)}button{font:inherit;border:1px solid var(--border);background:var(--container);min-height:44px;color:var(--text);cursor:pointer;border-radius:10px;width:100%;margin:6px 0;padding:10px 16px}button.primary{background:var(--primary);color:#fff;border-color:var(--primary);font-weight:700}button.primary:active{background:var(--primary-active)}button.huge{min-height:72px;font-size:20px}button[disabled]{opacity:.5;cursor:not-allowed}button.row{text-align:start}label{margin:10px 0 4px;font-weight:600;display:block}label.check{align-items:center;gap:8px;font-weight:400;display:flex}input,select,textarea{font:inherit;border:1px solid var(--border);background:var(--container);border-radius:8px;width:100%;padding:10px}textarea{min-height:80px}.note{background:var(--fill);border-radius:8px;padding:8px 10px}.note-error{background:var(--danger-bg);color:#b42318}.note-ok{background:var(--success-bg);color:#1a7f37}.note-warn{background:var(--warning-bg);color:#8a6100}.tabs{bottom:0;background:var(--container);border-top:1px solid var(--border);gap:4px;padding:6px;display:flex;position:fixed;inset-inline:0}.tabs button{border:0;margin:0}.tabs button.active{background:var(--primary-bg);color:var(--primary-active);font-weight:700}.events{margin:0;padding-inline-start:18px}.events li{margin:6px 0}.events .struck{color:var(--muted);text-decoration:line-through}.month-nav{align-items:center;gap:8px;display:flex}.month-nav strong{white-space:nowrap;padding:0 6px}.calendar{grid-template-columns:repeat(7,1fr);gap:4px;margin:8px 0;display:grid}.weekday{text-align:center;color:var(--muted);font-size:12px}.cell{border-radius:8px;flex-direction:column;justify-content:flex-start;align-items:center;min-height:56px;margin:0;padding:4px 2px;font-size:12px;display:flex}.cell.pad{background:0 0;border:0}.cell .daynum{font-size:14px;font-weight:700}.cell .dot{font-size:10px;line-height:1.2}.cell .flag{color:var(--danger)}.cell.tone-success{background:var(--success-bg)}.cell.tone-warning{background:var(--warning-bg)}.cell.tone-danger{background:var(--danger-bg)}.cell.tone-info{background:var(--primary-bg)}.legend .chip{font-size:11px}button.link{width:auto;min-height:0;color:var(--primary-active);background:0 0;border:0;margin:0;padding:0 4px;text-decoration:underline}.update{max-width:560px;margin:8px auto}.user-code{letter-spacing:4px;font-family:ui-monospace,Menlo,monospace;font-size:40px;font-weight:800}.secret-card{background:var(--success-bg);border:1px solid var(--border);border-radius:10px;max-width:520px;margin:8px 0;padding:10px 12px}.secret-code{text-align:left;letter-spacing:.5px;overflow-wrap:anywhere;word-break:break-all;white-space:normal;background:var(--container);border:1px dashed var(--border);-webkit-user-select:all;user-select:all;direction:ltr;border-radius:8px;max-width:100%;padding:8px 10px;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:clamp(15px,4.6vw,22px);font-weight:700;line-height:1.5;display:block}.review-card{border:2px solid var(--primary);background:var(--primary-bg);border-radius:10px;margin:10px 0;padding:10px}.scanner-frame{aspect-ratio:3/4;background:#000;border-radius:12px;width:100%;max-height:60vh;position:relative;overflow:hidden}.scanner-video{object-fit:cover;width:100%;height:100%;display:block}.scanner-guide{aspect-ratio:1;pointer-events:none;border:3px solid #fff;border-radius:16px;width:62%;height:auto;margin:auto;position:absolute;inset:0;box-shadow:0 0 0 100vmax #00000059}.scanner-hint{text-align:center;margin:10px 0 2px;font-weight:600}.review-list{grid-template-columns:repeat(auto-fill,minmax(min(100%,420px),1fr));gap:10px;display:grid}.review-item{background:var(--container);border:1px solid var(--border);border-inline-start:6px solid var(--warning);border-radius:12px;min-width:0;padding:10px 12px}.review-item h3{overflow-wrap:anywhere;margin:0 0 6px;font-size:16px}.facts{grid-template-columns:max-content 1fr;gap:4px 10px;margin:0 0 8px;display:grid}.facts dt{color:var(--muted);font-size:14px}.facts dd{overflow-wrap:anywhere;margin:0}.review-reasons ul{margin:4px 0;padding-inline-start:18px}.review-reasons li p{margin:2px 0}.small{font-size:12px}.empty{text-align:center;color:var(--muted);padding:24px 8px}.segmented{background:var(--fill);scrollbar-width:none;border-radius:12px;gap:4px;margin:10px 0;padding:4px;display:flex;overflow-x:auto}.segmented button{white-space:nowrap;background:0 0;border:0;flex:1 0 auto;width:auto;min-height:40px;margin:0;padding:6px 10px;font-size:14px}.segmented button.active{background:var(--container);color:var(--primary-active);font-weight:700;box-shadow:0 1px 2px #00000014}.request-list,.movement-list{margin:0;padding:0;list-style:none}.request-card{text-align:start;background:var(--container);border-inline-start:6px solid var(--border);border-radius:12px;flex-direction:column;align-items:stretch;gap:4px;margin:8px 0;padding:12px;display:flex}.request-card.tone-success{border-inline-start-color:var(--success)}.request-card.tone-warning{border-inline-start-color:var(--warning)}.request-card.tone-danger{border-inline-start-color:var(--danger)}.request-head{justify-content:space-between;align-items:center;gap:8px;display:flex}.request-head strong{font-size:16px}.request-head .chip{flex:none;margin:0}.request-when{font-weight:600}.request-reason{color:var(--muted);-webkit-line-clamp:2;overflow-wrap:anywhere;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.request-reply{background:var(--fill);overflow-wrap:anywhere;border-radius:8px;padding:6px 8px;font-size:14px}.type-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:10px 0;display:grid}.type-card{text-align:start;background:var(--container);border-radius:12px;flex-direction:column;align-items:flex-start;gap:6px;min-height:104px;margin:0;padding:12px;display:flex}.type-card strong{color:var(--primary-active);font-size:16px}.timeline{border-inline-start:2px solid var(--border);margin:0;padding:0;list-style:none}.timeline li{padding:0 14px 12px;position:relative}.timeline li:before{content:"";inset-inline-start:-7px;background:var(--muted);border-radius:50%;width:12px;height:12px;position:absolute;top:6px}.timeline li.tl-approved:before{background:var(--success)}.timeline li.tl-rejected:before,.timeline li.tl-revoked:before{background:var(--danger)}.timeline li.tl-submitted:before{background:var(--primary)}.timeline p{overflow-wrap:anywhere;margin:2px 0}button.danger{background:var(--danger);color:#fff;border-color:var(--danger);font-weight:700}.trial-banner{background:var(--primary-bg);color:var(--primary-active);border:1px solid var(--primary);border-radius:10px;margin:0 0 10px;padding:10px 12px;font-weight:700}.points-summary{grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;margin:10px 0;display:grid}.points-tile{background:var(--container);border:1px solid var(--border);text-align:center;border-radius:12px;flex-direction:column;align-items:center;gap:2px;min-width:0;padding:10px 4px;display:flex}.points-tile strong{direction:ltr;unicode-bidi:isolate;font-size:24px}.month-nav{justify-content:space-between}.month-nav button{flex:none;width:auto;padding:8px 12px}.points-tile.tone-success{background:var(--success-bg)}.points-tile.tone-danger{background:var(--danger-bg)}.points-tile.tone-neutral{background:#eef0f4}.points-tile.net{background:var(--primary-bg);color:var(--primary-active)}.movement{background:var(--container);border:1px solid var(--border);border-radius:12px;align-items:flex-start;gap:10px;margin:6px 0;padding:10px 12px;display:flex}.movement.reversed{opacity:.65}.movement-amount{text-align:center;direction:ltr;flex:none;min-width:58px;font-size:18px;font-weight:800}.movement-amount.tone-success{color:#1a7f37}.movement-amount.tone-danger{color:#b42318}.movement-body{flex-direction:column;gap:2px;min-width:0;display:flex}.movement-body strong{overflow-wrap:anywhere}.movement-body .link{align-self:flex-start}.glance{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px;display:grid}.glance-item{background:var(--container);border-radius:12px;flex-direction:column;align-items:center;gap:2px;margin:0;display:flex}.glance-item strong{font-size:20px}.tabs button{min-width:0;padding:10px 2px;font-size:14px}.dialog-backdrop{z-index:20;background:#1c1f3673;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.dialog{background:var(--container);border-radius:14px;width:100%;max-width:460px;max-height:calc(100vh - 32px);padding:16px;overflow-y:auto}.dialog h2{margin-bottom:4px}.pair{grid-template-columns:1fr 1fr;gap:8px;display:grid}.pair button{margin:0}.ltr{white-space:nowrap;unicode-bidi:isolate}.form.wide{max-width:860px}.decision-bar{flex-wrap:wrap;gap:8px;margin:12px 0;display:flex}.action-cell{flex:160px}.action-cell button{margin:0}.decision-form{max-width:560px}.context-day{border-top:1px solid var(--layout);padding:6px 0}.context-day:first-of-type{border-top:0}.center-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));gap:10px;display:grid}.center-grid .card{margin:0}button.narrow{width:auto}.punch{white-space:nowrap;margin-inline-end:8px;display:inline-block}td.amount{text-align:center;white-space:nowrap;direction:ltr;font-weight:800}td.amount.tone-success{color:#1a7f37}td.amount.tone-danger{color:#b42318}tr.reversed-row td{color:var(--muted)}@media (width<=600px){.manage-body{padding:8px 10px 32px}.filters label,.filters button{width:100%;min-width:0}.manage-tabs button{flex:auto}}.display{background:#fff;flex-direction:column;min-height:100vh;display:flex}.display-head{border-bottom:1px solid var(--border);align-items:center;gap:12px;padding:12px 16px;font-size:20px;display:flex}.display-body{text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;padding:16px;display:flex}.display-body .qr{max-width:90vmin;max-height:75vh;image-rendering:pixelated}.display-hint{font-size:24px;font-weight:700}.display-activate{width:100%;max-width:520px}.manage{min-height:100vh}.manage-head{background:var(--container);border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:8px;padding:10px 16px;display:flex}.manage-head .who{margin-inline-start:auto}.manage-tabs{flex-wrap:wrap;gap:4px;padding:8px 16px;display:flex}.manage-tabs button{width:auto;margin:0}.manage-tabs button.active{background:var(--primary-bg);color:var(--primary-active);font-weight:700}.manage-body{max-width:1100px;padding:8px 16px 32px}.filters{flex-wrap:wrap;align-items:flex-end;gap:8px;display:flex}.filters label,.filters button{width:auto;min-width:160px}.form{max-width:520px}.signin{margin:24px auto;padding:0 16px}.actions{gap:4px;display:flex}.actions button{width:auto;min-height:36px;margin:0;padding:6px 10px}.table-wrap{overflow-x:auto}table{border-collapse:collapse;background:var(--container);width:100%;font-size:14px}th,td{border:1px solid var(--border);text-align:start;vertical-align:top;padding:6px 8px}th{background:var(--fill)}
