:root{--bg:#11161b;--card:#1b232b;--card2:#232e38;--line:#31404d;--text:#e8eef4;--muted:#8ea0b0;--dim:#5d7181;--accent:#4da3ff;--warn:#ffb454;--danger:#ff6b6b;--early:#f5d76e;--parking:#7fd4ff;--ok:#6ed49b;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}body{background:var(--bg);color:var(--text);padding-bottom:env(safe-area-inset-bottom);margin:0;font-family:-apple-system,BlinkMacSystemFont,Hiragino Sans,Noto Sans JP,Yu Gothic UI,sans-serif;font-size:15px;line-height:1.6}.app{max-width:480px;margin:0 auto;padding:12px 12px 80px}.topbar{z-index:10;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--line);background:#11161beb;justify-content:space-between;align-items:center;gap:8px;padding:10px 12px;display:flex;position:sticky;top:0}.topbar h1{margin:0;font-size:15px;font-weight:600}.topbar .who{color:var(--muted);background:var(--card2);border:1px solid var(--line);border-radius:999px;padding:5px 12px;font-size:13px;font-weight:500}.sheet-bg{z-index:50;background:#0009;align-items:flex-end;display:flex;position:fixed;inset:0}.sheet{background:var(--card);border-top:1px solid var(--line);width:100%;max-width:480px;padding:18px 16px calc(20px + env(safe-area-inset-bottom));border-radius:16px 16px 0 0;margin:0 auto}.sheet h2{margin:0 0 4px;font-size:16px}.sheet-note{color:var(--muted);margin:0 0 14px;font-size:13px}.picked{margin-left:10px;font-size:14px;font-weight:600}.card{background:var(--card);border:1px solid var(--line);border-radius:12px;margin-bottom:12px;padding:14px}.card h2{color:var(--muted);letter-spacing:.04em;margin:0 0 10px;font-size:13px;font-weight:600}.me{padding:16px 14px}.datehead{margin-bottom:12px}.datehead .dstr{letter-spacing:.01em;font-variant-numeric:tabular-nums;font-size:23px;font-weight:700;line-height:1.25}.datehead .relday{background:var(--card2);color:var(--muted);vertical-align:3px;border-radius:999px;margin-left:10px;padding:2px 11px;font-size:14px;font-weight:600;display:inline-block}.datehead .relday.now{color:var(--accent);background:#123a52}.datehead .until{color:var(--accent);margin-top:5px;font-size:15px;font-weight:600}.datehead .until.during{color:var(--ok)}.datehead .until.after{color:var(--dim);font-weight:500}.me .who-line,.me .date{color:var(--muted);font-size:13px}.me .main{margin-top:2px;font-size:22px;font-weight:700;line-height:1.35}.me .sub{color:var(--muted);margin-top:6px;font-size:14px}.me.off .main{color:var(--dim)}.me .time{font-variant-numeric:tabular-nums;margin-left:8px}.me .attend{background:var(--card2);border-radius:999px;margin-top:10px;padding:5px 12px;font-size:14px;font-weight:600;display:inline-block}.me .attend.early{color:var(--early);background:#4a3c12}.badge{vertical-align:middle;border-radius:999px;margin-left:6px;padding:1px 8px;font-size:12px;font-weight:600;display:inline-block}.badge.early{color:var(--early);background:#4a3c12}.badge.parking{color:var(--parking);background:#133a4d}.badge.training{color:var(--muted);background:#2d3a4a}.badge.mine{color:var(--accent);background:#123a52}.badge.all{color:var(--muted);background:#2b3540}.roster{background:var(--line);border-radius:8px;flex-direction:column;gap:1px;display:flex;overflow:hidden}.roster .row{background:var(--card);align-items:center;gap:10px;padding:9px 11px;display:flex}.roster .row.me{background:var(--card2)}.roster .row.off{color:var(--dim)}.roster .sym{text-align:center;flex:none;width:1.6em;font-size:16px}.roster .name{text-overflow:ellipsis;white-space:nowrap;flex:none;width:4.5em;overflow:hidden}.roster .duty{flex:1;font-weight:600}.roster .row.off .duty{font-weight:400}.roster .at{color:var(--muted);font-variant-numeric:tabular-nums;font-size:13px}.ecard{text-align:left;background:var(--card);border:1px solid var(--line);border-radius:12px;gap:12px;width:100%;margin-bottom:9px;padding:12px 13px;font-weight:400;display:flex}.ecard.mine{background:#18242e;border-color:#2c5c82}.ecard-date{font-variant-numeric:tabular-nums;width:5.2em;color:var(--muted);flex:none;padding-top:1px;font-size:14px;font-weight:700}.ecard.mine .ecard-date{color:var(--accent)}.ecard-body{flex:1;min-width:0}.ecard-body .t{font-weight:600}.ecard-body .meta{color:var(--muted);margin-top:2px;font-size:13px}.toolbar{gap:8px;margin-bottom:12px;display:flex}.filter-toggle{flex:1;font-size:14px}.btn-link{border:1px solid var(--line);background:var(--card2);color:var(--text);border-radius:8px;align-items:center;padding:0 16px;font-size:14px;font-weight:600;text-decoration:none;display:flex}.year-head{color:var(--muted);border-bottom:1px solid var(--line);margin:16px 0 8px;padding-bottom:5px;font-size:15px;font-weight:700}.group-head{color:var(--muted);margin:20px 0 9px;font-size:13px;font-weight:600}.group-head span{color:var(--dim);font-size:12px;font-weight:400;display:block}details.ongoing{border-top:1px solid var(--line);margin-top:10px;padding-top:8px}details.ongoing summary{cursor:pointer;color:var(--muted);padding:3px 0;font-size:13px;list-style-position:inside}details.ongoing .event:first-of-type{padding-top:10px}.subscribe summary{cursor:pointer;color:var(--muted);font-size:13px;font-weight:600;list-style-position:inside}.subscribe .meta{color:var(--muted);font-size:13px;line-height:1.65}.urlbox{background:var(--card2);border:1px solid var(--line);word-break:break-all;-webkit-user-select:all;user-select:all;border-radius:8px;padding:10px 12px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px}.detail{grid-template-columns:4.5em 1fr;gap:6px 10px;margin:14px 0 0;display:grid}.detail dt{color:var(--muted);font-size:13px}.detail dd{margin:0}.attach img{border:1px solid var(--line);border-radius:8px;max-width:100%;display:block}.attach button{margin-top:8px}.event{border-bottom:1px solid var(--line);padding:11px 0}.event:last-child{border-bottom:none}.event:first-child{padding-top:0}.event .t{font-weight:600}.event .meta{color:var(--muted);margin-top:3px;font-size:13px}.event .tags{margin-top:5px}.empty{color:var(--dim);padding:4px 0;font-size:14px}.note{background:var(--card2);border-left:3px solid var(--accent);border-radius:0 6px 6px 0;margin-bottom:10px;padding:8px 11px;font-size:14px}.banner{color:var(--warn);background:#4a2c12;border:1px solid #7a4d1c;border-radius:10px;margin-bottom:12px;padding:11px 13px;font-size:14px}.banner b{margin-bottom:3px;display:block}.footnote{color:var(--dim);text-align:center;margin-top:18px;font-size:12px;line-height:1.7}label{color:var(--muted);margin:12px 0 4px;font-size:13px;display:block}input,textarea,select,button{font:inherit;color:inherit}input[type=text],input[type=date],input[type=password],textarea,select{border:1px solid var(--line);background:var(--card2);width:100%;color:var(--text);border-radius:8px;padding:10px 12px}textarea{resize:vertical;min-height:80px}button{border:1px solid var(--line);background:var(--card2);color:var(--text);cursor:pointer;border-radius:8px;padding:11px 16px;font-weight:600}button.primary{background:var(--accent);border-color:var(--accent);color:#04121f}button.danger{color:var(--danger)}button:disabled{opacity:.5}.row-btns{gap:8px;margin-top:16px;display:flex}.row-btns button{flex:1}.error{color:var(--danger);margin-top:10px;font-size:14px}.chips{flex-wrap:wrap;gap:7px;display:flex}.chip{border:1px solid var(--line);background:var(--card2);cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:999px;padding:6px 13px;font-size:14px}.chip.on{background:var(--accent);border-color:var(--accent);color:#04121f;font-weight:600}.tabs{gap:6px;margin-bottom:12px;display:flex}.tabs button{flex:1;padding:9px 0;font-size:14px}.tabs button.on{background:var(--accent);border-color:var(--accent);color:#04121f}.nav{z-index:20;background:var(--card);border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom);display:flex;position:fixed;bottom:0;left:0;right:0}.nav button{color:var(--muted);background:0 0;border:none;border-radius:0;flex:1;padding:11px 0 13px;font-size:12px;font-weight:500}.nav button.on{color:var(--accent)}.nav .ico{font-size:19px;line-height:1.25;display:block}.login{text-align:center;max-width:320px;margin:14vh auto;padding:0 20px}.login h1{margin-bottom:4px;font-size:19px}.login p{color:var(--muted);margin-top:0;font-size:14px}.who-list{flex-direction:column;gap:9px;margin-top:18px;display:flex}.who-list button{width:100%;padding:15px;font-size:16px}.waiting-mark{margin-bottom:6px;font-size:44px}.device-chip{background:var(--card2);border:1px solid var(--line);color:var(--muted);border-radius:999px;margin-top:6px;padding:5px 14px;font-size:13px;display:inline-block}.banner-btn{text-align:left;cursor:pointer;width:100%;font-weight:400}.sheet-tall{max-height:88vh;overflow-y:auto}.sheet-h{color:var(--muted);margin:18px 0 8px;font-size:13px;font-weight:600}.dev{background:var(--card2);border:1px solid var(--line);border-radius:10px;margin-bottom:8px;padding:11px 12px}.dev.pending{border-color:#7a4d1c}.dev.past{opacity:.6}.dev-who{font-weight:700}.dev-meta{color:var(--muted);margin-top:2px;font-size:13px}.dev-warn{color:var(--warn);margin:8px 0 0;font-size:12px;line-height:1.6}
