/* v0.21: image-first personal timetable */
.hub-timetables{min-width:0}.tt-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:8px 0 14px}.tt-heading h2{color:#325d80;font-size:24px;overflow-wrap:anywhere;line-height:1.5}.tt-heading>div{min-width:0}.tt-note{color:#728597;font-size:13px;line-height:1.7;margin:8px 0 16px}.tt-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.tt-actions button,.tt-heading button{min-height:44px}.tt-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(250px,100%),1fr));gap:18px;margin-top:24px}.tt-card{padding:0;border:1px solid #dce7f2;border-radius:17px;background:#fff;text-align:left;overflow:hidden}.tt-card>img{width:100%;height:205px;object-fit:contain;background:#f5f8fc;padding:14px}.tt-card>div{padding:16px 20px}.tt-card h3{font-size:16px;color:#3a5974;overflow-wrap:anywhere}.tt-card .tt-note{margin-bottom:0}.tt-card:hover{border-color:#8cb6df;box-shadow:0 6px 24px #547a9e10}.tt-empty{grid-column:1/-1;padding:50px 20px;text-align:center;background:#fff;border:1px dashed #c5d8e9;border-radius:18px}.tt-empty>span{font-size:38px;color:#8bb2d3}.tt-empty h3{margin:12px 0;color:#3c6182}.tt-reading{display:grid;gap:24px}.tt-photo{display:flex;align-items:center;justify-content:center;min-width:0;min-height:100px;background:#fff;border:1px solid #e0e8f0;border-radius:15px;padding:12px}.tt-photo img{display:block;max-width:100%;max-height:75dvh;object-fit:contain}.tt-editor{padding:28px;background:white;border:1px solid #dbe6f0;border-radius:20px}.tt-editor label{display:grid;gap:8px;font-size:13px;font-weight:600;margin:18px 0}.tt-editor input:not([type=file]){margin:0;width:100%;height:46px;min-width:0;border-radius:10px;border:1px solid #d4e1ec;padding:10px 12px;font-size:16px;background:#fcfdff}.tt-edit-photos{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(230px,100%),1fr));gap:16px;margin:20px 0}.tt-edit-photo{min-width:0}.tt-edit-photo .tt-photo img{height:230px}.tt-edit-photo>button{display:block;margin:8px auto;min-height:40px}.tt-editor footer{border-top:1px solid #e3eaf1;padding-top:18px}.tt-editor button:disabled{opacity:.55;cursor:wait}
@media(max-width:650px){.tt-heading{align-items:flex-start;flex-direction:column}.tt-heading h2{font-size:22px}.tt-editor{padding:20px 16px}.tt-editor>.tt-heading{flex-direction:row;align-items:center}.tt-photo{padding:7px}.tt-note{font-size:12px}}
