:root{color-scheme:dark;--bg:#090f1a;--text:#edf0f7;--muted:#8390a8;--gold:#d6b77c;--line:#263044;font-family:"Segoe UI",system-ui,sans-serif}*{box-sizing:border-box}body{margin:0;background:radial-gradient(ellipse at 50% 0,#1a2139 0,transparent 650px),var(--bg);color:var(--text);font-size:14px;line-height:1.4;min-height:100vh}button,input{font:inherit}button,summary,label{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:focus-visible,summary:focus-visible,input:focus-visible{outline:2px solid #b4ccff;outline-offset:4px}main{width:min(100%,520px);margin:auto;padding:20px 18px 40px}.top{margin-bottom:16px}.eyebrow{display:flex;align-items:center;gap:8px;color:var(--gold);font-size:9px;font-weight:700;letter-spacing:.23em;text-transform:uppercase}.eyebrow:before{content:'✦';font-size:16px;letter-spacing:0}.title{font-size:27px;line-height:1.2;letter-spacing:-.04em;margin:8px 0 5px;font-weight:750}.subtitle{margin:0;color:var(--muted);font-size:12px}.actions{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:12px;padding-top:10px;border-top:1px solid #ffffff0e}.calendar-caption{color:#98a5bb;font-size:11px;letter-spacing:.12em;text-transform:uppercase}.button{min-height:40px;padding:9px 15px;background:#182237;color:#e7dfce;border:1px solid #3a3e4b;border-radius:9px;font-weight:600;font-size:12px;flex-shrink:0}.button:hover{background:#26314a}.button.primary{background:#d6b77c13;border-color:#d6b77c55;color:#ead1a5}.grid{display:grid;gap:28px}.day{min-width:0}.day-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:0 0 12px;padding-left:32px}.day-label{color:#e7ecf5;font-size:13px;font-weight:650}.day-date{display:flex;align-items:center;justify-content:flex-end;gap:6px;flex-wrap:wrap;color:#9ca9bd;font-size:11px}.today-tag{display:inline-block;color:#9be3cc;background:#56d3ad12;border:1px solid #56d3ad2b;border-radius:5px;padding:2px 5px;font-size:8px;font-weight:700;letter-spacing:.06em;white-space:nowrap}.timeline{position:relative;display:grid;gap:9px;padding-left:32px}.timeline:before{content:'';position:absolute;left:9px;top:28px;bottom:28px;width:2px;background:#3b495d;opacity:.7}.phase-band{--phase:#b28af0;--base:#282440;position:relative;isolation:isolate;border:1px solid color-mix(in srgb,var(--phase) 32%,#151d2b);border-radius:13px;background:linear-gradient(105deg,color-mix(in srgb,var(--base) 84%,#101827),#101827);box-shadow:0 5px 16px #0002;transition:border-color .2s,box-shadow .2s}.phase-band.heroes{--phase:#b28af0;--base:#302650}.phase-band.building{--phase:#68ddbd;--base:#123c38}.phase-band.troops{--phase:#ec819a;--base:#412537}.phase-band.research{--phase:#75bff5;--base:#153650}.phase-band.raven{--phase:#edc76b;--base:#3c3425}.phase-node{position:absolute;left:-31px;top:19px;width:16px;height:16px;border-radius:50%;background:#0c1420;border:4px solid var(--phase);box-shadow:0 0 0 4px #0b111d,0 0 12px color-mix(in srgb,var(--phase) 18%,transparent);z-index:3}.phase-node:after{content:'';position:absolute;left:12px;top:3px;width:10px;height:1px;background:var(--phase);opacity:.4}.phase-art{position:absolute;inset:0;z-index:-1;border-radius:12px;overflow:hidden;opacity:.8;pointer-events:none}.phase-art img{position:absolute;top:0;right:0;display:block;height:max(100%,var(--art-min,84px));width:auto;max-width:none;mask-image:linear-gradient(90deg,transparent 0%,#000 65%);-webkit-mask-image:linear-gradient(90deg,transparent 0%,#000 65%)}.phase-art:after{content:'';position:absolute;inset:0;border-radius:inherit;background:linear-gradient(90deg,#0b14259c 5%,#0b14255c 55%,#0b142522 100%)}.phase-art.heroes{--art-min:92px}.phase-art.raven{--art-min:84px}.phase-head{position:relative;display:grid;grid-template-columns:28px minmax(0,1fr);gap:9px;align-items:center;min-height:56px;padding:8px 10px;border-radius:12px}.phase-badge{display:grid;place-items:center;width:28px;height:28px;overflow:hidden;padding:1px;border-radius:50%;color:var(--phase);background:linear-gradient(135deg,color-mix(in srgb,var(--phase) 23%,#171f31),#10192a);border:1px solid color-mix(in srgb,var(--phase) 33%,transparent);box-shadow:inset 0 1px 3px #ffffff14,0 2px 6px #0004}.phase-copy{position:relative;display:grid;gap:2px;min-width:0;text-shadow:0 1px 3px #080f1c,0 0 8px #080f1c,0 0 14px #080f1c}.phase-range{color:#d4dbea;font-size:11px;font-weight:600;font-variant-numeric:tabular-nums;letter-spacing:.025em}.phase-meta{display:flex;align-items:center;flex-wrap:wrap;gap:4px 7px}.phase-name{font-size:13px;font-weight:700;line-height:1.3;overflow-wrap:anywhere}.phase-band.active{border-color:var(--phase);box-shadow:0 0 0 1px color-mix(in srgb,var(--phase) 12%,transparent),0 0 20px color-mix(in srgb,var(--phase) 9%,transparent)}.phase-events{position:relative;display:grid;gap:0;margin:0 12px 8px 23px;padding:0 0 0 23px;border-left:1px dashed color-mix(in srgb,var(--phase) 40%,transparent)}.phase-event{display:grid;grid-template-columns:42px 20px minmax(0,1fr);gap:6px;align-items:center;min-height:34px;padding:3px 0}.time{color:#dee4ef;font-size:12px;font-weight:650;font-variant-numeric:tabular-nums}.name{min-width:0;overflow-wrap:anywhere;font-size:13px;color:#e0e6ef;line-height:1.4;text-shadow:0 1px 4px #07111e,0 0 8px #07111e}.duel-section{margin:12px 0 0 32px;border:1px solid #ffffff12;border-radius:10px;padding:0 11px;background:#ffffff03}.duel-header{padding:12px 0 9px;border-bottom:1px solid #ffffff0b;margin-bottom:7px}.duel-heading{margin:0;color:#d4bd91;font-size:13px;font-weight:650;display:grid;gap:3px;min-width:0;overflow-wrap:anywhere}.duel-kicker{font-size:8px;color:#8390a8;letter-spacing:.1em;text-transform:uppercase}.duel-tasks{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px 8px;list-style:none;margin:0;padding:10px 0 16px}.duel-task{display:grid;grid-template-rows:56px auto;align-content:start;justify-items:center;gap:7px;min-width:0;padding:4px 1px;font-size:11px;line-height:1.35;text-align:center;color:#d3ddec}.end-marker{height:1px}.settings-panel{margin-top:28px;padding:0 14px 14px;background:#111a29;border:1px solid #ffffff0b;border-radius:12px}.settings-panel>summary{cursor:pointer;list-style:none;padding:14px 0;color:#a6b2c6;font-size:12px}.settings-panel>summary:after{content:'+';float:right}.settings-panel[open]>summary:after{content:'−'}.settings-panel:not([open]){padding-bottom:0}.settings{display:grid;gap:12px;padding-bottom:12px}.field{display:grid;gap:5px;font-size:11px;color:var(--muted)}.field input{width:100%;min-width:0;max-width:100%;background:#0c1423;color:var(--text);border:1px solid var(--line);border-radius:7px;padding:10px;font-size:16px}.help,.foot{color:#707f98;font-size:10px;line-height:1.7}.foot{margin:18px 4px 0}.save-status{color:#86d9c0;font-size:11px;margin-left:10px}summary::-webkit-details-marker{display:none}@media(min-width:700px){main{padding-top:30px}.title{font-size:30px}.phase-name{font-size:14px}.name{font-size:13px}}@media(max-width:359px){main{padding:18px 12px 36px}.title{font-size:25px}.calendar-caption{font-size:10px;letter-spacing:.08em}.phase-head{grid-template-columns:27px minmax(0,1fr);padding-left:9px;gap:7px}.phase-name{font-size:12px}.phase-badge{width:27px;height:27px}.day-head{align-items:flex-start}.day-label{font-size:12px}.day-date{font-size:10px}.phase-events{margin-left:22px;margin-right:10px;padding-left:21px}.phase-event{grid-template-columns:39px 20px minmax(0,1fr);gap:4px}.duel-tasks{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(min-width:480px){.duel-tasks{grid-template-columns:repeat(4,minmax(0,1fr))}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}.game-icon{background-image:url("assets/calendar-icons-original.webp");background-size:600% 700%;background-repeat:no-repeat;display:inline-block;width:30px;height:30px;flex:0 0 30px;overflow:hidden;vertical-align:middle;filter:drop-shadow(0 1px 2px #0008)}.phase-symbol{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.event-symbol{font-size:16px;line-height:1;text-align:center}.duel-task .game-icon{width:56px;height:56px;flex-basis:56px;filter:drop-shadow(0 3px 4px #0005)}.duel-task>span:last-child{min-width:0;overflow-wrap:anywhere}
